Onedata API Reference

REST API references for Onezone, Oneprovider, and Onepanel.

Configure zone deployment

POST /zone/configuration

Configures and starts zone services, such as database, cluster manager and cluster worker. This request can be executed by unauthorized users as long as there are no admin users in the system.

Request body

application/json application/x-yaml

The zone configuration description.

PropertyType & Description
cluster
object (ZoneClusterConfiguration)

The zone cluster configuration.

domainName
string

Hostname suffix common for all services in the cluster. Together with a node hostname constitutes a fully qualified domain name (FQDN) of the node. May be skipped to allow unrelated hostnames for each node.

nodes required
object

The collection of nodes aliases associated with nodes properties.

databases required
object (ClusterDatabases)

The cluster database service configuration.

nodes required
array of strings

The list of aliases of cluster database nodes.

serverQuota
integer

The server quota is the RAM memory in bytes that is allocated to the server when Couchbase Server is first installed. This sets the limit of RAM allocated by Couchbase for caching data for all buckets and is configured on a per-node basis.

bucketQuota
integer

The bucket quota is the amount of RAM memory in bytes allocated to an individual bucket for caching data.

managers required
object (ClusterManagers)

The cluster manager service configuration.

mainNode required
string

The alias of the main cluster manager node.

nodes required
array of strings

The list of aliases of cluster manager nodes.

workers required
object (ClusterWorkers)

The cluster worker service configuration.

nodes required
array of strings

The list of aliases of cluster worker nodes.

onezone
object

The Onezone custom configuration.

domainName required
string

The domain of Onezone cluster.

name required
string

The Onezone cluster name.

letsEncryptEnabled
boolean

If enabled the zone will use Let's Encrypt service to obtain SSL certificates. Otherwise certificates must be manually provided. By enabling this option you agree to the Let's Encrypt Subscriber Agreement.

builtInDnsServer
boolean

If true, DNS check will verify that control of DNS zone for Onezone's domain was delegated to the DNS server built into Onezone service.

policies
object (ZonePolicies)

State of Onezone operation policies.

oneproviderRegistration
string

Indicates policy enforced during provider registration. Possible options are: open - anyone can acquire a registration token and register a new Oneprovider restricted - requires an administrative privilege 'oz_providers_invite' to generate a Oneprovider registration token. The token can be issued for someone else.

Enum:
openrestricted
subdomainDelegation
boolean

If true, Oneproviders are allowed to request subdomains of the Onezone domain for use as their domains.

guiPackageVerification
boolean

When this value is true, GUI packages uploaded by services operating under Onezone or by harvester admins are checked against known SHA-256 checksums using the compatibility registry. Setting this value to false disables the verification. WARNING: disabling GUI package verification poses a severe security threat, allowing Oneprovider owners to upload arbitrary GUI to Onezone (which is then hosted in Onezone's domain).

harvesterGuiPackageVerification
boolean

This policy can be used to disable GUI package verification for harvester plugins only. See "guiPackageVerification" for detailed description. This setting has no effect if "guiPackageVerification" is set to false.

users
array of objects (OnezoneUserCreateRequest)

List of Onezone user specifications.

username required
string
password required
string
groups
array of strings

Ids of Onezone groups to which the user should be added. The groups must already exist.

onepanel
object (PanelConfiguration)

The panel configuration.

interactiveDeployment
boolean

Indicates that interactive deployment is being performed. If false, users entering GUI will not be asked to complete the configuration. In that case default values will be used, available for change later via appropriate Onepanel GUI pages or REST.

guiDebugMode
boolean

When true, all GUIs hosted in this cluster will print debug logs to browser console.

Request Examples

application/json
{
  "cluster": {
    "domainName": "onezone.onedata.example.com",
    "nodes": {
      "node1": {
        "hostname": "node1"
      }
    },
    "manager": {
      "mainNode": "node1",
      "nodes": [
        "node1"
      ]
    },
    "worker": {
      "nodes": [
        "node1"
      ]
    },
    "database": {
      "nodes": [
        "node1"
      ]
    }
  },
  "onezone": {
    "domainName": "example.com",
    "name": "example",
    "letsEncryptEnabled": true,
    "users": [
      {
        "username": "ozadmin",
        "password": "somepassword",
        "groups": [
          "admins"
        ]
      }
    ]
  }
}

Responses

application/json
202
No description.
400

Invalid request - cluster already deployed.

PropertyType & Description
error
object

Object describing an error.

id required
string

String identifying the error type. Does not change between error instances.

description required
string

Human readable error description. May contain information specific to given error instance.

details
object

Details about the error instance. The object schema is specific to each error type.

Example

application/json
{
  "error": {
    "id": "badValueString",
    "details": {
      "key": "name"
    },
    "description": "Bad value: provided \"name\" must be a string."
  }
}
403

Forbidden request.

500

Internal server error.

PropertyType & Description
error
object

Object describing an error.

id required
string

String identifying the error type. Does not change between error instances.

description required
string

Human readable error description. May contain information specific to given error instance.

details
object

Details about the error instance. The object schema is specific to each error type.

Example

application/json
{
  "error": {
    "id": "badValueString",
    "details": {
      "key": "name"
    },
    "description": "Bad value: provided \"name\" must be a string."
  }
}