Logo
NAV Navigation
Shell HTTP JavaScript Ruby Python PHP Java Go

Nasuni Management Console (NMC) API v1.0.0

Scroll down for code samples, example requests and responses. Select a language for code samples from the tabs above or the mobile navigation menu.

A web-based API to monitor and configure the Nasuni service, emulating the Nasuni Management Console (NMC).

Token [your_auth_token]

Index

View top-level endpoints

Code samples

# You can also use wget
curl -X GET https://hostname/api/v1/ \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'
GET https://hostname/api/v1/ HTTP/1.1
Host: hostname
Accept: application/json
const headers = {
  'Accept':'application/json',
  'Authorization':'API_KEY'
};
fetch('https://hostname/api/v1/',
{
  method: 'GET',
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});
require 'rest-client'
require 'json'
headers = {
  'Accept' => 'application/json',
  'Authorization' => 'API_KEY'
}
result = RestClient.get 'https://hostname/api/v1/',
  params: {
  }, headers: headers
p JSON.parse(result)
import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'API_KEY'
}
r = requests.get('https://hostname/api/v1/', headers = headers)
print(r.json())
 'application/json',
    'Authorization' => 'API_KEY',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = array();
try {
    $response = $client->request('GET','https://hostname/api/v1/', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }
 // ...
URL obj = new URL("https://hostname/api/v1/");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
       "bytes"
       "net/http"
)
func main() {
    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"API_KEY"},
    }
    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://hostname/api/v1/", data)
    req.Header = headers
    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /

Example responses

200 Response

{
  "auth": "string",
  "volumes": "string",
  "filers": "string",
  "messages": "string",
  "notifications": "string"
}

Responses

Status Meaning Description Schema
200 OK Success Inline
401 Unauthorized Authentication failure Error
429 Too Many Requests Request throttled Error

Response Schema

Status Code 200

Name Type Required Restrictions Description
» auth string false none A link to the authentication resource.
» volumes string false none A link to the volumes resource.
» filers string false none A link to the filers resource.
» messages string false none A link to the messages resource.
» notifications string false none A link to the notifications resource.

Auth

Login

Code samples

# You can also use wget
curl -X POST https://hostname/api/v1/auth/login/ \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json'
POST https://hostname/api/v1/auth/login/ HTTP/1.1
Host: hostname
Content-Type: application/json
Accept: application/json
const inputBody = '{
  "username": "string",
  "password": "string"
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json'
};
fetch('https://hostname/api/v1/auth/login/',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});
require 'rest-client'
require 'json'
headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json'
}
result = RestClient.post 'https://hostname/api/v1/auth/login/',
  params: {
  }, headers: headers
p JSON.parse(result)
import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}
r = requests.post('https://hostname/api/v1/auth/login/', headers = headers)
print(r.json())
 'application/json',
    'Accept' => 'application/json',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = array();
try {
    $response = $client->request('POST','https://hostname/api/v1/auth/login/', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }
 // ...
URL obj = new URL("https://hostname/api/v1/auth/login/");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
       "bytes"
       "net/http"
)
func main() {
    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
    }
    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "https://hostname/api/v1/auth/login/", data)
    req.Header = headers
    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /auth/login/

Authenticate a user's credentials to get an access token.

Body parameter

{
  "username": "string",
  "password": "string"
}

Parameters

Name In Type Required Description
body body object false none
» username body string false none
» password body string false none

Example responses

200 Response

{
  "token": "string",
  "expires": "string"
}

Responses

Status Meaning Description Schema
200 OK Success AuthToken
400 Bad Request Validation Error ValidationError
401 Unauthorized Authentication failure Error
403 Forbidden Permission Denied Error
429 Too Many Requests Request throttled Error

Logout

Code samples

# You can also use wget
curl -X POST https://hostname/api/v1/auth/logout/ \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'
POST https://hostname/api/v1/auth/logout/ HTTP/1.1
Host: hostname
Accept: application/json
const headers = {
  'Accept':'application/json',
  'Authorization':'API_KEY'
};
fetch('https://hostname/api/v1/auth/logout/',
{
  method: 'POST',
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});
require 'rest-client'
require 'json'
headers = {
  'Accept' => 'application/json',
  'Authorization' => 'API_KEY'
}
result = RestClient.post 'https://hostname/api/v1/auth/logout/',
  params: {
  }, headers: headers
p JSON.parse(result)
import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'API_KEY'
}
r = requests.post('https://hostname/api/v1/auth/logout/', headers = headers)
print(r.json())
 'application/json',
    'Authorization' => 'API_KEY',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = array();
try {
    $response = $client->request('POST','https://hostname/api/v1/auth/logout/', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }
 // ...
URL obj = new URL("https://hostname/api/v1/auth/logout/");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
       "bytes"
       "net/http"
)
func main() {
    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"API_KEY"},
    }
    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "https://hostname/api/v1/auth/logout/", data)
    req.Header = headers
    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /auth/logout/

De-authenticate user access token.

Example responses

200 Response

{
  "logged_out": true
}

Responses

Status Meaning Description Schema
200 OK Success Inline
401 Unauthorized Authentication failure Error
429 Too Many Requests Request throttled Error

Response Schema

Status Code 200

Name Type Required Restrictions Description
» logged_out boolean false none If true, the user access token was successfully de-authenticated.

Filers

List all Filers

Code samples

# You can also use wget
curl -X GET https://hostname/api/v1/filers/ \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'
GET https://hostname/api/v1/filers/ HTTP/1.1
Host: hostname
Accept: application/json
const headers = {
  'Accept':'application/json',
  'Authorization':'API_KEY'
};
fetch('https://hostname/api/v1/filers/',
{
  method: 'GET',
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});
require 'rest-client'
require 'json'
headers = {
  'Accept' => 'application/json',
  'Authorization' => 'API_KEY'
}
result = RestClient.get 'https://hostname/api/v1/filers/',
  params: {
  }, headers: headers
p JSON.parse(result)
import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'API_KEY'
}
r = requests.get('https://hostname/api/v1/filers/', headers = headers)
print(r.json())
 'application/json',
    'Authorization' => 'API_KEY',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = array();
try {
    $response = $client->request('GET','https://hostname/api/v1/filers/', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }
 // ...
URL obj = new URL("https://hostname/api/v1/filers/");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
       "bytes"
       "net/http"
)
func main() {
    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"API_KEY"},
    }
    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://hostname/api/v1/filers/", data)
    req.Header = headers
    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /filers/

Parameters

Name In Type Required Description
limit query integer false The maximum number of objects to return
offset query integer false The index of the first object to return

Example responses

200 Response

{
  "items": [
    {
      "build": "string",
      "description": "string",
      "guid": "string",
      "management_state": "self",
      "serial_number": "string",
      "settings": {
        "alert_thresholds": {
          "cpu_alert_settings": {
            "cpu_enabled": true,
            "cpu_threshold": 0,
            "cpu_duration": 0
          },
          "memory_alert_settings": {
            "memory_enabled": true,
            "memory_threshold": 0,
            "memory_duration": 0
          },
          "snapshot_alert_settings": {
            "snapshot_enabled": true,
            "snapshot_duration": 0
          }
        },
        "autoupdate": {
          "hour": 0,
          "sun": true,
          "mon": true,
          "tue": true,
          "wed": true,
          "thu": true,
          "fri": true,
          "sat": true
        },
        "cache_reserved": {
          "reserved": "unset",
          "maxv": 0,
          "minv": 0
        },
        "cifs": {
          "aio_support": true,
          "deny_access": true,
          "fruit_support": true,
          "proto_level": "SMB3",
          "restrict_anonymous": true,
          "roundup_size": "string",
          "smb3": true,
          "smb_encrypt": true,
          "unix_ext": true,
          "veto_files": true
        },
        "ftp": {
          "masq_address": "string",
          "idle_timeout": 0,
          "anon_user": "string",
          "anon_group": "string",
          "protocols": [
            "string"
          ]
        },
        "gl_settings": {
          "degrade_to_read_locks": true
        },
        "mobile_service": {
          "limit_single_device": true,
          "additional_api_port": 0,
          "session_expiration_time": 0,
          "allowed_devices": [
            "OSX"
          ]
        },
        "qos": {
          "rules": [
            {
              "days": {
                "mon": true,
                "tue": true,
                "wed": true,
                "thu": true,
                "fri": true,
                "sat": true,
                "sun": true
              },
              "start": 0,
              "stop": 0,
              "limit": 0,
              "ingress_limit": 0
            }
          ]
        },
        "quota_report_schedule": {
          "schedules": [
            {
              "days": {
                "sun": true,
                "mon": true,
                "tue": true,
                "wed": true,
                "thu": true,
                "fri": true,
                "sat": true
              },
              "activation_hour": 0,
              "admin_report": true,
              "user_report": true,
              "threshold": 0
            }
          ]
        },
        "remote_support": {
          "connected": true,
          "enabled": true,
          "running": true,
          "timeout": 0
        },
        "snmp": {
          "v2_enabled": true,
          "v2_community": "string",
          "v3_enabled": true,
          "v3_username": "string",
          "v3_password": "string",
          "sys_location": "string",
          "sys_contact": "string",
          "trap_ips": [
            "string"
          ]
        },
        "time": {
          "ntpservers": [
            "string"
          ],
          "timezone": "string",
          "current_time_utc": "string"
        }
      },
      "status": {
        "offline": true,
        "osversion": "string",
        "platform": {
          "platform_name": "string",
          "cpu": {
            "model": "string",
            "frequency": 0,
            "sockets": 0,
            "cores": 0
          },
          "memory": "string",
          "cache_status": {
            "size": 0,
            "used": 0,
            "dirty": 0,
            "free": 0,
            "percent_used": 0
          }
        },
        "updates": {
          "updates_available": true,
          "current_version": "string",
          "new_version": "string"
        },
        "uptime": 0
      },
      "links": {
        "self": {
          "href": "string",
          "method": "string"
        },
        "cifsclients": {
          "href": "string",
          "method": "string"
        },
        "cifslocks": {
          "href": "string",
          "method": "string"
        },
        "ftpclients": {
          "href": "string",
          "method": "string"
        }
      }
    }
  ],
  "href": "string",
  "limit": 0,
  "next": "string",
  "offset": 0,
  "previous": "string",
  "total": 0
}

Responses

Status Meaning Description Schema
200 OK OK - Return status and configuration for all managed Filers. Inline
401 Unauthorized Unauthorized Inline
429 Too Many Requests Request throttled Error

Response Schema

Enumerated Values

Property Value
management_state self
management_state nmc
management_state pending_self
management_state pending_nmc
reserved unset
reserved 5
reserved 10
reserved 15
reserved 20
reserved 25
reserved 30
reserved 35
reserved 40
reserved 45
reserved 50
reserved 55
reserved 60
reserved 65
reserved 70
reserved 75
reserved 80
reserved 85
reserved 90
proto_level SMB3
proto_level SMB2
proto_level

Status Code 401

Name Type Required Restrictions Description
» detail string false none The reason why the agent couldn't be authorized.

Enumerated Values

Property Value
detail Authentication credentials were not provided.
detail Invalid token.

Get a Filer

Code samples

# You can also use wget
curl -X GET https://hostname/api/v1/filers/{filer_serial}/ \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'
GET https://hostname/api/v1/filers/{filer_serial}/ HTTP/1.1
Host: hostname
Accept: application/json
const headers = {
  'Accept':'application/json',
  'Authorization':'API_KEY'
};
fetch('https://hostname/api/v1/filers/{filer_serial}/',
{
  method: 'GET',
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});
require 'rest-client'
require 'json'
headers = {
  'Accept' => 'application/json',
  'Authorization' => 'API_KEY'
}
result = RestClient.get 'https://hostname/api/v1/filers/{filer_serial}/',
  params: {
  }, headers: headers
p JSON.parse(result)
import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'API_KEY'
}
r = requests.get('https://hostname/api/v1/filers/{filer_serial}/', headers = headers)
print(r.json())
 'application/json',
    'Authorization' => 'API_KEY',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = array();
try {
    $response = $client->request('GET','https://hostname/api/v1/filers/{filer_serial}/', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }
 // ...
URL obj = new URL("https://hostname/api/v1/filers/{filer_serial}/");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
       "bytes"
       "net/http"
)
func main() {
    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"API_KEY"},
    }
    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://hostname/api/v1/filers/{filer_serial}/", data)
    req.Header = headers
    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /filers/{filer_serial}/

Parameters

Name In Type Required Description
filer_serial path string true Filer object identifier

Example responses

200 Response

{
  "build": "string",
  "description": "string",
  "guid": "string",
  "management_state": "self",
  "serial_number": "string",
  "settings": {
    "alert_thresholds": {
      "cpu_alert_settings": {
        "cpu_enabled": true,
        "cpu_threshold": 0,
        "cpu_duration": 0
      },
      "memory_alert_settings": {
        "memory_enabled": true,
        "memory_threshold": 0,
        "memory_duration": 0
      },
      "snapshot_alert_settings": {
        "snapshot_enabled": true,
        "snapshot_duration": 0
      }
    },
    "autoupdate": {
      "hour": 0,
      "sun": true,
      "mon": true,
      "tue": true,
      "wed": true,
      "thu": true,
      "fri": true,
      "sat": true
    },
    "cache_reserved": {
      "reserved": "unset",
      "maxv": 0,
      "minv": 0
    },
    "cifs": {
      "aio_support": true,
      "deny_access": true,
      "fruit_support": true,
      "proto_level": "SMB3",
      "restrict_anonymous": true,
      "roundup_size": "string",
      "smb3": true,
      "smb_encrypt": true,
      "unix_ext": true,
      "veto_files": true
    },
    "ftp": {
      "masq_address": "string",
      "idle_timeout": 0,
      "anon_user": "string",
      "anon_group": "string",
      "protocols": [
        "string"
      ]
    },
    "gl_settings": {
      "degrade_to_read_locks": true
    },
    "mobile_service": {
      "limit_single_device": true,
      "additional_api_port": 0,
      "session_expiration_time": 0,
      "allowed_devices": [
        "OSX"
      ]
    },
    "qos": {
      "rules": [
        {
          "days": {
            "mon": true,
            "tue": true,
            "wed": true,
            "thu": true,
            "fri": true,
            "sat": true,
            "sun": true
          },
          "start": 0,
          "stop": 0,
          "limit": 0,
          "ingress_limit": 0
        }
      ]
    },
    "quota_report_schedule": {
      "schedules": [
        {
          "days": {
            "sun": true,
            "mon": true,
            "tue": true,
            "wed": true,
            "thu": true,
            "fri": true,
            "sat": true
          },
          "activation_hour": 0,
          "admin_report": true,
          "user_report": true,
          "threshold": 0
        }
      ]
    },
    "remote_support": {
      "connected": true,
      "enabled": true,
      "running": true,
      "timeout": 0
    },
    "snmp": {
      "v2_enabled": true,
      "v2_community": "string",
      "v3_enabled": true,
      "v3_username": "string",
      "v3_password": "string",
      "sys_location": "string",
      "sys_contact": "string",
      "trap_ips": [
        "string"
      ]
    },
    "time": {
      "ntpservers": [
        "string"
      ],
      "timezone": "string",
      "current_time_utc": "string"
    }
  },
  "status": {
    "offline": true,
    "osversion": "string",
    "platform": {
      "platform_name": "string",
      "cpu": {
        "model": "string",
        "frequency": 0,
        "sockets": 0,
        "cores": 0
      },
      "memory": "string",
      "cache_status": {
        "size": 0,
        "used": 0,
        "dirty": 0,
        "free": 0,
        "percent_used": 0
      }
    },
    "updates": {
      "updates_available": true,
      "current_version": "string",
      "new_version": "string"
    },
    "uptime": 0
  },
  "links": {
    "self": {
      "href": "string",
      "method": "string"
    },
    "cifsclients": {
      "href": "string",
      "method": "string"
    },
    "cifslocks": {
      "href": "string",
      "method": "string"
    },
    "ftpclients": {
      "href": "string",
      "method": "string"
    }
  }
}

Responses

Status Meaning Description Schema
200 OK OK - Return status and configuration for the specified managed Filer. Filer
401 Unauthorized Authentication failure Error
404 Not Found Resource Not Found Error
429 Too Many Requests Request throttled Error

Retrieve a list of all Filers, each with a list of CIFS clients connected to it.

Code samples

# You can also use wget
curl -X GET https://hostname/api/v1/filers/cifsclients/ \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'
GET https://hostname/api/v1/filers/cifsclients/ HTTP/1.1
Host: hostname
Accept: application/json
const headers = {
  'Accept':'application/json',
  'Authorization':'API_KEY'
};
fetch('https://hostname/api/v1/filers/cifsclients/',
{
  method: 'GET',
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});
require 'rest-client'
require 'json'
headers = {
  'Accept' => 'application/json',
  'Authorization' => 'API_KEY'
}
result = RestClient.get 'https://hostname/api/v1/filers/cifsclients/',
  params: {
  }, headers: headers
p JSON.parse(result)
import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'API_KEY'
}
r = requests.get('https://hostname/api/v1/filers/cifsclients/', headers = headers)
print(r.json())
 'application/json',
    'Authorization' => 'API_KEY',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = array();
try {
    $response = $client->request('GET','https://hostname/api/v1/filers/cifsclients/', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }
 // ...
URL obj = new URL("https://hostname/api/v1/filers/cifsclients/");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
       "bytes"
       "net/http"
)
func main() {
    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"API_KEY"},
    }
    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://hostname/api/v1/filers/cifsclients/", data)
    req.Header = headers
    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /filers/cifsclients/

Parameters

Name In Type Required Description
limit query integer false The maximum number of objects to return
offset query integer false The index of the first object to return

Example responses

200 Response

{
  "items": [
    {
      "serial_number": "string",
      "description": "string",
      "cifs_clients": [
        {
          "share": "string",
          "user": "string",
          "client": "string",
          "client_name": "string"
        }
      ],
      "links": {
        "self": {
          "href": "string",
          "method": "string"
        },
        "filer": {
          "href": "string",
          "method": "string"
        }
      }
    }
  ],
  "href": "string",
  "limit": 0,
  "next": "string",
  "offset": 0,
  "previous": "string",
  "total": 0
}

Responses

Status Meaning Description Schema
200 OK OK - Return a list of Filers with lists of their CIFS clients Inline
401 Unauthorized Authentication failure Error
404 Not Found Resource Not Found Error
429 Too Many Requests Request throttled Error

Response Schema

Retrieve a Filer with a list of CIFS clients connected to it.

Code samples

# You can also use wget
curl -X GET https://hostname/api/v1/filers/{filer_serial}/cifsclients/ \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'
GET https://hostname/api/v1/filers/{filer_serial}/cifsclients/ HTTP/1.1
Host: hostname
Accept: application/json
const headers = {
  'Accept':'application/json',
  'Authorization':'API_KEY'
};
fetch('https://hostname/api/v1/filers/{filer_serial}/cifsclients/',
{
  method: 'GET',
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});
require 'rest-client'
require 'json'
headers = {
  'Accept' => 'application/json',
  'Authorization' => 'API_KEY'
}
result = RestClient.get 'https://hostname/api/v1/filers/{filer_serial}/cifsclients/',
  params: {
  }, headers: headers
p JSON.parse(result)
import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'API_KEY'
}
r = requests.get('https://hostname/api/v1/filers/{filer_serial}/cifsclients/', headers = headers)
print(r.json())
 'application/json',
    'Authorization' => 'API_KEY',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = array();
try {
    $response = $client->request('GET','https://hostname/api/v1/filers/{filer_serial}/cifsclients/', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }
 // ...
URL obj = new URL("https://hostname/api/v1/filers/{filer_serial}/cifsclients/");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
       "bytes"
       "net/http"
)
func main() {
    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"API_KEY"},
    }
    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://hostname/api/v1/filers/{filer_serial}/cifsclients/", data)
    req.Header = headers
    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /filers/{filer_serial}/cifsclients/

Parameters

Name In Type Required Description
filer_serial path string true Filer object identifier

Example responses

200 Response

{
  "serial_number": "string",
  "description": "string",
  "cifs_clients": [
    {
      "share": "string",
      "user": "string",
      "client": "string",
      "client_name": "string"
    }
  ],
  "links": {
    "self": {
      "href": "string",
      "method": "string"
    },
    "filer": {
      "href": "string",
      "method": "string"
    }
  }
}

Responses

Status Meaning Description Schema
200 OK OK - Return the specified Filer with a list of its CIFS clients FilerCIFSClients
401 Unauthorized Authentication failure Error
404 Not Found Resource Not Found Error
429 Too Many Requests Request throttled Error

Retrieve a list of all Filers, each with a list of CIFS file locks that clients have on its shares.

Code samples

# You can also use wget
curl -X GET https://hostname/api/v1/filers/cifslocks/ \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'
GET https://hostname/api/v1/filers/cifslocks/ HTTP/1.1
Host: hostname
Accept: application/json
const headers = {
  'Accept':'application/json',
  'Authorization':'API_KEY'
};
fetch('https://hostname/api/v1/filers/cifslocks/',
{
  method: 'GET',
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});
require 'rest-client'
require 'json'
headers = {
  'Accept' => 'application/json',
  'Authorization' => 'API_KEY'
}
result = RestClient.get 'https://hostname/api/v1/filers/cifslocks/',
  params: {
  }, headers: headers
p JSON.parse(result)
import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'API_KEY'
}
r = requests.get('https://hostname/api/v1/filers/cifslocks/', headers = headers)
print(r.json())
 'application/json',
    'Authorization' => 'API_KEY',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = array();
try {
    $response = $client->request('GET','https://hostname/api/v1/filers/cifslocks/', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }
 // ...
URL obj = new URL("https://hostname/api/v1/filers/cifslocks/");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
       "bytes"
       "net/http"
)
func main() {
    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"API_KEY"},
    }
    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://hostname/api/v1/filers/cifslocks/", data)
    req.Header = headers
    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /filers/cifslocks/

Parameters

Name In Type Required Description
limit query integer false The maximum number of objects to return
offset query integer false The index of the first object to return

Example responses

200 Response

{
  "items": [
    {
      "serial_number": "string",
      "description": "string",
      "cifs_locks": [
        {
          "share": "string",
          "file_path": "string",
          "type": "string",
          "user": "string",
          "client": "string",
          "client_name": "string"
        }
      ],
      "links": {
        "self": {
          "href": "string",
          "method": "string"
        },
        "filer": {
          "href": "string",
          "method": "string"
        }
      }
    }
  ],
  "href": "string",
  "limit": 0,
  "next": "string",
  "offset": 0,
  "previous": "string",
  "total": 0
}

Responses

Status Meaning Description Schema
200 OK OK - Return a list of Filers with lists of their CIFS file locks Inline
401 Unauthorized Authentication failure Error
404 Not Found Resource Not Found Error
429 Too Many Requests Request throttled Error

Response Schema

Retrieve a Filer with a list of CIFS file locks that clients have on its shares.

Code samples

# You can also use wget
curl -X GET https://hostname/api/v1/filers/{filer_serial}/cifslocks/ \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'
GET https://hostname/api/v1/filers/{filer_serial}/cifslocks/ HTTP/1.1
Host: hostname
Accept: application/json
const headers = {
  'Accept':'application/json',
  'Authorization':'API_KEY'
};
fetch('https://hostname/api/v1/filers/{filer_serial}/cifslocks/',
{
  method: 'GET',
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});
require 'rest-client'
require 'json'
headers = {
  'Accept' => 'application/json',
  'Authorization' => 'API_KEY'
}
result = RestClient.get 'https://hostname/api/v1/filers/{filer_serial}/cifslocks/',
  params: {
  }, headers: headers
p JSON.parse(result)
import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'API_KEY'
}
r = requests.get('https://hostname/api/v1/filers/{filer_serial}/cifslocks/', headers = headers)
print(r.json())
 'application/json',
    'Authorization' => 'API_KEY',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = array();
try {
    $response = $client->request('GET','https://hostname/api/v1/filers/{filer_serial}/cifslocks/', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }
 // ...
URL obj = new URL("https://hostname/api/v1/filers/{filer_serial}/cifslocks/");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
       "bytes"
       "net/http"
)
func main() {
    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"API_KEY"},
    }
    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://hostname/api/v1/filers/{filer_serial}/cifslocks/", data)
    req.Header = headers
    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /filers/{filer_serial}/cifslocks/

Parameters

Name In Type Required Description
filer_serial path string true Filer object identifier

Example responses

200 Response

{
  "serial_number": "string",
  "description": "string",
  "cifs_locks": [
    {
      "share": "string",
      "file_path": "string",
      "type": "string",
      "user": "string",
      "client": "string",
      "client_name": "string"
    }
  ],
  "links": {
    "self": {
      "href": "string",
      "method": "string"
    },
    "filer": {
      "href": "string",
      "method": "string"
    }
  }
}

Responses

Status Meaning Description Schema
200 OK OK - Return the specified Filer with a list of its CIFS file locks FilerCIFSLocks
401 Unauthorized Authentication failure Error
404 Not Found Resource Not Found Error
429 Too Many Requests Request throttled Error

Retrieve a list of all Filers, each with a list of FTP clients connected to it.

Code samples

# You can also use wget
curl -X GET https://hostname/api/v1/filers/ftpclients/ \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'
GET https://hostname/api/v1/filers/ftpclients/ HTTP/1.1
Host: hostname
Accept: application/json
const headers = {
  'Accept':'application/json',
  'Authorization':'API_KEY'
};
fetch('https://hostname/api/v1/filers/ftpclients/',
{
  method: 'GET',
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});
require 'rest-client'
require 'json'
headers = {
  'Accept' => 'application/json',
  'Authorization' => 'API_KEY'
}
result = RestClient.get 'https://hostname/api/v1/filers/ftpclients/',
  params: {
  }, headers: headers
p JSON.parse(result)
import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'API_KEY'
}
r = requests.get('https://hostname/api/v1/filers/ftpclients/', headers = headers)
print(r.json())
 'application/json',
    'Authorization' => 'API_KEY',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = array();
try {
    $response = $client->request('GET','https://hostname/api/v1/filers/ftpclients/', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }
 // ...
URL obj = new URL("https://hostname/api/v1/filers/ftpclients/");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
       "bytes"
       "net/http"
)
func main() {
    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"API_KEY"},
    }
    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://hostname/api/v1/filers/ftpclients/", data)
    req.Header = headers
    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /filers/ftpclients/

Parameters

Name In Type Required Description
limit query integer false The maximum number of objects to return
offset query integer false The index of the first object to return

Example responses

200 Response

{
  "items": [
    {
      "serial_number": "string",
      "description": "string",
      "ftp_clients": [
        {
          "user": "string",
          "client": "string",
          "protocol": "ftp"
        }
      ],
      "links": {
        "self": {
          "href": "string",
          "method": "string"
        },
        "filer": {
          "href": "string",
          "method": "string"
        }
      }
    }
  ],
  "href": "string",
  "limit": 0,
  "next": "string",
  "offset": 0,
  "previous": "string",
  "total": 0
}

Responses

Status Meaning Description Schema
200 OK OK - Return a list of Filers with lists of their FTP clients Inline
401 Unauthorized Authentication failure Error
404 Not Found Resource Not Found Error
429 Too Many Requests Request throttled Error

Response Schema

Enumerated Values

Property Value
protocol ftp
protocol sftp

Retrieve a Filer with a list of FTP clients connected to it.

Code samples

# You can also use wget
curl -X GET https://hostname/api/v1/filers/{filer_serial}/ftpclients/ \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'
GET https://hostname/api/v1/filers/{filer_serial}/ftpclients/ HTTP/1.1
Host: hostname
Accept: application/json
const headers = {
  'Accept':'application/json',
  'Authorization':'API_KEY'
};
fetch('https://hostname/api/v1/filers/{filer_serial}/ftpclients/',
{
  method: 'GET',
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});
require 'rest-client'
require 'json'
headers = {
  'Accept' => 'application/json',
  'Authorization' => 'API_KEY'
}
result = RestClient.get 'https://hostname/api/v1/filers/{filer_serial}/ftpclients/',
  params: {
  }, headers: headers
p JSON.parse(result)
import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'API_KEY'
}
r = requests.get('https://hostname/api/v1/filers/{filer_serial}/ftpclients/', headers = headers)
print(r.json())
 'application/json',
    'Authorization' => 'API_KEY',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = array();
try {
    $response = $client->request('GET','https://hostname/api/v1/filers/{filer_serial}/ftpclients/', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }
 // ...
URL obj = new URL("https://hostname/api/v1/filers/{filer_serial}/ftpclients/");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
       "bytes"
       "net/http"
)
func main() {
    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"API_KEY"},
    }
    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://hostname/api/v1/filers/{filer_serial}/ftpclients/", data)
    req.Header = headers
    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /filers/{filer_serial}/ftpclients/

Parameters

Name In Type Required Description
filer_serial path string true Filer object identifier

Example responses

200 Response

{
  "serial_number": "string",
  "description": "string",
  "ftp_clients": [
    {
      "user": "string",
      "client": "string",
      "protocol": "ftp"
    }
  ],
  "links": {
    "self": {
      "href": "string",
      "method": "string"
    },
    "filer": {
      "href": "string",
      "method": "string"
    }
  }
}

Responses

Status Meaning Description Schema
200 OK OK - Return the specified Filer with a list of its FTP clients FilerFTPClients
401 Unauthorized Authentication failure Error
404 Not Found Resource Not Found Error
429 Too Many Requests Request throttled Error

Volumes

List all volumes

Code samples

# You can also use wget
curl -X GET https://hostname/api/v1/volumes/ \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'
GET https://hostname/api/v1/volumes/ HTTP/1.1
Host: hostname
Accept: application/json
const headers = {
  'Accept':'application/json',
  'Authorization':'API_KEY'
};
fetch('https://hostname/api/v1/volumes/',
{
  method: 'GET',
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});
require 'rest-client'
require 'json'
headers = {
  'Accept' => 'application/json',
  'Authorization' => 'API_KEY'
}
result = RestClient.get 'https://hostname/api/v1/volumes/',
  params: {
  }, headers: headers
p JSON.parse(result)
import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'API_KEY'
}
r = requests.get('https://hostname/api/v1/volumes/', headers = headers)
print(r.json())
 'application/json',
    'Authorization' => 'API_KEY',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = array();
try {
    $response = $client->request('GET','https://hostname/api/v1/volumes/', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }
 // ...
URL obj = new URL("https://hostname/api/v1/volumes/");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
       "bytes"
       "net/http"
)
func main() {
    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"API_KEY"},
    }
    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://hostname/api/v1/volumes/", data)
    req.Header = headers
    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /volumes/

Parameters

Name In Type Required Description
limit query integer false The maximum number of objects to return
offset query integer false The index of the first object to return

Example responses

200 Response

{
  "href": "string",
  "limit": 0,
  "next": "string",
  "offset": 0,
  "previous": "string",
  "total": 0
}

Responses

Status Meaning Description Schema
200 OK Success Inline
401 Unauthorized Authentication failure Error
429 Too Many Requests Request throttled Error

Response Schema

Enumerated Values

Property Value
permissions_policy NTFS60
permissions_policy NTFSONLY710
permissions_policy POSIX60
permissions_policy MODEBITS60
permissions_policy PUBLICMODE60
access_permissions readonly
access_permissions readwrite
access_permissions custom
permission disabled
permission readonly
permission readwrite
retain INFINITE
retain BY_COUNT
retain BY_AGE
policy ads
policy ldapds
policy public

Get a volume

Code samples

# You can also use wget
curl -X GET https://hostname/api/v1/volumes/{volume_guid}/ \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'
GET https://hostname/api/v1/volumes/{volume_guid}/ HTTP/1.1
Host: hostname
Accept: application/json
const headers = {
  'Accept':'application/json',
  'Authorization':'API_KEY'
};
fetch('https://hostname/api/v1/volumes/{volume_guid}/',
{
  method: 'GET',
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});
require 'rest-client'
require 'json'
headers = {
  'Accept' => 'application/json',
  'Authorization' => 'API_KEY'
}
result = RestClient.get 'https://hostname/api/v1/volumes/{volume_guid}/',
  params: {
  }, headers: headers
p JSON.parse(result)
import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'API_KEY'
}
r = requests.get('https://hostname/api/v1/volumes/{volume_guid}/', headers = headers)
print(r.json())
 'application/json',
    'Authorization' => 'API_KEY',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = array();
try {
    $response = $client->request('GET','https://hostname/api/v1/volumes/{volume_guid}/', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }
 // ...
URL obj = new URL("https://hostname/api/v1/volumes/{volume_guid}/");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
       "bytes"
       "net/http"
)
func main() {
    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"API_KEY"},
    }
    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://hostname/api/v1/volumes/{volume_guid}/", data)
    req.Header = headers
    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /volumes/{volume_guid}/

Parameters

Name In Type Required Description
volume_guid path string true Volume identifier

Example responses

200 Response

{
  "guid": "string",
  "filer_serial_number": "string",
  "name": "string",
  "nmc_managed": true,
  "protocols": {
    "permissions_policy": "NTFS60",
    "protocols": [
      "CIFS"
    ]
  },
  "antivirus_service": {
    "enabled": true,
    "days": {
      "sun": true,
      "mon": true,
      "tue": true,
      "wed": true,
      "thu": true,
      "fri": true,
      "sat": true
    },
    "check_files_immediately": true,
    "allday": true,
    "start": 0,
    "stop": 0,
    "frequency": 0
  },
  "remote_access": {
    "enabled": true,
    "access_permissions": "readonly",
    "filer_access": [
      {
        "filer_serial_number": "string",
        "permission": "disabled"
      }
    ]
  },
  "quota": 0,
  "case_sensitive": true,
  "snapshot_retention": {
    "retain": "INFINITE",
    "number": 0,
    "years": 0,
    "months": 0,
    "days": 0
  },
  "cloud_io": {
    "dedupe": true,
    "compression": true,
    "chunk_size": 0
  },
  "provider": {
    "cred_id": "string",
    "name": "string",
    "shortname": "string",
    "location": "string"
  },
  "auth": {
    "authenticated_access": true,
    "policy": "ads",
    "policy_label": "string"
  },
  "links": {
    "self": {
      "href": "string",
      "method": "string"
    },
    "filer": {
      "href": "string",
      "method": "string"
    },
    "filer_settings": {
      "href": "string",
      "method": "string"
    },
    "filer_connections": {
      "href": "string",
      "method": "string"
    },
    "shares": {
      "href": "string",
      "method": "string"
    },
    "exports": {
      "href": "string",
      "method": "string"
    },
    "ftp_directories": {
      "href": "string",
      "method": "string"
    },
    "antivirus_violations": {
      "href": "string",
      "method": "string"
    }
  }
}

Responses

Status Meaning Description Schema
200 OK Success Volume
401 Unauthorized Authentication failure Error
429 Too Many Requests Request throttled Error

List filer specific settings of a volume.

Code samples

# You can also use wget
curl -X GET https://hostname/api/v1/volumes/{volume_guid}/filers/ \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'
GET https://hostname/api/v1/volumes/{volume_guid}/filers/ HTTP/1.1
Host: hostname
Accept: application/json
const headers = {
  'Accept':'application/json',
  'Authorization':'API_KEY'
};
fetch('https://hostname/api/v1/volumes/{volume_guid}/filers/',
{
  method: 'GET',
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});
require 'rest-client'
require 'json'
headers = {
  'Accept' => 'application/json',
  'Authorization' => 'API_KEY'
}
result = RestClient.get 'https://hostname/api/v1/volumes/{volume_guid}/filers/',
  params: {
  }, headers: headers
p JSON.parse(result)
import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'API_KEY'
}
r = requests.get('https://hostname/api/v1/volumes/{volume_guid}/filers/', headers = headers)
print(r.json())
 'application/json',
    'Authorization' => 'API_KEY',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = array();
try {
    $response = $client->request('GET','https://hostname/api/v1/volumes/{volume_guid}/filers/', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }
 // ...
URL obj = new URL("https://hostname/api/v1/volumes/{volume_guid}/filers/");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
       "bytes"
       "net/http"
)
func main() {
    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"API_KEY"},
    }
    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://hostname/api/v1/volumes/{volume_guid}/filers/", data)
    req.Header = headers
    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /volumes/{volume_guid}/filers/

Parameters

Name In Type Required Description
volume_guid path string true Volume identifier
limit query integer false The maximum number of objects to return
offset query integer false The index of the first object to return

Example responses

200 Response

{
  "href": "string",
  "limit": 0,
  "next": "string",
  "offset": 0,
  "previous": "string",
  "total": 0
}

Responses

Status Meaning Description Schema
200 OK Success Inline
401 Unauthorized Authentication failure Error
429 Too Many Requests Request throttled Error

Response Schema

Enumerated Values

Property Value
type master
type remote
snapshot_status idle
snapshot_status pending
snapshot_status in_progress

Get volume settings for a specific filer.

Code samples

# You can also use wget
curl -X GET https://hostname/api/v1/volumes/{volume_guid}/filers/{filer_serial}/ \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'
GET https://hostname/api/v1/volumes/{volume_guid}/filers/{filer_serial}/ HTTP/1.1
Host: hostname
Accept: application/json
const headers = {
  'Accept':'application/json',
  'Authorization':'API_KEY'
};
fetch('https://hostname/api/v1/volumes/{volume_guid}/filers/{filer_serial}/',
{
  method: 'GET',
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});
require 'rest-client'
require 'json'
headers = {
  'Accept' => 'application/json',
  'Authorization' => 'API_KEY'
}
result = RestClient.get 'https://hostname/api/v1/volumes/{volume_guid}/filers/{filer_serial}/',
  params: {
  }, headers: headers
p JSON.parse(result)
import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'API_KEY'
}
r = requests.get('https://hostname/api/v1/volumes/{volume_guid}/filers/{filer_serial}/', headers = headers)
print(r.json())
 'application/json',
    'Authorization' => 'API_KEY',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = array();
try {
    $response = $client->request('GET','https://hostname/api/v1/volumes/{volume_guid}/filers/{filer_serial}/', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }
 // ...
URL obj = new URL("https://hostname/api/v1/volumes/{volume_guid}/filers/{filer_serial}/");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
       "bytes"
       "net/http"
)
func main() {
    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"API_KEY"},
    }
    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://hostname/api/v1/volumes/{volume_guid}/filers/{filer_serial}/", data)
    req.Header = headers
    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /volumes/{volume_guid}/filers/{filer_serial}/

Parameters

Name In Type Required Description
volume_guid path string true Volume identifier
filer_serial path string true Filer object identifier

Example responses

200 Response

{
  "guid": "string",
  "filer_serial_number": "string",
  "name": "string",
  "type": "master",
  "sync_schedule": {
    "days": {
      "sun": true,
      "mon": true,
      "tue": true,
      "wed": true,
      "thu": true,
      "fri": true,
      "sat": true
    },
    "allday": true,
    "start": 0,
    "stop": 0,
    "frequency": 0,
    "auto_cache_allowed": true,
    "auto_cache_min_file_size": 0
  },
  "snapshot_schedule": {
    "days": {
      "sun": true,
      "mon": true,
      "tue": true,
      "wed": true,
      "thu": true,
      "fri": true,
      "sat": true
    },
    "allday": true,
    "start": 0,
    "stop": 0,
    "frequency": 0
  },
  "snapshot_access": true,
  "file_alerts_service": {
    "enabled": true,
    "patterns": [
      "string"
    ]
  },
  "auditing": {
    "enabled": true,
    "events": {
      "create": true,
      "delete": true,
      "rename": true,
      "close": true,
      "security": true,
      "metadata": true,
      "write": true,
      "read": true
    },
    "logs": {
      "write_audit_logs": true,
      "prune_audit_logs": true,
      "days_to_keep": 0,
      "exclude_by_default": true,
      "include_takes_priority": true,
      "include_patterns": [
        "string"
      ],
      "exclude_patterns": [
        "string"
      ]
    }
  },
  "status": {
    "accessible_data": 0,
    "data_not_yet_protected": 0,
    "first_snapshot": "string",
    "last_snapshot": "string",
    "last_snapshot_start": "string",
    "last_snapshot_end": "string",
    "last_snapshot_version": 0,
    "snapshot_status": "idle",
    "snapshot_percent": 0,
    "ftp_dir_count": 0,
    "export_count": 0,
    "share_count": 0
  },
  "links": {
    "self": {
      "href": "string",
      "method": "string"
    },
    "shares": {
      "href": "string",
      "method": "string"
    },
    "exports": {
      "href": "string",
      "method": "string"
    },
    "ftp_directories": {
      "href": "string",
      "method": "string"
    },
    "antivirus_violations": {
      "href": "string",
      "method": "string"
    }
  }
}

Responses

Status Meaning Description Schema
200 OK Success VolumeFilerSetting
401 Unauthorized Authentication failure Error
429 Too Many Requests Request throttled Error

List all shares across all volumes and filers.

Code samples

# You can also use wget
curl -X GET https://hostname/api/v1/volumes/filers/shares/ \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'
GET https://hostname/api/v1/volumes/filers/shares/ HTTP/1.1
Host: hostname
Accept: application/json
const headers = {
  'Accept':'application/json',
  'Authorization':'API_KEY'
};
fetch('https://hostname/api/v1/volumes/filers/shares/',
{
  method: 'GET',
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});
require 'rest-client'
require 'json'
headers = {
  'Accept' => 'application/json',
  'Authorization' => 'API_KEY'
}
result = RestClient.get 'https://hostname/api/v1/volumes/filers/shares/',
  params: {
  }, headers: headers
p JSON.parse(result)
import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'API_KEY'
}
r = requests.get('https://hostname/api/v1/volumes/filers/shares/', headers = headers)
print(r.json())
 'application/json',
    'Authorization' => 'API_KEY',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = array();
try {
    $response = $client->request('GET','https://hostname/api/v1/volumes/filers/shares/', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }
 // ...
URL obj = new URL("https://hostname/api/v1/volumes/filers/shares/");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
       "bytes"
       "net/http"
)
func main() {
    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"API_KEY"},
    }
    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://hostname/api/v1/volumes/filers/shares/", data)
    req.Header = headers
    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /volumes/filers/shares/

Parameters

Name In Type Required Description
limit query integer false The maximum number of objects to return
offset query integer false The index of the first object to return

Example responses

200 Response

{
  "href": "string",
  "limit": 0,
  "next": "string",
  "offset": 0,
  "previous": "string",
  "total": 0
}

Responses

Status Meaning Description Schema
200 OK Success Inline
401 Unauthorized Authentication failure Error
429 Too Many Requests Request throttled Error

Response Schema

Enumerated Values

Property Value
homedir_support 0
homedir_support 2
smb_encrypt
smb_encrypt desired
smb_encrypt required

List all shares of a volume.

Code samples

# You can also use wget
curl -X GET https://hostname/api/v1/volumes/{volume_guid}/filers/shares/ \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'
GET https://hostname/api/v1/volumes/{volume_guid}/filers/shares/ HTTP/1.1
Host: hostname
Accept: application/json
const headers = {
  'Accept':'application/json',
  'Authorization':'API_KEY'
};
fetch('https://hostname/api/v1/volumes/{volume_guid}/filers/shares/',
{
  method: 'GET',
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});
require 'rest-client'
require 'json'
headers = {
  'Accept' => 'application/json',
  'Authorization' => 'API_KEY'
}
result = RestClient.get 'https://hostname/api/v1/volumes/{volume_guid}/filers/shares/',
  params: {
  }, headers: headers
p JSON.parse(result)
import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'API_KEY'
}
r = requests.get('https://hostname/api/v1/volumes/{volume_guid}/filers/shares/', headers = headers)
print(r.json())
 'application/json',
    'Authorization' => 'API_KEY',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = array();
try {
    $response = $client->request('GET','https://hostname/api/v1/volumes/{volume_guid}/filers/shares/', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }
 // ...
URL obj = new URL("https://hostname/api/v1/volumes/{volume_guid}/filers/shares/");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
       "bytes"
       "net/http"
)
func main() {
    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"API_KEY"},
    }
    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://hostname/api/v1/volumes/{volume_guid}/filers/shares/", data)
    req.Header = headers
    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /volumes/{volume_guid}/filers/shares/

Parameters

Name In Type Required Description
volume_guid path string true Volume identifier
limit query integer false The maximum number of objects to return
offset query integer false The index of the first object to return

Example responses

200 Response

{
  "href": "string",
  "limit": 0,
  "next": "string",
  "offset": 0,
  "previous": "string",
  "total": 0
}

Responses

Status Meaning Description Schema
200 OK Success Inline
401 Unauthorized Authentication failure Error
429 Too Many Requests Request throttled Error

Response Schema

Enumerated Values

Property Value
homedir_support 0
homedir_support 2
smb_encrypt
smb_encrypt desired
smb_encrypt required

List all shares of a volume on a specific filer.

Code samples

# You can also use wget
curl -X GET https://hostname/api/v1/volumes/{volume_guid}/filers/{filer_serial}/shares/ \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'
GET https://hostname/api/v1/volumes/{volume_guid}/filers/{filer_serial}/shares/ HTTP/1.1
Host: hostname
Accept: application/json
const headers = {
  'Accept':'application/json',
  'Authorization':'API_KEY'
};
fetch('https://hostname/api/v1/volumes/{volume_guid}/filers/{filer_serial}/shares/',
{
  method: 'GET',
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});
require 'rest-client'
require 'json'
headers = {
  'Accept' => 'application/json',
  'Authorization' => 'API_KEY'
}
result = RestClient.get 'https://hostname/api/v1/volumes/{volume_guid}/filers/{filer_serial}/shares/',
  params: {
  }, headers: headers
p JSON.parse(result)
import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'API_KEY'
}
r = requests.get('https://hostname/api/v1/volumes/{volume_guid}/filers/{filer_serial}/shares/', headers = headers)
print(r.json())
 'application/json',
    'Authorization' => 'API_KEY',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = array();
try {
    $response = $client->request('GET','https://hostname/api/v1/volumes/{volume_guid}/filers/{filer_serial}/shares/', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }
 // ...
URL obj = new URL("https://hostname/api/v1/volumes/{volume_guid}/filers/{filer_serial}/shares/");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
       "bytes"
       "net/http"
)
func main() {
    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"API_KEY"},
    }
    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://hostname/api/v1/volumes/{volume_guid}/filers/{filer_serial}/shares/", data)
    req.Header = headers
    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /volumes/{volume_guid}/filers/{filer_serial}/shares/

Parameters

Name In Type Required Description
volume_guid path string true Volume identifier
filer_serial path string true Filer object identifier
limit query integer false The maximum number of objects to return
offset query integer false The index of the first object to return

Example responses

200 Response

{
  "href": "string",
  "limit": 0,
  "next": "string",
  "offset": 0,
  "previous": "string",
  "total": 0
}

Responses

Status Meaning Description Schema
200 OK Success Inline
401 Unauthorized Authentication failure Error
429 Too Many Requests Request throttled Error

Response Schema

Enumerated Values

Property Value
homedir_support 0
homedir_support 2
smb_encrypt
smb_encrypt desired
smb_encrypt required

Get a share

Code samples

# You can also use wget
curl -X GET https://hostname/api/v1/volumes/{volume_guid}/filers/{filer_serial}/shares/{share_id}/ \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'
GET https://hostname/api/v1/volumes/{volume_guid}/filers/{filer_serial}/shares/{share_id}/ HTTP/1.1
Host: hostname
Accept: application/json
const headers = {
  'Accept':'application/json',
  'Authorization':'API_KEY'
};
fetch('https://hostname/api/v1/volumes/{volume_guid}/filers/{filer_serial}/shares/{share_id}/',
{
  method: 'GET',
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});
require 'rest-client'
require 'json'
headers = {
  'Accept' => 'application/json',
  'Authorization' => 'API_KEY'
}
result = RestClient.get 'https://hostname/api/v1/volumes/{volume_guid}/filers/{filer_serial}/shares/{share_id}/',
  params: {
  }, headers: headers
p JSON.parse(result)
import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'API_KEY'
}
r = requests.get('https://hostname/api/v1/volumes/{volume_guid}/filers/{filer_serial}/shares/{share_id}/', headers = headers)
print(r.json())
 'application/json',
    'Authorization' => 'API_KEY',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = array();
try {
    $response = $client->request('GET','https://hostname/api/v1/volumes/{volume_guid}/filers/{filer_serial}/shares/{share_id}/', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }
 // ...
URL obj = new URL("https://hostname/api/v1/volumes/{volume_guid}/filers/{filer_serial}/shares/{share_id}/");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
       "bytes"
       "net/http"
)
func main() {
    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"API_KEY"},
    }
    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://hostname/api/v1/volumes/{volume_guid}/filers/{filer_serial}/shares/{share_id}/", data)
    req.Header = headers
    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /volumes/{volume_guid}/filers/{filer_serial}/shares/{share_id}/

Parameters

Name In Type Required Description
volume_guid path string true Volume identifier
filer_serial path string true Filer object identifier
share_id path string true Share object identifier

Example responses

200 Response

{
  "id": 0,
  "filer_serial_number": "string",
  "volume_guid": "string",
  "name": "string",
  "path": "string",
  "comment": "string",
  "readonly": true,
  "browseable": true,
  "hosts_allow": "string",
  "hide_unreadable": true,
  "enable_previous_vers": true,
  "case_sensitive": true,
  "enable_snapshot_dirs": true,
  "homedir_support": 0,
  "mobile": true,
  "browser_access": true,
  "browser_access_settings": {
    "shared_links_enabled": true,
    "link_force_password": true,
    "link_allow_rw": true,
    "external_share_url": "string",
    "link_expire_limit": 0,
    "link_auth": {
      "authall": true,
      "allow_groups_ro": [
        "string"
      ],
      "allow_groups_rw": [
        "string"
      ],
      "deny_groups": [
        "string"
      ],
      "allow_users_ro": [
        "string"
      ],
      "allow_users_rw": [
        "string"
      ],
      "deny_users": [
        "string"
      ]
    }
  },
  "aio_enabled": true,
  "veto_files": "string",
  "fruit_enabled": true,
  "smb_encrypt": "",
  "auth": {
    "authall": true,
    "rw_groups": [
      "string"
    ],
    "ro_groups": [
      "string"
    ],
    "deny_groups": [
      "string"
    ],
    "ro_users": [
      "string"
    ],
    "rw_users": [
      "string"
    ],
    "deny_users": [
      "string"
    ]
  },
  "links": {
    "self": {
      "href": "string",
      "method": "string"
    },
    "filer": {
      "href": "string",
      "method": "string"
    },
    "volume": {
      "href": "string",
      "method": "string"
    }
  }
}

Responses

Status Meaning Description Schema
200 OK Success Share
401 Unauthorized Authentication failure Error
429 Too Many Requests Request throttled Error

List all exports.

Code samples

# You can also use wget
curl -X GET https://hostname/api/v1/volumes/filers/exports/ \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'
GET https://hostname/api/v1/volumes/filers/exports/ HTTP/1.1
Host: hostname
Accept: application/json
const headers = {
  'Accept':'application/json',
  'Authorization':'API_KEY'
};
fetch('https://hostname/api/v1/volumes/filers/exports/',
{
  method: 'GET',
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});
require 'rest-client'
require 'json'
headers = {
  'Accept' => 'application/json',
  'Authorization' => 'API_KEY'
}
result = RestClient.get 'https://hostname/api/v1/volumes/filers/exports/',
  params: {
  }, headers: headers
p JSON.parse(result)
import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'API_KEY'
}
r = requests.get('https://hostname/api/v1/volumes/filers/exports/', headers = headers)
print(r.json())
 'application/json',
    'Authorization' => 'API_KEY',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = array();
try {
    $response = $client->request('GET','https://hostname/api/v1/volumes/filers/exports/', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }
 // ...
URL obj = new URL("https://hostname/api/v1/volumes/filers/exports/");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
       "bytes"
       "net/http"
)
func main() {
    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"API_KEY"},
    }
    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://hostname/api/v1/volumes/filers/exports/", data)
    req.Header = headers
    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /volumes/filers/exports/

Parameters

Name In Type Required Description
limit query integer false The maximum number of objects to return
offset query integer false The index of the first object to return

Example responses

200 Response

{
  "href": "string",
  "limit": 0,
  "next": "string",
  "offset": 0,
  "previous": "string",
  "total": 0
}

Responses

Status Meaning Description Schema
200 OK Success Inline
401 Unauthorized Authentication failure Error
429 Too Many Requests Request throttled Error

Response Schema

Enumerated Values

Property Value
access_mode root_squash
access_mode no_root_squash
access_mode all_squash
perf_mode sync
perf_mode no_wdelay
perf_mode async
access_mode root_squash
access_mode no_root_squash
access_mode all_squash
perf_mode sync
perf_mode no_wdelay
perf_mode async

List all exports of a volume.

Code samples

# You can also use wget
curl -X GET https://hostname/api/v1/volumes/{volume_guid}/filers/exports/ \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'
GET https://hostname/api/v1/volumes/{volume_guid}/filers/exports/ HTTP/1.1
Host: hostname
Accept: application/json
const headers = {
  'Accept':'application/json',
  'Authorization':'API_KEY'
};
fetch('https://hostname/api/v1/volumes/{volume_guid}/filers/exports/',
{
  method: 'GET',
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});
require 'rest-client'
require 'json'
headers = {
  'Accept' => 'application/json',
  'Authorization' => 'API_KEY'
}
result = RestClient.get 'https://hostname/api/v1/volumes/{volume_guid}/filers/exports/',
  params: {
  }, headers: headers
p JSON.parse(result)
import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'API_KEY'
}
r = requests.get('https://hostname/api/v1/volumes/{volume_guid}/filers/exports/', headers = headers)
print(r.json())
 'application/json',
    'Authorization' => 'API_KEY',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = array();
try {
    $response = $client->request('GET','https://hostname/api/v1/volumes/{volume_guid}/filers/exports/', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }
 // ...
URL obj = new URL("https://hostname/api/v1/volumes/{volume_guid}/filers/exports/");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
       "bytes"
       "net/http"
)
func main() {
    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"API_KEY"},
    }
    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://hostname/api/v1/volumes/{volume_guid}/filers/exports/", data)
    req.Header = headers
    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /volumes/{volume_guid}/filers/exports/

Parameters

Name In Type Required Description
volume_guid path string true Volume identifier
limit query integer false The maximum number of objects to return
offset query integer false The index of the first object to return

Example responses

200 Response

{
  "href": "string",
  "limit": 0,
  "next": "string",
  "offset": 0,
  "previous": "string",
  "total": 0
}

Responses

Status Meaning Description Schema
200 OK Success Inline
401 Unauthorized Authentication failure Error
429 Too Many Requests Request throttled Error

Response Schema

Enumerated Values

Property Value
access_mode root_squash
access_mode no_root_squash
access_mode all_squash
perf_mode sync
perf_mode no_wdelay
perf_mode async
access_mode root_squash
access_mode no_root_squash
access_mode all_squash
perf_mode sync
perf_mode no_wdelay
perf_mode async

List exports of a volume for a specific filer.

Code samples

# You can also use wget
curl -X GET https://hostname/api/v1/volumes/{volume_guid}/filers/{filer_serial}/exports/ \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'
GET https://hostname/api/v1/volumes/{volume_guid}/filers/{filer_serial}/exports/ HTTP/1.1
Host: hostname
Accept: application/json
const headers = {
  'Accept':'application/json',
  'Authorization':'API_KEY'
};
fetch('https://hostname/api/v1/volumes/{volume_guid}/filers/{filer_serial}/exports/',
{
  method: 'GET',
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});
require 'rest-client'
require 'json'
headers = {
  'Accept' => 'application/json',
  'Authorization' => 'API_KEY'
}
result = RestClient.get 'https://hostname/api/v1/volumes/{volume_guid}/filers/{filer_serial}/exports/',
  params: {
  }, headers: headers
p JSON.parse(result)
import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'API_KEY'
}
r = requests.get('https://hostname/api/v1/volumes/{volume_guid}/filers/{filer_serial}/exports/', headers = headers)
print(r.json())
 'application/json',
    'Authorization' => 'API_KEY',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = array();
try {
    $response = $client->request('GET','https://hostname/api/v1/volumes/{volume_guid}/filers/{filer_serial}/exports/', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }
 // ...
URL obj = new URL("https://hostname/api/v1/volumes/{volume_guid}/filers/{filer_serial}/exports/");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
       "bytes"
       "net/http"
)
func main() {
    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"API_KEY"},
    }
    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://hostname/api/v1/volumes/{volume_guid}/filers/{filer_serial}/exports/", data)
    req.Header = headers
    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /volumes/{volume_guid}/filers/{filer_serial}/exports/

Parameters

Name In Type Required Description
volume_guid path string true Volume identifier
filer_serial path string true Filer object identifier
limit query integer false The maximum number of objects to return
offset query integer false The index of the first object to return

Example responses

200 Response

{
  "href": "string",
  "limit": 0,
  "next": "string",
  "offset": 0,
  "previous": "string",
  "total": 0
}

Responses

Status Meaning Description Schema
200 OK Success Inline
401 Unauthorized Authentication failure Error
429 Too Many Requests Request throttled Error

Response Schema

Enumerated Values

Property Value
access_mode root_squash
access_mode no_root_squash
access_mode all_squash
perf_mode sync
perf_mode no_wdelay
perf_mode async
access_mode root_squash
access_mode no_root_squash
access_mode all_squash
perf_mode sync
perf_mode no_wdelay
perf_mode async

Get an export

Code samples

# You can also use wget
curl -X GET https://hostname/api/v1/volumes/{volume_guid}/filers/{filer_serial}/exports/{export_id}/ \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'
GET https://hostname/api/v1/volumes/{volume_guid}/filers/{filer_serial}/exports/{export_id}/ HTTP/1.1
Host: hostname
Accept: application/json
const headers = {
  'Accept':'application/json',
  'Authorization':'API_KEY'
};
fetch('https://hostname/api/v1/volumes/{volume_guid}/filers/{filer_serial}/exports/{export_id}/',
{
  method: 'GET',
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});
require 'rest-client'
require 'json'
headers = {
  'Accept' => 'application/json',
  'Authorization' => 'API_KEY'
}
result = RestClient.get 'https://hostname/api/v1/volumes/{volume_guid}/filers/{filer_serial}/exports/{export_id}/',
  params: {
  }, headers: headers
p JSON.parse(result)
import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'API_KEY'
}
r = requests.get('https://hostname/api/v1/volumes/{volume_guid}/filers/{filer_serial}/exports/{export_id}/', headers = headers)
print(r.json())
 'application/json',
    'Authorization' => 'API_KEY',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = array();
try {
    $response = $client->request('GET','https://hostname/api/v1/volumes/{volume_guid}/filers/{filer_serial}/exports/{export_id}/', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }
 // ...
URL obj = new URL("https://hostname/api/v1/volumes/{volume_guid}/filers/{filer_serial}/exports/{export_id}/");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
       "bytes"
       "net/http"
)
func main() {
    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"API_KEY"},
    }
    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://hostname/api/v1/volumes/{volume_guid}/filers/{filer_serial}/exports/{export_id}/", data)
    req.Header = headers
    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /volumes/{volume_guid}/filers/{filer_serial}/exports/{export_id}/

Parameters

Name In Type Required Description
volume_guid path string true Volume identifier
filer_serial path string true Filer object identifier
export_id path string true Export object identifier

Example responses

200 Response

{
  "id": 0,
  "filer_serial_number": "string",
  "volume_guid": "string",
  "name": "string",
  "path": "string",
  "comment": "string",
  "readonly": true,
  "hostspec": "string",
  "access_mode": "root_squash",
  "perf_mode": "sync",
  "sec_options": [
    "sys"
  ],
  "nfs_host_options": [
    {
      "hostspec": "string",
      "readonly": true,
      "access_mode": "root_squash",
      "perf_mode": "sync",
      "sec_options": [
        "sys"
      ]
    }
  ],
  "links": {
    "self": {
      "href": "string",
      "method": "string"
    },
    "filer": {
      "href": "string",
      "method": "string"
    },
    "volume": {
      "href": "string",
      "method": "string"
    }
  }
}

Responses

Status Meaning Description Schema
200 OK Success Export
401 Unauthorized Authentication failure Error
429 Too Many Requests Request throttled Error

List all FTP directories.

Code samples

# You can also use wget
curl -X GET https://hostname/api/v1/volumes/filers/ftp-directories/ \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'
GET https://hostname/api/v1/volumes/filers/ftp-directories/ HTTP/1.1
Host: hostname
Accept: application/json
const headers = {
  'Accept':'application/json',
  'Authorization':'API_KEY'
};
fetch('https://hostname/api/v1/volumes/filers/ftp-directories/',
{
  method: 'GET',
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});
require 'rest-client'
require 'json'
headers = {
  'Accept' => 'application/json',
  'Authorization' => 'API_KEY'
}
result = RestClient.get 'https://hostname/api/v1/volumes/filers/ftp-directories/',
  params: {
  }, headers: headers
p JSON.parse(result)
import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'API_KEY'
}
r = requests.get('https://hostname/api/v1/volumes/filers/ftp-directories/', headers = headers)
print(r.json())
 'application/json',
    'Authorization' => 'API_KEY',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = array();
try {
    $response = $client->request('GET','https://hostname/api/v1/volumes/filers/ftp-directories/', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }
 // ...
URL obj = new URL("https://hostname/api/v1/volumes/filers/ftp-directories/");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
       "bytes"
       "net/http"
)
func main() {
    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"API_KEY"},
    }
    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://hostname/api/v1/volumes/filers/ftp-directories/", data)
    req.Header = headers
    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /volumes/filers/ftp-directories/

Parameters

Name In Type Required Description
limit query integer false The maximum number of objects to return
offset query integer false The index of the first object to return

Example responses

200 Response

{
  "href": "string",
  "limit": 0,
  "next": "string",
  "offset": 0,
  "previous": "string",
  "total": 0
}

Responses

Status Meaning Description Schema
200 OK Success Inline
401 Unauthorized Authentication failure Error
429 Too Many Requests Request throttled Error

Response Schema

Enumerated Values

Property Value
visibility default
visibility hide
visibility invisible
umask 000
umask 002
umask 022
umask 006
umask 066
umask 026

List all FTP directories of a volume.

Code samples

# You can also use wget
curl -X GET https://hostname/api/v1/volumes/{volume_guid}/filers/ftp-directories/ \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'
GET https://hostname/api/v1/volumes/{volume_guid}/filers/ftp-directories/ HTTP/1.1
Host: hostname
Accept: application/json
const headers = {
  'Accept':'application/json',
  'Authorization':'API_KEY'
};
fetch('https://hostname/api/v1/volumes/{volume_guid}/filers/ftp-directories/',
{
  method: 'GET',
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});
require 'rest-client'
require 'json'
headers = {
  'Accept' => 'application/json',
  'Authorization' => 'API_KEY'
}
result = RestClient.get 'https://hostname/api/v1/volumes/{volume_guid}/filers/ftp-directories/',
  params: {
  }, headers: headers
p JSON.parse(result)
import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'API_KEY'
}
r = requests.get('https://hostname/api/v1/volumes/{volume_guid}/filers/ftp-directories/', headers = headers)
print(r.json())
 'application/json',
    'Authorization' => 'API_KEY',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = array();
try {
    $response = $client->request('GET','https://hostname/api/v1/volumes/{volume_guid}/filers/ftp-directories/', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }
 // ...
URL obj = new URL("https://hostname/api/v1/volumes/{volume_guid}/filers/ftp-directories/");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
       "bytes"
       "net/http"
)
func main() {
    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"API_KEY"},
    }
    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://hostname/api/v1/volumes/{volume_guid}/filers/ftp-directories/", data)
    req.Header = headers
    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /volumes/{volume_guid}/filers/ftp-directories/

Parameters

Name In Type Required Description
volume_guid path string true Volume identifier
limit query integer false The maximum number of objects to return
offset query integer false The index of the first object to return

Example responses

200 Response

{
  "href": "string",
  "limit": 0,
  "next": "string",
  "offset": 0,
  "previous": "string",
  "total": 0
}

Responses

Status Meaning Description Schema
200 OK Success Inline
401 Unauthorized Authentication failure Error
429 Too Many Requests Request throttled Error

Response Schema

Enumerated Values

Property Value
visibility default
visibility hide
visibility invisible
umask 000
umask 002
umask 022
umask 006
umask 066
umask 026

List FTP directories of a volume for a specific filer.

Code samples

# You can also use wget
curl -X GET https://hostname/api/v1/volumes/{volume_guid}/filers/{filer_serial}/ftp-directories/ \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'
GET https://hostname/api/v1/volumes/{volume_guid}/filers/{filer_serial}/ftp-directories/ HTTP/1.1
Host: hostname
Accept: application/json
const headers = {
  'Accept':'application/json',
  'Authorization':'API_KEY'
};
fetch('https://hostname/api/v1/volumes/{volume_guid}/filers/{filer_serial}/ftp-directories/',
{
  method: 'GET',
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});
require 'rest-client'
require 'json'
headers = {
  'Accept' => 'application/json',
  'Authorization' => 'API_KEY'
}
result = RestClient.get 'https://hostname/api/v1/volumes/{volume_guid}/filers/{filer_serial}/ftp-directories/',
  params: {
  }, headers: headers
p JSON.parse(result)
import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'API_KEY'
}
r = requests.get('https://hostname/api/v1/volumes/{volume_guid}/filers/{filer_serial}/ftp-directories/', headers = headers)
print(r.json())
 'application/json',
    'Authorization' => 'API_KEY',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = array();
try {
    $response = $client->request('GET','https://hostname/api/v1/volumes/{volume_guid}/filers/{filer_serial}/ftp-directories/', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }
 // ...
URL obj = new URL("https://hostname/api/v1/volumes/{volume_guid}/filers/{filer_serial}/ftp-directories/");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
       "bytes"
       "net/http"
)
func main() {
    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"API_KEY"},
    }
    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://hostname/api/v1/volumes/{volume_guid}/filers/{filer_serial}/ftp-directories/", data)
    req.Header = headers
    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /volumes/{volume_guid}/filers/{filer_serial}/ftp-directories/

Parameters

Name In Type Required Description
volume_guid path string true Volume identifier
filer_serial path string true Filer object identifier
limit query integer false The maximum number of objects to return
offset query integer false The index of the first object to return

Example responses

200 Response

{
  "href": "string",
  "limit": 0,
  "next": "string",
  "offset": 0,
  "previous": "string",
  "total": 0
}

Responses

Status Meaning Description Schema
200 OK Success Inline
401 Unauthorized Authentication failure Error
429 Too Many Requests Request throttled Error

Response Schema

Enumerated Values

Property Value
visibility default
visibility hide
visibility invisible
umask 000
umask 002
umask 022
umask 006
umask 066
umask 026

Get a FTP directory.

Code samples

# You can also use wget
curl -X GET https://hostname/api/v1/volumes/{volume_guid}/filers/{filer_serial}/ftp-directories/{ftpdir_id}/ \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'
GET https://hostname/api/v1/volumes/{volume_guid}/filers/{filer_serial}/ftp-directories/{ftpdir_id}/ HTTP/1.1
Host: hostname
Accept: application/json
const headers = {
  'Accept':'application/json',
  'Authorization':'API_KEY'
};
fetch('https://hostname/api/v1/volumes/{volume_guid}/filers/{filer_serial}/ftp-directories/{ftpdir_id}/',
{
  method: 'GET',
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});
require 'rest-client'
require 'json'
headers = {
  'Accept' => 'application/json',
  'Authorization' => 'API_KEY'
}
result = RestClient.get 'https://hostname/api/v1/volumes/{volume_guid}/filers/{filer_serial}/ftp-directories/{ftpdir_id}/',
  params: {
  }, headers: headers
p JSON.parse(result)
import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'API_KEY'
}
r = requests.get('https://hostname/api/v1/volumes/{volume_guid}/filers/{filer_serial}/ftp-directories/{ftpdir_id}/', headers = headers)
print(r.json())
 'application/json',
    'Authorization' => 'API_KEY',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = array();
try {
    $response = $client->request('GET','https://hostname/api/v1/volumes/{volume_guid}/filers/{filer_serial}/ftp-directories/{ftpdir_id}/', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }
 // ...
URL obj = new URL("https://hostname/api/v1/volumes/{volume_guid}/filers/{filer_serial}/ftp-directories/{ftpdir_id}/");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
       "bytes"
       "net/http"
)
func main() {
    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"API_KEY"},
    }
    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://hostname/api/v1/volumes/{volume_guid}/filers/{filer_serial}/ftp-directories/{ftpdir_id}/", data)
    req.Header = headers
    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /volumes/{volume_guid}/filers/{filer_serial}/ftp-directories/{ftpdir_id}/

Parameters

Name In Type Required Description
volume_guid path string true Volume identifier
filer_serial path string true Filer object identifier
ftpdir_id path string true FTP directory object identifier

Example responses

200 Response

{
  "id": 0,
  "name": "string",
  "path": "string",
  "comment": "string",
  "readonly": true,
  "visibility": "default",
  "allow_from": "string",
  "allow_users": "string",
  "allow_groups": "string",
  "anonymous": true,
  "anonymous_only": true,
  "umask": "000",
  "hide_ownership": true,
  "hidden_stores": true,
  "filer_serial_number": "string",
  "volume_guid": "string",
  "links": {
    "self": {
      "href": "string",
      "method": "string"
    },
    "filer": {
      "href": "string",
      "method": "string"
    },
    "volume": {
      "href": "string",
      "method": "string"
    }
  }
}

Responses

Status Meaning Description Schema
200 OK Success FtpDirectory
401 Unauthorized Authentication failure Error
429 Too Many Requests Request throttled Error

List all volume connections.

Code samples

# You can also use wget
curl -X GET https://hostname/api/v1/volumes/filer-connections/ \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'
GET https://hostname/api/v1/volumes/filer-connections/ HTTP/1.1
Host: hostname
Accept: application/json
const headers = {
  'Accept':'application/json',
  'Authorization':'API_KEY'
};
fetch('https://hostname/api/v1/volumes/filer-connections/',
{
  method: 'GET',
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});
require 'rest-client'
require 'json'
headers = {
  'Accept' => 'application/json',
  'Authorization' => 'API_KEY'
}
result = RestClient.get 'https://hostname/api/v1/volumes/filer-connections/',
  params: {
  }, headers: headers
p JSON.parse(result)
import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'API_KEY'
}
r = requests.get('https://hostname/api/v1/volumes/filer-connections/', headers = headers)
print(r.json())
 'application/json',
    'Authorization' => 'API_KEY',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = array();
try {
    $response = $client->request('GET','https://hostname/api/v1/volumes/filer-connections/', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }
 // ...
URL obj = new URL("https://hostname/api/v1/volumes/filer-connections/");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
       "bytes"
       "net/http"
)
func main() {
    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"API_KEY"},
    }
    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://hostname/api/v1/volumes/filer-connections/", data)
    req.Header = headers
    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /volumes/filer-connections/

Parameters

Name In Type Required Description
limit query integer false The maximum number of objects to return
offset query integer false The index of the first object to return

Example responses

200 Response

{
  "href": "string",
  "limit": 0,
  "next": "string",
  "offset": 0,
  "previous": "string",
  "total": 0
}

Responses

Status Meaning Description Schema
200 OK Success Inline
401 Unauthorized Authentication failure Error
429 Too Many Requests Request throttled Error

Response Schema

List all volume connections for a specific volume.

Code samples

# You can also use wget
curl -X GET https://hostname/api/v1/volumes/{volume_guid}/filer-connections/ \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'
GET https://hostname/api/v1/volumes/{volume_guid}/filer-connections/ HTTP/1.1
Host: hostname
Accept: application/json
const headers = {
  'Accept':'application/json',
  'Authorization':'API_KEY'
};
fetch('https://hostname/api/v1/volumes/{volume_guid}/filer-connections/',
{
  method: 'GET',
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});
require 'rest-client'
require 'json'
headers = {
  'Accept' => 'application/json',
  'Authorization' => 'API_KEY'
}
result = RestClient.get 'https://hostname/api/v1/volumes/{volume_guid}/filer-connections/',
  params: {
  }, headers: headers
p JSON.parse(result)
import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'API_KEY'
}
r = requests.get('https://hostname/api/v1/volumes/{volume_guid}/filer-connections/', headers = headers)
print(r.json())
 'application/json',
    'Authorization' => 'API_KEY',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = array();
try {
    $response = $client->request('GET','https://hostname/api/v1/volumes/{volume_guid}/filer-connections/', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }
 // ...
URL obj = new URL("https://hostname/api/v1/volumes/{volume_guid}/filer-connections/");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
       "bytes"
       "net/http"
)
func main() {
    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"API_KEY"},
    }
    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://hostname/api/v1/volumes/{volume_guid}/filer-connections/", data)
    req.Header = headers
    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /volumes/{volume_guid}/filer-connections/

Parameters

Name In Type Required Description
volume_guid path string true Volume identifier
limit query integer false The maximum number of objects to return
offset query integer false The index of the first object to return

Example responses

200 Response

{
  "href": "string",
  "limit": 0,
  "next": "string",
  "offset": 0,
  "previous": "string",
  "total": 0
}

Responses

Status Meaning Description Schema
200 OK Success Inline
401 Unauthorized Authentication failure Error
429 Too Many Requests Request throttled Error

Response Schema

Get a volume connection.

Code samples

# You can also use wget
curl -X GET https://hostname/api/v1/volumes/{volume_guid}/filer-connections/{filer_serial}/ \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'
GET https://hostname/api/v1/volumes/{volume_guid}/filer-connections/{filer_serial}/ HTTP/1.1
Host: hostname
Accept: application/json
const headers = {
  'Accept':'application/json',
  'Authorization':'API_KEY'
};
fetch('https://hostname/api/v1/volumes/{volume_guid}/filer-connections/{filer_serial}/',
{
  method: 'GET',
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});
require 'rest-client'
require 'json'
headers = {
  'Accept' => 'application/json',
  'Authorization' => 'API_KEY'
}
result = RestClient.get 'https://hostname/api/v1/volumes/{volume_guid}/filer-connections/{filer_serial}/',
  params: {
  }, headers: headers
p JSON.parse(result)
import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'API_KEY'
}
r = requests.get('https://hostname/api/v1/volumes/{volume_guid}/filer-connections/{filer_serial}/', headers = headers)
print(r.json())
 'application/json',
    'Authorization' => 'API_KEY',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = array();
try {
    $response = $client->request('GET','https://hostname/api/v1/volumes/{volume_guid}/filer-connections/{filer_serial}/', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }
 // ...
URL obj = new URL("https://hostname/api/v1/volumes/{volume_guid}/filer-connections/{filer_serial}/");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
       "bytes"
       "net/http"
)
func main() {
    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"API_KEY"},
    }
    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://hostname/api/v1/volumes/{volume_guid}/filer-connections/{filer_serial}/", data)
    req.Header = headers
    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /volumes/{volume_guid}/filer-connections/{filer_serial}/

Parameters

Name In Type Required Description
volume_guid path string true Volume identifier
filer_serial path string true Filer object identifier

Example responses

200 Response

{
  "connected": true,
  "volume_guid": "string",
  "filer_serial_number": "string",
  "links": {
    "self": {
      "href": "string",
      "method": "string"
    },
    "filer": {
      "href": "string",
      "method": "string"
    }
  }
}

Responses

Status Meaning Description Schema
200 OK Success VolumeConnection
401 Unauthorized Authentication failure Error
429 Too Many Requests Request throttled Error

List all antivirus violations.

Code samples

# You can also use wget
curl -X GET https://hostname/api/v1/volumes/filers/antivirus-violations/ \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'
GET https://hostname/api/v1/volumes/filers/antivirus-violations/ HTTP/1.1
Host: hostname
Accept: application/json
const headers = {
  'Accept':'application/json',
  'Authorization':'API_KEY'
};
fetch('https://hostname/api/v1/volumes/filers/antivirus-violations/',
{
  method: 'GET',
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});
require 'rest-client'
require 'json'
headers = {
  'Accept' => 'application/json',
  'Authorization' => 'API_KEY'
}
result = RestClient.get 'https://hostname/api/v1/volumes/filers/antivirus-violations/',
  params: {
  }, headers: headers
p JSON.parse(result)
import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'API_KEY'
}
r = requests.get('https://hostname/api/v1/volumes/filers/antivirus-violations/', headers = headers)
print(r.json())
 'application/json',
    'Authorization' => 'API_KEY',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = array();
try {
    $response = $client->request('GET','https://hostname/api/v1/volumes/filers/antivirus-violations/', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }
 // ...
URL obj = new URL("https://hostname/api/v1/volumes/filers/antivirus-violations/");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
       "bytes"
       "net/http"
)
func main() {
    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"API_KEY"},
    }
    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://hostname/api/v1/volumes/filers/antivirus-violations/", data)
    req.Header = headers
    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /volumes/filers/antivirus-violations/

Parameters

Name In Type Required Description
limit query integer false The maximum number of objects to return
offset query integer false The index of the first object to return

Example responses

200 Response

{
  "href": "string",
  "limit": 0,
  "next": "string",
  "offset": 0,
  "previous": "string",
  "total": 0
}

Responses

Status Meaning Description Schema
200 OK Success Inline
401 Unauthorized Authentication failure Error
429 Too Many Requests Request throttled Error

Response Schema

List all antivirus violations of a volume.

Code samples

# You can also use wget
curl -X GET https://hostname/api/v1/volumes/{volume_guid}/filers/antivirus-violations/ \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'
GET https://hostname/api/v1/volumes/{volume_guid}/filers/antivirus-violations/ HTTP/1.1
Host: hostname
Accept: application/json
const headers = {
  'Accept':'application/json',
  'Authorization':'API_KEY'
};
fetch('https://hostname/api/v1/volumes/{volume_guid}/filers/antivirus-violations/',
{
  method: 'GET',
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});
require 'rest-client'
require 'json'
headers = {
  'Accept' => 'application/json',
  'Authorization' => 'API_KEY'
}
result = RestClient.get 'https://hostname/api/v1/volumes/{volume_guid}/filers/antivirus-violations/',
  params: {
  }, headers: headers
p JSON.parse(result)
import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'API_KEY'
}
r = requests.get('https://hostname/api/v1/volumes/{volume_guid}/filers/antivirus-violations/', headers = headers)
print(r.json())
 'application/json',
    'Authorization' => 'API_KEY',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = array();
try {
    $response = $client->request('GET','https://hostname/api/v1/volumes/{volume_guid}/filers/antivirus-violations/', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }
 // ...
URL obj = new URL("https://hostname/api/v1/volumes/{volume_guid}/filers/antivirus-violations/");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
       "bytes"
       "net/http"
)
func main() {
    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"API_KEY"},
    }
    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://hostname/api/v1/volumes/{volume_guid}/filers/antivirus-violations/", data)
    req.Header = headers
    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /volumes/{volume_guid}/filers/antivirus-violations/

Parameters

Name In Type Required Description
volume_guid path string true Volume identifier
limit query integer false The maximum number of objects to return
offset query integer false The index of the first object to return

Example responses

200 Response

{
  "href": "string",
  "limit": 0,
  "next": "string",
  "offset": 0,
  "previous": "string",
  "total": 0
}

Responses

Status Meaning Description Schema
200 OK Success Inline
401 Unauthorized Authentication failure Error
429 Too Many Requests Request throttled Error

Response Schema

List antivirus violations of a volume for a specific filer.

Code samples

# You can also use wget
curl -X GET https://hostname/api/v1/volumes/{volume_guid}/filers/{filer_serial}/antivirus-violations/ \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'
GET https://hostname/api/v1/volumes/{volume_guid}/filers/{filer_serial}/antivirus-violations/ HTTP/1.1
Host: hostname
Accept: application/json
const headers = {
  'Accept':'application/json',
  'Authorization':'API_KEY'
};
fetch('https://hostname/api/v1/volumes/{volume_guid}/filers/{filer_serial}/antivirus-violations/',
{
  method: 'GET',
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});
require 'rest-client'
require 'json'
headers = {
  'Accept' => 'application/json',
  'Authorization' => 'API_KEY'
}
result = RestClient.get 'https://hostname/api/v1/volumes/{volume_guid}/filers/{filer_serial}/antivirus-violations/',
  params: {
  }, headers: headers
p JSON.parse(result)
import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'API_KEY'
}
r = requests.get('https://hostname/api/v1/volumes/{volume_guid}/filers/{filer_serial}/antivirus-violations/', headers = headers)
print(r.json())
 'application/json',
    'Authorization' => 'API_KEY',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = array();
try {
    $response = $client->request('GET','https://hostname/api/v1/volumes/{volume_guid}/filers/{filer_serial}/antivirus-violations/', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }
 // ...
URL obj = new URL("https://hostname/api/v1/volumes/{volume_guid}/filers/{filer_serial}/antivirus-violations/");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
       "bytes"
       "net/http"
)
func main() {
    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"API_KEY"},
    }
    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://hostname/api/v1/volumes/{volume_guid}/filers/{filer_serial}/antivirus-violations/", data)
    req.Header = headers
    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /volumes/{volume_guid}/filers/{filer_serial}/antivirus-violations/

Parameters

Name In Type Required Description
volume_guid path string true Volume identifier
filer_serial path string true Filer object identifier
limit query integer false The maximum number of objects to return
offset query integer false The index of the first object to return

Example responses

200 Response

{
  "href": "string",
  "limit": 0,
  "next": "string",
  "offset": 0,
  "previous": "string",
  "total": 0
}

Responses

Status Meaning Description Schema
200 OK Success Inline
401 Unauthorized Authentication failure Error
429 Too Many Requests Request throttled Error

Response Schema

Get an antivirus violation.

Code samples

# You can also use wget
curl -X GET https://hostname/api/v1/volumes/{volume_guid}/filers/{filer_serial}/antivirus-violations/{antivirus_id}/ \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'
GET https://hostname/api/v1/volumes/{volume_guid}/filers/{filer_serial}/antivirus-violations/{antivirus_id}/ HTTP/1.1
Host: hostname
Accept: application/json
const headers = {
  'Accept':'application/json',
  'Authorization':'API_KEY'
};
fetch('https://hostname/api/v1/volumes/{volume_guid}/filers/{filer_serial}/antivirus-violations/{antivirus_id}/',
{
  method: 'GET',
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});
require 'rest-client'
require 'json'
headers = {
  'Accept' => 'application/json',
  'Authorization' => 'API_KEY'
}
result = RestClient.get 'https://hostname/api/v1/volumes/{volume_guid}/filers/{filer_serial}/antivirus-violations/{antivirus_id}/',
  params: {
  }, headers: headers
p JSON.parse(result)
import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'API_KEY'
}
r = requests.get('https://hostname/api/v1/volumes/{volume_guid}/filers/{filer_serial}/antivirus-violations/{antivirus_id}/', headers = headers)
print(r.json())
 'application/json',
    'Authorization' => 'API_KEY',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = array();
try {
    $response = $client->request('GET','https://hostname/api/v1/volumes/{volume_guid}/filers/{filer_serial}/antivirus-violations/{antivirus_id}/', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }
 // ...
URL obj = new URL("https://hostname/api/v1/volumes/{volume_guid}/filers/{filer_serial}/antivirus-violations/{antivirus_id}/");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
       "bytes"
       "net/http"
)
func main() {
    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"API_KEY"},
    }
    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://hostname/api/v1/volumes/{volume_guid}/filers/{filer_serial}/antivirus-violations/{antivirus_id}/", data)
    req.Header = headers
    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /volumes/{volume_guid}/filers/{filer_serial}/antivirus-violations/{antivirus_id}/

Parameters

Name In Type Required Description
volume_guid path string true Volume identifier
filer_serial path string true Filer object identifier
antivirus_id path string true Antivirus violation object identifier

Example responses

200 Response

{
  "id": 0,
  "fpath": "string",
  "vname": "string",
  "volume_uri": "string",
  "seqno": 0,
  "filer_serial_number": "string",
  "volume_guid": "string",
  "links": {
    "self": {
      "href": "string",
      "method": "string"
    },
    "filer": {
      "href": "string",
      "method": "string"
    },
    "volume": {
      "href": "string",
      "method": "string"
    }
  }
}

Responses

Status Meaning Description Schema
200 OK Success AntivirusViolation
401 Unauthorized Authentication failure Error
429 Too Many Requests Request throttled Error

Notifications

List all notifications

Code samples

# You can also use wget
curl -X GET https://hostname/api/v1/notifications/ \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'
GET https://hostname/api/v1/notifications/ HTTP/1.1
Host: hostname
Accept: application/json
const headers = {
  'Accept':'application/json',
  'Authorization':'API_KEY'
};
fetch('https://hostname/api/v1/notifications/',
{
  method: 'GET',
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});
require 'rest-client'
require 'json'
headers = {
  'Accept' => 'application/json',
  'Authorization' => 'API_KEY'
}
result = RestClient.get 'https://hostname/api/v1/notifications/',
  params: {
  }, headers: headers
p JSON.parse(result)
import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'API_KEY'
}
r = requests.get('https://hostname/api/v1/notifications/', headers = headers)
print(r.json())
 'application/json',
    'Authorization' => 'API_KEY',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = array();
try {
    $response = $client->request('GET','https://hostname/api/v1/notifications/', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }
 // ...
URL obj = new URL("https://hostname/api/v1/notifications/");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
       "bytes"
       "net/http"
)
func main() {
    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"API_KEY"},
    }
    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://hostname/api/v1/notifications/", data)
    req.Header = headers
    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /notifications/

Parameters

Name In Type Required Description
limit query integer false The maximum number of objects to return
offset query integer false The index of the first object to return

Example responses

200 Response

{
  "href": "string",
  "limit": 0,
  "next": "string",
  "offset": 0,
  "previous": "string",
  "total": 0
}

Responses

Status Meaning Description Schema
200 OK Success Inline
401 Unauthorized Authentication failure Error
429 Too Many Requests Request throttled Error

Response Schema

Enumerated Values

Property Value
priority noop
priority alert
priority admin
priority error
priority warning
priority info

Get a notification

Code samples

# You can also use wget
curl -X GET https://hostname/api/v1/notifications/{notification_id}/ \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'
GET https://hostname/api/v1/notifications/{notification_id}/ HTTP/1.1
Host: hostname
Accept: application/json
const headers = {
  'Accept':'application/json',
  'Authorization':'API_KEY'
};
fetch('https://hostname/api/v1/notifications/{notification_id}/',
{
  method: 'GET',
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});
require 'rest-client'
require 'json'
headers = {
  'Accept' => 'application/json',
  'Authorization' => 'API_KEY'
}
result = RestClient.get 'https://hostname/api/v1/notifications/{notification_id}/',
  params: {
  }, headers: headers
p JSON.parse(result)
import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'API_KEY'
}
r = requests.get('https://hostname/api/v1/notifications/{notification_id}/', headers = headers)
print(r.json())
 'application/json',
    'Authorization' => 'API_KEY',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = array();
try {
    $response = $client->request('GET','https://hostname/api/v1/notifications/{notification_id}/', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }
 // ...
URL obj = new URL("https://hostname/api/v1/notifications/{notification_id}/");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
       "bytes"
       "net/http"
)
func main() {
    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"API_KEY"},
    }
    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://hostname/api/v1/notifications/{notification_id}/", data)
    req.Header = headers
    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /notifications/{notification_id}/

Parameters

Name In Type Required Description
notification_id path string true Notification object identifier

Example responses

200 Response

{
  "id": 0,
  "date": "string",
  "priority": "noop",
  "name": "string",
  "message": "string",
  "group": "string",
  "acknowledged": true,
  "sticky": true,
  "urgent": true,
  "remoteid": "string",
  "links": {
    "self": {
      "href": "string",
      "method": "string"
    },
    "filer": {
      "href": "string",
      "method": "string"
    }
  }
}

Responses

Status Meaning Description Schema
200 OK Success Notification
401 Unauthorized Authentication failure Error
429 Too Many Requests Request throttled Error

Messages

List all messages

Code samples

# You can also use wget
curl -X GET https://hostname/api/v1/messages/ \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'
GET https://hostname/api/v1/messages/ HTTP/1.1
Host: hostname
Accept: application/json
const headers = {
  'Accept':'application/json',
  'Authorization':'API_KEY'
};
fetch('https://hostname/api/v1/messages/',
{
  method: 'GET',
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});
require 'rest-client'
require 'json'
headers = {
  'Accept' => 'application/json',
  'Authorization' => 'API_KEY'
}
result = RestClient.get 'https://hostname/api/v1/messages/',
  params: {
  }, headers: headers
p JSON.parse(result)
import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'API_KEY'
}
r = requests.get('https://hostname/api/v1/messages/', headers = headers)
print(r.json())
 'application/json',
    'Authorization' => 'API_KEY',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = array();
try {
    $response = $client->request('GET','https://hostname/api/v1/messages/', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }
 // ...
URL obj = new URL("https://hostname/api/v1/messages/");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
       "bytes"
       "net/http"
)
func main() {
    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"API_KEY"},
    }
    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://hostname/api/v1/messages/", data)
    req.Header = headers
    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /messages/

Parameters

Name In Type Required Description
limit query integer false The maximum number of objects to return
offset query integer false The index of the first object to return

Example responses

200 Response

{
  "href": "string",
  "limit": 0,
  "next": "string",
  "offset": 0,
  "previous": "string",
  "total": 0
}

Responses

Status Meaning Description Schema
200 OK Success Inline
401 Unauthorized Authentication failure Error
429 Too Many Requests Request throttled Error

Response Schema

Enumerated Values

Property Value
status synced
status pending
status failure
code error
code validation_error
code not_found_error
code auth_error
code perm_error
code sync_error
code throttled_error

Get a message

Code samples

# You can also use wget
curl -X GET https://hostname/api/v1/messages/{message_id}/ \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'
GET https://hostname/api/v1/messages/{message_id}/ HTTP/1.1
Host: hostname
Accept: application/json
const headers = {
  'Accept':'application/json',
  'Authorization':'API_KEY'
};
fetch('https://hostname/api/v1/messages/{message_id}/',
{
  method: 'GET',
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});
require 'rest-client'
require 'json'
headers = {
  'Accept' => 'application/json',
  'Authorization' => 'API_KEY'
}
result = RestClient.get 'https://hostname/api/v1/messages/{message_id}/',
  params: {
  }, headers: headers
p JSON.parse(result)
import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'API_KEY'
}
r = requests.get('https://hostname/api/v1/messages/{message_id}/', headers = headers)
print(r.json())
 'application/json',
    'Authorization' => 'API_KEY',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = array();
try {
    $response = $client->request('GET','https://hostname/api/v1/messages/{message_id}/', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }
 // ...
URL obj = new URL("https://hostname/api/v1/messages/{message_id}/");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
       "bytes"
       "net/http"
)
func main() {
    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"API_KEY"},
    }
    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://hostname/api/v1/messages/{message_id}/", data)
    req.Header = headers
    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /messages/{message_id}/

Parameters

Name In Type Required Description
message_id path string true Message object identifier

Example responses

200 Response

{
  "id": "string",
  "filer_serial_number": "string",
  "description": "string",
  "code": "string",
  "status": "synced",
  "send_time": "string",
  "expiration_time": "string",
  "response_time": "string",
  "initiated_by": "string",
  "links": {
    "self": {
      "href": "string",
      "method": "string"
    },
    "filer": {
      "href": "string",
      "method": "string"
    },
    "acknowledge": {
      "href": "string",
      "method": "string"
    }
  },
  "error": {
    "code": "error",
    "description": "string"
  }
}

Responses

Status Meaning Description Schema
200 OK Success Message
303 See Other See Other None
401 Unauthorized Authentication failure Error
429 Too Many Requests Request throttled Error

Response Headers

Status Header Type Format Description
303 Location string A link to the affected setting where the browser should redirect.

delete__messages_{message_id}_

Code samples

# You can also use wget
curl -X DELETE https://hostname/api/v1/messages/{message_id}/ \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'
DELETE https://hostname/api/v1/messages/{message_id}/ HTTP/1.1
Host: hostname
Accept: application/json
const headers = {
  'Accept':'application/json',
  'Authorization':'API_KEY'
};
fetch('https://hostname/api/v1/messages/{message_id}/',
{
  method: 'DELETE',
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});
require 'rest-client'
require 'json'
headers = {
  'Accept' => 'application/json',
  'Authorization' => 'API_KEY'
}
result = RestClient.delete 'https://hostname/api/v1/messages/{message_id}/',
  params: {
  }, headers: headers
p JSON.parse(result)
import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'API_KEY'
}
r = requests.delete('https://hostname/api/v1/messages/{message_id}/', headers = headers)
print(r.json())
 'application/json',
    'Authorization' => 'API_KEY',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = array();
try {
    $response = $client->request('DELETE','https://hostname/api/v1/messages/{message_id}/', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }
 // ...
URL obj = new URL("https://hostname/api/v1/messages/{message_id}/");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("DELETE");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
       "bytes"
       "net/http"
)
func main() {
    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"API_KEY"},
    }
    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "https://hostname/api/v1/messages/{message_id}/", data)
    req.Header = headers
    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

DELETE /messages/{message_id}/

Clear a failed or synced message

Parameters

Name In Type Required Description
message_id path string true Message object identifier

Example responses

400 Response

{
  "code": "error",
  "description": "string"
}

Responses

Status Meaning Description Schema
204 No Content No Content None
400 Bad Request Bad Request Error
401 Unauthorized Authentication failure Error
429 Too Many Requests Request throttled Error

Schemas

AuthToken

{
  "token": "string",
  "expires": "string"
}

Properties

Name Type Required Restrictions Description
token string false none none
expires string false none none

Error

{
  "code": "error",
  "description": "string"
}

Properties

Name Type Required Restrictions Description
code string false none Specifies the type of error reported. Possible values:

* "error" - General error
* "validation_error" - Validation error
* "not_found_error" - Resource not found
* "auth_error" - Authentication error
* "perm_error" - Permission error
* "sync_error" - Error occurred syncing settings with a Filer.
* "throttled_error" - The request was throttled; too many sent within a duration.
description string false none Description of the error reported.

Enumerated Values

Property Value
code error
code validation_error
code not_found_error
code auth_error
code perm_error
code sync_error
code throttled_error

Export

{
  "id": 0,
  "filer_serial_number": "string",
  "volume_guid": "string",
  "name": "string",
  "path": "string",
  "comment": "string",
  "readonly": true,
  "hostspec": "string",
  "access_mode": "root_squash",
  "perf_mode": "sync",
  "sec_options": [
    "sys"
  ],
  "nfs_host_options": [
    {
      "hostspec": "string",
      "readonly": true,
      "access_mode": "root_squash",
      "perf_mode": "sync",
      "sec_options": [
        "sys"
      ]
    }
  ],
  "links": {
    "self": {
      "href": "string",
      "method": "string"
    },
    "filer": {
      "href": "string",
      "method": "string"
    },
    "volume": {
      "href": "string",
      "method": "string"
    }
  }
}

Export object

Properties

Name Type Required Restrictions Description
id integer false none Export identifier
filer_serial_number string false none Unique identifier for the associated filer.
volume_guid string false none Unique identifier for the associated volume.
name string false none Name of the export.
path string false none Path of the exported directory.
comment string false none Any comments regarding the export.
readonly ExportReadOnlyField false none If true, files and directories cannot be changed on the exported directory.
hostspec ExportHostSpecField false none Hostname, IP address with optional netmask, or @-prefixed netgroup names allowed to access the export. If blank, all hosts on your network can access the export. Hostnames may contain the * character as a wildcard.
access_mode ExportAccessModeField false none Controls what User IDs are allowed when a client writes
to the exported directory. Possible values:

* 'root_squash' - Normal Users Permitted
* 'no_root_squash' - All Users Permitted
* 'all_squash' - Anonymize All Users
perf_mode ExportPerfModeField false none Controls the method in which the NFS server replies to clients.
Changing this may impact the safety of data if the Nasuni Filer is shut down abnormally!
Possible values:

* 'sync' - Default
* 'no_wdelay' - No Write Delay
* 'async' - Asynchronous Replies
sec_options ExportSecOptionsField false none Security options in use by the exported directory. Multiple options may be applied, but they cannot be repeated.
nfs_host_options [object] false none List of NFS Export Host options
» hostspec ExportHostSpecField false none Hostname, IP address with optional netmask, or @-prefixed netgroup names allowed to access the export. If blank, all hosts on your network can access the export. Hostnames may contain the * character as a wildcard.
» readonly ExportReadOnlyField false none If true, files and directories cannot be changed on the exported directory.
» access_mode ExportAccessModeField false none Controls what User IDs are allowed when a client writes
to the exported directory. Possible values:

* 'root_squash' - Normal Users Permitted
* 'no_root_squash' - All Users Permitted
* 'all_squash' - Anonymize All Users
» perf_mode ExportPerfModeField false none Controls the method in which the NFS server replies to clients.
Changing this may impact the safety of data if the Nasuni Filer is shut down abnormally!
Possible values:

* 'sync' - Default
* 'no_wdelay' - No Write Delay
* 'async' - Asynchronous Replies
» sec_options ExportSecOptionsField false none Security options in use by the exported directory. Multiple options may be applied, but they cannot be repeated.
links object false none Links to related resources, collections, and actions.
» self Link false none none
» filer Link false none none
» volume Link false none none

FilerFTPClients

{
  "serial_number": "string",
  "description": "string",
  "ftp_clients": [
    {
      "user": "string",
      "client": "string",
      "protocol": "ftp"
    }
  ],
  "links": {
    "self": {
      "href": "string",
      "method": "string"
    },
    "filer": {
      "href": "string",
      "method": "string"
    }
  }
}

A description of a Filer's connected FTP clients.

Properties

Name Type Required Restrictions Description
serial_number string false none Serial number of the Filer.
description string false none The Filer's description.
ftp_clients [object] false none none
» user string false none The user name of the connected client.
» client string false none The IP Address of the client machine.
» protocol string false none The connection's protocol.
links object false none Links to related resources, collections, and actions.
» self Link false none none
» filer Link false none none

Enumerated Values

Property Value
protocol ftp
protocol sftp

FtpDirectory

{
  "id": 0,
  "name": "string",
  "path": "string",
  "comment": "string",
  "readonly": true,
  "visibility": "default",
  "allow_from": "string",
  "allow_users": "string",
  "allow_groups": "string",
  "anonymous": true,
  "anonymous_only": true,
  "umask": "000",
  "hide_ownership": true,
  "hidden_stores": true,
  "filer_serial_number": "string",
  "volume_guid": "string",
  "links": {
    "self": {
      "href": "string",
      "method": "string"
    },
    "filer": {
      "href": "string",
      "method": "string"
    },
    "volume": {
      "href": "string",
      "method": "string"
    }
  }
}

FTP directory object

Properties

Name Type Required Restrictions Description
id integer false none FTP directory identifier.
name string false none Name of the FTP directory.
path string false none Path of the FTP directory.
comment string false none Any comments regarding the FTP directory.
readonly boolean false none If true, users cannot change the contents of the directory.
visibility string false none Controls what files and directories users can see.
* "default" - Every file is visible to user, even if user does not have access permissions. * "hide" - Users only see files they have permission to access. * "invisible" - No files are visible to user. If user has filename and permission, user can access file.
allow_from string false none Comma-separated list of IP addresses or subnet addresses of hosts
allowed to access FTP directory. If blank, all hosts on your
network have access. This feature cannot be used in conjunction
with Users/Groups restrictions.
allow_users string false none The users that will be allowed to access the FTP directory.
allow_groups string false none The groups that will be allowed to access the FTP directory.
anonymous boolean false none If true, allow anonymous FTP access.
anonymous_only boolean false none If true, only the anonymous user will be granted access. This feature
cannot be used in conjunction with IP address restrictions.
umask string false none Normally, newly created files and directories have read and write
access for the owner, groups and other users. This option allows
you to restrict read and write access for groups or others.

* '000' - No Extra Restrictions (Default)
* '002' - Read-Only Others
* '022' - Read-Only Groups and Others
* '006' - Restrict Others
* '066' - Restrict Groups and Others
* '026' - Read-Only Groups, Restrict Others
hide_ownership boolean false none All directory listings will show owner and group information as "ftp",
hiding the underlying owner and group. This may also be used to work
around directory listing issues on some non-interactive clients.
hidden_stores boolean false none File uploads are done in two steps using a temporary file. This prevents
issues with incomplete uploads and file use before upload is complete.
This feature prevents resuming uploads. This is automatically enabled for
anonymous uploads.
filer_serial_number string false none Unique identifier for the associated filer.
volume_guid string false none Unique identifier for the associated volume.
links object false none Links to related resources, collections, and actions.
» self Link false none none
» filer Link false none none
» volume Link false none none

Enumerated Values

Property Value
visibility default
visibility hide
visibility invisible
umask 000
umask 002
umask 022
umask 006
umask 066
umask 026

AntivirusViolation

{
  "id": 0,
  "fpath": "string",
  "vname": "string",
  "volume_uri": "string",
  "seqno": 0,
  "filer_serial_number": "string",
  "volume_guid": "string",
  "links": {
    "self": {
      "href": "string",
      "method": "string"
    },
    "filer": {
      "href": "string",
      "method": "string"
    },
    "volume": {
      "href": "string",
      "method": "string"
    }
  }
}

Antivirus violation object

Properties

Name Type Required Restrictions Description
id integer false none Antivirus violation identifier
fpath string false none The file path of the infected source file.
vname string false none The name of the virus.
volume_uri string false none The URI of the file, including the associated volume identifier.
seqno integer false none Sequence number of the violation.
filer_serial_number string false none Unique identifier for the associated filer.
volume_guid string false none Unique identifier for the associated volume.
links object false none Links to related resources, collections, and actions.
» self Link false none none
» filer Link false none none
» volume Link false none none

FieldError

{
  "field": "string",
  "errors": [
    "string"
  ]
}

Properties

Name Type Required Restrictions Description
field string false none The field to which the validation error applies, or "all" if it is a non-field error.
errors [string] false none none

{
  "href": "string",
  "method": "string"
}

Properties

Name Type Required Restrictions Description
href string false none Hyperlink to the resource.
method string false none HTTP method to use on the link.

Filer

{
  "build": "string",
  "description": "string",
  "guid": "string",
  "management_state": "self",
  "serial_number": "string",
  "settings": {
    "alert_thresholds": {
      "cpu_alert_settings": {
        "cpu_enabled": true,
        "cpu_threshold": 0,
        "cpu_duration": 0
      },
      "memory_alert_settings": {
        "memory_enabled": true,
        "memory_threshold": 0,
        "memory_duration": 0
      },
      "snapshot_alert_settings": {
        "snapshot_enabled": true,
        "snapshot_duration": 0
      }
    },
    "autoupdate": {
      "hour": 0,
      "sun": true,
      "mon": true,
      "tue": true,
      "wed": true,
      "thu": true,
      "fri": true,
      "sat": true
    },
    "cache_reserved": {
      "reserved": "unset",
      "maxv": 0,
      "minv": 0
    },
    "cifs": {
      "aio_support": true,
      "deny_access": true,
      "fruit_support": true,
      "proto_level": "SMB3",
      "restrict_anonymous": true,
      "roundup_size": "string",
      "smb3": true,
      "smb_encrypt": true,
      "unix_ext": true,
      "veto_files": true
    },
    "ftp": {
      "masq_address": "string",
      "idle_timeout": 0,
      "anon_user": "string",
      "anon_group": "string",
      "protocols": [
        "string"
      ]
    },
    "gl_settings": {
      "degrade_to_read_locks": true
    },
    "mobile_service": {
      "limit_single_device": true,
      "additional_api_port": 0,
      "session_expiration_time": 0,
      "allowed_devices": [
        "OSX"
      ]
    },
    "qos": {
      "rules": [
        {
          "days": {
            "mon": true,
            "tue": true,
            "wed": true,
            "thu": true,
            "fri": true,
            "sat": true,
            "sun": true
          },
          "start": 0,
          "stop": 0,
          "limit": 0,
          "ingress_limit": 0
        }
      ]
    },
    "quota_report_schedule": {
      "schedules": [
        {
          "days": {
            "sun": true,
            "mon": true,
            "tue": true,
            "wed": true,
            "thu": true,
            "fri": true,
            "sat": true
          },
          "activation_hour": 0,
          "admin_report": true,
          "user_report": true,
          "threshold": 0
        }
      ]
    },
    "remote_support": {
      "connected": true,
      "enabled": true,
      "running": true,
      "timeout": 0
    },
    "snmp": {
      "v2_enabled": true,
      "v2_community": "string",
      "v3_enabled": true,
      "v3_username": "string",
      "v3_password": "string",
      "sys_location": "string",
      "sys_contact": "string",
      "trap_ips": [
        "string"
      ]
    },
    "time": {
      "ntpservers": [
        "string"
      ],
      "timezone": "string",
      "current_time_utc": "string"
    }
  },
  "status": {
    "offline": true,
    "osversion": "string",
    "platform": {
      "platform_name": "string",
      "cpu": {
        "model": "string",
        "frequency": 0,
        "sockets": 0,
        "cores": 0
      },
      "memory": "string",
      "cache_status": {
        "size": 0,
        "used": 0,
        "dirty": 0,
        "free": 0,
        "percent_used": 0
      }
    },
    "updates": {
      "updates_available": true,
      "current_version": "string",
      "new_version": "string"
    },
    "uptime": 0
  },
  "links": {
    "self": {
      "href": "string",
      "method": "string"
    },
    "cifsclients": {
      "href": "string",
      "method": "string"
    },
    "cifslocks": {
      "href": "string",
      "method": "string"
    },
    "ftpclients": {
      "href": "string",
      "method": "string"
    }
  }
}

Complete Filer object with all associated settings and statuses.

Properties

Name Type Required Restrictions Description
build string false none Current version and build number of the Filer's software.
description string false none The Filer's description.
guid string false none Unique identifier of the Filer instance.
management_state string false none Current NMC Management state of the Filer. Possible values:

* 'self' - Filer is NOT managed by NMC.
* 'nmc' - Filer is managed by NMC.
* 'pending_self' - Filer is pending self management.
* 'pending_nmc' - Filer is pending NMC management.
serial_number string false none Serial number of the Filer.
settings object false none Settings that are associated with this Filer.
» alert_thresholds object false none Filer system alert configuration.
»» cpu_alert_settings object false none Configuration values for alerting on Filer CPU usage.
»»» cpu_enabled boolean false none If true, will enable alerts for CPU usage.
»»» cpu_threshold integer false none Percentage of CPU usage that can trigger an alert.
»»» cpu_duration integer false none Time in minutes that the system will allow CPU usage over the cpu_threshold before trigging an alert.
»» memory_alert_settings object false none Configuration values for alerting on Filer memory usage.
»»» memory_enabled boolean false none If true, will enable alerts for memory usage.
»»» memory_threshold integer false none Percentage of memory usage that can trigger and alert.
»»» memory_duration integer false none Time in minutes that the system will allow memory usage over the memory_threshold before trigging an alert.
»» snapshot_alert_settings object false none Configuration values for alerting on Snapshots.
»»» snapshot_enabled boolean false none If true, will enable alerts for snapshots.
»»» snapshot_duration integer false none Time in hours to trigger an alert if a snapshot has not completed.
» autoupdate FilerConfigurationAutoupdate false none none
» cache_reserved object false none none
»» reserved string false none Set the percentage of the cache reserved for new, incoming data. A string representing a multiple-of-five integer between 5-90, or the string "unset" if the Filer automatically manages this.
»» maxv integer false none Read only. Maximum percentage of the cache reserved for new, incoming data.
»» minv integer false none Read only. Minimum percentage of the cache reserved for new, incoming data.
» cifs FilerConfigurationCIFS false none none
» ftp FilerConfigurationFTP false none none
» gl_settings object false none Settings that control certain aspects of Global Locking.
»» degrade_to_read_locks boolean false none Set whether or not to degrade all locks to read locks. Enabling this feature will cause all locks that are not read locks to be denied. This feature should only be enabled if the lock server is not available for an extended period of time. This feature effectively makes any directories with global locks enabled read only.
» mobile_service FilerServicesMobile false none none
» qos object false none Quality of Service configuration.
»» rules [object] false none QoS rules
»»» days object false none Days of the week to apply the QoS rule.
»»»» mon boolean false none none
»»»» tue boolean false none none
»»»» wed boolean false none none
»»»» thu boolean false none none
»»»» fri boolean false none none
»»»» sat boolean false none none
»»»» sun boolean false none none
»»» start integer false none Hour of the day (0-23) to start applying the QoS rule.
»»» stop integer false none Hour of the day (0-23) to stop applying the QoS rule.
»»» limit integer false none The maximum outbound data rate in bytes. Specify zero for no limit.
»»» ingress_limit integer false none The maximum inbound data rate in bytes. Specify zero for no limit.
» quota_report_schedule FilerConfigurationQuotaReportSchedule false none none
» remote_support FilerServicesSupport false none Enable or disable Remote Support, set the timeout before it is automatically disabled, and report if there is an active connection from Nasuni Support.
» snmp object false none Filer SNMP Settings
»» v2_enabled boolean false none If true, will enable v1,v2c support.
»» v2_community string false none SNMP Community name (ex: 'public').
»» v3_enabled boolean false none If true, will enable v3 support.
»» v3_username string false none Username for SNMP v3 authentication.
»» v3_password string false none Password for SNMP v3 authentication. SHA authentication and optional privileged security using AES encryption are used to communicate to the SNMP agent. Will display a masked value of '*****' if a password exists, otherwise will be blank.
»» sys_location string false none SNMP System Location (ex: 'Boston Colo - Rack 1').
»» sys_contact string false none SNMP system contact (ex: 'Support ').
»» trap_ips [string] false none List of IPs or hostnames listening for SNMP traps. Leave blank if you wish not to listen for SNMP traps. Traps will be sent using SNMP v3 settings above and the Filer's unique engine id.
» time object false none Filer Time Configuration
»» ntpservers [string] false none none
»» timezone string false none Timezone of the Filer.
»» current_time_utc string false none Current time reported by the Filer. Last report time will only be updated periodically unless manually refreshed.
status object false none Filer status.
» offline boolean false none If true, the Filer has not reported back to the NMC within the last hour.
» osversion string false none The version of the Operating System running on this filer.
» platform FilerPlatform false none Information about a Filer's platform, including hardware type and information about CPU, Memory, and cache.
» updates object false none Information about the current software version and the availability of updates.
»» updates_available boolean false none Indicates whether or not there are software updates available for the Filer.
»» current_version string false none The current version of the software running on this Filer.
»» new_version string false none If an update is available, this indicates the new version of the software which will be installed.
» uptime integer false none Uptime of this Filer, in seconds.
links object false none Links to related resources, collections, and actions.
» self Link false none none
» cifsclients Link false none none
» cifslocks Link false none none
» ftpclients Link false none none

Enumerated Values

Property Value
management_state self
management_state nmc
management_state pending_self
management_state pending_nmc
reserved unset
reserved 5
reserved 10
reserved 15
reserved 20
reserved 25
reserved 30
reserved 35
reserved 40
reserved 45
reserved 50
reserved 55
reserved 60
reserved 65
reserved 70
reserved 75
reserved 80
reserved 85
reserved 90

FilerCIFSClients

{
  "serial_number": "string",
  "description": "string",
  "cifs_clients": [
    {
      "share": "string",
      "user": "string",
      "client": "string",
      "client_name": "string"
    }
  ],
  "links": {
    "self": {
      "href": "string",
      "method": "string"
    },
    "filer": {
      "href": "string",
      "method": "string"
    }
  }
}

A description of a Filer's connected CIFS clients.

Properties

Name Type Required Restrictions Description
serial_number string false none Serial number of the Filer.
description string false none The Filer's description.
cifs_clients [object] false none none
» share string false none The name of the CIFS share that the client is connected to.
» user string false none The user name of the connected client.
» client string false none The IP Address of the client machine.
» client_name string false none The hostname of the connected client.
links object false none Links to related resources, collections, and actions.
» self Link false none none
» filer Link false none none

FilerCIFSLocks

{
  "serial_number": "string",
  "description": "string",
  "cifs_locks": [
    {
      "share": "string",
      "file_path": "string",
      "type": "string",
      "user": "string",
      "client": "string",
      "client_name": "string"
    }
  ],
  "links": {
    "self": {
      "href": "string",
      "method": "string"
    },
    "filer": {
      "href": "string",
      "method": "string"
    }
  }
}

A description of the CIFS File Locks that CIFS clients have on this Filer's shares.

Properties

Name Type Required Restrictions Description
serial_number string false none Serial number of the Filer.
description string false none The Filer's description.
cifs_locks [object] false none none
» share string false none The name of the CIFS share that this file lock is on.
» file_path string false none The path to the locked file.
» type string false none The type of lock.
» user string false none The user name of the connected client.
» client string false none The IP Address of the client machine.
» client_name string false none The hostname of the connected client.
links object false none Links to related resources, collections, and actions.
» self Link false none none
» filer Link false none none

FilerConfigurationAutoupdate

{
  "hour": 0,
  "sun": true,
  "mon": true,
  "tue": true,
  "wed": true,
  "thu": true,
  "fri": true,
  "sat": true
}

Properties

Name Type Required Restrictions Description
hour integer false none Hour of the day to perform automatic updates. An integer between 0 and 23, with 0 = '12 AM', 1 = '1 AM', ... 23 = '11 PM'.
sun boolean false none Whether the Filer runs automatic updates on Sunday.
mon boolean false none Whether the Filer runs automatic updates on Monday.
tue boolean false none Whether the Filer runs automatic updates on Tuesday.
wed boolean false none Whether the Filer runs automatic updates on Wednesday.
thu boolean false none Whether the Filer runs automatic updates on Thursday.
fri boolean false none Whether the Filer runs automatic updates on Friday.
sat boolean false none Whether the Filer runs automatic updates on Saturday.

FilerConfigurationCIFS

{
  "aio_support": true,
  "deny_access": true,
  "fruit_support": true,
  "proto_level": "SMB3",
  "restrict_anonymous": true,
  "roundup_size": "string",
  "smb3": true,
  "smb_encrypt": true,
  "unix_ext": true,
  "veto_files": true
}

Properties

Name Type Required Restrictions Description
aio_support boolean false none Read only. Indicates whether Async IO is supported.
deny_access boolean false none Read only. Indicates whether denying a user access to a share is supported
fruit_support boolean false none Read only. Indicates whether Mac OS X Extensions are available.
proto_level string false none Read only. Indicates the CIFS protocol level of the Filer.

* SMB3 -- CIFS & SMB3 support.
* SMB2 -- CIFS & SMB2 support.
* '' -- CIFS support.
restrict_anonymous boolean false none Set whether to restrict anonymous user access.
roundup_size string false none Set the Allocation roundup size.
This rounds the file size on disk reported to clients. Disabled by
default, this should only be enabled when the system is being
accessed by older SMBv1 clients; otherwise, there may be a
performance impact.
May also affect file size reporting on some platforms.

* `` - Allocation roundup size is 1 MiB (default value for Filers older than version 9.0).
* 0 - Allocation roundup is disabled (default value for Filers version 9.0 and newer).
* 1048576 - Allocation roundup size is 1 MiB.
smb3 boolean false none Read only. Indicates whether SMB3 is supported.
smb_encrypt boolean false none Read only. Indicates whether SMB Encryption is supported.
unix_ext boolean false none Set whether Enhanced Support for POSIX clients is enabled.
veto_files boolean false none Read only. Indicates whether blocking files is supported. This can be configured through Shares settings.

Enumerated Values

Property Value
proto_level SMB3
proto_level SMB2
proto_level

FilerConfigurationFTP

{
  "masq_address": "string",
  "idle_timeout": 0,
  "anon_user": "string",
  "anon_group": "string",
  "protocols": [
    "string"
  ]
}

Properties

Name Type Required Restrictions Description
masq_address string false none Set the Masquerade address. This IP address is presented to the client instead of the local server's IP.
idle_timeout integer false none Set the amount of time (in seconds) that a user can stay connected while idle before being disconnected.
anon_user string false none Set the username a user must log in with in order to access FTP directories anonymously. This field is case sensitive. (default: anonymous)
anon_group string false none Set the Group assigned to the Anonymous User for file permissions. Note: This does not give all members of this group anonymous access. (default: anonymous)
protocols [string] false none Read only. List of FTP protocols supported by the Filer.

FilerConfigurationQuotaReportSchedule

{
  "schedules": [
    {
      "days": {
        "sun": true,
        "mon": true,
        "tue": true,
        "wed": true,
        "thu": true,
        "fri": true,
        "sat": true
      },
      "activation_hour": 0,
      "admin_report": true,
      "user_report": true,
      "threshold": 0
    }
  ]
}

Properties

Name Type Required Restrictions Description
schedules [object] false none none
» days object false none Set the days of the week on which the reports should be generated, at the hour specified in "activation_hour".
»» sun boolean false none Whether the Filer runs automatic updates on Sunday.
»» mon boolean false none Whether the Filer runs automatic updates on Monday.
»» tue boolean false none Whether the Filer runs automatic updates on Tuesday.
»» wed boolean false none Whether the Filer runs automatic updates on Wednesday.
»» thu boolean false none Whether the Filer runs automatic updates on Thursday.
»» fri boolean false none Whether the Filer runs automatic updates on Friday.
»» sat boolean false none Whether the Filer runs automatic updates on Saturday.
» activation_hour integer false none Hour of the day to generate and send the quota report. An integer between 0 and 23, with 0 = '12 AM', 1 = '1 AM', ... 23 = '11 PM'.
» admin_report boolean false none Set whether to generate the administrative report. This reports on all Directory Quota Violations, and is sent to the addresses set to receive email in Email Settings and Configurations.
» user_report boolean false none Set whether to generate the user report. This reports on individual Directory Quota Violations and will be sent to the address specifed in the Quota or the owner of the directory, if available (CIFS/AD mode only).
» threshold integer false none Report on Quotas where the usage is at or above the specified percent of the limit.

FilerPlatform

{
  "platform_name": "string",
  "cpu": {
    "model": "string",
    "frequency": 0,
    "sockets": 0,
    "cores": 0
  },
  "memory": "string",
  "cache_status": {
    "size": 0,
    "used": 0,
    "dirty": 0,
    "free": 0,
    "percent_used": 0
  }
}

Information about a Filer's platform, including hardware type and information about CPU, Memory, and cache.

Properties

Name Type Required Restrictions Description
platform_name string false none A description of the hardware platform this Filer runs on.
cpu object false none none
» model string false none Human-readable description of the CPU model.
» frequency number false none CPU Frequency in MHz.
» sockets integer false none Number of CPU sockets currently used on this Filer's platform.
» cores integer false none Total number of CPU cores across all CPUs.
memory string false none A string representing an integer. The size in megabytes of the Filer's memory.
cache_status object false none none
» size integer false none The size in bytes of the Filer's cache.
» used integer false none The amount in bytes of the Filer's cache currently in use.
» dirty integer false none The amount of data in bytes belonging to files currently marked as needing to be written to storage or re-read into the cache.
» free integer false none The amount in bytes of the Filer's cache currently available.
» percent_used number false none The percentage of the cache currently in use, i.e. used/size.

FilerServicesMobile

{
  "limit_single_device": true,
  "additional_api_port": 0,
  "session_expiration_time": 0,
  "allowed_devices": [
    "OSX"
  ]
}

Properties

Name Type Required Restrictions Description
limit_single_device boolean false none Set whether to restrict users to using a single mobile device. If true, each user account can only have one mobile device associated with it which is allowed to connect to Mobile Service. If false, each user account can have any number of mobile devices registered.
additional_api_port integer false none If set, allow access to Mobile service on the specified port. Set to a valid port number 1-65535. Set to null to disable.
session_expiration_time integer false none If set, users must reauthenticate after their session has expired. Enter a value in hours. If set to 0, the sessions never expire.
allowed_devices [string] false none none

FilerServicesSupport

{
  "connected": true,
  "enabled": true,
  "running": true,
  "timeout": 0
}

Enable or disable Remote Support, set the timeout before it is automatically disabled, and report if there is an active connection from Nasuni Support.

Properties

Name Type Required Restrictions Description
connected boolean false none Read only. Indicates if Nasuni Support is currently connected for Remote Support.
enabled boolean false none Enable or disable Remote Support.
running boolean false none none
timeout integer false none Set the timeout in seconds after which Remote Support is automatically disabled.

Message

{
  "id": "string",
  "filer_serial_number": "string",
  "description": "string",
  "code": "string",
  "status": "synced",
  "send_time": "string",
  "expiration_time": "string",
  "response_time": "string",
  "initiated_by": "string",
  "links": {
    "self": {
      "href": "string",
      "method": "string"
    },
    "filer": {
      "href": "string",
      "method": "string"
    },
    "acknowledge": {
      "href": "string",
      "method": "string"
    }
  },
  "error": {
    "code": "error",
    "description": "string"
  }
}

The message object is used to track an action that we want the Filer to perform.

Properties

Name Type Required Restrictions Description
id string false none ID of the message.
filer_serial_number string false none Identifier to the Filer the message is associated with.
description string false none Description of the intent of message.
code string false none A code identifing the intent of the message.
status string false none Current status of the message.
* 'synced' - Message has been received by the Filer, and the Filer returned a success response. * 'pending' - Message is currently in transit. * 'failure' - Messages has been recieved by the Filer, but returned an error response.
send_time string false none Time the message was sent.
expiration_time string false none Time a synced message will expire and be removed from the messages list.
response_time string false none Time a message response was received.
initiated_by string false none The username of the user who triggered the message, or '[console]' if triggered by the NMC itself.
links object false none Links to related resources, collections, and actions.
» self Link false none none
» filer Link false none none
» acknowledge Link false none none
error Error false none none

Enumerated Values

Property Value
status synced
status pending
status failure

Notification

{
  "id": 0,
  "date": "string",
  "priority": "noop",
  "name": "string",
  "message": "string",
  "group": "string",
  "acknowledged": true,
  "sticky": true,
  "urgent": true,
  "remoteid": "string",
  "links": {
    "self": {
      "href": "string",
      "method": "string"
    },
    "filer": {
      "href": "string",
      "method": "string"
    }
  }
}

Representation of a Notification object.

Properties

Name Type Required Restrictions Description
id integer false none Notification identifier.
date string false none The date the notification was triggered.
priority string false none The priority level of the notification.
name string false none A name describing the type of notification. Notifications registered to pre-7.11
filers will be coded as "UNKNOWN".
message string false none The notification message body.
group string false none The group (category) the notification belongs to.
acknowledged boolean false none A flag indicating whether the notification has been acknowledged.
sticky boolean false none A flag indicating whether the notification is transient in the application UI.
urgent boolean false none A flag indicating whether the notification is urgent.
remoteid string false none The remote notification ID (if filer is not null).
links object false none Links to related resources, collections, and actions.
» self Link false none none
» filer Link false none none

Enumerated Values

Property Value
priority noop
priority alert
priority admin
priority error
priority warning
priority info

Paging

{
  "href": "string",
  "limit": 0,
  "next": "string",
  "offset": 0,
  "previous": "string",
  "total": 0
}

The paging object provides a container for a listing of objects, defining the start, end, and total size of the listing. Any endpoint that returns a list of items, will likely be wrapped in a paging object.

Properties

Name Type Required Restrictions Description
href string false none A link to the requested endpoint.
limit integer false none The maximum number of items in a page.
next string false none A link to the next page of objects. The value will be null if there isn't one.
offset integer false none The item number the page starts on.
previous string false none A link to the previous page of objects. The value will be null if there isn't one.
total integer false none Total number of items available at the requested endpoint.

Share

{
  "id": 0,
  "filer_serial_number": "string",
  "volume_guid": "string",
  "name": "string",
  "path": "string",
  "comment": "string",
  "readonly": true,
  "browseable": true,
  "hosts_allow": "string",
  "hide_unreadable": true,
  "enable_previous_vers": true,
  "case_sensitive": true,
  "enable_snapshot_dirs": true,
  "homedir_support": 0,
  "mobile": true,
  "browser_access": true,
  "browser_access_settings": {
    "shared_links_enabled": true,
    "link_force_password": true,
    "link_allow_rw": true,
    "external_share_url": "string",
    "link_expire_limit": 0,
    "link_auth": {
      "authall": true,
      "allow_groups_ro": [
        "string"
      ],
      "allow_groups_rw": [
        "string"
      ],
      "deny_groups": [
        "string"
      ],
      "allow_users_ro": [
        "string"
      ],
      "allow_users_rw": [
        "string"
      ],
      "deny_users": [
        "string"
      ]
    }
  },
  "aio_enabled": true,
  "veto_files": "string",
  "fruit_enabled": true,
  "smb_encrypt": "",
  "auth": {
    "authall": true,
    "rw_groups": [
      "string"
    ],
    "ro_groups": [
      "string"
    ],
    "deny_groups": [
      "string"
    ],
    "ro_users": [
      "string"
    ],
    "rw_users": [
      "string"
    ],
    "deny_users": [
      "string"
    ]
  },
  "links": {
    "self": {
      "href": "string",
      "method": "string"
    },
    "filer": {
      "href": "string",
      "method": "string"
    },
    "volume": {
      "href": "string",
      "method": "string"
    }
  }
}

CIFS Share

Properties

Name Type Required Restrictions Description
id integer false none Share identifier.
filer_serial_number string false none Unique identifier for the associated filer.
volume_guid string false none Unique identifier for the associated volume.
name string false none The name of the CIFS share.
path string false none Path of the share.
comment string false none Any comments regarding the share.
readonly boolean false none If enabled, users can not change the contents of the share.
browseable boolean false none If enabled, this share will appear when browsing.
hosts_allow string false none Hosts allowed to access the share. IP addresses or IP address/netmask values separated by spaces. Blank allows all hosts
hide_unreadable boolean false none Files and folders that the user cannot access do not appear in folder listings.
enable_previous_vers boolean false none Allow users to view and restore files using the Previous Versions tab in Windows
case_sensitive boolean false none Files and folders are considered different if the case of letters in the name differs. (Enabling case sensitivity aids performance)
enable_snapshot_dirs boolean false none Clients are allowed to access hidden snapshot directories within the share. Volumes must have Snapshot Directories enabled.
homedir_support integer false none When enabled, the target folder path for the share is automatically
appended with a folder named for the user. Possible values:

* 0 - Disable
* 2 - Enable
mobile boolean false none Enable desktop and/or mobile device support
browser_access boolean false none Enable web access
browser_access_settings object false none Settings that can be applied to web access.
» shared_links_enabled boolean false none Allow creating shared links to Web Access.
» link_force_password boolean false none Require passwords for all shared links.
» link_allow_rw boolean false none Allow the user to create writable shared links to directories.
» external_share_url string false none External hostname for shared links.
» link_expire_limit integer false none none
» link_auth object false none Shared link authentication settings.
»» authall boolean false none When true, all users will be allowed to create shared links.
When false, no user will have access to the shared links until a user,
or a group the user is a member of, is specified.
»» allow_groups_ro [GroupNameField] false none Groups with read-only access to shared links.
»» allow_groups_rw [GroupNameField] false none Groups with read-write access to shared links.
»» deny_groups [GroupNameField] false none Groups denied access to shared links.
»» allow_users_ro [UserNameField] false none Users with read-only access to shared links.
»» allow_users_rw [UserNameField] false none Users with read-write access to shared links.
»» deny_users [UserNameField] false none Users denied access to shared links.
aio_enabled boolean false none Asynchronous I/O. Enable concurrent read/write access per client connection.
veto_files string false none Block files. Specify file or directory name patterns that the share will make both
invisible and inaccessible. Enter one pattern per line.
The wildcard characters '*' and '?' may be used to specify multiple files
or directories. The '/' character is not valid. Note: This feature can break compatibility with some clients.
fruit_enabled boolean false none Enhances share behavior, including SMB2 protocol support, for Mac OS X Clients when possible.
smb_encrypt string false none Control if clients are desired or required to use SMB encryption when connecting to the share. Includes SMB3 encryption for Windows clients. Empty string indicates that client usage of encryption is optional.
auth object false none Share authentication settings.
» authall boolean false none When true, all Users can authenticate. When false, only specific
Groups and Users can authenticate. In this situation, no user will
have access to the share until a user, or a group the user is a member of, is specified.
» rw_groups [GroupNameField] false none Groups with read-write access to the share.
» ro_groups [GroupNameField] false none Groups with read-only access to the share.
» deny_groups [GroupNameField] false none Groups to deny access to the share.
» ro_users [UserNameField] false none Users with read-only access to the share.
» rw_users [UserNameField] false none Users with read-write access to the share.
» deny_users [UserNameField] false none Users to deny access to the share.
links object false none Links to related resources, collections, and actions.
» self Link false none none
» filer Link false none none
» volume Link false none none

Enumerated Values

Property Value
homedir_support 0
homedir_support 2
smb_encrypt
smb_encrypt desired
smb_encrypt required

ValidationError

{
  "code": "string",
  "description": "string",
  "errors": [
    {
      "field": "string",
      "errors": [
        "string"
      ]
    }
  ]
}

Properties

Name Type Required Restrictions Description
code string false none none
description string false none none
errors [FieldError] false none none

Volume

{
  "guid": "string",
  "filer_serial_number": "string",
  "name": "string",
  "nmc_managed": true,
  "protocols": {
    "permissions_policy": "NTFS60",
    "protocols": [
      "CIFS"
    ]
  },
  "antivirus_service": {
    "enabled": true,
    "days": {
      "sun": true,
      "mon": true,
      "tue": true,
      "wed": true,
      "thu": true,
      "fri": true,
      "sat": true
    },
    "check_files_immediately": true,
    "allday": true,
    "start": 0,
    "stop": 0,
    "frequency": 0
  },
  "remote_access": {
    "enabled": true,
    "access_permissions": "readonly",
    "filer_access": [
      {
        "filer_serial_number": "string",
        "permission": "disabled"
      }
    ]
  },
  "quota": 0,
  "case_sensitive": true,
  "snapshot_retention": {
    "retain": "INFINITE",
    "number": 0,
    "years": 0,
    "months": 0,
    "days": 0
  },
  "cloud_io": {
    "dedupe": true,
    "compression": true,
    "chunk_size": 0
  },
  "provider": {
    "cred_id": "string",
    "name": "string",
    "shortname": "string",
    "location": "string"
  },
  "auth": {
    "authenticated_access": true,
    "policy": "ads",
    "policy_label": "string"
  },
  "links": {
    "self": {
      "href": "string",
      "method": "string"
    },
    "filer": {
      "href": "string",
      "method": "string"
    },
    "filer_settings": {
      "href": "string",
      "method": "string"
    },
    "filer_connections": {
      "href": "string",
      "method": "string"
    },
    "shares": {
      "href": "string",
      "method": "string"
    },
    "exports": {
      "href": "string",
      "method": "string"
    },
    "ftp_directories": {
      "href": "string",
      "method": "string"
    },
    "antivirus_violations": {
      "href": "string",
      "method": "string"
    }
  }
}

Representation of a Volume object.

Properties

Name Type Required Restrictions Description
guid string false none Volume identifier.
filer_serial_number string false none Identifier to the Filer the volume was created on.
name string false none The name of the volume.
nmc_managed boolean false none Indicates if the volume is fully managed by the NMC.
protocols object false none Volume protocol settings.
» permissions_policy string false none Permission policy of the volume. Possible values:

* 'NTFS60' - NTFS Compatible Mode
* 'NTFSONLY710' - NTFS Exclusive Mode
* 'POSIX60' - POSIX Mixed Mode
* 'MODEBITS60' - UNIX/NFS Permissions Only Mode
* 'PUBLICMODE60' - Unauthenticated Access Mode
» protocols [string] false none none
antivirus_service object false none Volume Antivirus Service settings
» enabled boolean false none none
» days object false none Days of the week the antivirus service will run.
»» sun boolean false none none
»» mon boolean false none none
»» tue boolean false none none
»» wed boolean false none none
»» thu boolean false none none
»» fri boolean false none none
»» sat boolean false none none
» check_files_immediately boolean false none If true, files will be checked as they are written (CIFS volumes only).
» allday boolean false none If true, the antivirus service will run all day.
» start integer false none Hour of the day to start the antivirus service. An integer between 0 and 23, with 0 = '12 AM', 1 = '1 AM', ... 23 = '11 PM'.
» stop integer false none Hour of the day to stop the antivirus service. An integer between 0 and 23, with 0 = '12 AM', 1 = '1 AM', ... 23 = '11 PM'.
» frequency integer false none Frequency the service will run (minutes).
remote_access object false none Volume remote access settings
» enabled boolean false none If true, remote access is enabled for the volume.
» access_permissions string false none The remote access permission for this volume applies to all other Nasuni Filers on your account.
A value of 'custom' allows providing access permissions per Nasuni Filer (see 'filer_access' property).
» filer_access [object] false none none
»» filer_serial_number string false none Filer identifier
»» permission string false none Access permission for the Filer.
quota integer false none Maximum volume capacity in gigabytes. Set to 0 for unlimited. Quotas are applied after each successful snapshot.
case_sensitive boolean false none If true, the volume is case-sensitive. CIFS-only volumes perform better when volume is case-insensitive (value of false).
snapshot_retention object false none Volume snapshot retention
» retain string false none Type of snapshot retention imposed. Possible values:

* 'INFINITE' - All snapshots
* 'BY_COUNT' - Set number of snapshots
* 'BY_AGE' - Snapshots within a range
» number integer false none Number of snapshots to retain.
» years integer false none Years to retain snapshots.
» months integer false none Months to retain snapshots.
» days integer false none Days to retain snapshots.
cloud_io object false none Volume Cloud I/O settings.
» dedupe boolean false none If true, deduplication is enabled. Deduplication is a data compression technique for eliminating duplicate copies of repeating data.
» compression boolean false none If true, compression (via zlib) is enabled.
» chunk_size integer false none Chunk size in bytes for cloud I/O. Value of zero means the default value will be used.
provider object false none none
» cred_id string false none Credential identifier.
» name string false none Fullname of the cloud provider.
» shortname string false none Shortname (code) of the cloud provider.
» location string false none Location/region the volume was created in.
auth object false none none
» authenticated_access boolean false none If true, the users must authenticate to access the volume. If false, the volume is publicly available to all users.
» policy string false none Authentication policy.
» policy_label string false none Full name of the Authentication policy.
links object false none Links to related resources, collections, and actions.
» self Link false none none
» filer Link false none none
» filer_settings Link false none none
» filer_connections Link false none none
» shares Link false none none
» exports Link false none none
» ftp_directories Link false none none
» antivirus_violations Link false none none

Enumerated Values

Property Value
permissions_policy NTFS60
permissions_policy NTFSONLY710
permissions_policy POSIX60
permissions_policy MODEBITS60
permissions_policy PUBLICMODE60
access_permissions readonly
access_permissions readwrite
access_permissions custom
permission disabled
permission readonly
permission readwrite
retain INFINITE
retain BY_COUNT
retain BY_AGE
policy ads
policy ldapds
policy public

VolumeConnection

{
  "connected": true,
  "volume_guid": "string",
  "filer_serial_number": "string",
  "links": {
    "self": {
      "href": "string",
      "method": "string"
    },
    "filer": {
      "href": "string",
      "method": "string"
    }
  }
}

Volume to filer connection.

Properties

Name Type Required Restrictions Description
connected boolean false none If true, the specified filer is connected to the volume.
volume_guid string false none Volume identifier.
filer_serial_number string false none Filer identifier.
links object false none Links to related resources, collections, and actions.
» self Link false none none
» filer Link false none none

VolumeFilerSetting

{
  "guid": "string",
  "filer_serial_number": "string",
  "name": "string",
  "type": "master",
  "sync_schedule": {
    "days": {
      "sun": true,
      "mon": true,
      "tue": true,
      "wed": true,
      "thu": true,
      "fri": true,
      "sat": true
    },
    "allday": true,
    "start": 0,
    "stop": 0,
    "frequency": 0,
    "auto_cache_allowed": true,
    "auto_cache_min_file_size": 0
  },
  "snapshot_schedule": {
    "days": {
      "sun": true,
      "mon": true,
      "tue": true,
      "wed": true,
      "thu": true,
      "fri": true,
      "sat": true
    },
    "allday": true,
    "start": 0,
    "stop": 0,
    "frequency": 0
  },
  "snapshot_access": true,
  "file_alerts_service": {
    "enabled": true,
    "patterns": [
      "string"
    ]
  },
  "auditing": {
    "enabled": true,
    "events": {
      "create": true,
      "delete": true,
      "rename": true,
      "close": true,
      "security": true,
      "metadata": true,
      "write": true,
      "read": true
    },
    "logs": {
      "write_audit_logs": true,
      "prune_audit_logs": true,
      "days_to_keep": 0,
      "exclude_by_default": true,
      "include_takes_priority": true,
      "include_patterns": [
        "string"
      ],
      "exclude_patterns": [
        "string"
      ]
    }
  },
  "status": {
    "accessible_data": 0,
    "data_not_yet_protected": 0,
    "first_snapshot": "string",
    "last_snapshot": "string",
    "last_snapshot_start": "string",
    "last_snapshot_end": "string",
    "last_snapshot_version": 0,
    "snapshot_status": "idle",
    "snapshot_percent": 0,
    "ftp_dir_count": 0,
    "export_count": 0,
    "share_count": 0
  },
  "links": {
    "self": {
      "href": "string",
      "method": "string"
    },
    "shares": {
      "href": "string",
      "method": "string"
    },
    "exports": {
      "href": "string",
      "method": "string"
    },
    "ftp_directories": {
      "href": "string",
      "method": "string"
    },
    "antivirus_violations": {
      "href": "string",
      "method": "string"
    }
  }
}

Filer specfic volume settings.

Properties

Name Type Required Restrictions Description
guid string false none Volume identifier.
filer_serial_number string false none Filer identifier.
name string false none Display name for the volume on the specifed filer.
type string false none Type of Volume. Possible values:

* 'master' - This volume is owned by this filer.
* 'remote' - This volume is remote, relative to this filer.
sync_schedule object false none Sync schedule
» days object false none Days of the week to perform syncs.
»» sun boolean false none none
»» mon boolean false none none
»» tue boolean false none none
»» wed boolean false none none
»» thu boolean false none none
»» fri boolean false none none
»» sat boolean false none none
» allday boolean false none If true, will sync all day.
» start integer false none Hour of the day to start the sync. An integer between 0 and 23, with 0 = '12 AM', 1 = '1 AM', ... 23 = '11 PM'.
» stop integer false none Hour of the day to stop the sync. An integer between 0 and 23, with 0 = '12 AM', 1 = '1 AM', ... 23 = '11 PM'.
» frequency integer false none Frequency that sync will run (minutes).
» auto_cache_allowed boolean false none If true, auto cache will be enabled for the entire volume. When enabled, auto cache may be enabled at a folder level.
» auto_cache_min_file_size integer false none Auto Cache Minimum File Size in bytes. When Auto Cache is enabled, only files greater than or equal to the specified size will be automatically brought into cache.
snapshot_schedule object false none Snapshot schedule
» days object false none Days of the week to allow snapshots to occur.
»» sun boolean false none none
»» mon boolean false none none
»» tue boolean false none none
»» wed boolean false none none
»» thu boolean false none none
»» fri boolean false none none
»» sat boolean false none none
» allday boolean false none If true, will allow snapshots all day.
» start integer false none Hour of the day to start allowing snapshots. An integer between 0 and 23, with 0 = '12 AM', 1 = '1 AM', ... 23 = '11 PM'.
» stop integer false none Hour of the day to stop allowing snapshots. An integer between 0 and 23, with 0 = '12 AM', 1 = '1 AM', ... 23 = '11 PM'.
» frequency integer false none Frequency that snapshots will occur (minutes).
snapshot_access boolean false none If true, the snapshot directory is accessible.
file_alerts_service object false none File Alert service configuration.
» enabled boolean false none If true, the file alert service is enabled.
» patterns [string] false none File/Directory patterns.
auditing object false none Volume auditing settings.
» enabled boolean false none If true, file system auditing is enabled for the volume.
» events object false none Various file system events that can be audited.
»» create boolean false none If true, will log file, directory, and link creation operations.
»» delete boolean false none If true, will log file and directory delete operations.
»» rename boolean false none If true, will log file and directory rename operations.
»» close boolean false none If true, will log file close operations.
»» security boolean false none If true, will log file and directory ownership and permission changes.
»» metadata boolean false none If true, will log changes to update time and extended attributes.
»» write boolean false none If true, will log file write and truncate operations.
»» read boolean false none If true, will log file and directory read operations.
» logs object false none Audit log settings.
»» write_audit_logs boolean false none If true, audit logs will be wrote to the .nasuni directory for this volume.
»» prune_audit_logs boolean false none If true, audit logs older than the specified number of days will be deleted. The number of days can be specified by the 'days_to_keep' property.
»» days_to_keep integer false none Number of days to keep audit logs. A value of 0 will disable pruning of audit logs.
»» exclude_by_default boolean false none Do not audit operations for any path not matching an entry in the include list (see 'include_patterns').
»» include_takes_priority boolean false none Operations on items matching an entry in the include list will always be included even if matching an entry in the exclude list (see 'exclude_patterns').
»» include_patterns [string] false none List of path patterns to include in the audit logs.
»» exclude_patterns [string] false none List of path patterns to exclude from the audit logs.
status object false none Volume status for a particular Filer.
» accessible_data integer false none Number of bytes of data that are accessible via this volume.
» data_not_yet_protected integer false none Number of bytes of data that have not been protected.
» first_snapshot string false none Datetime of the first snapshot that occured on the volume.
» last_snapshot string false none Datetime of the last snapshot that occured on the volume.
» last_snapshot_start string false none Datetime of the start of the last snapshot.
» last_snapshot_end string false none Datetime of the end of the last snapshot.
» last_snapshot_version integer false none The version number of the last snapshot that occured.
» snapshot_status string false none Current snapshot status. Possible values:

* 'idle' - No snapshots are in progress.
* 'pending' - A snapshot is pending and will be preformed soon.
* 'in_progress' - A snapshot is in progress.
» snapshot_percent integer false none If a snapshot is 'in_progress', this will show the percentage that it is complete.
» ftp_dir_count integer false none Number of FTP directories accessible via this volume.
» export_count integer false none Number of Exports accessible via this volume.
» share_count integer false none Number of Shares accessible via this volume.
links object false none Links to related resources, collections, and actions.
» self Link false none none
» shares Link false none none
» exports Link false none none
» ftp_directories Link false none none
» antivirus_violations Link false none none

Enumerated Values

Property Value
type master
type remote
snapshot_status idle
snapshot_status pending
snapshot_status in_progress

ExportAccessModeField

"root_squash"

Controls what User IDs are allowed when a client writes to the exported directory. Possible values:

Properties

Name Type Required Restrictions Description
anonymous string false none Controls what User IDs are allowed when a client writes
to the exported directory. Possible values:

* 'root_squash' - Normal Users Permitted
* 'no_root_squash' - All Users Permitted
* 'all_squash' - Anonymize All Users

Enumerated Values

Property Value
anonymous root_squash
anonymous no_root_squash
anonymous all_squash

ExportHostSpecField

"string"

Hostname, IP address with optional netmask, or @-prefixed netgroup names allowed to access the export. If blank, all hosts on your network can access the export. Hostnames may contain the * character as a wildcard.

Properties

Name Type Required Restrictions Description
anonymous string false none Hostname, IP address with optional netmask, or @-prefixed netgroup names allowed to access the export. If blank, all hosts on your network can access the export. Hostnames may contain the * character as a wildcard.

ExportPerfModeField

"sync"

Controls the method in which the NFS server replies to clients. Changing this may impact the safety of data if the Nasuni Filer is shut down abnormally! Possible values:

Properties

Name Type Required Restrictions Description
anonymous string false none Controls the method in which the NFS server replies to clients.
Changing this may impact the safety of data if the Nasuni Filer is shut down abnormally!
Possible values:

* 'sync' - Default
* 'no_wdelay' - No Write Delay
* 'async' - Asynchronous Replies

Enumerated Values

Property Value
anonymous sync
anonymous no_wdelay
anonymous async

ExportReadOnlyField

true

If true, files and directories cannot be changed on the exported directory.

Properties

Name Type Required Restrictions Description
anonymous boolean false none If true, files and directories cannot be changed on the exported directory.

ExportSecOptionsField

[
  "sys"
]

Security options in use by the exported directory. Multiple options may be applied, but they cannot be repeated.

Properties

None

GroupNameField

"string"

Group name

Properties

Name Type Required Restrictions Description
anonymous string false none Group name

UserNameField

"string"

User name

Properties

Name Type Required Restrictions Description
anonymous string false none User name