Resources
Cloud infrastructure components discovered across connected cloud accounts. Statuses, Kubernetes workload discovery, list and refresh APIs, filters, and the resource object schema.
Resources are cloud infrastructure components (VMs, databases, clusters, etc.) discovered across your connected cloud accounts.
Overview
When you connect a cloud account, ZopNight's discoverer service scans for resources across all enabled regions. Each resource is classified by type, tagged as schedulable or inventory-only, and stored with its cloud metadata.
Resource Statuses
| Status | Description |
|---|---|
running | Resource is active and running |
stopped | Resource has been stopped |
starting | Resource is transitioning to running state |
stopping | Resource is transitioning to stopped state |
pending | Resource state is being determined |
Kubernetes workload discovery
ZopNight discovers what runs inside your clusters, not just the cluster nodes. EKS, GKE, and AKS expose a uniform set of workload children — listed alongside compute and network resources, schedulable where the underlying API allows it.
| Category | Resource types |
|---|---|
| Workloads | deployment, statefulset, daemonset, job, cronjob, replicaset |
| Services & networking | service, ingress, networkpolicy |
| Configuration | configmap, secret, serviceaccount |
| Storage | persistentvolume, persistentvolumeclaim, storageclass |
| Autoscaling | horizontalpodautoscaler, verticalpodautoscaler |
| Cluster | namespace, node, pod, role, rolebinding, clusterrole, clusterrolebinding |
Cluster types — aws-eks, gcp-gke, azure-aks — gain a detail page that lists workloads, breaks down nodes, filters by namespace, and renders pod- and workload-level CPU/memory metrics from the cluster's metrics backend.
List Resources
/resourcesList all discovered resources with filtering and pagination.
Query Parameters
| Parameter | Type | Description |
|---|---|---|
search | string | Search by resource name or UID |
type | string | Filter by resource type (e.g., aws-ec2, gcp-compute) |
provider | string | Filter by cloud provider (aws, gcp, azure) |
status | string | Filter by status (running, stopped, etc.) |
region | string | Filter by cloud region |
schedulable | boolean | Filter by schedulable capability |
page | integer | Page number (default: 1) |
limit | integer | Items per page (default: 20) |
sort_by | string | Sort field (name, type, status, provider) |
sort_order | string | asc or desc |
curl "https://zopnight.com/api/resources?provider=aws&type=aws-ec2&status=running&limit=10" \
-H "Authorization: Bearer <token>"{
"data": [
{
"id": "res_001",
"name": "web-server-prod",
"uid": "i-0abc123def456",
"type": "aws-ec2",
"instanceType": "t3.medium",
"region": "us-east-1",
"status": "running",
"cloudAccountID": "ca_abc123",
"cloudAccountName": "Production AWS",
"provider": "aws",
"schedulable": true,
"tags": {
"Environment": "production",
"Team": "platform"
},
"createdAt": "2025-01-15T10:30:00Z",
"updatedAt": "2025-01-20T08:00:00Z"
}
]
}Get Resource
/resources/{resourceID}Get detailed information about a specific resource.
Get Resources by IDs
/resources/by-idsFetch multiple resources by their IDs in a single request.
curl "https://zopnight.com/api/resources/by-ids?ids=res_001,res_002,res_003" \
-H "Authorization: Bearer <token>"Get Resources by UIDs
Look up resources by their cloud-native UIDs (e.g., AWS instance IDs, GCP self-link paths, Azure resource IDs). Useful when you have UIDs from cost data, recommendations, or topology and need the corresponding ZopNight resource records.
/resources/by-uidsFetch resources by cloud UIDs (query string).
curl "https://zopnight.com/api/resources/by-uids?uids=i-0abc,i-0def" \
-H "Authorization: Bearer <token>"/resources/by-uidsFetch resources by cloud UIDs (large lists in JSON body).
curl -X POST https://zopnight.com/api/resources/by-uids \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{ "uids": ["i-0abc", "i-0def", "vm-prod-1"] }'Count Resources
/resources/countTotal resource count for the org. Accepts the same filters as the list endpoint.
Discovery Summary
/resources/discovery-summaryPer-provider discovery rollup — schedulable counts, scanned regions, and last-success timestamps. Used by the dashboard hero.
{
"data": {
"totalResources": 1284,
"schedulableResources": 342,
"providers": [
{ "provider": "aws", "resources": 821, "lastSyncedAt": "2026-04-29T05:00:00Z" },
{ "provider": "gcp", "resources": 287, "lastSyncedAt": "2026-04-29T05:01:30Z" },
{ "provider": "azure", "resources": 176, "lastSyncedAt": "2026-04-29T05:02:10Z" }
]
}
}Access Check
/resources/access-checkVerify the connected cloud credentials still have list/describe permissions on each scanned region. Surfaces credential drift early.
{
"data": [
{
"cloudAccountID": "ca_abc123",
"provider": "aws",
"region": "us-east-1",
"status": "ok"
},
{
"cloudAccountID": "ca_abc123",
"provider": "aws",
"region": "eu-west-1",
"status": "denied",
"message": "ec2:DescribeInstances denied"
}
]
}Last Synced At
/resources/last-syncedReturns the most recent successful discovery timestamp per provider/cloud account. Used by the sync status banner.
{
"data": [
{
"cloudAccountID": "ca_abc123",
"provider": "aws",
"lastSyncedAt": "2026-04-29T05:00:00Z"
}
]
}Get Filter Fields
/resources/filter-fieldsGet available filter options (distinct types, providers, regions, statuses) for building filter UIs.
{
"data": {
"types": [
"aws-ec2", "aws-rds", "aws-eks", "aws-eks-nodegroup",
"aws-eks-deployment", "aws-eks-statefulset", "aws-eks-cronjob",
"gcp-compute", "gcp-cloud-sql", "gcp-gke", "gcp-gke-nodepool",
"gcp-gke-deployment", "gcp-gke-statefulset", "gcp-gke-cronjob",
"azure-vm", "azure-aks", "azure-aks-agentpool",
"azure-databricks", "azure-databricks-cluster",
"azure-databricks-instance-pool", "azure-databricks-warehouse"
],
"providers": ["aws", "gcp", "azure"],
"regions": ["us-east-1", "us-west-2", "europe-west1"],
"statuses": ["running", "stopped"]
}
}Refresh Discovery
Trigger an on-demand resource discovery scan for a specific cloud account. Discovery runs across all enabled regions and updates the resource inventory.
/resources/refreshTrigger a resource discovery refresh.
curl -X POST https://zopnight.com/api/resources/refresh \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"cloudAccountID": "ca_abc123",
"cloudAccountName": "Production AWS",
"provider": "aws"
}'{
"data": {
"refreshID": "ref_xyz789",
"status": "queued"
}
}Refresh Status
/resources/refresh/statusCheck the status of a discovery refresh.
{
"data": {
"id": "ref_xyz789",
"status": "success",
"discovered": 47,
"startedAt": "2025-01-20T08:00:00Z",
"completedAt": "2025-01-20T08:02:15Z"
}
}Resource Object
| Field | Type | Description |
|---|---|---|
id | string | Unique resource ID |
name | string | Resource display name |
uid | string | Cloud provider native resource identifier |
type | string | Resource type (e.g., aws-ec2, gcp-compute, azure-vm) |
instanceType | string | Instance size/type (e.g., t3.medium) |
sizeGB | number? | Storage size in GB (storage resources) |
unitCount | integer? | Container/unit count (containerized resources) |
region | string | Cloud region |
status | string | Current status (running, stopped, etc.) |
cloudAccountID | string | Connected cloud account ID |
cloudAccountName | string | Cloud account display name |
provider | string | Cloud provider (aws, gcp, azure) |
parentUID | string | Parent resource UID (e.g., cluster for a node) |
childCount | integer | Number of child resources |
schedulable | boolean | Whether the resource supports start/stop scheduling |
tags | object | Cloud provider tags as key-value pairs |
createdAt | string | ISO 8601 creation timestamp |
updatedAt | string | ISO 8601 last update timestamp |
See Cloud Support Matrix for the full list of supported resource types per cloud provider.