2.5 Net Folders

2.5.1 Resource Representations

NetFolder

{
   "id": long,
   "name": string,
   "server": LongIdLinkPair Resource,
   "relative_path": string,
   "home_dir": boolean,
   "inherit_sync_schedule": boolean,
   "sync_schedule": Schedule Resource,
   "assigned_rights": [
      AssignedRight Resource 
   ],
   "inherit_index_context": boolean,
   "index_content": boolean,  
   "inherit_jits_settings": boolean,
   "jits_enabled": boolean,
   "jits_max_age": long,
   "jits_max_acl_age": long,
   "inherit_client_sync_settings": boolean,
   "allow_desktop_sync": boolean,  
   "allow_client_initiated_sync": boolean
}

NetFolderSyncStatus

{
   "status": string ("ready", "taken", "started", "stopped", "finished", "aborted", "canceled", or "deleting"),
   "node_ip_address": string,
   "start_date": dateTime,
   "end_date": dateTime,
   "directory_only": boolean,
   "directory_enumeration_failure": boolean,
   "files_found": integer,
   "files_added": integer,
   "files_expunged": integer,
   "files_modified": integer,
   "files_with_modified_acl": integer,
   "files_with_modified_owner: integer,
   "folder_found": integer,
   "folders_added": integer,
   "folders_expunged": integer,
   "folders_with_modified_acl": integer,
   "folders_with_modified_owner": integer,
   "entries_expunged": integer,
   "failures": integer,
   "folders_processed": integer
} 

2.5.2 List

List All Net Folders

To list all net folders (including home folders), use the “net_folders” link from the root admin resource:

[Request]
> curl –k –u admin:novell https://amethyst.wal.novell.com:8443/rest/admin/net_folders

[Response]
{
   "first":0,
   "count":2,
   "total":2",
   "items":[{
      "id":99,
      "name":"Home",
      "href":"/admin/net_folders/99",
      "server":{
         "id":1,
         "href":"/admin/net_folder_servers/1"
      },
      "relative_path":"dlewis",
      "home_dir":true,
      "links":[{
         "rel":"sync",
         "href":"/admin/net_folders/99/sync"
      }],
      "inherit_client_sync_settings": true, 
      "inherit_index_content": true, 
      "inherit_jits_settings": true, 
      "inherit_sync_schedule": true, 
      "index_content": false,
      "jits_enabled": true,
      "jits_max_age": 60000,
      "jits_max_acl_age": 3600000,
      "allow_client_initiated_sync": false, 
      "allow_desktop_sync": true,
   },{
      ...
   }]
}

To list only home folders, include the "type=home" query parameter:

[Request]
> curl –k –u admin:novell https://amethyst.wal.novell.com:8443/rest/admin/net_folders?type=home

To exclude home folders from the results, add the "type=net" query parameter:

[Request]
> curl –k –u admin:novell https://amethyst.wal.novell.com:8443/rest/admin/net_folders?type=net

List Net Folders associated with Net Folder Server

To list net folders associated with a particular net folder server, use the “net_folders” related link from the individual net folder server object (href: "/net_folder_servers/{id}/net_folders"):

[Request]
> curl –k –u admin:novell https://amethyst.wal.novell.com:8443/rest/admin/net_folder_servers/1/net_folders
 
[Response similar to previous response]

Listing Full Details of Net Folders

Some attributes of net folders (assigned rights and sync schedule) require additional database lookups, so they are not returned by default. To return this information in the listings, add the “include_full_details=true” query parameter:

[Request]
> curl –k –u admin:novell \
  https://amethyst.wal.novell.com:8443/rest/admin/net_folders?include_full_details=true

[Alternate Request]
> curl -k -u admin:novell \
  https://amethyst.wal.novell.com:8443/rest/admin/net_folder_servers/1/net_folders?include_full_details=true

[Response]
{
   "first":0,
   "count":2,
   "total":2",
   "items":[{
      "id":99,
      "name":"Home",
      "href":"/admin/net_folders/99",
      "server":{
         "id":1,
         "href":"/admin/net_folder_servers/1"
      },
      "relative_path":"dlewis",
      "home_dir":true,
      "links":[{
         "rel":"sync",
         "href":"/admin/net_folders/99/sync"
      }],
      "inherit_client_sync_settings": true, 
      "inherit_index_content": true, 
      "inherit_jits_settings": true, 
      "inherit_sync_schedule": true, 
      "index_content": false,
      "jits_enabled": true,
      "jits_max_age": 60000,
      "jits_max_acl_age": 3600000,
      "allow_client_initiated_sync": false, 
      "allow_desktop_sync": true,
      "assigned_rights":[{
         "access":{
            "role":"ACCESS",
            "sharing":{
               "internal":true,
               "external":false,
               "public":false,
               "public_link":false,
               "grant_reshare":true
            }
         },
         "principal":{
            "id":116,
            "type":"group",
            "href":"/groups/116"
         }
      }],
      "sync_schedule":{
         "enabled":true,
         "when":"daily",
         "at":{
            "hour":0,
            "minute":0
         }
      }
   },{
      ...
   }]
}

2.5.3 Create

You can create a new folder by POSTing a net folder object to either of the net_folders resources:

[Request]
> curl -k -u admin:novell https://amethyst.wal.novell.com:8443/rest/admin/net_folder_servers/5/net_folders \
  -X POST -H "Content-Type: application/json" -d '{"name":"testing5","relative_path":"testing"}'
 
[Alternate Request]
> curl -k -u admin:novell https://amethyst.wal.novell.com:8443/rest/admin/net_folders -X POST \
  -H "Content-Type: application/json" -d '{"name":"testing6","server":{"id":5},"relative_path":"testing"}'

 [Response]
{
 ... (Full net folder object)
}

Notice that the net folder server (id: 5) must be specified in either the request URL or the POST body.

2.5.4 Modify

To modify an existing net folder, PUT a net folder object to the individual net folder server resource.  Only the net folder attributes that are included in the request body are updated. 

[Request]
> curl -k -u admin:novell https://amethyst.wal.novell.com:8443/rest/admin/net_folders/1 \
 -X PUT -H "Content-Type: application/json" \
 -d '{"sync_schedule":{"enabled":true,"when":"daily","at":{"hour":1}}}'
 
[Response]
{
 ... (Full net folder object)
}

2.5.5 Delete

[Request]
> curl -k -u admin:novell https://amethyst.wal.novell.com:8443/rest/admin/net_folders/99 -X DELETE
 
[Empty Response]

2.5.6 Net Folder Sync

Get Sync Status

To get the sync status for a net folder, use the “sync” related link from the net folder object:

[Request]
 > curl -u admin:novell -k https://amethyst.wal.novell.com:8443/rest/admin/net_folders/99/sync

[Response]
{
   "status":"finished",
   "failures":0,
   "node_ip_address":"164.99.211.53",
   "start_date":"2014-10-22T00:00:00Z",
   "end_date":"2014-10-22T00:00:05Z",
   "directory_only":false,
   "directory_enumeration_failure":false,
   "files_found":54,
   "files_added":0,
   "files_expunged":0,
   "files_modified":0,
   "files_with_modified_acl":0,
   "files_with_modified_owner":0,
   "folders_found":10,
   "folders_added":0,
   "folders_expunged":0,
   "folders_with_modified_acl":0,
   "folders_with_modified_owner":0,
   "entries_expunged":0,
   "folders_processed":11
}

Status is one of “none”, ”ready”, ”taken”, ”started”, ”stopped”, ”finished”, “aborted”, “canceled”, or “deleting”. Of those, “none, “ready”, “started” and “finished” are the most common.

Trigger Net Folder Sync

To cause Filr to synchronize a net folder, POST to the net folder’s “sync” link:

[Request]
> curl -u admin:novell -k https://amethyst.wal.novell.com:8443/rest/admin/net_folders/99/sync -X POST
 
[Response]
{
... (Same as above)
}

Stop Net Folder Sync

You can stop an in-progress sync by sending a DELETE request to the sync link:

[Request]
> curl -u admin:novell -k https://amethyst.wal.novell.com:8443/rest/admin/net_folders/99/sync -X DELETE

[Response]
{
... (Same as above)
}