Skip to content

Read the status of a CloudAccount

GET
/apis/nodus.dev/v1/cloudaccounts/{name}/status
curl --request GET \
--url https://example.com/apis/nodus.dev/v1/cloudaccounts/example/status
name
required
string

The object’s name.

OK

Media type application/json

CloudAccount is read-only observation of a customer’s AWS or GCP account: inventory, GPUs and spend. Nodus never launches, stops or changes anything in the customer’s cloud. The object holds only the non-secret binding; the grant material is stored encrypted and owned by the account.

object
apiVersion
string
kind
string
metadata
object
annotations
object
key
additional properties
string
creationTimestamp
string
deletionGracePeriodSeconds
integer format: int64
deletionTimestamp
string
finalizers
Array<string>
nullable
generateName
string
generation
integer format: int64
labels
object
key
additional properties
string
managedFields
Array<object>
nullable
object
apiVersion
string
fieldsType
string
fieldsV1
object
key
additional properties
manager
string
operation
string
subresource
string
time
string
name
string
namespace
string
ownerReferences
Array<object>
nullable
object
apiVersion
required
string
blockOwnerDeletion
boolean
controller
boolean
kind
required
string
name
required
string
uid
required
string
resourceVersion
string
selfLink
string
uid
string
spec
required

CloudAccountSpec is the binding to one cloud account.

object
aws

AWSAccount is an AWS binding through a read-only IAM role.

object
accountId
required

AccountID is the 12-digit AWS account id.

string
regions

Regions limits observation; empty means every enabled region.

Array<string>
nullable
roleArn

RoleARN is the read-only role the CloudFormation stack created; onboarding fills it.

string
gcp

GCPAccount is a GCP binding through a read-only grant.

object
method

Method is how the customer granted access; OAuth, the default, is the only method accepted.

string
projectIds
required

ProjectIDs are the projects Nodus observes. Empty starts Google consent before project selection.

Array<string>
nullable
workloadIdentityProvider

WorkloadIdentityProvider names a workload identity provider (WorkloadIdentity, which is refused).

string
observe

Observe lists the reads that run. Default [Inventory, GPUs, Spend].

Array<string>
nullable
provider
required

Provider is AWS or GCP. Immutable.

string
sync

CloudAccountSync sets the observation cadence.

object
interval

Interval is from 15m to 24h. Default 1h.

string
status

CloudAccountStatus is the latest observation.

object
conditions

Conditions carries Verified and Synced.

Array<object>
nullable
object
lastTransitionTime
required
string
message
required
string
observedGeneration
integer format: int64
reason
required
string
status
required
string
type
required
string
externalId

ExternalID is the AWS external id the role’s trust policy must name.

string
handledRequests

HandledRequests records the nodus.dev/verify-requested-at value the last requested sync answered.

object
key
additional properties
string
inventory

CloudInventorySummary counts what the latest sync saw.

object
gpus

GPUs counts GPUs per accelerator model.

object
key
additional properties
integer format: int32
instances
required

Instances is the number of instances observed.

integer format: int32
regions

Regions are the regions with instances.

Array<string>
nullable
lastSyncTime

LastSyncTime is when the latest sync finished.

string
phase

Phase is Pending, Ready or Failed.

string
spend

CloudSpendSummary is the month’s observed cloud spend; it never enters Nodus billing.

object
asOfTime
required

AsOfTime is when the spend was read.

string
monthToDateUSD
required

MonthToDateUSD is observed month-to-date USD, possibly partial; empty when no USD was observed.

string
report

CloudSpendReport is the latest observation window, never a Nodus charge or a savings claim.

object
basis
required

Basis explains adjustments and provisional billing data.

string
currencies
required

Currencies keeps different currencies separate; absent rows are unknown, not zero.

Array<object>
nullable

CloudSpendCurrency is one currency’s observed bill and optional projection.

object
byService
required
Array<object>
nullable

CloudSpendService is one service’s observed subtotal in the currency report’s window.

object
cost
required
string
service
required
string
computeDescription
string
computeServiceTotal

ComputeServiceTotal is a service subtotal, including CPU and associated charges, never GPU-only spend.

string
coverage
required

CloudSpendCoverage describes past UTC days in the requested window; today’s partial day is excluded.

object
billedThrough

BilledThrough is the latest day explicitly reported non-estimated by the source, not invoice finality.

string
completeDays
required
integer format: int32
estimatedDays
required
integer format: int32
missingDays
required
integer format: int32
observedDays
required
integer format: int32
currency
required
string
daily
required
Array<object>
nullable

CloudSpendPoint leaves cost absent when no amount was observed. Unknown finality never means complete.

object
complete
required
boolean
cost
string
day
required
string
estimated
boolean
forecast
required

CloudSpendForecast extrapolates eligible observed days; it is neither a price guarantee nor a confidence band.

object
computeDescription
string
computeServiceTotal

ComputeServiceTotal projects only the explicitly classified compute-service subtotal.

string
historyDays
required
integer format: int32
historyThrough

HistoryThrough is the latest UTC day used, exposing the export lag buffer.

string
horizonDays
required
integer format: int32
method
required
string
status
required

Status is Ready, InsufficientHistory, BillingAdjustments or ProvisionalSource.

string
total

Total is the next HorizonDays at the recent daily average, not a month-end prediction.

string
monthToDate
required

MonthToDate sums returned amounts since the current month’s start; coverage may be partial.

string
observedTotal
required

ObservedTotal sums only returned amounts over the observation window.

string
fromDay
required

FromDay is the first requested UTC day; ToDay is exclusive.

string
source
required

Source identifies the customer’s cloud billing source.

string
toDay
required
string
Example generated
{
"apiVersion": "example",
"kind": "example",
"metadata": {
"annotations": {
"additionalProperty": "example"
},
"creationTimestamp": "example",
"deletionGracePeriodSeconds": 1,
"deletionTimestamp": "example",
"finalizers": [
"example"
],
"generateName": "example",
"generation": 1,
"labels": {
"additionalProperty": "example"
},
"managedFields": [
{
"apiVersion": "example",
"fieldsType": "example",
"fieldsV1": {
"additionalProperty": "example"
},
"manager": "example",
"operation": "example",
"subresource": "example",
"time": "example"
}
],
"name": "example",
"namespace": "example",
"ownerReferences": [
{
"apiVersion": "example",
"blockOwnerDeletion": true,
"controller": true,
"kind": "example",
"name": "example",
"uid": "example"
}
],
"resourceVersion": "example",
"selfLink": "example",
"uid": "example"
},
"spec": {
"aws": {
"accountId": "example",
"regions": [
"example"
],
"roleArn": "example"
},
"gcp": {
"method": "example",
"projectIds": [
"example"
],
"workloadIdentityProvider": "example"
},
"observe": [
"example"
],
"provider": "example",
"sync": {
"interval": "example"
}
},
"status": {
"conditions": [
{
"lastTransitionTime": "example",
"message": "example",
"observedGeneration": 1,
"reason": "example",
"status": "example",
"type": "example"
}
],
"externalId": "example",
"handledRequests": {
"additionalProperty": "example"
},
"inventory": {
"gpus": {
"additionalProperty": 1
},
"instances": 1,
"regions": [
"example"
]
},
"lastSyncTime": "example",
"phase": "example",
"spend": {
"asOfTime": "example",
"report": {
"basis": "example",
"currencies": [
{
"byService": [
{
"cost": "example",
"service": "example"
}
],
"computeDescription": "example",
"computeServiceTotal": "example",
"coverage": {
"billedThrough": "example",
"completeDays": 1,
"estimatedDays": 1,
"missingDays": 1,
"observedDays": 1
},
"currency": "example",
"daily": [
{
"complete": true,
"cost": "example",
"day": "example",
"estimated": true
}
],
"forecast": {
"computeDescription": "example",
"computeServiceTotal": "example",
"historyDays": 1,
"historyThrough": "example",
"horizonDays": 1,
"method": "example",
"status": "example",
"total": "example"
},
"monthToDate": "example",
"observedTotal": "example"
}
],
"fromDay": "example",
"source": "example",
"toDay": "example"
}
}
}
}

An error: a metav1.Status whose reason is a registered code.

Media type application/json

Status is the error body of every API response: a Kubernetes metav1.Status (so kubectl and client-go understand it) plus three top-level extensions that those clients ignore (ADR-028).

object
apiVersion
string
code
integer format: int32
details
object
causes
Array<object>
nullable
object
field
string
message
string
reason
string
group
string
kind
string
name
string
retryAfterSeconds
integer format: int32
uid
string
docs

Docs is the URL of the code’s docs page.

string
fix

Fix says what to do next, for example a CLI command or the field to change.

string
kind
string
message
string
metadata
object
continue
string
remainingItemCount
integer format: int64
resourceVersion
string
selfLink
string
shardInfo
object
selector
required
string
reason
string
requestId

RequestID identifies the request in logs and support tickets.

string
status
string
Example generated
{
"apiVersion": "example",
"code": 1,
"details": {
"causes": [
{
"field": "example",
"message": "example",
"reason": "example"
}
],
"group": "example",
"kind": "example",
"name": "example",
"retryAfterSeconds": 1,
"uid": "example"
},
"docs": "example",
"fix": "example",
"kind": "example",
"message": "example",
"metadata": {
"continue": "example",
"remainingItemCount": 1,
"resourceVersion": "example",
"selfLink": "example",
"shardInfo": {
"selector": "example"
}
},
"reason": "example",
"requestId": "example",
"status": "example"
}