{
  "info": {
    "_postman_id": "a7c1e8f4-9b2d-4a3e-8c5f-1d6e7a8b9c0d",
    "name": "Kubeadapt API v1",
    "description": "Customer-facing read API for Kubernetes cost & resource visibility.\n\n## Response shape\n\nEvery response uses the universal `{data, meta, error}` envelope, with two exceptions: a successful `POST /v1/cost-explorer/query` returns `{success, data, request_id}`, and `GET /v1/exports/focus` streams a file.\n\n- **Success** — `data` carries the resource (object or array), `meta` carries `request_id` / `applied_at` / pagination / cost_mode. The `error` key is omitted entirely.\n- **Error** — `data` is `null`, `meta.request_id` is still populated, and `error` is `{code, message, details}`. The HTTP status code carries the status; we don't duplicate it in the body. The request URL is the one you made; we don't echo it back. Every code is documented at https://kubeadapt.io/docs/v1/api-reference/errors.\n\nLists also include `meta.pagination` with `next_cursor`, `has_more`, `limit`, and optional `total_count` (when `?include_total=true`). Lists sorted by cost or savings sort DESC by default — no `?sort=` parameter exists.\n\n## Setup\n\n1. Set the `baseUrl` collection variable to your environment (defaults to `https://public-api.kubeadapt.io`).\n2. Set the `apiKey` collection variable to your Bearer token (format `ka_live_<32 base62>`).\n3. Optionally set `cluster_id`, `namespace`, `workload_uid`, etc. to override path-param defaults.\n\nAuthentication is automatic via collection-level Bearer auth using `{{apiKey}}`.\n\n## Scopes\n\nEach endpoint requires one of the 9 read scopes (`organization:read`, `clusters:read`, `namespaces:read`, `workloads:read`, `nodes:read`, `recommendations:read`, `teams:read`, `departments:read`, `cost_explorer:read`). 403 responses list the scopes the endpoint accepts in `error.details[0].required` (an array) and the key's own scopes in `error.details[0].granted`.\n\n## Cost mode\n\nEndpoints that accept `?cost_mode=` use `fully_loaded` (default) or `workload_only`. Cluster, organization (snapshot), node, node-group, and recommendation endpoints REJECT this parameter with 422 — they have one physical bill that doesn't vary by mode.\n\n## Cost basis\n\nEvery cost route accepts `?basis=legacy|all` (default `legacy`, the pre-basis figure, which never changes meaning; `all` adds the network and external families where the source can produce them). Every cost block carries `components`, `unallocated`, `basis` and `partial` beside its money field. The `basis` query entry on each request is disabled by default; enable it to opt in.\n\n## Naming convention\n\nAll query parameters and JSON body fields use **snake_case** (e.g. `cost_mode`, `cluster_id`, `start_date`). This applies to the cost-explorer POST body as well: `group_by`, `cost_mode`, `start_date`, `end_date`, `per_page`, `sort_by`, `sort_order`, `view_mode`, `filter_expression`, `cluster_ids`, `filter_expression.group_operator`, `filter_expression.groups[].label_filters`.\n\nFull documentation: https://kubeadapt.io/docs/v1/api-reference/overview",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
  },
  "auth": {
    "type": "bearer",
    "bearer": [
      {
        "key": "token",
        "value": "{{apiKey}}",
        "type": "string"
      }
    ]
  },
  "variable": [
    {
      "key": "baseUrl",
      "value": "https://public-api.kubeadapt.io",
      "description": "API base URL: https://public-api.kubeadapt.io"
    },
    {
      "key": "apiKey",
      "value": "",
      "description": "Bearer token (ka_live_...)."
    },
    {
      "key": "cluster_id",
      "value": "00000000-0000-0000-0000-000000000000",
      "description": "Cluster UUID for path-param tests."
    },
    {
      "key": "namespace",
      "value": "default",
      "description": "Namespace name."
    },
    {
      "key": "workload_uid",
      "value": "",
      "description": "k8s workload metadata.uid."
    },
    {
      "key": "node_uid",
      "value": "",
      "description": "k8s node metadata.uid."
    },
    {
      "key": "node_group_name",
      "value": "",
      "description": "Node-group label value."
    },
    {
      "key": "rec_id",
      "value": "",
      "description": "Recommendation UUID."
    },
    {
      "key": "team_id",
      "value": "",
      "description": "Team UUID."
    },
    {
      "key": "dept_id",
      "value": "",
      "description": "Department UUID."
    },
    {
      "key": "start_epoch",
      "value": "1777593600",
      "description": "Cost-trend window start (unix epoch seconds, UTC). Example value targets 2026-04-30. Range cap is 5 years."
    },
    {
      "key": "end_epoch",
      "value": "1779407999",
      "description": "Cost-trend window end (unix epoch seconds, UTC). Example value targets 2026-05-21. Must be > start_epoch."
    },
    {
      "key": "focus_from",
      "value": "2026-01-01",
      "description": "FOCUS export window start, inclusive (YYYY-MM-DD, UTC)."
    },
    {
      "key": "focus_to",
      "value": "2026-02-01",
      "description": "FOCUS export window end, EXCLUSIVE (YYYY-MM-DD, UTC)."
    }
  ],
  "item": [
    {
      "name": "Health (unauth)",
      "item": [
        {
          "name": "GET /health",
          "request": {
            "method": "GET",
            "auth": {
              "type": "noauth"
            },
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/health",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "health"
              ]
            }
          }
        },
        {
          "name": "GET /health/live",
          "request": {
            "method": "GET",
            "auth": {
              "type": "noauth"
            },
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/health/live",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "health",
                "live"
              ]
            }
          }
        },
        {
          "name": "GET /health/ready",
          "request": {
            "method": "GET",
            "auth": {
              "type": "noauth"
            },
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/health/ready",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "health",
                "ready"
              ]
            }
          }
        }
      ]
    },
    {
      "name": "API spec / docs (unauth)",
      "item": [
        {
          "name": "GET /v1/openapi.json",
          "request": {
            "method": "GET",
            "auth": {
              "type": "noauth"
            },
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/openapi.json",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "openapi.json"
              ]
            }
          }
        },
        {
          "name": "GET /v1/openapi.yaml",
          "request": {
            "method": "GET",
            "auth": {
              "type": "noauth"
            },
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/openapi.yaml",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "openapi.yaml"
              ]
            }
          }
        },
        {
          "name": "GET /v1/docs (Swagger UI)",
          "request": {
            "method": "GET",
            "auth": {
              "type": "noauth"
            },
            "header": [
              {
                "key": "Accept",
                "value": "text/html"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/v1/docs",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "docs"
              ]
            }
          }
        }
      ]
    },
    {
      "name": "Organization",
      "description": "Tenant snapshot, dashboard, settings. Scope: organization:read.",
      "item": [
        {
          "name": "GET /v1/organization",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/organization",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "organization"
              ],
              "query": [
                {
                  "key": "basis",
                  "value": "legacy",
                  "description": "legacy (default) | all — cost basis; see the collection description",
                  "disabled": true
                }
              ]
            },
            "description": "Tenant snapshot: capacity + utilization + counts + run rate. REJECTS ?cost_mode=."
          }
        },
        {
          "name": "GET /v1/organization/dashboard",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/organization/dashboard?cost_mode=fully_loaded&top_clusters_limit=5",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "organization",
                "dashboard"
              ],
              "query": [
                {
                  "key": "cost_mode",
                  "value": "fully_loaded",
                  "description": "fully_loaded | workload_only"
                },
                {
                  "key": "top_clusters_limit",
                  "value": "5",
                  "description": "1..20"
                },
                {
                  "key": "basis",
                  "value": "legacy",
                  "description": "legacy (default) | all — cost basis; see the collection description",
                  "disabled": true
                }
              ]
            },
            "description": "Dashboard with measured MTD cost (at the requested cost_mode), savings, and top clusters ranked by MTD."
          }
        }
      ]
    },
    {
      "name": "Clusters",
      "description": "Scope: clusters:read.",
      "item": [
        {
          "name": "GET /v1/clusters",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/clusters?limit=50",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "clusters"
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "50"
                },
                {
                  "key": "cursor",
                  "value": "",
                  "disabled": true
                },
                {
                  "key": "include_total",
                  "value": "true",
                  "disabled": true
                },
                {
                  "key": "provider",
                  "value": "aws",
                  "disabled": true
                },
                {
                  "key": "region",
                  "value": "eu-west-1",
                  "disabled": true
                },
                {
                  "key": "environment",
                  "value": "production",
                  "disabled": true
                },
                {
                  "key": "status",
                  "value": "active",
                  "disabled": true
                },
                {
                  "key": "basis",
                  "value": "legacy",
                  "description": "legacy (default) | all — cost basis; see the collection description",
                  "disabled": true
                }
              ]
            },
            "description": "Sorted by cost DESC by default. REJECTS ?cost_mode=."
          }
        },
        {
          "name": "GET /v1/clusters/{cluster_id}",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/clusters/{{cluster_id}}",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "clusters",
                "{{cluster_id}}"
              ],
              "query": [
                {
                  "key": "basis",
                  "value": "legacy",
                  "description": "legacy (default) | all — cost basis; see the collection description",
                  "disabled": true
                }
              ]
            }
          }
        }
      ]
    },
    {
      "name": "Namespaces",
      "description": "Scope: namespaces:read.",
      "item": [
        {
          "name": "GET /v1/clusters/{cluster_id}/namespaces",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/clusters/{{cluster_id}}/namespaces?limit=50&cost_mode=fully_loaded",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "clusters",
                "{{cluster_id}}",
                "namespaces"
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "50"
                },
                {
                  "key": "include_total",
                  "value": "true",
                  "disabled": true
                },
                {
                  "key": "cost_mode",
                  "value": "fully_loaded"
                },
                {
                  "key": "min_cost_hourly",
                  "value": "",
                  "disabled": true
                },
                {
                  "key": "basis",
                  "value": "legacy",
                  "description": "legacy (default) | all — cost basis; see the collection description",
                  "disabled": true
                }
              ]
            }
          }
        },
        {
          "name": "GET /v1/clusters/{cluster_id}/namespaces/{namespace}",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/clusters/{{cluster_id}}/namespaces/{{namespace}}",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "clusters",
                "{{cluster_id}}",
                "namespaces",
                "{{namespace}}"
              ],
              "query": [
                {
                  "key": "basis",
                  "value": "legacy",
                  "description": "legacy (default) | all — cost basis; see the collection description",
                  "disabled": true
                }
              ]
            }
          }
        },
        {
          "name": "GET /v1/namespaces (cross-cluster)",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/namespaces?limit=50&cost_mode=fully_loaded",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "namespaces"
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "50"
                },
                {
                  "key": "include_total",
                  "value": "true",
                  "disabled": true
                },
                {
                  "key": "cost_mode",
                  "value": "fully_loaded"
                },
                {
                  "key": "cluster_id",
                  "value": "{{cluster_id}}",
                  "disabled": true
                },
                {
                  "key": "basis",
                  "value": "legacy",
                  "description": "legacy (default) | all — cost basis; see the collection description",
                  "disabled": true
                }
              ]
            }
          }
        }
      ]
    },
    {
      "name": "Workloads",
      "description": "Scope: workloads:read.",
      "item": [
        {
          "name": "GET /v1/workloads (cross-cluster)",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/workloads?limit=50&cost_mode=fully_loaded",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "workloads"
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "50"
                },
                {
                  "key": "cursor",
                  "value": "",
                  "disabled": true
                },
                {
                  "key": "include_total",
                  "value": "true",
                  "disabled": true
                },
                {
                  "key": "cost_mode",
                  "value": "fully_loaded"
                },
                {
                  "key": "cluster_id",
                  "value": "{{cluster_id}}",
                  "disabled": true
                },
                {
                  "key": "namespace",
                  "value": "",
                  "disabled": true
                },
                {
                  "key": "kind",
                  "value": "Deployment,StatefulSet",
                  "disabled": true
                },
                {
                  "key": "has_hpa",
                  "value": "true",
                  "disabled": true
                },
                {
                  "key": "team",
                  "value": "",
                  "description": "Filter by team name (csv).",
                  "disabled": true
                },
                {
                  "key": "department",
                  "value": "",
                  "description": "Filter by department name (csv).",
                  "disabled": true
                },
                {
                  "key": "min_cost_hourly",
                  "value": "",
                  "disabled": true
                },
                {
                  "key": "basis",
                  "value": "legacy",
                  "description": "legacy (default) | all — cost basis; see the collection description",
                  "disabled": true
                }
              ]
            }
          }
        },
        {
          "name": "GET /v1/clusters/{cluster_id}/workloads",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/clusters/{{cluster_id}}/workloads?limit=50",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "clusters",
                "{{cluster_id}}",
                "workloads"
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "50"
                },
                {
                  "key": "cursor",
                  "value": "",
                  "disabled": true
                },
                {
                  "key": "include_total",
                  "value": "true",
                  "disabled": true
                },
                {
                  "key": "cost_mode",
                  "value": "fully_loaded",
                  "disabled": true
                },
                {
                  "key": "namespace",
                  "value": "",
                  "disabled": true
                },
                {
                  "key": "kind",
                  "value": "Deployment",
                  "disabled": true
                },
                {
                  "key": "team",
                  "value": "",
                  "disabled": true
                },
                {
                  "key": "department",
                  "value": "",
                  "disabled": true
                },
                {
                  "key": "basis",
                  "value": "legacy",
                  "description": "legacy (default) | all — cost basis; see the collection description",
                  "disabled": true
                }
              ]
            }
          }
        },
        {
          "name": "GET /v1/workloads/{workload_uid}",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/workloads/{{workload_uid}}",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "workloads",
                "{{workload_uid}}"
              ],
              "query": [
                {
                  "key": "basis",
                  "value": "legacy",
                  "description": "legacy (default) | all — cost basis; see the collection description",
                  "disabled": true
                }
              ]
            }
          }
        },
        {
          "name": "GET /v1/workloads/{workload_uid}/pods",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/workloads/{{workload_uid}}/pods?limit=50",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "workloads",
                "{{workload_uid}}",
                "pods"
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "50"
                },
                {
                  "key": "cursor",
                  "value": "",
                  "disabled": true
                },
                {
                  "key": "include_total",
                  "value": "true",
                  "disabled": true
                },
                {
                  "key": "cost_mode",
                  "value": "fully_loaded",
                  "disabled": true
                },
                {
                  "key": "namespace",
                  "value": "",
                  "disabled": true
                },
                {
                  "key": "node_uid",
                  "value": "",
                  "disabled": true
                },
                {
                  "key": "phase",
                  "value": "Running",
                  "disabled": true
                },
                {
                  "key": "qos_class",
                  "value": "Burstable",
                  "disabled": true
                },
                {
                  "key": "has_hostpath",
                  "value": "true",
                  "disabled": true
                },
                {
                  "key": "has_emptydir",
                  "value": "true",
                  "disabled": true
                },
                {
                  "key": "host_network",
                  "value": "false",
                  "disabled": true
                },
                {
                  "key": "basis",
                  "value": "legacy",
                  "description": "legacy (default) | all — cost basis; see the collection description",
                  "disabled": true
                }
              ]
            }
          }
        }
      ]
    },
    {
      "name": "Nodes",
      "description": "Scope: nodes:read. REJECTS ?cost_mode= (single physical bill).",
      "item": [
        {
          "name": "GET /v1/nodes (cross-cluster)",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/nodes?limit=50",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "nodes"
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "50"
                },
                {
                  "key": "include_total",
                  "value": "true",
                  "disabled": true
                },
                {
                  "key": "cluster_id",
                  "value": "{{cluster_id}}",
                  "disabled": true
                },
                {
                  "key": "node_group",
                  "value": "",
                  "disabled": true
                },
                {
                  "key": "instance_type",
                  "value": "m5.2xlarge",
                  "disabled": true
                },
                {
                  "key": "zone",
                  "value": "",
                  "disabled": true
                },
                {
                  "key": "is_spot",
                  "value": "true",
                  "disabled": true
                },
                {
                  "key": "is_ready",
                  "value": "true",
                  "disabled": true
                },
                {
                  "key": "architecture",
                  "value": "amd64",
                  "disabled": true
                },
                {
                  "key": "capacity_type",
                  "value": "on-demand,spot",
                  "disabled": true
                },
                {
                  "key": "basis",
                  "value": "legacy",
                  "description": "legacy (default) | all — cost basis; see the collection description",
                  "disabled": true
                }
              ]
            }
          }
        },
        {
          "name": "GET /v1/clusters/{cluster_id}/nodes",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/clusters/{{cluster_id}}/nodes?limit=50",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "clusters",
                "{{cluster_id}}",
                "nodes"
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "50"
                },
                {
                  "key": "include_total",
                  "value": "true",
                  "disabled": true
                },
                {
                  "key": "basis",
                  "value": "legacy",
                  "description": "legacy (default) | all — cost basis; see the collection description",
                  "disabled": true
                }
              ]
            }
          }
        },
        {
          "name": "GET /v1/nodes/{node_uid}",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/nodes/{{node_uid}}",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "nodes",
                "{{node_uid}}"
              ],
              "query": [
                {
                  "key": "basis",
                  "value": "legacy",
                  "description": "legacy (default) | all — cost basis; see the collection description",
                  "disabled": true
                }
              ]
            }
          }
        }
      ]
    },
    {
      "name": "Node groups",
      "description": "Scope: nodes:read. REJECTS ?cost_mode= (node-group cost is the sum of physical nodes — one cloud bill, mode-invariant). Response carries `instance_types` as a string array (plural).",
      "item": [
        {
          "name": "GET /v1/node-groups (cross-cluster)",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/node-groups",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "node-groups"
              ],
              "query": [
                {
                  "key": "cluster_id",
                  "value": "{{cluster_id}}",
                  "disabled": true
                },
                {
                  "key": "basis",
                  "value": "legacy",
                  "description": "legacy (default) | all — cost basis; see the collection description",
                  "disabled": true
                }
              ]
            }
          }
        },
        {
          "name": "GET /v1/clusters/{cluster_id}/node-groups",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/clusters/{{cluster_id}}/node-groups",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "clusters",
                "{{cluster_id}}",
                "node-groups"
              ],
              "query": [
                {
                  "key": "basis",
                  "value": "legacy",
                  "description": "legacy (default) | all — cost basis; see the collection description",
                  "disabled": true
                }
              ]
            }
          }
        },
        {
          "name": "GET /v1/clusters/{cluster_id}/node-groups/{name}",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/clusters/{{cluster_id}}/node-groups/{{node_group_name}}",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "clusters",
                "{{cluster_id}}",
                "node-groups",
                "{{node_group_name}}"
              ],
              "query": [
                {
                  "key": "basis",
                  "value": "legacy",
                  "description": "legacy (default) | all — cost basis; see the collection description",
                  "disabled": true
                }
              ]
            }
          }
        }
      ]
    },
    {
      "name": "Recommendations",
      "description": "Scope: recommendations:read. REJECTS ?cost_mode=.",
      "item": [
        {
          "name": "GET /v1/recommendations",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/recommendations?limit=20",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "recommendations"
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "20"
                },
                {
                  "key": "include_total",
                  "value": "true",
                  "disabled": true
                },
                {
                  "key": "cluster_id",
                  "value": "{{cluster_id}}",
                  "disabled": true
                },
                {
                  "key": "namespace",
                  "value": "",
                  "disabled": true
                },
                {
                  "key": "recommendation_type",
                  "value": "workload_rightsizing",
                  "disabled": true
                },
                {
                  "key": "status",
                  "value": "pending,dismissed",
                  "disabled": true
                },
                {
                  "key": "risk_level",
                  "value": "low,medium",
                  "disabled": true
                },
                {
                  "key": "priority",
                  "value": "high,medium",
                  "disabled": true
                },
                {
                  "key": "resource_type",
                  "value": "Deployment",
                  "disabled": true
                },
                {
                  "key": "workload_uid",
                  "value": "{{workload_uid}}",
                  "disabled": true
                },
                {
                  "key": "min_savings_hourly",
                  "value": "0.01",
                  "disabled": true
                },
                {
                  "key": "basis",
                  "value": "legacy",
                  "description": "legacy (default) | all — cost basis; see the collection description",
                  "disabled": true
                }
              ]
            }
          }
        },
        {
          "name": "GET /v1/recommendations/{rec_id}",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/recommendations/{{rec_id}}",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "recommendations",
                "{{rec_id}}"
              ],
              "query": [
                {
                  "key": "basis",
                  "value": "legacy",
                  "description": "legacy (default) | all — cost basis; see the collection description",
                  "disabled": true
                }
              ]
            }
          }
        }
      ]
    },
    {
      "name": "Teams",
      "description": "Scope: teams:read.",
      "item": [
        {
          "name": "GET /v1/teams",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/teams?limit=20&cost_mode=fully_loaded",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "teams"
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "20"
                },
                {
                  "key": "cost_mode",
                  "value": "fully_loaded",
                  "description": "fully_loaded | workload_only"
                },
                {
                  "key": "cursor",
                  "value": "",
                  "disabled": true
                },
                {
                  "key": "department_id",
                  "value": "{{dept_id}}",
                  "disabled": true
                },
                {
                  "key": "origin",
                  "value": "kubeadapt",
                  "disabled": true
                },
                {
                  "key": "basis",
                  "value": "legacy",
                  "description": "legacy (default) | all — cost basis; see the collection description",
                  "disabled": true
                }
              ]
            }
          }
        },
        {
          "name": "GET /v1/teams/{team_id}",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/teams/{{team_id}}?cost_mode=fully_loaded",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "teams",
                "{{team_id}}"
              ],
              "query": [
                {
                  "key": "cost_mode",
                  "value": "fully_loaded",
                  "description": "fully_loaded | workload_only"
                },
                {
                  "key": "basis",
                  "value": "legacy",
                  "description": "legacy (default) | all — cost basis; see the collection description",
                  "disabled": true
                }
              ]
            }
          }
        },
        {
          "name": "GET /v1/teams/{team_id}/assignments",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/teams/{{team_id}}/assignments?limit=50",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "teams",
                "{{team_id}}",
                "assignments"
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "50"
                },
                {
                  "key": "cursor",
                  "value": "",
                  "disabled": true
                },
                {
                  "key": "entity_type",
                  "value": "workload",
                  "disabled": true
                },
                {
                  "key": "cluster_id",
                  "value": "{{cluster_id}}",
                  "disabled": true
                },
                {
                  "key": "source",
                  "value": "user_manual",
                  "disabled": true
                }
              ]
            }
          }
        }
      ]
    },
    {
      "name": "Departments",
      "description": "Scope: departments:read.",
      "item": [
        {
          "name": "GET /v1/departments",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/departments?limit=20&cost_mode=fully_loaded",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "departments"
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "20"
                },
                {
                  "key": "cost_mode",
                  "value": "fully_loaded",
                  "description": "fully_loaded | workload_only"
                },
                {
                  "key": "cursor",
                  "value": "",
                  "disabled": true
                },
                {
                  "key": "origin",
                  "value": "kubeadapt",
                  "disabled": true
                },
                {
                  "key": "basis",
                  "value": "legacy",
                  "description": "legacy (default) | all — cost basis; see the collection description",
                  "disabled": true
                }
              ]
            }
          }
        },
        {
          "name": "GET /v1/departments/{dept_id}",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/departments/{{dept_id}}?cost_mode=fully_loaded",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "departments",
                "{{dept_id}}"
              ],
              "query": [
                {
                  "key": "cost_mode",
                  "value": "fully_loaded",
                  "description": "fully_loaded | workload_only"
                },
                {
                  "key": "basis",
                  "value": "legacy",
                  "description": "legacy (default) | all — cost basis; see the collection description",
                  "disabled": true
                }
              ]
            }
          }
        }
      ]
    },
    {
      "name": "Cost Explorer",
      "description": "Scope: cost_explorer:read. POST a cost-explorer query. `cluster_ids` in the body is intersected with the API key's allowed cluster set before forwarding. `end_date` is INCLUSIVE. Request body is capped at 1 MiB.",
      "item": [
        {
          "name": "POST /v1/cost-explorer/query",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"group_by\": \"namespace\",\n  \"cost_mode\": \"fully_loaded\",\n  \"basis\": \"legacy\",\n  \"start_date\": \"2026-04-21\",\n  \"end_date\": \"2026-05-21\",\n  \"page\": 1,\n  \"per_page\": 10\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/v1/cost-explorer/query",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "cost-explorer",
                "query"
              ],
              "query": [
                {
                  "key": "basis",
                  "value": "legacy",
                  "description": "legacy (default) | all — cost basis; see the collection description",
                  "disabled": true
                }
              ]
            },
            "description": "Run a cost-explorer query. Body fields: group_by (workload|namespace|controller_kind|pod|container|deployment|statefulset|daemonset|node — the `cluster` axis is not currently available on the public API, and `instance_type` is a filter field rather than an aggregation dimension), cost_mode (fully_loaded|workload_only), start_date/end_date (YYYY-MM-DD, end_date inclusive and >= start_date), page/per_page, sort_by/sort_order (asc|desc), search, view_mode (detail|grouped), filter_expression, cluster_ids[], projected, export, granularity (daily|weekly|monthly — hourly is not supported on cost-explorer; use cost-trend endpoints for sub-day data)."
          }
        }
      ]
    },
    {
      "name": "Cost Trends",
      "description": "Cost-trend time series for clusters, namespaces, workloads, node-groups, and the organization dashboard. `run_rate` is available at every granularity including hourly; `breakdown` starts at daily, as there is no sub-day figure for it. Response shape is uniform (2-field bucket: bucket_start, total_cost — there is no cpu_cost/ram_cost/gpu_cost breakdown). Defaults per scope: cluster + organization → cost_mode=fully_loaded; namespace + workload → cost_mode=workload_only. Node-group REJECTS ?cost_mode= (nodes carry a single physical cloud bill, so the aggregate is mode-invariant). `type=breakdown` rejects `granularity=hourly` (that mode has no sub-day data). Explicit `granularity=hourly` is capped at 60-day windows; `auto` (default) resolves to hourly for ≤14d ranges and daily otherwise.",
      "item": [
        {
          "name": "GET /v1/clusters/{cluster_id}/cost-trend",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/clusters/{{cluster_id}}/cost-trend?start={{start_epoch}}&end={{end_epoch}}&type=run_rate&granularity=auto",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "clusters",
                "{{cluster_id}}",
                "cost-trend"
              ],
              "query": [
                {
                  "key": "start",
                  "value": "{{start_epoch}}",
                  "description": "Window start, unix epoch seconds (UTC). Required."
                },
                {
                  "key": "end",
                  "value": "{{end_epoch}}",
                  "description": "Window end, unix epoch seconds (UTC). Required. Must be > start. Range cap 5 years."
                },
                {
                  "key": "type",
                  "value": "run_rate",
                  "description": "run_rate | breakdown. Default run_rate. breakdown rejects hourly granularity."
                },
                {
                  "key": "granularity",
                  "value": "auto",
                  "description": "auto | hourly | daily | weekly | monthly. Default auto (≤14d→hourly, else daily). Explicit hourly capped at 60d windows."
                },
                {
                  "key": "cost_mode",
                  "value": "fully_loaded",
                  "description": "fully_loaded (default for cluster) | workload_only.",
                  "disabled": true
                },
                {
                  "key": "basis",
                  "value": "legacy",
                  "description": "legacy (default) | all — cost basis; see the collection description",
                  "disabled": true
                }
              ]
            },
            "description": "Cluster-level cost trend. Required scope: `clusters:read`. Default cost_mode is fully_loaded — meta.cost_mode echoes the applied mode."
          }
        },
        {
          "name": "GET /v1/clusters/{cluster_id}/namespaces/{namespace}/cost-trend",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/clusters/{{cluster_id}}/namespaces/{{namespace}}/cost-trend?start={{start_epoch}}&end={{end_epoch}}&type=run_rate&granularity=auto",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "clusters",
                "{{cluster_id}}",
                "namespaces",
                "{{namespace}}",
                "cost-trend"
              ],
              "query": [
                {
                  "key": "start",
                  "value": "{{start_epoch}}",
                  "description": "Window start, unix epoch seconds (UTC). Required."
                },
                {
                  "key": "end",
                  "value": "{{end_epoch}}",
                  "description": "Window end, unix epoch seconds (UTC). Required."
                },
                {
                  "key": "type",
                  "value": "run_rate",
                  "description": "run_rate | breakdown. Default run_rate."
                },
                {
                  "key": "granularity",
                  "value": "auto",
                  "description": "auto | hourly | daily | weekly | monthly. Default auto."
                },
                {
                  "key": "cost_mode",
                  "value": "workload_only",
                  "description": "fully_loaded | workload_only (default for namespace/workload).",
                  "disabled": true
                },
                {
                  "key": "basis",
                  "value": "legacy",
                  "description": "legacy (default) | all — cost basis; see the collection description",
                  "disabled": true
                }
              ]
            },
            "description": "Namespace-level cost trend within a cluster. Required scope: `namespaces:read`. Default cost_mode is workload_only (entity detail view excludes idle/overhead share). 404 NAMESPACE_NOT_FOUND if the namespace name does not exist in that cluster."
          }
        },
        {
          "name": "GET /v1/clusters/{cluster_id}/workloads/by-uid/{workload_uid}/cost-trend",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/clusters/{{cluster_id}}/workloads/by-uid/{{workload_uid}}/cost-trend?start={{start_epoch}}&end={{end_epoch}}&type=run_rate&granularity=auto",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "clusters",
                "{{cluster_id}}",
                "workloads",
                "by-uid",
                "{{workload_uid}}",
                "cost-trend"
              ],
              "query": [
                {
                  "key": "start",
                  "value": "{{start_epoch}}",
                  "description": "Window start, unix epoch seconds (UTC). Required."
                },
                {
                  "key": "end",
                  "value": "{{end_epoch}}",
                  "description": "Window end, unix epoch seconds (UTC). Required."
                },
                {
                  "key": "type",
                  "value": "run_rate",
                  "description": "run_rate | breakdown. Default run_rate."
                },
                {
                  "key": "granularity",
                  "value": "auto",
                  "description": "auto | hourly | daily | weekly | monthly. Default auto."
                },
                {
                  "key": "cost_mode",
                  "value": "workload_only",
                  "description": "fully_loaded | workload_only (default workload_only).",
                  "disabled": true
                },
                {
                  "key": "basis",
                  "value": "legacy",
                  "description": "legacy (default) | all — cost basis; see the collection description",
                  "disabled": true
                }
              ]
            },
            "description": "Workload-level cost trend identified by k8s metadata.uid. Required scope: `workloads:read`. Default cost_mode is workload_only. 404 WORKLOAD_NOT_FOUND if the UID is unknown or belongs to a different cluster."
          }
        },
        {
          "name": "GET /v1/clusters/{cluster_id}/node-groups/{name}/cost-trend",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/clusters/{{cluster_id}}/node-groups/{{node_group_name}}/cost-trend?start={{start_epoch}}&end={{end_epoch}}&type=run_rate&granularity=auto",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "clusters",
                "{{cluster_id}}",
                "node-groups",
                "{{node_group_name}}",
                "cost-trend"
              ],
              "query": [
                {
                  "key": "start",
                  "value": "{{start_epoch}}",
                  "description": "Window start, unix epoch seconds (UTC). Required."
                },
                {
                  "key": "end",
                  "value": "{{end_epoch}}",
                  "description": "Window end, unix epoch seconds (UTC). Required."
                },
                {
                  "key": "type",
                  "value": "run_rate",
                  "description": "run_rate | breakdown. Default run_rate."
                },
                {
                  "key": "granularity",
                  "value": "auto",
                  "description": "auto | hourly | daily | weekly | monthly. Default auto."
                },
                {
                  "key": "basis",
                  "value": "legacy",
                  "description": "legacy (default) | all — cost basis; see the collection description",
                  "disabled": true
                }
              ]
            },
            "description": "Node-group cost trend (union of nodes sharing the node_group label). Required scope: `nodes:read`. REJECTS ?cost_mode= (nodes carry a single physical cloud bill, so the aggregate is mode-invariant); meta.cost_mode is omitted from the response. URL-encode names containing `:` or `,`. 404 NODE_GROUP_NOT_FOUND if no nodes carry the label in that cluster."
          }
        },
        {
          "name": "GET /v1/organizations/dashboard/cost-trend",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/organizations/dashboard/cost-trend?start={{start_epoch}}&end={{end_epoch}}&type=breakdown&granularity=daily",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "organizations",
                "dashboard",
                "cost-trend"
              ],
              "query": [
                {
                  "key": "start",
                  "value": "{{start_epoch}}",
                  "description": "Window start, unix epoch seconds (UTC). Required."
                },
                {
                  "key": "end",
                  "value": "{{end_epoch}}",
                  "description": "Window end, unix epoch seconds (UTC). Required."
                },
                {
                  "key": "type",
                  "value": "breakdown",
                  "description": "run_rate | breakdown. Default run_rate."
                },
                {
                  "key": "granularity",
                  "value": "daily",
                  "description": "auto | hourly | daily | weekly | monthly. Default auto."
                },
                {
                  "key": "cost_mode",
                  "value": "fully_loaded",
                  "description": "fully_loaded (default for organization) | workload_only.",
                  "disabled": true
                },
                {
                  "key": "basis",
                  "value": "legacy",
                  "description": "legacy (default) | all — cost basis; see the collection description",
                  "disabled": true
                }
              ]
            },
            "description": "Fleet-wide cost trend across all clusters the API key is permitted to see. Required scope: `organization:read`. Default cost_mode is fully_loaded. Non-admin keys with an empty allowed-cluster list receive 200 with `points: []` and `excluded_cluster_ids: []` (NOT 403). The example default values use `type=breakdown&granularity=daily` matching the reference dashboard query."
          }
        }
      ]
    },
    {
      "name": "Exports (FOCUS)",
      "description": "The FOCUS 1.4 Cost and Usage artifact and the schema that describes it — the same artifact the Kubeadapt dashboard produces. The window is half-open (from inclusive, to exclusive), the response streams with no page cap, and completion is reported in HTTP trailers rather than in the status line.",
      "item": [
        {
          "name": "GET /v1/exports/focus",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/exports/focus?from={{focus_from}}&to={{focus_to}}&format=csv&grain=workload&idle=unallocated",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "exports",
                "focus"
              ],
              "query": [
                {
                  "key": "from",
                  "value": "{{focus_from}}",
                  "description": "First day of the window, INCLUSIVE. UTC date YYYY-MM-DD. Required."
                },
                {
                  "key": "to",
                  "value": "{{focus_to}}",
                  "description": "Day AFTER the last day, EXCLUSIVE. UTC date YYYY-MM-DD. Required. Max window 3660 days."
                },
                {
                  "key": "format",
                  "value": "csv",
                  "description": "csv (default) | jsonl | parquet."
                },
                {
                  "key": "grain",
                  "value": "workload",
                  "description": "workload (default) | namespace."
                },
                {
                  "key": "idle",
                  "value": "unallocated",
                  "description": "unallocated (default) | apportioned."
                },
                {
                  "key": "columns",
                  "value": "",
                  "description": "Comma-separated FOCUS column names. Omit for the full schema; an unknown name is a 422.",
                  "disabled": true
                },
                {
                  "key": "cluster_id",
                  "value": "{{cluster_id}}",
                  "description": "Cluster UUID. Repeatable; a comma-separated list also works. Omit for every cluster the key may read.",
                  "disabled": true
                }
              ]
            },
            "description": "Streams the FOCUS 1.4 Cost and Usage artifact. Required scope: `cost_explorer:read`.\n\nRate limit: 6 requests per minute per API key, on top of the service-wide limit — one request streams a whole artifact. To pull more history, widen the window rather than looping.\n\nThe status line is written before the first row, so a 200 means the export STARTED. Read the trailers to learn whether it finished: `X-Export-Status` is `complete` or `error`, and `error` means the file is SHORT. `X-Export-Row-Count` and `X-Export-Ledger-Rows` carry the counts. Before the body: `X-Focus-Version`, `X-Focus-Schema-Id`, `X-Focus-Dataset-Instance-Id`, `X-Export-Partial`.\n\n`basis` is not a choice here: the artifact always carries every component the cost ledger holds, so `basis=all` is accepted and `basis=legacy` is a 422."
          }
        },
        {
          "name": "GET /v1/exports/focus/schema",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/exports/focus/schema?grain=workload&idle=unallocated",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "exports",
                "focus",
                "schema"
              ],
              "query": [
                {
                  "key": "grain",
                  "value": "workload",
                  "description": "workload (default) | namespace."
                },
                {
                  "key": "idle",
                  "value": "unallocated",
                  "description": "unallocated (default) | apportioned."
                },
                {
                  "key": "columns",
                  "value": "",
                  "description": "Comma-separated FOCUS column names. Omit for the full schema.",
                  "disabled": true
                }
              ]
            },
            "description": "The FOCUS 1.4 metadata object for one export configuration, through the standard envelope. Fetch it once to learn the column set, the handling declarations and what your key's cluster scope excludes. Describes a configuration, not a window: `from`, `to` and `cluster_id` are not read here — the schema always describes what this key can pull. Required scope: `cost_explorer:read`."
          }
        }
      ]
    }
  ]
}
