Skip to main content

Namespaces API

Manage Kubernetes namespaces via the API.

List Namespaces

GET /v1/namespaces

Query Parameters:

ParameterTypeDescription
statusstringFilter by status: active, provisioning, stopped
tierstringFilter by tier: free, starter, pro, enterprise

Response:

{
"data": [
{
"id": "ns_abc123",
"name": "my-app",
"status": "active",
"tier": "starter",
"cluster": "us-east-1",
"resources": {
"cpu_cores": 2,
"memory_gb": 4,
"storage_gb": 20
},
"created_at": "2024-01-15T10:30:00Z"
}
],
"meta": {
"total": 1,
"page": 1,
"per_page": 20
}
}

Get Namespace

GET /v1/namespaces/:id

Response:

{
"data": {
"id": "ns_abc123",
"name": "my-app",
"status": "active",
"tier": "starter",
"cluster": "us-east-1",
"resources": {
"cpu_cores": 2,
"memory_gb": 4,
"storage_gb": 20
},
"usage": {
"cpu_used": 0.5,
"memory_used_gb": 1.2,
"pods": 5
},
"limits": {
"max_pods": 20,
"max_services": 10,
"max_ingresses": 5
},
"created_at": "2024-01-15T10:30:00Z",
"updated_at": "2024-01-15T10:30:00Z"
}
}

Create Namespace

POST /v1/namespaces

Request Body:

{
"name": "my-app",
"tier": "starter"
}

Response: 201 Created

{
"data": {
"id": "ns_abc123",
"name": "my-app",
"status": "provisioning",
"tier": "starter",
"cluster": "us-east-1"
}
}

Update Namespace

PATCH /v1/namespaces/:id

Request Body:

{
"tier": "pro"
}

Response:

{
"data": {
"id": "ns_abc123",
"name": "my-app",
"status": "scaling",
"tier": "pro"
}
}

Delete Namespace

DELETE /v1/namespaces/:id

Response: 204 No Content

Get Kubeconfig

GET /v1/namespaces/:id/kubeconfig

Response:

apiVersion: v1
kind: Config
clusters:
- cluster:
certificate-authority-data: LS0tLS1C...
server: https://k8s.sparbz.cloud
name: sparbz-cloud
contexts:
- context:
cluster: sparbz-cloud
namespace: my-app
user: ns_abc123
name: my-app
current-context: my-app
users:
- name: ns_abc123
user:
token: eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...

Apply Manifest

POST /v1/namespaces/:id/apply

Apply Kubernetes manifests to the namespace.

Request Body:

{
"manifest": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n name: nginx\nspec:\n replicas: 3\n selector:\n matchLabels:\n app: nginx\n template:\n metadata:\n labels:\n app: nginx\n spec:\n containers:\n - name: nginx\n image: nginx:latest\n ports:\n - containerPort: 80"
}

Response:

{
"data": {
"applied": [
{
"kind": "Deployment",
"name": "nginx",
"action": "created"
}
]
}
}

List Resources

List Deployments

GET /v1/namespaces/:id/deployments

Response:

{
"data": [
{
"name": "nginx",
"replicas": 3,
"ready_replicas": 3,
"image": "nginx:latest",
"created_at": "2024-01-15T10:30:00Z"
}
]
}

List Pods

GET /v1/namespaces/:id/pods

Response:

{
"data": [
{
"name": "nginx-abc123",
"status": "Running",
"ready": true,
"restarts": 0,
"node": "node-1",
"started_at": "2024-01-15T10:30:00Z"
}
]
}

List Services

GET /v1/namespaces/:id/services

List Ingresses

GET /v1/namespaces/:id/ingresses

Pod Operations

Get Pod Logs

GET /v1/namespaces/:id/pods/:name/logs

Query Parameters:

ParameterTypeDescription
containerstringContainer name (if multi-container pod)
tailintegerNumber of lines from end (default: 100)
sincestringDuration (e.g., "5m", "1h")
timestampsbooleanInclude timestamps

Response:

{
"data": {
"logs": "2024-01-15T10:30:00Z Starting nginx...\n2024-01-15T10:30:01Z Listening on port 80\n..."
}
}

Delete Pod

DELETE /v1/namespaces/:id/pods/:name

Response: 204 No Content

Scale Deployment

POST /v1/namespaces/:id/deployments/:name/scale

Request Body:

{
"replicas": 5
}

Response:

{
"data": {
"name": "nginx",
"replicas": 5,
"previous_replicas": 3
}
}

Restart Deployment

POST /v1/namespaces/:id/deployments/:name/restart

Response:

{
"data": {
"name": "nginx",
"status": "restarting"
}
}