openapi: "3.0.0" info: title: FreeNAS RESTful API version: v2.0 paths: /core/bulk: post: tags: - core responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: |- Will loop on a list of items for the given method, returning a list of dicts containing a result and error key. Result will be the message returned by the method being called, or a string of an error, in which case the error key will be the exception requestBody: content: application/json: schema: $ref: "#/components/schemas/core_bulk" /core/debug: post: tags: - core responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: >- Setup middlewared for remote debugging. engines: - PTVS: Python Visual Studio - PYDEV: Python Dev (Eclipse/PyCharm) - REMOTE_PDB: Remote vanilla PDB (over TCP sockets) options: - secret: password for PTVS - host: required for PYDEV, hostname of local computer (developer workstation) - local_path: required for PYDEV, path for middlewared source in local computer (e.g. /home/user/freenas/src/middlewared/middlewared - threaded: run debugger in a new thread instead of event loop requestBody: content: application/json: schema: $ref: "#/components/schemas/core_debug" /core/download: post: tags: - core responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: |- Core helper to call a job marked for download. Returns the job id and the URL for download. requestBody: content: application/json: schema: $ref: "#/components/schemas/core_download" /core/get_events: get: tags: - core responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: Returns metadata for every possible event emitted from websocket server. /core/get_jobs: get: tags: - core responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: limit in: query required: false schema: type: integer - name: offset in: query required: false schema: type: integer - name: count in: query required: false schema: type: boolean - name: sort in: query required: false schema: type: string description: Get the long running jobs. /core/get_methods: post: tags: - core responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: >- Return methods metadata of every available service. `service` parameter is optional and filters the result for a single service. requestBody: content: application/json: schema: $ref: "#/components/schemas/core_get_methods_0" /core/get_services: get: tags: - core responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: Returns a list of all registered services. /core/job_abort: post: tags: - core responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] requestBody: content: application/json: schema: $ref: "#/components/schemas/core_job_abort_0" /core/job_update: post: tags: - core responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] requestBody: content: application/json: schema: $ref: "#/components/schemas/core_job_update" /core/job_wait: post: tags: - core responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] requestBody: content: application/json: schema: $ref: "#/components/schemas/core_job_wait_0" /core/ping: get: tags: - core responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: |- Utility method which just returns "pong". Can be used to keep connection/authtoken alive instead of using "ping" protocol message. /core/sessions: get: tags: - core responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: limit in: query required: false schema: type: integer - name: offset in: query required: false schema: type: integer - name: count in: query required: false schema: type: boolean - name: sort in: query required: false schema: type: string description: Get currently open websocket sessions. /group: get: tags: - group responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: limit in: query required: false schema: type: integer - name: offset in: query required: false schema: type: integer - name: count in: query required: false schema: type: boolean - name: sort in: query required: false schema: type: string description: >- Query groups with `query-filters` and `query-options`. As a performance optimization, only local groups will be queried by default. Groups from directory services such as NIS, LDAP, or Active Directory will be included in query results if the option `{'extra': {'search_dscache': True}}` is specified. post: tags: - group responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: >- Create a new group. If `gid` is not provided it is automatically filled with the next one available. `allow_duplicate_gid` allows distinct group names to share the same gid. `users` is a list of user ids (`id` attribute from `user.query`). requestBody: content: application/json: schema: $ref: "#/components/schemas/group_create_0" "/group/id/{id}": delete: tags: - group responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: type: integer title: id description: >- Delete group `id`. The `delete_users` option deletes all users that have this group as their primary group. requestBody: content: application/json: schema: $ref: "#/components/schemas/group_delete_1" get: tags: - group responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: limit in: query required: false schema: type: integer - name: offset in: query required: false schema: type: integer - name: count in: query required: false schema: type: boolean - name: sort in: query required: false schema: type: string - name: id in: path required: true schema: type: array title: query-filters default: null items: {} nullable: true description: >- Query groups with `query-filters` and `query-options`. As a performance optimization, only local groups will be queried by default. Groups from directory services such as NIS, LDAP, or Active Directory will be included in query results if the option `{'extra': {'search_dscache': True}}` is specified. put: tags: - group responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: type: integer title: id description: Update attributes of an existing group. requestBody: content: application/json: schema: $ref: "#/components/schemas/group_update_1" /group/get_group_obj: post: tags: - group responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: >- Returns dictionary containing information from struct grp for the group specified by either the groupname or gid. Bypasses group cache. requestBody: content: application/json: schema: $ref: "#/components/schemas/group_get_group_obj_0" /group/get_next_gid: get: tags: - group responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: Get the next available/free gid. /user: get: tags: - user responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: limit in: query required: false schema: type: integer - name: offset in: query required: false schema: type: integer - name: count in: query required: false schema: type: boolean - name: sort in: query required: false schema: type: string description: >- Query users with `query-filters` and `query-options`. As a performance optimization, only local users will be queried by default. Users from directory services such as NIS, LDAP, or Active Directory will be included in query results if the option `{'extra': {'search_dscache': True}}` is specified. post: tags: - user responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: >- Create a new user. If `uid` is not provided it is automatically filled with the next one available. `group` is required if `group_create` is false. `password` is required if `password_disabled` is false. Available choices for `shell` can be retrieved with `user.shell_choices`. `attributes` is a general-purpose object for storing arbitrary user information. requestBody: content: application/json: schema: $ref: "#/components/schemas/user_create_0" "/user/id/{id}": delete: tags: - user responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: type: integer title: id description: >- Delete user `id`. The `delete_group` option deletes the user primary group if it is not being used by any other user. requestBody: content: application/json: schema: $ref: "#/components/schemas/user_delete_1" get: tags: - user responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: limit in: query required: false schema: type: integer - name: offset in: query required: false schema: type: integer - name: count in: query required: false schema: type: boolean - name: sort in: query required: false schema: type: string - name: id in: path required: true schema: type: array title: query-filters default: null items: {} nullable: true description: >- Query users with `query-filters` and `query-options`. As a performance optimization, only local users will be queried by default. Users from directory services such as NIS, LDAP, or Active Directory will be included in query results if the option `{'extra': {'search_dscache': True}}` is specified. put: tags: - user responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: type: integer title: id description: Update attributes of an existing user. requestBody: content: application/json: schema: $ref: "#/components/schemas/user_update_1" /user/get_next_uid: get: tags: - user responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: Get the next available/free uid. /user/get_user_obj: post: tags: - user responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: >- Returns dictionary containing information from struct passwd for the user specified by either the username or uid. Bypasses user cache. requestBody: content: application/json: schema: $ref: "#/components/schemas/user_get_user_obj_0" /user/has_root_password: get: tags: - user responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: >- Return whether the root user has a valid password set. This is used when the system is installed without a password and must be set on first use/login. "/user/id/{id}/pop_attribute": post: tags: - user responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: type: integer title: id description: Remove user general purpose `attributes` dictionary `key`. requestBody: content: application/json: schema: $ref: "#/components/schemas/user_pop_attribute_1" "/user/id/{id}/set_attribute": post: tags: - user responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: type: integer title: id description: >- Set user general purpose `attributes` dictionary `key` to `value`. e.g. Setting key="foo" value="var" will result in {"attributes": {"foo": "bar"}} requestBody: content: application/json: schema: $ref: "#/components/schemas/user_set_attribute" /user/shell_choices: get: tags: - user responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: Return the available shell choices to be used in `user.create` and `user.update`. /acme/dns/authenticator: get: tags: - acme.dns.authenticator responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: limit in: query required: false schema: type: integer - name: offset in: query required: false schema: type: integer - name: count in: query required: false schema: type: boolean - name: sort in: query required: false schema: type: string post: tags: - acme.dns.authenticator responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: >+ Create a DNS Authenticator Create a specific DNS Authenticator containing required authentication details for the said provider to successfully connect with it requestBody: content: application/json: schema: $ref: "#/components/schemas/acme_dns_authenticator_create_0" "/acme/dns/authenticator/id/{id}": delete: tags: - acme.dns.authenticator responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: type: integer title: id description: |+ Delete DNS Authenticator of `id` get: tags: - acme.dns.authenticator responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: limit in: query required: false schema: type: integer - name: offset in: query required: false schema: type: integer - name: count in: query required: false schema: type: boolean - name: sort in: query required: false schema: type: string - name: id in: path required: true schema: type: array title: query-filters default: null items: {} nullable: true put: tags: - acme.dns.authenticator responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: type: integer title: id description: |+ Update DNS Authenticator of `id` requestBody: content: application/json: schema: $ref: "#/components/schemas/acme_dns_authenticator_update_1" /acme/dns/authenticator/authenticator_schemas: get: tags: - acme.dns.authenticator responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: >- Get the schemas for all DNS providers we support for ACME DNS Challenge and the respective attributes required for connecting to them while validating a DNS Challenge /activedirectory: get: tags: - activedirectory responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] put: tags: - activedirectory responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: "Update active directory configuration. `domainname` full DNS domain name of the Active Directory domain. `bindname` username used to perform the intial domain join. `bindpw` password used to perform the initial domain join. User- provided credentials are used to obtain a kerberos ticket, which is used to perform the actual domain join. `ssl` establish SSL/TLS-protected connections to the DCs in the Active Directory domain. `certificate` LDAPs client certificate to be used for certificate- based authentication in the AD domain. If certificate-based authentication is not configured, SASL GSSAPI binds will be performed. `validate_certificates` specifies whether to perform checks on server certificates in a TLS session. If enabled, TLS_REQCERT demand is set. The server certificate is requested. If no certificate is provided or if a bad certificate is provided, the session is immediately terminated. If disabled, TLS_REQCERT allow is set. The server certificate is requested, but all errors are ignored. `verbose_logging` increase logging during the domain join process. `use_default_domain` controls whether domain users and groups have the pre-windows 2000 domain name prepended to the user account. When enabled, the user appears as \"administrator\" rather than \"EXAMPLE\administrator\" `allow_trusted_doms` enable support for trusted domains. If this parameter is enabled, then separate idmap backends _must_ be configured for each trusted domain, and the idmap cache should be cleared. `allow_dns_updates` during the domain join process, automatically generate DNS entries in the AD domain for the NAS. If this is disabled, then a domain administrator must manually add appropriate DNS entries for the NAS. This parameter is recommended for TrueNAS HA servers. `disable_freenas_cache` disables active caching of AD users and groups. When disabled, only users cached in winbind's internal cache are visible in GUI dropdowns. Disabling active caching is recommended in environments with a large amount of users. `site` AD site of which the NAS is a member. This parameter is auto- detected during the domain join process. If no AD site is configured for the subnet in which the NAS is configured, then this parameter appears as 'Default-First-Site-Name'. Auto-detection is only performed during the initial domain join. `kerberos_realm` in which the server is located. This parameter is automatically populated during the initial domain join. If the NAS has an AD site configured and that site has multiple kerberos servers, then the kerberos realm is automatically updated with a site-specific configuration to use those servers. Auto-detection is only performed during initial domain join. `kerberos_principal` kerberos principal to use for AD-related operations outside of Samba. After intial domain join, this field is updated with the kerberos principal associated with the AD machine account for the NAS. `nss_info` controls how Winbind retrieves Name Service Information to construct a user's home directory and login shell. This parameter is only effective if the Active Directory Domain Controller supports the Microsoft Services for Unix (SFU) LDAP schema. `timeout` timeout value for winbind-related operations. This value may need to be increased in environments with high latencies for communications with domain controllers or a large number of domain controllers. Lowering the value may cause status checks to fail. `dns_timeout` timeout value for DNS queries during the initial domain join. This value is also set as the NETWORK_TIMEOUT in the ldap config file. `ldap_sasl_wrapping` defines whether ldap traffic will be signed or signed and encrypted (sealed). LDAP traffic that does not originate from Samba defaults to using GSSAPI signing unless it is tunnelled over LDAPs. `createcomputer` Active Directory Organizational Unit in which new computer accounts are created. The OU string is read from top to bottom without RDNs. Slashes (\"/\") are used as delimiters, like `Computers/Servers/NAS`. The backslash (\"\\\") is used to escape characters but not as a separator. Backslashes are interpreted at multiple levels and might require doubling or even quadrupling to take effect. When this field is blank, new computer accounts are created in the Active Directory default OU. `idmap_backend` provides a plugin interface for Winbind to use varying backends to store SID/uid/gid mapping tables. The correct setting depends on the environment in which the NAS is deployed. The Active Directory service is started after a configuration update if the service was initially disabled, and the updated configuration sets `enable` to `True`. The Active Directory service is stopped if `enable` is changed to `False`. If the configuration is updated, but the initial `enable` state is `True`, and remains unchanged, then the samba server is only restarted. During the domain join, a kerberos keytab for the newly-created AD machine account is generated. It is used for all future LDAP / AD interaction and the user-provided credentials are removed." requestBody: content: application/json: schema: $ref: "#/components/schemas/activedirectory_update_0" /activedirectory/change_trust_account_pw: get: tags: - activedirectory responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: |- Force an update of the AD machine account password. This can be used to refresh the Kerberos principals in the server's system keytab. /activedirectory/domain_info: get: tags: - activedirectory responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: >- Returns the following information about the currently joined domain: `LDAP server` IP address of current LDAP server to which TrueNAS is connected. `LDAP server name` DNS name of LDAP server to which TrueNAS is connected `Realm` Kerberos realm `LDAP port` `Server time` timestamp. `KDC server` Kerberos KDC to which TrueNAS is connected `Server time offset` current time offset from DC. `Last machine account password change`. timestamp /activedirectory/get_spn_list: get: tags: - activedirectory responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: |- Return list of kerberos SPN entries registered for the server's Active Directory computer account. This may not reflect the state of the server's current kerberos keytab. /activedirectory/get_state: get: tags: - activedirectory responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: >- Wrapper function for 'directoryservices.get_state'. Returns only the state of the Active Directory service. /activedirectory/idmap_backend_choices: get: tags: - activedirectory responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: Returns list of available idmap backends. /activedirectory/leave: post: tags: - activedirectory responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: |- Leave Active Directory domain. This will remove computer object from AD and clear relevant configuration data from the NAS. This requires credentials for appropriately-privileged user. Credentials are used to obtain a kerberos ticket, which is used to perform the actual removal from the domain. requestBody: content: application/json: schema: $ref: "#/components/schemas/activedirectory_leave_0" /activedirectory/nss_info_choices: get: tags: - activedirectory responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: Returns list of available LDAP schema choices. /activedirectory/sasl_wrapping_choices: get: tags: - activedirectory responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: Returns list of sasl wrapping choices. /activedirectory/ssl_choices: get: tags: - activedirectory responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: Returns list of SSL choices. /activedirectory/started: get: tags: - activedirectory responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: >- Issue a no-effect command to our DC. This checks if our secure channel connection to our domain controller is still alive. It has much less impact than wbinfo -t. Default winbind request timeout is 60 seconds, and can be adjusted by the smb4.conf parameter 'winbind request timeout =' /afp: get: tags: - afp responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] put: tags: - afp responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: >- Update AFP service settings. `bindip` is a list of IPs to bind AFP to. Leave blank (empty list) to bind to all available IPs. `map_acls` defines how to map the effective permissions of authenticated users. RIGHTS - Unix-style permissions MODE - ACLs NONE - Do not map `chmod_request` defines advanced permission control that deals with ACLs. PRESERVE - Preserve ZFS ACEs for named users and groups or POSIX ACL group mask SIMPLE - Change permission as requested without any extra steps IGNORE - Permission change requests are ignored requestBody: content: application/json: schema: $ref: "#/components/schemas/afp_update_0" /sharing/afp: get: tags: - sharing.afp responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: limit in: query required: false schema: type: integer - name: offset in: query required: false schema: type: integer - name: count in: query required: false schema: type: boolean - name: sort in: query required: false schema: type: string post: tags: - sharing.afp responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: >- Create AFP share. `allow`, `deny`, `ro`, and `rw` are lists of users and groups. Groups are designated by an @ prefix. `hostsallow` and `hostsdeny` are lists of hosts and/or networks. requestBody: content: application/json: schema: $ref: "#/components/schemas/sharing_afp_create_0" "/sharing/afp/id/{id}": delete: tags: - sharing.afp responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: type: integer title: id description: Delete AFP share `id`. get: tags: - sharing.afp responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: limit in: query required: false schema: type: integer - name: offset in: query required: false schema: type: integer - name: count in: query required: false schema: type: boolean - name: sort in: query required: false schema: type: string - name: id in: path required: true schema: type: array title: query-filters default: null items: {} nullable: true put: tags: - sharing.afp responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: type: integer title: id description: Update AFP share `id`. requestBody: content: application/json: schema: $ref: "#/components/schemas/sharing_afp_update_1" /alertclasses: get: tags: - alertclasses responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] put: tags: - alertclasses responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: Update default Alert settings. requestBody: content: application/json: schema: $ref: "#/components/schemas/alertclasses_update_0" /alert/dismiss: post: tags: - alert responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: Dismiss `id` alert. requestBody: content: application/json: schema: $ref: "#/components/schemas/alert_dismiss_0" /alert/list: get: tags: - alert responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: List all types of alerts including active/dismissed currently in the system. /alert/list_categories: get: tags: - alert responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: List all types of alert sources which the system can issue. /alert/list_policies: get: tags: - alert responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: List all alert policies which indicate the frequency of the alerts. /alert/restore: post: tags: - alert responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: Restore `id` alert which had been dismissed. requestBody: content: application/json: schema: $ref: "#/components/schemas/alert_restore_0" /alertservice: get: tags: - alertservice responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: limit in: query required: false schema: type: integer - name: offset in: query required: false schema: type: integer - name: count in: query required: false schema: type: boolean - name: sort in: query required: false schema: type: string post: tags: - alertservice responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: |+ Create an Alert Service of specified `type`. If `enabled`, it sends alerts to the configured `type` of Alert Service. requestBody: content: application/json: schema: $ref: "#/components/schemas/alertservice_create_0" "/alertservice/id/{id}": delete: tags: - alertservice responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: type: integer title: id description: Delete Alert Service of `id`. get: tags: - alertservice responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: limit in: query required: false schema: type: integer - name: offset in: query required: false schema: type: integer - name: count in: query required: false schema: type: boolean - name: sort in: query required: false schema: type: string - name: id in: path required: true schema: type: array title: query-filters default: null items: {} nullable: true put: tags: - alertservice responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: type: integer title: id description: Update Alert Service of `id`. requestBody: content: application/json: schema: $ref: "#/components/schemas/alertservice_update_1" /alertservice/list_types: get: tags: - alertservice responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: List all types of supported Alert services which can be configured with the system. /alertservice/test: post: tags: - alertservice responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: |+ Send a test alert using `type` of Alert Service. requestBody: content: application/json: schema: $ref: "#/components/schemas/alertservice_test_0" /auth/check_user: post: tags: - auth responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: Verify username and password requestBody: content: application/json: schema: $ref: "#/components/schemas/auth_check_user" /auth/generate_token: post: tags: - auth responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: >- Generate a token to be used for authentication. `ttl` stands for Time To Live, in seconds. The token will be invalidated if the connection has been inactive for a time greater than this. `attrs` is a general purpose object/dictionary to hold information about the token. requestBody: content: application/json: schema: $ref: "#/components/schemas/auth_generate_token" /auth/sessions: get: tags: - auth responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: limit in: query required: false schema: type: integer - name: offset in: query required: false schema: type: integer - name: count in: query required: false schema: type: boolean - name: sort in: query required: false schema: type: string description: >- Returns list of active auth sessions. Example of return value: [ { "id": "NyhB1J5vjPjIV82yZ6caU12HLA1boDJcZNWuVQM4hQWuiyUWMGZTz2ElDp7Yk87d", "origin": "192.168.0.3:40392", "credentials": "TOKEN", "internal": False, "created_at": {"$date": 1545842426070} } ] `credentials` can be `UNIX_SOCKET`, `ROOT_TCP_SOCKET`, `TRUENAS_NODE`, `LOGIN_PASSWORD` or `TOKEN`, depending on what authentication method was used. If you want to exclude all internal connections from the list, call this method with following arguments: [ [ ["internal", "=", True] ] ] /backup/azure/get_buckets: post: tags: - backup.azure responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] requestBody: content: application/json: schema: $ref: "#/components/schemas/backup_azure_get_buckets_0" /backup/b2/get_buckets: post: tags: - backup.b2 responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] requestBody: content: application/json: schema: $ref: "#/components/schemas/backup_b2_get_buckets_0" /backup/credential: get: tags: - backup.credential responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: limit in: query required: false schema: type: integer - name: offset in: query required: false schema: type: integer - name: count in: query required: false schema: type: boolean - name: sort in: query required: false schema: type: string post: tags: - backup.credential responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] requestBody: content: application/json: schema: $ref: "#/components/schemas/backup_credential_create_0" "/backup/credential/id/{id}": delete: tags: - backup.credential responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: type: integer title: id get: tags: - backup.credential responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: limit in: query required: false schema: type: integer - name: offset in: query required: false schema: type: integer - name: count in: query required: false schema: type: boolean - name: sort in: query required: false schema: type: string - name: id in: path required: true schema: type: array title: query-filters default: null items: {} nullable: true put: tags: - backup.credential responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: type: integer title: id requestBody: content: application/json: schema: $ref: "#/components/schemas/backup_credential_update_1" /backup/gcs/get_buckets: post: tags: - backup.gcs responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] requestBody: content: application/json: schema: $ref: "#/components/schemas/backup_gcs_get_buckets_0" /backup/s3/get_buckets: post: tags: - backup.s3 responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] requestBody: content: application/json: schema: $ref: "#/components/schemas/backup_s3_get_buckets_0" /backup: get: tags: - backup responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] post: tags: - backup responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] requestBody: content: application/json: schema: $ref: "#/components/schemas/backup_create_0" "/backup/id/{id}": delete: tags: - backup responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: type: integer title: id get: tags: - backup responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: type: integer put: tags: - backup responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: type: integer title: id requestBody: content: application/json: schema: $ref: "#/components/schemas/backup_update_1" /boot/attach: post: tags: - boot responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: |- Attach a disk to the boot pool, turning a stripe into a mirror. `expand` option will determine whether the new disk partition will be the maximum available or the same size as the current disk. requestBody: content: application/json: schema: $ref: "#/components/schemas/boot_attach" /boot/detach: post: tags: - boot responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: Detach given `dev` from boot pool. requestBody: content: application/json: schema: $ref: "#/components/schemas/boot_detach_0" /boot/get_disks: get: tags: - boot responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: Returns disks of the boot pool. /boot/get_scrub_interval: get: tags: - boot responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: Get Automatic Scrub Interval value in days. /boot/get_state: get: tags: - boot responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: Returns the current state of the boot pool, including all vdevs, properties and datasets. /boot/replace: post: tags: - boot responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: Replace device `label` on boot pool with `dev`. requestBody: content: application/json: schema: $ref: "#/components/schemas/boot_replace" /boot/scrub: get: tags: - boot responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: Scrub on boot pool. /boot/set_scrub_interval: post: tags: - boot responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: Set Automatic Scrub Interval value in days. requestBody: content: application/json: schema: $ref: "#/components/schemas/boot_set_scrub_interval_0" /bootenv: get: tags: - bootenv responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: limit in: query required: false schema: type: integer - name: offset in: query required: false schema: type: integer - name: count in: query required: false schema: type: boolean - name: sort in: query required: false schema: type: string description: Query all Boot Environments with `query-filters` and `query-options`. post: tags: - bootenv responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: >- Create a new boot environment using `name`. If a new boot environment is desired which is a clone of another boot environment, `source` can be passed. Then, a new boot environment of `name` is created using boot environment `source` by cloning it. Ensure that `name` and `source` are valid boot environment names. requestBody: content: application/json: schema: $ref: "#/components/schemas/bootenv_create_0" "/bootenv/id/{id}": delete: tags: - bootenv responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: title: id type: string description: Delete `id` boot environment. This removes the clone from the system. get: tags: - bootenv responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: limit in: query required: false schema: type: integer - name: offset in: query required: false schema: type: integer - name: count in: query required: false schema: type: boolean - name: sort in: query required: false schema: type: string - name: id in: path required: true schema: type: array title: query-filters default: null items: {} nullable: true description: Query all Boot Environments with `query-filters` and `query-options`. put: tags: - bootenv responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: title: id type: string description: Update `id` boot environment name with a new provided valid `name`. requestBody: content: application/json: schema: $ref: "#/components/schemas/bootenv_update_1" "/bootenv/id/{id}/activate": post: tags: - bootenv responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: title: id type: string description: Activates boot environment `id`. requestBody: content: application/json: schema: $ref: "#/components/schemas/bootenv_activate" "/bootenv/id/{id}/set_attribute": post: tags: - bootenv responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: title: id type: string description: |- Sets attributes boot environment `id`. Currently only `keep` attribute is allowed. requestBody: content: application/json: schema: $ref: "#/components/schemas/bootenv_set_attribute_1" /cloudsync: get: tags: - cloudsync responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: limit in: query required: false schema: type: integer - name: offset in: query required: false schema: type: integer - name: count in: query required: false schema: type: boolean - name: sort in: query required: false schema: type: string description: Query all Cloud Sync Tasks with `query-filters` and `query-options`. post: tags: - cloudsync responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: |+ Creates a new cloud_sync entry. requestBody: content: application/json: schema: $ref: "#/components/schemas/cloudsync_create_0" "/cloudsync/id/{id}": delete: tags: - cloudsync responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: type: integer title: id description: Deletes cloud_sync entry `id`. get: tags: - cloudsync responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: limit in: query required: false schema: type: integer - name: offset in: query required: false schema: type: integer - name: count in: query required: false schema: type: boolean - name: sort in: query required: false schema: type: string - name: id in: path required: true schema: type: array title: query-filters default: null items: {} nullable: true description: Query all Cloud Sync Tasks with `query-filters` and `query-options`. put: tags: - cloudsync responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: type: integer title: id description: Updates the cloud_sync entry `id` with `data`. requestBody: content: application/json: schema: $ref: "#/components/schemas/cloudsync_update_1" "/cloudsync/id/{id}/abort": post: tags: - cloudsync responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: type: integer title: id description: Aborts cloud sync task. requestBody: content: application/json: schema: $ref: "#/components/schemas/cloudsync_abort" /cloudsync/common_task_schema: get: tags: - cloudsync responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] /cloudsync/list_buckets: post: tags: - cloudsync responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] requestBody: content: application/json: schema: $ref: "#/components/schemas/cloudsync_list_buckets_0" /cloudsync/list_directory: post: tags: - cloudsync responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: >- List contents of a remote bucket / directory. If remote supports buckets, path is constructed by two keys "bucket"/"folder" in `attributes`. If remote does not support buckets, path is constructed using "folder" key only in `attributes`. "folder" is directory name and "bucket" is bucket name for remote. Path examples: S3 Service `bucketname/directory/name` Dropbox Service `directory/name` `credentials` is a valid id of a Cloud Sync Credential which will be used to connect to the provider. requestBody: content: application/json: schema: $ref: "#/components/schemas/cloudsync_list_directory_0" /cloudsync/onedrive_list_drives: post: tags: - cloudsync responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: >+ Lists all available drives and their types for given Microsoft OneDrive credentials. requestBody: content: application/json: schema: $ref: "#/components/schemas/cloudsync_onedrive_list_drives_0" /cloudsync/providers: get: tags: - cloudsync responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: >- Returns a list of dictionaries of supported providers for Cloud Sync Tasks. `credentials_schema` is JSON schema for credentials attributes. `task_schema` is JSON schema for task attributes. `buckets` is a boolean value which is set to "true" if provider supports buckets. Example of a single provider: [ { "name": "AMAZON_CLOUD_DRIVE", "title": "Amazon Cloud Drive", "credentials_schema": [ { "property": "client_id", "schema": { "title": "Amazon Application Client ID", "_required_": true, "type": "string" } }, { "property": "client_secret", "schema": { "title": "Application Key", "_required_": true, "type": "string" } } ], "credentials_oauth": null, "buckets": false, "bucket_title": "Bucket", "task_schema": [] } ] "/cloudsync/id/{id}/sync": post: tags: - cloudsync responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: type: integer title: id description: Run the cloud_sync job `id`, syncing the local data to remote. requestBody: content: application/json: schema: $ref: "#/components/schemas/cloudsync_sync" /cloudsync/credentials: get: tags: - cloudsync.credentials responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: limit in: query required: false schema: type: integer - name: offset in: query required: false schema: type: integer - name: count in: query required: false schema: type: boolean - name: sort in: query required: false schema: type: string post: tags: - cloudsync.credentials responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: >- Create Cloud Sync Credentials. `attributes` is a dictionary of valid values which will be used to authorize with the `provider`. requestBody: content: application/json: schema: $ref: "#/components/schemas/cloudsync_credentials_create_0" "/cloudsync/credentials/id/{id}": delete: tags: - cloudsync.credentials responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: type: integer title: id description: Delete Cloud Sync Credentials of `id`. get: tags: - cloudsync.credentials responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: limit in: query required: false schema: type: integer - name: offset in: query required: false schema: type: integer - name: count in: query required: false schema: type: boolean - name: sort in: query required: false schema: type: string - name: id in: path required: true schema: type: array title: query-filters default: null items: {} nullable: true put: tags: - cloudsync.credentials responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: type: integer title: id description: Update Cloud Sync Credentials of `id`. requestBody: content: application/json: schema: $ref: "#/components/schemas/cloudsync_credentials_update_1" /cloudsync/credentials/verify: post: tags: - cloudsync.credentials responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: Verify if `attributes` provided for `provider` are authorized by the `provider`. requestBody: content: application/json: schema: $ref: "#/components/schemas/cloudsync_credentials_verify_0" /config/reset: post: tags: - config responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: >- Reset database to configuration defaults. If `reboot` is true this job will reboot the system after its completed with a delay of 10 seconds. requestBody: content: application/json: schema: $ref: "#/components/schemas/config_reset_0" /cronjob: get: tags: - cronjob responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: limit in: query required: false schema: type: integer - name: offset in: query required: false schema: type: integer - name: count in: query required: false schema: type: boolean - name: sort in: query required: false schema: type: string post: tags: - cronjob responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: >+ Create a new cron job. `stderr` and `stdout` are boolean values which if `true`, represent that we would like to suppress standard error / standard output respectively. requestBody: content: application/json: schema: $ref: "#/components/schemas/cronjob_create_0" "/cronjob/id/{id}": delete: tags: - cronjob responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: type: integer title: id description: Delete cronjob of `id`. get: tags: - cronjob responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: limit in: query required: false schema: type: integer - name: offset in: query required: false schema: type: integer - name: count in: query required: false schema: type: boolean - name: sort in: query required: false schema: type: string - name: id in: path required: true schema: type: array title: query-filters default: null items: {} nullable: true put: tags: - cronjob responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: type: integer title: id description: Update cronjob of `id`. requestBody: content: application/json: schema: $ref: "#/components/schemas/cronjob_update_1" /cronjob/run: post: tags: - cronjob responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: Job to run cronjob task of `id`. requestBody: content: application/json: schema: $ref: "#/components/schemas/cronjob_run_0" /certificateauthority: get: tags: - certificateauthority responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: limit in: query required: false schema: type: integer - name: offset in: query required: false schema: type: integer - name: count in: query required: false schema: type: boolean - name: sort in: query required: false schema: type: string post: tags: - certificateauthority responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: >+ Create a new Certificate Authority Certificate Authorities are classified under following types with the necessary keywords to be passed for `create_type` attribute to create the respective type of certificate authority 1) Internal Certificate Authority - CA_CREATE_INTERNAL 2) Imported Certificate Authority - CA_CREATE_IMPORTED 3) Intermediate Certificate Authority - CA_CREATE_INTERMEDIATE Created certificate authorities use RSA keys by default. If an Elliptic Curve Key is desired, then it can be specified with the `key_type` attribute. If the `ec_curve` attribute is not specified for the Elliptic Curve Key, default to using "BrainpoolP384R1" curve. A type is selected by the Certificate Authority Service based on `create_type`. The rest of the values are validated accordingly and finally a certificate is made based on the selected type. requestBody: content: application/json: schema: $ref: "#/components/schemas/certificateauthority_create_0" "/certificateauthority/id/{id}": delete: tags: - certificateauthority responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: type: integer title: id description: |+ Delete a Certificate Authority of `id` get: tags: - certificateauthority responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: limit in: query required: false schema: type: integer - name: offset in: query required: false schema: type: integer - name: count in: query required: false schema: type: boolean - name: sort in: query required: false schema: type: string - name: id in: path required: true schema: type: array title: query-filters default: null items: {} nullable: true put: tags: - certificateauthority responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: type: integer title: id description: |+ Update Certificate Authority of `id` Only name attribute can be updated requestBody: content: application/json: schema: $ref: "#/components/schemas/certificateauthority_update_1" /certificateauthority/ca_sign_csr: post: tags: - certificateauthority responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: >+ Sign CSR by Certificate Authority of `ca_id` Sign CSR's and generate a certificate from it. `ca_id` provides which CA is to be used for signing a CSR of `csr_cert_id` which exists in the system requestBody: content: application/json: schema: $ref: "#/components/schemas/certificateauthority_ca_sign_csr_0" /certificate: get: tags: - certificate responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: limit in: query required: false schema: type: integer - name: offset in: query required: false schema: type: integer - name: count in: query required: false schema: type: boolean - name: sort in: query required: false schema: type: string post: tags: - certificate responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: >+ Create a new Certificate Certificates are classified under following types and the necessary keywords to be passed for `create_type` attribute to create the respective type of certificate 1) Internal Certificate - CERTIFICATE_CREATE_INTERNAL 2) Imported Certificate - CERTIFICATE_CREATE_IMPORTED 3) Certificate Signing Request - CERTIFICATE_CREATE_CSR 4) Imported Certificate Signing Request - CERTIFICATE_CREATE_IMPORTED_CSR 5) ACME Certificate - CERTIFICATE_CREATE_ACME By default, created certs use RSA keys. If an Elliptic Curve Key is desired, it can be specified with the `key_type` attribute. If the `ec_curve` attribute is not specified for the Elliptic Curve Key, then default to using "BrainpoolP384R1" curve. A type is selected by the Certificate Service based on `create_type`. The rest of the values in `data` are validated accordingly and finally a certificate is made based on the selected type. requestBody: content: application/json: schema: $ref: "#/components/schemas/certificate_create_0" "/certificate/id/{id}": delete: tags: - certificate responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: type: integer title: id description: >+ Delete certificate of `id`. If the certificate is an ACME based certificate, certificate service will try to revoke the certificate by updating it's status with the ACME server, if it fails an exception is raised and the certificate is not deleted from the system. However, if `force` is set to True, certificate is deleted from the system even if some error occurred while revoking the certificate with the ACME Server requestBody: content: application/json: schema: $ref: "#/components/schemas/certificate_delete_1" get: tags: - certificate responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: limit in: query required: false schema: type: integer - name: offset in: query required: false schema: type: integer - name: count in: query required: false schema: type: boolean - name: sort in: query required: false schema: type: string - name: id in: path required: true schema: type: array title: query-filters default: null items: {} nullable: true put: tags: - certificate responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: type: integer title: id description: |+ Update certificate of `id` Only name attribute can be updated requestBody: content: application/json: schema: $ref: "#/components/schemas/certificate_update_1" /certificate/acme_server_choices: get: tags: - certificate responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: >- Dictionary of popular ACME Servers with their directory URI endpoints which we display automatically in UI /certificate/ec_curve_choices: get: tags: - certificate responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: Dictionary of supported EC curves. /certificate/key_type_choices: get: tags: - certificate responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: Dictionary of supported key types for certificates. /device/get_info: post: tags: - device responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: |- Get info for certain device types. Currently only SERIAL is supported. requestBody: content: application/json: schema: $ref: "#/components/schemas/device_get_info_0" /directoryservices/get_state: get: tags: - directoryservices responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: >- `DISABLED` Directory Service is disabled. `FAULTED` Directory Service is enabled, but not HEALTHY. Review logs and generated alert messages to debug the issue causing the service to be in a FAULTED state. `LEAVING` Directory Service is in process of stopping. `JOINING` Directory Service is in process of starting. `HEALTHY` Directory Service is enabled, and last status check has passed. /disk: get: tags: - disk responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: limit in: query required: false schema: type: integer - name: offset in: query required: false schema: type: integer - name: count in: query required: false schema: type: boolean - name: sort in: query required: false schema: type: string "/disk/id/{id}": get: tags: - disk responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: limit in: query required: false schema: type: integer - name: offset in: query required: false schema: type: integer - name: count in: query required: false schema: type: boolean - name: sort in: query required: false schema: type: string - name: id in: path required: true schema: type: array title: query-filters default: null items: {} nullable: true put: tags: - disk responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: title: id type: string description: >- Update disk of `id`. If extra options need to be passed to SMART which we don't already support, they can be passed by `smartoptions`. `critical`, `informational` and `difference` are integer values on which alerts for SMART are configured if the disk temperature crosses the assigned threshold for each respective attribute. If they are set to null, then SMARTD config values are used as defaults. Email of log level LOG_CRIT is issued when disk temperature crosses `critical`. Email of log level LOG_INFO is issued when disk temperature crosses `informational`. If temperature of a disk changes by `difference` degree Celsius since the last report, SMART reports this. requestBody: content: application/json: schema: $ref: "#/components/schemas/disk_update_1" /disk/get_encrypted: post: tags: - disk responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: |- Get all geli providers It might be an entire disk or a partition of type freebsd-zfs requestBody: content: application/json: schema: $ref: "#/components/schemas/disk_get_encrypted_0" /disk/get_unused: post: tags: - disk responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: |- Helper method to get all disks that are not in use, either by the boot pool or the user pools. requestBody: content: application/json: schema: $ref: "#/components/schemas/disk_get_unused_0" /disk/temperatures: post: tags: - disk responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: Returns temperatures for a list of device `names` using specified S.M.A.R.T. `powermode`. requestBody: content: application/json: schema: $ref: "#/components/schemas/disk_temperatures" /disk/wipe: post: tags: - disk responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: >- Performs a wipe of a disk `dev`. It can be of the following modes: - QUICK: clean the first few and last megabytes of every partition and disk - FULL: write whole disk with zero's - FULL_RANDOM: write whole disk with random bytes requestBody: content: application/json: schema: $ref: "#/components/schemas/disk_wipe" /dyndns: get: tags: - dyndns responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] put: tags: - dyndns responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: >- Update dynamic dns service configuration. `period` indicates how often the IP is checked in seconds. `ssl` if set to true, makes sure that HTTPS is used for the connection to the server which updates the DNS record. requestBody: content: application/json: schema: $ref: "#/components/schemas/dyndns_update_0" /dyndns/provider_choices: get: tags: - dyndns responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: List supported Dynamic DNS Service Providers. /filesystem/acl_is_trivial: post: tags: - filesystem responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: >- Returns True if the ACL can be fully expressed as a file mode without losing any access rules, or if the path does not support NFSv4 ACLs (for example a path on a tmpfs filesystem). requestBody: content: application/json: schema: $ref: "#/components/schemas/filesystem_acl_is_trivial_0" /filesystem/chown: post: tags: - filesystem responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: |- Change owner or group of file at `path`. `uid` and `gid` specify new owner of the file. If either key is absent or None, then existing value on the file is not changed. `recursive` performs action recursively, but does not traverse filesystem mount points. If `traverse` and `recursive` are specified, then the chown operation will traverse filesystem mount points. requestBody: content: application/json: schema: $ref: "#/components/schemas/filesystem_chown_0" /filesystem/default_acl_choices: get: tags: - filesystem responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: Get list of default ACL types. /filesystem/get_default_acl: post: tags: - filesystem responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: >- Returns a default ACL depending on the usage specified by `acl_type`. If an admin group is defined, then an entry granting it full control will be placed at the top of the ACL. requestBody: content: application/json: schema: $ref: "#/components/schemas/filesystem_get_default_acl_0" /filesystem/getacl: post: tags: - filesystem responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: >- Return ACL of a given path. Simplified returns a shortened form of the ACL permset and flags `TRAVERSE` sufficient rights to traverse a directory, but not read contents. `READ` sufficient rights to traverse a directory, and read file contents. `MODIFIY` sufficient rights to traverse, read, write, and modify a file. Equivalent to modify_set. `FULL_CONTROL` all permissions. If the permisssions do not fit within one of the pre-defined simplified permissions types, then the full ACL entry will be returned. In all cases we replace USER_OBJ, GROUP_OBJ, and EVERYONE with owner@, group@, everyone@ for consistency with getfacl and setfacl. If one of aforementioned special tags is used, 'id' must be set to None. An inheriting empty everyone@ ACE is appended to non-trivial ACLs in order to enforce Windows expectations regarding permissions inheritance. This entry is removed from NT ACL returned to SMB clients when 'ixnas' samba VFS module is enabled. We also remove it here to avoid confusion. requestBody: content: application/json: schema: $ref: "#/components/schemas/filesystem_getacl" /filesystem/listdir: post: tags: - filesystem responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: |- Get the contents of a directory. Each entry of the list consists of: name(str): name of the file path(str): absolute path of the entry realpath(str): absolute real path of the entry (if SYMLINK) type(str): DIRECTORY | FILESYSTEM | SYMLINK | OTHER size(int): size of the entry mode(int): file mode/permission uid(int): user id of entry owner gid(int): group id of entry onwer acl(bool): extended ACL is present on file requestBody: content: application/json: schema: $ref: "#/components/schemas/filesystem_listdir" /filesystem/setacl: post: tags: - filesystem responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: >- Set ACL of a given path. Takes the following parameters: `path` full path to directory or file. `dacl` "simplified" ACL here or a full ACL. `uid` the desired UID of the file user. If set to None (the default), then user is not changed. `gid` the desired GID of the file group. If set to None (the default), then group is not changed. `recursive` apply the ACL recursively `traverse` traverse filestem boundaries (ZFS datasets) `strip` convert ACL to trivial. ACL is trivial if it can be expressed as a file mode without losing any access rules. `canonicalize` reorder ACL entries so that they are in concanical form as described in the Microsoft documentation MS-DTYP 2.4.5 (ACL) In all cases we replace USER_OBJ, GROUP_OBJ, and EVERYONE with owner@, group@, everyone@ for consistency with getfacl and setfacl. If one of aforementioned special tags is used, 'id' must be set to None. An inheriting empty everyone@ ACE is appended to non-trivial ACLs in order to enforce Windows expectations regarding permissions inheritance. This entry is removed from NT ACL returned to SMB clients when 'ixnas' samba VFS module is enabled. requestBody: content: application/json: schema: $ref: "#/components/schemas/filesystem_setacl_0" /filesystem/setperm: post: tags: - filesystem responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: >- Remove extended ACL from specified path. If `mode` is specified then the mode will be applied to the path and files and subdirectories depending on which `options` are selected. Mode should be formatted as string representation of octal permissions bits. `uid` the desired UID of the file user. If set to None (the default), then user is not changed. `gid` the desired GID of the file group. If set to None (the default), then group is not changed. `stripacl` setperm will fail if an extended ACL is present on `path`, unless `stripacl` is set to True. `recursive` remove ACLs recursively, but do not traverse dataset boundaries. `traverse` remove ACLs from child datasets. If no `mode` is set, and `stripacl` is True, then non-trivial ACLs will be converted to trivial ACLs. An ACL is trivial if it can be expressed as a file mode without losing any access rules. requestBody: content: application/json: schema: $ref: "#/components/schemas/filesystem_setperm_0" /filesystem/stat: post: tags: - filesystem responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: Return the filesystem stat(2) for a given `path`. requestBody: content: application/json: schema: $ref: "#/components/schemas/filesystem_stat_0" /filesystem/statfs: post: tags: - filesystem responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: |- Return stats from the filesystem of a given path. Raises: CallError(ENOENT) - Path not found requestBody: content: application/json: schema: $ref: "#/components/schemas/filesystem_statfs_0" /ftp: get: tags: - ftp responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] put: tags: - ftp responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: >- Update ftp service configuration. `clients` is an integer value which sets the maximum number of simultaneous clients allowed. It defaults to 32. `ipconnections` is an integer value which shows the maximum number of connections per IP address. It defaults to 0 which equals to unlimited. `timeout` is the maximum client idle time in seconds before client is disconnected. `rootlogin` is a boolean value which when configured to true enables login as root. This is generally discouraged because of the security risks. `onlyanonymous` allows anonymous FTP logins with access to the directory specified by `anonpath`. `banner` is a message displayed to local login users after they successfully authenticate. It is not displayed to anonymous login users. `filemask` sets the default permissions for newly created files which by default are 077. `dirmask` sets the default permissions for newly created directories which by default are 077. `resume` if set allows FTP clients to resume interrupted transfers. `fxp` if set to true indicates that File eXchange Protocol is enabled. Generally it is discouraged as it makes the server vulnerable to FTP bounce attacks. `defaultroot` when set ensures that for local users, home directory access is only granted if the user is a member of group wheel. `ident` is a boolean value which when set to true indicates that IDENT authentication is required. If identd is not running on the client, this can result in timeouts. `masqaddress` is the public IP address or hostname which is set if FTP clients cannot connect through a NAT device. `localuserbw` is a positive integer value which indicates maximum upload bandwidth in KB/s for local user. Default of zero indicates unlimited upload bandwidth ( from the FTP server configuration ). `localuserdlbw` is a positive integer value which indicates maximum download bandwidth in KB/s for local user. Default of zero indicates unlimited download bandwidth ( from the FTP server configuration ). `anonuserbw` is a positive integer value which indicates maximum upload bandwidth in KB/s for anonymous user. Default of zero indicates unlimited upload bandwidth ( from the FTP server configuration ). `anonuserdlbw` is a positive integer value which indicates maximum download bandwidth in KB/s for anonymous user. Default of zero indicates unlimited download bandwidth ( from the FTP server configuration ). `tls` is a boolean value which when set indicates that encrypted connections are enabled. This requires a certificate to be configured first with the certificate service and the id of certificate is passed on in `ssltls_certificate`. `tls_policy` defines whether the control channel, data channel, both channels, or neither channel of an FTP session must occur over SSL/TLS. `tls_opt_enable_diags` is a boolean value when set, logs verbosely. This is helpful when troubleshooting a connection. `options` is a string used to add proftpd(8) parameters not covered by ftp service. requestBody: content: application/json: schema: $ref: "#/components/schemas/ftp_update_0" /idmap/ad: get: tags: - idmap.ad responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: limit in: query required: false schema: type: integer - name: offset in: query required: false schema: type: integer - name: count in: query required: false schema: type: boolean - name: sort in: query required: false schema: type: string post: tags: - idmap.ad responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: >- Create an entry in the idmap backend table. `unix_primary_group` If True, the primary group membership is fetched from the LDAP attributes (gidNumber). If False, the primary group membership is calculated via the "primaryGroupID" LDAP attribute. `unix_nss_info` if True winbind will retrieve the login shell and home directory from the LDAP attributes. If False or if the AD LDAP entry lacks the SFU attributes the smb4.conf parameters `template shell` and `template homedir` are used. `schema_mode` Defines the schema that idmap_ad should use when querying Active Directory regarding user and group information. This can be either the RFC2307 schema support included in Windows 2003 R2 or the Service for Unix (SFU) schema. For SFU 3.0 or 3.5 please choose "SFU", for SFU 2.0 please choose "SFU20". The behavior of primary group membership is controlled by the unix_primary_group option. requestBody: content: application/json: schema: $ref: "#/components/schemas/idmap_ad_create_0" "/idmap/ad/id/{id}": delete: tags: - idmap.ad responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: type: integer title: id description: Delete idmap to backend mapping by id get: tags: - idmap.ad responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: limit in: query required: false schema: type: integer - name: offset in: query required: false schema: type: integer - name: count in: query required: false schema: type: boolean - name: sort in: query required: false schema: type: string - name: id in: path required: true schema: type: array title: query-filters default: null items: {} nullable: true put: tags: - idmap.ad responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: type: integer title: id description: Update an entry in the idmap backend table by id. requestBody: content: application/json: schema: $ref: "#/components/schemas/idmap_ad_update_1" /idmap/autorid: get: tags: - idmap.autorid responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: limit in: query required: false schema: type: integer - name: offset in: query required: false schema: type: integer - name: count in: query required: false schema: type: boolean - name: sort in: query required: false schema: type: string post: tags: - idmap.autorid responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: Create an entry in the idmap backend table. requestBody: content: application/json: schema: $ref: "#/components/schemas/idmap_autorid_create_0" "/idmap/autorid/id/{id}": delete: tags: - idmap.autorid responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: type: integer title: id description: Delete idmap to backend mapping by id get: tags: - idmap.autorid responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: limit in: query required: false schema: type: integer - name: offset in: query required: false schema: type: integer - name: count in: query required: false schema: type: boolean - name: sort in: query required: false schema: type: string - name: id in: path required: true schema: type: array title: query-filters default: null items: {} nullable: true put: tags: - idmap.autorid responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: type: integer title: id description: Update an entry in the idmap backend table by id. requestBody: content: application/json: schema: $ref: "#/components/schemas/idmap_autorid_update_1" /idmap/domaintobackend: get: tags: - idmap.domaintobackend responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: limit in: query required: false schema: type: integer - name: offset in: query required: false schema: type: integer - name: count in: query required: false schema: type: boolean - name: sort in: query required: false schema: type: string post: tags: - idmap.domaintobackend responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: >- Set an idmap backend for a domain. `domain` dictionary containing domain information. Has one-to-one relationship with idmap_domain entries. `idmap_backed` type of idmap backend to use for the domain. Create entry for domain in the respective idmap backend table if one does not exist. requestBody: content: application/json: schema: $ref: "#/components/schemas/idmap_domaintobackend_create_0" "/idmap/domaintobackend/id/{id}": delete: tags: - idmap.domaintobackend responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: type: integer title: id description: Delete idmap to backend mapping by id get: tags: - idmap.domaintobackend responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: limit in: query required: false schema: type: integer - name: offset in: query required: false schema: type: integer - name: count in: query required: false schema: type: boolean - name: sort in: query required: false schema: type: string - name: id in: path required: true schema: type: array title: query-filters default: null items: {} nullable: true put: tags: - idmap.domaintobackend responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: type: integer title: id description: Update idmap to backend mapping by id. requestBody: content: application/json: schema: $ref: "#/components/schemas/idmap_domaintobackend_update_1" /idmap/domain: get: tags: - idmap.domain responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: limit in: query required: false schema: type: integer - name: offset in: query required: false schema: type: integer - name: count in: query required: false schema: type: boolean - name: sort in: query required: false schema: type: string post: tags: - idmap.domain responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: >- Create a new IDMAP domain. These domains must be unique. This table will be automatically populated after joining an Active Directory domain if "allow trusted domains" is set to True in the AD service configuration. There are three default system domains: DS_TYPE_ACTIVEDIRECTORY, DS_TYPE_LDAP, DS_TYPE_DEFAULT_DOMAIN. The system domains correspond with the idmap settings under Active Directory, LDAP, and SMB respectively. `name` the pre-windows 2000 domain name. `DNS_domain_name` DNS name of the domain. requestBody: content: application/json: schema: $ref: "#/components/schemas/idmap_domain_create_0" "/idmap/domain/id/{id}": delete: tags: - idmap.domain responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: type: integer title: id description: Delete a domain by id. Deletion of default system domains is not permitted. get: tags: - idmap.domain responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: limit in: query required: false schema: type: integer - name: offset in: query required: false schema: type: integer - name: count in: query required: false schema: type: boolean - name: sort in: query required: false schema: type: string - name: id in: path required: true schema: type: array title: query-filters default: null items: {} nullable: true put: tags: - idmap.domain responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: type: integer title: id description: Update a domain by id. requestBody: content: application/json: schema: $ref: "#/components/schemas/idmap_domain_update_1" /idmap/ldap: get: tags: - idmap.ldap responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: limit in: query required: false schema: type: integer - name: offset in: query required: false schema: type: integer - name: count in: query required: false schema: type: boolean - name: sort in: query required: false schema: type: string post: tags: - idmap.ldap responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: Create an entry in the idmap backend table. requestBody: content: application/json: schema: $ref: "#/components/schemas/idmap_ldap_create_0" "/idmap/ldap/id/{id}": delete: tags: - idmap.ldap responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: type: integer title: id description: Delete idmap to backend mapping by id get: tags: - idmap.ldap responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: limit in: query required: false schema: type: integer - name: offset in: query required: false schema: type: integer - name: count in: query required: false schema: type: boolean - name: sort in: query required: false schema: type: string - name: id in: path required: true schema: type: array title: query-filters default: null items: {} nullable: true put: tags: - idmap.ldap responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: type: integer title: id description: Update an entry in the idmap backend table by id. requestBody: content: application/json: schema: $ref: "#/components/schemas/idmap_ldap_update_1" /idmap/nss: get: tags: - idmap.nss responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: limit in: query required: false schema: type: integer - name: offset in: query required: false schema: type: integer - name: count in: query required: false schema: type: boolean - name: sort in: query required: false schema: type: string post: tags: - idmap.nss responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: Create an entry in the idmap backend table. requestBody: content: application/json: schema: $ref: "#/components/schemas/idmap_nss_create_0" "/idmap/nss/id/{id}": delete: tags: - idmap.nss responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: type: integer title: id description: Delete idmap to backend mapping by id get: tags: - idmap.nss responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: limit in: query required: false schema: type: integer - name: offset in: query required: false schema: type: integer - name: count in: query required: false schema: type: boolean - name: sort in: query required: false schema: type: string - name: id in: path required: true schema: type: array title: query-filters default: null items: {} nullable: true put: tags: - idmap.nss responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: type: integer title: id description: Update an entry in the idmap backend table by id. requestBody: content: application/json: schema: $ref: "#/components/schemas/idmap_nss_update_1" /idmap/rfc2307: get: tags: - idmap.rfc2307 responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: limit in: query required: false schema: type: integer - name: offset in: query required: false schema: type: integer - name: count in: query required: false schema: type: boolean - name: sort in: query required: false schema: type: string post: tags: - idmap.rfc2307 responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: >- Create an entry in the idmap_rfc2307 backend table. `ldap_server` defines the type of LDAP server to use. This can either be an LDAP server provided by the Active Directory Domain (ad) or a stand-alone LDAP server. `bind_path_user` specfies the search base where user objects can be found in the LDAP server. `bind_path_group` specifies the search base where group objects can be found in the LDAP server. `user_cn` query cn attribute instead of uid attribute for the user name in LDAP. `realm` append @realm to cn for groups (and users if user_cn is set) in LDAP queries. `ldmap_domain` when using the LDAP server in the Active Directory server, this allows one to specify the domain where to access the Active Directory server. This allows using trust relationships while keeping all RFC 2307 records in one place. This parameter is optional, the default is to access the AD server in the current domain to query LDAP records. `ldap_url` when using a stand-alone LDAP server, this parameter specifies the LDAP URL for accessing the LDAP server. `ldap_user_dn` defines the user DN to be used for authentication. `realm` defines the realm to use in the user and group names. This is only required when using cn_realm together with a stand-alone ldap server. requestBody: content: application/json: schema: $ref: "#/components/schemas/idmap_rfc2307_create_0" "/idmap/rfc2307/id/{id}": delete: tags: - idmap.rfc2307 responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: type: integer title: id description: Delete idmap to backend mapping by id get: tags: - idmap.rfc2307 responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: limit in: query required: false schema: type: integer - name: offset in: query required: false schema: type: integer - name: count in: query required: false schema: type: boolean - name: sort in: query required: false schema: type: string - name: id in: path required: true schema: type: array title: query-filters default: null items: {} nullable: true put: tags: - idmap.rfc2307 responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: type: integer title: id description: Update an entry in the idmap backend table by id. requestBody: content: application/json: schema: $ref: "#/components/schemas/idmap_rfc2307_update_1" /idmap/rid: get: tags: - idmap.rid responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: limit in: query required: false schema: type: integer - name: offset in: query required: false schema: type: integer - name: count in: query required: false schema: type: boolean - name: sort in: query required: false schema: type: string post: tags: - idmap.rid responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: Create an entry in the idmap_rid backend table. requestBody: content: application/json: schema: $ref: "#/components/schemas/idmap_rid_create_0" "/idmap/rid/id/{id}": delete: tags: - idmap.rid responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: type: integer title: id description: Delete idmap to backend mapping by id get: tags: - idmap.rid responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: limit in: query required: false schema: type: integer - name: offset in: query required: false schema: type: integer - name: count in: query required: false schema: type: boolean - name: sort in: query required: false schema: type: string - name: id in: path required: true schema: type: array title: query-filters default: null items: {} nullable: true put: tags: - idmap.rid responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: type: integer title: id description: Update an entry in the idmap backend table by id. requestBody: content: application/json: schema: $ref: "#/components/schemas/idmap_rid_update_1" /idmap/script: get: tags: - idmap.script responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: limit in: query required: false schema: type: integer - name: offset in: query required: false schema: type: integer - name: count in: query required: false schema: type: boolean - name: sort in: query required: false schema: type: string post: tags: - idmap.script responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: |- Create an entry in the idmap backend table. `script` full path to the script or program that generates the mappings. requestBody: content: application/json: schema: $ref: "#/components/schemas/idmap_script_create_0" "/idmap/script/id/{id}": delete: tags: - idmap.script responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: type: integer title: id description: Delete idmap to backend mapping by id get: tags: - idmap.script responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: limit in: query required: false schema: type: integer - name: offset in: query required: false schema: type: integer - name: count in: query required: false schema: type: boolean - name: sort in: query required: false schema: type: string - name: id in: path required: true schema: type: array title: query-filters default: null items: {} nullable: true put: tags: - idmap.script responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: type: integer title: id description: Update an entry in the idmap backend table by id. requestBody: content: application/json: schema: $ref: "#/components/schemas/idmap_script_update_1" /idmap/clear_idmap_cache: get: tags: - idmap responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: >- Stop samba, remove the winbindd_cache.tdb file, start samba, flush samba's cache. This should be performed after finalizing idmap changes. /idmap/get_configured_idmap_domains: get: tags: - idmap responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: >- returns list of all configured idmap domains. A configured domain is one that exists in the domaintobackend table and has a corresponding backend configured in the respective idmap_{backend} table. List is sorted based in ascending order based on the id range. /idmap/get_or_create_idmap_by_domain: post: tags: - idmap responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: >- Returns idmap settings based on pre-windows 2000 domain name (workgroup) If mapping exists, but there's no corresponding entry in the specified idmap table, then we generate a new one with the next available block of ids and return it. requestBody: content: application/json: schema: $ref: "#/components/schemas/idmap_get_or_create_idmap_by_domain_0" /idmap/tdb: get: tags: - idmap.tdb responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: limit in: query required: false schema: type: integer - name: offset in: query required: false schema: type: integer - name: count in: query required: false schema: type: boolean - name: sort in: query required: false schema: type: string post: tags: - idmap.tdb responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: Create an entry in the idmap backend table. requestBody: content: application/json: schema: $ref: "#/components/schemas/idmap_tdb_create_0" "/idmap/tdb/id/{id}": delete: tags: - idmap.tdb responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: type: integer title: id description: Delete idmap to backend mapping by id get: tags: - idmap.tdb responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: limit in: query required: false schema: type: integer - name: offset in: query required: false schema: type: integer - name: count in: query required: false schema: type: boolean - name: sort in: query required: false schema: type: string - name: id in: path required: true schema: type: array title: query-filters default: null items: {} nullable: true put: tags: - idmap.tdb responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: type: integer title: id description: Update an entry in the idmap backend table by id. requestBody: content: application/json: schema: $ref: "#/components/schemas/idmap_tdb_update_1" /initshutdownscript: get: tags: - initshutdownscript responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: limit in: query required: false schema: type: integer - name: offset in: query required: false schema: type: integer - name: count in: query required: false schema: type: boolean - name: sort in: query required: false schema: type: string post: tags: - initshutdownscript responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: >- Create an initshutdown script task. `type` indicates if a command or script should be executed at `when`. There are three choices for `when`: 1) PREINIT - This is early in the boot process before all the services / rc scripts have started 2) POSTINIT - This is late in the boot process when most of the services / rc scripts have started 3) SHUTDOWN - This is on shutdown `timeout` is an integer value which indicates time in seconds which the system should wait for the execution of script/command. It should be noted that a hard limit for a timeout is configured by the base OS, so when a script/command is set to execute on SHUTDOWN, the hard limit configured by the base OS is changed adding the timeout specified by script/command so it can be ensured that it executes as desired and is not interrupted by the base OS's limit. requestBody: content: application/json: schema: $ref: "#/components/schemas/initshutdownscript_create_0" "/initshutdownscript/id/{id}": delete: tags: - initshutdownscript responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: type: integer title: id description: Delete init/shutdown task of `id`. get: tags: - initshutdownscript responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: limit in: query required: false schema: type: integer - name: offset in: query required: false schema: type: integer - name: count in: query required: false schema: type: boolean - name: sort in: query required: false schema: type: string - name: id in: path required: true schema: type: array title: query-filters default: null items: {} nullable: true put: tags: - initshutdownscript responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: type: integer title: id description: Update initshutdown script task of `id`. requestBody: content: application/json: schema: $ref: "#/components/schemas/initshutdownscript_update_1" /ipmi: get: tags: - ipmi responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: limit in: query required: false schema: type: integer - name: offset in: query required: false schema: type: integer - name: count in: query required: false schema: type: boolean - name: sort in: query required: false schema: type: string description: Query all IPMI Channels with `query-filters` and `query-options`. "/ipmi/id/{id}": get: tags: - ipmi responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: limit in: query required: false schema: type: integer - name: offset in: query required: false schema: type: integer - name: count in: query required: false schema: type: boolean - name: sort in: query required: false schema: type: string - name: id in: path required: true schema: type: array title: query-filters default: null items: {} nullable: true description: Query all IPMI Channels with `query-filters` and `query-options`. put: tags: - ipmi responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: type: integer title: channel description: >- Update `id` IPMI Configuration. `ipaddress` is a valid ip which will be used to connect to the IPMI interface. `netmask` is the subnet mask associated with `ipaddress`. `dhcp` is a boolean value which if unset means that `ipaddress`, `netmask` and `gateway` must be set. requestBody: content: application/json: schema: $ref: "#/components/schemas/ipmi_update_1" /ipmi/channels: get: tags: - ipmi responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: Return a list with the IPMI channels available. /ipmi/identify: post: tags: - ipmi responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: |- Turn on IPMI chassis identify light. To turn off specify 0 as `seconds`. requestBody: content: application/json: schema: $ref: "#/components/schemas/ipmi_identify_0" /ipmi/is_loaded: get: tags: - ipmi responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: Returns a boolean true value indicating if ipmi device is loaded. /iscsi/global: get: tags: - iscsi.global responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] put: tags: - iscsi.global responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: "`alua` is a no-op for FreeNAS." requestBody: content: application/json: schema: $ref: "#/components/schemas/iscsi_global_update_0" /iscsi/global/sessions: get: tags: - iscsi.global responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: limit in: query required: false schema: type: integer - name: offset in: query required: false schema: type: integer - name: count in: query required: false schema: type: boolean - name: sort in: query required: false schema: type: string description: >- Get a list of currently running iSCSI sessions. This includes initiator and target names and the unique connection IDs. /iscsi/portal: get: tags: - iscsi.portal responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: limit in: query required: false schema: type: integer - name: offset in: query required: false schema: type: integer - name: count in: query required: false schema: type: boolean - name: sort in: query required: false schema: type: string post: tags: - iscsi.portal responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: |- Create a new iSCSI Portal. `discovery_authgroup` is required for CHAP and CHAP_MUTUAL. requestBody: content: application/json: schema: $ref: "#/components/schemas/iscsi_portal_create_0" "/iscsi/portal/id/{id}": delete: tags: - iscsi.portal responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: type: integer title: id description: Delete iSCSI Portal `id`. get: tags: - iscsi.portal responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: limit in: query required: false schema: type: integer - name: offset in: query required: false schema: type: integer - name: count in: query required: false schema: type: boolean - name: sort in: query required: false schema: type: string - name: id in: path required: true schema: type: array title: query-filters default: null items: {} nullable: true put: tags: - iscsi.portal responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: type: integer title: id description: Update iSCSI Portal `id`. requestBody: content: application/json: schema: $ref: "#/components/schemas/iscsi_portal_update_1" /iscsi/portal/listen_ip_choices: get: tags: - iscsi.portal responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: Returns possible choices for `listen.ip` attribute of portal create and update. /iscsi/auth: get: tags: - iscsi.auth responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: limit in: query required: false schema: type: integer - name: offset in: query required: false schema: type: integer - name: count in: query required: false schema: type: boolean - name: sort in: query required: false schema: type: string post: tags: - iscsi.auth responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: >- Create an iSCSI Authorized Access. `tag` should be unique among all configured iSCSI Authorized Accesses. `secret` and `peersecret` should have length between 12-16 letters inclusive. `peeruser` and `peersecret` are provided only when configuring mutual CHAP. `peersecret` should not be similar to `secret`. requestBody: content: application/json: schema: $ref: "#/components/schemas/iscsi_auth_create_0" "/iscsi/auth/id/{id}": delete: tags: - iscsi.auth responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: type: integer title: id description: Delete iSCSI Authorized Access of `id`. get: tags: - iscsi.auth responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: limit in: query required: false schema: type: integer - name: offset in: query required: false schema: type: integer - name: count in: query required: false schema: type: boolean - name: sort in: query required: false schema: type: string - name: id in: path required: true schema: type: array title: query-filters default: null items: {} nullable: true put: tags: - iscsi.auth responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: type: integer title: id description: Update iSCSI Authorized Access of `id`. requestBody: content: application/json: schema: $ref: "#/components/schemas/iscsi_auth_update_1" /iscsi/initiator: get: tags: - iscsi.initiator responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: limit in: query required: false schema: type: integer - name: offset in: query required: false schema: type: integer - name: count in: query required: false schema: type: boolean - name: sort in: query required: false schema: type: string post: tags: - iscsi.initiator responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: >- Create an iSCSI Initiator. `initiators` is a list of initiator hostnames which are authorized to access an iSCSI Target. To allow all possible initiators, `initiators` can be left empty. `auth_network` is a list of IP/CIDR addresses which are allowed to use this initiator. If all networks are to be allowed, this field should be left empty. requestBody: content: application/json: schema: $ref: "#/components/schemas/iscsi_initiator_create_0" "/iscsi/initiator/id/{id}": delete: tags: - iscsi.initiator responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: type: integer title: id description: Delete iSCSI initiator of `id`. get: tags: - iscsi.initiator responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: limit in: query required: false schema: type: integer - name: offset in: query required: false schema: type: integer - name: count in: query required: false schema: type: boolean - name: sort in: query required: false schema: type: string - name: id in: path required: true schema: type: array title: query-filters default: null items: {} nullable: true put: tags: - iscsi.initiator responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: type: integer title: id description: Update iSCSI initiator of `id`. requestBody: content: application/json: schema: $ref: "#/components/schemas/iscsi_initiator_update_1" /iscsi/extent: get: tags: - iscsi.extent responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: limit in: query required: false schema: type: integer - name: offset in: query required: false schema: type: integer - name: count in: query required: false schema: type: boolean - name: sort in: query required: false schema: type: string post: tags: - iscsi.extent responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: >- Create an iSCSI Extent. When `type` is set to FILE, attribute `filesize` is used and it represents number of bytes. `filesize` if not zero should be a multiple of `blocksize`. `path` is a required attribute with `type` set as FILE and it should be ensured that it does not come under a jail root. With `type` being set to DISK, a valid ZVOL or DISK should be provided. `insecure_tpc` when enabled allows an initiator to bypass normal access control and access any scannable target. This allows xcopy operations otherwise blocked by access control. `xen` is a boolean value which is set to true if Xen is being used as the iSCSI initiator. `ro` when set to true prevents the initiator from writing to this LUN. requestBody: content: application/json: schema: $ref: "#/components/schemas/iscsi_extent_create_0" "/iscsi/extent/id/{id}": delete: tags: - iscsi.extent responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: type: integer title: id description: >- Delete iSCSI Extent of `id`. If `id` iSCSI Extent's `type` was configured to FILE, `remove` can be set to remove the configured file. requestBody: content: application/json: schema: $ref: "#/components/schemas/iscsi_extent_delete" get: tags: - iscsi.extent responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: limit in: query required: false schema: type: integer - name: offset in: query required: false schema: type: integer - name: count in: query required: false schema: type: boolean - name: sort in: query required: false schema: type: string - name: id in: path required: true schema: type: array title: query-filters default: null items: {} nullable: true put: tags: - iscsi.extent responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: type: integer title: id description: Update iSCSI Extent of `id`. requestBody: content: application/json: schema: $ref: "#/components/schemas/iscsi_extent_update_1" /iscsi/extent/disk_choices: post: tags: - iscsi.extent responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: |- Exclude will exclude the path from being in the used_zvols list, allowing the user to keep the same item on update requestBody: content: application/json: schema: $ref: "#/components/schemas/iscsi_extent_disk_choices_0" /iscsi/target: get: tags: - iscsi.target responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: limit in: query required: false schema: type: integer - name: offset in: query required: false schema: type: integer - name: count in: query required: false schema: type: boolean - name: sort in: query required: false schema: type: string post: tags: - iscsi.target responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: >- Create an iSCSI Target. `groups` is a list of group dictionaries which provide information related to using a `portal`, `initiator`, `authmethod` and `auth` with this target. `auth` represents a valid iSCSI Authorized Access and defaults to null. requestBody: content: application/json: schema: $ref: "#/components/schemas/iscsi_target_create_0" "/iscsi/target/id/{id}": delete: tags: - iscsi.target responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: type: integer title: id description: >- Delete iSCSI Target of `id`. Deleting an iSCSI Target makes sure we delete all Associated Targets which use `id` iSCSI Target. requestBody: content: application/json: schema: $ref: "#/components/schemas/iscsi_target_delete_1" get: tags: - iscsi.target responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: limit in: query required: false schema: type: integer - name: offset in: query required: false schema: type: integer - name: count in: query required: false schema: type: boolean - name: sort in: query required: false schema: type: string - name: id in: path required: true schema: type: array title: query-filters default: null items: {} nullable: true put: tags: - iscsi.target responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: type: integer title: id description: Update iSCSI Target of `id`. requestBody: content: application/json: schema: $ref: "#/components/schemas/iscsi_target_update_1" /iscsi/targetextent: get: tags: - iscsi.targetextent responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: limit in: query required: false schema: type: integer - name: offset in: query required: false schema: type: integer - name: count in: query required: false schema: type: boolean - name: sort in: query required: false schema: type: string post: tags: - iscsi.targetextent responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: >- Create an Associated Target. `lunid` will be automatically assigned if it is not provided based on the `target`. requestBody: content: application/json: schema: $ref: "#/components/schemas/iscsi_targetextent_create_0" "/iscsi/targetextent/id/{id}": delete: tags: - iscsi.targetextent responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: type: integer title: id description: Delete Associated Target of `id`. requestBody: content: application/json: schema: $ref: "#/components/schemas/iscsi_targetextent_delete_1" get: tags: - iscsi.targetextent responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: limit in: query required: false schema: type: integer - name: offset in: query required: false schema: type: integer - name: count in: query required: false schema: type: boolean - name: sort in: query required: false schema: type: string - name: id in: path required: true schema: type: array title: query-filters default: null items: {} nullable: true put: tags: - iscsi.targetextent responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: type: integer title: id description: Update Associated Target of `id`. requestBody: content: application/json: schema: $ref: "#/components/schemas/iscsi_targetextent_update_1" /jail: get: tags: - jail responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: limit in: query required: false schema: type: integer - name: offset in: query required: false schema: type: integer - name: count in: query required: false schema: type: boolean - name: sort in: query required: false schema: type: string description: Query all jails with `query-filters` and `query-options`. post: tags: - jail responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: Creates a jail. requestBody: content: application/json: schema: $ref: "#/components/schemas/jail_create_0" "/jail/id/{id}": delete: tags: - jail responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: title: jail type: string description: Takes a jail and destroys it. requestBody: content: application/json: schema: $ref: "#/components/schemas/jail_delete_1" get: tags: - jail responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: limit in: query required: false schema: type: integer - name: offset in: query required: false schema: type: integer - name: count in: query required: false schema: type: boolean - name: sort in: query required: false schema: type: string - name: id in: path required: true schema: type: array title: query-filters default: null items: {} nullable: true description: Query all jails with `query-filters` and `query-options`. put: tags: - jail responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: title: jail type: string description: Sets a jail property. requestBody: content: application/json: schema: $ref: "#/components/schemas/jail_update_1" /jail/activate: post: tags: - jail responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: Activates a pool for iocage usage, and deactivates the rest. requestBody: content: application/json: schema: $ref: "#/components/schemas/jail_activate_0" /jail/clean: post: tags: - jail responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: Cleans all iocage datasets of ds_type requestBody: content: application/json: schema: $ref: "#/components/schemas/jail_clean_0" "/jail/id/{id}/clone": post: tags: - jail responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: title: source_jail type: string requestBody: content: application/json: schema: $ref: "#/components/schemas/jail_clone_1" /jail/default_configuration: get: tags: - jail responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: Retrieve default configuration for iocage jails. /jail/exec: post: tags: - jail responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: Issues a command inside a jail. requestBody: content: application/json: schema: $ref: "#/components/schemas/jail_exec" /jail/export: post: tags: - jail responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: Export jail to compressed file. requestBody: content: application/json: schema: $ref: "#/components/schemas/jail_export_0" /jail/fetch: post: tags: - jail responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: Fetches a release or plugin. requestBody: content: application/json: schema: $ref: "#/components/schemas/jail_fetch_0" /jail/fstab: post: tags: - jail responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: Manipulate a jails fstab requestBody: content: application/json: schema: $ref: "#/components/schemas/jail_fstab" /jail/get_activated_pool: get: tags: - jail responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: Returns the activated pool if there is one, or None /jail/import_image: post: tags: - jail responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: >- Import jail from compressed file. `compression algorithm`: None indicates that middlewared is to automatically determine which compression algorithm to use based on the compressed file extension. If multiple copies are found, an exception is raised. `path` is the directory where the exported jail lives. It defaults to the iocage images dataset. requestBody: content: application/json: schema: $ref: "#/components/schemas/jail_import_image_0" /jail/interface_choices: get: tags: - jail responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: Returns a dictionary of interface choices which can be used with creating/updating jails. /jail/rc_action: post: tags: - jail responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: Does specified action on rc enabled (boot=on) jails requestBody: content: application/json: schema: $ref: "#/components/schemas/jail_rc_action_0" /jail/releases_choices: post: tags: - jail responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: List installed or available releases which can be downloaded. requestBody: content: application/json: schema: $ref: "#/components/schemas/jail_releases_choices_0" /jail/restart: post: tags: - jail responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: Takes a jail and restarts it. requestBody: content: application/json: schema: $ref: "#/components/schemas/jail_restart_0" /jail/start: post: tags: - jail responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: Takes a jail and starts it. requestBody: content: application/json: schema: $ref: "#/components/schemas/jail_start_0" /jail/stop: post: tags: - jail responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: Takes a jail and stops it. requestBody: content: application/json: schema: $ref: "#/components/schemas/jail_stop" /jail/update_defaults: post: tags: - jail responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: Update default properties for iocage which will remain true for all jails moving on i.e nat_backend requestBody: content: application/json: schema: $ref: "#/components/schemas/jail_update_defaults_0" /jail/update_to_latest_patch: post: tags: - jail responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: Updates specified jail to latest patch level. requestBody: content: application/json: schema: $ref: "#/components/schemas/jail_update_to_latest_patch" /plugin: get: tags: - plugin responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: limit in: query required: false schema: type: integer - name: offset in: query required: false schema: type: integer - name: count in: query required: false schema: type: boolean - name: sort in: query required: false schema: type: string description: Query installed plugins with `query-filters` and `query-options`. post: tags: - plugin responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: >- Create a Plugin. `plugin_name` is the name of the plugin specified by the INDEX file in "plugin_repository" and it's JSON file. `jail_name` is the name of the jail that will manage the plugin. Required. `props` is a list of jail properties that the user manually sets. Plugins should always set the jail networking capability with DHCP, IP Address, or NAT properties. i.e dhcp=1 / ip4_addr="192.168.0.2" / nat=1 `plugin_repository` is a git URI that fetches data for `plugin_name`. `branch` is the FreeNAS repository branch to use as the base for the `plugin_repository`. The default is to use the current system version. Example: 11.3-RELEASE. requestBody: content: application/json: schema: $ref: "#/components/schemas/plugin_create_0" "/plugin/id/{id}": delete: tags: - plugin responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: title: id type: string description: Delete plugin `id`. get: tags: - plugin responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: limit in: query required: false schema: type: integer - name: offset in: query required: false schema: type: integer - name: count in: query required: false schema: type: boolean - name: sort in: query required: false schema: type: string - name: id in: path required: true schema: type: array title: query-filters default: null items: {} nullable: true description: Query installed plugins with `query-filters` and `query-options`. put: tags: - plugin responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: title: id type: string description: Update plugin `id`. requestBody: content: application/json: schema: $ref: "#/components/schemas/plugin_update_1" /plugin/available: post: tags: - plugin responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: List available plugins which can be fetched for `plugin_repository`. requestBody: content: application/json: schema: $ref: "#/components/schemas/plugin_available_0" /plugin/branches_choices: post: tags: - plugin responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] requestBody: content: application/json: schema: $ref: "#/components/schemas/plugin_branches_choices_0" /plugin/defaults: post: tags: - plugin responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: >- Retrieve default properties specified for `plugin` in the plugin's manifest. When `refresh` is specified, `plugin_repository` is updated before retrieving plugin's default properties. requestBody: content: application/json: schema: $ref: "#/components/schemas/plugin_defaults_0" /plugin/official_repositories: get: tags: - plugin responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: List officially supported plugin repositories. /plugin/retrieve_versions_for_repos: get: tags: - plugin responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] /kerberos/keytab: get: tags: - kerberos.keytab responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: limit in: query required: false schema: type: integer - name: offset in: query required: false schema: type: integer - name: count in: query required: false schema: type: boolean - name: sort in: query required: false schema: type: string post: tags: - kerberos.keytab responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: >- Create a kerberos keytab. Uploaded keytab files will be merged with the system keytab under /etc/krb5.keytab. `file` b64encoded kerberos keytab `name` name for kerberos keytab requestBody: content: application/json: schema: $ref: "#/components/schemas/kerberos_keytab_create_0" "/kerberos/keytab/id/{id}": delete: tags: - kerberos.keytab responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: type: integer title: id description: |- Delete kerberos keytab by id, and force regeneration of system keytab. get: tags: - kerberos.keytab responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: limit in: query required: false schema: type: integer - name: offset in: query required: false schema: type: integer - name: count in: query required: false schema: type: boolean - name: sort in: query required: false schema: type: string - name: id in: path required: true schema: type: array title: query-filters default: null items: {} nullable: true put: tags: - kerberos.keytab responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: type: integer title: id description: Update kerberos keytab by id. requestBody: content: application/json: schema: $ref: "#/components/schemas/kerberos_keytab_update_1" /kerberos/keytab/system_keytab_list: get: tags: - kerberos.keytab responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: Returns content of system keytab (/etc/krb5.keytab). /kerberos/realm: get: tags: - kerberos.realm responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: limit in: query required: false schema: type: integer - name: offset in: query required: false schema: type: integer - name: count in: query required: false schema: type: boolean - name: sort in: query required: false schema: type: string post: tags: - kerberos.realm responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: >- Create a new kerberos realm. This will be automatically populated during the domain join process in an Active Directory environment. Kerberos realm names are case-sensitive, but convention is to only use upper-case. Entries for kdc, admin_server, and kpasswd_server are not required. If they are unpopulated, then kerberos will use DNS srv records to discover the correct servers. The option to hard-code them is provided due to AD site discovery. Kerberos has no concept of Active Directory sites. This means that middleware performs the site discovery and sets the kerberos configuration based on the AD site. requestBody: content: application/json: schema: $ref: "#/components/schemas/kerberos_realm_create_0" "/kerberos/realm/id/{id}": delete: tags: - kerberos.realm responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: type: integer title: id description: Delete a kerberos realm by ID. get: tags: - kerberos.realm responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: limit in: query required: false schema: type: integer - name: offset in: query required: false schema: type: integer - name: count in: query required: false schema: type: boolean - name: sort in: query required: false schema: type: string - name: id in: path required: true schema: type: array title: query-filters default: null items: {} nullable: true put: tags: - kerberos.realm responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: type: integer title: id description: >- Update a kerberos realm by id. This will be automatically populated during the domain join process in an Active Directory environment. Kerberos realm names are case-sensitive, but convention is to only use upper-case. requestBody: content: application/json: schema: $ref: "#/components/schemas/kerberos_realm_update_1" /kerberos: get: tags: - kerberos responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] put: tags: - kerberos responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: >- `appdefaults_aux` add parameters to "appdefaults" section of the krb5.conf file. `libdefaults_aux` add parameters to "libdefaults" section of the krb5.conf file. requestBody: content: application/json: schema: $ref: "#/components/schemas/kerberos_update_0" /keychaincredential: get: tags: - keychaincredential responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: limit in: query required: false schema: type: integer - name: offset in: query required: false schema: type: integer - name: count in: query required: false schema: type: boolean - name: sort in: query required: false schema: type: string post: tags: - keychaincredential responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: >+ Create a Keychain Credential Create a Keychain Credential of any type. Every Keychain Credential has a `name` which is used to distinguish it from others. The following `type`s are supported: * `SSH_KEY_PAIR` Which `attributes` are: * `private_key` * `public_key` (which can be omitted and thus automatically derived from private key) At least one attribute is required. * `SSH_CREDENTIALS` Which `attributes` are: * `host` * `port` (default 22) * `username` (default root) * `private_key` (Keychain Credential ID) * `remote_host_key` (you can use `keychaincredential.remote_ssh_host_key_scan` do discover it) * `cipher`: one of `STANDARD`, `FAST`, or `DISABLED` (last requires special support from both SSH server and client) * `connect_timeout` (default 10) requestBody: content: application/json: schema: $ref: "#/components/schemas/keychaincredential_create_0" "/keychaincredential/id/{id}": delete: tags: - keychaincredential responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: type: integer title: id description: |+ Delete Keychain Credential with specific `id` requestBody: content: application/json: schema: $ref: "#/components/schemas/keychaincredential_delete_1" get: tags: - keychaincredential responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: limit in: query required: false schema: type: integer - name: offset in: query required: false schema: type: integer - name: count in: query required: false schema: type: boolean - name: sort in: query required: false schema: type: string - name: id in: path required: true schema: type: array title: query-filters default: null items: {} nullable: true put: tags: - keychaincredential responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: type: integer title: id description: >+ Update a Keychain Credential with specific `id` Please note that you can't change `type` Also you must specify full `attributes` value See the documentation for `create` method for information on payload contents requestBody: content: application/json: schema: $ref: "#/components/schemas/keychaincredential_update_1" /keychaincredential/generate_ssh_key_pair: get: tags: - keychaincredential responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: |+ Generate a public/private key pair Generate a public/private key pair (useful for `SSH_KEY_PAIR` type) /keychaincredential/remote_ssh_host_key_scan: post: tags: - keychaincredential responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: |+ Discover a remote host key Discover a remote host key (useful for `SSH_CREDENTIALS`) requestBody: content: application/json: schema: $ref: "#/components/schemas/keychaincredential_remote_ssh_host_key_sc\ an_0" /keychaincredential/remote_ssh_semiautomatic_setup: post: tags: - keychaincredential responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: >+ Perform semi-automatic SSH connection setup with other FreeNAS machine Perform semi-automatic SSH connection setup with other FreeNAS machine. It creates a `SSH_CREDENTIALS` credential with specified `name` that can be used to connect to FreeNAS machine with specified `url` and temporary auth `token`. Other FreeNAS machine adds `private_key` to allowed `username`'s private keys. Other `SSH_CREDENTIALS` attributes such as `cipher` and `connect_timeout` can be specified as well. requestBody: content: application/json: schema: $ref: "#/components/schemas/keychaincredential_remote_ssh_semiautomat\ ic_setup_0" /keychaincredential/used_by: post: tags: - keychaincredential responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: Returns list of objects that use this credential. requestBody: content: application/json: schema: $ref: "#/components/schemas/keychaincredential_used_by_0" /ldap: get: tags: - ldap responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] put: tags: - ldap responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: |- `hostname` list of ip addresses or hostnames of LDAP servers with which to communicate in order of preference. Failover only occurs if the current LDAP server is unresponsive. `basedn` specifies the default base DN to use when performing ldap operations. The base must be specified as a Distinguished Name in LDAP format. `binddn` specifies the default bind DN to use when performing ldap operations. The bind DN must be specified as a Distinguished Name in LDAP format. `anonbind` use anonymous authentication. `ssl` establish SSL/TLS-protected connections to the LDAP server(s). GSSAPI signing is disabled on SSL/TLS-protected connections if kerberos authentication is used. `certificate` LDAPs client certificate to be used for certificate- based authentication. `validate_certificates` specifies whether to perform checks on server certificates in a TLS session. If enabled, TLS_REQCERT demand is set. The server certificate is requested. If no certificate is provided or if a bad certificate is provided, the session is immediately terminated. If disabled, TLS_REQCERT allow is set. The server certificate is requested, but all errors are ignored. `kerberos_realm` in which the server is located. This parameter is only required for SASL GSSAPI authentication to the remote LDAP server. `kerberos_principal` kerberos principal to use for SASL GSSAPI authentication to the remote server. If `kerberos_realm` is specified without a keytab, then the `binddn` and `bindpw` are used to perform to obtain the ticket necessary for GSSAPI authentication. `timeout` specifies a timeout (in seconds) after which calls to synchronous LDAP APIs will abort if no response is received. `dns_timeout` specifies the timeout (in seconds) after which the poll(2)/select(2) following a connect(2) returns in case of no activity for openldap. For nslcd this specifies the time limit (in seconds) to use when connecting to the directory server. This directly impacts the length of time that the LDAP service tries before failing over to a secondary LDAP URI. `idmap_backend` provides a plugin interface for Winbind to use varying backends to store SID/uid/gid mapping tables. The correct setting depends on the environment in which the NAS is deployed. The default is to use idmap_ldap with the same LDAP configuration as the main LDAP service. `has_samba_schema` determines whether to configure samba to use the ldapsam passdb backend to provide SMB access to LDAP users. This feature requires the presence of Samba LDAP schema extensions on the remote LDAP server. requestBody: content: application/json: schema: $ref: "#/components/schemas/ldap_update_0" /ldap/get_state: get: tags: - ldap responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: >- Wrapper function for 'directoryservices.get_state'. Returns only the state of the LDAP service. /ldap/idmap_backend_choices: get: tags: - ldap responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: Returns list of available idmap backends. /ldap/schema_choices: get: tags: - ldap responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: Returns list of available LDAP schema choices. /ldap/ssl_choices: get: tags: - ldap responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: Returns list of SSL choices. /lldp: get: tags: - lldp responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] put: tags: - lldp responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: >- Update LLDP Service Configuration. `country` is a two letter ISO 3166 country code required for LLDP location support. `location` is an optional attribute specifying the physical location of the host. requestBody: content: application/json: schema: $ref: "#/components/schemas/lldp_update_0" /mail: get: tags: - mail responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] put: tags: - mail responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: >- Update Mail Service Configuration. `fromemail` is used as a sending address which the mail server will use for sending emails. `outgoingserver` is the hostname or IP address of SMTP server used for sending an email. `security` is type of encryption desired. `smtp` is a boolean value which when set indicates that SMTP authentication has been enabled and `user`/`pass` are required attributes now. requestBody: content: application/json: schema: $ref: "#/components/schemas/mail_update_0" /mail/send: post: tags: - mail responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: >- Sends mail using configured mail settings. `text` will be formatted to HTML using Markdown and rendered using default E-Mail template. You can put your own HTML using `html`. If `html` is null, no HTML MIME part will be added to E-Mail. If `attachments` is true, a list compromised of the following dict is required via HTTP upload: - headers(list) - name(str) - value(str) - params(dict) - content (str) [ { "headers": [ { "name": "Content-Transfer-Encoding", "value": "base64" }, { "name": "Content-Type", "value": "application/octet-stream", "params": { "name": "test.txt" } } ], "content": "dGVzdAo=" } ] A file can be uploaded to this end point. This end point is special, please refer to Jobs section in Websocket API documentation for details. requestBody: content: application/json: schema: $ref: "#/components/schemas/mail_send" /multipath: get: tags: - multipath responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: limit in: query required: false schema: type: integer - name: offset in: query required: false schema: type: integer - name: count in: query required: false schema: type: boolean - name: sort in: query required: false schema: type: string description: |+ Get multipaths and their consumers. "/multipath/id/{id}": get: tags: - multipath responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: limit in: query required: false schema: type: integer - name: offset in: query required: false schema: type: integer - name: count in: query required: false schema: type: boolean - name: sort in: query required: false schema: type: string - name: id in: path required: true schema: type: array title: query-filters default: null items: {} nullable: true description: |+ Get multipaths and their consumers. /dns/query: get: tags: - dns responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: limit in: query required: false schema: type: integer - name: offset in: query required: false schema: type: integer - name: count in: query required: false schema: type: boolean - name: sort in: query required: false schema: type: string description: Query Name Servers with `query-filters` and `query-options`. /interface: get: tags: - interface responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: limit in: query required: false schema: type: integer - name: offset in: query required: false schema: type: integer - name: count in: query required: false schema: type: boolean - name: sort in: query required: false schema: type: string description: Query Interfaces with `query-filters` and `query-options` post: tags: - interface responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: >- Create virtual interfaces (Link Aggregation, VLAN) For BRIDGE `type` the following attribute is required: bridge_members. For LINK_AGGREGATION `type` the following attributes are required: lag_ports, lag_protocol. For VLAN `type` the following attributes are required: vlan_parent_interface, vlan_tag and vlan_pcp. requestBody: content: application/json: schema: $ref: "#/components/schemas/interface_create_0" "/interface/id/{id}": delete: tags: - interface responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: title: id type: string description: |- Delete Interface of `id`. It should be noted that only virtual interfaces can be deleted. get: tags: - interface responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: limit in: query required: false schema: type: integer - name: offset in: query required: false schema: type: integer - name: count in: query required: false schema: type: boolean - name: sort in: query required: false schema: type: string - name: id in: path required: true schema: type: array title: query-filters default: null items: {} nullable: true description: Query Interfaces with `query-filters` and `query-options` put: tags: - interface responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: title: id type: string description: Update Interface of `id`. requestBody: content: application/json: schema: $ref: "#/components/schemas/interface_update_1" /interface/bridge_members_choices: post: tags: - interface responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: |- Return available interface choices for `bridge_members` attribute. `id` is the name of the bridge interface to update or null for a new bridge interface. requestBody: content: application/json: schema: $ref: "#/components/schemas/interface_bridge_members_choices_0" /interface/checkin: get: tags: - interface responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: >- After interfaces changes are committed with checkin timeout this method needs to be called within that timeout limit to prevent reverting the changes. This is to ensure user verifies the changes went as planned and its working. /interface/checkin_waiting: get: tags: - interface responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: >- Returns wether or not we are waiting user to checkin the applied network changes before they are rolled back. Value is in number of seconds or null. /interface/choices: post: tags: - interface responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: |- Choices of available network interfaces. `bridge_members` will include BRIDGE members. `lag_ports` will include LINK_AGGREGATION ports. `vlan_parent` will include VLAN parent interface. `exclude` is a list of interfaces prefix to remove. `include` is a list of interfaces that should not be removed. requestBody: content: application/json: schema: $ref: "#/components/schemas/interface_choices_0" /interface/commit: post: tags: - interface responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: >- Commit/apply pending interfaces changes. `rollback` as true (default) will rollback changes in case they fail to apply. `checkin_timeout` is the time in seconds it will wait for the checkin call to acknowledge the interfaces changes happened as planned from the user. If checkin does not happen within this period of time the changes will get reverted. requestBody: content: application/json: schema: $ref: "#/components/schemas/interface_commit_0" /interface/has_pending_changes: get: tags: - interface responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: Returns whether there are pending interfaces changes to be applied or not. /interface/ip_in_use: post: tags: - interface responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: >- Get all IPv4 / Ipv6 from all valid interfaces, excluding bridge, tap and epair. `loopback` will return loopback interface addresses. `any` will return wildcard addresses (0.0.0.0 and ::). `static` when enabled will ensure we only return static ip's configured. Returns a list of dicts - eg - [ { "type": "INET6", "address": "fe80::5054:ff:fe16:4aac", "netmask": 64 }, { "type": "INET", "address": "192.168.122.148", "netmask": 24, "broadcast": "192.168.122.255" }, ] requestBody: content: application/json: schema: $ref: "#/components/schemas/interface_ip_in_use_0" /interface/lag_ports_choices: post: tags: - interface responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: |- Return available interface choices for `lag_ports` attribute. `id` is the name of the LAG interface to update or null for a new LAG interface. requestBody: content: application/json: schema: $ref: "#/components/schemas/interface_lag_ports_choices_0" /interface/rollback: get: tags: - interface responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: Rollback pending interfaces changes. /interface/vlan_parent_interface_choices: get: tags: - interface responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: Return available interface choices for `vlan_parent_interface` attribute. /network/configuration: get: tags: - network.configuration responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] put: tags: - network.configuration responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: >- Update Network Configuration Service configuration. `ipv4gateway` if set is used instead of the default gateway provided by DHCP. `nameserver1` is primary DNS server. `nameserver2` is secondary DNS server. `nameserver3` is tertiary DNS server. `httpproxy` attribute must be provided if a proxy is to be used for network operations. `netwait_enabled` is a boolean attribute which when set indicates that network services will not start at boot unless they are able to ping the addresses listed in `netwait_ip` list. requestBody: content: application/json: schema: $ref: "#/components/schemas/network_configuration_update_0" /network/general/summary: get: tags: - network.general responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: |+ Retrieve general information for current Network. Returns a dictionary. For example: /route/ipv4gw_reachable: post: tags: - route responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: |- Get the IPv4 gateway and verify if it is reachable by any interface. Returns: bool: True if the gateway is reachable or otherwise False. requestBody: content: application/json: schema: $ref: "#/components/schemas/route_ipv4gw_reachable_0" /route/system_routes: get: tags: - route responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: limit in: query required: false schema: type: integer - name: offset in: query required: false schema: type: integer - name: count in: query required: false schema: type: boolean - name: sort in: query required: false schema: type: string description: Get current/applied network routes. /staticroute: get: tags: - staticroute responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: limit in: query required: false schema: type: integer - name: offset in: query required: false schema: type: integer - name: count in: query required: false schema: type: boolean - name: sort in: query required: false schema: type: string post: tags: - staticroute responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: >- Create a Static Route. Address families of `gateway` and `destination` should match when creating a static route. `description` is an optional attribute for any notes regarding the static route. requestBody: content: application/json: schema: $ref: "#/components/schemas/staticroute_create_0" "/staticroute/id/{id}": delete: tags: - staticroute responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: type: integer title: id description: Delete Static Route of `id`. get: tags: - staticroute responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: limit in: query required: false schema: type: integer - name: offset in: query required: false schema: type: integer - name: count in: query required: false schema: type: boolean - name: sort in: query required: false schema: type: string - name: id in: path required: true schema: type: array title: query-filters default: null items: {} nullable: true put: tags: - staticroute responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: type: integer title: id description: Update Static Route of `id`. requestBody: content: application/json: schema: $ref: "#/components/schemas/staticroute_update_1" /nfs: get: tags: - nfs responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] put: tags: - nfs responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: >+ Update NFS Service Configuration. `servers` represents number of servers to create. When `allow_nonroot` is set, it allows non-root mount requests to be served. `bindip` is a list of IP's on which NFS will listen for requests. When it is unset/empty, NFS listens on all available addresses. `v4` when set means that we switch from NFSv3 to NFSv4. `v4_v3owner` when set means that system will use NFSv3 ownership model for NFSv4. `mountd_port` specifies the port mountd(8) binds to. `rpcstatd_port` specifies the port rpc.statd(8) binds to. `rpclockd_port` specifies the port rpclockd_port(8) binds to. requestBody: content: application/json: schema: $ref: "#/components/schemas/nfs_update_0" /sharing/nfs: get: tags: - sharing.nfs responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: limit in: query required: false schema: type: integer - name: offset in: query required: false schema: type: integer - name: count in: query required: false schema: type: boolean - name: sort in: query required: false schema: type: string post: tags: - sharing.nfs responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: >- Create a NFS Share. `paths` is a list of valid paths which are configured to be shared on this share. `networks` is a list of authorized networks that are allowed to access the share having format "network/mask" CIDR notation. If empty, all networks are allowed. `hosts` is a list of IP's/hostnames which are allowed to access the share. If empty, all IP's/hostnames are allowed. `alldirs` is a boolean value which when set indicates that the client can mount any subdirectories of the selected pool or dataset. requestBody: content: application/json: schema: $ref: "#/components/schemas/sharing_nfs_create_0" "/sharing/nfs/id/{id}": delete: tags: - sharing.nfs responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: type: integer title: id description: Delete NFS Share of `id`. get: tags: - sharing.nfs responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: limit in: query required: false schema: type: integer - name: offset in: query required: false schema: type: integer - name: count in: query required: false schema: type: boolean - name: sort in: query required: false schema: type: string - name: id in: path required: true schema: type: array title: query-filters default: null items: {} nullable: true put: tags: - sharing.nfs responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: type: integer title: id description: Update NFS Share of `id`. requestBody: content: application/json: schema: $ref: "#/components/schemas/sharing_nfs_update_1" /nis: get: tags: - nis responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] put: tags: - nis responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: >- Update NIS Service Configuration. `domain` is the name of NIS domain. `servers` is a list of hostnames/IP addresses. `secure_mode` when enabled sets ypbind(8) to refuse binding to any NIS server not running as root on a TCP port over 1024. `manycast` when enabled sets ypbind(8) to bind to the server that responds the fastest. `enable` enables and starts the NIS service. The NIS service is disabled when this value is changed to False. requestBody: content: application/json: schema: $ref: "#/components/schemas/nis_update_0" /nis/get_state: get: tags: - nis responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: >- Wrapper function for 'directoryservices.get_state'. Returns only the state of the NIS service. /system/ntpserver: get: tags: - system.ntpserver responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: limit in: query required: false schema: type: integer - name: offset in: query required: false schema: type: integer - name: count in: query required: false schema: type: boolean - name: sort in: query required: false schema: type: string post: tags: - system.ntpserver responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: >- Add an NTP Server. `address` specifies the hostname/IP address of the NTP server. `burst` when enabled makes sure that if server is reachable, sends a burst of eight packets instead of one. This is designed to improve timekeeping quality with the server command. `iburst` when enabled speeds up the initial synchronization, taking seconds rather than minutes. `prefer` marks the specified server as preferred. When all other things are equal, this host is chosen for synchronization acquisition with the server command. It is recommended that they be used for servers with time monitoring hardware. `minpoll` is minimum polling time in seconds. It must be a power of 2 and less than `maxpoll`. `maxpoll` is maximum polling time in seconds. It must be a power of 2 and greater than `minpoll`. `force` when enabled forces the addition of NTP server even if it is currently unreachable. requestBody: content: application/json: schema: $ref: "#/components/schemas/system_ntpserver_create_0" "/system/ntpserver/id/{id}": delete: tags: - system.ntpserver responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: type: integer title: id description: Delete NTP server of `id`. get: tags: - system.ntpserver responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: limit in: query required: false schema: type: integer - name: offset in: query required: false schema: type: integer - name: count in: query required: false schema: type: boolean - name: sort in: query required: false schema: type: string - name: id in: path required: true schema: type: array title: query-filters default: null items: {} nullable: true put: tags: - system.ntpserver responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: type: integer title: id description: Update NTP server of `id`. requestBody: content: application/json: schema: $ref: "#/components/schemas/system_ntpserver_update_1" /system/ntpserver/test_ntp_server: get: tags: - system.ntpserver responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] /pool/dataset: get: tags: - pool.dataset responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: limit in: query required: false schema: type: integer - name: offset in: query required: false schema: type: integer - name: count in: query required: false schema: type: boolean - name: sort in: query required: false schema: type: string description: Query Pool Datasets with `query-filters` and `query-options`. post: tags: - pool.dataset responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: >+ Creates a dataset/zvol. `volsize` is required for type=VOLUME and is supposed to be a multiple of the block size. `sparse` and `volblocksize` are only used for type=VOLUME. requestBody: content: application/json: schema: $ref: "#/components/schemas/pool_dataset_create_0" "/pool/dataset/id/{id}": delete: tags: - pool.dataset responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: title: id type: string description: |+ Delete dataset/zvol `id`. `recursive` will also delete/destroy all children datasets. `force` will force delete busy datasets. requestBody: content: application/json: schema: $ref: "#/components/schemas/pool_dataset_delete_1" get: tags: - pool.dataset responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: limit in: query required: false schema: type: integer - name: offset in: query required: false schema: type: integer - name: count in: query required: false schema: type: boolean - name: sort in: query required: false schema: type: string - name: id in: path required: true schema: type: array title: query-filters default: null items: {} nullable: true description: Query Pool Datasets with `query-filters` and `query-options`. put: tags: - pool.dataset responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: title: id type: string description: |+ Updates a dataset/zvol `id`. requestBody: content: application/json: schema: $ref: "#/components/schemas/pool_dataset_update_1" "/pool/dataset/id/{id}/attachments": post: tags: - pool.dataset responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: title: id type: string description: |- Return a list of services dependent of this dataset. Responsible for telling the user whether there is a related share, asking for confirmation. Example return value: [ { "type": "NFS Share", "service": "nfs", "attachments": ["/mnt/tank/work"] } ] requestBody: content: application/json: schema: $ref: "#/components/schemas/pool_dataset_attachments" "/pool/dataset/id/{id}/permission": post: tags: - pool.dataset responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: title: id type: string description: |+ Set permissions for a dataset `id`. Permissions may be specified as either a posix `mode` or an nfsv4 `acl`. Setting mode will fail if the dataset has an existing nfsv4 acl. In this case, the option `stripacl` must be set to `True`. requestBody: content: application/json: schema: $ref: "#/components/schemas/pool_dataset_permission_1" "/pool/dataset/id/{id}/processes": post: tags: - pool.dataset responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: title: id type: string description: >- Return a list of processes using this dataset. Example return value: [ { "pid": 2520, "name": "smbd", "service": "cifs" }, { "pid": 97778, "name": "minio", "cmdline": "/usr/local/bin/minio -C /usr/local/etc/minio server --address=0.0.0.0:9000 --quiet /mnt/tank/wk" } ] requestBody: content: application/json: schema: $ref: "#/components/schemas/pool_dataset_processes" "/pool/dataset/id/{id}/promote": post: tags: - pool.dataset responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: title: id type: string description: Promote the cloned dataset `id`. requestBody: content: application/json: schema: $ref: "#/components/schemas/pool_dataset_promote" /pool/dataset/recommended_zvol_blocksize: post: tags: - pool.dataset responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: >+ Helper method to get recommended size for a new zvol (dataset of type VOLUME). requestBody: content: application/json: schema: $ref: "#/components/schemas/pool_dataset_recommended_zvol_blocksize_0" /pool/resilver: get: tags: - pool.resilver responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] put: tags: - pool.resilver responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: >+ Configure Pool Resilver Priority. If `begin` time is greater than `end` time it means it will rollover the day, e.g. begin = "19:00", end = "05:00" will increase pool resilver priority from 19:00 of one day until 05:00 of the next day. `weekday` follows crontab(5) values 0-7 (0 or 7 is Sun). requestBody: content: application/json: schema: $ref: "#/components/schemas/pool_resilver_update_0" /pool/scrub: get: tags: - pool.scrub responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: limit in: query required: false schema: type: integer - name: offset in: query required: false schema: type: integer - name: count in: query required: false schema: type: boolean - name: sort in: query required: false schema: type: string post: tags: - pool.scrub responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: >+ Create a scrub task for a pool. `threshold` refers to the minimum amount of time in days has to be passed before a scrub can run again. requestBody: content: application/json: schema: $ref: "#/components/schemas/pool_scrub_create_0" "/pool/scrub/id/{id}": delete: tags: - pool.scrub responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: type: integer title: id description: Delete scrub task of `id`. get: tags: - pool.scrub responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: limit in: query required: false schema: type: integer - name: offset in: query required: false schema: type: integer - name: count in: query required: false schema: type: boolean - name: sort in: query required: false schema: type: string - name: id in: path required: true schema: type: array title: query-filters default: null items: {} nullable: true put: tags: - pool.scrub responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: type: integer title: id description: Update scrub task of `id`. requestBody: content: application/json: schema: $ref: "#/components/schemas/pool_scrub_update_1" /pool/scrub/run: post: tags: - pool.scrub responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: Initiate a scrub of a pool `name` if last scrub was performed more than `threshold` days before. requestBody: content: application/json: schema: $ref: "#/components/schemas/pool_scrub_run" /pool: get: tags: - pool responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: limit in: query required: false schema: type: integer - name: offset in: query required: false schema: type: integer - name: count in: query required: false schema: type: boolean - name: sort in: query required: false schema: type: string post: tags: - pool responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: >+ Create a new ZFS Pool. `topology` is a object which requires at least one `data` entry. All of `data` entries (vdevs) require to be of the same type. `encryption` when set to true means that the pool is encrypted. `deduplication` when set to ON or VERIFY makes sure that no block of data is duplicated in the pool. When VERIFY is specified, if two blocks have similar signatures, byte to byte comparison is performed to ensure that the blocks are identical. This should be used in special circumstances as it carries a significant overhead. Example of `topology`: { "data": [ {"type": "RAIDZ1", "disks": ["da1", "da2", "da3"]} ], "cache": [ {"type": "STRIPE", "disks": ["da4"]} ], "log": [ {"type": "RAIDZ1", "disks": ["da5"]} ], "spares": ["da6"] } requestBody: content: application/json: schema: $ref: "#/components/schemas/pool_create_0" "/pool/id/{id}": get: tags: - pool responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: limit in: query required: false schema: type: integer - name: offset in: query required: false schema: type: integer - name: count in: query required: false schema: type: boolean - name: sort in: query required: false schema: type: string - name: id in: path required: true schema: type: array title: query-filters default: null items: {} nullable: true put: tags: - pool responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: type: integer title: id description: |+ Update pool of `id`, adding the new topology. The `type` of `data` must be the same of existing vdevs. requestBody: content: application/json: schema: $ref: "#/components/schemas/pool_update_1" "/pool/id/{id}/attachments": post: tags: - pool responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: type: integer title: id description: |- Return a list of services dependent of this pool. Responsible for telling the user whether there is a related share, asking for confirmation. requestBody: content: application/json: schema: $ref: "#/components/schemas/pool_attachments" "/pool/id/{id}/detach": post: tags: - pool responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: type: integer title: id description: |+ Detach a disk from pool of id `id`. `label` is the vdev guid or device name. requestBody: content: application/json: schema: $ref: "#/components/schemas/pool_detach_1" "/pool/id/{id}/download_encryption_key": post: tags: - pool responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: type: integer title: id description: Download encryption key for a given pool `id`. requestBody: content: application/json: schema: $ref: "#/components/schemas/pool_download_encryption_key_1" "/pool/id/{id}/export": post: tags: - pool responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: type: integer title: id description: >+ Export pool of `id`. `cascade` will delete all attachments of the given pool (`pool.attachments`). `restart_services` will restart services that have open files on given pool. `destroy` will also PERMANENTLY destroy the pool/data. requestBody: content: application/json: schema: $ref: "#/components/schemas/pool_export_1" /pool/filesystem_choices: post: tags: - pool responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: |+ Returns all available datasets, except system datasets. requestBody: content: application/json: schema: $ref: "#/components/schemas/pool_filesystem_choices_0" "/pool/id/{id}/get_disks": post: tags: - pool responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: type: integer title: id default: null nullable: true description: >- Get all disks in use by pools. If `id` is provided only the disks from the given pool `id` will be returned. requestBody: content: application/json: schema: $ref: "#/components/schemas/pool_get_disks" /pool/import_disk: post: tags: - pool responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: |+ Import a disk, by copying its content to a pool. requestBody: content: application/json: schema: $ref: "#/components/schemas/pool_import_disk" /pool/import_disk_autodetect_fs_type: post: tags: - pool responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: |+ Autodetect filesystem type for `pool.import_disk`. requestBody: content: application/json: schema: $ref: "#/components/schemas/pool_import_disk_autodetect_fs_type_0" /pool/import_disk_msdosfs_locales: get: tags: - pool responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: Get a list of locales for msdosfs type to be used in `pool.import_disk`. /pool/import_find: get: tags: - pool responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: |- Get a list of pools available for import with the following details: name, guid, status, hostname. /pool/import_pool: post: tags: - pool responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: >- Import a pool found with `pool.import_find`. If a `name` is specified the pool will be imported using that new name. `passphrase` is required while importing an encrypted pool. In that case this method needs to be called using /_upload/ endpoint with the encryption key. If `enable_attachments` is set to true, attachments that were disabled during pool export will be re-enabled. Errors: ENOENT - Pool not found A file can be uploaded to this end point. This end point is special, please refer to Jobs section in Websocket API documentation for details. requestBody: content: application/json: schema: $ref: "#/components/schemas/pool_import_pool_0" "/pool/id/{id}/is_upgraded": post: tags: - pool responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: type: integer title: id description: >+ Returns whether or not the pool of `id` is on the latest version and with all feature flags enabled. requestBody: content: application/json: schema: $ref: "#/components/schemas/pool_is_upgraded" "/pool/id/{id}/lock": post: tags: - pool responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: type: integer title: id description: Lock encrypted pool `id`. requestBody: content: application/json: schema: $ref: "#/components/schemas/pool_lock_1" "/pool/id/{id}/offline": post: tags: - pool responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: type: integer title: id description: |+ Offline a disk from pool of id `id`. `label` is the vdev guid or device name. requestBody: content: application/json: schema: $ref: "#/components/schemas/pool_offline_1" "/pool/id/{id}/online": post: tags: - pool responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: type: integer title: id description: |+ Online a disk from pool of id `id`. `label` is the vdev guid or device name. requestBody: content: application/json: schema: $ref: "#/components/schemas/pool_online_1" "/pool/id/{id}/passphrase": post: tags: - pool responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: type: integer title: id description: |+ Create/Change/Remove passphrase for an encrypted pool. Setting passphrase to null will remove the passphrase. `admin_password` is required when changing or removing passphrase. requestBody: content: application/json: schema: $ref: "#/components/schemas/pool_passphrase_1" "/pool/id/{id}/processes": post: tags: - pool responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: type: integer title: id description: Returns a list of running processes using this pool. requestBody: content: application/json: schema: $ref: "#/components/schemas/pool_processes" "/pool/id/{id}/recoverykey_rm": post: tags: - pool responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: type: integer title: id description: |+ Remove recovery key for encrypted pool `id`. requestBody: content: application/json: schema: $ref: "#/components/schemas/pool_recoverykey_rm_1" "/pool/id/{id}/rekey": post: tags: - pool responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: type: integer title: id description: |+ Rekey encrypted pool `id`. requestBody: content: application/json: schema: $ref: "#/components/schemas/pool_rekey_1" "/pool/id/{id}/remove": post: tags: - pool responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: type: integer title: id description: |+ Remove a disk from pool of id `id`. `label` is the vdev guid or device name. Error codes: EZFS_NOSPC(2032): out of space to remove a device EZFS_NODEVICE(2017): no such device in pool EZFS_NOREPLICAS(2019): no valid replicas requestBody: content: application/json: schema: $ref: "#/components/schemas/pool_remove_1" "/pool/id/{id}/replace": post: tags: - pool responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: type: integer title: id description: |+ Replace a disk on a pool. `label` is the ZFS guid or a device name `disk` is the identifier of a disk requestBody: content: application/json: schema: $ref: "#/components/schemas/pool_replace_1" "/pool/id/{id}/scrub": post: tags: - pool responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: type: integer title: id description: |+ Performs a scrub action to pool of `id`. `action` can be either of "START", "STOP" or "PAUSE". requestBody: content: application/json: schema: $ref: "#/components/schemas/pool_scrub_1" "/pool/id/{id}/unlock": post: tags: - pool responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: type: integer title: id description: >- Unlock encrypted pool `id`. `passphrase` is required of a recovery key is not provided. If `recoverykey` is true this method expects the recovery key file to be uploaded using the /_upload/ endpoint. `services_restart` is a list of services to be restarted when the pool gets unlocked. Said list be be retrieve using `pool.unlock_services_restart_choices`. A file can be uploaded to this end point. This end point is special, please refer to Jobs section in Websocket API documentation for details. requestBody: content: application/json: schema: $ref: "#/components/schemas/pool_unlock_1" /pool/unlock_services_restart_choices: post: tags: - pool responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: |- Get a mapping of services identifiers and labels that can be restart on volume unlock. requestBody: content: application/json: schema: $ref: "#/components/schemas/pool_unlock_services_restart_choices_0" "/pool/id/{id}/upgrade": post: tags: - pool responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: type: integer title: id description: |+ Upgrade pool of `id` to latest version with all feature flags. requestBody: content: application/json: schema: $ref: "#/components/schemas/pool_upgrade" /replication: get: tags: - replication responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: limit in: query required: false schema: type: integer - name: offset in: query required: false schema: type: integer - name: count in: query required: false schema: type: boolean - name: sort in: query required: false schema: type: string post: tags: - replication responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: >+ Create a Replication Task Create a Replication Task that will push or pull ZFS snapshots to or from remote host.. * `name` specifies a name for replication task * `direction` specifies whether task will `PUSH` or `PULL` snapshots * `transport` is a method of snapshots transfer: * `SSH` transfers snapshots via SSH connection. This method is supported everywhere but does not achieve great performance `ssh_credentials` is a required field for this transport (Keychain Credential ID of type `SSH_CREDENTIALS`) * `SSH+NETCAT` uses unencrypted connection for data transfer. This can only be used in trusted networks and requires a port (specified by range from `netcat_active_side_port_min` to `netcat_active_side_port_max`) to be open on `netcat_active_side` `ssh_credentials` is also required for control connection * `LOCAL` replicates to or from localhost * `LEGACY` uses legacy replication engine prior to FreeNAS 11.3 * `source_datasets` is a non-empty list of datasets to replicate snapshots from * `target_dataset` is a dataset to put snapshots into. It must exist on target side * `recursive` and `exclude` have the same meaning as for Periodic Snapshot Task * `properties` control whether we should send dataset properties along with snapshots * `periodic_snapshot_tasks` is a list of periodic snapshot task IDs that are sources of snapshots for this replication task. Only push replication tasks can be bound to periodic snapshot tasks. * `naming_schema` is a list of naming schemas for pull replication * `also_include_naming_schema` is a list of naming schemas for push replication * `auto` allows replication to run automatically on schedule or after bound periodic snapshot task * `schedule` is a schedule to run replication task. Only `auto` replication tasks without bound periodic snapshot tasks can have a schedule * `restrict_schedule` restricts when replication task with bound periodic snapshot tasks runs. For example, you can have periodic snapshot tasks that run every 15 minutes, but only run replication task every hour. * Enabling `only_matching_schedule` will only replicate snapshots that match `schedule` or `restrict_schedule` * `allow_from_scratch` will destroy all snapshots on target side and replicate everything from scratch if none of the snapshots on target side matches source snapshots * `hold_pending_snapshots` will prevent source snapshots from being deleted by retention of replication fails for some reason * `retention_policy` specifies how to delete old snapshots on target side: * `SOURCE` deletes snapshots that are absent on source side * `CUSTOM` deletes snapshots that are older than `lifetime_value` and `lifetime_unit` * `NONE` does not delete any snapshots * `compression` compresses SSH stream. Available only for SSH transport * `speed_limit` limits speed of SSH stream. Available only for SSH transport * `dedup`, `large_block`, `embed` and `compressed` are various ZFS stream flag documented in `man zfs send` * `retries` specifies number of retries before considering replication failed requestBody: content: application/json: schema: $ref: "#/components/schemas/replication_create_0" "/replication/id/{id}": delete: tags: - replication responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: type: integer title: id description: |+ Delete a Replication Task with specific `id` get: tags: - replication responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: limit in: query required: false schema: type: integer - name: offset in: query required: false schema: type: integer - name: count in: query required: false schema: type: boolean - name: sort in: query required: false schema: type: string - name: id in: path required: true schema: type: array title: query-filters default: null items: {} nullable: true put: tags: - replication responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: type: integer title: id description: >+ Update a Replication Task with specific `id` See the documentation for `create` method for information on payload contents requestBody: content: application/json: schema: $ref: "#/components/schemas/replication_update_1" /replication/count_eligible_manual_snapshots: post: tags: - replication responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: |+ Count how many existing snapshots of `dataset` match `naming_schema`. requestBody: content: application/json: schema: $ref: "#/components/schemas/replication_count_eligible_manual_snapsho\ ts" /replication/create_dataset: post: tags: - replication responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: >+ Creates dataset on remote side Accepts `dataset` name, `transport` and SSH credentials ID (for non-local transport) requestBody: content: application/json: schema: $ref: "#/components/schemas/replication_create_dataset" /replication/list_datasets: post: tags: - replication responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: |+ List datasets on remote side Accepts `transport` and SSH credentials ID (for non-local transport) requestBody: content: application/json: schema: $ref: "#/components/schemas/replication_list_datasets" /replication/list_naming_schemas: get: tags: - replication responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: List all naming schemas used in periodic snapshot and replication tasks. "/replication/id/{id}/run": post: tags: - replication responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: type: integer title: id description: Run Replication Task of `id`. requestBody: content: application/json: schema: $ref: "#/components/schemas/replication_run" /replication/target_unmatched_snapshots: post: tags: - replication responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: |+ Check if target has any snapshots that do not exist on source. requestBody: content: application/json: schema: $ref: "#/components/schemas/replication_target_unmatched_snapshots" /reporting: get: tags: - reporting responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] put: tags: - reporting responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: >+ Configure Reporting Database settings. If `cpu_in_percentage` is `true`, collectd reports CPU usage in percentage instead of "jiffies". `graphite` specifies a destination hostname or IP for collectd data sent by the Graphite plugin.. `graph_age` specifies the maximum age of stored graphs in months. `graph_points` is the number of points for each hourly, daily, weekly, etc. graph. Changing these requires destroying the current reporting database, so when these fields are changed, an additional `confirm_rrd_destroy: true` flag must be present. requestBody: content: application/json: schema: $ref: "#/components/schemas/reporting_update_0" /reporting/get_data: post: tags: - reporting responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: >+ Get reporting data for given graphs. List of possible graphs can be retrieved using `reporting.graphs` call. For the time period of the graph either `unit` and `page` OR `start` and `end` should be used, not both. `aggregate` will return aggregate available data for each graph (e.g. min, max, mean). requestBody: content: application/json: schema: $ref: "#/components/schemas/reporting_get_data" /reporting/graphs: get: tags: - reporting responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: limit in: query required: false schema: type: integer - name: offset in: query required: false schema: type: integer - name: count in: query required: false schema: type: boolean - name: sort in: query required: false schema: type: string /rsyncmod: get: tags: - rsyncmod responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: limit in: query required: false schema: type: integer - name: offset in: query required: false schema: type: integer - name: count in: query required: false schema: type: boolean - name: sort in: query required: false schema: type: string post: tags: - rsyncmod responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: >- Create a Rsyncmod module. `path` represents the path to a dataset. Path length is limited to 1023 characters maximum as per the limit enforced by FreeBSD. It is possible that we reach this max length recursively while transferring data. In that case, the user must ensure the maximum path will not be too long or modify the recursed path to shorter than the limit. `maxconn` is an integer value representing the maximum number of simultaneous connections. Zero represents unlimited. `hostsallow` is a list of patterns to match hostname/ip address of a connecting client. If list is empty, all hosts are allowed. `hostsdeny` is a list of patterns to match hostname/ip address of a connecting client. If the pattern is matched, access is denied to the client. If no client should be denied, this should be left empty. `auxiliary` attribute can be used to pass on any additional parameters from rsyncd.conf(5). requestBody: content: application/json: schema: $ref: "#/components/schemas/rsyncmod_create_0" "/rsyncmod/id/{id}": delete: tags: - rsyncmod responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: type: integer title: id description: Delete Rsyncmod module of `id`. get: tags: - rsyncmod responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: limit in: query required: false schema: type: integer - name: offset in: query required: false schema: type: integer - name: count in: query required: false schema: type: boolean - name: sort in: query required: false schema: type: string - name: id in: path required: true schema: type: array title: query-filters default: null items: {} nullable: true put: tags: - rsyncmod responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: type: integer title: id description: Update Rsyncmod module of `id`. requestBody: content: application/json: schema: $ref: "#/components/schemas/rsyncmod_update_1" /rsynctask: get: tags: - rsynctask responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: limit in: query required: false schema: type: integer - name: offset in: query required: false schema: type: integer - name: count in: query required: false schema: type: boolean - name: sort in: query required: false schema: type: string post: tags: - rsynctask responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: >+ Create a Rsync Task. See the comment in Rsyncmod about `path` length limits. `remotehost` is ip address or hostname of the remote system. If username differs on the remote host, "username@remote_host" format should be used. `mode` represents different operating mechanisms for Rsync i.e Rsync Module mode / Rsync SSH mode. `remotemodule` is the name of remote module, this attribute should be specified when `mode` is set to MODULE. `remotepath` specifies the path on the remote system. `validate_rpath` is a boolean which when sets validates the existence of the remote path. `direction` specifies if data should be PULLED or PUSHED from the remote system. `compress` when set reduces the size of the data which is to be transmitted. `archive` when set makes rsync run recursively, preserving symlinks, permissions, modification times, group, and special files. `delete` when set deletes files in the destination directory which do not exist in the source directory. `preserveperm` when set preserves original file permissions. requestBody: content: application/json: schema: $ref: "#/components/schemas/rsynctask_create_0" "/rsynctask/id/{id}": delete: tags: - rsynctask responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: type: integer title: id description: Delete Rsync Task of `id`. get: tags: - rsynctask responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: limit in: query required: false schema: type: integer - name: offset in: query required: false schema: type: integer - name: count in: query required: false schema: type: boolean - name: sort in: query required: false schema: type: string - name: id in: path required: true schema: type: array title: query-filters default: null items: {} nullable: true put: tags: - rsynctask responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: type: integer title: id description: Update Rsync Task of `id`. requestBody: content: application/json: schema: $ref: "#/components/schemas/rsynctask_update_1" "/rsynctask/id/{id}/run": post: tags: - rsynctask responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: type: integer title: id description: |- Job to run rsync task of `id`. Output is saved to job log excerpt as well as syslog. requestBody: content: application/json: schema: $ref: "#/components/schemas/rsynctask_run" /rsyncd: get: tags: - rsyncd responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] put: tags: - rsyncd responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: >- Update Rsyncd Service Configuration. `auxiliary` attribute can be used to pass on any additional parameters from rsyncd.conf(5). requestBody: content: application/json: schema: $ref: "#/components/schemas/rsyncd_update_0" /s3: get: tags: - s3 responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] put: tags: - s3 responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: >- Update S3 Service Configuration. `access_key` must only contain alphanumeric characters and should be between 5 and 20 characters. `secret_key` must only contain alphanumeric characters and should be between 8 and 40 characters. `browser` when set, enables the web user interface for the S3 Service. `certificate` is a valid certificate id which exists in the system. This is used to enable secure S3 connections. requestBody: content: application/json: schema: $ref: "#/components/schemas/s3_update_0" /service: get: tags: - service responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: limit in: query required: false schema: type: integer - name: offset in: query required: false schema: type: integer - name: count in: query required: false schema: type: boolean - name: sort in: query required: false schema: type: string description: Query all system services with `query-filters` and `query-options`. "/service/id/{id}": get: tags: - service responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: limit in: query required: false schema: type: integer - name: offset in: query required: false schema: type: integer - name: count in: query required: false schema: type: boolean - name: sort in: query required: false schema: type: string - name: id in: path required: true schema: type: array title: query-filters default: null items: {} nullable: true description: Query all system services with `query-filters` and `query-options`. put: tags: - service responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: title: id_or_name type: string description: |- Update service entry of `id_or_name`. Currently it only accepts `enable` option which means whether the service should start on boot. requestBody: content: application/json: schema: $ref: "#/components/schemas/service_update_1" /service/reload: post: tags: - service responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: >- Reload the service specified by `service`. The helper will use method self._reload_[service]() to reload the service. If the method does not exist, the helper will try self.restart of the service instead. requestBody: content: application/json: schema: $ref: "#/components/schemas/service_reload" /service/restart: post: tags: - service responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: >- Restart the service specified by `service`. The helper will use method self._restart_[service]() to restart the service. If the method does not exist, it would fallback using service(8). requestBody: content: application/json: schema: $ref: "#/components/schemas/service_restart" /service/start: post: tags: - service responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: |- Start the service specified by `service`. The helper will use method self._start_[service]() to start the service. If the method does not exist, it would fallback using service(8). requestBody: content: application/json: schema: $ref: "#/components/schemas/service_start" /service/started: get: tags: - service responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: Test if service specified by `service` has been started. /service/stop: post: tags: - service responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: |- Stop the service specified by `service`. The helper will use method self._stop_[service]() to stop the service. If the method does not exist, it would fallback using service(8). requestBody: content: application/json: schema: $ref: "#/components/schemas/service_stop" /service/terminate_process: post: tags: - service responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: >- Terminate process by `pid`. First send `TERM` signal, then, if was not terminated in `timeout` seconds, send `KILL` signal. Returns `true` is process has been successfully terminated with `TERM` and `false` if we had to use `KILL`. requestBody: content: application/json: schema: $ref: "#/components/schemas/service_terminate_process" /smart/test: get: tags: - smart.test responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: limit in: query required: false schema: type: integer - name: offset in: query required: false schema: type: integer - name: count in: query required: false schema: type: boolean - name: sort in: query required: false schema: type: string post: tags: - smart.test responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: >+ Create a SMART Test Task. `disks` is a list of valid disks which should be monitored in this task. `type` is specified to represent the type of SMART test to be executed. `all_disks` when enabled sets the task to cover all disks in which case `disks` is not required. requestBody: content: application/json: schema: $ref: "#/components/schemas/smart_test_create_0" "/smart/test/id/{id}": delete: tags: - smart.test responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: type: integer title: id description: Delete SMART Test Task of `id`. get: tags: - smart.test responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: limit in: query required: false schema: type: integer - name: offset in: query required: false schema: type: integer - name: count in: query required: false schema: type: boolean - name: sort in: query required: false schema: type: string - name: id in: path required: true schema: type: array title: query-filters default: null items: {} nullable: true put: tags: - smart.test responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: type: integer title: id description: Update SMART Test Task of `id`. requestBody: content: application/json: schema: $ref: "#/components/schemas/smart_test_update_1" /smart/test/results: get: tags: - smart.test responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: limit in: query required: false schema: type: integer - name: offset in: query required: false schema: type: integer - name: count in: query required: false schema: type: boolean - name: sort in: query required: false schema: type: string description: |+ Get disk(s) S.M.A.R.T. test(s) results. /smart: get: tags: - smart responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] put: tags: - smart responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: >- Update SMART Service Configuration. `interval` is an integer value in minutes which defines how often smartd activates to check if any tests are configured to run. `critical`, `informational` and `difference` are integer values on which alerts for SMART are configured if the disks temperature crosses the assigned threshold for each respective attribute. They default to 0 which indicates they are disabled. requestBody: content: application/json: schema: $ref: "#/components/schemas/smart_update_0" /smb: get: tags: - smb responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] put: tags: - smb responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: >- Update SMB Service Configuration. `netbiosname` defaults to the original hostname of the system. `workgroup` and `netbiosname` should have different values. `enable_smb1` allows legacy SMB clients to connect to the server when enabled. `localmaster` when set, determines if the system participates in a browser election. `domain_logons` is used to provide netlogin service for older Windows clients if enabled. `guest` attribute is specified to select the account to be used for guest access. It defaults to "nobody". `nullpw` when enabled allows the users to authorize access without a password. `zeroconf` should be enabled if macOS Clients will be connecting to the SMB share. `hostlookup` when enabled, allows using hostnames rather then IP addresses in "hostsallow"/"hostsdeny" fields of SMB Shares. requestBody: content: application/json: schema: $ref: "#/components/schemas/smb_update_0" /smb/bindip_choices: get: tags: - smb responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: |- List of valid choices for IP addresses to which to bind the SMB service. Addresses assigned by DHCP are excluded from the results. /smb/domain_choices: get: tags: - smb responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: |- List of domains visible to winbindd. Returns empty list if winbindd is stopped. /smb/unixcharset_choices: get: tags: - smb responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] /smb/sharesec: get: tags: - smb.sharesec responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: limit in: query required: false schema: type: integer - name: offset in: query required: false schema: type: integer - name: count in: query required: false schema: type: boolean - name: sort in: query required: false schema: type: string description: Use query-filters to search the SMB share ACLs present on server. post: tags: - smb.sharesec responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: >- Update the ACL on a given SMB share. Will write changes to both /var/db/system/samba4/share_info.tdb and the configuration file. Since an SMB share will _always_ have an ACL present, there is little distinction between the `create` and `update` methods apart from arguments. `share_name` - name of SMB share. `share_acl` a list of ACL entries (dictionaries) with the following keys: `ae_who_sid` who the ACL entry applies to expressed as a Windows SID `ae_who_name` who the ACL entry applies to expressed as a name. `ae_who_name` is a dictionary containing the following keys: `domain` that the user is a member of, `name` username in the domain. The domain for local users is the netbios name of the FreeNAS server. `ae_perm` string representation of the permissions granted to the user or group. `FULL` grants read, write, execute, delete, write acl, and change owner. `CHANGE` grants read, write, execute, and delete. `READ` grants read and execute. `ae_type` can be ALLOWED or DENIED. requestBody: content: application/json: schema: $ref: "#/components/schemas/smb_sharesec_create_0" "/smb/sharesec/id/{id}": delete: tags: - smb.sharesec responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: title: id_or_name type: string description: >- Replace share ACL for the specified SMB share with the samba default ACL of S-1-1-0/FULL (Everyone - Full Control). In this case, access will be fully determined by the underlying filesystem ACLs and smb4.conf parameters governing access control and permissions. Share can be deleted by name or numerical by numerical index. get: tags: - smb.sharesec responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: limit in: query required: false schema: type: integer - name: offset in: query required: false schema: type: integer - name: count in: query required: false schema: type: boolean - name: sort in: query required: false schema: type: string - name: id in: path required: true schema: type: array title: query-filters default: null items: {} nullable: true description: Use query-filters to search the SMB share ACLs present on server. put: tags: - smb.sharesec responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: type: integer title: id description: >- Update the ACL on the share specified by the numerical index `id`. Will write changes to both /var/db/system/samba4/share_info.tdb and the configuration file. requestBody: content: application/json: schema: $ref: "#/components/schemas/smb_sharesec_update_1" /smb/sharesec/getacl: post: tags: - smb.sharesec responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: >- View the ACL information for `share_name`. The share ACL is distinct from filesystem ACLs which can be viewed by calling `filesystem.getacl`. `ae_who_name` will appear as `None` if the SMB service is stopped or if winbind is unable to resolve the SID to a name. If the `option` `resolve_sids` is set to `False` then the returned ACL will not contain names. requestBody: content: application/json: schema: $ref: "#/components/schemas/smb_sharesec_getacl" /smb/sharesec/synchronize_acls: get: tags: - smb.sharesec responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: >- Synchronize the share ACL stored in the config database with Samba's running configuration as reflected in the share_info.tdb file. The only situation in which the configuration stored in the database will overwrite samba's running configuration is if share_info.tdb is empty. Samba fakes a single S-1-1-0:ALLOW/0x0/FULL entry in the absence of an entry for a share in share_info.tdb. /sharing/smb: get: tags: - sharing.smb responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: limit in: query required: false schema: type: integer - name: offset in: query required: false schema: type: integer - name: count in: query required: false schema: type: boolean - name: sort in: query required: false schema: type: string post: tags: - sharing.smb responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: >- Create a SMB Share. `timemachine` when set, enables Time Machine backups for this share. `ro` when enabled, prohibits write access to the share. `guestok` when enabled, allows access to this share without a password. `hostsallow` is a list of hostnames / IP addresses which have access to this share. `hostsdeny` is a list of hostnames / IP addresses which are not allowed access to this share. If a handful of hostnames are to be only allowed access, `hostsdeny` can be passed "ALL" which means that it will deny access to ALL hostnames except for the ones which have been listed in `hostsallow`. `vfsobjects` is a list of keywords which aim to provide virtual file system modules to enhance functionality. `auxsmbconf` is a string of additional smb4.conf parameters not covered by the system's API. requestBody: content: application/json: schema: $ref: "#/components/schemas/sharing_smb_create_0" "/sharing/smb/id/{id}": delete: tags: - sharing.smb responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: type: integer title: id description: Delete SMB Share of `id`. get: tags: - sharing.smb responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: limit in: query required: false schema: type: integer - name: offset in: query required: false schema: type: integer - name: count in: query required: false schema: type: boolean - name: sort in: query required: false schema: type: string - name: id in: path required: true schema: type: array title: query-filters default: null items: {} nullable: true put: tags: - sharing.smb responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: type: integer title: id description: Update SMB Share of `id`. requestBody: content: application/json: schema: $ref: "#/components/schemas/sharing_smb_update_1" /sharing/smb/vfsobjects_choices: get: tags: - sharing.smb responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: >- Returns a list of valid virtual file system module choices which can be used with SMB Shares to enable virtual file system modules. /pool/snapshottask: get: tags: - pool.snapshottask responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: limit in: query required: false schema: type: integer - name: offset in: query required: false schema: type: integer - name: count in: query required: false schema: type: boolean - name: sort in: query required: false schema: type: string post: tags: - pool.snapshottask responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: >+ Create a Periodic Snapshot Task Create a Periodic Snapshot Task that will take snapshots of specified `dataset` at specified `schedule`. Recursive snapshots can be created if `recursive` flag is enabled. You can `exclude` specific child datasets from snapshot. Snapshots will be automatically destroyed after a certain amount of time, specified by `lifetime_value` and `lifetime_unit`. Snapshots will be named according to `naming_schema` which is a `strftime`-like template for snapshot name and must contain `%Y`, `%m`, `%d`, `%H` and `%M`. requestBody: content: application/json: schema: $ref: "#/components/schemas/pool_snapshottask_create_0" "/pool/snapshottask/id/{id}": delete: tags: - pool.snapshottask responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: type: integer title: id description: |+ Delete a Periodic Snapshot Task with specific `id` get: tags: - pool.snapshottask responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: limit in: query required: false schema: type: integer - name: offset in: query required: false schema: type: integer - name: count in: query required: false schema: type: boolean - name: sort in: query required: false schema: type: string - name: id in: path required: true schema: type: array title: query-filters default: null items: {} nullable: true put: tags: - pool.snapshottask responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: type: integer title: id description: >+ Update a Periodic Snapshot Task with specific `id` See the documentation for `create` method for information on payload contents requestBody: content: application/json: schema: $ref: "#/components/schemas/pool_snapshottask_update_1" "/pool/snapshottask/id/{id}/run": post: tags: - pool.snapshottask responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: type: integer title: id description: Execute a Periodic Snapshot Task of `id`. requestBody: content: application/json: schema: $ref: "#/components/schemas/pool_snapshottask_run" /snmp: get: tags: - snmp responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] put: tags: - snmp responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: >- Update SNMP Service Configuration. `v3` when set enables SNMP version 3. `v3_username`, `v3_authtype`, `v3_password`, `v3_privproto` and `v3_privpassphrase` are only used when `v3` is enabled. requestBody: content: application/json: schema: $ref: "#/components/schemas/snmp_update_0" /ssh: get: tags: - ssh responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] put: tags: - ssh responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: |+ Update settings of SSH daemon service. If `bindiface` is empty it will listen for all available addresses. requestBody: content: application/json: schema: $ref: "#/components/schemas/ssh_update_0" /ssh/bindiface_choices: get: tags: - ssh responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: Available choices for the bindiface attribute of SSH service. /stats/get_data: post: tags: - stats responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: Get data points from rrd files. requestBody: content: application/json: schema: $ref: "#/components/schemas/stats_get_data" /stats/get_dataset_info: post: tags: - stats responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: Returns info about a given dataset from some source. requestBody: content: application/json: schema: $ref: "#/components/schemas/stats_get_dataset_info" /stats/get_sources: get: tags: - stats responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: Returns an object with all available sources tried with metric datasets. /support: get: tags: - support responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] put: tags: - support responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: Update Proactive Support settings. requestBody: content: application/json: schema: $ref: "#/components/schemas/support_update_0" /support/fetch_categories: post: tags: - support responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: |- Fetch all the categories available for `username` using `password`. Returns a dict with the category name as a key and id as value. requestBody: content: application/json: schema: $ref: "#/components/schemas/support_fetch_categories" /support/fields: get: tags: - support responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: Returns list of pairs of field names and field titles for Proactive Support. /support/is_available: get: tags: - support responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: Returns whether Proactive Support is available for this product type and current license. /support/is_available_and_enabled: get: tags: - support responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: Returns whether Proactive Support is available and enabled. /support/new_ticket: post: tags: - support responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: >- Creates a new ticket for support. This is done using the support proxy API. For FreeNAS it will be created on Redmine and for TrueNAS on SupportSuite. For FreeNAS `criticality`, `environment`, `phone`, `name` and `email` attributes are not required. For TrueNAS `username`, `password` and `type` attributes are not required. requestBody: content: application/json: schema: $ref: "#/components/schemas/support_new_ticket_0" /systemdataset: get: tags: - systemdataset responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] put: tags: - systemdataset responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: >- Update System Dataset Service Configuration. `pool` is the name of a valid pool configured in the system which will be used to host the system dataset. `pool_exclude` can be specified to make sure that we don't place the system dataset on that pool if `pool` is not provided. requestBody: content: application/json: schema: $ref: "#/components/schemas/systemdataset_update_0" /system/advanced: get: tags: - system.advanced responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] put: tags: - system.advanced responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: >- Update System Advanced Service Configuration. `consolemenu` should be disabled if the menu at console is not desired. It will default to standard login in the console if disabled. `autotune` when enabled executes autotune script which attempts to optimize the system based on the installed hardware. `legacy_ui` is disabled by default. Enabling it allows end users to use the legacy UI. requestBody: content: application/json: schema: $ref: "#/components/schemas/system_advanced_update_0" /system/advanced/serial_port_choices: get: tags: - system.advanced responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: Get available choices for `serialport`. /system/general: get: tags: - system.general responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] put: tags: - system.general responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: >- Update System General Service Configuration. `ui_certificate` is used to enable HTTPS access to the system. If `ui_certificate` is not configured on boot, it is automatically created by the system. `ui_httpsredirect` when set, makes sure that all HTTP requests are converted to HTTPS requests to better enhance security. `ui_address` and `ui_v6address` are a list of valid ipv4/ipv6 addresses respectively which the system will listen on. When `syslogserver` is defined, `sysloglevel` makes sure that logs matching the specified level are sent. requestBody: content: application/json: schema: $ref: "#/components/schemas/system_general_update_0" /system/general/country_choices: get: tags: - system.general responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: Returns country choices. /system/general/kbdmap_choices: get: tags: - system.general responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: Returns kbdmap choices. /system/general/language_choices: get: tags: - system.general responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: Returns language choices. /system/general/local_url: get: tags: - system.general responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: Returns configured local url in the format of protocol://host:port /system/general/timezone_choices: get: tags: - system.general responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: Returns time zone choices. /system/general/ui_address_choices: get: tags: - system.general responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: Returns UI ipv4 address choices. /system/general/ui_certificate_choices: get: tags: - system.general responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: Return choices of certificates which can be used for `ui_certificate`. /system/general/ui_restart: get: tags: - system.general responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: Restart HTTP server to use latest UI settings. /system/general/ui_v6address_choices: get: tags: - system.general responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: Returns UI ipv6 address choices. /system/boot_id: get: tags: - system responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: |- Returns an unique boot identifier. It is supposed to be unique every system boot. /system/feature_enabled: post: tags: - system responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: Returns whether the `feature` is enabled or not requestBody: content: application/json: schema: $ref: "#/components/schemas/system_feature_enabled_0" /system/info: get: tags: - system responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: Returns basic system information. /system/is_freenas: get: tags: - system responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: Returns `true` if running system is a FreeNAS or `false` if something else. /system/legacy_ui_enabled: get: tags: - system responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: Returns a boolean value indicating if the legacy UI can be used by end users. /system/license_update: post: tags: - system responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: Update license file. requestBody: content: application/json: schema: $ref: "#/components/schemas/system_license_update_0" /system/product_name: get: tags: - system responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: Returns name of the product we are using (FreeNAS or something else). /system/ready: get: tags: - system responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: Returns whether the system completed boot and is ready to use /system/reboot: post: tags: - system responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: |- Reboots the operating system. Emits an "added" event of name "system" and id "reboot". requestBody: content: application/json: schema: $ref: "#/components/schemas/system_reboot_0" /system/shutdown: post: tags: - system responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: |- Shuts down the operating system. Emits an "added" event of name "system" and id "shutdown". requestBody: content: application/json: schema: $ref: "#/components/schemas/system_shutdown_0" /system/state: get: tags: - system responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: |- Returns system state: "BOOTING" - System is booting "READY" - System completed boot and is ready to use "SHUTTING_DOWN" - System is shutting down /system/version: get: tags: - system responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: Returns software version of the system. /tftp: get: tags: - tftp responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] put: tags: - tftp responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: >- Update TFTP Service Configuration. `newfiles` when set enables network devices to send files to the system. `username` sets the user account which will be used to access `directory`. It should be ensured `username` has access to `directory`. requestBody: content: application/json: schema: $ref: "#/components/schemas/tftp_update_0" /tunable: get: tags: - tunable responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: limit in: query required: false schema: type: integer - name: offset in: query required: false schema: type: integer - name: count in: query required: false schema: type: boolean - name: sort in: query required: false schema: type: string post: tags: - tunable responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: |- Create a Tunable. `var` represents name of the sysctl/loader/rc variable. `type` should be one of the following: 1) LOADER - Configure `var` for loader(8) 2) RC - Configure `var` for rc(8) 3) SYSCTL - Configure `var` for sysctl(8) requestBody: content: application/json: schema: $ref: "#/components/schemas/tunable_create_0" "/tunable/id/{id}": delete: tags: - tunable responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: type: integer title: id description: Delete Tunable of `id`. get: tags: - tunable responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: limit in: query required: false schema: type: integer - name: offset in: query required: false schema: type: integer - name: count in: query required: false schema: type: boolean - name: sort in: query required: false schema: type: string - name: id in: path required: true schema: type: array title: query-filters default: null items: {} nullable: true put: tags: - tunable responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: type: integer title: id description: Update Tunable of `id`. requestBody: content: application/json: schema: $ref: "#/components/schemas/tunable_update_1" /update/check_available: post: tags: - update responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: |+ Checks if there is an update available from update server. status: - REBOOT_REQUIRED: an update has already been applied - AVAILABLE: an update is available - UNAVAILABLE: no update available requestBody: content: application/json: schema: $ref: "#/components/schemas/update_check_available_0" /update/download: get: tags: - update responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: Download updates using selected train. /update/get_pending: post: tags: - update responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: >- Gets a list of packages already downloaded and ready to be applied. Each entry of the lists consists of type of operation and name of it, e.g. { "operation": "upgrade", "name": "baseos-11.0 -> baseos-11.1" } requestBody: content: application/json: schema: $ref: "#/components/schemas/update_get_pending_0" /update/get_trains: get: tags: - update responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: >- Returns available trains dict and the currently configured train as well as the train of currently booted environment. /update/manual: post: tags: - update responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: Apply manual update of file `path`. requestBody: content: application/json: schema: $ref: "#/components/schemas/update_manual_0" /update/set_train: post: tags: - update responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: Set an update train to be used by default in updates. requestBody: content: application/json: schema: $ref: "#/components/schemas/update_set_train_0" /update/update: post: tags: - update responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: Downloads (if not already in cache) and apply an update. requestBody: content: application/json: schema: $ref: "#/components/schemas/update_update_0" /ups: get: tags: - ups responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] put: tags: - ups responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: >- Update UPS Service Configuration. `emailnotify` when enabled, sends out notifications of different UPS events via email. `powerdown` when enabled, sets UPS to power off after shutting down the system. `nocommwarntime` is a value in seconds which makes UPS Service wait the specified seconds before alerting that the Service cannot reach configured UPS. `shutdowntimer` is a value in seconds which tells the Service to wait specified seconds for the UPS before initiating a shutdown. This only applies when `shutdown` is set to "BATT". `shutdowncmd` is the command which is executed to initiate a shutdown. It defaults to "poweroff". `toemail` is a list of valid email id's on which notification emails are sent. requestBody: content: application/json: schema: $ref: "#/components/schemas/ups_update_0" /ups/driver_choices: get: tags: - ups responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: Returns choices of UPS drivers supported by the system. /ups/port_choices: get: tags: - ups responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] /vm/device: get: tags: - vm.device responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: limit in: query required: false schema: type: integer - name: offset in: query required: false schema: type: integer - name: count in: query required: false schema: type: boolean - name: sort in: query required: false schema: type: string post: tags: - vm.device responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: >- Create a new device for the VM of id `vm`. If `dtype` is the `RAW` type and a new raw file is to be created, `attributes.exists` will be passed as false. This means the API handles creating the raw file and raises the appropriate exception if file creation fails. If `dtype` is of `DISK` type and a new Zvol is to be created, `attributes.create_zvol` will be passed as true with valid `attributes.zvol_name` and `attributes.zvol_volsize` values. requestBody: content: application/json: schema: $ref: "#/components/schemas/vm_device_create_0" "/vm/device/id/{id}": delete: tags: - vm.device responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: type: integer title: id description: Delete a VM device of `id`. requestBody: content: application/json: schema: $ref: "#/components/schemas/vm_device_delete_1" get: tags: - vm.device responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: limit in: query required: false schema: type: integer - name: offset in: query required: false schema: type: integer - name: count in: query required: false schema: type: boolean - name: sort in: query required: false schema: type: string - name: id in: path required: true schema: type: array title: query-filters default: null items: {} nullable: true put: tags: - vm.device responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: type: integer title: id description: >- Update a VM device of `id`. Pass `attributes.size` to resize a `dtype` `RAW` device. The raw file will be resized. requestBody: content: application/json: schema: $ref: "#/components/schemas/vm_device_update_1" /vm/device/nic_attach_choices: get: tags: - vm.device responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: Available choices for NIC Attach attribute. /vm/device/vnc_bind_choices: get: tags: - vm.device responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: Available choices for VNC Bind attribute. /vm: get: tags: - vm responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: limit in: query required: false schema: type: integer - name: offset in: query required: false schema: type: integer - name: count in: query required: false schema: type: boolean - name: sort in: query required: false schema: type: string post: tags: - vm responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: >- Create a Virtual Machine (VM). `grubconfig` may either be a path for the grub.cfg file or the actual content of the file to be used with GRUB bootloader. `devices` is a list of virtualized hardware to add to the newly created Virtual Machine. Failure to attach a device destroys the VM and any resources allocated by the VM devices. requestBody: content: application/json: schema: $ref: "#/components/schemas/vm_create_0" "/vm/id/{id}": delete: tags: - vm responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: type: integer title: id description: Delete a VM. get: tags: - vm responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: limit in: query required: false schema: type: integer - name: offset in: query required: false schema: type: integer - name: count in: query required: false schema: type: boolean - name: sort in: query required: false schema: type: string - name: id in: path required: true schema: type: array title: query-filters default: null items: {} nullable: true put: tags: - vm responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: type: integer title: id description: >- Update all information of a specific VM. `devices` is a list of virtualized hardware to attach to the virtual machine. If `devices` is not present, no change is made to devices. If either the device list order or data stored by the device changes when the attribute is passed, these actions are taken: 1) If there is no device in the `devices` list which was previously attached to the VM, that device is removed from the virtual machine. 2) Devices are updated in the `devices` list when they contain a valid `id` attribute that corresponds to an existing device. 3) Devices that do not have an `id` attribute are created and attached to `id` VM. requestBody: content: application/json: schema: $ref: "#/components/schemas/vm_update_1" "/vm/id/{id}/clone": post: tags: - vm responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: type: integer title: id description: |- Clone the VM `id`. `name` is an optional parameter for the cloned VM. If not provided it will append the next number available to the VM name. requestBody: content: application/json: schema: $ref: "#/components/schemas/vm_clone_1" /vm/flags: get: tags: - vm responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: Returns a dictionary with CPU flags for bhyve. /vm/get_attached_iface: post: tags: - vm responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: >- Get the attached physical interfaces from a given guest. Returns: list: will return a list with all attached phisycal interfaces or otherwise False. requestBody: content: application/json: schema: $ref: "#/components/schemas/vm_get_attached_iface_0" /vm/get_available_memory: post: tags: - vm responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: >- Get the current maximum amount of available memory to be allocated for VMs. If `overcommit` is true only the current used memory of running VMs will be accounted for. If false all memory (including unused) of runnings VMs will be accounted for. This will include memory shrinking ZFS ARC to the minimum. Memory is of course a very "volatile" resource, values may change abruptly between a second but I deem it good enough to give the user a clue about how much memory is available at the current moment and if a VM should be allowed to be launched. requestBody: content: application/json: schema: $ref: "#/components/schemas/vm_get_available_memory_0" /vm/get_console: post: tags: - vm responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: |- Get the console device from a given guest. Returns: str: with the device path or False. requestBody: content: application/json: schema: $ref: "#/components/schemas/vm_get_console_0" /vm/get_vmemory_in_use: get: tags: - vm responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: |- The total amount of virtual memory in MB used by guests Returns a dict with the following information: RNP - Running but not provisioned PRD - Provisioned but not running RPRD - Running and provisioned /vm/get_vnc: post: tags: - vm responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: |- Get the vnc devices from a given guest. Returns: list(dict): with all attributes of the vnc device or an empty list. requestBody: content: application/json: schema: $ref: "#/components/schemas/vm_get_vnc_0" /vm/get_vnc_ipv4: get: tags: - vm responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: |- Get all available IPv4 address in the system. Returns: list: will return a list of available IPv4 address. /vm/identify_hypervisor: get: tags: - vm responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: |- Identify Hypervisors that might work nested with bhyve. Returns: bool: True if compatible otherwise False. /vm/random_mac: get: tags: - vm responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: |- Create a random mac address. Returns: str: with six groups of two hexadecimal digits "/vm/id/{id}/restart": post: tags: - vm responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: type: integer title: id description: Restart a VM. requestBody: content: application/json: schema: $ref: "#/components/schemas/vm_restart" "/vm/id/{id}/start": post: tags: - vm responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: type: integer title: id description: >- Start a VM. options.overcommit defaults to false, meaning VMs are not allowed to start if there is not enough available memory to hold all configured VMs. If true, VM starts even if there is not enough memory for all configured VMs. Error codes: ENOMEM(12): not enough free memory to run the VM without overcommit requestBody: content: application/json: schema: $ref: "#/components/schemas/vm_start_1" "/vm/id/{id}/status": post: tags: - vm responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: type: integer title: id description: |- Get the status of a VM. Returns a dict: - state, RUNNING or STOPPED - pid, process id if RUNNING requestBody: content: application/json: schema: $ref: "#/components/schemas/vm_status" "/vm/id/{id}/stop": post: tags: - vm responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: type: integer title: id description: Stop a VM. requestBody: content: application/json: schema: $ref: "#/components/schemas/vm_stop_1" /vm/vnc_port_wizard: get: tags: - vm responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: >- It returns the next available VNC PORT and WEB VNC PORT. Returns: dict: with two keys vnc_port and vnc_web or None in case we can't query the db. /vmware: get: tags: - vmware responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: limit in: query required: false schema: type: integer - name: offset in: query required: false schema: type: integer - name: count in: query required: false schema: type: boolean - name: sort in: query required: false schema: type: string post: tags: - vmware responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: >- Create VMWare snapshot. `hostname` is a valid IP address / hostname of a VMWare host. When clustering, this is the vCenter server for the cluster. `username` and `password` are the credentials used to authorize access to the VMWare host. `datastore` is a valid datastore name which exists on the VMWare host. requestBody: content: application/json: schema: $ref: "#/components/schemas/vmware_create_0" "/vmware/id/{id}": delete: tags: - vmware responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: type: integer title: id description: Delete VMWare snapshot of `id`. get: tags: - vmware responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: limit in: query required: false schema: type: integer - name: offset in: query required: false schema: type: integer - name: count in: query required: false schema: type: boolean - name: sort in: query required: false schema: type: string - name: id in: path required: true schema: type: array title: query-filters default: null items: {} nullable: true put: tags: - vmware responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: type: integer title: id description: Update VMWare snapshot of `id`. requestBody: content: application/json: schema: $ref: "#/components/schemas/vmware_update_1" /vmware/dataset_has_vms: post: tags: - vmware responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: Returns "true" if `dataset` is configured with a VMWare snapshot requestBody: content: application/json: schema: $ref: "#/components/schemas/vmware_dataset_has_vms" /vmware/get_datastores: post: tags: - vmware responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: Get datastores from VMWare. requestBody: content: application/json: schema: $ref: "#/components/schemas/vmware_get_datastores_0" /vmware/get_virtual_machines: post: tags: - vmware responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: Returns Virtual Machines on the VMWare host identified by `pk`. requestBody: content: application/json: schema: $ref: "#/components/schemas/vmware_get_virtual_machines_0" /vmware/match_datastores_with_datasets: post: tags: - vmware responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: >+ Requests datastores from vCenter server and tries to match them with local filesystems. Returns a list of datastores, a list of local filesystems and guessed relationship between them. requestBody: content: application/json: schema: $ref: "#/components/schemas/vmware_match_datastores_with_datasets_0" /webdav: get: tags: - webdav responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] put: tags: - webdav responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: >- Update Webdav Service Configuration. `protocol` specifies which protocol should be used for connecting to Webdav Serivce. Value of "HTTPHTTPS" allows both HTTP and HTTPS connections to the share. `certssl` is a valid id of a certificate configured in the system. This is required if HTTPS connection is desired with Webdave Service. There are 3 types of Authentication supported with Webdav: 1) NONE - No authentication is required 2) BASIC - Password is sent over the network as plaintext 3) DIGEST - Hash of the password is sent over the network `htauth` should be one of the valid types described above. requestBody: content: application/json: schema: $ref: "#/components/schemas/webdav_update_0" /sharing/webdav: get: tags: - sharing.webdav responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: limit in: query required: false schema: type: integer - name: offset in: query required: false schema: type: integer - name: count in: query required: false schema: type: boolean - name: sort in: query required: false schema: type: string post: tags: - sharing.webdav responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: >- Create a Webdav Share. `ro` when enabled prohibits users from writing to this share. `perm` when enabled automatically recursively changes the ownership of this share to webdav ( user and group both ). requestBody: content: application/json: schema: $ref: "#/components/schemas/sharing_webdav_create_0" "/sharing/webdav/id/{id}": delete: tags: - sharing.webdav responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: type: integer title: id description: Update Webdav Share of `id`. get: tags: - sharing.webdav responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: limit in: query required: false schema: type: integer - name: offset in: query required: false schema: type: integer - name: count in: query required: false schema: type: boolean - name: sort in: query required: false schema: type: string - name: id in: path required: true schema: type: array title: query-filters default: null items: {} nullable: true put: tags: - sharing.webdav responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: type: integer title: id description: Update Webdav Share of `id`. requestBody: content: application/json: schema: $ref: "#/components/schemas/sharing_webdav_update_1" /webui/image: get: tags: - webui.image responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: limit in: query required: false schema: type: integer - name: offset in: query required: false schema: type: integer - name: count in: query required: false schema: type: boolean - name: sort in: query required: false schema: type: string "/webui/image/id/{id}": delete: tags: - webui.image responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: type: integer title: id description: Remove the database entry, and then the item if it exists get: tags: - webui.image responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: limit in: query required: false schema: type: integer - name: offset in: query required: false schema: type: integer - name: count in: query required: false schema: type: boolean - name: sort in: query required: false schema: type: string - name: id in: path required: true schema: type: array title: query-filters default: null items: {} nullable: true /zfs/snapshot: get: tags: - zfs.snapshot responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: limit in: query required: false schema: type: integer - name: offset in: query required: false schema: type: integer - name: count in: query required: false schema: type: boolean - name: sort in: query required: false schema: type: string description: Query all ZFS Snapshots with `query-filters` and `query-options`. post: tags: - zfs.snapshot responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: |- Take a snapshot from a given dataset. Returns: bool: True if succeed otherwise False. requestBody: content: application/json: schema: $ref: "#/components/schemas/zfs_snapshot_create_0" "/zfs/snapshot/id/{id}": delete: tags: - zfs.snapshot responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: id in: path required: true schema: title: id type: string description: |- Delete snapshot of name `id`. `options.defer` will defer the deletion of snapshot. requestBody: content: application/json: schema: $ref: "#/components/schemas/zfs_snapshot_delete_1" get: tags: - zfs.snapshot responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: - name: limit in: query required: false schema: type: integer - name: offset in: query required: false schema: type: integer - name: count in: query required: false schema: type: boolean - name: sort in: query required: false schema: type: string - name: id in: path required: true schema: type: array title: query-filters default: null items: {} nullable: true description: Query all ZFS Snapshots with `query-filters` and `query-options`. /zfs/snapshot/clone: post: tags: - zfs.snapshot responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: |- Clone a given snapshot to a new dataset. Returns: bool: True if succeed otherwise False. requestBody: content: application/json: schema: $ref: "#/components/schemas/zfs_snapshot_clone_0" /zfs/snapshot/remove: post: tags: - zfs.snapshot responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: |- Remove a snapshot from a given dataset. Returns: bool: True if succeed otherwise False. requestBody: content: application/json: schema: $ref: "#/components/schemas/zfs_snapshot_remove_0" /zfs/snapshot/rollback: post: tags: - zfs.snapshot responses: "200": $ref: "#/components/responses/Success" "401": $ref: "#/components/responses/Unauthorized" parameters: [] description: >- Rollback to a given snapshot `id`. `options.recursive` will destroy any snapshots and bookmarks more recent than the one specified. `options.recursive_clones` is just like `recursive` but will also destroy any clones. `options.force` will force unmount of any clones. requestBody: content: application/json: schema: $ref: "#/components/schemas/zfs_snapshot_rollback" servers: - url: http://freenas.acllc.local/api/v2.0 components: schemas: core_bulk_0: title: method type: string core_bulk_1: type: array title: params default: [] items: {} core_bulk: type: object properties: method: $ref: "#/components/schemas/core_bulk_0" params: $ref: "#/components/schemas/core_bulk_1" core_debug_0: title: engine type: string enum: - PTVS - PYDEV - REMOTE_PDB core_debug_1: type: object properties: secret: type: string bind_address: type: string bind_port: type: integer host: type: string wait_attach: type: boolean local_path: type: string threaded: type: boolean additionalProperties: false title: options default: {} core_debug: type: object properties: engine: $ref: "#/components/schemas/core_debug_0" options: $ref: "#/components/schemas/core_debug_1" core_download_0: title: method type: string core_download_1: type: array title: args default: [] items: {} core_download_2: title: filename type: string core_download: type: object properties: method: $ref: "#/components/schemas/core_download_0" args: $ref: "#/components/schemas/core_download_1" filename: $ref: "#/components/schemas/core_download_2" core_get_methods_0: title: service default: null type: string nullable: true core_job_abort_0: type: integer title: id core_job_update_0: type: integer title: id core_job_update_1: type: object properties: progress: type: object properties: {} additionalProperties: true additionalProperties: false title: job-update default: {} core_job_update: type: object properties: id: $ref: "#/components/schemas/core_job_update_0" job-update: $ref: "#/components/schemas/core_job_update_1" core_job_wait_0: type: integer title: id group_create_0: type: object properties: gid: type: integer name: type: string sudo: type: boolean allow_duplicate_gid: type: boolean users: type: array items: type: integer additionalProperties: false title: group_create default: {} group_delete_1: type: object properties: delete_users: type: boolean additionalProperties: false title: options default: {} group_update_1: type: object properties: gid: type: integer name: type: string sudo: type: boolean allow_duplicate_gid: type: boolean users: type: array items: type: integer additionalProperties: false title: group_create default: {} group_get_group_obj_0: type: object properties: groupname: type: string gid: type: integer additionalProperties: false title: get_group_obj default: {} user_create_0: type: object properties: uid: type: integer username: type: string group: type: integer group_create: type: boolean home: type: string home_mode: type: string shell: type: string full_name: type: string email: type: string nullable: true password: type: string password_disabled: type: boolean locked: type: boolean microsoft_account: type: boolean sudo: type: boolean sshpubkey: type: string nullable: true groups: type: array items: {} attributes: type: object properties: {} additionalProperties: true additionalProperties: false title: user_create default: {} user_delete_1: type: object properties: delete_group: type: boolean additionalProperties: false title: options default: {} user_update_1: type: object properties: uid: type: integer username: type: string group: type: integer home: type: string home_mode: type: string shell: type: string full_name: type: string email: type: string nullable: true password: type: string password_disabled: type: boolean locked: type: boolean microsoft_account: type: boolean sudo: type: boolean sshpubkey: type: string nullable: true groups: type: array items: {} attributes: type: object properties: {} additionalProperties: true additionalProperties: false title: user_create default: {} user_get_user_obj_0: type: object properties: username: type: string uid: type: integer additionalProperties: false title: get_user_obj default: {} user_pop_attribute_1: title: key type: string user_set_attribute_1: title: key type: string user_set_attribute_2: anyOf: - type: string - type: integer - type: boolean - type: object - type: array title: value nullable: false user_set_attribute: type: object properties: key: $ref: "#/components/schemas/user_set_attribute_1" value: $ref: "#/components/schemas/user_set_attribute_2" acme_dns_authenticator_create_0: type: object properties: authenticator: type: string name: type: string attributes: type: object properties: {} additionalProperties: true additionalProperties: false title: dns_authenticator_create default: {} acme_dns_authenticator_update_1: type: object properties: name: type: string attributes: type: object properties: {} additionalProperties: true additionalProperties: false title: dns_authenticator_update default: {} activedirectory_update_0: type: object properties: domainname: type: string bindname: type: string bindpw: type: string ssl: type: string enum: - OFF - ON - START_TLS certificate: type: integer nullable: true validate_certificates: type: boolean verbose_logging: type: boolean use_default_domain: type: boolean allow_trusted_doms: type: boolean allow_dns_updates: type: boolean disable_freenas_cache: type: boolean site: type: string nullable: true kerberos_realm: type: integer nullable: true kerberos_principal: type: string nullable: true timeout: type: integer dns_timeout: type: integer idmap_backend: type: string enum: - AD - AUTORID - FRUIT - LDAP - NSS - RFC2307 - RID - SCRIPT nss_info: type: string enum: - SFU - SFU20 - RFC2307 nullable: true ldap_sasl_wrapping: type: string enum: - PLAIN - SIGN - SEAL createcomputer: type: string netbiosname: type: string netbiosname_b: type: string netbiosalias: type: array items: {} enable: type: boolean additionalProperties: false title: activedirectory_update default: {} activedirectory_leave_0: type: object properties: username: type: string password: type: string additionalProperties: false title: leave_ad default: {} afp_update_0: type: object properties: guest: type: boolean guest_user: type: string bindip: type: array items: type: string connections_limit: type: integer dbpath: type: string global_aux: type: string map_acls: type: string enum: - RIGHTS - MODE - NONE chmod_request: type: string enum: - PRESERVE - SIMPLE - IGNORE additionalProperties: false title: afp_update default: {} sharing_afp_create_0: type: object properties: path: type: string home: type: boolean name: type: string comment: type: string allow: type: array items: {} deny: type: array items: {} ro: type: array items: {} rw: type: array items: {} timemachine: type: boolean timemachine_quota: type: integer nodev: type: boolean nostat: type: boolean upriv: type: boolean fperm: type: string dperm: type: string umask: type: string hostsallow: type: array items: {} hostsdeny: type: array items: {} vuid: type: string nullable: true auxparams: type: string enabled: type: boolean additionalProperties: false title: sharingafp_create default: {} sharing_afp_update_1: type: object properties: path: type: string home: type: boolean name: type: string comment: type: string allow: type: array items: {} deny: type: array items: {} ro: type: array items: {} rw: type: array items: {} timemachine: type: boolean timemachine_quota: type: integer nodev: type: boolean nostat: type: boolean upriv: type: boolean fperm: type: string dperm: type: string umask: type: string hostsallow: type: array items: {} hostsdeny: type: array items: {} vuid: type: string nullable: true auxparams: type: string enabled: type: boolean additionalProperties: false title: sharingafp_create default: {} alertclasses_update_0: type: object properties: classes: type: object properties: {} additionalProperties: true additionalProperties: false title: alert_classes_update default: {} alert_dismiss_0: title: uuid type: string alert_restore_0: title: uuid type: string alertservice_create_0: type: object properties: name: type: string type: type: string attributes: type: object properties: {} additionalProperties: true level: type: string enum: - INFO - NOTICE - WARNING - ERROR - CRITICAL - ALERT - EMERGENCY enabled: type: boolean additionalProperties: false title: alert_service_create default: {} alertservice_update_1: type: object properties: name: type: string type: type: string attributes: type: object properties: {} additionalProperties: true level: type: string enum: - INFO - NOTICE - WARNING - ERROR - CRITICAL - ALERT - EMERGENCY enabled: type: boolean additionalProperties: false title: alert_service_create default: {} alertservice_test_0: type: object properties: name: type: string type: type: string attributes: type: object properties: {} additionalProperties: true level: type: string enum: - INFO - NOTICE - WARNING - ERROR - CRITICAL - ALERT - EMERGENCY enabled: type: boolean additionalProperties: false title: alert_service_create default: {} auth_check_user_0: title: username type: string auth_check_user_1: title: password type: string auth_check_user: type: object properties: username: $ref: "#/components/schemas/auth_check_user_0" password: $ref: "#/components/schemas/auth_check_user_1" auth_generate_token_0: type: integer title: ttl default: 600 nullable: true auth_generate_token_1: type: object properties: {} additionalProperties: true title: attrs default: {} auth_generate_token: type: object properties: ttl: $ref: "#/components/schemas/auth_generate_token_0" attrs: $ref: "#/components/schemas/auth_generate_token_1" backup_azure_get_buckets_0: type: integer title: id backup_b2_get_buckets_0: type: integer title: id backup_credential_create_0: type: object properties: name: type: string provider: type: string enum: - AMAZON - AZURE - BACKBLAZE - GCLOUD attributes: type: object properties: {} additionalProperties: true additionalProperties: false title: backup-credential default: {} backup_credential_update_1: type: object properties: name: type: string provider: type: string enum: - AMAZON - AZURE - BACKBLAZE - GCLOUD attributes: type: object properties: {} additionalProperties: true additionalProperties: false title: backup-credential default: {} backup_gcs_get_buckets_0: type: integer title: id backup_s3_get_buckets_0: type: integer title: id backup_create_0: type: object properties: description: type: string direction: type: string enum: - PUSH - PULL transfer_mode: type: string enum: - SYNC - COPY - MOVE path: type: string credential: type: integer encryption: type: boolean filename_encryption: type: boolean encryption_password: type: string encryption_salt: type: string minute: type: string hour: type: string daymonth: type: string dayweek: type: string month: type: string attributes: type: object properties: {} additionalProperties: true args: type: string enabled: type: boolean additionalProperties: false title: backup default: {} backup_update_1: type: object properties: description: type: string direction: type: string enum: - PUSH - PULL transfer_mode: type: string enum: - SYNC - COPY - MOVE path: type: string credential: type: integer encryption: type: boolean filename_encryption: type: boolean encryption_password: type: string encryption_salt: type: string minute: type: string hour: type: string daymonth: type: string dayweek: type: string month: type: string attributes: type: object properties: {} additionalProperties: true args: type: string enabled: type: boolean additionalProperties: false title: backup default: {} boot_attach_0: title: dev type: string boot_attach_1: type: object properties: expand: type: boolean additionalProperties: false title: options default: {} boot_attach: type: object properties: dev: $ref: "#/components/schemas/boot_attach_0" options: $ref: "#/components/schemas/boot_attach_1" boot_detach_0: title: dev type: string boot_replace_0: title: label type: string boot_replace_1: title: dev type: string boot_replace: type: object properties: label: $ref: "#/components/schemas/boot_replace_0" dev: $ref: "#/components/schemas/boot_replace_1" boot_set_scrub_interval_0: type: integer title: interval bootenv_create_0: type: object properties: name: type: string source: type: string additionalProperties: false title: bootenv_create default: {} bootenv_update_1: type: object properties: name: type: string additionalProperties: false title: bootenv_update default: {} bootenv_activate: type: object properties: {} bootenv_set_attribute_1: type: object properties: keep: type: boolean additionalProperties: false title: attributes default: {} cloudsync_create_0: type: object properties: description: type: string direction: type: string enum: - PUSH - PULL transfer_mode: type: string enum: - SYNC - COPY - MOVE path: type: string credentials: type: integer encryption: type: boolean filename_encryption: type: boolean encryption_password: type: string encryption_salt: type: string schedule: type: object properties: minute: type: string hour: type: string dom: type: string month: type: string dow: type: string additionalProperties: false follow_symlinks: type: boolean transfers: type: integer nullable: true bwlimit: type: array items: type: object exclude: type: array items: type: string attributes: type: object properties: {} additionalProperties: true snapshot: type: boolean pre_script: type: string post_script: type: string args: type: string enabled: type: boolean additionalProperties: false title: cloud_sync_create default: {} cloudsync_update_1: type: object properties: description: type: string direction: type: string enum: - PUSH - PULL transfer_mode: type: string enum: - SYNC - COPY - MOVE path: type: string credentials: type: integer encryption: type: boolean filename_encryption: type: boolean encryption_password: type: string encryption_salt: type: string schedule: type: object properties: minute: type: string hour: type: string dom: type: string month: type: string dow: type: string additionalProperties: false follow_symlinks: type: boolean transfers: type: integer nullable: true bwlimit: type: array items: type: object exclude: type: array items: type: string attributes: type: object properties: {} additionalProperties: true snapshot: type: boolean pre_script: type: string post_script: type: string args: type: string enabled: type: boolean additionalProperties: false title: cloud_sync_create default: {} cloudsync_abort: type: object properties: {} cloudsync_list_buckets_0: type: integer title: credentials_id cloudsync_list_directory_0: type: object properties: credentials: type: integer encryption: type: boolean filename_encryption: type: boolean encryption_password: type: string encryption_salt: type: string attributes: type: object properties: {} additionalProperties: true args: type: string additionalProperties: false title: cloud_sync_ls default: {} cloudsync_onedrive_list_drives_0: type: object properties: client_id: type: string client_secret: type: string token: type: string additionalProperties: false title: onedrive_list_drives default: {} cloudsync_sync: type: object properties: {} cloudsync_credentials_create_0: type: object properties: name: type: string provider: type: string attributes: type: object properties: {} additionalProperties: true additionalProperties: false title: cloud_sync_credentials_create default: {} cloudsync_credentials_update_1: type: object properties: name: type: string provider: type: string attributes: type: object properties: {} additionalProperties: true additionalProperties: false title: cloud_sync_credentials_create default: {} cloudsync_credentials_verify_0: type: object properties: provider: type: string attributes: type: object properties: {} additionalProperties: true additionalProperties: false title: cloud_sync_credentials_verify default: {} config_reset_0: type: object properties: reboot: type: boolean additionalProperties: false title: options default: {} cronjob_create_0: type: object properties: enabled: type: boolean stderr: type: boolean stdout: type: boolean schedule: type: object properties: minute: type: string hour: type: string dom: type: string month: type: string dow: type: string additionalProperties: false command: type: string description: type: string user: type: string additionalProperties: false title: cron_job_create default: {} cronjob_update_1: type: object properties: enabled: type: boolean stderr: type: boolean stdout: type: boolean schedule: type: object properties: minute: type: string hour: type: string dom: type: string month: type: string dow: type: string additionalProperties: false command: type: string description: type: string user: type: string additionalProperties: false title: cron_job_create default: {} cronjob_run_0: type: integer title: id certificateauthority_create_0: type: object properties: tos: type: boolean csr_id: type: integer signedby: type: integer key_length: type: integer renew_days: type: integer type: type: integer lifetime: type: integer serial: type: integer acme_directory_uri: type: string certificate: type: string city: type: string common: type: string country: type: string CSR: type: string ec_curve: type: string enum: - BrainpoolP512R1 - BrainpoolP384R1 - BrainpoolP256R1 - SECP256K1 email: type: string key_type: type: string enum: - RSA - EC name: type: string organization: type: string organizational_unit: type: string passphrase: type: string privatekey: type: string state: type: string create_type: type: string enum: - CA_CREATE_INTERNAL - CA_CREATE_IMPORTED - CA_CREATE_INTERMEDIATE digest_algorithm: type: string enum: - SHA1 - SHA224 - SHA256 - SHA384 - SHA512 san: type: array items: type: string additionalProperties: false title: certificate_create default: {} certificateauthority_update_1: type: object properties: ca_id: type: integer csr_cert_id: type: integer create_type: type: string enum: - CA_SIGN_CSR name: type: string additionalProperties: false title: ca_update default: {} certificateauthority_ca_sign_csr_0: type: object properties: ca_id: type: integer csr_cert_id: type: integer name: type: string additionalProperties: false title: ca_sign_csr default: {} certificate_create_0: type: object properties: tos: type: boolean dns_mapping: type: object properties: {} additionalProperties: true csr_id: type: integer signedby: type: integer key_length: type: integer renew_days: type: integer type: type: integer lifetime: type: integer serial: type: integer acme_directory_uri: type: string certificate: type: string city: type: string common: type: string country: type: string CSR: type: string ec_curve: type: string enum: - BrainpoolP512R1 - BrainpoolP384R1 - BrainpoolP256R1 - SECP256K1 email: type: string key_type: type: string enum: - RSA - EC name: type: string organization: type: string organizational_unit: type: string passphrase: type: string privatekey: type: string state: type: string create_type: type: string enum: - CERTIFICATE_CREATE_INTERNAL - CERTIFICATE_CREATE_IMPORTED - CERTIFICATE_CREATE_CSR - CERTIFICATE_CREATE_IMPORTED_CSR - CERTIFICATE_CREATE_ACME digest_algorithm: type: string enum: - SHA1 - SHA224 - SHA256 - SHA384 - SHA512 san: type: array items: type: string additionalProperties: false title: certificate_create default: {} certificate_delete_1: type: boolean title: force default: false certificate_update_1: type: object properties: name: type: string additionalProperties: false title: certificate_update default: {} device_get_info_0: title: type type: string enum: - SERIAL - DISK disk_update_1: type: object properties: togglesmart: type: boolean acousticlevel: type: string enum: - DISABLED - MINIMUM - MEDIUM - MAXIMUM advpowermgmt: type: string enum: - DISABLED - "1" - "64" - "127" - "128" - "192" - "254" description: type: string hddstandby: type: string enum: - ALWAYS ON - "5" - "10" - "20" - "30" - "60" - "120" - "180" - "240" - "300" - "330" passwd: type: string smartoptions: type: string critical: type: integer nullable: true difference: type: integer nullable: true informational: type: integer nullable: true enclosure: type: object properties: number: type: integer slot: type: integer additionalProperties: false additionalProperties: false title: disk_update default: {} disk_get_encrypted_0: type: object properties: unused: type: boolean additionalProperties: false title: options default: {} disk_get_unused_0: type: boolean title: join_partitions default: false disk_temperatures_0: type: array title: names items: type: string disk_temperatures_1: title: powermode default: NEVER type: string enum: - NEVER - SLEEP - STANDBY - IDLE disk_temperatures: type: object properties: names: $ref: "#/components/schemas/disk_temperatures_0" powermode: $ref: "#/components/schemas/disk_temperatures_1" disk_wipe_0: title: dev type: string disk_wipe_1: title: mode type: string enum: - QUICK - FULL - FULL_RANDOM disk_wipe_2: type: boolean title: synccache default: true disk_wipe: type: object properties: dev: $ref: "#/components/schemas/disk_wipe_0" mode: $ref: "#/components/schemas/disk_wipe_1" synccache: $ref: "#/components/schemas/disk_wipe_2" dyndns_update_0: type: object properties: provider: type: string checkip_ssl: type: boolean checkip_server: type: string checkip_path: type: string ssl: type: boolean custom_ddns_server: type: string custom_ddns_path: type: string domain: type: array items: type: string username: type: string password: type: string period: type: integer additionalProperties: false title: dyndns_update default: {} filesystem_acl_is_trivial_0: title: path type: string filesystem_chown_0: type: object properties: path: type: string uid: type: integer nullable: true gid: type: integer nullable: true options: type: object properties: recursive: type: boolean traverse: type: boolean additionalProperties: false additionalProperties: false title: filesystem_ownership default: {} filesystem_get_default_acl_0: title: acl_type default: OPEN type: string enum: - OPEN - RESTRICTED - HOME - DOMAIN_HOME filesystem_getacl_0: title: path type: string filesystem_getacl_1: type: boolean title: simplified default: true filesystem_getacl: type: object properties: path: $ref: "#/components/schemas/filesystem_getacl_0" simplified: $ref: "#/components/schemas/filesystem_getacl_1" filesystem_listdir_0: title: path type: string filesystem_listdir_1: type: array title: query-filters default: null items: {} nullable: true filesystem_listdir_2: type: object properties: extend: type: string nullable: true extend_context: type: string nullable: true prefix: type: string nullable: true extra: type: object properties: {} additionalProperties: true order_by: type: array items: {} select: type: array items: {} count: type: boolean get: type: boolean limit: type: integer offset: type: integer additionalProperties: false title: query-options default: null nullable: true filesystem_listdir: type: object properties: path: $ref: "#/components/schemas/filesystem_listdir_0" query-filters: $ref: "#/components/schemas/filesystem_listdir_1" query-options: $ref: "#/components/schemas/filesystem_listdir_2" filesystem_setacl_0: type: object properties: path: type: string uid: type: integer nullable: true gid: type: integer nullable: true dacl: type: array items: type: object options: type: object properties: stripacl: type: boolean recursive: type: boolean traverse: type: boolean canonicalize: type: boolean additionalProperties: false additionalProperties: false title: filesystem_acl default: {} filesystem_setperm_0: type: object properties: path: type: string mode: type: string nullable: true uid: type: integer nullable: true gid: type: integer nullable: true options: type: object properties: stripacl: type: boolean recursive: type: boolean traverse: type: boolean additionalProperties: false additionalProperties: false title: filesystem_permission default: {} filesystem_stat_0: title: path type: string filesystem_statfs_0: title: path type: string ftp_update_0: type: object properties: port: type: integer clients: type: integer ipconnections: type: integer loginattempt: type: integer timeout: type: integer rootlogin: type: boolean onlyanonymous: type: boolean anonpath: type: string nullable: true onlylocal: type: boolean banner: type: string filemask: type: string dirmask: type: string fxp: type: boolean resume: type: boolean defaultroot: type: boolean ident: type: boolean reversedns: type: boolean masqaddress: type: string passiveportsmin: type: integer passiveportsmax: type: integer localuserbw: type: integer localuserdlbw: type: integer anonuserbw: type: integer anonuserdlbw: type: integer tls: type: boolean tls_policy: type: string enum: - on - off - data - "!data" - auth - ctrl - ctrl+data - ctrl+!data - auth+data - auth+!data tls_opt_allow_client_renegotiations: type: boolean tls_opt_allow_dot_login: type: boolean tls_opt_allow_per_user: type: boolean tls_opt_common_name_required: type: boolean tls_opt_enable_diags: type: boolean tls_opt_export_cert_data: type: boolean tls_opt_no_cert_request: type: boolean tls_opt_no_empty_fragments: type: boolean tls_opt_no_session_reuse_required: type: boolean tls_opt_stdenvvars: type: boolean tls_opt_dns_name_required: type: boolean tls_opt_ip_address_required: type: boolean ssltls_certificate: type: integer nullable: true options: type: string additionalProperties: false title: ftp_update default: {} idmap_ad_create_0: type: object properties: domain: type: object properties: id: type: integer idmap_domain_name: type: string idmap_domain_dns_domain_name: type: string additionalProperties: false range_low: type: integer range_high: type: integer schema_mode: type: string enum: - RFC2307 - SFU - SFU20 unix_primary_group: type: boolean unix_nss_info: type: boolean additionalProperties: false title: idmap_ad_create default: {} idmap_ad_update_1: type: object properties: domain: type: object properties: id: type: integer idmap_domain_name: type: string idmap_domain_dns_domain_name: type: string additionalProperties: false range_low: type: integer range_high: type: integer schema_mode: type: string enum: - RFC2307 - SFU - SFU20 unix_primary_group: type: boolean unix_nss_info: type: boolean additionalProperties: false title: idmap_ad_create default: {} idmap_autorid_create_0: type: object properties: domain: type: object properties: id: type: integer idmap_domain_name: type: string idmap_domain_dns_domain_name: type: string additionalProperties: false range_low: type: integer range_high: type: integer rangesize: type: integer readonly: type: boolean ignore_builtin: type: boolean additionalProperties: false title: idmap_autorid_create default: {} idmap_autorid_update_1: type: object properties: domain: type: object properties: id: type: integer idmap_domain_name: type: string idmap_domain_dns_domain_name: type: string additionalProperties: false range_low: type: integer range_high: type: integer rangesize: type: integer readonly: type: boolean ignore_builtin: type: boolean additionalProperties: false title: idmap_autorid_create default: {} idmap_domaintobackend_create_0: type: object properties: domain: type: object properties: id: type: integer idmap_domain_name: type: string idmap_domain_dns_domain_name: type: string additionalProperties: false idmap_backend: type: string enum: - AD - AUTORID - FRUIT - LDAP - NSS - RFC2307 - RID - SCRIPT - TDB additionalProperties: false title: idmap_domaintobackend_create default: {} idmap_domaintobackend_update_1: type: object properties: domain: type: object properties: id: type: integer idmap_domain_name: type: string idmap_domain_dns_domain_name: type: string additionalProperties: false idmap_backend: type: string enum: - AD - AUTORID - FRUIT - LDAP - NSS - RFC2307 - RID - SCRIPT - TDB additionalProperties: false title: idmap_domaintobackend_create default: {} idmap_domain_create_0: type: object properties: name: type: string DNS_domain_name: type: string additionalProperties: false title: idmap_domain_create default: {} idmap_domain_update_1: type: object properties: name: type: string DNS_domain_name: type: string additionalProperties: false title: idmap_domain_create default: {} idmap_ldap_create_0: type: object properties: domain: type: object properties: id: type: integer idmap_domain_name: type: string idmap_domain_dns_domain_name: type: string additionalProperties: false range_low: type: integer range_high: type: integer ldap_base_dn: type: string ldap_user_dn: type: string ldap_url: type: string ssl: type: string enum: - OFF - ON - START_TLS certificate: type: integer additionalProperties: false title: idmap_ldap_create default: {} idmap_ldap_update_1: type: object properties: domain: type: object properties: id: type: integer idmap_domain_name: type: string idmap_domain_dns_domain_name: type: string additionalProperties: false range_low: type: integer range_high: type: integer ldap_base_dn: type: string ldap_user_dn: type: string ldap_url: type: string ssl: type: string enum: - OFF - ON - START_TLS certificate: type: integer additionalProperties: false title: idmap_ldap_create default: {} idmap_nss_create_0: type: object properties: domain: type: object properties: id: type: integer idmap_domain_name: type: string idmap_domain_dns_domain_name: type: string additionalProperties: false range_low: type: integer range_high: type: integer additionalProperties: false title: idmap_nss_create default: {} idmap_nss_update_1: type: object properties: domain: type: object properties: id: type: integer idmap_domain_name: type: string idmap_domain_dns_domain_name: type: string additionalProperties: false range_low: type: integer range_high: type: integer additionalProperties: false title: idmap_nss_create default: {} idmap_rfc2307_create_0: type: object properties: domain: type: object properties: id: type: integer idmap_domain_name: type: string idmap_domain_dns_domain_name: type: string additionalProperties: false range_low: type: integer range_high: type: integer ldap_server: type: string enum: - AD - STAND-ALONE bind_path_user: type: string bind_path_group: type: string user_cn: type: boolean cn_realm: type: boolean ldap_domain: type: string ldap_url: type: string ldap_user_dn: type: string ldap_user_dn_password: type: string ldap_realm: type: string ssl: type: string enum: - OFF - ON - START_TLS certificate: type: integer additionalProperties: false title: idmap_rfc2307_create default: {} idmap_rfc2307_update_1: type: object properties: domain: type: object properties: id: type: integer idmap_domain_name: type: string idmap_domain_dns_domain_name: type: string additionalProperties: false range_low: type: integer range_high: type: integer additionalProperties: false title: idmap_nss_create default: {} idmap_rid_create_0: type: object properties: domain: type: object properties: id: type: integer idmap_domain_name: type: string idmap_domain_dns_domain_name: type: string additionalProperties: false range_low: type: integer range_high: type: integer additionalProperties: false title: idmap_rid_create default: {} idmap_rid_update_1: type: object properties: domain: type: object properties: id: type: integer idmap_domain_name: type: string idmap_domain_dns_domain_name: type: string additionalProperties: false range_low: type: integer range_high: type: integer additionalProperties: false title: idmap_rid_create default: {} idmap_script_create_0: type: object properties: domain: type: object properties: id: type: integer idmap_domain_name: type: string idmap_domain_dns_domain_name: type: string additionalProperties: false range_low: type: integer range_high: type: integer script: type: string additionalProperties: false title: idmap_script_create default: {} idmap_script_update_1: type: object properties: domain: type: object properties: id: type: integer idmap_domain_name: type: string idmap_domain_dns_domain_name: type: string additionalProperties: false range_low: type: integer range_high: type: integer script: type: string additionalProperties: false title: idmap_script_create default: {} idmap_get_or_create_idmap_by_domain_0: title: domain type: string idmap_tdb_create_0: type: object properties: domain: type: object properties: id: type: integer idmap_domain_name: type: string idmap_domain_dns_domain_name: type: string additionalProperties: false range_low: type: integer range_high: type: integer additionalProperties: false title: idmap_tdb_create default: {} idmap_tdb_update_1: type: object properties: domain: type: object properties: id: type: integer idmap_domain_name: type: string idmap_domain_dns_domain_name: type: string additionalProperties: false range_low: type: integer range_high: type: integer additionalProperties: false title: idmap_tdb_create default: {} initshutdownscript_create_0: type: object properties: type: type: string enum: - COMMAND - SCRIPT command: type: string nullable: true script: type: string nullable: true when: type: string enum: - PREINIT - POSTINIT - SHUTDOWN enabled: type: boolean timeout: type: integer additionalProperties: false title: init_shutdown_script_create default: {} initshutdownscript_update_1: type: object properties: type: type: string enum: - COMMAND - SCRIPT command: type: string nullable: true script: type: string nullable: true when: type: string enum: - PREINIT - POSTINIT - SHUTDOWN enabled: type: boolean timeout: type: integer additionalProperties: false title: init_shutdown_script_create default: {} ipmi_update_1: type: object properties: ipaddress: type: string netmask: type: string gateway: type: string password: type: string dhcp: type: boolean vlan: type: integer nullable: true additionalProperties: false title: ipmi default: {} ipmi_identify_0: type: object properties: seconds: type: integer force: type: boolean additionalProperties: false title: options default: {} iscsi_global_update_0: type: object properties: basename: type: string isns_servers: type: array items: type: string pool_avail_threshold: type: integer nullable: true alua: type: boolean additionalProperties: false title: iscsiglobal_update default: {} iscsi_portal_create_0: type: object properties: comment: type: string discovery_authmethod: type: string enum: - NONE - CHAP - CHAP_MUTUAL discovery_authgroup: type: integer nullable: true listen: type: array items: type: object additionalProperties: false title: iscsiportal_create default: {} iscsi_portal_update_1: type: object properties: comment: type: string discovery_authmethod: type: string enum: - NONE - CHAP - CHAP_MUTUAL discovery_authgroup: type: integer nullable: true listen: type: array items: type: object additionalProperties: false title: iscsiportal_create default: {} iscsi_auth_create_0: type: object properties: tag: type: integer user: type: string secret: type: string peeruser: type: string peersecret: type: string additionalProperties: false title: iscsi_auth_create default: {} iscsi_auth_update_1: type: object properties: tag: type: integer user: type: string secret: type: string peeruser: type: string peersecret: type: string additionalProperties: false title: iscsi_auth_create default: {} iscsi_initiator_create_0: type: object properties: tag: type: integer initiators: type: array items: {} auth_network: type: array items: type: string comment: type: string additionalProperties: false title: iscsi_initiator_create default: {} iscsi_initiator_update_1: type: object properties: tag: type: integer initiators: type: array items: {} auth_network: type: array items: type: string comment: type: string additionalProperties: false title: iscsi_initiator_create default: {} iscsi_extent_create_0: type: object properties: name: type: string type: type: string enum: - DISK - FILE disk: type: string nullable: true serial: type: string nullable: true path: type: string nullable: true filesize: type: integer blocksize: type: integer pblocksize: type: boolean avail_threshold: type: integer nullable: true comment: type: string insecure_tpc: type: boolean xen: type: boolean rpm: type: string enum: - UNKNOWN - SSD - "5400" - "7200" - "10000" - "15000" ro: type: boolean enabled: type: boolean additionalProperties: false title: iscsi_extent_create default: {} iscsi_extent_delete_1: type: boolean title: remove default: false iscsi_extent_delete_2: type: boolean title: force default: false iscsi_extent_delete: type: object properties: remove: $ref: "#/components/schemas/iscsi_extent_delete_1" force: $ref: "#/components/schemas/iscsi_extent_delete_2" iscsi_extent_update_1: type: object properties: name: type: string type: type: string enum: - DISK - FILE disk: type: string nullable: true serial: type: string nullable: true path: type: string nullable: true filesize: type: integer blocksize: type: integer pblocksize: type: boolean avail_threshold: type: integer nullable: true comment: type: string insecure_tpc: type: boolean xen: type: boolean rpm: type: string enum: - UNKNOWN - SSD - "5400" - "7200" - "10000" - "15000" ro: type: boolean enabled: type: boolean additionalProperties: false title: iscsi_extent_create default: {} iscsi_extent_disk_choices_0: type: array title: exclude default: [] items: {} iscsi_target_create_0: type: object properties: name: type: string alias: type: string nullable: true mode: type: string enum: - ISCSI - FC - BOTH groups: type: array items: type: object additionalProperties: false title: iscsi_target_create default: {} iscsi_target_delete_1: type: boolean title: force default: false iscsi_target_update_1: type: object properties: name: type: string alias: type: string nullable: true mode: type: string enum: - ISCSI - FC - BOTH groups: type: array items: type: object additionalProperties: false title: iscsi_target_create default: {} iscsi_targetextent_create_0: type: object properties: target: type: integer lunid: type: integer extent: type: integer additionalProperties: false title: iscsi_targetextent_create default: {} iscsi_targetextent_delete_1: type: boolean title: force default: false iscsi_targetextent_update_1: type: object properties: target: type: integer lunid: type: integer extent: type: integer additionalProperties: false title: iscsi_targetextent_create default: {} jail_create_0: type: object properties: release: type: string template: type: string pkglist: type: array items: type: string uuid: type: string basejail: type: boolean empty: type: boolean short: type: boolean props: type: array items: {} https: type: boolean additionalProperties: false title: options default: {} jail_delete_1: type: object properties: force: type: boolean additionalProperties: false title: options default: {} jail_update_1: type: object properties: plugin: type: boolean additionalProperties: true title: jail_update default: {} jail_activate_0: title: pool type: string jail_clean_0: title: ds_type type: string enum: - ALL - JAIL - TEMPLATE - RELEASE jail_clone_1: type: object properties: uuid: type: string pkglist: type: array items: type: string thickjail: type: boolean props: type: array items: {} additionalProperties: false title: clone_jail default: {} jail_exec_0: title: jail type: string jail_exec_1: type: array title: command items: {} jail_exec_2: type: object properties: host_user: type: string jail_user: type: string additionalProperties: false title: options default: {} jail_exec: type: object properties: jail: $ref: "#/components/schemas/jail_exec_0" command: $ref: "#/components/schemas/jail_exec_1" options: $ref: "#/components/schemas/jail_exec_2" jail_export_0: type: object properties: jail: type: string compression_algorithm: type: string enum: - ZIP - LZMA additionalProperties: false title: options default: {} jail_fetch_0: type: object properties: release: type: string server: type: string user: type: string password: type: string name: type: string nullable: true jail_name: type: string accept: type: boolean https: type: boolean props: type: array items: {} files: type: array items: {} branch: type: string nullable: true additionalProperties: false title: options default: {} jail_fstab_0: title: jail type: string jail_fstab_1: type: object properties: action: type: string enum: - ADD - REMOVE - REPLACE - LIST source: type: string destination: type: string fstype: type: string fsoptions: type: string dump: type: string pass: type: string index: type: integer additionalProperties: false title: options default: {} jail_fstab: type: object properties: jail: $ref: "#/components/schemas/jail_fstab_0" options: $ref: "#/components/schemas/jail_fstab_1" jail_import_image_0: type: object properties: jail: type: string path: type: string nullable: true compression_algorithm: type: string enum: - ZIP - LZMA - null nullable: true additionalProperties: false title: options default: {} jail_rc_action_0: title: action type: string enum: - START - STOP - RESTART jail_releases_choices_0: type: boolean title: remote default: false jail_restart_0: title: jail type: string jail_start_0: title: jail type: string jail_stop_0: title: jail type: string jail_stop_1: type: boolean title: force default: false jail_stop: type: object properties: jail: $ref: "#/components/schemas/jail_stop_0" force: $ref: "#/components/schemas/jail_stop_1" jail_update_defaults_0: type: object properties: {} additionalProperties: true title: props default: {} jail_update_to_latest_patch_0: title: jail type: string jail_update_to_latest_patch_1: type: boolean title: update_pkgs default: false jail_update_to_latest_patch: type: object properties: jail: $ref: "#/components/schemas/jail_update_to_latest_patch_0" update_pkgs: $ref: "#/components/schemas/jail_update_to_latest_patch_1" plugin_create_0: type: object properties: plugin_name: type: string jail_name: type: string props: type: array items: {} branch: type: string nullable: true plugin_repository: type: string additionalProperties: false title: plugin_create default: {} plugin_update_1: type: object properties: plugin: type: boolean additionalProperties: true title: jail_update default: {} plugin_available_0: type: object properties: cache: type: boolean plugin_repository: type: string branch: type: string additionalProperties: false title: available_plugin_options default: {} plugin_branches_choices_0: title: repository default: null type: string nullable: true plugin_defaults_0: type: object properties: refresh: type: boolean plugin: type: string branch: type: string nullable: true plugin_repository: type: string additionalProperties: false title: options default: {} kerberos_keytab_create_0: type: object properties: file: type: string name: type: string additionalProperties: false title: kerberos_keytab_create default: {} kerberos_keytab_update_1: type: object properties: file: type: string name: type: string additionalProperties: false title: kerberos_keytab_update default: {} kerberos_realm_create_0: type: object properties: realm: type: string kdc: type: array items: {} admin_server: type: array items: {} kpasswd_server: type: array items: {} additionalProperties: false title: kerberos_realm_create default: {} kerberos_realm_update_1: type: object properties: realm: type: string kdc: type: array items: {} admin_server: type: array items: {} kpasswd_server: type: array items: {} additionalProperties: false title: kerberos_realm_create default: {} kerberos_update_0: type: object properties: appdefaults_aux: type: string libdefaults_aux: type: string additionalProperties: false title: kerberos_settings_update default: {} keychaincredential_create_0: type: object properties: name: type: string type: type: string attributes: type: object properties: {} additionalProperties: true additionalProperties: false title: keychain_credential_create default: {} keychaincredential_delete_1: type: object properties: cascade: type: boolean additionalProperties: false title: options default: {} keychaincredential_update_1: type: object properties: name: type: string attributes: type: object properties: {} additionalProperties: true additionalProperties: false title: keychain_credential_create default: {} keychaincredential_remote_ssh_host_key_scan_0: type: object properties: host: type: string port: type: string connect_timeout: type: integer additionalProperties: false title: keychain_remote_ssh_host_key_scan default: {} keychaincredential_remote_ssh_semiautomatic_setup_0: type: object properties: name: type: string url: type: string token: type: string password: type: string username: type: string private_key: type: integer cipher: type: string enum: - STANDARD - FAST - DISABLED connect_timeout: type: integer additionalProperties: false title: keychain_remote_ssh_semiautomatic_setup default: {} keychaincredential_used_by_0: type: integer title: id ldap_update_0: type: object properties: hostname: type: array items: {} basedn: type: string binddn: type: string bindpw: type: string anonbind: type: boolean ssl: type: string enum: - OFF - ON - START_TLS certificate: type: integer nullable: true validate_certificates: type: boolean disable_freenas_cache: type: boolean timeout: type: integer dns_timeout: type: integer idmap_backend: type: string enum: - SCRIPT - LDAP kerberos_realm: type: integer nullable: true kerberos_principal: type: string has_samba_schema: type: boolean auxiliary_parameters: type: string schema: type: string enum: - RFC2307 - RFC2307BIS enable: type: boolean additionalProperties: false title: ldap_update default: {} lldp_update_0: type: object properties: intdesc: type: boolean country: type: string location: type: string additionalProperties: false title: lldp_update default: {} mail_update_0: type: object properties: fromemail: type: string fromname: type: string outgoingserver: type: string port: type: integer security: type: string enum: - PLAIN - SSL - TLS smtp: type: boolean user: type: string pass: type: string additionalProperties: false title: mail_update default: {} mail_send_0: type: object properties: subject: type: string text: type: string html: type: string nullable: true to: type: array items: type: string cc: type: array items: type: string interval: type: integer nullable: true channel: type: string nullable: true timeout: type: integer attachments: type: boolean queue: type: boolean extra_headers: type: object properties: {} additionalProperties: true additionalProperties: false title: mail_message default: {} mail_send_1: type: object properties: fromemail: type: string fromname: type: string outgoingserver: type: string port: type: integer security: type: string enum: - PLAIN - SSL - TLS smtp: type: boolean user: type: string pass: type: string additionalProperties: false title: mail_update default: {} mail_send: type: object properties: mail_message: $ref: "#/components/schemas/mail_send_0" mail_update: $ref: "#/components/schemas/mail_send_1" interface_create_0: type: object properties: name: type: string description: type: string nullable: true type: type: string enum: - BRIDGE - LINK_AGGREGATION - VLAN disable_offload_capabilities: type: boolean ipv4_dhcp: type: boolean ipv6_auto: type: boolean aliases: type: array items: type: object failover_critical: type: boolean failover_group: type: integer failover_vhid: type: integer failover_aliases: type: array items: type: object failover_virtual_aliases: type: array items: type: object bridge_members: type: array items: {} lag_protocol: type: string enum: - LACP - FAILOVER - LOADBALANCE - ROUNDROBIN - NONE lag_ports: type: array items: type: string vlan_parent_interface: type: string vlan_tag: type: integer vlan_pcp: type: integer nullable: true mtu: type: integer nullable: true options: type: string additionalProperties: false title: interface_create default: {} interface_update_1: type: object properties: name: type: string description: type: string nullable: true disable_offload_capabilities: type: boolean ipv4_dhcp: type: boolean ipv6_auto: type: boolean aliases: type: array items: type: object failover_critical: type: boolean failover_group: type: integer failover_vhid: type: integer failover_aliases: type: array items: type: object failover_virtual_aliases: type: array items: type: object bridge_members: type: array items: {} lag_protocol: type: string enum: - LACP - FAILOVER - LOADBALANCE - ROUNDROBIN - NONE lag_ports: type: array items: type: string vlan_parent_interface: type: string vlan_tag: type: integer vlan_pcp: type: integer nullable: true mtu: type: integer nullable: true options: type: string additionalProperties: false title: interface_create default: {} interface_bridge_members_choices_0: title: id default: null type: string nullable: true interface_choices_0: type: object properties: bridge_members: type: boolean lag_ports: type: boolean vlan_parent: type: boolean exclude: type: array items: {} include: type: array items: {} additionalProperties: false title: options default: {} interface_commit_0: type: object properties: rollback: type: boolean checkin_timeout: type: integer additionalProperties: false title: options default: {} interface_ip_in_use_0: type: object properties: ipv4: type: boolean ipv6: type: boolean ipv6_link_local: type: boolean loopback: type: boolean any: type: boolean static: type: boolean additionalProperties: false title: ips default: {} interface_lag_ports_choices_0: title: id default: null type: string nullable: true network_configuration_update_0: type: object properties: hostname: type: string hostname_b: type: string hostname_virtual: type: string domain: type: string domains: type: array items: type: string ipv4gateway: type: string ipv6gateway: type: string nameserver1: type: string nameserver2: type: string nameserver3: type: string httpproxy: type: string netwait_enabled: type: boolean netwait_ip: type: array items: type: string hosts: type: string additionalProperties: false title: global_configuration_update default: {} route_ipv4gw_reachable_0: title: ipv4_gateway type: string staticroute_create_0: type: object properties: destination: type: string gateway: type: string description: type: string additionalProperties: false title: staticroute_create default: {} staticroute_update_1: type: object properties: destination: type: string gateway: type: string description: type: string additionalProperties: false title: staticroute_create default: {} nfs_update_0: type: object properties: servers: type: integer udp: type: boolean allow_nonroot: type: boolean v4: type: boolean v4_v3owner: type: boolean v4_krb: type: boolean bindip: type: array items: type: string mountd_port: type: integer nullable: true rpcstatd_port: type: integer nullable: true rpclockd_port: type: integer nullable: true userd_manage_gids: type: boolean mountd_log: type: boolean statd_lockd_log: type: boolean additionalProperties: false title: nfs_update default: {} sharing_nfs_create_0: type: object properties: paths: type: array items: type: string comment: type: string networks: type: array items: type: string hosts: type: array items: type: string alldirs: type: boolean ro: type: boolean quiet: type: boolean maproot_user: type: string nullable: true maproot_group: type: string nullable: true mapall_user: type: string nullable: true mapall_group: type: string nullable: true security: type: array items: type: string enabled: type: boolean additionalProperties: false title: sharingnfs_create default: {} sharing_nfs_update_1: type: object properties: paths: type: array items: type: string comment: type: string networks: type: array items: type: string hosts: type: array items: type: string alldirs: type: boolean ro: type: boolean quiet: type: boolean maproot_user: type: string nullable: true maproot_group: type: string nullable: true mapall_user: type: string nullable: true mapall_group: type: string nullable: true security: type: array items: type: string enabled: type: boolean additionalProperties: false title: sharingnfs_create default: {} nis_update_0: type: object properties: domain: type: string servers: type: array items: {} secure_mode: type: boolean manycast: type: boolean enable: type: boolean additionalProperties: false title: nis_update default: {} system_ntpserver_create_0: type: object properties: address: type: string burst: type: boolean iburst: type: boolean prefer: type: boolean minpoll: type: integer maxpoll: type: integer force: type: boolean additionalProperties: false title: ntp_create default: {} system_ntpserver_update_1: type: object properties: address: type: string burst: type: boolean iburst: type: boolean prefer: type: boolean minpoll: type: integer maxpoll: type: integer force: type: boolean additionalProperties: false title: ntp_create default: {} pool_dataset_create_0: type: object properties: name: type: string type: type: string enum: - FILESYSTEM - VOLUME volsize: type: integer volblocksize: type: string enum: - "512" - 1K - 2K - 4K - 8K - 16K - 32K - 64K - 128K sparse: type: boolean force_size: type: boolean comments: type: string sync: type: string enum: - STANDARD - ALWAYS - DISABLED compression: type: string enum: - OFF - LZ4 - GZIP - GZIP-1 - GZIP-9 - ZLE - LZJB atime: type: string enum: - ON - OFF exec: type: string enum: - ON - OFF quota: type: integer nullable: true quota_warning: type: integer quota_critical: type: integer refquota: type: integer nullable: true refquota_warning: type: integer refquota_critical: type: integer reservation: type: integer refreservation: type: integer copies: type: integer snapdir: type: string enum: - VISIBLE - HIDDEN deduplication: type: string enum: - ON - VERIFY - OFF readonly: type: string enum: - ON - OFF recordsize: type: string enum: - "512" - 1K - 2K - 4K - 8K - 16K - 32K - 64K - 128K - 256K - 512K - 1024K casesensitivity: type: string enum: - SENSITIVE - INSENSITIVE - MIXED aclmode: type: string enum: - PASSTHROUGH - RESTRICTED share_type: type: string enum: - GENERIC - SMB additionalProperties: false title: pool_dataset_create default: {} pool_dataset_delete_1: type: object properties: recursive: type: boolean force: type: boolean additionalProperties: false title: dataset_delete default: {} pool_dataset_update_1: type: object properties: volsize: type: integer force_size: type: boolean comments: type: string sync: type: string enum: - STANDARD - ALWAYS - DISABLED - INHERIT compression: type: string enum: - OFF - LZ4 - GZIP - GZIP-1 - GZIP-9 - ZLE - LZJB - INHERIT atime: type: string enum: - ON - OFF - INHERIT exec: type: string enum: - ON - OFF - INHERIT quota: type: integer nullable: true quota_warning: nullable: false anyOf: - type: integer - type: string enum: - INHERIT quota_critical: nullable: false anyOf: - type: integer - type: string enum: - INHERIT refquota: type: integer nullable: true refquota_warning: nullable: false anyOf: - type: integer - type: string enum: - INHERIT refquota_critical: nullable: false anyOf: - type: integer - type: string enum: - INHERIT reservation: type: integer refreservation: type: integer copies: type: integer snapdir: type: string enum: - VISIBLE - HIDDEN - INHERIT deduplication: type: string enum: - ON - VERIFY - OFF - INHERIT readonly: type: string enum: - ON - OFF - INHERIT recordsize: type: string enum: - "512" - 1K - 2K - 4K - 8K - 16K - 32K - 64K - 128K - 256K - 512K - 1024K - INHERIT aclmode: type: string enum: - PASSTHROUGH - RESTRICTED additionalProperties: false title: pool_dataset_create default: {} pool_dataset_attachments: type: object properties: {} pool_dataset_permission_1: type: object properties: user: type: string group: type: string mode: type: string nullable: true acl: type: array items: type: object options: type: object properties: stripacl: type: boolean recursive: type: boolean traverse: type: boolean additionalProperties: false additionalProperties: false title: pool_dataset_permission default: {} pool_dataset_processes: type: object properties: {} pool_dataset_promote: type: object properties: {} pool_dataset_recommended_zvol_blocksize_0: title: pool type: string pool_resilver_update_0: type: object properties: begin: type: string end: type: string enabled: type: boolean weekday: type: array items: type: integer additionalProperties: false title: pool_resilver default: {} pool_scrub_create_0: type: object properties: pool: type: integer threshold: type: integer description: type: string schedule: type: object properties: minute: type: string hour: type: string dom: type: string month: type: string dow: type: string additionalProperties: false enabled: type: boolean additionalProperties: false title: pool_scrub_create default: {} pool_scrub_update_1: type: object properties: pool: type: integer threshold: type: integer description: type: string schedule: type: object properties: minute: type: string hour: type: string dom: type: string month: type: string dow: type: string additionalProperties: false enabled: type: boolean additionalProperties: false title: pool_scrub_create default: {} pool_scrub_run_0: title: name type: string pool_scrub_run_1: type: integer title: threshold default: 35 pool_scrub_run: type: object properties: name: $ref: "#/components/schemas/pool_scrub_run_0" threshold: $ref: "#/components/schemas/pool_scrub_run_1" pool_create_0: type: object properties: name: type: string encryption: type: boolean deduplication: type: string enum: - null - ON - VERIFY - OFF nullable: true topology: type: object properties: data: type: array items: type: object cache: type: array items: type: object log: type: array items: type: object spares: type: array items: type: string additionalProperties: false additionalProperties: false title: pool_create default: {} pool_update_1: type: object properties: deduplication: type: string enum: - null - ON - VERIFY - OFF nullable: true topology: type: object properties: data: type: array items: type: object cache: type: array items: type: object log: type: array items: type: object spares: type: array items: type: string additionalProperties: false additionalProperties: false title: pool_create default: {} pool_attachments: type: object properties: {} pool_detach_1: type: object properties: label: type: string additionalProperties: false title: options default: {} pool_download_encryption_key_1: title: filename default: geli.key type: string pool_export_1: type: object properties: cascade: type: boolean restart_services: type: boolean destroy: type: boolean additionalProperties: false title: options default: {} pool_filesystem_choices_0: type: array title: types default: - FILESYSTEM - VOLUME items: type: string pool_get_disks: type: object properties: {} pool_import_disk_0: title: device type: string pool_import_disk_1: title: fs_type type: string pool_import_disk_2: type: object properties: {} additionalProperties: true title: fs_options default: {} pool_import_disk_3: title: dst_path type: string pool_import_disk: type: object properties: device: $ref: "#/components/schemas/pool_import_disk_0" fs_type: $ref: "#/components/schemas/pool_import_disk_1" fs_options: $ref: "#/components/schemas/pool_import_disk_2" dst_path: $ref: "#/components/schemas/pool_import_disk_3" pool_import_disk_autodetect_fs_type_0: title: device type: string pool_import_pool_0: type: object properties: guid: type: string name: type: string passphrase: type: string enable_attachments: type: boolean additionalProperties: false title: pool_import default: {} pool_is_upgraded: type: object properties: {} pool_lock_1: title: passphrase type: string pool_offline_1: type: object properties: label: type: string additionalProperties: false title: options default: {} pool_online_1: type: object properties: label: type: string additionalProperties: false title: options default: {} pool_passphrase_1: type: object properties: passphrase: type: string nullable: true admin_password: type: string additionalProperties: false title: options default: {} pool_processes: type: object properties: {} pool_recoverykey_rm_1: type: object properties: admin_password: type: string additionalProperties: false title: options default: {} pool_rekey_1: type: object properties: admin_password: type: string additionalProperties: false title: options default: {} pool_remove_1: type: object properties: label: type: string additionalProperties: false title: options default: {} pool_replace_1: type: object properties: label: type: string disk: type: string force: type: boolean passphrase: type: string additionalProperties: false title: options default: {} pool_scrub_1: title: action type: string enum: - START - STOP - PAUSE pool_unlock_1: type: object properties: passphrase: type: string recoverykey: type: boolean services_restart: type: array items: {} additionalProperties: false title: options default: {} pool_unlock_services_restart_choices_0: type: integer title: id pool_upgrade: type: object properties: {} replication_create_0: type: object properties: name: type: string direction: type: string enum: - PUSH - PULL transport: type: string enum: - SSH - SSH+NETCAT - LOCAL - LEGACY ssh_credentials: type: integer nullable: true netcat_active_side: type: string enum: - LOCAL - REMOTE nullable: true netcat_active_side_listen_address: type: string nullable: true netcat_active_side_port_min: type: integer nullable: true netcat_active_side_port_max: type: integer nullable: true netcat_passive_side_connect_address: type: string nullable: true source_datasets: type: array items: type: string target_dataset: type: string recursive: type: boolean exclude: type: array items: type: string properties: type: boolean periodic_snapshot_tasks: type: array items: type: integer naming_schema: type: array items: type: string also_include_naming_schema: type: array items: type: string auto: type: boolean schedule: type: object properties: minute: type: string hour: type: string dom: type: string month: type: string dow: type: string begin: type: string end: type: string additionalProperties: false restrict_schedule: type: object properties: minute: type: string hour: type: string dom: type: string month: type: string dow: type: string begin: type: string end: type: string additionalProperties: false only_matching_schedule: type: boolean allow_from_scratch: type: boolean hold_pending_snapshots: type: boolean retention_policy: type: string enum: - SOURCE - CUSTOM - NONE lifetime_value: type: integer nullable: true lifetime_unit: type: string enum: - HOUR - DAY - WEEK - MONTH - YEAR nullable: true compression: type: string enum: - LZ4 - PIGZ - PLZIP nullable: true speed_limit: type: integer nullable: true dedup: type: boolean large_block: type: boolean embed: type: boolean compressed: type: boolean retries: type: integer logging_level: type: string enum: - DEBUG - INFO - WARNING - ERROR nullable: true enabled: type: boolean additionalProperties: false title: replication_create default: {} replication_update_1: type: object properties: name: type: string direction: type: string enum: - PUSH - PULL transport: type: string enum: - SSH - SSH+NETCAT - LOCAL - LEGACY ssh_credentials: type: integer nullable: true netcat_active_side: type: string enum: - LOCAL - REMOTE nullable: true netcat_active_side_listen_address: type: string nullable: true netcat_active_side_port_min: type: integer nullable: true netcat_active_side_port_max: type: integer nullable: true netcat_passive_side_connect_address: type: string nullable: true source_datasets: type: array items: type: string target_dataset: type: string recursive: type: boolean exclude: type: array items: type: string properties: type: boolean periodic_snapshot_tasks: type: array items: type: integer naming_schema: type: array items: type: string also_include_naming_schema: type: array items: type: string auto: type: boolean schedule: type: object properties: minute: type: string hour: type: string dom: type: string month: type: string dow: type: string begin: type: string end: type: string additionalProperties: false restrict_schedule: type: object properties: minute: type: string hour: type: string dom: type: string month: type: string dow: type: string begin: type: string end: type: string additionalProperties: false only_matching_schedule: type: boolean allow_from_scratch: type: boolean hold_pending_snapshots: type: boolean retention_policy: type: string enum: - SOURCE - CUSTOM - NONE lifetime_value: type: integer nullable: true lifetime_unit: type: string enum: - HOUR - DAY - WEEK - MONTH - YEAR nullable: true compression: type: string enum: - LZ4 - PIGZ - PLZIP nullable: true speed_limit: type: integer nullable: true dedup: type: boolean large_block: type: boolean embed: type: boolean compressed: type: boolean retries: type: integer logging_level: type: string enum: - DEBUG - INFO - WARNING - ERROR nullable: true enabled: type: boolean additionalProperties: false title: replication_create default: {} replication_count_eligible_manual_snapshots_0: type: array title: datasets items: type: string replication_count_eligible_manual_snapshots_1: type: array title: naming_schema items: type: string replication_count_eligible_manual_snapshots_2: title: transport type: string enum: - SSH - SSH+NETCAT - LOCAL - LEGACY replication_count_eligible_manual_snapshots_3: type: integer title: ssh_credentials default: null nullable: true replication_count_eligible_manual_snapshots: type: object properties: datasets: $ref: "#/components/schemas/replication_count_eligible_manual_snapshots_0" naming_schema: $ref: "#/components/schemas/replication_count_eligible_manual_snapshots_1" transport: $ref: "#/components/schemas/replication_count_eligible_manual_snapshots_2" ssh_credentials: $ref: "#/components/schemas/replication_count_eligible_manual_snapshots_3" replication_create_dataset_0: title: dataset type: string replication_create_dataset_1: title: transport type: string enum: - SSH - SSH+NETCAT - LOCAL - LEGACY replication_create_dataset_2: type: integer title: ssh_credentials default: null nullable: true replication_create_dataset: type: object properties: dataset: $ref: "#/components/schemas/replication_create_dataset_0" transport: $ref: "#/components/schemas/replication_create_dataset_1" ssh_credentials: $ref: "#/components/schemas/replication_create_dataset_2" replication_list_datasets_0: title: transport type: string enum: - SSH - SSH+NETCAT - LOCAL - LEGACY replication_list_datasets_1: type: integer title: ssh_credentials default: null nullable: true replication_list_datasets: type: object properties: transport: $ref: "#/components/schemas/replication_list_datasets_0" ssh_credentials: $ref: "#/components/schemas/replication_list_datasets_1" replication_run: type: object properties: {} replication_target_unmatched_snapshots_0: title: direction type: string enum: - PUSH - PULL replication_target_unmatched_snapshots_1: type: array title: source_datasets items: type: string replication_target_unmatched_snapshots_2: title: target_dataset type: string replication_target_unmatched_snapshots_3: title: transport type: string enum: - SSH - SSH+NETCAT - LOCAL - LEGACY replication_target_unmatched_snapshots_4: type: integer title: ssh_credentials default: null nullable: true replication_target_unmatched_snapshots: type: object properties: direction: $ref: "#/components/schemas/replication_target_unmatched_snapshots_0" source_datasets: $ref: "#/components/schemas/replication_target_unmatched_snapshots_1" target_dataset: $ref: "#/components/schemas/replication_target_unmatched_snapshots_2" transport: $ref: "#/components/schemas/replication_target_unmatched_snapshots_3" ssh_credentials: $ref: "#/components/schemas/replication_target_unmatched_snapshots_4" reporting_update_0: type: object properties: cpu_in_percentage: type: boolean graphite: type: string graph_age: type: integer graph_points: type: integer confirm_rrd_destroy: type: boolean additionalProperties: false title: reporting_update default: {} reporting_get_data_0: type: array title: graphs items: type: object reporting_get_data_1: type: object properties: unit: type: string enum: - HOUR - DAY - WEEK - MONTH - YEAR page: type: integer start: type: string end: type: string aggregate: type: boolean additionalProperties: false title: reporting_query default: {} reporting_get_data: type: object properties: graphs: $ref: "#/components/schemas/reporting_get_data_0" reporting_query: $ref: "#/components/schemas/reporting_get_data_1" rsyncmod_create_0: type: object properties: name: type: string comment: type: string path: type: string mode: type: string enum: - RO - RW - WO maxconn: type: integer user: type: string group: type: string hostsallow: type: array items: type: string hostsdeny: type: array items: type: string auxiliary: type: string additionalProperties: false title: rsyncmod_create default: {} rsyncmod_update_1: type: object properties: name: type: string comment: type: string path: type: string mode: type: string enum: - RO - RW - WO maxconn: type: integer user: type: string group: type: string hostsallow: type: array items: type: string hostsdeny: type: array items: type: string auxiliary: type: string additionalProperties: false title: rsyncmod_create default: {} rsynctask_create_0: type: object properties: path: type: string user: type: string remotehost: type: string remoteport: type: integer mode: type: string enum: - MODULE - SSH remotemodule: type: string remotepath: type: string validate_rpath: type: boolean direction: type: string enum: - PULL - PUSH desc: type: string schedule: type: object properties: minute: type: string hour: type: string dom: type: string month: type: string dow: type: string additionalProperties: false recursive: type: boolean times: type: boolean compress: type: boolean archive: type: boolean delete: type: boolean quiet: type: boolean preserveperm: type: boolean preserveattr: type: boolean delayupdates: type: boolean extra: type: array items: type: string enabled: type: boolean additionalProperties: false title: rsync_task_create default: {} rsynctask_update_1: type: object properties: path: type: string user: type: string remotehost: type: string remoteport: type: integer mode: type: string enum: - MODULE - SSH remotemodule: type: string remotepath: type: string validate_rpath: type: boolean direction: type: string enum: - PULL - PUSH desc: type: string schedule: type: object properties: minute: type: string hour: type: string dom: type: string month: type: string dow: type: string additionalProperties: false recursive: type: boolean times: type: boolean compress: type: boolean archive: type: boolean delete: type: boolean quiet: type: boolean preserveperm: type: boolean preserveattr: type: boolean delayupdates: type: boolean extra: type: array items: type: string enabled: type: boolean additionalProperties: false title: rsync_task_create default: {} rsynctask_run: type: object properties: {} rsyncd_update_0: type: object properties: port: type: integer auxiliary: type: string additionalProperties: false title: rsyncd_update default: {} s3_update_0: type: object properties: bindip: type: string bindport: type: integer access_key: type: string secret_key: type: string browser: type: boolean storage_path: type: string certificate: type: integer nullable: true additionalProperties: false title: s3_update default: {} service_update_1: type: object properties: enable: type: boolean additionalProperties: false title: service-update default: {} service_reload_0: title: service type: string service_reload_1: type: object properties: onetime: type: boolean wait: type: boolean nullable: true sync: type: boolean nullable: true additionalProperties: false title: service-control default: {} service_reload: type: object properties: service: $ref: "#/components/schemas/service_reload_0" service-control: $ref: "#/components/schemas/service_reload_1" service_restart_0: title: service type: string service_restart_1: type: object properties: onetime: type: boolean wait: type: boolean nullable: true sync: type: boolean nullable: true additionalProperties: false title: service-control default: {} service_restart: type: object properties: service: $ref: "#/components/schemas/service_restart_0" service-control: $ref: "#/components/schemas/service_restart_1" service_start_0: title: service type: string service_start_1: type: object properties: onetime: type: boolean wait: type: boolean nullable: true sync: type: boolean nullable: true additionalProperties: false title: service-control default: {} service_start: type: object properties: service: $ref: "#/components/schemas/service_start_0" service-control: $ref: "#/components/schemas/service_start_1" service_stop_0: title: service type: string service_stop_1: type: object properties: onetime: type: boolean wait: type: boolean nullable: true sync: type: boolean nullable: true additionalProperties: false title: service-control default: {} service_stop: type: object properties: service: $ref: "#/components/schemas/service_stop_0" service-control: $ref: "#/components/schemas/service_stop_1" service_terminate_process_0: type: integer title: pid service_terminate_process_1: type: integer title: timeout default: 10 service_terminate_process: type: object properties: pid: $ref: "#/components/schemas/service_terminate_process_0" timeout: $ref: "#/components/schemas/service_terminate_process_1" smart_test_create_0: type: object properties: schedule: type: object properties: hour: type: string dom: type: string month: type: string dow: type: string additionalProperties: false desc: type: string all_disks: type: boolean disks: type: array items: type: string type: type: string enum: - LONG - SHORT - CONVEYANCE - OFFLINE additionalProperties: false title: smart_task_create default: {} smart_test_update_1: type: object properties: schedule: type: object properties: hour: type: string dom: type: string month: type: string dow: type: string additionalProperties: false desc: type: string all_disks: type: boolean disks: type: array items: type: string type: type: string enum: - LONG - SHORT - CONVEYANCE - OFFLINE additionalProperties: false title: smart_task_create default: {} smart_update_0: type: object properties: interval: type: integer powermode: type: string enum: - NEVER - SLEEP - STANDBY - IDLE difference: type: integer informational: type: integer critical: type: integer additionalProperties: false title: smart_update default: {} smb_update_0: type: object properties: netbiosname: type: string netbiosname_b: type: string netbiosalias: type: array items: type: string workgroup: type: string description: type: string enable_smb1: type: boolean unixcharset: type: string loglevel: type: string enum: - NONE - MINIMUM - NORMAL - FULL - DEBUG syslog: type: boolean localmaster: type: boolean guest: type: string admin_group: type: string nullable: true filemask: type: string dirmask: type: string zeroconf: type: boolean ntlmv1_auth: type: boolean bindip: type: array items: type: string smb_options: type: string additionalProperties: false title: smb_update default: {} smb_sharesec_create_0: type: object properties: share_name: type: string share_acl: type: array items: type: object additionalProperties: false title: smbsharesec_create default: {} smb_sharesec_update_1: type: object properties: share_acl: type: array items: type: object additionalProperties: false title: smbsharesec_update default: {} smb_sharesec_getacl_0: title: share_name type: string smb_sharesec_getacl_1: type: object properties: resolve_sids: type: boolean additionalProperties: false title: options default: {} smb_sharesec_getacl: type: object properties: share_name: $ref: "#/components/schemas/smb_sharesec_getacl_0" options: $ref: "#/components/schemas/smb_sharesec_getacl_1" sharing_smb_create_0: type: object properties: path: type: string home: type: boolean name: type: string comment: type: string ro: type: boolean browsable: type: boolean timemachine: type: boolean recyclebin: type: boolean showhiddenfiles: type: boolean guestok: type: boolean guestonly: type: boolean abe: type: boolean hostsallow: type: array items: {} hostsdeny: type: array items: {} vfsobjects: type: array items: {} shadowcopy: type: boolean auxsmbconf: type: string enabled: type: boolean additionalProperties: false title: sharingsmb_create default: {} sharing_smb_update_1: type: object properties: path: type: string home: type: boolean name: type: string comment: type: string ro: type: boolean browsable: type: boolean timemachine: type: boolean recyclebin: type: boolean showhiddenfiles: type: boolean guestok: type: boolean guestonly: type: boolean abe: type: boolean hostsallow: type: array items: {} hostsdeny: type: array items: {} vfsobjects: type: array items: {} shadowcopy: type: boolean auxsmbconf: type: string enabled: type: boolean additionalProperties: false title: sharingsmb_create default: {} pool_snapshottask_create_0: type: object properties: dataset: type: string recursive: type: boolean exclude: type: array items: type: string lifetime_value: type: integer lifetime_unit: type: string enum: - HOUR - DAY - WEEK - MONTH - YEAR naming_schema: type: string schedule: type: object properties: minute: type: string hour: type: string dom: type: string month: type: string dow: type: string begin: type: string end: type: string additionalProperties: false allow_empty: type: boolean enabled: type: boolean additionalProperties: false title: periodic_snapshot_create default: {} pool_snapshottask_update_1: type: object properties: dataset: type: string recursive: type: boolean exclude: type: array items: type: string lifetime_value: type: integer lifetime_unit: type: string enum: - HOUR - DAY - WEEK - MONTH - YEAR naming_schema: type: string schedule: type: object properties: minute: type: string hour: type: string dom: type: string month: type: string dow: type: string begin: type: string end: type: string additionalProperties: false allow_empty: type: boolean enabled: type: boolean additionalProperties: false title: periodic_snapshot_create default: {} pool_snapshottask_run: type: object properties: {} snmp_update_0: type: object properties: location: type: string contact: type: string traps: type: boolean v3: type: boolean community: type: string v3_username: type: string v3_authtype: type: string enum: - "" - MD5 - SHA v3_password: type: string v3_privproto: type: string enum: - null - AES - DES nullable: true v3_privpassphrase: type: string loglevel: type: integer options: type: string zilstat: type: boolean additionalProperties: false title: snmp_update default: {} ssh_update_0: type: object properties: bindiface: type: array items: type: string tcpport: type: integer rootlogin: type: boolean passwordauth: type: boolean kerberosauth: type: boolean tcpfwd: type: boolean compression: type: boolean sftp_log_level: type: string enum: - "" - QUIET - FATAL - ERROR - INFO - VERBOSE - DEBUG - DEBUG2 - DEBUG3 sftp_log_facility: type: string enum: - "" - DAEMON - USER - AUTH - LOCAL0 - LOCAL1 - LOCAL2 - LOCAL3 - LOCAL4 - LOCAL5 - LOCAL6 - LOCAL7 options: type: string additionalProperties: false title: ssh_update default: {} stats_get_data_0: type: array title: stats_list items: type: object stats_get_data_1: type: object properties: step: type: integer start: type: string end: type: string additionalProperties: false title: stats-filter default: {} stats_get_data: type: object properties: stats_list: $ref: "#/components/schemas/stats_get_data_0" stats-filter: $ref: "#/components/schemas/stats_get_data_1" stats_get_dataset_info_0: title: source type: string stats_get_dataset_info_1: title: type type: string stats_get_dataset_info: type: object properties: source: $ref: "#/components/schemas/stats_get_dataset_info_0" type: $ref: "#/components/schemas/stats_get_dataset_info_1" support_update_0: type: object properties: enabled: type: boolean nullable: true name: type: string title: type: string email: type: string phone: type: string secondary_name: type: string secondary_title: type: string secondary_email: type: string secondary_phone: type: string additionalProperties: false title: support_update default: {} support_fetch_categories_0: title: username type: string support_fetch_categories_1: title: password type: string support_fetch_categories: type: object properties: username: $ref: "#/components/schemas/support_fetch_categories_0" password: $ref: "#/components/schemas/support_fetch_categories_1" support_new_ticket_0: type: object properties: title: type: string body: type: string category: type: string attach_debug: type: boolean username: type: string password: type: string type: type: string enum: - BUG - FEATURE criticality: type: string environment: type: string phone: type: string name: type: string email: type: string additionalProperties: false title: new_ticket default: {} systemdataset_update_0: type: object properties: pool: type: string nullable: true pool_exclude: type: string nullable: true syslog: type: boolean additionalProperties: false title: sysdataset_update default: {} system_advanced_update_0: type: object properties: advancedmode: type: boolean autotune: type: boolean legacy_ui: type: boolean boot_scrub: type: integer consolemenu: type: boolean consolemsg: type: boolean debugkernel: type: boolean fqdn_syslog: type: boolean motd: type: string powerdaemon: type: boolean serialconsole: type: boolean serialport: type: string serialspeed: type: string enum: - "9600" - "19200" - "38400" - "57600" - "115200" swapondrive: type: integer traceback: type: boolean uploadcrash: type: boolean anonstats: type: boolean sed_user: type: string enum: - USER - MASTER sed_passwd: type: string additionalProperties: false title: system_advanced_update default: {} system_general_update_0: type: object properties: ui_certificate: type: integer nullable: true ui_httpsport: type: integer ui_httpsredirect: type: boolean ui_port: type: integer ui_address: type: array items: type: string ui_v6address: type: array items: type: string kbdmap: type: string language: type: string sysloglevel: type: string enum: - F_EMERG - F_ALERT - F_CRIT - F_ERR - F_WARNING - F_NOTICE - F_INFO - F_DEBUG - F_IS_DEBUG syslogserver: type: string timezone: type: string crash_reporting: type: boolean nullable: true usage_collection: type: boolean nullable: true additionalProperties: false title: general_settings default: {} system_feature_enabled_0: title: feature type: string enum: - DEDUP - FIBRECHANNEL - JAILS - VM system_license_update_0: title: license type: string system_reboot_0: type: object properties: delay: type: integer additionalProperties: false title: system-reboot default: {} system_shutdown_0: type: object properties: delay: type: integer additionalProperties: false title: system-shutdown default: {} tftp_update_0: type: object properties: newfiles: type: boolean directory: type: string host: type: string port: type: integer options: type: string umask: type: string username: type: string additionalProperties: false title: tftp_update default: {} tunable_create_0: type: object properties: var: type: string value: type: string type: type: string enum: - LOADER - RC - SYSCTL comment: type: string enabled: type: boolean additionalProperties: false title: tunable_create default: {} tunable_update_1: type: object properties: var: type: string value: type: string type: type: string enum: - LOADER - RC - SYSCTL comment: type: string enabled: type: boolean additionalProperties: false title: tunable_create default: {} update_check_available_0: type: object properties: train: type: string additionalProperties: false title: update-check-available default: {} update_get_pending_0: title: path default: null type: string nullable: true update_manual_0: title: path type: string update_set_train_0: title: train type: string update_update_0: type: object properties: train: type: string reboot: type: boolean additionalProperties: false title: update default: {} ups_update_0: type: object properties: emailnotify: type: boolean powerdown: type: boolean rmonitor: type: boolean nocommwarntime: type: integer nullable: true remoteport: type: integer shutdowntimer: type: integer hostsync: type: integer description: type: string driver: type: string extrausers: type: string identifier: type: string mode: type: string enum: - MASTER - SLAVE monpwd: type: string monuser: type: string options: type: string optionsupsd: type: string port: type: string remotehost: type: string shutdown: type: string enum: - LOWBATT - BATT shutdowncmd: type: string nullable: true subject: type: string toemail: type: array items: type: string additionalProperties: false title: ups_update default: {} vm_device_create_0: type: object properties: dtype: type: string enum: - NIC - DISK - CDROM - VNC - RAW vm: type: integer attributes: type: object properties: {} additionalProperties: true order: type: integer nullable: true additionalProperties: false title: vmdevice_create default: {} vm_device_delete_1: type: object properties: zvol: type: boolean raw_file: type: boolean additionalProperties: false title: vm_device_delete default: {} vm_device_update_1: type: object properties: dtype: type: string enum: - NIC - DISK - CDROM - VNC - RAW vm: type: integer attributes: type: object properties: {} additionalProperties: true order: type: integer nullable: true additionalProperties: false title: vmdevice_create default: {} vm_create_0: type: object properties: name: type: string description: type: string vcpus: type: integer memory: type: integer bootloader: type: string enum: - UEFI - UEFI_CSM - GRUB grubconfig: type: string nullable: true devices: type: array items: type: object autostart: type: boolean time: type: string enum: - LOCAL - UTC additionalProperties: false title: vm_create default: {} vm_update_1: type: object properties: name: type: string description: type: string vcpus: type: integer memory: type: integer bootloader: type: string enum: - UEFI - UEFI_CSM - GRUB grubconfig: type: string nullable: true devices: type: array items: type: object autostart: type: boolean time: type: string enum: - LOCAL - UTC additionalProperties: false title: vm_create default: {} vm_clone_1: title: name default: null type: string nullable: true vm_get_attached_iface_0: type: integer title: id vm_get_available_memory_0: type: boolean title: overcommit default: false vm_get_console_0: type: integer title: id vm_get_vnc_0: type: integer title: id vm_restart: type: object properties: {} vm_start_1: type: object properties: overcommit: type: boolean additionalProperties: false title: options default: {} vm_status: type: object properties: {} vm_stop_1: type: boolean title: force default: false vmware_create_0: type: object properties: datastore: type: string filesystem: type: string hostname: type: string password: type: string username: type: string additionalProperties: false title: vmware_create default: {} vmware_update_1: type: object properties: datastore: type: string filesystem: type: string hostname: type: string password: type: string username: type: string additionalProperties: false title: vmware_create default: {} vmware_dataset_has_vms_0: title: dataset type: string vmware_dataset_has_vms_1: type: boolean title: recursive vmware_dataset_has_vms: type: object properties: dataset: $ref: "#/components/schemas/vmware_dataset_has_vms_0" recursive: $ref: "#/components/schemas/vmware_dataset_has_vms_1" vmware_get_datastores_0: type: object properties: hostname: type: string username: type: string password: type: string additionalProperties: false title: vmware-creds default: {} vmware_get_virtual_machines_0: type: integer title: pk vmware_match_datastores_with_datasets_0: type: object properties: hostname: type: string username: type: string password: type: string additionalProperties: false title: vmware-creds default: {} webdav_update_0: type: object properties: protocol: type: string enum: - HTTP - HTTPS - HTTPHTTPS tcpport: type: integer tcpportssl: type: integer password: type: string htauth: type: string enum: - NONE - BASIC - DIGEST certssl: type: integer nullable: true additionalProperties: false title: webdav_update default: {} sharing_webdav_create_0: type: object properties: perm: type: boolean ro: type: boolean comment: type: string name: type: string path: type: string additionalProperties: false title: webdav_share_create default: {} sharing_webdav_update_1: type: object properties: perm: type: boolean ro: type: boolean comment: type: string name: type: string path: type: string additionalProperties: false title: webdav_share_create default: {} zfs_snapshot_create_0: type: object properties: dataset: type: string name: type: string naming_schema: type: string recursive: type: boolean vmware_sync: type: boolean properties: type: object properties: {} additionalProperties: true additionalProperties: false title: snapshot_create default: {} zfs_snapshot_delete_1: type: object properties: defer: type: boolean additionalProperties: false title: options default: {} zfs_snapshot_clone_0: type: object properties: snapshot: type: string dataset_dst: type: string additionalProperties: false title: snapshot_clone default: {} zfs_snapshot_remove_0: type: object properties: dataset: type: string name: type: string defer_delete: type: boolean additionalProperties: false title: snapshot_remove default: {} zfs_snapshot_rollback_0: title: id type: string zfs_snapshot_rollback_1: type: object properties: recursive: type: boolean recursive_clones: type: boolean force: type: boolean additionalProperties: false title: options default: {} zfs_snapshot_rollback: type: object properties: id: $ref: "#/components/schemas/zfs_snapshot_rollback_0" options: $ref: "#/components/schemas/zfs_snapshot_rollback_1" responses: NotFound: description: Endpoint not found Unauthorized: description: No authorization for this endpoint Success: description: Operation succeeded # securitySchemes: # basic: # type: http # scheme: basic security: - basic: []