Package: netapp-ontap
NetApp ONTAPThe Python client library is a package you can use when writing scripts to access the
ONTAP REST API. It provides support for several underlying services, including connection
management, asynchronous request processing, and exception handling. By using the Python
client library, you can quickly develop robust code to support the automation of your ONTAP
deployments.Getting startedThe Python client library is available as the packagenetapp_ontapat the Python Package
Index (PyPi) web site athttps://pypi.org/project/netapp-ontapSoftware requirementsBefore installing the Python client library, you must make sure the following packages are
installed on your system:python 3.6 or laterrequests 2.26.0 or laterrequests-toolbelt 0.9.1 or latermarshmallow 3.2.1 or laterThe library requires version 1.26.7 or later of urllib3 due to outstanding CVEs against
older versions. It also requires version 2022.12.7 of certifi due to a CVE that removed
root certificates from TrustCor from the root store. However, it will still work with older
versions of urllib3 and certifi as long as the versions of urllib3 and certifi are compatible
with the requests package.Installing and importing the packageYou must install the package using the pip utility:pip install netapp-ontapAfter installing the package, you can import the objects you need into your application:fromnetapp_ontap.resourcesimportVolume,SnapshotCreating an objectYou can create an object in several different ways. Here are three examples of
creating an equivalentVolumeobject.fromnetapp_ontap.resourcesimportVolume# Example 1 - keyword argumentsvolume=Volume(name='vol1',svm={'name':'vs1'},aggregates=[{'name':'aggr1'}])# Example 2 - dict as keyword argumentsdata={'name':'vol1','svm':{'name':'vs1'},'aggregates':[{'name':'aggr1'}],}volume=Volume(**data)# Example 3 - using the from_dict() methodvolume=Volume.from_dict({'name':'vol1','svm':{'name':'vs1'},'aggregates':[{'name':'aggr1'}],})Performing actions on an objectAfter you create an object, you can perform actions on the object based
on the purpose and design of your application. The example below illustrates
how to create a new volume and then take a snapshot.Note that when using the library, in all cases you must first establish a
connection to the management LIF of the ONTAP system using thenetapp_ontap.host_connection.HostConnectionobject. In the example below,
the connection is created and then set as the global default.
This means that all objects and the associated actions reuse
this same connection. SeeHost connectionsfor more information.fromnetapp_ontapimportconfig,HostConnectionfromnetapp_ontap.resourcesimportVolume,Snapshotconfig.CONNECTION=HostConnection('myhost.mycompany.com','username','password')volume=Volume(name='vol1',svm={'name':'vs1'},aggregates=[{'name':'aggr1'}])volume.post()snapshot=Snapshot.from_dict({'name':'%s_snapshot'%volume.name,'comment':'A snapshot of%s'%volume.name,'volume':volume.to_dict(),})snapshot.post()Host connectionsThenetapp_ontap.host_connection.HostConnectionobject allows a client application
to store credentials once and reuse them for each subsequent operation.
You can do this in any of the following ways:Call the functionset_connection()on a specific resource so the connection is used for
all actions on the resource.Set thenetapp_ontap.config.CONNECTIONvariable to establish a single connection instance for all
operations within the scope of that block. This allows you to connect to ONTAP once
and use the same connection everywhere, instead of providing credentials every time you make a
request.Use the connection object as a context manager with thewithkeyword. Note: This method
is not recommended if you are using mutiple threads connecting to different hosts. Thisissueis currently being worked on and should be fixed in future releases.Note that you can callget_connection()to get the connection used by an object and use it for
subsequent operations.By default, every operation attempts to verify the SSL certificate for the connection. If a
certificate cannot be verified, theSSLErrorexception is thrown. You can disable this
verification by settingnetapp_ontap.host_connection.HostConnection.verifyto false when creating thenetapp_ontap.host_connection.HostConnectioninstance.Custom headersIn some cases, you might want to set and send custom headers with the REST request.
This can be done at the connection level. For a specific connection, you can pass in
the headers you would like to send for each request within the scope of that connection object.
The library provides full access to the request headers so that you can update, add, or delete
headers from the same connection object at any point. If a header is not recognized by ONTAP,
it is ignored.fromnetapp_ontapimportconfig,HostConnectionheaders={'my-header1':'my-header-value1','my-header2':'my-header-value2'}# Initialize a connection object with custom headersconfig.CONNECTION=HostConnection('myhost.mycompany.com','username','password',headers=headers)# Delete a header from a connection objectconn=HostConnection('myhost.mycompany.com','username','password',headers=headers)delconn.request_headers['my-header1']# Add a header to a connection object using the assignment operatorconn=HostConnection('myhost.mycompany.com','username','password',headers=headers)conn.request_headers['mynew-header']='mynew-header-value'# Add headers to a connection objectconfig.CONNECTION=HostConnection('myhost.mycompany.com','username''password')config.CONNECTION.request_headers=headers# Update an existing header using the assignment operatorconfig.CONNECTION=HostConnection('myhost.mycompany.com','username','password',headers=headers)config.CONNECTION.request_headers['my-header1']='my-new-header'Asynchronous processing and jobsAll POST, PATCH, and DELETE requests that can take more than two seconds to complete are
designed to run asynchronously as non-blocking operations. These operations are executed
as background jobs at the ONTAP cluster. The HTTP response generated by an
asynchronous request always contains a link to the associated job object. By default, an
asynchronous request automatically polls the job using the unique job identifier in the link.
Control is returned to your script when a terminal state is reached (success or failure) or
the configured timeout value expires. However, you can override this behavior by setting thepollvalue to false when calling the function, causing control to return before the job
completes. Forcing an immediate return can be useful when a job might take a long time to
complete and you want to continute execution of the script.ResponsesA request always returns anetapp_ontap.response.NetAppResponseobject which contains the details
of the HTTP response. It contains information such as whether the response is an error
or a job. Refer tonetapp_ontap.response.NetAppResponsefor further information on how
to check the details of the response.Exception handlingBy default, an exception is returned if a request returns an HTTP status code of 400 or greater.
The exception object, which is of typenetapp_ontap.error.NetAppRestError,
holds the HTTP response object so that the exception can be handled in the client code.
If you wish not to raise exceptions, you can setnetapp_ontap.config.RAISE_API_ERRORSto false. In this case,
it is up to the client to check the HTTP response from thenetapp_ontap.response.NetAppResponseobject and handle any errors. Refer tonetapp_ontap.error.NetAppRestErrorfor further information.# Set RAISE_API_ERRORS to False and check the HTTP response.config.RAISE_API_ERRORS=Falseresponse=Svm.find(name="nonexistent_vs")assert"entry doesn't exist"inresponse.http_response.textDebuggingWhile writing your application, it can often be useful to see the raw HTTP request and response
text that the library is sending to and from the server. There are two flags that can be set
to help with this.DEBUG flagThe first is the DEBUG flag. This can be set either by setting DEBUG=1 in the environment prior
to executing your application or by settingnetapp_ontap.utils.DEBUGto 1 inside of your application.
This flag, when set, will cause the library to log the request and response for any failed
API call. This will be logged at DEBUG level (see the section on logging for setting up your
application). Here's an example of setting this value inside of your application:importloggingfromnetapp_ontapimportHostConnection,NetAppRestError,config,utilsfromnetapp_ontap.resourcesimportVolumelogging.basicConfig(level=logging.DEBUG)config.CONNECTION=HostConnection('10.100.200.50',username='admin',password='password',verify=False)# Set the DEBUG flag to 1utils.DEBUG=1# this API call will fail with a 404try:volume=Volume(uuid="1",name='does_not_exist')volume.get()exceptNetAppRestError:print('We got an expected exception')Here is what the output would look like:$ python test_debug.py
DEBUG:urllib3.util.retry:Converted retries value: 5 -> Retry(total=5, connect=None, read=None, redirect=None, status=None)
DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): 10.100.200.50:443
DEBUG:urllib3.connectionpool:https://10.100.200.50:443 "GET /api/storage/volumes/1 HTTP/1.1" 404 130
DEBUG:netapp_ontap.utils:
-----------REQUEST-----------
GET https://10.100.200.50:443/api/storage/volumes/1
Accept: */*
User-Agent: python-requests/2.21.0
Connection: keep-alive
Accept-Encoding: gzip, deflate
X-Dot-Client-App: netapp-ontap-python-9.8.0
Authorization: Basic YWRtaW46cGFzc3dvcmQK
None
-----------------------------

-----------RESPONSE-----------
404 Not Found
Date:Tue, 12 Nov 2019 13:00:24 GMT
Server:libzapid-httpd
X-Content-Type-Options: nosniff
Cache-Control: no-cache,no-store,must-revalidate
Content-Length: 130
Content-Type: application/hal+json
Keep-Alive: timeout=5, max=100
Connection:Keep-Alive
{
  "error": {
    "message": ""1" is an invalid value for field "uuid" (<UUID>)",
    "code": "2",
    "target": "uuid"
  }
}
------------------------------
We got an expected exception
$LOG_ALL_API_CALLS flagThere is also a LOG_ALL_API_CALLS flag which can be set in the same ways. You can
set it in the environment or during script execution by settingnetapp_ontap.utils.LOG_ALL_API_CALLSto 1. This flag will produce the same output as above, but it will log the call no
matter if there was a failure or not. Here's an example of what that would look
like if we got an existing volume:importloggingfromnetapp_ontapimportHostConnection,config,utilsfromnetapp_ontap.resourcesimportVolumelogging.basicConfig(level=logging.DEBUG)config.CONNECTION=HostConnection('10.100.200.50',username='admin',password='password',verify=False)# Set the LOG_ALL_API_CALLS flag to 1utils.LOG_ALL_API_CALLS=1# this API call will succeed and be loggedvolume=list(Volume.get_collection())[0]Here is what the output would look like:$ python test_debug.py
DEBUG:urllib3.util.retry:Converted retries value: 5 -> Retry(total=5, connect=None, read=None, redirect=None, status=None)
DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): 10.100.200.50:443
DEBUG:urllib3.connectionpool:https://10.100.200.50:443 "GET /api/storage/volumes HTTP/1.1" 200 567
DEBUG:netapp_ontap.utils:
-----------REQUEST-----------
GET https://10.100.200.50:443/api/storage/volumes
User-Agent: python-requests/2.21.0
Connection: keep-alive
Accept: */*
Accept-Encoding: gzip, deflate
X-Dot-Client-App: netapp-ontap-python-9.8.0
Authorization: Basic YWRtaW46cGFzc3dvcmQK
None
-----------------------------

-----------RESPONSE-----------
200 OK
Date:Tue, 12 Nov 2019 13:14:01 GMT
Server:libzapid-httpd
X-Content-Type-Options: nosniff
Cache-Control: no-cache,no-store,must-revalidate
Content-Length: 567
Content-Type: application/hal+json
Keep-Alive: timeout=5, max=100
Connection:Keep-Alive
{
  "records": [
    {
      "uuid": "c68bdca8-d090-11e9-bb29-005056bb7f42",
      "name": "vs0_root",
      "_links": {
        "self": {
          "href": "/api/storage/volumes/c68bdca8-d090-11e9-bb29-005056bb7f42"
        }
      }
    },
    {
      "uuid": "ed3b6ebf-d48e-11e9-bb29-005056bb7f42",
      "name": "vs1_root",
      "_links": {
        "self": {
          "href": "/api/storage/volumes/ed3b6ebf-d48e-11e9-bb29-005056bb7f42"
        }
      }
    }
  ],
  "num_records": 2,
  "_links": {
    "self": {
      "href": "/api/storage/volumes"
    }
  }
}
------------------------------
$Additional considerationsIn most cases, the objects and actions in the library can be mapped directly
to equivalent cURL commands run against the ONTAP REST interface. However, there are a few
exceptions you should be aware of.Property namesIf a property of a resource is named the same as one of the Python reserved names,
the name is transposed when accessing the member of the resource. For example,
if there is a resource named "Foo" that has a property defined in the API named "class",
the property name would instead be "class_" when using the library. For example:fromnetapp_ontap.resourcesimportFoofoo=Foo()foo.class_="high"Action methodsSome resources may have additional methods aside from the generic get(), post(),
patch(), etc. These are known as "action methods" and will send requests to an
endpoint matching the same name. For example, thenetapp_ontap.resources.security_certificate.SecurityCertificateresource has thenetapp_ontap.resources.security_certificate.SecurityCertificate.sign()method.
Using this method will make a POST call to /api/security/certitficates/{uuid}/sign.If a resource has a field with the same name as an action method, then the name of
the action method will be changed so as to not conflict. In the above example, if
the SecurityCertificate object had a field calledsign, then the name of the action
method would besign_action()instead.DocumentationTo view the latest documentation, visithttps://devnet.netapp.com/restapi.php, click on the
"Python Client Library" tab, and then choose the latest version of the docs. You can also view
the ONTAP REST API docs linked from the same page under the "Overview" tab.If you want to view this library's docs offline, then you can locate the copy installed in<python_environment>/lib/<python_version>/site_packages/netapp_ontap/docs.CompatibilityThe version assigned to the library consists of the major ONTAP release it is generated
from and a minor version for the library within that release. For example: within the
ONTAP 9.7 product family, the library may ship several fix releases by incrementing the
minor index: 9.7.0, 9.7.1, 9.7.2. The minor version
allows the library to be updated at a cadence separate from ONTAP.Client libraries that have the same major version as ONTAP are completely compatible.
For example, the libraries netapp-ontap-9.6.1 and netapp-ontap-9.6.4 are fully
compatible with both ONTAP 9.6 and ONTAP 9.6P1.A client library will support N-1 major versions of ONTAP with full backwards compatiblity
of all APIs and fields. For example, a program written using client library 9.6.1 and
talking to ONTAP 9.6 will continue to function consistently when the client library is
updated to 9.7.0.A client library with a major version less than the ONTAP release can still be
used, however it will not be able to access any of the new REST APIs. For example, the library
netapp-ontap-9.6.4 is only partially compatible with ONTAP 9.7. In this case, the library will
not have access to the newer APIs or fields offered by ONTAP, but scripts can continue to
access any of the same 9.6 fields they were before without issue.For example a new propertyvolume.is_svm_rootwas added with ONTAP 9.7.
The following behaviors would be seen with different libraries and ONTAP combinations:library 9.6.0 would ignore the value coming from an ONTAP 9.7 responselibrary 9.7.0 would fully support the property coming from an ONTAP 9.7+ responselibrary 9.7.0 would not produce any errors for that property coming from an ONTAP 9.6 responseChangelogThere are several changes to the Python Client Library and the ONTAP REST API, which are organized by release below.9.14.1 library updatesNewnetapp_ontaprelease cycleStarting with 9.14.1, the Python Client Library (netapp_ontap) will have one release for each ONTAP release cycle
(aligned with the ONTAP RC release). We will no longer have an RC and GA release for the library.Resource properties can now be set toNoneSome ONTAP REST endpoints accept null values in the request body, however, the Python library did not support this.
Starting in 9.14.1 the Python client library will allow users to set resource properties toNoneand will include
these values as null in the request body. Here is an example:# Get an existing rulerule=S3BucketLifecycleRule("53714b3a-cd85-11ed-8980-005056aca578","b51ed46b-cff7-11ed-8980-005056aca578")rule.name="my_rule"rule.get()# set the expiration to Nonerule.expiration=None# patch the rulerule.patch(hydrate=True)Here is the resulting body of the request:{"expiration":null}Resources can be more quickly retrieved usingfast_get_collection()fast_get_collection()is the quicker version ofget_collection()that will fetch all records
in the form of a RawResource type. It returns a generator that yieldsnetapp_ontap.raw_resource.RawResourceobjects containing
information about the resource as a dictionary.netapp_ontap.raw_resource.RawResourceobjects do not support,get(),post(),patch(), ordelete(), but they can be converted to the appropriate resource type usingnetapp_ontap.raw_resource.RawResource.promote.netapp_ontap.raw_resource.RawResourceobjects should be treated as read-only.fast_get_collection()is significantly more efficient when there are many records in the response
because it skips deserializing and validating the resource until the user explicitly
asks by usingpromote().Here is an example:# Get all the volumes quicklymy_volumes=list(Volume.fast_get_collection())deleted_volumes=[]forrecordinmy_volumes:# Get the current volume name and statevolume_name=record.namevolume_state=record.state# Delete the volume if the name starts with "test_" OR if the volume is offlineifvolume_name.startswith("test_")orvolume_state=="offline":# generate the resource object from this RawResourcevolume=record.promote()volume.delete()deleted_volumes.append(volume_name)print(f"The following{len(deleted_volumes)}volumes were deleted:")print("\n".join(deleted_volumes))New endpointsEndpoint: /name-services/cache/host/settings/{uuid}HTTP methods: GET, PATCHThis API retrieves and updates a host cache setting for a given SVM.Endpoint: /network/fc/interfaces/{fc_interface.uuid}/metricsHTTP methods: GETThis API retrieves historical performance metrics for a Fibre Channel interface.Endpoint: /network/fc/interfaces/{fc_interface.uuid}/metrics/{timestamp}HTTP methods: GETThis API retrieves historical performance metrics for a Fibre Channel interface for a specific time.Endpoint: /network/fc/ports/{fc_port.uuid}/metricsHTTP methods: GETThis API retrieves historical performance metrics for a Fibre Channel port.Endpoint: /network/fc/ports/{fc_port.uuid}/metrics/{timestamp}HTTP methods: GETThis API retrieves historical performance metrics for a Fibre Channel port for a specific time.Endpoint: /network/fc/ports/{fc_port.uuid}/metrics/{timestamp}HTTP methods: GETThis API retrieves historical performance metrics for a Fibre Channel port for a specific time.Endpoint: /protocols/fpolicy/{svm.uuid}/persistent-storesHTTP methods: GET, POSTThis API retrieves, and creates FPolicy persistent store configurations.Endpoint: /protocols/fpolicy/{svm.uuid}/persistent-stores/{name}HTTP methods: GET, PATCH, DELETEThis API retrieves, updates, and deletes a FPolicy persistent store configurations with the specified name.Endpoint: /protocols/nvme/services/{svm.uuid}/metrics/{timestamp}HTTP methods: GETThis API retrieves historical performance metrics for the NVMe protocol service of an SVM for a specific time.Endpoint: /protocols/san/fcp/services/{svm.uuid}/metrics/{timestamp}HTTP methods: GETThis API retrieves historical performance metrics for the FC Protocol service of an SVM for a specific time.Endpoint: /protocols/san/initiatorsHTTP methods: GETThis API retrieves SAN initiators.Endpoint: /protocols/san/initiators/{svm.uuid}/{name}HTTP methods: GETThis API retrieves a SAN initiator using it's name and SVM uuid.Endpoint: /protocols/san/initiators/{svm.uuid}/{name}HTTP methods: GETThis API retrieves a SAN initiator using it's name and SVM uuid.Endpoint: /protocols/san/iscsi/services/{svm.uuid}/metrics/{timestamp}HTTP methods: GETThis API retrieves historical performance metrics for the iSCSI protocol service of an SVM for a specific time.Endpoint: /storage/luns/{lun.uuid}/metricsHTTP methods: GETThis API retrieves historical performance metrics for a LUN.Endpoint: /storage/luns/{lun.uuid}/metrics/{timestamp}HTTP methods: GETThis API retrieves historical performance metrics for a LUN for a specific time.Endpoint: /storage/namespaces/{nvme_namespace.uuid}/metricsHTTP methods: GETThis API retrieves historical performance metrics for an NVMe namespace.Endpoint: /storage/namespaces/{nvme_namespace.uuid}/metrics/{timestamp}HTTP methods: GETThis API retrieves historical performance metrics for a NVMe namespace for a specific time.Endpoint: /security/authentication/cluster/oauth2HTTP methods: GET, PATCHThis API retrieves and updates the OAuth 2.0 status.Endpoint: /security/authentication/cluster/oauth2/clientsHTTP methods: GET, POSTThis API retrieves and creates OAuth 2.0 configurations.Endpoint: /security/authentication/cluster/oauth2/clients/{name}HTTP methods: GET, DELETEThis API retrieves and deletes OAuth 2.0 configurations with the specified name.Endpoint: /security/authentication/duo/groupsHTTP methods: GET, POSTThis API retrieves and creates Duo groups.Endpoint: /security/authentication/duo/groups/{owner.uuid}/{name}HTTP methods: GET, PATCH, DELETEThis API retrieves, updates, and deletes a Duo group based on the owner id and group name.Endpoint: /security/authentication/duo/profilesHTTP methods: GET, POSTThis API retrieves and creates Duo profile.Endpoint: /security/authentication/duo/profiles/{owner.uuid}HTTP methods: GET, PATCH, DELETEThis API retrieves, updates, and deletes a Duo profule based on the owner id.Endpoint: /security/key-stores/{uuid}HTTP methods: GET, PATCH, DELETEThis API retrieves, updates, and deletes the keystore configuration with the specified uuid.Endpoint: /storage/qos/qos-optionsHTTP methods: GET, PATCHThis API retrieves, and updates QoS options.Endpoint: /support/autosupport/messages/{node.uuid}/{index}/{destination}HTTP methods: GETThis API retrieves information about a single Autosupport message.9.13.1 library updatesNew endpointsEndpoint: /resource-tagsHTTP methods: GETThis API retrieves the tags currently being used for resources in the API.Endpoint: /resource-tags/{value}HTTP methods: GETThis API retrieves a specific resource tag.Endpoint: /resource-tags/{resource_tag.value}/resourcesHTTP methods: GET, POSTThese APIs can be used to retrieve the resources for a specific tag or create a new tag on a specific resource.Endpoint: /resource-tags/{resource_tag.value}/resources/{href}HTTP methods: GET, DELETEThese APIs can be used to retrieve or delete a specific resource for a specific tag.Endpoint: /application/consistency-groups/{consistency_group.uuid}/metricsHTTP methods: GETThis API retrieves historical performance and capacity metrics for a consistency group.Endpoint: /support/ems/role-configsHTTP methods: GET, POSTThese APIs can be used to retrieve a collection of the EMS role-based configurations or create an EMS role-based configuration for an access control role.Endpoint: /support/ems/role-configs/{access_control_reol.name}HTTP methods: GET, PATCH, DELETEThese APIs can be used to retrieve, update, or delete the EMS role-based configuration of the access control role.Endpoint: /security/key-managers/{security_key_manager.uuid}/restoreHTTP methods: POSTThis API retrieves and restores any current unrestored keys (associated with the storage controller) from the specified key management server.Endpoint: /security/login/totpsHTTP methods: GET, POSTThese APIs can be used to retrieve and create the TOTP profiles configured for user accounts.Endpoint: /security/login/totps/{owner.uuid}/{account.name}HTTP methods: GET, PATCH, DELETEThese APIs can be used to retrieve, update, or delete the TOTP profile configured for a user account.Endpoint: /protocols/s3/services/{svm.uuid}/buckets/{s3_bucket.uuid}/rulesHTTP methods: GET, POSTThese APIs can be used to retrieve all S3 Lifecycle rules associated with a bucket or create the S3 bucket lifecycle rule configuration.Endpoint: /protocols/s3/services/{svm.uuid}/buckets/{s3_bucket.uuid}/rules/{name}HTTP methods: GET, PATCH, DELETEThese APIs can be used to retrieve, update, or delete the S3 bucket lifecycle rule configuration.9.12.1 library updatesNew endpointsEndpoint: /application/consistency-groups/{consistency_group.uuid}/snapshots/{uuid}HTTP methods: PATCHThis API completes a Snapshot copy operation of a consistency group.Endpoint: /security/aws-kmsHTTP methods: GET, POST, PATCH, DELETEThese APIs allow ONTAP to securely store its encryption keys using AWS KMS. They allow for configuring, updating, and deleting AWS KMS configurations.Endpoint: /security/aws-kms/{aws_kms.uuid}/rekey-externalHTTP methods: POSTThis API rekeys or re-versions the AWS KMS Key Encryption Key (KEK) for the given AWS KMS.Endpoint: /security/aws-kms/{aws_kms.uuid}/rekey-internalHTTP methods: POSTThis API rekeys SVM KEK for the given AWS KMS.Endpoint: /security/aws-kms/{aws_kms.uuid}/restoreHTTP methods: POSTThis API restores the keys for an SVM from a configured AWS KMS.Endpoint: /security/key-managers/{security_key_manager.uuid}/auth-keysHTTP methods: GET, POST, DELETEThese APIs allow for managing authentication keys.Endpoint: /storage/file/moves/{node.uuid}/{uuid}/{index}HTTP methods: GETThis API retrieves the status of an on-going file move operation.Endpoint: /protocols/active-directoryHTTP methods: GET, POSTThese APIs can be used to display Active Directory account-related information of all SVMs or create a new Active Directory account.Endpoint: /protocols/active-directory/{svm.uuid}HTTP methods: GET, PATCH, DELETEThis API displays, modified, or deletes an Active Directory Account for the specified SVM.Endpoint: /protocols/active-directory/{svm.uuid}/preferred-domain-controllersHTTP methods: GET, POST, DELETEThese APIs can be used to display or create the preferred domain controller configuration of an SVM.Endpoint: /protocols/active-directory/{svm.uuid}/preferred-domain-controllers/{fqdn}/{server_ip}HTTP methods: GET, DELETEThese APIs retrieve and delete the Active Directory preferred DC configuration of the specified SVM and domain.Endpoint: /protocols/cifs/group-policiesHTTP methods: GET, PATCHThese APIs retrieve group policy objects that are yet to be applied. You can also use it to create a background task to update the GPO settings for a specific SVM.Endpoint: /protocols/cifs/group-policies/{svm.uuid}/central-access-policiesHTTP methods: GETThis API retrieves applied central access policies for the specified SVM.Endpoint: /protocols/cifs/group-policies/{svm.uuid}/central-access-policies/{name}HTTP methods: GETThis API retrieves an applied central access policy for the specified SVM.Endpoint: /protocols/cifs/group-policies/{svm.uuid}/central-access-rulesHTTP methods: GETThis API retrieves applied central access rules for specified SVM.Endpoint: /protocols/cifs/group-policies/{svm.uuid}/central-access-rules/{name}HTTP methods: GETThis API retrieves an applied central access rule for specified SVM.Endpoint: /protocols/cifs/group-policies/{svm.uuid}/objectsHTTP methods: GETThis API retrieves applied group policy objects for specified SVM.Endpoint: /protocols/cifs/group-policies/{svm.uuid}/restricted-groupsHTTP methods: GETThis API retrieves applied policies of restricted groups for specified SVM.Endpoint: /protocols/cifs/group-policies/{svm.uuid}/restricted-groups/{policy_index}/{group_name}HTTP methods: GETThis API retrieves an applied policy of a restricted group for specified SVM.Endpoint: /protocols/nfs/connected-client-settingsHTTP methods: GET, PATCHThese APIs allow for retrieving and modifying properties of the NFS connected-client cache settings.Fixed issuesBug ID 1506171When calling post_collection on a resource, the library was not resetting the connection resulting in a no connection error.Bug ID 1504927The library was not polling on a job when a next link was returned in the response.9.11.1 library updatesNew endpointsEndpoint: /cluster/counter/tablesHTTP methods: GETThis API returns a collection of counter tables and their schema definitions.Endpoint: /cluster/counter/tables/{name}HTTP methods: GETThis API returns the information about a single counter table.Endpoint: /cluster/counter/tables/{counter_table.name}/rowsHTTP methods: GETThis API returns a collection of counter rows.Endpoint: /cluster/counter/tables/{counter_table.name}/rows/{id}HTTP methods: GET
This API returns a single counter rows.Endpoint: /cluster/metrocluster/svmsHTTP methods: GETThis API retrieves configuration information for all pairs of SVMs in MetroCluster.Endpoint: /cluster/metrocluster/svms/{cluster.uuid}/{svm.uuid}HTTP methods: GETThis API retrieves configuration information for an SVM in a MetroCluster relationship.Endpoint: /cluster/sensorsHTTP methods: GETThis API retrieves environment sensorsEndpoint: /cluster/sensors/{node.uuid}/{index}HTTP methods: GETThis API retrieves environment sensors.Endpoint: /network/ethernet/switchesHTTP methods: POST, DELETEThis API can be used to get information about the Ethernet switches used for cluster and/or storage networks.Endpoint: /network/fc/fabricsHTTP methods: GETThe Fibre Channel (FC) fabric REST APIs provide read-only access to FC network information. This includes connections between the ONTAP cluster and the FC fabric, the switches that comprise the fabric, and the zones of the active zoneset of the fabric.Endpoint: /network/ip/subnetsHTTP methods: GET, POST, PATCH, DELETEThis API manages IP subnets in the cluster.Endpoint: /svm/svms/{svm.uuid}/top-metrics/clientsHTTP methods: GETThis API retrieves a list of clients with the most IO activity for FlexVol and FlexGroup volumes belonging to a specified SVM.Endpoint: /svm/svms/{svm.uuid}/top-metrics/filesHTTP methods: GETThis API retrieves a list of files with the most IO activity for FlexVol and FlexGroup volumes belonging to a specified SVM.Endpoint: /svm/svms/{svm.uuid}/top-metrics/usersHTTP methods: GETThis API retrieves a list of users with the most IO activity for FlexVol and FlexGroup volumes belonging to a specified SVM.Endpoint: /name-services/cache/group-membership/settingsHTTP methods: GET, PATCHThis API is used to retrieve and manage group-membership cache settings.Endpoint: /name-services/cache/host/settingsHTTP methods: GET, PATCHThis API is used to retrieve and manage hosts cache settings.Endpoint: /name-services/cache/netgroup/settingsHTTP methods: GET, PATCHThis API is used to retrieve and manage netgroups cache settings.Endpoint: /name-services/cache/settingHTTP methods: GET, PATCHThis API is used to retrieve and manage global nameservice cache settings.Endpoint: /name-services/cache/unix-group/settingsHTTP methods: GET, PATCHThis API is used to retrieve and manage unix-group settings.Endpoint: /name-services/cache/unix-user/settingsHTTP methods: GET, PATCHThis API is used to retrieve and manage unix-user settings.Endpoint: /name-services/ldap-schemasHTTP methods: GET, POST, PATCH, DELETEThis API manages LDAP schemas.Endpoint: /name-services/netgroup-files/{svm.uuid}HTTP methods: GET, PATCHThis API displays the netgroup file details or raw netgroup file of an SVM.Endpoint: /support/ems/application-logsHTTP methods: POSTThis API generates creates an app.log.* event.Endpoint: /security/azure-key-vaults/{azure_key_value.uuid}/rekey-externalHTTP methods: POSTThis API rekeys the external key in the key hierarchy for an SVM with an AKV configuration.Endpoint: /security/gcp-kms/{gcp_kms.uuid}/rekey-externalHTTP methods: POSTThis API rekeys the external key in the key hierarchy for an SVM with a Google Cloud KMS configuration.Endpoint: /security/key-managers/{security_key_manager.uuid}/keys/{node.uuid}/key-idsHTTP methods: GETThis API retrieves the key manager keys on the give node.Endpoint: /security/multi-admin-verifyHTTP methdos: GET, PATCHThese APIs provide information on the multi-admin verification global setting.Endpoint: /security/multi-admin-verify/approval-groupsHTTP methods: GET, POSTThis API maanges multi-admin-verify approval groups.Endpoint: /security/multi-admin-verify/approval-groups/{owner.uuid}/{name}HTTP methods: GET, PATCH, DELETEThese APIs provide information about a specific multi-admin verification approval-group.Endpoint: /security/multi-admin-verify/requestsHTTP methods: GET, POSTThese APIs provide information about multi-admin verification requests.Endpoint: /security/multi-admin-verify/requests/{index}HTTP methods: GET, PATCH, DELETEThese APIs provide information about a specific multi-admin verification request.Endpoint: /security/multi-admin-verify/rulesHTTP methods: GET, POSTThis API manages multi-adming-verify rules.Endpoint: /security/multi-admin-verify/rules/{owner.uuid}/{operation}HTTP methods: GET, PATCH, DELETEThese APIs provide information about a specific multi-admin verification rule.Endpoint: /storage/file/movesHTTP methods: GET, POSTThis API starts a file move operation between two FlexVol volumes or within a FlexGroup volume, and shows the status of all on-going file move operations in the cluster.Endpoint: /storage/poolsHTTP methods: GET, POST, PATCH, DELETEThese APIs manage storage pools in a cluster.Endpoint: /storage/ports/{node.uuid}/{name}HTTP methods: PATCHThis API updates a storage port.Endpoint: /storage/tape-devices/{node.uuid}/{device_id}HTTP methods: PATCHThis API updates a specific tape device.Endpoint: /protocols/cifs/domainsHTTP methods: GETThis API retrieves the CIFS connection information for all SVMs.Endpoint: /protocols/cifs/netbiosHTTP methods: GETThis API retrieves NetBIOS information.Endpoint: /protocols/cifs/session/filesHTTP methods: GET, DELETEThese APIs manage files opened in a current session.Endpoint: /protocols/cifs/shadow-copiesHTTP methods: GET, PATCHThese APIs retrieve and modify Shadowcopies.Endpoint: /protocols/cifs/shadowcopy-setsHTTP methods: GET, PATCHThese APIs retrieve and modify Shadowcopy Sets.Endpoint: /protocols/cifs/users-and-groups/build-import/{svm.uuid}HTTP methods: GET, POST, PATCHThis API is used to bulk import from the specified URI, get the status of the last import and to upload the import status to the specified URI.Endpoint: /protocols/nfs/connected-client-mapsHTTP methods: GETThis API retrieves NFS clients information.Endpoint: /protocols/vscan/{svm.uuid}/eventsHTTP methods: GETThis API retrieves Vscan events, which are generated by the cluster to capture important events.9.10.1  library updatesNew endpointsEndpoint: /cluster/metrocluster/interconnects/{node.uuid}/{partner_type}/{adapter}HTTP methods: PATCHThis API updates a MetroCluster interconnect interface.Endpoint: /cluster/webHTTP methods: GET, PATCHThese APIs are for web services configuration.Endpoint: /svm/migrationsHTTP methods: GET, POSTThese APIs allow creation and observation of the SVM migrations.Endpoint: /svm/migrations/{uuid}HTTP methods: GET, PATCH, DELETEThese APIs allow management of a single SVM migration.Endpoint: /svm/migrations/{svm_migration.uuid}/volumesHTTP methods: GETThis API retrieves the transfer status of the volumes in the SVM.Endpoint: /svm/migrations/{svm_migration.uuid}/volumes/{volume.uuid}HTTP methods: GETThis API retrieves the transfer status for the specified volume.Endpoint: /svm/svms/{svm.uuid}/webHTTP methods: GET, PATCHThese APIs manage the web services security configuration.Endpoint: /name-services/host-record/{svm.uuid}/hostHTTP methods: GETThis API retrieves the IP address of the specified hostname.Endpoint: /name-services/local-hostsHTTP methods: GET, POSTThese APIs are for managing IP to hostname mappings.Endpoint: /name-services/local-hosts/{owner.uuid}/{address}HTTP methods: GET, PATCH, DELETEThese APIs manage a specified SVM and IP address.Endpoint: /name-services/unix-groups/{svm.uuid}/{unix_group.name}/usersHTTP methods: GETThis API retrieves users to the specified UNIX group and SVM.Endpoint: /name-services/unix-groups/{svm.uuid}/{unix_group.name}/users/{name}HTTP methods: GETThis API retrieves a user from the specified UNIX group.Endpoint: /protocols/san/lun-maps/{lun.uuid}/{igroup.uuid}/reporting-nodesHTTP methods: GET, POSTThese APIs are for managing LUN map reporting nodes.Endpoint: /protocols/san/lun-maps/{lun.uuid}/{igroup.uuid}/reporting-nodes/{uuid}HTTP methods: GET, DELETEThese APIs manage Lun map reports for the specified node.Endpoint: /protocols/san/vvol-bindingsHTTP methods: GET, POSTThese APIs are for vVol bindings.Endpoint: /protocols/san/vvol-bindings/{protocol_endpoint.uuid}/{vvol.uuid}HTTP methods: GET, DELETEThese APIs manage vVol bindings per vvol uuid.Endpoint: /storage/luns/{lun.uuid}/attributesHTTP methods: GET, POSTThese APIs are for LUN attributes.Endpoint: /storage/luns/{lun.uuid}/attributes/{name}HTTP methods: GET, PATCH, DELETEThese APIs manage LUN attributes for the specific lun and name.Endpoint: /application/consistency-groupsHTTP methods: GET, POSTThese APIs manage details of a collection or a specific consistency group.Endpoint: /application/consistency-groups/{uuid}HTTP methods: GET, PATCH, DELETEThese APIs manage consistency groups.Endpoint: /application/consistency-groups/{uuid}/{consistency_group.uuid}/snapshotsHTTP methods: GET, POSTThese APIs manage snapshot copies of a collection or a specific consistency group.Endpoint: /application/consistency-groups/{uuid}/{consistency_group.uuid}/snapshots/{uuid}HTTP methods: GET, DELETEThese APIs manage details of a specific snapshot for a consistency group.Endpoint: /support/auto-updateHTTP methods: GET, PATCHThese APIs manage the current status of the automatic update feature and the End User License Agreement (EULA).Endpoint: /support/auto-update/configurationsHTTP methods: GETThis API retrieves the configuration for automatic updates.Endpoint: /support/auto-update/configurations/{uuid}HTTP methods: GET, PATCHThese APIs manage the configuration for a specified automatic update.Endpoint: /support/auto-update/updatesHTTP methods: GETThis API retrieves the status of all updates.Endpoint: /support/auto-update/updates/{uuid}HTTP methods: GET, PATCHThese APIs manage the status of an update.Endpoint: /support/coredump/coredumpsHTTP methods: GETThis API retrieves a collection of coredumps.Endpoint: /support/coredump/coredumps/{node.uuid}/{name}HTTP methods: GET, DELETEThese APIs manage a specific core dump.Endpoint: /security/anti-ransomware/suspectsHTTP methods: GETThis API retrieves information on the suspects generated by the anti-ransomware analytics.Endpoint: /security/anti-ransomware/suspects/{volume.uuid}HTTP methods: DELETEThis API clears either all the suspect files of a volume or suspect files of a volume based on file format or suspect time provided.Endpoint: /security/azure-key-vaults/{uuid}/rekey-internalHTTP methods: POSTThis API rekeys the internal key in the key hierarchy for an SVM with an AKV configuration.Endpoint: /security/azure-key-vaults/{uuid}/restoreHTTP methods: POSTThis API restores the keys for an SVM from a configured AKV.Endpoint: /security/gcp-kms/{uuid}/rekey-internalHTTP methods: POSTThis API rekeys the internal key in the key hierarchy for an SVM with a Google Cloud KMS configuration.Endpoint: /security/gcp-kms/{uuid}/restoreHTTP methods: POSTThis API restores the keys for an SVM from a configured Google Cloud KMS.Endpoint: /security/ipsec/ca-certificatesHTTP methods: GET, POSTThese APIs are for the collection of IPsec CA certificates configured for all SVMs.Endpoint: /security/ipsec/ca-certificates/{svm.uuid}HTTP methods: GET, PATCH, DELETEThese APIs manage the IPsec CA certificates configured for the specified SVM.Endpoint: /security/key-manager-configsHTTP methods: GET, PATCHThese APIs are used for key manager configurations.Endpoint: /security/key-storesHTTP methods: GETThis API retrieves keystores.Endpoint: /security/ssh/svmsHTTP methods: GETThis API retrieves the SSH server configuration for all the SVMs.Endpoint: /security/ssh/svms/{svm.uuid}HTTP methods: GET, PATCHThese APIs manage the SSH server configuration for the specified SVM.Endpoint: /storage/file/clone/split-loadsHTTP methods: GETThis API retrieves the clone split load of a node.Endpoint: /storage/file/clone/split-loads/{node.uuid}HTTP methods: GET, PATCHThese APIs manage Volume File Clone Split Load.Endpoint: /storage/file/clone/split-statusHTTP methods: GETThis API retrieves file clone split status of all volumes in the node.Endpoint: /storage/file/clone/split-status/{volume.uuid}HTTP methods: GETThis API retrieves file clone split status of provided volume in the node.Endpoint: /storage/file/clone/tokensHTTP methods: GET, POSTThese APIs manage tokens to reserve the split load.Endpoint: /storage/file/clone/tokens/{node.uuid}/{uuid}HTTP methods: GET, PATCH, DELETEThese APIs manage file clone tokens for the specified node.Endpoint: /storage/ports/{node.uuid}/{name}HTTP methods: PATCHThis API updates a storage port.Endpoint: /storage/qos/workloadsHTTP methods: GETThis API retrieves a collection of QoS workloads.Endpoint: /storage/qos/workloads/{uuid}HTTP methods: GETThis API retrieves a specific QoS workload.Endpoint: /storage/shelves/{uid}HTTP methods: PATCHThis API updates a shelf location LED.Endpoint: /storage/volumes/{volume.uuid}/top-metrics/clientsHTTP methods: GETThis API retrieves a list of clients with the most IO activity.Endpoint: /storage/volumes/{volume.uuid}/top-metrics/directoriesHTTP methods: GETThis API retrieves a list of directories with the most IO activity.Endpoint: /storage/volumes/{volume.uuid}/top-metrics/filesHTTP methods: GETThis API retrieves a list of files with the most IO activity.Endpoint: /storage/volumes/{volume.uuid}/top-metrics/usersHTTP methods: GETThis API retrieves a list of users with the most IO activity.Endpoint: /storage/snaplock/compliance-clocksHTTP methods: POSTThis API initializes the SnapLock ComplianceClock.Endpoint: /protocols/cifs/domainsHTTP methods: GETThis API retrieves the CIFS domain-related information of all SVMs.Endpoint: /protocols/cifs/domains/{svm.uuid}HTTP methods: GETThis API retrieves the CIFS domain-related information for the specified SVM.Endpoint: /protocols/cifs/domains/{svm.uuid}/preferred-domain-controllersHTTP methods: GET, POSTThese APIs are for the CIFS domain preferred DC configuration of an SVM.Endpoint: /protocols/cifs/domains/{svm.uuid}/preferred-domain-controllers/{fqdn}/{server_ip}HTTP methods: GET, DELETEThese APIs manage the CIFS domain preferred DC configuration for the specified SVM and domain.Endpoint: /protocols/cifs/local-groups/{svm.uuid}/{sid}HTTP methods: GET, PATCH, DELETEThese APIs manage local group information for the specified group and SVM.Endpoint: /protocols/cifs/local-groups/{svm.uuid}/{local_cifs_group.sid}/membersHTTP methods: GET, POST, DELETEThese APIs manage local users, Active Directory users and Active Directory groups which are members of the specified local group and SVM.Endpoint: /protocols/cifs/local-groups/{svm.uuid}/{local_cifs_group.sid}/members/{name}HTTP methods: GET, DELETEThese APIs manage the local user, Active Directory user and/or Active Directory group from the specified local group and SVM.Endpoint: /protocols/cifs/local-users/{svm.uuid}/{sid}HTTP methods: GET, PATCH, DELETEThese APIs manage local user information for the specified user and SVM.Endpoint: /protocols/cifs/users-and-groups/bulk-import/{svm.uuid}HTTP methods: GET, POST, PATCHThese APIs manage CIFS local users,groups and group memberships file from the specified URL.Endpoint: /protocols/event-selectorsHTTP methods: GET, POSTThese APIs manage S3 audit event-selector configurations for all SVMs.Endpoint: /protocols/event-selectors/{svm.uuid}/{bucket}HTTP methods: GET, PATCH, DELETEThese APIs manage an S3 audit event selector configuration for an SVM.Endpoint: /protocols/file-security/permissions/{svm.uuid}/{path}HTTP methods: DELETEThis API removes all SLAG ACLs for specified path. Bulk deletion is supported only for SLAG.Endpoint: /protocols/fpolicy/{svm.uuid}/connectionsHTTP methods: GETThis API retrieves the statuses of FPolicy servers.Endpoint: /protocols/fpolicy/{svm.uuid}/connections/{node.uuid}/{policy.name}/{server}HTTP methods: GET, PATCHThese APIs manage the status of an FPolicy server.Endpoint: /protocols/locksHTTP methods: GETThis API retrieves locks details.Endpoint: /protocols/locks/{uuid}HTTP methods: GET, DELETEThese APIs manage locks for the specified Lock ID.Endpoint: /protocols/s3auditsHTTP methods: GET, POSTThese APIs manage S3 audit configuration.Endpoint: /protocols/s3audits/{svm.uuid}HTTP methods: GET, PATCH, DELETEThese APIs manage an S3 audit configuration for an SVM.9.9.1 library updatesNew endpointsEndpoint: /name-services/unix-groupsHTTP methods: GET, POSTThese APIs allow management of the UNIX groups for all of the SVMs.Endpoint: /name-services/unix-groups/{svm.uuid}/{name}HTTP methods: GET, PATCH, DELETEThese APIs manage UNIX group information for the specified group and SVM.Endpoint: /name-services/unix-groups/{svm.uuid}/{unix_group.name}/usersHTTP methods: POSTThis API adds users to the specified UNIX group and SVM.Endpoint: /name-services/unix-groups/{svm.uuid}/{unix_group.name}/users/{name}HTTP methods: DELETEThis API deletes a user from the specified UNIX group.Endpoint: /name-services/unix-usersHTTP methods: GET, POSTThese APIs manage all local UNIX users and configuration for SVMs.Endpoint: /name-services/unix-users/{svm.uuid}/{name}HTTP methods: GET, PATCH, DELETEThese APIs manage UNIX user information for the specified user and SVM.Endpoint: /protocols/san/igroups/{igroup.uuid}/igroupsHTTP methods: GET,POSTThese APIs manage nested initiator groups of an initiator group.Endpoint: /protocols/san/igroups/{igroup.uuid}/igroups/{uuid}HTTP methods: GET, DELETEThese APIs manage a nested initiator group of an initiator group.Endpoint: /protocols/san/igroups/{igroup.uuid}/initiators/{name}HTTP methods: PATCHUpdates an initiator of an initiator group. This API only supports modification of initiators owned directly by the initiator group. Initiators of nested initiator groups must be modified on the initiator group that directly owns the initiator.Endpoint: /protocols/san/portsetsHTTP methods: GET, POSTThese APIs are for portsets.Endpoint: /protocols/san/portsets/{uuid}HTTP methods: GET, DELETEThese APIs used for a portset.Endpoint: /protocols/san/portsets/{portset.uuid}/interfacesHTTP methods: GET, POSTThese APIs are for interfaces of a portset.Endpoint: /protocols/san/portsets/{portset.uuid}/interfaces/{uuid}HTTP methods: GET, DELETEThese APIs are for a network interface of a portset.Endpoint: /security/gcp-kmsHTTP methods: GET, POSTThese APIs manage Google Cloud KMS configurations for all clusters and SVMs.Endpoint: /security/gcp-kms/{uuid}HTTP methods: GET, PATCH, DELETEThese APIs are for managing the Google Cloud KMS configuration for the SVM specified by the UUID.Endpoint: /security/gcp-kms/{gcp_kms.uuid}/rekey-internalHTTP methods: POSTThis API rekeys the internal key in the key hierarchy for an SVM with a Google Cloud KMS configuration.Endpoint: /security/gcp-kms/{gcp_kms.uuid}/restoreHTTP methods: POSTThis API restores the keys for an SVM from a configured Google Cloud KMS.Endpoint: /storage/bridgesHTTP methods: GETThis API retrieves a collection of bridges.Endpoint: /storage/bridges/{wwn}HTTP methods: GETThis API retrieves a specific bridgeEndpoint: /storage/flexcache/origins/{uuid}HTTP methods: PATCHThis API modifies origin options for a origin volume in the cluster.Endpoint: /storage/switchesHTTP methods: GETThis API retrieves a collection of storage switches.Endpoint: /storage/switches/{name}HTTP methods: GETThis API retrieves a specific storage switch.Endpoint: /storage/tape-devicesHTTP methods: GETThis API retrieves a collection of tape devices.Endpoint: /storage/tape-devices/{node.uuid}/{device_id}HTTP methods: GETThis API retrieves a specific tape.Endpoint: /protocols/ndmp/svms/{svm.uuid}/passwords/{user}HTTP methods: GETThis API generates and retrieves the password for the specified NDMP user.Endpoint: /protocols/cifs/local-groupsHTTP methods: GET, POSTThese APIs are for the local groups for all of the SVMs.Endpoint: /protocols/cifs/local-groups/{svm.uuid}/{group_sid}HTTP methods: GET, PATCH, DELETEThese APIs are for local group information of the specified group and SVM.Endpoint: /protocols/cifs/local-groups/{svm.uuid}/{local_group.group_sid}/membersHTTP methods: GET, POST, DELETEThese APIs manage local users, Active Directory users and Active Directory groups which are members of the specified local group and SVM.Endpoint: /protocols/cifs/local-groups/{svm.uuid}/{local_group.group_sid}/members/{name}HTTP methods: GET, DELETEThese APIs are for the local user, Active Directory user and/or Active Directory group from the specified local group and SVM.Endpoint: /protocols/cifs/local-usersHTTP methods: GET, POSTThese APIs are for local users of all of the SVMs.Endpoint: /protocols/cifs/local-users/{svm.uuid}/{user_sid}HTTP methods: GET, PATCH, DELETEThese APIs manage local user information for the specified user and SVM.Endpoint: /protocols/cifs/sessions/{node.uuid}/{svm.uuid}/{identifier}/{connection_id}HTTP methods: DELETEThis API deletes SMB session information on a node for an SVM.Endpoint: /protocols/cifs/users-and-groups/privilegesHTTP methods: GET, POSTThese APIs manage privileges of the specified local or Active Directory user or group and SVM.Endpoint: /protocols/cifs/users-and-groups/privileges/{svm.uuid}/{name}HTTP methods: GET, PATCHThese APIs are for privileges of the specified local or Active Directory user or group and SVM.Endpoint: /protocols/file-security/permissions/{svm.uuid}/{path}HTTP methods: GET, POST, PATCHThese APIs manage file permissionsEndpoint: /protocols/file-security/permissions/{svm.uuid}/{path}/aclHTTP methods: POST, PATCH, DELETEThese APIs manage the new SACL/DACL ACL.9.8.0 library updatesFixed issuesBug ID 1349122Due to a type mismatch between documentation and implementation, some endpoints were failing because of a validation error.ONTAP 9.8 REST API updatesAll new ONTAP APIs have corresponding library resource objects which can be used
to perform the operations. See thenetapp_ontap.resourcespackage for details
about each of the objects and their fields.For a summary of the changes in the ONTAP REST API between versions of ONTAP 9, see theONTAP 9 Release Notes.New endpointsEndpoint: /cluster/firmware/historyHTTP methods: GETThis API retrieves the details history of firmware update requests for the cluster.Endpoint: /cluster/licensing/capacity-poolsHTTP methods: GETThis API retrieves information about associations between ONTAP nodes in the cluster and capacity pool licenses. It can also report how much capacity each node is consuming from the pool.Endpoint: /cluster/licensing/license-managersHTTP methods: GET, PATCHThese APIs allow for managing information about the license manager associated with the cluster.Endpoint: /cluster/mediatorsHTTP methods: GET, POST, DELETEThese APIs allow for adding or removing a mediator to MetroCluster over IP configuration as well as retrieving the status of the existing mediator.Endpoint: /cluster/metroclusterHTTP methods: GET, POST, PATCHThese APIs allows for creating, performing operations, and retrieving relevant information pertaining to MetroCluster.Endpoint: /cluster/metrocluster/diagnosticsHTTP methods: GET, POST
This API can be used to initiate a MetroCluster diagnostics operation and fetch the results of a completed diagnostic operation.Endpoint: /cluster/metrocluster/dr-groupsHTTP methods: GET, POST, DELETEThese APIs allow for creating, performing operations, and retrieving relevant information about MetroCluster DR groups.Endpoint: /cluster/metrocluster/interconnectsHTTP methods: GETThis API retrieves information pertaining to MetroCluster interconnect status.Endpoint: /cluster/metrocluster/nodesHTTP methods: GETThis API retrieves details about MetroCluster nodes.Endpoint: /cluster/metrocluster/operationsHTTP methods: GETThis API retrieves the list of MetroCluster operations on the local cluster.Endpoint: /cluster/nodes/{uuid}/metricsHTTP methods: GETThis API retrieves historical performance metrics for a node.Endpoint: /cluster/software/uploadHTTP methods: POSTThis API uploads a software or firmware package located on the local filesystem.Endpoint: /network/ethernet/ports/{uuid}/metricsHTTP methdos: GETThis API retrieves historical performance metrics for a port.Endpoint: /network/ethernet/switch/portsHTTP methods: GETThis API can be used to get the port information for an ethernet switch used in a cluster or storage networks.Endpoint: /network/ethernet/switchesHTTP methods: GET, PATCHThese APIs can be used to retrieve and modify ethernet switches used for the cluster and/or storage networks.Endpoint: /network/fc/interfaces/{uuid}/metricsHTTP methods: GETThis API retrieves historical performance metrics for an FC interface.Endpoint: /network/fc/ports/{uuid}/metricsHTTP methods: GETThis API retrieves historical performance metrics for an FC port.Endpoint: /network/ip/interfaces/{uuid}/metricsHTTP methods: GETThis API retrieves historical performance metrics for an interface.Endpoint: /network/ip/service-policiesHTTP methods: POST, PATCH, DELETEThese APIs allow for creating, modifying, and deleting a servicy policy for network interfaces.Endpoint: /storage/namespaces/{uuid}/metricsHTTP methods: GETThis API retrieves historical performance metrics for an NVMe namespace.Endpoint: /securityHTTP methods: PATCHThis API updates the software FIPS mode or enables conversion of non-encrypted metadata volumes to encrypted metadata volumes and non-NAE aggregates to NAE aggregates.Endpoint: /security/azure-key-vaultsHTTP methods: GET, POST, PATCH, DELETEThese APIs allow for managing Azure Key Vaults on a cluster.Endpoint: /security/azure-key-vaults/{azure_key_vault.uuid}/rekey-internalHTTP methods: POSTThis API rekeys the internal key in the key hierarchy for an SVM with and AKV configuration.Endpoint: /security/azure-key-vaults/{azure_key_vault.uuid}/restoreHTTP methods: POSTThis API restores the keys for an SVM from a configures AKV.Endpoint: /security/certificate-signing-requestHTTP methods: POSTThis API generates a Certificate Signing Request and a private key pair.Endpoint: /security/gcp-kmsHTTP methods: GET, POST, PATCH, DELETEThese APIs allow ONTAP to store encryption keys using Google Cloud Key Management Services.Endpoint: /security/gcp-kms/{gcp_kms.uuid}/restoreHTTP methods: POSTThis API restores the keys for an SVM from a configure Google Cloud Key Management Service.Endpoint: /security/ipsecHTTP methods: GET, PATCHThese APIs allow for retrieving and updating IPsec status.Endpoint: /security/ipsec/policiesHTTP methods: GET, POST, PATCH, DELETEThese APIs allow for creating, retrieving information about, and updating IPsec policies.Endpoint: /security/ipsec/security-associationsHTTP methods: GETThis API retrieves the IPsec and IKE(Internet Key Exchange) security associations.Endpoint: /storage/file/copyHTTP methods: POSTThis API starts a file copy operations which is only supported on flexible volumes.Endpoint: /storage/file/moveHTTP methods: POSTThis API starts a file move operation which is only supported on flexible volumes.Endpoint: /storage/flexcache/flexcaches/{uuid}HTTP methods: PATCHThis API prepopulates a FlexCache volume in the cluster.Endpoint: /storage/monitored-filesHTTP methods: GET, POST, DELETEThese APIs allow for creating, deleting, and retrieving information about monitored files.Endpoint: /storage/monitored-files/{monitored_file.uuid}/metricsHTTP methods: GETThis API retrieves historical performance metrics for the monitored file.Endpoint: /storage/snapshot-policies/{snapshot_policy.uuid}/schedulesHTTP methods: GET, POST, PATCH, DELETEThese APIs perform operations related to Snapshot copy policy schedules.Endpoint: /storage/volume-efficiency-policiesHTTP methods: GET, POST, PATCH, DELETEThese APIs allow for configuring volume efficiency policies on a cluster.Endpoint: /storage/volumes/{volume.uuid}/files/{path}HTTP methods: POST, PATCH, DELETEThese APIs allow for creating files, modifying files, and deleting files on a volume.Endpoint: /private/protocols/audit/audit-log-redirectHTTP methods: GET, POST, PATCH, DELETEThese APIs can be used to specify a dedicated SVM for all NAS auditing event log to reside in.Endpoint: /protocols/cifs/sessionsHTTP methods: GETThis API retrieves the CIFS sessions information for all SVMs.Endpoint: /protocols/cifs/sessions/{node.uuid}/{svm.uuid}/{identifier}/{connection_id}HTTP methods: GETThis API retrieves SMB session information for a specific SMF connection of a SVM in a node.Endpoint: /protocols/file-access-tracing/eventsHTTP methods: GET, DELETEThese APIs retrieves or delete trace results for access allowed or denied events.Endpoint: /protocols/file-access-tracing/filtersHTTP methods: GET, POST, PATCH, DELETEThese APIs manage security trace filter entries.Endpoint: /protocols/file-security/effective-permissions/{svm.uuid}/{path}HTTP methods: GETThis API displays the effective permissions granted to a Windows or UNIX user on the specified file or folder path.Endpoint: /private/manage/event-remediationsHTTP methods: GET, PATCHThese APIs allow for retrieving about and performing event management actions.Endpoint: /protocols/s3/bucketsHTTP methods: POSTThis API creates the S3 bucket configuration for an SVM.Endpoint: /protocols/s3/buckets/{svm.uuid}/{uuid}HTTP methods: GET, PATCH, DELETEThese APIs manage S3 bucket configurations for the specified SVM.Endpoint: /protocols/s3/services/{svm.uuid}/groupsHTTP methods: GET, POST, PATCH, DELETEThese APIs manage S3 group configurations for the specified SVM.Endpoint: /protocols/s3/services/{svm.uuid}/metricsHTTP methods: GETThis API retrieves historical performance metrics for the S3 protocol of an SVM.Endpoint: /protocols/s4/services/{svm.uuid}/policiesHTTP methods: GET, POST, PATCH, DELETEThese APIs allow for configuring S3 policies for the specified SVM.9.7.0 library updatesNewAcount_collection()method is now available on all resources which have aget_collection(). This method is a shortcut for getting only the number of items matching a query. For example:Volume.count_collection(name="backup_vol*")is roughly equivalent tolen(list(Volume.get_collection(name="backup_vol*"))).The application can now add its own custom headers for each request as part of thenetapp_ontap.host_connection.HostConnectionobject.When passing verify=False to the HostConnection, the library will now disable urllib3's InsecureRequestWarning from logging messages.Fixed issuesBug ID 1322090When polling jobs, the certificate verification setting was hard-coded to False, so it would behave the same regardless of how the user set it.Bug ID 1322095The get_collection() call using the connection parameter was not correctly setting the connection on the returned resource objects.Bug ID 1279507When doing a find() with the fields query parameter, the library was not returning the specified fields, instead, all fields were being returned.Bug ID 1291333When 0 records are found in a Resource.find() call and LOG_ALL_API_CALLS is set to True, then an uncaught exception is raised.Bug ID 1271450The library doesn't allow sending a body in a DELETE request.Bug ID 1263312When POSTing or PATCHing some objects with embedded objects, fields might incorrectly be dropped from the request.Bug ID 1275238Retrieving and setting the "from" field of Autosupport object fails.IncompatibilitiesIn prior versions, Resource.find() would raise an exception if no results were found as well as when more than one was found. In this version, when no results are found, None is returned instead of raising an exception. An exception is still raised when more than one result is found.##ONTAP 9.7 REST API updatesAll new ONTAP APIs have corresponding library resource objects which can be used
to perform the operations. See thenetapp_ontap.resourcespackage for details
about each of the objects and their fields.For a summary of the changes in the ONTAP REST API between versions of ONTAP 9, see theONTAP 9 Release Notes.New endpointsEndpoint: /cluster/nodes/{uuid}HTTP methods: DELETEThis API will remove a node from the cluster.Endpoint: /cluster/ntp/keys/{id}HTTP methods: GET, POST, PATCH, DELETEThese APIs allow for management of NTP server shared keys.Endpoint: /cluster/ntp/servers/{server}HTTP methods: GET, POST, PATCH, DELETEThese APIs allow for management of keyed NTP servers.Endpoint: /cluster/software/downloadHTTP methods: GETThis API allows monitoring the status of the image package download progress.Endpoint: /network/http-proxy/{uuid}HTTP methods: GET, POST, PATCH, DELETEThis API allow configuration of an HTTP proxy for the cluster of SVM IP spaces.Endpoint: /network/ip/bgp/peer-groups/{uuid}HTTP methods: GET, POST, PATCH, DELETEThese APIs manage information pertaining to the BGP peer-groups configured in the cluster.Endpoint: /protocols/san/fcp/services/{svm.uuid}/metricsHTTP methods: GETThis API retrieves historical performance metrics for the FC Protocols service of an SVM.Endpoint: /protocos/san/iscsi/services/{svm.uuid}/metricsHTTP methods: GETThis API retrieves history performance metrics for the iSCSI protocol of an SVM.Endpoint: /storage/luns/{uuid}/metricsHTTP methods: GETThis API retrieves history performance metrics for a LUN.Endpoint: /protocls/nvme/services/{svm.uuid}/metrics
HTTP methods: GETThis API retrieve historical performance metrics for NVME protocol of an SVM.Endpoint: /support/configuration-backup/{node.uuid}/nameHTTP methods: GET, POST, DELETEThese APIs create, retrieve, and delete backup configuraiton for the cluster.Endpoint: /support/snmp/traphosts/{host}HTTP methods: GET, POST, DELETEThese APIs configure SNMP traphosts which will receive SNMP traps from ONTAP.Endpoint: /support/snmp/users/{engine_id}/{name}HTTP methods: GET, POST, PATCH, DELETEThese APIs configure SNMP users that are able to query for the ONTAP SNMP server.Endpoint: /securityHTTP methods: GETThis API retrieves information about the security configured on the cluster.Endpoint: /security/authentication/cluster/ad-proxyHTTP methods: GET, POST, PATCH, DELETEThese APIs configure which data SVM will be use to proxy cluster management AD authentication.Endpoint: /security/authentiation/publickeys/{owner.uuid}/{account.name}/{index}HTTP methods: GET, POST, PATCH, DELETEThese APIs configure the public keys for user accounts.Endpoint: /security/key-managers/{source.uuid}/migrateHTTP methods: POSTThis API migrates the keys belonging to an SVM between the cluster's key manager and the SVM's key manager.Endpoint: /security/sshHTTP methods: GET, PATCHThis API manages the SSH server running in ONTAP.Endpoint: /storage/aggregates/{uuid}/metricsHTTP methods: GETThis API provide historical performance metrics for the specified aggregate.Endpoint: /storage/disksHTTP methods: PATCHThis API updates the encryption controls of self-encrypting disks.Endpoint: /storage/snapshot-policies/{snapshot-policy.uuid}/schedules/{uuid}HTTP methods: GET, POST, PATCH, DELETEThese APIs manage the policies reqarding when snapshots are taken.Endpoint: /protocols/ndmpHTTP methods: GET, PATCHThis API manages NDMP mode at either SVM-scope or node-scope.Endpoint: /protocols/ndmp/{node.uuid}HTTP methods: GET, PATCHThis API manages node-scoped NDMP settings.Endpoint: /protocols/ndmp/sessions/{owner.uuid}/{session.id}HTTP methods: GET, DELETEThese APIs manage diagnostics information on NDMP settings belonging to a specific SVM in the case of SVM-scope or to a specific node in the case of node-scope.Endpoint: /protocols/ndmp/svms/{svm.uuid}HTTP methods: GET, PATCHThese APIs manage SVM-scoped NDMP settings.Endpoint: /storage/snaplock/audit-logs/{svm.uuid}HTTP methods: GET, POST, PATCH, DELETEThese APIs manage the loggin policies for a snaplock volume.Endpoint: /storage/snaplock/compliance-clocks/{node.uuid}HTTP methods: GETThis API manages the Compliance Clock of the system which determines the expiry time of the SnapLock objects in the system.Endpoint: /storage/snaplock/event-retention/operations/{id}HTTP methods: GET, POSTThese APIs display all Event Based Retentions (EBR) operations and allow for applying an EBR policy on a specified volume.Endpoint: /storage/snaplock/event-retention/policies/{policy.name}HTTP methods: GET, POST, PATCH, DELETEThese APIs manage retention policies for snaplock files and directories.Endpoint: /storage/snaplock/files/{volume.uuid}/{path}HTTP methods: GET, PATCH, DELETEThese APIs manage the SnapLock retention time of a file.Endpoint: /storage/snaplock/file-fingerprints/{id}HTTP methods: GET, POST, DELETEThese APIs manage key information about snaplock files and volumes.Endpoint: /storage/snaplock/litigations/{id}HTTP methods: GET, POST, DELETEThese APIs retain Compliance-mode WORM files for the duration of a litigation.Endpoint: /storage/snaplock/litigations/{litigation.id/filesHTTP methods: GETThis API displays the list of files under the specified litigation ID.Endpoint: /storage/snaplock/litigations/{litigation.id}/operations/{id}HTTP methods: GET, POST, DELETEThis API manages the legal-hold operations for the specified litigation ID.Endpoint: /protocols/cifs/services/{svm.uuid}/metricsHTTP methods: GETThis API retrieves history performance metrics for the CIFS protocol of an SVM.Endpoint: /protocols/nfs/connected-clientsHTTP methods: GETThis API provides a list of currently connected NFS clients or clients that can be connected but are currently idle.Endpoint: /protocols/nfs/services/{svm.uuid}/metricsHTTP methods: GETThis API retrieves historical performance metrics for the NFS protocol of an SVM.Endpoint: /protocols/s3/bucketsHTTP methods: GETThis API retrieves all S3 buckets for all SVMs.Endpoint: /protocols/s3/services/{svm.uuid}HTTP methods: GET, POST, PATCH, DELETEThese APIs manage S3 servers which will allow you to store objects in ONTAP using Amazon S3 protocol.Endpoint: /protocols/s3/services/{svm.uuid}/buckets/{uuid}HTTP methods: GET, POST, PATCH, DELETEThese APIs manage S3 buckets which are a container of objects.Endpoint: /protocols/s3/services/{svm.uuid}/users/{name}HTTP methods: GET, POST, PATCH, DELETEThese APIs manage S3 user accounts on the server. Buckets that are created are associate with a user.9.6.0(2019-07-16)Initial release of the libraryCopyright, trademarks, and feedbackCopyright informationCopyright © 2023 NetApp, Inc. All Rights Reserved. Printed in the U.S.No part of this document covered by copyright may be reproduced in any form or by any means—graphic,
electronic, or mechanical, including photocopying, recording, taping, or storage in an electronic
retrieval system—without prior written permission of the copyright owner.Software derived from copyrighted NetApp material is subject to the following license
and disclaimer:THIS SOFTWARE IS PROVIDED BY NETAPP "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES,
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
PARTICULAR PURPOSE, WHICH ARE HEREBY DISCLAIMED. IN NO EVENT SHALL NETAPP BE LIABLE FOR ANY
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)ARISING IN
ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.NetApp reserves the right to change any products described herein at any time, and without notice.
NetApp assumes no responsibility or liability arising from the use of products described herein,
except as expressly agreed to in writing by NetApp. The use or purchase of this product does not
convey a license under any patent rights, trademark rights, or any other intellectual property
rights of NetApp. The product described in this manual may be protected by one or more U.S.
patents, foreign patents, or pending applications.RESTRICTED RIGHTS LEGEND: Use, duplication,or disclosure by the government is subject to
restrictions as set forth in subparagraph (c)(1)(ii) of the Rights in Technical Data and
Computer Software clause at DFARS 252.277-7103 (October 1988) and FAR 52-227-19 (June 1987).Trademark informationNETAPP, the NETAPP logo, and the marks listed on the NetApp Trademarks page are trademarks of
NetApp, Inc. Other company and product names may be trademarks of their respective owners.http://www.netapp.com/us/legal/netapptmlist.aspxFeedbackIf you have questions about the library, suggestions, or find a bug, you may contact
by email.ng-ontap-rest-python-lib@netapp.comYou can help us to improve the quality of our documentation by sending us your feedback.
If you have suggestions for improving this document, send us your comments by email.doccomments@netapp.comTo help us direct your comments to the correct division, include in the subject line
the product name, version, and operating system.If you want to be notified automatically when production-level documentation is released
or important changes are made to existing production-level documents,
follow Twitter account @NetAppDoc.You can also contact us in the following ways:NetApp, Inc., 3060 Olsen Drive, San Jose, CA 95128 U.S.Telephone: +1 (408) 822-6000Fax: +1 (408) 822-4501Support telephone: +1 (888) 463-8277