{ "opencollection": "1.0.0", "info": { "name": "Kubecost Allocation Model API", "version": "2.0.0" }, "items": [ { "info": { "name": "Model", "type": "folder" }, "items": [ { "info": { "name": "Kubecost Query allocation cost data", "type": "http" }, "http": { "method": "GET", "url": "http://{kubecost-address}/model/allocation", "params": [ { "name": "window", "value": "", "type": "query", "description": "Duration of time over which to query. Accepts units of time (e.g. 3d, 24h, 7d), relative time (e.g. yesterday, lastweek, lastmonth), or RFC3339 date pairs." }, { "name": "aggregate", "value": "", "type": "query", "description": "Field by which to aggregate results. Supported values include cluster, namespace, controllerKind, controller, service, deployment, statefulset, daemonset, job, label, annotation, pod, and container. Supports multi-aggregation via comma-separated values." }, { "name": "step", "value": "", "type": "query", "description": "Duration of a single allocation set. If unspecified, this defaults to the window, so that you receive exactly one set for the entire window." }, { "name": "accumulate", "value": "", "type": "query", "description": "If true, sum the entire range of sets into a single set." }, { "name": "idle", "value": "", "type": "query", "description": "Whether to return idle cost. If true, idle allocations are returned." }, { "name": "external", "value": "", "type": "query", "description": "Whether to include external (out-of-cluster) costs." }, { "name": "filterClusters", "value": "", "type": "query", "description": "Filter results by cluster name (comma-separated)." }, { "name": "filterNamespaces", "value": "", "type": "query", "description": "Filter results by namespace (comma-separated)." }, { "name": "filterControllerKinds", "value": "", "type": "query", "description": "Filter results by controller kind (comma-separated)." }, { "name": "filterControllers", "value": "", "type": "query", "description": "Filter results by controller name (comma-separated)." }, { "name": "filterLabels", "value": "", "type": "query", "description": "Filter results by label in the format label:value (comma-separated)." }, { "name": "filterAnnotations", "value": "", "type": "query", "description": "Filter results by annotation in the format annotation:value (comma-separated)." }, { "name": "filterServices", "value": "", "type": "query", "description": "Filter results by service (comma-separated)." }, { "name": "shareIdle", "value": "", "type": "query", "description": "If true, idle cost is allocated proportionally across tenants." }, { "name": "splitIdle", "value": "", "type": "query", "description": "If true, idle cost is split into separate allocations by cluster and node." }, { "name": "idleByNode", "value": "", "type": "query", "description": "If true, idle allocations are created on a per-node basis." }, { "name": "format", "value": "", "type": "query", "description": "Output format. Supports csv and json." } ] }, "docs": "Retrieves cost allocation data for Kubernetes workloads, aggregated by the specified field over the given time window." }, { "info": { "name": "Kubecost Query total allocation costs", "type": "http" }, "http": { "method": "GET", "url": "http://{kubecost-address}/model/allocation/totals", "params": [ { "name": "window", "value": "", "type": "query", "description": "Duration of time over which to query." }, { "name": "aggregate", "value": "", "type": "query", "description": "Field by which to aggregate results." }, { "name": "filterClusters", "value": "", "type": "query" }, { "name": "filterNamespaces", "value": "", "type": "query" } ] }, "docs": "Returns a single total cost value for the given window, without individual allocations breakdown." }, { "info": { "name": "Kubecost Query asset cost data", "type": "http" }, "http": { "method": "GET", "url": "http://{kubecost-address}/model/assets", "params": [ { "name": "window", "value": "", "type": "query", "description": "Duration of time over which to query. Accepts units of time (e.g. 3d, 24h, 7d), relative time (e.g. yesterday, lastweek), or RFC3339 date pairs." }, { "name": "aggregate", "value": "", "type": "query", "description": "Field by which to aggregate results. Supported values include account, category, cluster, name, project, providerid, provider, service, type, department, environment, owner, product, team, and label:. Supports multi-aggregation via comma-separated values." }, { "name": "accumulate", "value": "", "type": "query", "description": "If true, sum the entire range into a single set." }, { "name": "filterClusters", "value": "", "type": "query", "description": "Filter by cluster name (comma-separated)." }, { "name": "filterTypes", "value": "", "type": "query", "description": "Filter by asset type (comma-separated). Supported values include Node, Disk, LoadBalancer, ClusterManagement, Network, Attached." }, { "name": "filterAccounts", "value": "", "type": "query", "description": "Filter by account (comma-separated)." }, { "name": "filterProjects", "value": "", "type": "query", "description": "Filter by project (comma-separated)." }, { "name": "filterProviders", "value": "", "type": "query", "description": "Filter by provider (comma-separated)." }, { "name": "filterCategories", "value": "", "type": "query", "description": "Filter by category (comma-separated)." }, { "name": "filterLabels", "value": "", "type": "query", "description": "Filter by label in the format label:value." }, { "name": "filterServices", "value": "", "type": "query", "description": "Filter by service (comma-separated)." }, { "name": "format", "value": "", "type": "query", "description": "Output format. Supports csv and json." } ] }, "docs": "Retrieves cost data for individual Kubernetes assets such as nodes, persistent volumes, load balancers, and cluster management costs." }, { "info": { "name": "Kubecost Query total asset costs", "type": "http" }, "http": { "method": "GET", "url": "http://{kubecost-address}/model/assets/totals", "params": [ { "name": "window", "value": "", "type": "query", "description": "Duration of time over which to query." }, { "name": "filterClusters", "value": "", "type": "query" }, { "name": "filterTypes", "value": "", "type": "query" } ] }, "docs": "Returns a single total cost for assets in the given window." }, { "info": { "name": "Kubecost List all budgets", "type": "http" }, "http": { "method": "GET", "url": "http://{kubecost-address}/model/budget" }, "docs": "Retrieves a list of all configured budget rules." }, { "info": { "name": "Kubecost Create a budget", "type": "http" }, "http": { "method": "POST", "url": "http://{kubecost-address}/model/budget", "body": { "type": "json", "data": "{}" } }, "docs": "Creates a new recurring budget rule for Kubernetes spending." }, { "info": { "name": "Kubecost Get a specific budget", "type": "http" }, "http": { "method": "GET", "url": "http://{kubecost-address}/model/budget/:id", "params": [ { "name": "id", "value": "", "type": "path", "description": "Unique identifier of the budget." } ] }, "docs": "Retrieves a specific budget rule by ID." }, { "info": { "name": "Kubecost Update a budget", "type": "http" }, "http": { "method": "PUT", "url": "http://{kubecost-address}/model/budget/:id", "params": [ { "name": "id", "value": "", "type": "path", "description": "Unique identifier of the budget." } ], "body": { "type": "json", "data": "{}" } }, "docs": "Updates an existing budget rule." }, { "info": { "name": "Kubecost Delete a budget", "type": "http" }, "http": { "method": "DELETE", "url": "http://{kubecost-address}/model/budget/:id", "params": [ { "name": "id", "value": "", "type": "path", "description": "Unique identifier of the budget." } ] }, "docs": "Deletes an existing budget rule." }, { "info": { "name": "Kubecost Query cloud cost data", "type": "http" }, "http": { "method": "GET", "url": "http://{kubecost-address}/model/cloudCost", "params": [ { "name": "window", "value": "", "type": "query", "description": "Duration of time over which to query. Accepts daily intervals (e.g. 3d) or RFC3339 date pairs." }, { "name": "aggregate", "value": "", "type": "query", "description": "Field by which to aggregate results. Supported values include invoiceEntityID, accountID, provider, service, and label:. Supports multi-aggregation via comma-separated values." }, { "name": "accumulate", "value": "", "type": "query", "description": "If true, sum the entire range into a single set." }, { "name": "filterInvoiceEntityIDs", "value": "", "type": "query", "description": "Filter by invoice entity ID (comma-separated)." }, { "name": "filterAccountIDs", "value": "", "type": "query", "description": "Filter by account ID (comma-separated)." }, { "name": "filterProviders", "value": "", "type": "query", "description": "Filter by provider (comma-separated)." }, { "name": "filterServices", "value": "", "type": "query", "description": "Filter by service (comma-separated)." }, { "name": "filterLabels", "value": "", "type": "query", "description": "Filter by label in the format label:value." } ] }, "docs": "Retrieves cloud cost data from cloud service providers, with support for aggregation and filtering." }, { "info": { "name": "Kubecost Query cloud cost view data", "type": "http" }, "http": { "method": "GET", "url": "http://{kubecost-address}/model/cloudCost/view", "params": [ { "name": "window", "value": "", "type": "query" }, { "name": "aggregate", "value": "", "type": "query" }, { "name": "accumulate", "value": "", "type": "query" }, { "name": "filterInvoiceEntityIDs", "value": "", "type": "query" }, { "name": "filterAccountIDs", "value": "", "type": "query" }, { "name": "filterProviders", "value": "", "type": "query" }, { "name": "filterServices", "value": "", "type": "query" } ] }, "docs": "Default endpoint for querying cloud costs. Provides a comprehensive view of cloud spending." }, { "info": { "name": "Kubecost Query top cloud costs", "type": "http" }, "http": { "method": "GET", "url": "http://{kubecost-address}/model/cloudCost/top", "params": [ { "name": "window", "value": "", "type": "query" }, { "name": "aggregate", "value": "", "type": "query" }, { "name": "accumulate", "value": "", "type": "query" }, { "name": "filterProviders", "value": "", "type": "query" }, { "name": "filterServices", "value": "", "type": "query" }, { "name": "limit", "value": "", "type": "query", "description": "Maximum number of results to return." } ] }, "docs": "Returns the top cloud cost items. Accepts all parameters of the view endpoint." }, { "info": { "name": "Kubecost Forecast allocation costs", "type": "http" }, "http": { "method": "GET", "url": "http://{kubecost-address}/model/forecast/allocation", "params": [ { "name": "window", "value": "", "type": "query", "description": "Historical window of time to use as the basis for the forecast." }, { "name": "forecastWindow", "value": "", "type": "query", "description": "Duration of time to forecast into the future." }, { "name": "aggregate", "value": "", "type": "query", "description": "Field by which to aggregate results. Supports the same values as the Allocation API aggregate parameter." }, { "name": "accumulate", "value": "", "type": "query", "description": "If true, sum the entire range into a single set." }, { "name": "filterClusters", "value": "", "type": "query" }, { "name": "filterNamespaces", "value": "", "type": "query" } ] }, "docs": "Returns a cost forecast for Kubernetes workloads based on historical allocation data, projecting future costs over the specified forecast window." }, { "info": { "name": "Kubecost Get cluster right-sizing recommendations", "type": "http" }, "http": { "method": "GET", "url": "http://{kubecost-address}/model/savings/clusterSizingETL", "params": [ { "name": "window", "value": "", "type": "query", "description": "Duration of time to analyze for recommendations." } ] }, "docs": "Returns recommendations for right-sizing clusters based on actual resource usage, including potential monthly savings." }, { "info": { "name": "Kubecost Get container request right-sizing recommendations", "type": "http" }, "http": { "method": "GET", "url": "http://{kubecost-address}/model/savings/requestSizingV2", "params": [ { "name": "window", "value": "", "type": "query", "description": "Duration of time to analyze for recommendations." }, { "name": "targetCPUUtilization", "value": "", "type": "query", "description": "Target CPU utilization percentage (0-1)." }, { "name": "targetRAMUtilization", "value": "", "type": "query", "description": "Target RAM utilization percentage (0-1)." }, { "name": "filterClusters", "value": "", "type": "query", "description": "Filter by cluster name (comma-separated)." }, { "name": "filterNamespaces", "value": "", "type": "query", "description": "Filter by namespace (comma-separated)." }, { "name": "filterControllers", "value": "", "type": "query", "description": "Filter by controller name (comma-separated)." }, { "name": "filterLabels", "value": "", "type": "query", "description": "Filter by label in the format label:value." } ] }, "docs": "Returns recommendations for right-sizing container resource requests (CPU and memory) based on actual usage patterns." }, { "info": { "name": "Kubecost List abandoned workloads", "type": "http" }, "http": { "method": "GET", "url": "http://{kubecost-address}/model/savings/abandonedWorkloads", "params": [ { "name": "window", "value": "", "type": "query", "description": "Duration of time to analyze." } ] }, "docs": "Returns a list of workloads that appear to be abandoned based on low resource utilization over the specified window." }, { "info": { "name": "Kubecost List orphaned disks", "type": "http" }, "http": { "method": "GET", "url": "http://{kubecost-address}/model/savings/orphanedDisks" }, "docs": "Returns a list of persistent volumes and disks that are not attached to any running workload." }, { "info": { "name": "Kubecost List orphaned IP addresses", "type": "http" }, "http": { "method": "GET", "url": "http://{kubecost-address}/model/savings/orphanedIPs" }, "docs": "Returns a list of allocated IP addresses that are not associated with any active resource." } ] } ], "bundled": true }