# freenas-java-api-client **Repository Path**: mirrors_freenas/freenas-java-api-client ## Basic Information - **Project Name**: freenas-java-api-client - **Description**: FreeNAS Java API Client: It is a java client library that allows to interact with FreeNAS by Java programatically calls - **Primary Language**: Unknown - **License**: BSD-3-Clause - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-09-24 - **Last Updated**: 2026-02-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # FreeNAS Java Client API ================================================ *freenas-java-api-client* connects FreeNAS/TrueNAS and allows the execution of operations and retrival information from the system. This will allow interaction with the system by a Java application without knowing any details regarding the API. The library seeks to maintains consistency with different versions of the API - so that if the API changes then applications using the library will not break. The FreeNAS Java API Client supports API v1 and v2 (WIP). Requirements ======================================================== - Java 1.8 or higher - Maven The idea is not avoid a modern Java syntax to ensure it could run on legacy systems. How to use? ======================================================== The library is split into four modules: - accounts: account management - connectors: connection configuration of the FreeNAS/TrueNAS API - network: network management - storage: storage management Example ======================================================== ``` AuthenticationConnector auth = new AuthenticationConnector("root", "passwordForMyRoot"); EndpointConnector ep = new EndpointConnector("http://10.20.20.176/", "http"); GlobalConfigurationConnector gs = new GlobalConfigurationRestConnector(ep, auth); String hostname = gs.getHostname(); System.out.println("The FreeNAS hostname is: " + hostname); ``` How to use the FreeNAS CLI? ======================================================== **freenas-cli -user USERNAME -pass PASSWORD -url NAS_URL -COMMAND ARGS** Available commands: - volume - alerts - share Add new dataset: ``` freenas-cli -user USERNAME -pass PASSWORD -url http://NAS_IP -volume add zz05 -vname zz ``` Delete dataset: ``` freenas-cli -user USERNAME -pass PASSWORD -url http://NAS_IP -volume delete zz/zz05 -vname zz ``` List Datasets from a Volume: ``` freenas-cli -user USERNAME -pass PASSWORD -url http://NAS_IP -volume list all -vname zz ``` List alerts available: ``` freenas-cli -user USERNAME -pass PASSWORD -url http://NAS_IP -alerts list all ``` List NFS shares: ``` freenas-cli -user USERNAME -pass PASSWORD -url http://NAS_IP -share list all ``` Create the NFS Share: ``` freenas-cli -user USERNAME -pass PASSWORD -url http://NAS_IP -share add /mnt/primary03 "NFSShareTest" sys ``` Delete the NFS Share: ``` freenas-cli -user USERNAME -pass PASSWORD -url http://NAS_IP -share delete /mnt/primary03 ``` How to configure conf/freenas.yml? Using the YML configuration file is preferred as you will nto need to pass the credentials and endpoint on every run. ``` freenas: username: password: url: http://freenas-address-url ``` DEVELOPERS - Do you want to contribute? ======================================================== The project is organized into three modules: - freenas-entities: the entities related with the object that exists in FreeNAS/TrueNAS and their serializers; - freenas-java: the interface/API and the RESTful/WS connectors; - freenas-cli: a command line interface to interact with FreeNAS.