File Director REST API

File Director (2020.3 and later) now supports a REST API. This enables administrators with required coding skills to develop their own scripts and automate appliance management tasks.

The API use-case described is for upgrading an appliance or a cluster of appliances.

Note, unless otherwise stated, all APIs return body in JSON format.

Authentication

[POST /auth/logon]

Endpoint

Description

[POST /auth/logon]

REST API is using JWT tokens to authenticate requests. Each API endpoint returns 401 http error code unless a valid token is provided in the 'Authorization' header.

The token can be obtained with the /auth/logon API.

Parameters (multipart/form-data) username - username used for logon (can be 'appliance' user or any user defined as Administrator) [required]

password - corresponding password [required]

Response examples

HTTP code

HTTP body

Details

401

No payload Bad credentials. Valid credentials need to be sent to authenticate the user.

200

{"token":"eyJhbGciOiJIUzI1NiJ9.eyJleHAiOjE2MDI4NDY4NzgsImlhdCI6MTYwMjg0MzI3OCwia
XNzIjoiZmlsZWRpcmVjdG9yLml2YW50aS5jb20iLCJyb2xlcyI6WyJzdGF0dXMiLCJjb25maWciL
CJwb2xpY3kiXSwidXNlciI6eyJ1c2VybmFtZSI6IkFkbWluaXN0cmF0b3IifX0.zVJZiNkoxRBJOuBM
tnydZbAmm4yhQaSPwrdAx1jcB0"}
Returns an auth token that should be sent with any future request (in 'Authorization' header)

400

{ "error": "Error, Missing username and/or password" } Request needs to include all the required parameters

API Navigation

[GET /products]

Endpoint

Description

[GET /products]

Returns a list of products that can be managed using REST API.

Response examples

HTTP code

HTTP body

Details

200

[{"name":"platform"},{"name":"filedirector"}] Use the returned data to navigate the REST API endpoints

[GET /products/filedirector]

Item

Description

[GET /products/filedirector]

Returns a list of high level API endpoints available for "File Director" product.

Response examples

HTTP code

HTTP body

Details

200

{"name":"services"} Use the returned data to navigate the REST API endpoints

[GET /products/platform]

Endpoint

Description

[GET /products/platform]

Returns a list of high level API endpoints available for "Platform" product.

Response examples

HTTP code

HTTP body

Details

200

{"name":"services"} Use the returned data to navigate the REST API endpoints

[GET /products/filedirector/services]

Endpoint

Information

[GET /products/filedirector/services]

Returns a list of "File Director" services that can be managed by REST API.

Response examples

HTTP code

HTTP body

Details

200

[] Use the returned data to navigate the REST API endpoints

[GET /products/platform/services]

Endpoint

Information

[GET /products/platform/services]

Returns a list of "Platform" services that can be managed by REST API.

Response examples

HTTP code

HTTP body

Details

200

{"name":"patch"} Use the returned data to navigate the REST API endpoints

Platform: patch service

Patch service is used to apply File Director appliance updates provided by Ivanti. Both standalone (single node) and cluster deployments can be updated. In a case of a cluster, make sure one of its nodes is marked as a patch server.

A recommended workflow for update script is as follows:

  1. Obtain authentication token with [POST /auth/logon]

  2. Upload the update file (obtained from Ivanti) with [POST /products/platform/services/patch]

  3. Wait until the update is staged to each of the nodes. This can be checked by periodically calling the [GET /products/platform/services/patch] API and checking the 'patching_status'. The status should have a value of "staged" for each of the nodes in 'patching_status' hash.

  4. Start the patching process with [POST /products/platform/services/patch/apply].

  5. Wait until the patching process is complete. This can be checked by periodically calling the [GET /products/platform/services/patch] api and checking the 'patching_status'. The status should have a value of "no updates" for each of the nodes in 'patching_status' hash. This can take some time, depending on the nature of the update. During this process nodes get rebooted so the script needs to be able to handle connection exceptions.

[GET /products/platform/services/patch]

Endpoint

Information

[GET /products/platform/services/patch]

Gets details about the currently staged patch. Returns a list of nodes and their patching status as well as update details.

Response examples

HTTP code

HTTP body

Details

200

{"patching_status":{"192.168.225.11":{"status":"no updates"}},"update_details":null} No patch is currently staged for update.

200

{"patching_status":{"192.168.225.11":{"status":"staged"}},"update_details":{"components":[{"revision":"4.100.0.0","product":"Appliance Configuration Services","c":"(c)2020","kind":"release","id":"config"}],"name":"File Director 2020.3","description":"more details"}}

Patch is uploaded (staged) and ready to be applied. Details about the patch and the patching status are returned. "patching_status" is a hash where a key is an IP address of the node in the cluster and value include patching status for that node. Value of "status" can be:

"staged" - if patch is uploaded and the node is ready to apply it

"no updates" - if no patch is present

 

[POST /products/platform/services/patch]

Endpoint

Information

[POST /products/platform/services/patch]

Upload a new patch. Patch is automatically copied and staged on each node in the cluster so that it is ready to be applied. In a clustered scenario it may take some time for all the nodes to be ready, current state can be monitored with GET /products/platform/services/patch API.

Parameters (multipart/form-data)

update - uploaded patch file content

Response examples

HTTP code

HTTP body

Details

202

no body Patch has been uploaded successfully.

400

no body

Invalid patch file has been uploaded.

 

[DELETE /products/platform/services/patch]

Endpoint

Information

[DELETE/products/platform/services/patch]

Remove the currently staged patch.

Response examples

HTTP code

HTTP body

Details

204

no body Currently staged patch has been removed.

 

[POST /products/platform/services/patch/apply]

Endpoint

Information

[POST /products/platform/services/patch/apply]

Applies the currently staged patch.

Response examples

HTTP code

HTTP body

Details

202

no body Starts the patching process.

500

no body

Nodes are not ready to be patched.

 

[GET /products/platform/services/patch/history]

Endpoint

Information

[GET /products/platform/services/patch/history]

Get a history of applied patches.

Response examples

HTTP code

HTTP body

Details

200

[{"time":"2020-10-15 11:14:59 UTC","session":[{"kind":"release","c":"(c) 2020", "id":"config", "product":"Appliance Configuration Services", "revision":"4.100.0.0", "feature_id":"appliance"}, ...],"seconds_ago":8742}, ...] Each item in the array includes details about one patching session and its time. Each session contains a list of components that were updated.

 

[GET /products/platform/services/patch/current]

Endpoint

Information

[GET /products/platform/services/patch/current]

Get details about the current appliance components versions.

Response examples

HTTP code

HTTP body

Details

200

{"revision":"4.8.0.1","product":"appliance","c":"(c) 2020", "kind":"release", "id":"appliance", "marketing_version":"File Director 2020.2", "components":[ {"revision":"4.100.0.0","product":"Appliance Configuration Services", "c":"(c) 2020", "kind":"release", "id":"config"},{"revision":"4.11.0.1","product":"Appliance Text Console", "c":"(c) 2020","kind":"release","id":"aci"}, {"product":"Appliance Operating System","c":"(c) 2020","kind":"release","id":"os","revision":"20201015"}, {"product":"Fission Clustering Services","c":"(c) 2020","kind":"release","id":"fission","revision":"4.11.0.66"}, {"revision":"4.6.0.1","product":"Patch Server","c":"(c) 2018","kind":"release","id":"patch_server"}, {"product":"File Director Server","c":"(c) 2020","kind":"release","id":"datanow","revision":"4.11.0.156"}, {"product":"File Director Web Admin","c":"(C) 2020","kind":"release","id":"datanow_admin","revision":"4.11.0.52"}, {"product":"File Director Web Client","c":"(c) 2020","kind":"release","id":"datanow_webclient","revision":"4.11.0.19"}, {"revision":"4.11.0.5","product":"File Director Appliance Plugins","c":"(c) 2020","kind":"release","id":"acs_datanow"}]} Includes version information about currently installed components.