From efbe7b6490fa06aadbe6b7fcecc95db07de869ea Mon Sep 17 00:00:00 2001 From: JR Andreassen Date: Tue, 31 Mar 2020 08:21:49 -0500 Subject: [PATCH 1/3] The bearer token is optional... Fix for failure on : securitySchemes: basic: type: http scheme: basic --- src/v3_0/schema.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/v3_0/schema.rs b/src/v3_0/schema.rs index 52e2e88..87f1b3e 100644 --- a/src/v3_0/schema.rs +++ b/src/v3_0/schema.rs @@ -884,7 +884,7 @@ pub enum SecurityScheme { Http { scheme: String, #[serde(rename = "bearerFormat")] - bearer_format: String, + bearer_format: Option, }, #[serde(rename = "oauth2")] OAuth2 { flows: Flows }, From 007017f6ce746f069d081ed674bceaeafe971807 Mon Sep 17 00:00:00 2001 From: JR Andreassen Date: Tue, 31 Mar 2020 08:25:19 -0500 Subject: [PATCH 2/3] Samples for basic auth Both files passes "https://github.com/p1c2u/openapi-spec-validator/" --- data/v3.0/FreeNAS_openapi.yaml | 20940 +++++++++++++++++++++++++++++++ data/v3.0/PRTG_openapi.yaml | 112 + 2 files changed, 21052 insertions(+) create mode 100644 data/v3.0/FreeNAS_openapi.yaml create mode 100644 data/v3.0/PRTG_openapi.yaml diff --git a/data/v3.0/FreeNAS_openapi.yaml b/data/v3.0/FreeNAS_openapi.yaml new file mode 100644 index 0000000..8a3b959 --- /dev/null +++ b/data/v3.0/FreeNAS_openapi.yaml @@ -0,0 +1,20940 @@ +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: [] diff --git a/data/v3.0/PRTG_openapi.yaml b/data/v3.0/PRTG_openapi.yaml new file mode 100644 index 0000000..b05b288 --- /dev/null +++ b/data/v3.0/PRTG_openapi.yaml @@ -0,0 +1,112 @@ +#java -jar openapi-generator-cli.jar generate -g rust --library reqwest -t library/rust -i test/PRTG/PRTG_api.yaml -o test/PRTG +openapi: 3.0.0 +info: + title: PRTG RESTful API + description: 'PRTG RESTful API, first stab [Paessler Docs](https://www.paessler.com/manuals/prtg/application_programming_interface_api_definition)' + version: v1.0 +paths: + '/api/status.json': + get: + summary: Returns PRTG Server Status + tags: + - prtg + parameters: + - name: username + in: query + required: true + schema: + type: string + title: username + nullable: false + - name: passhash + in: query + required: true + schema: + type: string + title: passhash + nullable: false + responses: + '200': + description: This is a comment + content: + application/json: + schema: + $ref: '#/components/schemas/prtg_status' + '401': + $ref: '#/components/responses/Unauthorized' +servers: + - url: 'http://127.0.0.1' +components: + schemas: + prtg_status: + title: status + type: object + properties: + Version: + title: '' + type: string + nullable: false + MaintExpiryDays: + type: string + nullable: false + MaxSensorCount: + type: string + nullable: true + TotalSens: + type: integer + nullable: true + Alarms: + type: string + nullable: true + UnknownSens: + type: string + nullable: true + WarnSens: + type: string + nullable: true + UnusualSens: + type: string + nullable: true + Warnings: + items: + $ref: '#/components/schemas/prtg_status_warnings' + type: array + additionalProperties: {} + prtg_status_warnings: + title: warnings + type: array + properties: + id: + type: string + nullable: false + type: + type: string + nullable: true + title: + type: string + nullable: true + message: + type: string + nullable: true + time: + type: integer + nullable: true + additionalProperties: {} + responses: + NotFound: + description: Endpoint not found + Found: + description: The API call was completed successfully and a new object was created (the redirection URL contains the new object id). + BadRequest: + description: The API call could not be completed successfully. The XML response contains the error message. + Unauthorized: + description: No authorization for this endpoint + Success: + description: 'The API call was completed successfully, the XML response contains the result data.' + securitySchemes: + basic: + type: http + scheme: basic + in: header +security: + - basic: [] From a4d1a5ef0d95074f441fe61824c7e8856bd75f43 Mon Sep 17 00:00:00 2001 From: JR Andreassen Date: Tue, 31 Mar 2020 08:40:44 -0500 Subject: [PATCH 3/3] Tests for securityScheme basic The test for "FreeNAS" (can_deserialize_freenas) fails, so it is commented out... --- src/lib.rs | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/src/lib.rs b/src/lib.rs index 1c9aec6..a2d51c7 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -246,4 +246,34 @@ mod tests { } } } +/* #[test] + fn can_deserialize_freenas() { + // tests::can_deserialize_freenas' panicked at 'called `Result::unwrap()` on an `Err` value: Yaml(Message("data did not match any variant of untagged enum OpenApi", None))', src\lib.rs:252:23 + let openapi = from_path("data/v3.0/FreeNAS_openapi.yaml").unwrap(); + if let OpenApi::V3_0(spec) = openapi { + let components = spec.components.unwrap(); + let schemas = components.schemas.unwrap(); + let obj_or_ref = schemas.get("zfs_snapshot_rollback"); + + if obj_or_ref.is_none() { + panic!("object should have been an object"); + } + } + } +*/ + #[test] + fn can_deserialize_prtg() { + // tests::can_deserialize_freenas' panicked at 'called `Result::unwrap()` on an `Err` value: Yaml(Message("data did not match any variant of untagged enum OpenApi", None))', src\lib.rs:252:23 + let openapi = from_path("data/v3.0/PRTG_openapi.yaml").unwrap(); + if let OpenApi::V3_0(spec) = openapi { + let components = spec.components.unwrap(); + let schemas = components.schemas.unwrap(); + let obj_or_ref = schemas.get("prtg_status_warnings"); + + if obj_or_ref.is_none() { + panic!("object should have been an object"); + } + } + } + }