text: # coding: utf-8
  
  """
      FlashBlade REST API Client
  
      A lightweight client for FlashBlade REST API 2.0, developed by Pure Storage, Inc. (http://www.purestorage.com/).
  
      OpenAPI spec version: 2.0
      
      Generated by: https://github.com/swagger-api/swagger-codegen.git
  """
  
  
  from __future__ import absolute_import
  
  import re
  
  # python 2 and python 3 compatibility library
  import six
  from typing import List, Optional
  
  from .. import models
  
  class FileSystemSnapshotsApi(object):
  
      def __init__(self, api_client):
          self.api_client = api_client
  
      def api20_file_system_snapshots_delete_with_http_info(
          self,
          ids=None,  # type: List[str]
          names=None,  # type: List[str]
          async_req=False,  # type: bool
          _return_http_data_only=False,  # type: bool
          _preload_content=True,  # type: bool
          _request_timeout=None,  # type: Optional[int]
      ):
          # type: (...) -> None
          """DELETE file-system-snapshots
  
          Delete a file system snapshot.
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.api20_file_system_snapshots_delete_with_http_info(async_req=True)
          >>> result = thread.get()
  
          :param list[str] ids: A comma-separated list of resource IDs. If after filtering, there is not at least one resource that matches each of the elements of `ids`, then an error is returned. This cannot be provided together with the `name` or `names` query parameters.
          :param list[str] names: A comma-separated list of resource names. If there is not at least one resource that matches each of the elements of `names`, then an error is returned.
          :param bool async_req: Request runs in separate thread and method returns multiprocessing.pool.ApplyResult.
          :param bool _return_http_data_only: Returns only data field.
          :param bool _preload_content: Response is converted into objects.
          :param int _request_timeout: Total request timeout in seconds.
                   It can also be a tuple of (connection time, read time) timeouts.
          :return: None
                   If the method is called asynchronously,
                   returns the request thread.
          """
          if ids is not None:
              if not isinstance(ids, list):
                  ids = [ids]
          if names is not None:
              if not isinstance(names, list):
                  names = [names]
          params = {k: v for k, v in six.iteritems(locals()) if v is not None}
  
          # Convert the filter into a string
          if params.get('filter'):
              params['filter'] = str(params['filter'])
          if params.get('sort'):
              params['sort'] = [str(_x) for _x in params['sort']]
  
          collection_formats = {}
          path_params = {}
  
          query_params = []
          if 'ids' in params:
              query_params.append(('ids', params['ids']))
              collection_formats['ids'] = 'csv'
          if 'names' in params:
              query_params.append(('names', params['names']))
              collection_formats['names'] = 'csv'
  
          header_params = {}
  
          form_params = []
          local_var_files = {}
  
          body_params = None
          # HTTP header `Accept`
          header_params['Accept'] = self.api_client.select_header_accept(
              ['application/json'])
  
          # HTTP header `Content-Type`
          header_params['Content-Type'] = self.api_client.select_header_content_type(
              ['application/json'])
  
          # Authentication setting
          auth_settings = ['AuthorizationHeader']
  
          return self.api_client.call_api(
              '/api/2.0/file-system-snapshots', 'DELETE',
              path_params,
              query_params,
              header_params,
              body=body_params,
              post_params=form_params,
              files=local_var_files,
              response_type=None,
              auth_settings=auth_settings,
              async_req=async_req,
              _return_http_data_only=_return_http_data_only,
              _preload_content=_preload_content,
              _request_timeout=_request_timeout,
              collection_formats=collection_formats,
          )
  
      def api20_file_system_snapshots_get_with_http_info(
          self,
          continuation_token=None,  # type: str
          destroyed=None,  # type: bool
          filter=None,  # type: str
          ids=None,  # type: List[str]
          limit=None,  # type: int
          names_or_owner_names=None,  # type: List[str]
          offset=None,  # type: int
          owner_ids=None,  # type: List[str]
          sort=None,  # type: List[str]
          total_only=None,  # type: bool
          async_req=False,  # type: bool
          _return_http_data_only=False,  # type: bool
          _preload_content=True,  # type: bool
          _request_timeout=None,  # type: Optional[int]
      ):
          # type: (...) -> models.FileSystemSnapshotGetResponse
          """GET file-system-snapshots
  
          List file system snapshots.
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.api20_file_system_snapshots_get_with_http_info(async_req=True)
          >>> result = thread.get()
  
          :param str continuation_token: An opaque token used to iterate over a collection. The token to use on the next request is returned in the `continuation_token` field of the result.
          :param bool destroyed: If set to `true`, lists only destroyed objects that are in the eradication pending state. If set to `false`, lists only objects that are not destroyed. If not set, lists both objects that are destroyed and those that are not destroyed. If object name(s) are specified in the `names` parameter, then each object referenced must exist. If `destroyed` is set to `true`, then each object referenced must also be destroyed. If `destroyed` is set to `false`, then each object referenced must also not be destroyed. An error is returned if any of these conditions are not met.
          :param str filter: Exclude resources that don't match the specified criteria.
          :param list[str] ids: A comma-separated list of resource IDs. If after filtering, there is not at least one resource that matches each of the elements of `ids`, then an error is returned. This cannot be provided together with the `name` or `names` query parameters.
          :param int limit: Limit the size of the response to the specified number of resources. A `limit` of `0` can be used to get the number of resources without getting all of the resources. It will be returned in the `total_item_count` field. If a client asks for a page size larger than the maximum number, the request is still valid. In that case the server just returns the maximum number of items, disregarding the client's page size request.
          :param list[str] names_or_owner_names: A comma-separated list of resource names. Either the names of the snapshots or the owning file systems.
          :param int offset: The offset of the first resource to return from a collection.
          :param list[str] owner_ids: A comma-separated list of owning file system IDs. If after filtering, there is not at least one resource that matches each of the elements of owner IDs, then an error is returned. This cannot be provided together with the `ids`, `names_or_owner_names`, or `names_or_sources` query parameters.
          :param list[str] sort: Sort the response by the specified fields (in descending order if '-' is appended to the field name). NOTE: If you provide a sort you will not get a `continuation_token` in the response.
          :param bool total_only: Only return the total record for the specified items. The total record will be the total of all items after filtering. The `items` list will be empty.
          :param bool async_req: Request runs in separate thread and method returns multiprocessing.pool.ApplyResult.
          :param bool _return_http_data_only: Returns only data field.
          :param bool _preload_content: Response is converted into objects.
          :param int _request_timeout: Total request timeout in seconds.
                   It can also be a tuple of (connection time, read time) timeouts.
          :return: FileSystemSnapshotGetResponse
                   If the method is called asynchronously,
                   returns the request thread.
          """
          if ids is not None:
              if not isinstance(ids, list):
                  ids = [ids]
          if names_or_owner_names is not None:
              if not isinstance(names_or_owner_names, list):
                  names_or_owner_names = [names_or_owner_names]
          if owner_ids is not None:
              if not isinstance(owner_ids, list):
                  owner_ids = [owner_ids]
          if sort is not None:
              if not isinstance(sort, list):
                  sort = [sort]
          params = {k: v for k, v in six.iteritems(locals()) if v is not None}
  
          # Convert the filter into a string
          if params.get('filter'):
              params['filter'] = str(params['filter'])
          if params.get('sort'):
              params['sort'] = [str(_x) for _x in params['sort']]
  
          if 'limit' in params and params['limit'] < 1:
              raise ValueError("Invalid value for parameter `limit` when calling `api20_file_system_snapshots_get`, must be a value greater than or equal to `1`")
          if 'offset' in params and params['offset'] < 0:
              raise ValueError("Invalid value for parameter `offset` when calling `api20_file_system_snapshots_get`, must be a value greater than or equal to `0`")
          collection_formats = {}
          path_params = {}
  
          query_params = []
          if 'continuation_token' in params:
              query_params.append(('continuation_token', params['continuation_token']))
          if 'destroyed' in params:
              query_params.append(('destroyed', params['destroyed']))
          if 'filter' in params:
              query_params.append(('filter', params['filter']))
          if 'ids' in params:
              query_params.append(('ids', params['ids']))
              collection_formats['ids'] = 'csv'
          if 'limit' in params:
              query_params.append(('limit', params['limit']))
          if 'names_or_owner_names' in params:
              query_params.append(('names_or_owner_names', params['names_or_owner_names']))
              collection_formats['names_or_owner_names'] = 'csv'
          if 'offset' in params:
              query_params.append(('offset', params['offset']))
          if 'owner_ids' in params:
              query_params.append(('owner_ids', params['owner_ids']))
              collection_formats['owner_ids'] = 'csv'
          if 'sort' in params:
              query_params.append(('sort', params['sort']))
              collection_formats['sort'] = 'csv'
          if 'total_only' in params:
              query_params.append(('total_only', params['total_only']))
  
          header_params = {}
  
          form_params = []
          local_var_files = {}
  
          body_params = None
          # HTTP header `Accept`
          header_params['Accept'] = self.api_client.select_header_accept(
              ['application/json'])
  
          # HTTP header `Content-Type`
          header_params['Content-Type'] = self.api_client.select_header_content_type(
              ['application/json'])
  
          # Authentication setting
          auth_settings = ['AuthorizationHeader']
  
          return self.api_client.call_api(
              '/api/2.0/file-system-snapshots', 'GET',
              path_params,
              query_params,
              header_params,
              body=body_params,
              post_params=form_params,
              files=local_var_files,
              response_type='FileSystemSnapshotGetResponse',
              auth_settings=auth_settings,
              async_req=async_req,
              _return_http_data_only=_return_http_data_only,
              _preload_content=_preload_content,
              _request_timeout=_request_timeout,
              collection_formats=collection_formats,
          )
  
      def api20_file_system_snapshots_patch_with_http_info(
          self,
          file_system_snapshot=None,  # type: models.FileSystemSnapshot
          ids=None,  # type: List[str]
          latest_replica=None,  # type: bool
          names=None,  # type: List[str]
          async_req=False,  # type: bool
          _return_http_data_only=False,  # type: bool
          _preload_content=True,  # type: bool
          _request_timeout=None,  # type: Optional[int]
      ):
          # type: (...) -> models.FileSystemSnapshotResponse
          """PATCH file-system-snapshots
  
          Modify file system snapshot attributes.
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.api20_file_system_snapshots_patch_with_http_info(file_system_snapshot, async_req=True)
          >>> result = thread.get()
  
          :param FileSystemSnapshot file_system_snapshot: (required)
          :param list[str] ids: A comma-separated list of resource IDs. If after filtering, there is not at least one resource that matches each of the elements of `ids`, then an error is returned. This cannot be provided together with the `name` or `names` query parameters.
          :param bool latest_replica: Used when destroying a snapshot. If not present or `false`, and the snapshot is the latest replicated snapshot, then destroy will fail. If `true` or the snapshot is not the latest replicated snapshot, then destroy will be successful.
          :param list[str] names: A comma-separated list of resource names. If there is not at least one resource that matches each of the elements of `names`, then an error is returned.
          :param bool async_req: Request runs in separate thread and method returns multiprocessing.pool.ApplyResult.
          :param bool _return_http_data_only: Returns only data field.
          :param bool _preload_content: Response is converted into objects.
          :param int _request_timeout: Total request timeout in seconds.
                   It can also be a tuple of (connection time, read time) timeouts.
          :return: FileSystemSnapshotResponse
                   If the method is called asynchronously,
                   returns the request thread.
          """
          if ids is not None:
              if not isinstance(ids, list):
                  ids = [ids]
          if names is not None:
              if not isinstance(names, list):
                  names = [names]
          params = {k: v for k, v in six.iteritems(locals()) if v is not None}
  
          # Convert the filter into a string
          if params.get('filter'):
              params['filter'] = str(params['filter'])
          if params.get('sort'):
              params['sort'] = [str(_x) for _x in params['sort']]
          # verify the required parameter 'file_system_snapshot' is set
          if file_system_snapshot is None:
              raise TypeError("Missing the required parameter `file_system_snapshot` when calling `api20_file_system_snapshots_patch`")
  
          collection_formats = {}
          path_params = {}
  
          query_params = []
          if 'ids' in params:
              query_params.append(('ids', params['ids']))
              collection_formats['ids'] = 'csv'
          if 'latest_replica' in params:
              query_params.append(('latest_replica', params['latest_replica']))
          if 'names' in params:
              query_params.append(('names', params['names']))
              collection_formats['names'] = 'csv'
  
          header_params = {}
  
          form_params = []
          local_var_files = {}
  
          body_params = None
          if 'file_system_snapshot' in params:
              body_params = params['file_system_snapshot']
          # HTTP header `Accept`
          header_params['Accept'] = self.api_client.select_header_accept(
              ['application/json'])
  
          # HTTP header `Content-Type`
          header_params['Content-Type'] = self.api_client.select_header_content_type(
              ['application/json'])
  
          # Authentication setting
          auth_settings = ['AuthorizationHeader']
  
          return self.api_client.call_api(
              '/api/2.0/file-system-snapshots', 'PATCH',
              path_params,
              query_params,
              header_params,
              body=body_params,
              post_params=form_params,
              files=local_var_files,
              response_type='FileSystemSnapshotResponse',
              auth_settings=auth_settings,
              async_req=async_req,
              _return_http_data_only=_return_http_data_only,
              _preload_content=_preload_content,
              _request_timeout=_request_timeout,
              collection_formats=collection_formats,
          )
  
      def api20_file_system_snapshots_policies_delete_with_http_info(
          self,
          member_ids=None,  # type: List[str]
          member_names=None,  # type: List[str]
          policy_ids=None,  # type: List[str]
          policy_names=None,  # type: List[str]
          async_req=False,  # type: bool
          _return_http_data_only=False,  # type: bool
          _preload_content=True,  # type: bool
          _request_timeout=None,  # type: Optional[int]
      ):
          # type: (...) -> None
          """DELETE file-system-snapshots/policies
  
          Remove snapshot scheduling policies from a file system.
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.api20_file_system_snapshots_policies_delete_with_http_info(async_req=True)
          >>> result = thread.get()
  
          :param list[str] member_ids: A comma-separated list of member IDs. If after filtering, there is not at least one resource that matches each of the elements of `member_ids`, then an error is returned. This cannot be provided together with the `member_names` query parameter.
          :param list[str] member_names: A comma-separated list of member names.
          :param list[str] policy_ids: A comma-separated list of policy IDs. If after filtering, there is not at least one resource that matches each of the elements of `policy_ids`, then an error is returned. This cannot be provided together with the `policy_names` query parameter.
          :param list[str] policy_names: A comma-separated list of policy names.
          :param bool async_req: Request runs in separate thread and method returns multiprocessing.pool.ApplyResult.
          :param bool _return_http_data_only: Returns only data field.
          :param bool _preload_content: Response is converted into objects.
          :param int _request_timeout: Total request timeout in seconds.
                   It can also be a tuple of (connection time, read time) timeouts.
          :return: None
                   If the method is called asynchronously,
                   returns the request thread.
          """
          if member_ids is not None:
              if not isinstance(member_ids, list):
                  member_ids = [member_ids]
          if member_names is not None:
              if not isinstance(member_names, list):
                  member_names = [member_names]
          if policy_ids is not None:
              if not isinstance(policy_ids, list):
                  policy_ids = [policy_ids]
          if policy_names is not None:
              if not isinstance(policy_names, list):
                  policy_names = [policy_names]
          params = {k: v for k, v in six.iteritems(locals()) if v is not None}
  
          # Convert the filter into a string
          if params.get('filter'):
              params['filter'] = str(params['filter'])
          if params.get('sort'):
              params['sort'] = [str(_x) for _x in params['sort']]
  
          collection_formats = {}
          path_params = {}
  
          query_params = []
          if 'member_ids' in params:
              query_params.append(('member_ids', params['member_ids']))
              collection_formats['member_ids'] = 'csv'
          if 'member_names' in params:
              query_params.append(('member_names', params['member_names']))
              collection_formats['member_names'] = 'csv'
          if 'policy_ids' in params:
              query_params.append(('policy_ids', params['policy_ids']))
              collection_formats['policy_ids'] = 'csv'
          if 'policy_names' in params:
              query_params.append(('policy_names', params['policy_names']))
              collection_formats['policy_names'] = 'csv'
  
          header_params = {}
  
          form_params = []
          local_var_files = {}
  
          body_params = None
          # HTTP header `Accept`
          header_params['Accept'] = self.api_client.select_header_accept(
              ['application/json'])
  
          # HTTP header `Content-Type`
          header_params['Content-Type'] = self.api_client.select_header_content_type(
              ['application/json'])
  
          # Authentication setting
          auth_settings = ['AuthorizationHeader']
  
          return self.api_client.call_api(
              '/api/2.0/file-system-snapshots/policies', 'DELETE',
              path_params,
              query_params,
              header_params,
              body=body_params,
              post_params=form_params,
              files=local_var_files,
              response_type=None,
              auth_settings=auth_settings,
              async_req=async_req,
              _return_http_data_only=_return_http_data_only,
              _preload_content=_preload_content,
              _request_timeout=_request_timeout,
              collection_formats=collection_formats,
          )
  
      def api20_file_system_snapshots_policies_get_with_http_info(
          self,
          continuation_token=None,  # type: str
          filter=None,  # type: str
          limit=None,  # type: int
          member_ids=None,  # type: List[str]
          member_names=None,  # type: List[str]
          offset=None,  # type: int
          policy_ids=None,  # type: List[str]
          policy_names=None,  # type: List[str]
          sort=None,  # type: List[str]
          async_req=False,  # type: bool
          _return_http_data_only=False,  # type: bool
          _preload_content=True,  # type: bool
          _request_timeout=None,  # type: Optional[int]
      ):
          # type: (...) -> models.PolicyFileSystemSnapshotGetResponse
          """GET file-system-snapshots/policies
  
          List file system snapshots mapped to snapshot scheduling policies.
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.api20_file_system_snapshots_policies_get_with_http_info(async_req=True)
          >>> result = thread.get()
  
          :param str continuation_token: An opaque token used to iterate over a collection. The token to use on the next request is returned in the `continuation_token` field of the result.
          :param str filter: Exclude resources that don't match the specified criteria.
          :param int limit: Limit the size of the response to the specified number of resources. A `limit` of `0` can be used to get the number of resources without getting all of the resources. It will be returned in the `total_item_count` field. If a client asks for a page size larger than the maximum number, the request is still valid. In that case the server just returns the maximum number of items, disregarding the client's page size request.
          :param list[str] member_ids: A comma-separated list of member IDs. If after filtering, there is not at least one resource that matches each of the elements of `member_ids`, then an error is returned. This cannot be provided together with the `member_names` query parameter.
          :param list[str] member_names: A comma-separated list of member names.
          :param int offset: The offset of the first resource to return from a collection.
          :param list[str] policy_ids: A comma-separated list of policy IDs. If after filtering, there is not at least one resource that matches each of the elements of `policy_ids`, then an error is returned. This cannot be provided together with the `policy_names` query parameter.
          :param list[str] policy_names: A comma-separated list of policy names.
          :param list[str] sort: Sort the response by the specified fields (in descending order if '-' is appended to the field name). NOTE: If you provide a sort you will not get a `continuation_token` in the response.
          :param bool async_req: Request runs in separate thread and method returns multiprocessing.pool.ApplyResult.
          :param bool _return_http_data_only: Returns only data field.
          :param bool _preload_content: Response is converted into objects.
          :param int _request_timeout: Total request timeout in seconds.
                   It can also be a tuple of (connection time, read time) timeouts.
          :return: PolicyFileSystemSnapshotGetResponse
                   If the method is called asynchronously,
                   returns the request thread.
          """
          if member_ids is not None:
              if not isinstance(member_ids, list):
                  member_ids = [member_ids]
          if member_names is not None:
              if not isinstance(member_names, list):
                  member_names = [member_names]
          if policy_ids is not None:
              if not isinstance(policy_ids, list):
                  policy_ids = [policy_ids]
          if policy_names is not None:
              if not isinstance(policy_names, list):
                  policy_names = [policy_names]
          if sort is not None:
              if not isinstance(sort, list):
                  sort = [sort]
          params = {k: v for k, v in six.iteritems(locals()) if v is not None}
  
          # Convert the filter into a string
          if params.get('filter'):
              params['filter'] = str(params['filter'])
          if params.get('sort'):
              params['sort'] = [str(_x) for _x in params['sort']]
  
          if 'limit' in params and params['limit'] < 1:
              raise ValueError("Invalid value for parameter `limit` when calling `api20_file_system_snapshots_policies_get`, must be a value greater than or equal to `1`")
          if 'offset' in params and params['offset'] < 0:
              raise ValueError("Invalid value for parameter `offset` when calling `api20_file_system_snapshots_policies_get`, must be a value greater than or equal to `0`")
          collection_formats = {}
          path_params = {}
  
          query_params = []
          if 'continuation_token' in params:
              query_params.append(('continuation_token', params['continuation_token']))
          if 'filter' in params:
              query_params.append(('filter', params['filter']))
          if 'limit' in params:
              query_params.append(('limit', params['limit']))
          if 'member_ids' in params:
              query_params.append(('member_ids', params['member_ids']))
              collection_formats['member_ids'] = 'csv'
          if 'member_names' in params:
              query_params.append(('member_names', params['member_names']))
              collection_formats['member_names'] = 'csv'
          if 'offset' in params:
              query_params.append(('offset', params['offset']))
          if 'policy_ids' in params:
              query_params.append(('policy_ids', params['policy_ids']))
              collection_formats['policy_ids'] = 'csv'
          if 'policy_names' in params:
              query_params.append(('policy_names', params['policy_names']))
              collection_formats['policy_names'] = 'csv'
          if 'sort' in params:
              query_params.append(('sort', params['sort']))
              collection_formats['sort'] = 'csv'
  
          header_params = {}
  
          form_params = []
          local_var_files = {}
  
          body_params = None
          # HTTP header `Accept`
          header_params['Accept'] = self.api_client.select_header_accept(
              ['application/json'])
  
          # HTTP header `Content-Type`
          header_params['Content-Type'] = self.api_client.select_header_content_type(
              ['application/json'])
  
          # Authentication setting
          auth_settings = ['AuthorizationHeader']
  
          return self.api_client.call_api(
              '/api/2.0/file-system-snapshots/policies', 'GET',
              path_params,
              query_params,
              header_params,
              body=body_params,
              post_params=form_params,
              files=local_var_files,
              response_type='PolicyFileSystemSnapshotGetResponse',
              auth_settings=auth_settings,
              async_req=async_req,
              _return_http_data_only=_return_http_data_only,
              _preload_content=_preload_content,
              _request_timeout=_request_timeout,
              collection_formats=collection_formats,
          )
  
      def api20_file_system_snapshots_post_with_http_info(
          self,
          source_ids=None,  # type: List[str]
          source_names=None,  # type: List[str]
          send=None,  # type: bool
          targets=None,  # type: List[str]
          file_system_snapshot=None,  # type: models.FileSystemSnapshotPost
          async_req=False,  # type: bool
          _return_http_data_only=False,  # type: bool
          _preload_content=True,  # type: bool
          _request_timeout=None,  # type: Optional[int]
      ):
          # type: (...) -> models.FileSystemSnapshotResponse
          """POST file-system-snapshots
  
          Create a snapshot for a specified source file system. If a source file system is not specified, creates snapshots for all file systems on the array.
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.api20_file_system_snapshots_post_with_http_info(async_req=True)
          >>> result = thread.get()
  
          :param list[str] source_ids: A comma-separated list of source file system IDs. If after filtering, there is not at least one resource that matches each of the elements of `source_ids`, then an error is returned. This cannot be provided together with the `names_or_sources` or `sources` query parameters.
          :param list[str] source_names: A comma-separated list of names for the source of the object. If there is not at least one resource that matches each of the elements of `source_names`, an error is returned.
          :param bool send: Whether to replicate created snapshots immediately to other arrays. If it's `false`, created snapshots may still be replicated to other arrays according to policy.
          :param list[str] targets: The target arrays to replicate created snapshots to. Only valid when `send` is `true`.
          :param FileSystemSnapshotPost file_system_snapshot:
          :param bool async_req: Request runs in separate thread and method returns multiprocessing.pool.ApplyResult.
          :param bool _return_http_data_only: Returns only data field.
          :param bool _preload_content: Response is converted into objects.
          :param int _request_timeout: Total request timeout in seconds.
                   It can also be a tuple of (connection time, read time) timeouts.
          :return: FileSystemSnapshotResponse
                   If the method is called asynchronously,
                   returns the request thread.
          """
          if source_ids is not None:
              if not isinstance(source_ids, list):
                  source_ids = [source_ids]
          if source_names is not None:
              if not isinstance(source_names, list):
                  source_names = [source_names]
          if targets is not None:
              if not isinstance(targets, list):
                  targets = [targets]
          params = {k: v for k, v in six.iteritems(locals()) if v is not None}
  
          # Convert the filter into a string
          if params.get('filter'):
              params['filter'] = str(params['filter'])
          if params.get('sort'):
              params['sort'] = [str(_x) for _x in params['sort']]
  
          collection_formats = {}
          path_params = {}
  
          query_params = []
          if 'source_ids' in params:
              query_params.append(('source_ids', params['source_ids']))
              collection_formats['source_ids'] = 'csv'
          if 'source_names' in params:
              query_params.append(('source_names', params['source_names']))
              collection_formats['source_names'] = 'csv'
          if 'send' in params:
              query_params.append(('send', params['send']))
          if 'targets' in params:
              query_params.append(('targets', params['targets']))
              collection_formats['targets'] = 'csv'
  
          header_params = {}
  
          form_params = []
          local_var_files = {}
  
          body_params = None
          if 'file_system_snapshot' in params:
              body_params = params['file_system_snapshot']
          # HTTP header `Accept`
          header_params['Accept'] = self.api_client.select_header_accept(
              ['application/json'])
  
          # HTTP header `Content-Type`
          header_params['Content-Type'] = self.api_client.select_header_content_type(
              ['application/json'])
  
          # Authentication setting
          auth_settings = ['AuthorizationHeader']
  
          return self.api_client.call_api(
              '/api/2.0/file-system-snapshots', 'POST',
              path_params,
              query_params,
              header_params,
              body=body_params,
              post_params=form_params,
              files=local_var_files,
              response_type='FileSystemSnapshotResponse',
              auth_settings=auth_settings,
              async_req=async_req,
              _return_http_data_only=_return_http_data_only,
              _preload_content=_preload_content,
              _request_timeout=_request_timeout,
              collection_formats=collection_formats,
          )
  
      def api20_file_system_snapshots_transfer_delete_with_http_info(
          self,
          ids=None,  # type: List[str]
          names=None,  # type: List[str]
          remote_names=None,  # type: List[str]
          remote_ids=None,  # type: List[str]
          async_req=False,  # type: bool
          _return_http_data_only=False,  # type: bool
          _preload_content=True,  # type: bool
          _request_timeout=None,  # type: Optional[int]
      ):
          # type: (...) -> None
          """DELETE file-system-snapshots/transfer
  
          Delete file system snapshot transfers from the source array to the target array.
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.api20_file_system_snapshots_transfer_delete_with_http_info(async_req=True)
          >>> result = thread.get()
  
          :param list[str] ids: A comma-separated list of resource IDs. If after filtering, there is not at least one resource that matches each of the elements of `ids`, then an error is returned. This cannot be provided together with the `name` or `names` query parameters.
          :param list[str] names: A comma-separated list of resource names. If there is not at least one resource that matches each of the elements of `names`, then an error is returned.
          :param list[str] remote_names: A comma-separated list of remote array names. If there is not at least one resource that matches each of the elements, then an error is returned. This cannot be provided together with `remote_ids` query parameter.
          :param list[str] remote_ids: A comma-separated list of remote array IDs. If after filtering, there is not at least one resource that matches each of the elements, then an error is returned. This cannot be provided together with the `remote_names` query parameter.
          :param bool async_req: Request runs in separate thread and method returns multiprocessing.pool.ApplyResult.
          :param bool _return_http_data_only: Returns only data field.
          :param bool _preload_content: Response is converted into objects.
          :param int _request_timeout: Total request timeout in seconds.
                   It can also be a tuple of (connection time, read time) timeouts.
          :return: None
                   If the method is called asynchronously,
                   returns the request thread.
          """
          if ids is not None:
              if not isinstance(ids, list):
                  ids = [ids]
          if names is not None:
              if not isinstance(names, list):
                  names = [names]
          if remote_names is not None:
              if not isinstance(remote_names, list):
                  remote_names = [remote_names]
          if remote_ids is not None:
              if not isinstance(remote_ids, list):
                  remote_ids = [remote_ids]
          params = {k: v for k, v in six.iteritems(locals()) if v is not None}
  
          # Convert the filter into a string
          if params.get('filter'):
              params['filter'] = str(params['filter'])
          if params.get('sort'):
              params['sort'] = [str(_x) for _x in params['sort']]
  
          collection_formats = {}
          path_params = {}
  
          query_params = []
          if 'ids' in params:
              query_params.append(('ids', params['ids']))
              collection_formats['ids'] = 'csv'
          if 'names' in params:
              query_params.append(('names', params['names']))
              collection_formats['names'] = 'csv'
          if 'remote_names' in params:
              query_params.append(('remote_names', params['remote_names']))
              collection_formats['remote_names'] = 'csv'
          if 'remote_ids' in params:
              query_params.append(('remote_ids', params['remote_ids']))
              collection_formats['remote_ids'] = 'csv'
  
          header_params = {}
  
          form_params = []
          local_var_files = {}
  
          body_params = None
          # HTTP header `Accept`
          header_params['Accept'] = self.api_client.select_header_accept(
              ['application/json'])
  
          # HTTP header `Content-Type`
          header_params['Content-Type'] = self.api_client.select_header_content_type(
              ['application/json'])
  
          # Authentication setting
          auth_settings = ['AuthorizationHeader']
  
          return self.api_client.call_api(
              '/api/2.0/file-system-snapshots/transfer', 'DELETE',
              path_params,
              query_params,
              header_params,
              body=body_params,
              post_params=form_params,
              files=local_var_files,
              response_type=None,
              auth_settings=auth_settings,
              async_req=async_req,
              _return_http_data_only=_return_http_data_only,
              _preload_content=_preload_content,
              _request_timeout=_request_timeout,
              collection_formats=collection_formats,
          )
  
      def api20_file_system_snapshots_transfer_get_with_http_info(
          self,
          continuation_token=None,  # type: str
          filter=None,  # type: str
          ids=None,  # type: List[str]
          limit=None,  # type: int
          names_or_owner_names=None,  # type: List[str]
          offset=None,  # type: int
          sort=None,  # type: List[str]
          total_only=None,  # type: bool
          async_req=False,  # type: bool
          _return_http_data_only=False,  # type: bool
          _preload_content=True,  # type: bool
          _request_timeout=None,  # type: Optional[int]
      ):
          # type: (...) -> models.FileSystemSnapshotGetTransferResponse
          """GET file-system-snapshots/transfer
  
          List file system snapshot transfers from the source array to the target array.
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.api20_file_system_snapshots_transfer_get_with_http_info(async_req=True)
          >>> result = thread.get()
  
          :param str continuation_token: An opaque token used to iterate over a collection. The token to use on the next request is returned in the `continuation_token` field of the result.
          :param str filter: Exclude resources that don't match the specified criteria.
          :param list[str] ids: A comma-separated list of resource IDs. If after filtering, there is not at least one resource that matches each of the elements of `ids`, then an error is returned. This cannot be provided together with the `name` or `names` query parameters.
          :param int limit: Limit the size of the response to the specified number of resources. A `limit` of `0` can be used to get the number of resources without getting all of the resources. It will be returned in the `total_item_count` field. If a client asks for a page size larger than the maximum number, the request is still valid. In that case the server just returns the maximum number of items, disregarding the client's page size request.
          :param list[str] names_or_owner_names: A comma-separated list of resource names. Either the names of the snapshots or the owning file systems.
          :param int offset: The offset of the first resource to return from a collection.
          :param list[str] sort: Sort the response by the specified fields (in descending order if '-' is appended to the field name). NOTE: If you provide a sort you will not get a `continuation_token` in the response.
          :param bool total_only: Only return the total record for the specified items. The total record will be the total of all items after filtering. The `items` list will be empty.
          :param bool async_req: Request runs in separate thread and method returns multiprocessing.pool.ApplyResult.
          :param bool _return_http_data_only: Returns only data field.
          :param bool _preload_content: Response is converted into objects.
          :param int _request_timeout: Total request timeout in seconds.
                   It can also be a tuple of (connection time, read time) timeouts.
          :return: FileSystemSnapshotGetTransferResponse
                   If the method is called asynchronously,
                   returns the request thread.
          """
          if ids is not None:
              if not isinstance(ids, list):
                  ids = [ids]
          if names_or_owner_names is not None:
              if not isinstance(names_or_owner_names, list):
                  names_or_owner_names = [names_or_owner_names]
          if sort is not None:
              if not isinstance(sort, list):
                  sort = [sort]
          params = {k: v for k, v in six.iteritems(locals()) if v is not None}
  
          # Convert the filter into a string
          if params.get('filter'):
              params['filter'] = str(params['filter'])
          if params.get('sort'):
              params['sort'] = [str(_x) for _x in params['sort']]
  
          if 'limit' in params and params['limit'] < 1:
              raise ValueError("Invalid value for parameter `limit` when calling `api20_file_system_snapshots_transfer_get`, must be a value greater than or equal to `1`")
          if 'offset' in params and params['offset'] < 0:
              raise ValueError("Invalid value for parameter `offset` when calling `api20_file_system_snapshots_transfer_get`, must be a value greater than or equal to `0`")
          collection_formats = {}
          path_params = {}
  
          query_params = []
          if 'continuation_token' in params:
              query_params.append(('continuation_token', params['continuation_token']))
          if 'filter' in params:
              query_params.append(('filter', params['filter']))
          if 'ids' in params:
              query_params.append(('ids', params['ids']))
              collection_formats['ids'] = 'csv'
          if 'limit' in params:
              query_params.append(('limit', params['limit']))
          if 'names_or_owner_names' in params:
              query_params.append(('names_or_owner_names', params['names_or_owner_names']))
              collection_formats['names_or_owner_names'] = 'csv'
          if 'offset' in params:
              query_params.append(('offset', params['offset']))
          if 'sort' in params:
              query_params.append(('sort', params['sort']))
              collection_formats['sort'] = 'csv'
          if 'total_only' in params:
              query_params.append(('total_only', params['total_only']))
  
          header_params = {}
  
          form_params = []
          local_var_files = {}
  
          body_params = None
          # HTTP header `Accept`
          header_params['Accept'] = self.api_client.select_header_accept(
              ['application/json'])
  
          # HTTP header `Content-Type`
          header_params['Content-Type'] = self.api_client.select_header_content_type(
              ['application/json'])
  
          # Authentication setting
          auth_settings = ['AuthorizationHeader']
  
          return self.api_client.call_api(
              '/api/2.0/file-system-snapshots/transfer', 'GET',
              path_params,
              query_params,
              header_params,
              body=body_params,
              post_params=form_params,
              files=local_var_files,
              response_type='FileSystemSnapshotGetTransferResponse',
              auth_settings=auth_settings,
              async_req=async_req,
              _return_http_data_only=_return_http_data_only,
              _preload_content=_preload_content,
              _request_timeout=_request_timeout,
              collection_formats=collection_formats,
          )
  