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.
This example shows how to use a simple HTTP GET request to obtain some JSON data:
> curl --user ${USER}:${PASSWORD} -k -i https://zfssa.example.com:215/api/nas/v1/pools/gold
HTTP/1.1 200 OK
Date: Tue, 23 Jul 2013 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": "gold",
"usage": {
"available": 895468984832.0,
"total": 895500681216.0,
"dedupratio": 100,
"used": 31696384.0
},
"peer": "00000000-0000-0000-0000-000000000000",
"state": "online",
"owner": "tanana",
"asn": "314d252e-c42b-e844-dab1-a3bca680b563"
}
}
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://zfssa-host.example.com:215/api/user/v1/users <<JSON
> {"logname": "rest_user",
> "fullname": "REST User",
> "initial_password": "letmein"}
> JSON
HTTP/1.1 201 Created
Date: Tue, 23 Jul 2013 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": "DummyPassword",
"require_annotation": false,
"kiosk_mode": false,
"kiosk_screen": "status/dashboard",
"roles": ["basic"],
"exceptions": {},
"preferences": {
"href": "/api/user/v1/users/larry/preferences",
"locale": "C",
"login_screen": "status/dashboard",
"session_timeout": 15,
"advanced_analytics": false,
"keys": {}
}
}
}
This example modifies a user's session timeout:
% curl --user larry:letmein -3 -s -k -i -X PUT \
-H "Content-Type: application/json" -d @- \
https://tanana:215/api/appliance/v1/users/larry/preferences <<JSON
> {"session_timeout":60}
> JSON
HTTP/1.1 202 Accepted
Date: Wed, 24 Jul 2013 05:43:17 GMT
X-Zfs-Sa-Appliance-Api: 1.0
Content-Type: application/json
Content-Length: 0
{
"preferences": {
"href": "appliance/v1/users/larry/preferences",
"locale": "C",
"login_screen": "status/dashboard",
"session_timeout": 60,
"advanced_analytics": false,
"keys": {}
}
}
This command removes a user from the system:
curl --user ${USER}:${PASSWORD} -s -k -i -X DELETE https://tanana:215/api/appliance/v1/users/jschwartz
HTTP/1.1 204 No Content
Date: Tue, 23 Jul 2013 13:21:11 GMT
Server: WSGIServer/0.1 Python/2.6.4
X-Zfs-Sa-Appliance-Api: 1.0
Content-Length: 0