Curl Rest Client
Curl clients must use curl version 7.34.0 or higher. Two common CLI-based HTTP clients are wget and curl. This section shows several examples of using curl to make RESTful API calls, and similar functionality can be accomplished using wget.
Get Resource Data
This example shows how to use a simple HTTP GET request to obtain some JSON data:
$ curl --user ${USER}:${PASSWORD} -k \
-i https://hostname:215/api/storage/v1/pools/p1
HTTP/1.1 200 OK
Date: Tue, 23 Jul 2018 12:57:02 GMT
Server: WSGIServer/0.1 Python/2.6.4
Content-Length: 284
Content-Type: application/json
X-Zfs-Sa-Nas-Api: 1.0
{
"pool": {
"profile": "mirror",
"name": "p1",
"usage": {
"available": 895468984832.0,
"total": 895500681216.0,
"dedupratio": 100,
"used": 31696384.0
},
"peer": "00000000-0000-0000-0000-000000000000",
"state": "online",
"owner": "admin1",
"asn": "314d252e-c42b-e844-dab1-a3bca680b563"
}
}Create a New Resource
This example shows how to send JSON data in a request to create a new resource:
$ curl --user ${USER}:${PASSWORD} -s -k -i -X POST -d @- \ -H "Content-Type: application/json" \ https://zfs-storage.example.com:215/api/user/v1/users <<JSON > {"logname": "rest_user", > "fullname": "REST User", > "initial_password": "password"} > JSON HTTP/1.1 201 Created Date: Tue, 23 Jul 2018 13:07:37 GMT Server: WSGIServer/0.1 Python/2.6.4 X-Zfs-Sa-Appliance-Api: 1.0 Content-Type: application/json Content-Length: 357 { "user": { "logname": "rest_user", "fullname": "REST User", "initial_password": "password", "require_annotation": false, "kiosk_mode": false, "kiosk_screen": "status/dashboard", "roles": ["basic"], "exceptions": {}, "preferences": { "href": "/api/user/v1/users/admin1/preferences", "locale": "C", "login_screen": "status/dashboard", "session_timeout": 15, "cli_idle_timeout": -1, "advanced_analytics": false, "keys": {} } } }
Modify an Existing Resource
This example modifies a user's session timeout:
$ curl --user admin1:password -3 -s -k -i -X PUT \ -H "Content-Type: application/json" -d @- \ https://zfs-storage.example.com:215/api/appliance/v1/users/admin1/preferences <<JSON > {"session_timeout":60} > JSON HTTP/1.1 202 Accepted Date: Wed, 24 Jul 2018 05:43:17 GMT X-Zfs-Sa-Appliance-Api: 1.0 Content-Type: application/json Content-Length: 0 { "preferences": { "href": "appliance/v1/users/admin1/preferences", "locale": "C", "login_screen": "status/dashboard", "session_timeout": 60, "cli_idle_timeout": -1, "advanced_analytics": false, "keys": {} } }
Delete an Existing Resource
This command removes a user from the Oracle ZFS Storage Appliance system:
$ curl --user ${USER}:${PASSWORD} -s -k -i -X DELETE \ https://zfs-storage.example.com:215/api/appliance/v1/users/admin1 HTTP/1.1 204 No Content Date: Tue, 23 Jul 2018 13:21:11 GMT Server: WSGIServer/0.1 Python/2.6.4 X-Zfs-Sa-Appliance-Api: 1.0 Content-Length: 0