API

API

  • Imply
  • Ingest
  • Query
  • Visualize
  • Administer
  • Deploy

›Available resources

Cloud Manager API

  • Manager API overview
  • Manager API tutorial
  • Manager API reference
  • Available resources

    • Clusters API
    • ClustersHistorical API
    • ClustersServers API

    Object definitions

    • Cluster
    • ClusterSpec
    • ClusterStatus
    • CustomFile
    • DataConfiguration
    • DataTier
    • DeepStorage
    • Event
    • LoadBalancer
    • MasterConfiguration
    • MetadataStore
    • NameValue
    • ObjectMeta
    • PivotAccess
    • QueryConfiguration
    • Server
    • UpdateState

Clusters API

Use the Clusters API to create and manage your existing Imply clusters. To modify an existing cluster, you can overwrite or update its configuration. When overwriting a cluster, provide a complete cluster configuration for which to replace your cluster. When updating a cluster, you can specify a partial configuration, such as to update a single property or subset of properties.

With the Clusters API you can accomplish the following:

  • Create a cluster
  • Delete a cluster
  • Get a cluster
  • List clusters
  • Overwrite cluster configuration
  • Update a cluster

All URIs are relative to https://{vanity_domain}.implycloud.com/api/v1

Create a cluster

URL

POST /clusters

Parameters

Query parameters

  • pretty   type: Boolean
    Pretty print the results. (default: false)

  • dryRun   type: Boolean
    Dry run option. Can be used to validate the Cluster configuration. (default: false)

Request body

  • Cluster   type: Cluster   required
    Configuration of the cluster to be created.

Responses

A successful request returns an HTTP 2XX status code and a JSON response body of type Cluster.

200 SUCCESS
202 SUCCESS
400 ERROR
401 ERROR


Dry run validated.



Request accepted.



Invalid request payload.

Example body:

{
"error" : {
"code" : "BadArgument",
"message" : "Request contains invalid arguments",
"details" : [
{
"code" : "NullValue",
"target" : "metadata.name",
"message" : "Cluster name must not be null"
},
{
"code" : "MalformedValue",
"target" : "spec.deepStorage.path",
"message" : "Path is not a valid s3 path"
}
]
}
}


Unauthorized.

Example body:

{
"error" : {
"code" : "Unauthorized",
"message" : "Provided user does not have permissions to complete this request"
}
}

Sample request

curl --location --request POST 'https://{vanity_domain}.implycloud.com/api/v1/clusters?pretty=true&dryRun=true' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer <Bearer Token>' \
--data-raw '<Cluster configuration>'

Sample response

Toggle to show sample response

{
  "metadata" : {
    "name" : "My First Cluster"
    "uid" : "ffd5ea0f-5018-4649-97ee-1ddb0f8a2c53",
  },
  "spec" : {
    "version" : "version",
    "desiredState" : "STARTED",
    "awsInstanceRole" : "aws-instance-role",
    "awsKeyPair" : "aws-key-pair",
    "awsTags" : [ 
      {
        "name" : "tag-1",
        "value" : "tag-1-value"
      }, 
      {
        "name" : "tag-2",
        "value" : "tag-2-value"
      }
    ],
    "encryptVolumes" : true,
    "commonRuntimeProperties": [
      {
        "name": "common.druid.prop",
        "value": "value1"
      }
    ],
    "master": {
      "replicas": 3,
      "instanceType": "t2.small",
      "coordinatorRuntimeProperties": [
        {
          "name": "coordinator.druid.prop",
          "value": "value1"
        }
      ],
      "overlordRuntimeProperties": [
        {
          "name": "master.druid.property",
          "value": "value"
        }
      ]
    },
    "query": {
      "replicas": 2,
      "instanceType": "t2.small",
      "brokerRuntimeProperties": [
        {
          "name": "broker.druid.property",
          "value": "value"
        }
      ],
      "routerRuntimeProperties": [
        {
          "name": "router.druid.property",
          "value": "value"
        }
      ],
      "pivotConfiguration": "serverRoot: test\nuserMode: native"
    },
    "data": {
      "historicalRuntimeProperties": [
        {
          "name": "historical.druid.property",
          "value": "value"
        }
      ],
      "middleManagerRuntimeProperties": [
        {
          "name": "mm.druid.property",
          "value": "value"
        }
      ],
      "tier1": {
        "replicas": 2,
        "instanceType": "t2.small",
        "historicalRuntimeProperties": [
          {
            "name": "historical.druid.property",
            "value": "value"
          }
        ],
        "middleManagerRuntimeProperties": [
          {
            "name": "mm.druid.property",
            "value": "value"
          }
        ]
      },
      "tier2": {
        "replicas": 2,
        "instanceType": "t2.small",
        "historicalRuntimeProperties": [
          {
            "name": "historical.druid.property",
            "value": "value"
          }
        ],
        "middleManagerRuntimeProperties": [
          {
            "name": "mm.druid.property",
            "value": "value"
          }
        ]
      },
      "tier3": {
        "replicas": 2,
        "instanceType": "t2.small",
        "historicalRuntimeProperties": [
          {
            "name": "historical.druid.property",
            "value": "value"
          }
        ],
        "middleManagerRuntimeProperties": [
          {
            "name": "mm.druid.property",
            "value": "value"
          }
        ]
      }
    },
    "metadataStore": {
      "instanceType": "db.t2.small",
      "diskSize": 20,
      "backupRetention": 14,
      "monitoring": true,
      "encrypt": true
    },
    "pivot": {
      "accessMode": "PROXIED"
    },
    "deepStorage": {
      "path": "s3://my-bucket/my-prefix",
      "encrypt": true
    },
    "druidExtensions" : [ 
      "druid-extension-1",
      "druid-extension-2"
    ],
    "featureFlags" : [ 
      "featureFlag1",
      "featureFlag2"
    ],
    "customFiles" : [ 
      {
        "path" : "s3://my-bucket/my-file-1",
        "unpack" : false,
        "type" : "USER",
        "executable" : false
      },
      {
        "path" : "https://my-domain.com/my-file-2",
        "unpack" : false,
        "type" : "USER",
        "executable" : false
      }
    ],
  }
}

Delete a cluster

URL

DELETE /clusters/{clusterId}

Parameters

Path parameters

  • clusterId   type: String   required
    The cluster ID

Responses

200 SUCCESS
202 SUCCESS
401 ERROR
404 ERROR


Cluster immediately deleted.



Request accepted.



Unauthorized.

Example body:

{
"error" : {
"code" : "Unauthorized",
"message" : "Provided user does not have permissions to complete this request"
}
}


Not found.

Example body:

{
"error" : {
"code" : "NotFound",
"message" : "Cluster [e9e1e18f-a9e8-4dd7-8a18-768039c57f22] was not found"
}
}

Sample request

curl --location --request DELETE 'https://{vanity_domain}.implycloud.com/api/v1/clusters/<clusterId>' \
--header 'Authorization: Bearer <Bearer Token>'

Get a cluster

URL

GET /clusters/{clusterId}

Parameters

Path parameters

  • clusterId   type: String   required
    The cluster ID

Query parameters

  • pretty   type: Boolean
    Pretty print the results. (default: false)

Responses

A successful request returns an HTTP 2XX status code and a JSON response body of type Cluster.

200 SUCCESS
401 ERROR
404 ERROR


Successfully retrieved cluster configuration.



Unauthorized.

Example body:

{
"error" : {
"code" : "Unauthorized",
"message" : "Provided user does not have permissions to complete this request"
}
}


Not found.

Example body:

{
"error" : {
"code" : "NotFound",
"message" : "Cluster [e9e1e18f-a9e8-4dd7-8a18-768039c57f22] was not found"
}
}

Sample request

curl --location --request GET 'https://{vanity_domain}.implycloud.com/api/v1/clusters/<clusterId>?pretty=true' \
--header 'Authorization: Bearer <Bearer Token>'

Sample response

Toggle to show sample response

{
  "metadata" : {
    "name" : "My First Cluster"
    "uid" : "ffd5ea0f-5018-4649-97ee-1ddb0f8a2c53",
  },
  "spec" : {
    "version" : "version",
    "desiredState" : "STARTED",
    "awsInstanceRole" : "aws-instance-role",
    "awsKeyPair" : "aws-key-pair",
    "awsTags" : [ 
      {
        "name" : "tag-1",
        "value" : "tag-1-value"
      }, 
      {
        "name" : "tag-2",
        "value" : "tag-2-value"
      }
    ],
    "encryptVolumes" : true,
    "commonRuntimeProperties": [
      {
        "name": "common.druid.prop",
        "value": "value1"
      }
    ],
    "master": {
      "replicas": 3,
      "instanceType": "t2.small",
      "coordinatorRuntimeProperties": [
        {
          "name": "coordinator.druid.prop",
          "value": "value1"
        }
      ],
      "overlordRuntimeProperties": [
        {
          "name": "master.druid.property",
          "value": "value"
        }
      ]
    },
    "query": {
      "replicas": 2,
      "instanceType": "t2.small",
      "brokerRuntimeProperties": [
        {
          "name": "broker.druid.property",
          "value": "value"
        }
      ],
      "routerRuntimeProperties": [
        {
          "name": "router.druid.property",
          "value": "value"
        }
      ],
      "pivotConfiguration": "serverRoot: test\nuserMode: native"
    },
    "data": {
      "historicalRuntimeProperties": [
        {
          "name": "historical.druid.property",
          "value": "value"
        }
      ],
      "middleManagerRuntimeProperties": [
        {
          "name": "mm.druid.property",
          "value": "value"
        }
      ],
      "tier1": {
        "replicas": 2,
        "instanceType": "t2.small",
        "historicalRuntimeProperties": [
          {
            "name": "historical.druid.property",
            "value": "value"
          }
        ],
        "middleManagerRuntimeProperties": [
          {
            "name": "mm.druid.property",
            "value": "value"
          }
        ]
      },
      "tier2": {
        "replicas": 2,
        "instanceType": "t2.small",
        "historicalRuntimeProperties": [
          {
            "name": "historical.druid.property",
            "value": "value"
          }
        ],
        "middleManagerRuntimeProperties": [
          {
            "name": "mm.druid.property",
            "value": "value"
          }
        ]
      },
      "tier3": {
        "replicas": 2,
        "instanceType": "t2.small",
        "historicalRuntimeProperties": [
          {
            "name": "historical.druid.property",
            "value": "value"
          }
        ],
        "middleManagerRuntimeProperties": [
          {
            "name": "mm.druid.property",
            "value": "value"
          }
        ]
      }
    },
    "metadataStore": {
      "instanceType": "db.t2.small",
      "diskSize": 20,
      "backupRetention": 14,
      "monitoring": true,
      "encrypt": true
    },
    "pivot": {
      "accessMode": "PROXIED"
    },
    "deepStorage": {
      "path": "s3://my-bucket/my-prefix",
      "encrypt": true
    },
    "druidExtensions" : [ 
      "druid-extension-1",
      "druid-extension-2"
    ],
    "featureFlags" : [ 
      "featureFlag1",
      "featureFlag2"
    ],
    "customFiles" : [ 
      {
        "path" : "s3://my-bucket/my-file-1",
        "unpack" : false,
        "type" : "USER",
        "executable" : false
      },
      {
        "path" : "https://my-domain.com/my-file-2",
        "unpack" : false,
        "type" : "USER",
        "executable" : false
      }
    ],
  },
  "status" : {
    "rootCertificate": "MIIEojCCAwqgAwIBAgIaANYP4s/dAk0GnFTVdfGdKrIwDQYJKoZIhvcNAQELBQAwYjEOMAwGA1UEAwwFSW1wbHkxCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRMwEQYDVQQHDApCdXJsaW5nYW1lMRkwFwYDVQQKDBBJbXBseSBEYXRhLCBJbmMuMB4XDTE4MDUxNTAyMzUyMloXDTM4MDUxMDAyMzUyMlowYjEOMAwGA1UEAwwFSW1wbHkxCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRMwEQYDVQQHDApCdXJsaW5nYW1lMRkwFwYDVQQKDBBJbXBseSBEYXRhLCBJbmMuMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAwatXpHgUc7BggYDkX4GbYLjYtlM3DIDLiViGbNkoyNXV8r8BELk6dTbtvAZgoGEZfukQwiUwsFNy01SlAs2KZU0LVTZMYi5vBE1aXT7LOiu7ab4bP59q6SuDzWlxvwI8Ld+RmNQL45cQto/ySAwCbWPQWdGvUruYzeCyZlK4G47hWO2oe3lzcejHolWE+33eJA4/gsb7NyjnDnt6XMta3l+PNXlMUriEdTQftPZHINEc5VqOh7oCOcbqyMQFPqqOKN2H3Y19hYD5oVVoq5cMqBPTyOPerVdCz5mZ+ykiO/8Bs9Zmbb4qw8/URNo1NpgT2QL1eCTN+gXSNYV7OgaEE+zUfsNta3abaYg2Ip4H8fLX7CB3D/IOL4yK6ZWHEnljcu5htQ5l28SEUS0EerFKo8lO18oH5wuzqRGQmfL+7siil3mrjPBWuij0gvxzmvEpRHY5IHjWdWZpN68eji9AaC2X+jYOZjpLD7hSVaexyBW4e/ZlpJAkh5ude+KfIVQnAgMBAAGjUzBRMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFBO8QPbkoJEpYeJmc6E+yLHp268SMB8GA1UdIwQYMBaAFBO8QPbkoJEpYeJmc6E+yLHp268SMA0GCSqGSIb3DQEBCwUAA4IBgQAoD5y/zM8y5kriaqkFAcVOSDyJM86rgyptrBGJ/mfNohosfgVypICTCeDdWdKiefClTavObWXld0LcAnLxLgqTC+v7ZvcbJesPmrZ7aBbmNl50mcfPwh5vUcBaBC1lkqP2zoTsdfmgwZ3sBwKci6ZnJRYPUcFs3ZdtKiCZeu4VNviTuPC15yO8dodHrPYHwNowMhQUizmV+ZmS73VeEMiMDs99L7oTdrTaTAw0o+IL3pPNrTHKbg5wMrVdxR1sD9x1IqNUT1Zr3nhN3t6dtvup2bVtNN4+AASHqQ2/aQNIg8PCpOrMkOIQCWVjfB3qEY8WivniuDADAgx/ZbxydyP1WWzHpwrCLGGlJdwXXIukGeyAscwQcUC4w8+1Az5y2Znic5iwaq6Z59CTZbw84kQeLEq+kHFjdmRuTIt4osYciKblCwIxbdB+v5UeG05sPAIl+pNx54P08KFAEn6MpsDezu2E9xDwxZUAUPLEOeaVtg20tk6Q392AhZHny09WfBM=",
    "loadBalancers": {
      "public": "imply-e9e-ElbExter-997NX4GKVIAC-1527164838.us-east-1.elb.amazonaws.com",
      "private": "internal-imply-e9e-ElbInter-9DL3TH4LM4L2-1689280652.us-east-1.elb.amazonaws.com"
    },
    "servers": [
      {
        "instanceId": "i-0d4d5fc90b724909d",
        "instanceType": "t2.small",
        "privateIp": "10.4.90.5",
        "publicIp": "52.55.78.238",
        "state": "running",
        "nodeType": "MASTER"
      },
      {
        "instanceId": "i-083f888d41eb9e459",
        "instanceType": "t2.small",
        "privateIp": "10.4.89.5",
        "publicIp": "3.84.244.217",
        "state": "running",
        "nodeType": "MASTER"
      },
      {
        "instanceId": "i-070858bde8ec1cbda",
        "instanceType": "t2.small",
        "privateIp": "10.4.88.5",
        "publicIp": "52.55.187.116",
        "state": "running",
        "nodeType": "MASTER"
      },
      {
        "instanceId": "i-064998bf636c8579f",
        "instanceType": "t2.small",
        "privateIp": "10.4.93.73",
        "publicIp": "54.91.113.190",
        "state": "running",
        "nodeType": "DATA_TIER_1"
      },
      {
        "instanceId": "i-0400b3b9275002ad3",
        "instanceType": "t2.small",
        "privateIp": "10.4.91.89",
        "publicIp": "54.92.199.116",
        "state": "running",
        "nodeType": "DATA_TIER_1"
      },
      {
        "instanceId": "i-064998bf636c8579f",
        "instanceType": "t2.small",
        "privateIp": "10.4.93.73",
        "publicIp": "54.91.113.190",
        "state": "running",
        "nodeType": "DATA_TIER_2"
      },
      {
        "instanceId": "i-0400b3b9275002ad3",
        "instanceType": "t2.small",
        "privateIp": "10.4.91.89",
        "publicIp": "54.92.199.116",
        "state": "running",
        "nodeType": "DATA_TIER_2"
      },
      {
        "instanceId": "i-064998bf636c8579f",
        "instanceType": "t2.small",
        "privateIp": "10.4.93.73",
        "publicIp": "54.91.113.190",
        "state": "running",
        "nodeType": "DATA_TIER_3"
      },
      {
        "instanceId": "i-0400b3b9275002ad3",
        "instanceType": "t2.small",
        "privateIp": "10.4.91.89",
        "publicIp": "54.92.199.116",
        "state": "running",
        "nodeType": "DATA_TIER_3"
      },
      {
        "instanceId": "i-0d2d3ee7087cefe10",
        "instanceType": "t2.small",
        "privateIp": "10.4.93.248",
        "publicIp": "52.207.212.193",
        "state": "running",
        "nodeType": "QUERY"
      },
      {
        "instanceId": "i-050456c625dc589e9",
        "instanceType": "t2.small",
        "privateIp": "10.4.92.72",
        "publicIp": "18.209.30.179",
        "state": "running",
        "nodeType": "QUERY"
      }
    ],
    "initialDruidPassword": "QKJ6bR/42zQU/31IZP8W3Q==",
    "status": "OK",
    "state": "RUNNING",
    "updateState": {
      "cancellable": false,
      "totalStages": 0,
      "currentStage": 0
    },
    "events": [
      {
        "level": "INFO",
        "message": "Cluster message",
        "source": "MANAGER",
        "timestamp": "2021-11-11T20:16:01.389Z"
      }
    ],
    "resourceVersion": 0
    }
  }
}

List clusters

URL

GET /clusters

Parameters

Query parameters

  • pretty   type: Boolean
    Pretty print the results. (default: false)

Responses

A successful request returns an HTTP 2XX status code and a JSON response body of type array[Cluster].

200 SUCCESS
401 ERROR


OK.



Unauthorized.

Example body:

{
"error" : {
"code" : "Unauthorized",
"message" : "Provided user does not have permissions to complete this request"
}
}

Sample request

curl --location --request GET 'https://{vanity_domain}.implycloud.com/api/v1/clusters?pretty=true' \
--header 'Authorization: Bearer <Bearer Token>'

Overwrite cluster configuration

URL

PUT /clusters/{clusterId}

Parameters

Path parameters

  • clusterId   type: String   required
    The cluster ID

Query parameters

  • dryRun   type: Boolean
    Dry run option. Can be used to validate the Cluster configuration. (default: false)

  • pretty   type: Boolean
    Pretty print the results. (default: false)

  • force   type: Boolean
    If true, allow hard updates. Note that rolling updates are the default. If both rolling and hard updates are available, setting this option to true means that hard updates will be the default action. (default: false)

Request body

  • Cluster   type: Cluster   required
    Configuration of the new cluster.

Responses

A successful request returns an HTTP 2XX status code and a JSON response body of type Cluster.

200 SUCCESS
202 SUCCESS
400 ERROR
401 ERROR
404 ERROR
409 ERROR


Change immediately applied.



Request accepted.



Invalid request payload.

Example body:

{
"error" : {
"code" : "BadArgument",
"message" : "Request contains invalid arguments",
"details" : [
{
"code" : "NullValue",
"target" : "metadata.name",
"message" : "Cluster name must not be null"
},
{
"code" : "MalformedValue",
"target" : "spec.deepStorage.path",
"message" : "Path is not a valid s3 path"
}
]
}
}


Unauthorized.

Example body:

{
"error" : {
"code" : "Unauthorized",
"message" : "Provided user does not have permissions to complete this request"
}
}


Not found.

Example body:

{
"error" : {
"code" : "NotFound",
"message" : "Cluster [e9e1e18f-a9e8-4dd7-8a18-768039c57f22] was not found"
}
}


Conflict.

Example body:

{
"error" : {
"code" : "StateConflict",
"message" : "Cluster [e9e1e18f-a9e8-4dd7-8a18-768039c57f22] cannot transition from [UPDATING] to [STOPPED]"
}
}

Sample request

curl --location --request PUT 'https://{vanity_domain}.implycloud.com/api/v1/clusters/<clusterId>?dryRun=true&pretty=true&force=true' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer <Bearer Token>' \
--data-raw '<Cluster configuration>'

Sample response

Toggle to show sample response

{
  "metadata" : {
    "name" : "My First Cluster"
    "uid" : "ffd5ea0f-5018-4649-97ee-1ddb0f8a2c53",
  },
  "spec" : {
    "version" : "version",
    "desiredState" : "STARTED",
    "awsInstanceRole" : "aws-instance-role",
    "awsKeyPair" : "aws-key-pair",
    "awsTags" : [ 
      {
        "name" : "tag-1",
        "value" : "tag-1-value"
      }, 
      {
        "name" : "tag-2",
        "value" : "tag-2-value"
      }
    ],
    "encryptVolumes" : true,
    "commonRuntimeProperties": [
      {
        "name": "common.druid.prop",
        "value": "value1"
      }
    ],
    "master": {
      "replicas": 3,
      "instanceType": "t2.small",
      "coordinatorRuntimeProperties": [
        {
          "name": "coordinator.druid.prop",
          "value": "value1"
        }
      ],
      "overlordRuntimeProperties": [
        {
          "name": "master.druid.property",
          "value": "value"
        }
      ]
    },
    "query": {
      "replicas": 2,
      "instanceType": "t2.small",
      "brokerRuntimeProperties": [
        {
          "name": "broker.druid.property",
          "value": "value"
        }
      ],
      "routerRuntimeProperties": [
        {
          "name": "router.druid.property",
          "value": "value"
        }
      ],
      "pivotConfiguration": "serverRoot: test\nuserMode: native"
    },
    "data": {
      "historicalRuntimeProperties": [
        {
          "name": "historical.druid.property",
          "value": "value"
        }
      ],
      "middleManagerRuntimeProperties": [
        {
          "name": "mm.druid.property",
          "value": "value"
        }
      ],
      "tier1": {
        "replicas": 2,
        "instanceType": "t2.small",
        "historicalRuntimeProperties": [
          {
            "name": "historical.druid.property",
            "value": "value"
          }
        ],
        "middleManagerRuntimeProperties": [
          {
            "name": "mm.druid.property",
            "value": "value"
          }
        ]
      },
      "tier2": {
        "replicas": 2,
        "instanceType": "t2.small",
        "historicalRuntimeProperties": [
          {
            "name": "historical.druid.property",
            "value": "value"
          }
        ],
        "middleManagerRuntimeProperties": [
          {
            "name": "mm.druid.property",
            "value": "value"
          }
        ]
      },
      "tier3": {
        "replicas": 2,
        "instanceType": "t2.small",
        "historicalRuntimeProperties": [
          {
            "name": "historical.druid.property",
            "value": "value"
          }
        ],
        "middleManagerRuntimeProperties": [
          {
            "name": "mm.druid.property",
            "value": "value"
          }
        ]
      }
    },
    "metadataStore": {
      "instanceType": "db.t2.small",
      "diskSize": 20,
      "backupRetention": 14,
      "monitoring": true,
      "encrypt": true
    },
    "pivot": {
      "accessMode": "PROXIED"
    },
    "deepStorage": {
      "path": "s3://my-bucket/my-prefix",
      "encrypt": true
    },
    "druidExtensions" : [ 
      "druid-extension-1",
      "druid-extension-2"
    ],
    "featureFlags" : [ 
      "featureFlag1",
      "featureFlag2"
    ],
    "customFiles" : [ 
      {
        "path" : "s3://my-bucket/my-file-1",
        "unpack" : false,
        "type" : "USER",
        "executable" : false
      },
      {
        "path" : "https://my-domain.com/my-file-2",
        "unpack" : false,
        "type" : "USER",
        "executable" : false
      }
    ],
  }
}

Update a cluster

URL

PATCH /clusters/{clusterId}

Parameters

Path parameters

  • clusterId   type: String   required
    The cluster ID

Query parameters

  • dryRun   type: Boolean
    Dry run option. Can be used to validate the Cluster configuration. (default: false)

  • pretty   type: Boolean
    Pretty print the results. (default: false)

  • force   type: Boolean
    If true, allow hard updates. Note that rolling updates are the default. If both rolling and hard updates are available, setting this option to true means that hard updates will be the default action. (default: false)

Request body

  • Cluster   type: Cluster   required
    Configuration of the updated cluster. This configuration will be merged with the existing cluster definition.

Responses

A successful request returns an HTTP 2XX status code and a JSON response body of type Cluster.

200 SUCCESS
202 SUCCESS
400 ERROR
401 ERROR
404 ERROR
409 ERROR


Change immediately applied.



Request accepted.



Invalid request payload.

Example body:

{
"error" : {
"code" : "BadArgument",
"message" : "Request contains invalid arguments",
"details" : [
{
"code" : "NullValue",
"target" : "metadata.name",
"message" : "Cluster name must not be null"
},
{
"code" : "MalformedValue",
"target" : "spec.deepStorage.path",
"message" : "Path is not a valid s3 path"
}
]
}
}


Unauthorized.

Example body:

{
"error" : {
"code" : "Unauthorized",
"message" : "Provided user does not have permissions to complete this request"
}
}


Not found.

Example body:

{
"error" : {
"code" : "NotFound",
"message" : "Cluster [e9e1e18f-a9e8-4dd7-8a18-768039c57f22] was not found"
}
}


Conflict.

Example body:

{
"error" : {
"code" : "StateConflict",
"message" : "Cluster [e9e1e18f-a9e8-4dd7-8a18-768039c57f22] cannot transition from [UPDATING] to [STOPPED]"
}
}

Sample request

curl --location --request PATCH 'https://{vanity_domain}.implycloud.com/api/v1/clusters/<clusterId>?dryRun=true&pretty=true&force=true' \
--header 'Content-Type: application/merge-patch+json' \
--header 'Authorization: Bearer <Bearer Token>' \
--data-raw '<Cluster configuration>'

Sample response

Toggle to show sample response

{
  "metadata" : {
    "name" : "My First Cluster"
    "uid" : "ffd5ea0f-5018-4649-97ee-1ddb0f8a2c53",
  },
  "spec" : {
    "version" : "version",
    "desiredState" : "STARTED",
    "awsInstanceRole" : "aws-instance-role",
    "awsKeyPair" : "aws-key-pair",
    "awsTags" : [ 
      {
        "name" : "tag-1",
        "value" : "tag-1-value"
      }, 
      {
        "name" : "tag-2",
        "value" : "tag-2-value"
      }
    ],
    "encryptVolumes" : true,
    "commonRuntimeProperties": [
      {
        "name": "common.druid.prop",
        "value": "value1"
      }
    ],
    "master": {
      "replicas": 3,
      "instanceType": "t2.small",
      "coordinatorRuntimeProperties": [
        {
          "name": "coordinator.druid.prop",
          "value": "value1"
        }
      ],
      "overlordRuntimeProperties": [
        {
          "name": "master.druid.property",
          "value": "value"
        }
      ]
    },
    "query": {
      "replicas": 2,
      "instanceType": "t2.small",
      "brokerRuntimeProperties": [
        {
          "name": "broker.druid.property",
          "value": "value"
        }
      ],
      "routerRuntimeProperties": [
        {
          "name": "router.druid.property",
          "value": "value"
        }
      ],
      "pivotConfiguration": "serverRoot: test\nuserMode: native"
    },
    "data": {
      "historicalRuntimeProperties": [
        {
          "name": "historical.druid.property",
          "value": "value"
        }
      ],
      "middleManagerRuntimeProperties": [
        {
          "name": "mm.druid.property",
          "value": "value"
        }
      ],
      "tier1": {
        "replicas": 2,
        "instanceType": "t2.small",
        "historicalRuntimeProperties": [
          {
            "name": "historical.druid.property",
            "value": "value"
          }
        ],
        "middleManagerRuntimeProperties": [
          {
            "name": "mm.druid.property",
            "value": "value"
          }
        ]
      },
      "tier2": {
        "replicas": 2,
        "instanceType": "t2.small",
        "historicalRuntimeProperties": [
          {
            "name": "historical.druid.property",
            "value": "value"
          }
        ],
        "middleManagerRuntimeProperties": [
          {
            "name": "mm.druid.property",
            "value": "value"
          }
        ]
      },
      "tier3": {
        "replicas": 2,
        "instanceType": "t2.small",
        "historicalRuntimeProperties": [
          {
            "name": "historical.druid.property",
            "value": "value"
          }
        ],
        "middleManagerRuntimeProperties": [
          {
            "name": "mm.druid.property",
            "value": "value"
          }
        ]
      }
    },
    "metadataStore": {
      "instanceType": "db.t2.small",
      "diskSize": 20,
      "backupRetention": 14,
      "monitoring": true,
      "encrypt": true
    },
    "pivot": {
      "accessMode": "PROXIED"
    },
    "deepStorage": {
      "path": "s3://my-bucket/my-prefix",
      "encrypt": true
    },
    "druidExtensions" : [ 
      "druid-extension-1",
      "druid-extension-2"
    ],
    "featureFlags" : [ 
      "featureFlag1",
      "featureFlag2"
    ],
    "customFiles" : [ 
      {
        "path" : "s3://my-bucket/my-file-1",
        "unpack" : false,
        "type" : "USER",
        "executable" : false
      },
      {
        "path" : "https://my-domain.com/my-file-2",
        "unpack" : false,
        "type" : "USER",
        "executable" : false
      }
    ],
  }
}
← Manager API referenceClustersHistorical API →
  • Create a cluster
    • URL
    • Parameters
    • Responses
    • Sample request
    • Sample response
  • Delete a cluster
    • URL
    • Parameters
    • Responses
    • Sample request
  • Get a cluster
    • URL
    • Parameters
    • Responses
    • Sample request
    • Sample response
  • List clusters
    • URL
    • Parameters
    • Responses
    • Sample request
  • Overwrite cluster configuration
    • URL
    • Parameters
    • Responses
    • Sample request
    • Sample response
  • Update a cluster
    • URL
    • Parameters
    • Responses
    • Sample request
    • Sample response
API
Key links
Try ImplyApache Druid siteImply GitHub
Get help
Stack OverflowSupportContact us
Learn more
BlogApache Druid docs
Copyright © 2021 Imply Data, Inc