Service Lifecycle APIs
Last validated: 2026-05-11
This page covers health, dedicated cluster lifecycle, shared database lifecycle, and service discovery/access APIs.
API Domain Overview
| Domain | gRPC method(s) | HTTP annotation(s) | Typical use case |
|---|---|---|---|
| Health | HealthCheck | GET /v1/vbase/healthz | Probe service readiness for clients/automation. |
| Dedicated clusters | CreateCluster, GetCluster, ScaleCluster, DeleteCluster, GetClusterInProgressTasks | /v1/vbase/clusters... | Provision and manage dedicated tenant capacity. |
| Shared databases | AllocateDatabase, DeleteDatabase | /v1/vbase/databases | Provision and remove shared database services. |
| Service discovery/access | ListServices, GetService, GetServiceAccess | /v1/vbase/list/{organization_id}, /v1/vbase/{service_id}, /v1/vbase/{service_id}/access | Resolve service IDs, status, endpoint, and DB name. |
1) Health
HealthCheck
Use cases:
- startup probe for SDK/automation
- quick auth + connectivity verification
Arguments:
HealthRequestis empty.
Example (gRPC):
grpcurl -insecure \
-H "authorization: Bearer $TOKEN" \
-d '{}' \
"rpc.dev.dodil.io:443" dodil.vbase.v1.VBaseService/HealthCheck2) Dedicated Cluster Lifecycle
CreateCluster
Use cases:
- create isolated dedicated capacity
- define initial compute and autoscaling behavior
Request arguments:
| Field | Type | Required | Description |
|---|---|---|---|
organization_id | string | Yes | Tenant organization UUID. |
name | string | Yes | Friendly cluster service name. |
resource_config.compute_units | int32 | No | Initial compute units. Defaults to 1 if omitted by runtime. |
resource_config.enable_auto_scaling | bool | No | Enables autoscaling behavior if supported by deployment. |
resource_config.max_compute_units | int32 | No | Autoscaling upper bound. |
resource_config.enable_replicas | bool | No | Replica support toggle. |
resource_config.replicas | int32 | No | Replica count when replicas are enabled. |
labels | map<string,string> | No | User-defined labels/tags for orchestration metadata. |
Example (gRPC):
grpcurl -insecure \
-H "authorization: Bearer $TOKEN" \
-d '{
"organization_id": "'"$ORG_ID"'",
"name": "dedicated-vbase-1",
"resource_config": {
"compute_units": 3,
"enable_auto_scaling": true,
"max_compute_units": 6,
"enable_replicas": false,
"replicas": 1
},
"labels": {
"env": "staging"
}
}' \
"rpc.dev.dodil.io:443" dodil.vbase.v1.VBaseService/CreateClusterExample (HTTP):
curl -sS -X POST \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
"https://api.dev.dodil.io:443/v1/vbase/clusters" \
-d '{
"organization_id": "'"$ORG_ID"'",
"name": "dedicated-vbase-1",
"resource_config": {
"compute_units": 3,
"enable_auto_scaling": true,
"max_compute_units": 6
}
}'GetCluster
Use case:
- inspect current cluster status and resource config
Request argument:
cluster_id(string, required): cluster service ID.
Note:
- Proto HTTP annotation for this method currently contains malformed path token (
{or}). Prefer gRPC for this call.
ScaleCluster
Use cases:
- increase/decrease compute units
- update autoscaling ceiling
Request arguments:
| Field | Type | Required | Description |
|---|---|---|---|
cluster_id | string | Yes | Target dedicated cluster service ID. |
resource_config | ClusterResourceConfig | Yes | New resource configuration payload. |
Example (gRPC):
grpcurl -insecure \
-H "authorization: Bearer $TOKEN" \
-d '{
"cluster_id": "<cluster_service_id>",
"resource_config": {
"compute_units": 6,
"enable_auto_scaling": true,
"max_compute_units": 12
}
}' \
"rpc.dev.dodil.io:443" dodil.vbase.v1.VBaseService/ScaleClusterGetClusterInProgressTasks
Use case:
- observe active cluster operations (scale/delete/etc.)
Request argument:
cluster_id(string, required)
Note:
- HTTP annotation uses
DELETEfor a read-style operation; treat this as annotation drift. Prefer gRPC.
DeleteCluster
Use case:
- remove dedicated cluster service
Request arguments:
| Field | Type | Required | Description |
|---|---|---|---|
cluster_id | string | Yes | Cluster service ID to remove. |
force | bool | Optional in proto | Runtime currently forces deletion behavior internally. |
3) Shared Database Lifecycle
AllocateDatabase
Use case:
- create a shared tenant database service for an organization
Request arguments:
| Field | Type | Required | Description |
|---|---|---|---|
organization_id | string | Yes | Tenant org UUID. |
name | string | Yes | Service name for shared database. |
Example (gRPC):
grpcurl -insecure \
-H "authorization: Bearer $TOKEN" \
-d '{"organization_id":"'"$ORG_ID"'","name":"my-shared-db"}' \
"rpc.dev.dodil.io:443" dodil.vbase.v1.VBaseService/AllocateDatabaseExample (HTTP):
curl -sS -X POST \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
"https://api.dev.dodil.io:443/v1/vbase/databases" \
-d '{"organization_id":"'"$ORG_ID"'","name":"my-shared-db"}'DeleteDatabase
Use case:
- remove a shared database service by service ID
Request arguments:
| Field | Type | Required | Description |
|---|---|---|---|
database_id | string | Yes | Service ID returned during allocation/list. |
Important:
- HTTP route does not include path ID;
database_idis in request body/message.
4) Service Discovery and Access
ListServices
Use cases:
- enumerate all services for an organization
- filter by service status
- paginate large org inventories
Request arguments:
| Field | Type | Required | Description |
|---|---|---|---|
organization_id | string | Yes | Organization UUID. |
status_filter | ServiceStatus | No | Filters by one status value. 0 behaves like no filter. |
page_size | int32 | No | Page size. 0 means server default. |
page | int32 | No | 0-based page index. |
include_deleted | bool | No | Include deleted entries if true. |
Example (gRPC):
grpcurl -insecure \
-H "authorization: Bearer $TOKEN" \
-d '{"organization_id":"'"$ORG_ID"'","page_size":50,"page":0,"include_deleted":false}' \
"rpc.dev.dodil.io:443" dodil.vbase.v1.VBaseService/ListServicesExample (HTTP):
curl -sS \
-H "Authorization: Bearer $TOKEN" \
"https://api.dev.dodil.io:443/v1/vbase/list/$ORG_ID"GetService
Use case:
- fetch one service object by
service_idand optional cluster configuration payload
Request argument:
service_id(string, required)
GetServiceAccess
Use cases:
- resolve endpoint/port/db_name required by direct Milvus operations
- drive
dodil vbase db usestyle context switching
Request argument:
service_id(string, required)
Example (gRPC):
grpcurl -insecure \
-H "authorization: Bearer $TOKEN" \
-d '{"service_id":"<service_id>"}' \
"rpc.dev.dodil.io:443" dodil.vbase.v1.VBaseService/GetServiceAccessExample (HTTP):
curl -sS \
-H "Authorization: Bearer $TOKEN" \
"https://api.dev.dodil.io:443/v1/vbase/<service_id>/access"