API Gateway

Note

Version: v2
Base URL: https://your.iax.fqdn.com/api/obcerv-app-api-gateway/v2

API Gateway exposes a REST API for the ITRS Analytics platform. Integrations and apps call these endpoints to query entities, metrics, analytics, and lookups.

Rate limiting Copied

All public REST endpoints on the API Gateway are subject to rate limiting. The exact limit is deployment-specific and configured by your ITRS Analytics administrators. This protects the platform when many clients or automated jobs send traffic at once.

The individual endpoint sections below focus on success and validation errors (400, 404, and so on). 429 can apply to any of them when rate limits are hit.

Helm configuration for rate limiting Copied

If you deploy or upgrade the API Gateway with Helm, rate limits are not changed inside the application image. They are applied at runtime from environment variables on the pod environment. You can set these variables through the chart’s env values, which are a list of name / value pairs, typically in a values file passed to helm install or helm upgrade with -f.

Rate limit environment variables reference Copied

Use this table when you edit chart defaults or cluster-specific overrides. The same RL_* names appear in the chart env list in both cases.

Variable pattern Purpose
RL_DEFAULT_LIMIT_FOR_PERIOD and RL_DEFAULT_LIMIT_REFRESH_PERIOD Affect any instance that only overrides via nested defaults in application.yml.
RL_<RPC_NAME>_LIMIT_FOR_PERIOD and RL_<RPC_NAME>_LIMIT_REFRESH_PERIOD Per-RPC keys follow this pattern, where the RPC name matches the Resilience4j instance key. For example, GET_ENTITIES in the environment variable name for getEntities.

Note

The values for limit-refresh-period must be valid Spring Boot duration strings (for example, 10s, 1m) to match what application.yml expects. Quote numeric limits and durations as strings in YAML (for example, value: "50" and value: "10s").

Edit default rate limits in the Helm chart Copied

Follow this to change the chart’s default values.yaml and publish a new chart version, so installs that use the chart without extra overrides pick up the new RL_* rate limits.

  1. Open helm/src/main/resources/values.yaml in the API Gateway Helm chart module.
  2. Under the env: key, locate the RL_* entries after the comment # Rate limiting - default config.
  3. Change the value strings for the limits you need, using the variable names in the table above.
  4. Commit and run your normal Helm build or release pipeline to publish the updated chart.

Overrides at install or upgrade Copied

Follow this to change rate limits for a running deployment by passing or updating a values file at helm install or helm upgrade time, without editing or republishing the chart source.

  1. Supply an additional values file using helm -f.
  2. Alternatively, set the equivalent values in your GitOps configuration or parent chart so the rendered workload includes the desired RL_* environment variables.

Note

env is defined as a YAML list. By default, Helm replaces lists when both the base chart and an override define the same field, rather than merging them element by element.

To avoid this, you can:

  • Copy the chart’s env block from values.yaml into your override file, update only the RL_* value fields while preserving all other required entries, and supply the file using -f.
  • If the API Gateway is deployed as a subchart of a larger product chart, place the same structure under the appropriate subchart values key, which is the key that maps to this chart’s root values. Refer to that product’s deployment documentation for the correct key.

Override file format (full-values style) Copied

Follow this when you author or edit a values file for helm install or helm upgrade (-f) so its layout matches the chart, your RL_* entries stay valid, and merges with other value layers stay predictable.

When you pass -f my-values.yaml, that file is typically a custom values file that mirrors the chart’s default top-level structure. It may be based on the chart’s default values.yaml, the output of helm get values -o yaml from an existing release, or a consolidated file you maintain alongside the installation.

When creating a custom values file, it is important to stay consistent with the chart’s expected values structure. For example, a typical structure contains the following keys:

Root key Role
docker registry for the image pull
env List of Kubernetes-style environment variables. Each variable is one list item: - name: … then value: … on the next line. This follows the same structure as in the chart’s default values.yaml.
  • name — may be written quoted ("RL_DEFAULT_LIMIT_FOR_PERIOD") or unquoted (RL_DEFAULT_LIMIT_FOR_PERIOD), like in a typical exported values file.
  • value — quote numbers and durations as strings ("50", "10s") so Kubernetes passes them unchanged to Spring. Booleans and bare tokens (for example DYNAMIC, P1D) can be unquoted if they are valid YAML scalars and match what the app expects.
image repository, tag
ingress path
internal Service mesh (mesh.resources, mesh.inbound.timeout, …)
resources Pod CPU / memory requests and limits
service name (Kubernetes Service name)
Nested Web Platform keys Optional defaults for shared charts (often global: {} placeholders)

Abbreviated example:

docker:
  registry: your-registry.example.com

env:
  - name: ANALYTICS_CACHE_ENABLED
    value: "true"
  - name: OBCERV_APP_APISERVICE_SERVICE_GRPC_DEADLINE_SECONDS
    value: "60"
  # … keep every other non-RL variable your deployment needs …
  - name: RL_DEFAULT_LIMIT_FOR_PERIOD
    value: "50"
  - name: RL_DEFAULT_LIMIT_REFRESH_PERIOD
    value: "10s"
  - name: RL_GET_METRICS_LIMIT_FOR_PERIOD
    value: "100"
  - name: RL_GET_METRICS_LIMIT_REFRESH_PERIOD
    value: "10s"
  # … one LIMIT_FOR_PERIOD + one LIMIT_REFRESH_PERIOD per RPC you override …

image:
  repository: your-org/obcerv-app-api-gateway
  tag: "2.9.0"

ingress:
  path: /obcerv-app-api-gateway/

internal:
  mesh:
    inbound:
      timeout:
        connect: 60s
    resources:
      limits:
        cpu: "1"
        memory: 2Gi
      requests:
        cpu: 20m
        memory: 32Mi

resources:
  limits:
    cpu: 1500m
    memory: 2Gi
  requests:
    cpu: 100m
    memory: 256Mi

service:
  name: obcerv-app-api-gateway

# Optional: nested keys for shared Web Platform charts, if your product uses them
obcerv-app-helm-charts-spring-wp:
  global: {}
  obcerv-app-helm-charts-common:
    global: {}

Copy the complete env list from the chart defaults or from your cluster’s exported values, then change only the value fields you need. Omitting unrelated root keys is only safe if your Helm invocation still supplies the rest of the values (for example, through another -f layer or chart defaults). Otherwise, keep the same full structure your install already uses.

Note

Rebuilding the application container image is not required to change rate limits. Only the pod environment must be updated for Spring to read the new RL_* values at startup.

Analytics Copied

Get summary statistics grouped by dimensions or attributes Copied

POST /analytics/grouped-summary-statistics

Returns summary statistics grouped by dimensions or attributes over a historical period. The calculation uses a map step (one statistic per bucket per series) and a reduce step (aggregate across buckets).

Parameters Copied

Parameter Type Location Required Description
metric object (TargetMetric) body Namespace and name of the metric
entityFilter object (EntityFilter) body Restrict which entities contribute to the aggregation
from string (date-time) body Start of the range (inclusive)
to string (date-time) body End of the range (exclusive); defaults to now
aggregations array (MapReduceAnalyticsFunction) body Map/reduce aggregation steps to apply
unit integer (enum) body Response unit; only series with a matching base unit are included
groupBy object (SummaryStatisticsGroupBy) body Dimensions and/or attributes to group by

Example Request Copied

{
  "metric": {
    "namespace": "itrsgroup.com/c2/kubernetes-plugin",
    "name": "kube_container_cpu_limit"
  },
  "from": "2023-10-01T09:00:00Z",
  "aggregations": [
    {
      "map": {
        "function": "BUCKET_FUNCTION_LAST"
      },
      "reduce": {
        "function": "BUCKET_FUNCTION_SUM"
      }
    }
  ],
  "unit": "UNIT_MILLICORES",
  "groupBy": {
    "dimensions": [
      "node",
      "container"
    ]
  }
}

Example Response Copied

{
  "unit": "UNIT_MILLICORES",
  "aggregations": [
    {
      "map": {
        "function": "BUCKET_FUNCTION_LAST"
      },
      "reduce": {
        "function": "BUCKET_FUNCTION_SUM"
      }
    }
  ],
  "groups": [
    {
      "values": [
        112521.0
      ],
      "attributes": [
        {
          "namespace": "itrsgroup.com/c2/kubernetes-plugin",
          "name": "kubernetes.io/name",
          "value": "obcerv-operator"
        }
      ],
      "dimensions": [
        {
          "key": "pod",
          "value": "obcerv-operator"
        }
      ]
    }
  ]
}

Response Codes Copied

Get seasonal model for time-series data Copied

POST /analytics/models/seasonal

Returns a seasonal model by aggregating buckets across integer multiples of the supplied periodicity. Use this to compare current behavior to a typical seasonal profile (for example hourly patterns within a week).

Parameters Copied

Parameter Type Location Required Description
metric object (TargetMetric) body Metric to build the model from
entityFilter object (ModelEntityFilter) body Exactly one entity (ordered or unordered dimensions)
latestLookbackTs string (date-time) body Exclusive end of the lookback window (aligned to bucket size)
numPeriods integer body Number of seasonal periods in the lookback
periodicity integer (enum) body Length of one season (must be greater than bucketSize)
bucketSize integer (enum) body Bucket granularity; must divide the periodicity
aggregations object (StatisticalModelAggregations) body Functions to compute per bucket
timezone string body IANA timezone (for example Europe/London) for DST handling

Example Request Copied

{
  "metric": {
    "namespace": "itrsgroup.com/c2/kubernetes-plugin",
    "name": "kube_container_mem_limit_usage"
  },
  "entityFilter": {
    "dimensions": {
      "dimensions": {
        "container": "dpd"
      }
    }
  },
  "latestLookbackTs": "2023-07-21T08:00:00Z",
  "numPeriods": 12,
  "periodicity": "INTERVAL_1_WEEK",
  "bucketSize": "INTERVAL_1_HOUR",
  "aggregations": {
    "functions": [
      {
        "function": "BUCKET_FUNCTION_PERCENTILE",
        "percentile": 5
      },
      {
        "function": "BUCKET_FUNCTION_PERCENTILE",
        "percentile": 95
      },
      {
        "function": "BUCKET_FUNCTION_MIN"
      },
      {
        "function": "BUCKET_FUNCTION_MAX"
      }
    ]
  }
}

Example Response Copied

{
  "unit": "UNIT_PERCENT",
  "dataPoints": [
    {
      "ts": "2023-07-14T00:00:00Z",
      "values": [
        {
          "function": "BUCKET_FUNCTION_PERCENTILE",
          "percentile": 5.0,
          "value": 12.34
        },
        {
          "function": "BUCKET_FUNCTION_PERCENTILE",
          "percentile": 95.0,
          "value": 77.66
        },
        {
          "function": "BUCKET_FUNCTION_MIN",
          "value": 8.12
        },
        {
          "function": "BUCKET_FUNCTION_MAX",
          "value": 89.45
        }
      ],
      "bucketCount": 12
    },
    {
      "ts": "2023-07-14T01:00:00Z",
      "values": [
        {
          "function": "BUCKET_FUNCTION_PERCENTILE",
          "percentile": 5.0,
          "value": 15.22
        },
        {
          "function": "BUCKET_FUNCTION_PERCENTILE",
          "percentile": 95.0,
          "value": 82.11
        },
        {
          "function": "BUCKET_FUNCTION_MIN",
          "value": 9.03
        },
        {
          "function": "BUCKET_FUNCTION_MAX",
          "value": 91.2
        }
      ],
      "bucketCount": 12
    },
    {
      "ts": "2023-07-14T02:00:00Z",
      "values": [
        {
          "function": "BUCKET_FUNCTION_PERCENTILE",
          "percentile": 5.0,
          "value": 18.56
        },
        {
          "function": "BUCKET_FUNCTION_PERCENTILE",
          "percentile": 95.0,
          "value": 79.33
        },
        {
          "function": "BUCKET_FUNCTION_MIN",
          "value": 10.45
        },
        {
          "function": "BUCKET_FUNCTION_MAX",
          "value": 88.9
        }
      ],
      "bucketCount": 11
    }
  ]
}

Response Codes Copied

Get summary statistics for entities Copied

POST /analytics/summary-statistics

Returns summary statistics for one or more entities over a historical period using map–reduce aggregation (same family of operations as grouped statistics, without grouping).

Parameters Copied

Parameter Type Location Required Description
metric object (TargetMetric) body Namespace and name of the metric
entityFilter object (EntityFilter) body Restrict which entities contribute
from string (date-time) body Start of the range (inclusive)
to string (date-time) body End of the range (exclusive); defaults to now
aggregations array (MapReduceAnalyticsFunction) body Map/reduce aggregation steps
unit integer (enum) body Response unit filter

Example Request Copied

{
  "metric": {
    "namespace": "itrsgroup.com/c2/kubernetes-plugin",
    "name": "kube_container_cpu_limit"
  },
  "from": "2023-10-01T09:00:00Z",
  "aggregations": [
    {
      "map": {
        "function": "BUCKET_FUNCTION_LAST"
      },
      "reduce": {
        "function": "BUCKET_FUNCTION_SUM"
      }
    }
  ],
  "unit": "UNIT_MILLICORES"
}

Example Response Copied

{
  "aggregations": [
    {
      "aggregation": {
        "map": {
          "function": "BUCKET_FUNCTION_LAST"
        },
        "reduce": {
          "function": "BUCKET_FUNCTION_SUM"
        }
      },
      "value": 112521.0
    }
  ],
  "unit": "UNIT_MILLICORES"
}

Response Codes Copied

Entities Copied

Get entities Copied

POST /entities

Returns entities that match the filter, including dimensions, attributes, and available metrics for each entity.

Parameters Copied

Parameter Type Location Required Description
filter object (Filter) body Expression or dimensions filter (not both; if both are sent, expression wins). Omit to return all entities up to limit.
limit integer (uint32) body Maximum entities to return; must be 1–1000 when set. Default: 100.

Example Request Copied

{
  "filter": {
    "expression": "cluster='prod-k8s' AND namespace='itrs'",
    "dimensions": [
      {
        "key": "cluster",
        "value": "prod-k8s"
      },
      {
        "key": "namespace",
        "value": "itrs"
      }
    ],
    "mode": 0
  },
  "limit": 100
}

Example Response Copied

{
  "entities": [
    {
      "dimensions": [
        {
          "key": "cluster",
          "value": "prod-k8s"
        },
        {
          "key": "node",
          "value": "worker-1"
        }
      ],
      "attributes": [
        {
          "namespace": "itrsgroup.com/c2/kubernetes-plugin",
          "name": "kubernetes.io/hostname",
          "value": {
            "string": "worker-1.example.com"
          },
          "unit": 0,
          "userWritable": false,
          "inheritable": false,
          "inherited": false
        }
      ],
      "metrics": [
        {
          "namespace": "itrsgroup.com/c2/kubernetes-plugin",
          "name": "kube_node_cpu_capacity",
          "type": "GAUGE",
          "unit": "MILLICORES"
        }
      ]
    }
  ]
}

Response Codes Copied

Get the most recent entity severities Copied

POST /entities/severity/latest

Returns the latest severity per matching entity. Only entities that have a severity value are included.

Parameters Copied

Parameter Type Location Required Description
filter object (Filter) body Expression or dimensions filter
limit integer body Maximum results (Default: 100, Max: 1000)

Example Request Copied

{
  "filter": {
    "expression": "cluster='prod-k8s' AND namespace='itrs'"
  },
  "limit": 100
}

Example Response Copied

{
  "severities": [
    {
      "dimensions": [
        {
          "key": "cluster",
          "value": "prod-k8s"
        },
        {
          "key": "node",
          "value": "worker-1"
        }
      ],
      "severity": "WARNING"
    },
    {
      "dimensions": [
        {
          "key": "cluster",
          "value": "prod-k8s"
        },
        {
          "key": "node",
          "value": "worker-2"
        }
      ],
      "severity": "CRITICAL"
    }
  ]
}

Response Codes Copied

Logs Copied

Get log data Copied

POST /logs/log-data

Returns log lines from a single log source (identified by entity dimensions, log namespace, and log name) over a time range. Optional logFilter narrows by message text, severity, trace/span IDs, or log attributes. Results are ordered by timestamp (newest first unless reverseSort is true).

Parameters Copied

Parameter Type Location Required Description
dimensions array (Dimension) body Entity dimensions for the log source
namespace string body Log source namespace (for example plugin namespace)
name string body Log source file name
from string (date-time) body Range start (inclusive), RFC3339
to string (date-time) body Range end (exclusive); defaults to now
logFilter object (LogFilter) body Message, severity, trace/span, and attribute filters
reverseSort boolean body If true, oldest first; default false (newest first)
maxResults integer body Max entries (default 1000, max 10000)

Example Request Copied

{
  "dimensions": [
    { "key": "cluster", "value": "prod-k8s" },
    { "key": "namespace", "value": "itrs" },
    { "key": "pod", "value": "app-server-1" }
  ],
  "namespace": "itrsgroup.com/c2/kubernetes-plugin",
  "name": "output.log",
  "from": "2026-01-01T08:00:00Z",
  "to": "2026-01-01T12:00:00Z",
  "logFilter": {
    "messageFilters": ["Exception"],
    "includedLogSeverities": ["LOG_SEVERITY_ERROR", "LOG_SEVERITY_CRITICAL"]
  },
  "maxResults": 100
}

Example Response Copied

{
  "logData": [
    {
      "dimensions": [
        { "key": "cluster", "value": "prod-k8s" },
        { "key": "namespace", "value": "itrs" },
        { "key": "pod", "value": "app-server-1" }
      ],
      "namespace": "itrsgroup.com/geneos",
      "name": "/opt/itrs/gateway/gateways/*/gateway.log",
      "timestamp": "2026-01-07T03:59:21.054Z",
      "message": "2026-01-07 03:59:21.054+0000 Exception: Forecaster Obcerv Data Access Token not available",
      "traceId": "",
      "spanId": "",
      "logAttributes": {
        "matchKey": "Exception",
        "itrsgroup.com/geneos/source_gateway": "Exchange Demo"
      },
      "logSeverity": "LOG_SEVERITY_CRITICAL"
    }
  ]
}

Response Codes Copied

Get log sources Copied

POST /logs/log-sources

Returns log sources (files) that have entries matching the filter and time range, with counts and first/last timestamps. Results are ordered by the number of matching entries in descending order. Use the returned dimensions, namespace, and name with /logs/log-data to fetch lines.

Parameters Copied

Parameter Type Location Required Description
from string (date-time) body Range start (inclusive), RFC3339
filter object (Filter) body Entity filter (expression or dimensions)
namespace string body Log source namespace
name string body Log source name
to string (date-time) body Range end (exclusive); defaults to now
logFilter object (LogFilter) body Message, trace/span, severity, attribute filters
maxResults integer body Max sources (default 100, max 10000)

Example Request Copied

{
  "filter": {
    "expression": "application='app1'"
  },
  "namespace": "itrsgroup.com/c2/kubernetes-plugin",
  "from": "2026-01-01T08:00:00Z",
  "to": "2026-01-01T23:59:59Z",
  "logFilter": {
    "messageFilters": ["Exception"]
  },
  "maxResults": 50
}

Example Response Copied

{
  "logSources": [
    {
      "dimensions": [
        { "key": "cluster", "value": "prod-k8s" },
        { "key": "application", "value": "app1" }
      ],
      "namespace": "itrsgroup.com/c2/kubernetes-plugin",
      "name": "output.log",
      "numMatchingEntries": 42,
      "firstMatchEntry": "2026-01-01T08:03:11Z",
      "lastMatchEntry": "2026-01-01T23:57:54Z"
    }
  ]
}

Response Codes Copied

Lookup Copied

Lookup dimension, attribute, and metric names Copied

POST /lookup/names

Returns dimension, attribute, and metric names. Use filters to narrow by type, namespace, or name substring.

Parameters Copied

Parameter Type Location Required Description
type array of integer (enum) body Limit by name kind (dimension, attribute, or metric types); do not mix entity types with metric types in one request
namespace string body Only names in this namespace
namePattern string body Case-sensitive substring match on name
limit integer body Max results (default 100, max 1000)

Example Request Copied

{
  "type": [
    "METRIC_GAUGE"
  ],
  "namespace": "itrsgroup.com/c2/kubernetes-plugin",
  "namePattern": "cpu",
  "limit": 50
}

Example Response Copied

{
  "names": [
    {
      "namespace": "itrsgroup.com/c2/kubernetes-plugin",
      "name": "kube_node_cpu_capacity",
      "types": [
        4
      ]
    },
    {
      "namespace": "itrsgroup.com/c2/kubernetes-plugin",
      "name": "kube_node_cpu_usage",
      "types": [
        4
      ]
    }
  ]
}

Response Codes Copied

Lookup dimension and attribute values Copied

POST /lookup/values

Returns distinct values for a given dimension or attribute (namespace + name), optionally filtered by substring.

Parameters Copied

Parameter Type Location Required Description
namespace string body Namespace of the dimension or attribute
name string body Dimension or attribute name
valuePattern string body Case-sensitive substring filter on values
limit integer body Max results (default 100, max 1000)

Example Request Copied

{
  "namespace": "itrsgroup.com/c2/kubernetes-plugin",
  "name": "kubernetes.io/hostname",
  "valuePattern": "worker",
  "limit": 50
}

Example Response Copied

{
  "values": [
    {
      "string": "derek-api1-node-1"
    },
    {
      "string": "derek-api1-node-2"
    },
    {
      "string": "derek-api1-control-1"
    }
  ]
}

Response Codes Copied

Metrics Copied

Get bucketed metric time series Copied

POST /metrics

Returns time-series points for a metric over a range, aggregated into buckets. Required fields: namespace, name, and from.

Parameters Copied

Parameter Type Location Required Description
namespace string body Metric namespace
name string body Metric name
filter object (Filter) body Entity filter
groupBy array of string body Dimension keys to aggregate across entities
from string (date-time) body Range start (inclusive)
to string (date-time) body Range end (exclusive); defaults to now
bucketSize integer (enum) body Time bucket size (omit for platform default)
bucketFunction integer (enum) body Aggregation inside each bucket (default last)
percentile number body Required when bucketFunction is percentile
metricType integer (enum) body Gauge or counter filter

Example Request Copied

{
  "namespace": "itrsgroup.com/c2/kubernetes-plugin",
  "name": "kube_pod_cpu_usage",
  "filter": {
    "expression": "cluster='prod-k8s' AND namespace='itrs'"
  },
  "from": "2024-10-15T10:00:00Z",
  "to": "2024-10-15T12:00:00Z",
  "bucketSize": "BUCKET_SIZE_FIVE_MINUTE",
  "bucketFunction": "BUCKET_FUNCTION_AVG",
  "metricType": "GAUGE"
}

bucketSize, bucketFunction, and metricType are integer enum values in the API (for example bucket size 6 for five-minute buckets and bucket function 1 for average, as in the schema examples).

Example Response Copied

{
  "metrics": [
    {
      "dimensions": [
        {
          "key": "cluster",
          "value": "prod-k8s"
        },
        {
          "key": "namespace",
          "value": "itrs"
        },
        {
          "key": "pod",
          "value": "app-server-1"
        }
      ],
      "namespace": "itrsgroup.com/c2/kubernetes-plugin",
      "name": "kube_pod_cpu_usage",
      "metricType": "GAUGE",
      "unit": "MILLICORES",
      "timestamp": "2024-10-15T10:00:00Z",
      "value": 0.45
    },
    {
      "dimensions": [
        {
          "key": "cluster",
          "value": "prod-k8s"
        },
        {
          "key": "namespace",
          "value": "itrs"
        },
        {
          "key": "pod",
          "value": "app-server-2"
        }
      ],
      "namespace": "itrsgroup.com/c2/kubernetes-plugin",
      "name": "kube_pod_cpu_usage",
      "metricType": "GAUGE",
      "unit": "MILLICORES",
      "timestamp": "2024-10-15T10:05:00Z",
      "value": 0.52
    }
  ]
}

Response Codes Copied

Get the most recent metrics Copied

POST /metrics/latest

Returns the latest sample per entity for a metric (or metrics matching the filter). Optimized for live views.

Parameters Copied

Parameter Type Location Required Description
namespace string body With name, selects a single metric
name string body With namespace, selects a single metric
filter object (Filter) body Entity filter; combined with namespace/name when both are set
limit integer body Max results (default 100, max 10000)

Example Request Copied

{
  "namespace": "itrsgroup.com/c2/kubernetes-plugin",
  "name": "kube_pod_cpu_usage",
  "filter": {
    "expression": "cluster='prod-k8s' AND namespace='itrs'"
  },
  "limit": 100
}

Example Response Copied

{
  "metrics": [
    {
      "dimensions": [
        {
          "key": "cluster",
          "value": "prod-k8s"
        },
        {
          "key": "namespace",
          "value": "itrs"
        },
        {
          "key": "pod",
          "value": "app-server-1"
        }
      ],
      "namespace": "itrsgroup.com/c2/kubernetes-plugin",
      "name": "kube_pod_cpu_usage",
      "metricType": "GAUGE",
      "unit": "MILLICORES",
      "timestamp": "2024-10-15T14:32:15Z",
      "value": 0.45
    },
    {
      "dimensions": [
        {
          "key": "cluster",
          "value": "prod-k8s"
        },
        {
          "key": "namespace",
          "value": "itrs"
        },
        {
          "key": "pod",
          "value": "app-server-2"
        }
      ],
      "namespace": "itrsgroup.com/c2/kubernetes-plugin",
      "name": "kube_pod_cpu_usage",
      "metricType": "GAUGE",
      "unit": "MILLICORES",
      "timestamp": "2024-10-15T14:32:18Z",
      "value": 0.62
    }
  ]
}

Response Codes Copied

Get the latest status metrics Copied

POST /status-metrics/latest

Returns the most recent status string per entity for a status metric within a time window. Required: namespace, name, and from.

Parameters Copied

Parameter Type Location Required Description
namespace string body Status metric namespace
name string body Status metric name
filter object (Filter) body Entity filter
from string (date-time) body Window start (inclusive) for the latest status search
to string (date-time) body Window end (exclusive); defaults to now

Example Request Copied

{
  "namespace": "itrsgroup.com/c2/kubernetes-plugin",
  "name": "kube_pod_status",
  "filter": {
    "expression": "cluster='prod-k8s' AND namespace='itrs'"
  },
  "from": "2024-10-15T10:00:00Z",
  "to": "2024-10-15T11:00:00Z"
}

Example Response Copied

{
  "statusMetrics": [
    {
      "dimensions": [
        {
          "key": "cluster",
          "value": "prod-k8s"
        },
        {
          "key": "namespace",
          "value": "itrs"
        },
        {
          "key": "pod",
          "value": "app-server-1"
        }
      ],
      "namespace": "itrsgroup.com/c2/kubernetes-plugin",
      "name": "kube_pod_status",
      "timestamp": "2024-10-15T10:28:45Z",
      "value": "Running"
    },
    {
      "dimensions": [
        {
          "key": "cluster",
          "value": "prod-k8s"
        },
        {
          "key": "namespace",
          "value": "itrs"
        },
        {
          "key": "pod",
          "value": "app-server-2"
        }
      ],
      "namespace": "itrsgroup.com/c2/kubernetes-plugin",
      "name": "kube_pod_status",
      "timestamp": "2024-10-15T10:29:12Z",
      "value": "CrashLoopBackOff"
    }
  ]
}

Response Codes Copied

Schemas Copied

The following request and response models are defined by the API (listed in alphabetical order).

AggregationResult Copied

The aggregated value and the aggregation it corresponds to

Field Type Required Description
aggregation MapReduceAnalyticsFunction
value number (double) The aggregated value

Any Copied

Wrapper for a protobuf Any value plus optional YAML. Used inside NamedAny for structured expression payloads.

Field Type Required Description
value GoogleProtobufAny Typed Any payload
yaml string Optional YAML representation

Dimension Copied

A key-value pair representing a hierarchical identifier for entities. Dimensions form the unique identity of an entity and are ordered from highest to lowest in the hierarchy (e.g., cluster > namespace > pod > container).

Field Type Required Description
key string The dimension key/name. Common dimension keys include ‘cluster’, ’namespace’, ’node’, ‘pod’, ‘container’, ‘service’, etc. The set of dimension keys defines the entity hierarchy in the system.
value string The dimension value for this key. Together with the key, this forms part of the entity’s unique identifier. For example, key=‘cluster’, value=‘prod-k8s’.

Entity Copied

A monitored entity in the observability platform. Entities are uniquely identified by their dimensions, contain metadata in attributes, and have associated metrics for monitoring.

Field Type Required Description
attributes array of EntityAttribute Metadata attributes attached to this entity. Attributes can be static (like architecture, OS type) or dynamic (like severity status). They may be user-editable, inheritable by child entities, or inherited from parent entities. Each attribute has a namespace, name, typed value, and unit.
dimensions array of Dimension Hierarchical dimensions that uniquely identify this entity. Dimensions are ordered from highest to lowest in the hierarchy (e.g., [cluster, namespace, pod, container]). The combination of all dimension key-value pairs forms the entity’s unique identifier.
metrics array of EntityMetric List of metrics available for this entity. This indicates which measurements can be queried using the metrics endpoints. Each metric has a namespace, name, type (counter/gauge/histogram/status), and unit. Actual metric values must be retrieved using the /metrics or /metrics/latest endpoints.

EntityArtifactFilter Copied

Restricts EntityFilter to entities that have specific artifacts (for example named configuration or deployment objects).

Field Type Required Description
names array of NamespacedName Artifact names to match (each entry needs namespace and name)
namesOperator integer (enum) AND (default): all names must match; OR: at least one must match
types array of integer Artifact types to match

EntityAttribute Copied

A metadata attribute associated with an entity. Attributes provide descriptive information about entities, such as configuration details, labels, tags, and dynamic properties.

Field Type Required Description
inheritable boolean When true, child entities in the hierarchy automatically inherit this attribute’s value unless they explicitly override it. Useful for cascading configuration like environment tags or policies.
inherited boolean When true, this attribute’s value was inherited from a parent entity in the hierarchy rather than being directly set on this entity. Helps distinguish between explicit and inherited properties.
name string The attribute name, unique within its namespace. Common examples include ‘kubernetes.io/hostname’, ‘kubernetes.io/arch’, ‘severity’, ‘first_observed’.
namespace string The namespace that logically groups this attribute. Namespaces help organize attributes from different sources (e.g., ‘itrsgroup.com/c2/kubernetes-plugin’, ‘kubernetes.io’).
unit integer (enum) Unit of measure for numeric attribute values. Set to UNIT_UNSPECIFIED (0) for non-numeric attributes. For numeric attributes, specifies units like BYTES, MILLICORES, PERCENT, etc.
userWritable boolean Indicates whether users can modify this attribute’s value through the API or UI. System-managed attributes (like first_observed, auto-detected properties) are typically not user-writable.
value Value The attribute’s value in its native type (string, long, double, boolean, timestamp, or stringList). May be omitted if the attribute exists but has no value assigned. The value type is determined by the attribute definition in the system.

EntityFilter Copied

An entity filter expressed as either an expression or an exact dimension filter.

Field Type Required Description
artifactFilter EntityArtifactFilter Optionally include only entities having specific artifact(s). This can be specified alone or in tandem with the entity_filter.
dimensions UnorderedDimensionsFilter Exact match on an entity’s entire set of dimensions, irrespective of the order of dimensions. This can match multiple entities, i.e. those with same dimensions but different hierarchy.
expression Expression Filter by one or more entities matching an expression.
orderedDimensions OrderedDimensionsFilter Exact match on an entity’s entire set of dimensions, taking the order of dimensions into account. This can match at most one entity.

EntityMetric Copied

Metadata about a metric available for this entity. This describes what can be measured, but does not contain actual metric values. Use the /metrics or /metrics/latest endpoints to retrieve actual time-series data or latest values.

Field Type Required Description
name string The metric name, unique within its namespace. Examples include ‘kube_node_cpu_capacity’, ‘kube_node_mem_usage’, ‘kube_pod_status’.
namespace string The namespace that groups this metric. Indicates the source or plugin that provides the metric (e.g., ‘itrsgroup.com/c2/kubernetes-plugin’ for Kubernetes monitoring metrics).
type integer (enum) The type of metric: COUNTER (monotonically increasing, like total requests), GAUGE (can increase or decrease, like memory usage), HISTOGRAM (distribution of values), or STATUS (health/state information). Metric type affects how the data should be interpreted and aggregated.
unit integer (enum) The unit of measurement for this metric’s values. Common units include MILLICORES (111) for CPU, BYTES (1) for memory, PERCENT (100) for utilization, etc. This metadata helps with proper formatting and unit conversion in visualizations.

Expression Copied

Protobuf-compatible expression tree used inside EntityFilter. The published OpenAPI mirrors the internal message shape; for typical HTTP JSON usage, prefer the string expression field on Filter for entity queries.

Field Type Required Description
additionalProperties array of NamedAny Ordered name/value pairs for expression operands (protobuf JSON mapping)

Filter Copied

Filter for querying entities. Supports two filtering modes:

  1. Expression filter: Use a query language for complex filtering (e.g., “node=‘worker-1’ AND namespace=‘production’”)

  2. Dimensions filter: Match entities by dimension key-value pairs with a specified mode:

    • ANY: Matches entities containing these dimensions (may have additional dimensions)
    • EXACT: Exact match - entities must have exactly these dimensions, no more, no less

Note

Use either expression OR dimensions, not both. Expression provides more flexibility, while dimensions offer simpler matching.
Field Type Required Description
dimensions array of Dimension List of dimension key-value pairs to match. The matching behavior depends on the mode: ANY mode matches entities containing these dimensions (partial match), EXACT mode requires entities to have exactly these dimensions. Ignored if expression is set.
expression string Query expression using the entity query language. Supports complex logic with AND, OR, NOT, parentheses, and comparison operators (=, !=, <, >, <=, >=). Example: “cluster=‘prod’ AND (namespace=‘default’ OR namespace=‘kube-system’)”. If set, dimensions filter is ignored.
mode integer (enum) Matching mode for dimension-based filtering. ANY (0) allows partial matches (entity may have additional dimensions), EXACT (1) requires exact match (entity must have exactly these dimensions). Only applies when using dimensions filter.

GetEntitiesRequest Copied

Query entities from the observability platform based on filtering criteria. Entities represent monitored infrastructure components such as:

Each entity has dimensions (hierarchical identifiers), attributes (metadata properties), and metrics (available measurements). Filtering can be done using:

Note

Use either expression OR dimensions in the filter, not both. Expression provides more flexibility with logical operators (AND, OR, NOT), while dimensions offer simpler exact or partial matching.

It is recommended to use specific filters to reduce result size and improve response times.

Field Type Required Description
filter Filter

Filter criteria to narrow down entity results. If omitted, returns all entities (up to the limit).

The filter supports two mutually exclusive modes:

  • Expression — Use query language for complex filtering with AND, OR, NOT operators and comparison operators (=, !=, <, >, <=, >=).

    • Example: "cluster='prod' AND (namespace='default' OR namespace='kube-system')"
  • Dimensions with mode — Match entities by dimension key-value pairs. Mode can be:

    • ANY (0): Partial match — entities may have additional dimensions.
    • EXACT (1): Exact match — entities must have exactly these dimensions, no more, no less.

Important

Use either expression OR dimensions, not both. If both are provided, expression takes precedence.
limit integer (uint32) Maximum number of entities to return. Must be between 1 and 1000. Defaults to 100 if not specified. Use pagination by making multiple requests with refined filters if you need to retrieve more than 1000 entities.

GetEntitiesResponse Copied

List of entities matching the request filter. Each entity includes its complete hierarchy of dimensions, all attributes with their current values, and the list of available metrics.

Field Type Required Description
entities array of Entity Array of entities matching the filter criteria. Each entity includes dimensions (hierarchical identifiers), attributes (metadata with values and properties), and metrics (available measurements). Maximum of 1000 entities returned per request.

GetEntitySeveritiesRequest Copied

Query the latest severity values for entities matching the specified filter criteria. Severity represents the current health or alert state of an entity, indicating how critical its condition is.

Severity values follow the SignalSeverity enumeration:

Filtering can be done using:

Note

Only entities that have a severity value will be returned. The endpoint automatically applies a ‘severity EXISTS’ filter to exclude entities without severity data.

It is recommended to use specific filters to reduce result size and improve response times.

Field Type Required Description
filter Filter

Filter criteria to narrow down entity results. If omitted, returns severities for all entities that have severity data (up to the limit). The filter supports two mutually exclusive modes:

  • Expression — Use query language for complex filtering with AND, OR, NOT operators and comparison operators (=, !=, <, >, <=, >=).

    • Example: "cluster='prod' AND (namespace='default' OR namespace='kube-system')"
  • Dimensions with mode — Match entities by dimension key-value pairs. Mode can be:

    • ANY (0): Partial match — entities may have additional dimensions.
    • EXACT (1): Exact match — entities must have exactly these dimensions, no more, no less.

Important

Use either expression OR dimensions, not both. If both are provided, expression takes precedence.
limit integer (uint32) Maximum number of entity severities to return. Must be between 1 and 1000. Defaults to 100 if not specified. This limit is constrained by the underlying platform’s getEntities endpoint.

GetEntitySeveritiesResponse Copied

List of entity severities matching the request filter. Each result includes the entity’s dimensions for identification and its current severity value.

Field Type Required Description
severities array of GetEntitySeveritiesResponse_Severity Array of entity severities matching the filter criteria. Each entry contains the entity’s identifying dimensions and its current severity value. Maximum of 1000 results returned per request.

GetEntitySeveritiesResponse_Severity Copied

An entity’s severity information, combining the entity’s identifying dimensions with its current severity level.

Field Type Required Description
dimensions array of Dimension Hierarchical dimensions that uniquely identify the entity. Dimensions are ordered from highest to lowest in the hierarchy (e.g., [cluster, namespace, pod, container]). Use these dimensions to correlate severity data with other entity information.
severity integer (enum) The entity’s current severity level. Values are: NONE (1), WARNING (2), CRITICAL (3), OK (4).

Note

OK has a higher ordinal than CRITICAL for backward compatibility reasons.

GetGroupedSummaryStatisticsRequest Copied

Returns grouped summary statistics based on the supplied parameters:

Field Type Required Description
aggregations array of MapReduceAnalyticsFunction A list of unique aggregations to return
entityFilter EntityFilter
from string (date-time) Starting inclusive timestamp. Must be a time in the past.
groupBy SummaryStatisticsGroupBy
metric TargetMetric
to string (date-time) Ending exclusive timestamp. Defaults to the current time if not supplied.
unit integer (enum) The unit to return the response in. Only series whose values share a common base unit are included in the aggregation. If UNIT_NONE is specified, only series without a unit are included.

GetGroupedSummaryStatisticsResponse Copied

A list of grouped aggregated values based on the supplied parameters

Field Type Required Description
aggregations array of MapReduceAnalyticsFunction The requested aggregations. The values array in each group will be in the same order as the aggregations
groups array of SummaryStatisticsGroup The the grouped summary statistics
unit integer (enum) The unit the aggregations are returned in.

GetLogDataRequest Copied

Request to retrieve log data from a single log source, over the specified time range and filtering criteria.

Field Type Required Description
dimensions array of Dimension Dimensions that identify the entity for the log source
from string (date-time) Range start (inclusive), RFC3339
logFilter LogFilter Optional filters on message, severity, trace/span, attributes
maxResults integer (int32) Max log entries (default 1000, max 10000)
name string Log source name
namespace string Log source namespace
reverseSort boolean If true, ascending by timestamp; default false (newest first)
to string (date-time) Range end (exclusive); defaults to now

GetLogDataResponse Copied

Response containing log data entries from a single log source.

Field Type Required Description
logData array of LogData Log entries ordered by timestamp

GetLogSourcesRequest Copied

Request to retrieve log sources that match filtering criteria over a time range.

Field Type Required Description
filter Filter Entity filter
from string (date-time) Range start (inclusive), RFC3339
logFilter LogFilter Optional log line filters
maxResults integer (int32) Max sources (default 100, max 10000)
name string Log source name
namespace string Log source namespace
to string (date-time) Range end (exclusive); defaults to now

GetLogSourcesResponse Copied

Response containing log sources. Each entry is one log source with summary stats for the matching window.

Field Type Required Description
logSources array of LogSource Matching log sources

GetMetricsLatestRequest Copied

Request to retrieve the most recent metrics given the filtering criteria. This endpoint is optimized for real-time monitoring scenarios where only the current value is needed, not historical time-series data.

Filtering options — at least one of the following must be provided:

If both are specified, they are combined (AND logic) to return the specific metric for matching entities only.

Use the limit parameter to control the maximum number of results returned (default: 100, max: 10,000).

Field Type Required Description
filter Filter
limit integer (uint32) Maximum number of metrics to return. Defaults to 100 if not specified. Maximum allowed value is 10,000 to prevent exceeding message size limits.
name string The metric name to query. If specified, namespace must also be specified. If omitted along with namespace, all metrics for matching entities are returned. Use the LookupNames endpoint to discover available metrics.
namespace string The namespace that the metric belongs to. If specified, name must also be specified. Namespaces provide logical grouping of metrics by data source or plugin. For example, Kubernetes metrics use ‘itrsgroup.com/c2/kubernetes-plugin’.

GetMetricsLatestResponse Copied

Response containing the most recent metrics given the filtering criteria. Each metric represents the latest measurement for a specific entity, including entity identification, metric metadata, and the current value.

Field Type Required Description
metrics array of Metric Array of the most recent metrics. Each entry represents the latest measurement for a specific entity. When multiple entities match the filtering criteria, the array contains one entry per entity. Results are not guaranteed to be in any specific order.

GetMetricsRequest Copied

Request to retrieve time-series metric data aggregated into time buckets. This is the primary request for querying historical metric measurements for visualization, analysis, and monitoring.

Required parameters — namespace, name, from

Optional parameters — filter, group_by, to (defaults to now), bucket_size (defaults to platform behavior if omitted), bucket_function (defaults to LAST), percentile (when bucket_function is PERCENTILE), metric_type.

Time range — Specify the historical period using from and to timestamps. For raw (un-bucketed) data using BUCKET_SIZE_NONE, the maximum time range is 30 minutes. For bucketed data, larger time ranges are supported depending on the bucket size.

Filtering — Use the filter parameter to restrict results to specific entities. Supports both expression-based filtering (e.g., “cluster=‘prod’ AND namespace=‘default’”) and dimension-based filtering.

Grouping — Use group_by to aggregate metrics across multiple entities by specific dimensions, producing a single time-series per unique dimension value combination.

Metric type — Use the optional metric_type parameter to specify whether to retrieve GAUGE or COUNTER metrics. If not specified, both GAUGE and COUNTER metrics are retrieved.

Field Type Required Description
bucketFunction integer (enum) (Optional) The aggregation function to apply within each time bucket. Defaults to LAST if omitted. Determines how multiple data points within a bucket are combined. Common values:
  • AVG (1) for typical values
  • MAX (3) for peak values
  • SUM (5) for totals
  • RATE (9) for counters.
If using PERCENTILE (4), the percentile parameter must also be set.
bucketSize integer (enum) (Optional) The size of time buckets for aggregating metric data. Determines the granularity of returned data points. If omitted, the platform uses default bucketing. Common values:
  • ONE_MINUTE (5)
  • FIVE_MINUTE (6)
  • FIFTEEN_MINUTE (7)
  • ONE_HOUR (8)
  • ONE_DAY (11).
Use NONE (1) for raw, un-bucketed data (limited to 30-minute time range). Smaller bucket sizes provide more detail but return larger result sets.
filter Filter
from string (date-time) Start of the time range for the query (inclusive). Must be in RFC3339 format. For raw metrics (bucket_size=NONE), the time range (to - from) cannot exceed 30 minutes. For bucketed metrics, larger ranges are supported.
groupBy array of string

List of dimension keys to group by. When specified, metrics from multiple entities are aggregated together based on common dimension values, producing one time-series per unique combination of the specified dimensions.

For example, group_by=[‘cluster’, ’namespace’] aggregates all pods within each namespace. If omitted, returns separate time-series for each individual entity.

metricType integer (enum) The type of metric.
  • COUNTER (1) — Monotonically increasing value (e.g., total requests)
  • GAUGE (2) — Value that can increase or decrease (e.g., CPU usage, memory usage)
name string The metric name to query. Use the LookupNames endpoint to discover available metrics. Common examples include ‘kube_pod_cpu_usage’, ‘kube_node_memory_usage’, ‘http_request_duration_seconds’, etc.
namespace string The namespace that the metric belongs to. Namespaces provide logical grouping of metrics by data source or plugin. For example, Kubernetes metrics use ‘itrsgroup.com/c2/kubernetes-plugin’.
percentile number (double) The percentile value to compute, required when bucket_function is PERCENTILE (4). Must be in the exclusive range (0, 100). Common values
  • 50 (median)
  • 95 (95th percentile - standard for latency SLAs)
  • 99 (99th percentile)
  • 99.9 (99.9th percentile).
Ignored if bucket_function is not PERCENTILE.
to string (date-time) End of the time range for the query (exclusive). Must be in RFC3339 format. If omitted, defaults to the current time (“now”). The ’to’ timestamp should be greater than ‘from’.

GetMetricsResponse Copied

Response containing time-series metric data. Returns an array of metric data points, where each point represents a single measurement at a specific time for a specific entity. Data points are organized by entity (identified by dimensions) and ordered by timestamp within each entity’s time-series.

Field Type Required Description
metrics array of Metric Array of metric data points. Each data point represents a single measurement at a specific time for a specific entity. When multiple entities match the filter, the array contains data points for all matching entities. Data points are typically ordered by entity, then by timestamp within each entity.

GetSeasonalModelRequest Copied

Generates a seasonal model based on the supplied parameters:

Field Type Required Description
aggregations StatisticalModelAggregations
bucketSize integer (enum) The model’s bucket size. Must be smaller than the periodicity.
entityFilter ModelEntityFilter
latestLookbackTs string (date-time)

An exclusive timestamp of the most recent data to include as part of the model’s lookback window. The timestamp will be adjusted such that it is aligned with the supplied bucket size.

The source data window is calculated as latestLookbackTs - numPeriods * bucketSize.

metric TargetMetric
numPeriods integer (uint32)

The number of seasonal periods to include in the model’s lookback window. The duration of a seasonal period is set by the periodicity parameter. A high number may reduce the impact of outliers.

When setting this, consider whether the data during this time has been consistent with what is considered ’normal’. If the data within the look-back period contain irregularities then consider increasing the number of seasonal periods.

Note

Setting this to a very high number may have a severe impact on performance, particularly if the bucket size is small.
periodicity integer (enum) The model’s periodicity. Must be greater than the bucket_size.
timezone string Timezone in the format of Europe/London, America/New_York, etc.

GetSeasonalModelResponse Copied

A seasonal model as a time series of aggregated buckets. Each model data point contains a timestamp, the number of buckets that were aggregated together, the total number of metric values, and the requested aggregations.

Field Type Required Description
dataPoints array of SeasonalModelDataPoint The seasonal model time-series of aggregated data points.
unit integer (enum) The normalized metric unit for the aggregation values.

GetStatusMetricsLatestRequest Copied

Request to retrieve the most recent status metric values for entities. Status metrics represent discrete state or condition values (such as ‘OK’, ‘WARNING’, ‘ERROR’, ‘Running’, ‘Stopped’) that indicate the health, operational state, or alert level of monitored entities.

Key characteristics:

Required parameters — namespace, name, from

Optional parameters — filter, to (defaults to now).

The endpoint returns the most recent status value within this window for each entity.

Field Type Required Description
filter Filter
from string (date-time) Start of the time window for finding the latest status (inclusive). The endpoint will search for the most recent status value after this timestamp. Must be in RFC3339 format. The time range (to - from) should typically be kept small (e.g., last few minutes) for latest status queries, with a maximum of 30 minutes.
name string The status metric name to query. Status metrics typically represent health states, operational conditions, or alert levels. Use the LookupNames endpoint with type=METRIC_STATUS (6) to discover available status metrics. Common examples include ‘kube_pod_status’, ‘kube_node_condition’, ‘service_health_status’, etc.
namespace string The namespace that the status metric belongs to. Namespaces provide logical grouping of metrics by data source or plugin. For example, Kubernetes status metrics use ‘itrsgroup.com/c2/kubernetes-plugin’.
to string (date-time) End of the time window for finding the latest status (exclusive). Must be in RFC3339 format. If omitted, defaults to the current time (’now’). The endpoint returns the most recent status value that occurred between ‘from’ and ’to’ for each entity.

GetStatusMetricsLatestResponse Copied

Response containing the latest status metric values for matching entities. Returns one status value per entity, representing the most recent state within the specified time window. Each result includes the entity identification, status metric metadata, timestamp of the status, and the status value itself.

Field Type Required Description
statusMetrics array of StatusMetrics Array of status metric values, one per entity. Each entry represents the latest (most recent) status for a specific entity within the requested time window. Entities are uniquely identified by their dimensions. If an entity has no status update within the time window, it will not appear in the results.

GetSummaryStatisticsRequest Copied

Returns summary statistics based on the supplied parameters:

Field Type Required Description
aggregations array of MapReduceAnalyticsFunction A list of unique aggregations to return
entityFilter EntityFilter
from string (date-time) Starting inclusive timestamp. Must be a time in the past.
metric TargetMetric
to string (date-time) Ending exclusive timestamp. Defaults to the current time if not supplied.
unit integer (enum) The unit to return the response in. Only series whose values share a common base unit are included in the aggregation. If UNIT_NONE is specified, only series without a unit are included.

GetSummaryStatisticsResponse Copied

A list of aggregated values based on the supplied parameters

Field Type Required Description
aggregations array of AggregationResult The requested aggregations.
unit integer (enum) The unit the aggregations are returned in.

GoogleProtobufAny Copied

Contains an arbitrary serialized message along with a @type that describes the type of the serialized message.

Field Type Required Description
@type string The type of the serialized message.

LogAttributeFilterExpression Copied

Defines a filter on log entry logAttributes so only entries whose attributes match are returned. If both keyFilter and valueFilter are set on a term, both must match.

Field Type Required Description
attributeFilterTerms array of LogAttributeFilterExpression_LogAttributeFilterTerm Terms combined with AND; at least one if this object is present

LogAttributeFilterExpression_LogAttributeFilterTerm Copied

One attribute key/value match term for log attribute maps.

Field Type Required Description
keyFilter string Match keys against this string (with keyMatchType)
keyMatchType integer (enum) Match type for keyFilter; default EXACT when keyFilter is set
valueFilter string Match values against this string (with valueMatchType)
valueMatchType integer (enum) Match type for valueFilter; default EXACT when valueFilter is set

LogData Copied

A single log row from a log source for a specific entity.

Field Type Required Description
dimensions array of Dimension Entity dimensions
logAttributes object (string values) Arbitrary key/value attributes on the log line (not entity attributes)
logSeverity integer (enum) Parsed severity; NONE if unknown
message string Log message text
name string Log source name
namespace string Log source namespace
spanId string Span id when correlated to tracing
timestamp string (date-time) Entry timestamp, RFC3339
traceId string Trace id when correlated to tracing

LogFilter Copied

Optional filters applied to log queries. messageFilters entries are ORed together.

Field Type Required Description
attributeFilter LogAttributeFilterExpression Filter on logAttributes
includedLogSeverities array of integer (enum) Allowed severities
messageFilters array of string Substrings searched in the message (OR)
spanId string Exact span id filter
traceId string Exact trace id filter

LogSource Copied

One log source identified by dimensions, namespace, and name, with match statistics for the query window.

Field Type Required Description
dimensions array of Dimension Entity dimensions
firstMatchEntry string (date-time) Timestamp of first matching line in the window
lastMatchEntry string (date-time) Timestamp of last matching line in the window
name string Log source name
namespace string Log source namespace
numMatchingEntries integer (int32) Count of matching lines in the window

LookupNamesRequest Copied

Discover available dimension, attribute, and metric names in the system. This endpoint enables discovery of what can be queried and is particularly useful for building dynamic UIs, discovering available metrics for monitoring, and implementing auto-completion features.

Supports filtering by:

Important

You can request either entity types (dimensions/attributes) OR metric types (counter/gauge/histogram/status), but not both in the same request.
Field Type Required Description
limit integer (uint32) Maximum number of results to return. Must be between 1 and 1000. Defaults to 100 if not specified.
namePattern string Search pattern for name matching. Uses case-sensitive substring matching. For example, “cpu” will match “kube_node_cpu_capacity”, “cpu_usage”, etc. If omitted, returns all names.
namespace string Filter results to a specific namespace. If omitted, searches across all namespaces.
type array of integer Filter results by type. Multiple types can be specified. If omitted, returns all types.

Note

You cannot mix entity types (DIMENSION, ATTRIBUTE) with metric types (METRIC_COUNTER, METRIC_GAUGE, METRIC_HISTOGRAM, METRIC_STATUS) in a single request.

LookupNamesResponse Copied

List of matching names with their namespace, name, and applicable types.

Field Type Required Description
names array of Name Array of matching names. Each name includes its namespace, name, and applicable types. Maximum of 1000 results returned per request.

LookupValuesRequest Copied

Retrieve all possible values for a specific dimension or attribute. This endpoint returns the complete set of unique values that exist across all entities in the system.

Use cases:

Required parameters — The namespace and name parameters are required to identify which specific dimension or attribute to query. Use the LookupNames endpoint first to discover available dimensions and attributes if needed.

Optional filtering — Results can be filtered using valuePattern for case-sensitive substring matching, useful for large value sets or search-as-you-type functionality.

Field Type Required Description
limit integer (uint32) Maximum number of results to return. Must be between 1 and 1000. Defaults to 100 if not specified.
name string The name of the dimension or attribute to lookup values for. Combined with namespace, this uniquely identifies what to query. Use the LookupNames endpoint to discover available names.
namespace string The namespace of the dimension or attribute to lookup values for. This identifies which logical grouping the name belongs to.
valuePattern string Optional filter pattern for values. Uses case-sensitive substring matching. For example, “prod” will match “prod-cluster”, “production”, “prod-us-east”, etc. If omitted, returns all values.

LookupValuesResponse Copied

List of unique values for the specified dimension or attribute. Values are returned in their native type (string, number, boolean, timestamp, or string list).

Field Type Required Description
values array of Value Array of unique values. Each value is returned in its native type (string, long, double, boolean, timestamp, or stringList). The value type depends on how the dimension or attribute is defined in the system. Maximum of 1000 results returned per request.

MapReduceAnalyticsFunction Copied

Extracts statistics from each time series in the result set based on the map function and reduces it to a single scalar value by applying the reduce function over the values extracted by the map phase. BUCKET_FUNCTION_RATE is not supported in the map phase. BUCKET_FUNCTION_RATE, BUCKET_FUNCTION_FIRST, BUCKET_FUNCTION_LAST are not supported in the reduce phase.

Field Type Required Description
map StatisticalAggregationFunction
reduce StatisticalAggregationFunction
{
  "map": {
    "function": "BUCKET_FUNCTION_LAST"
  },
  "reduce": {
    "function": "BUCKET_FUNCTION_SUM"
  }
}

Metric Copied

A single metric data point representing a measurement at a specific time for a specific entity. Includes the entity identification (dimensions), metric metadata (namespace, name, type, unit), timestamp, and the measured value.

Field Type Required Description
dimensions array of Dimension The hierarchical dimensions that uniquely identify the entity this metric belongs to. Dimensions are ordered from highest to lowest in the hierarchy (e.g., cluster → namespace → pod → container). Together, these dimensions form the unique identity of the monitored entity.
metricType integer (enum) The type of metric. Indicates the semantic meaning and expected behavior:
  • COUNTER (1) — Monotonically increasing value (e.g., total requests)
  • GAUGE (2) — Value that can increase or decrease (e.g., CPU usage, memory usage)
  • HISTOGRAM (3) — Distribution of values (e.g., request latency buckets)
  • STATUS (4) — Status or health indicator (e.g., pod phase, node condition)
name string The metric name. This identifies what is being measured (e.g., ‘kube_pod_cpu_usage’, ‘kube_node_memory_bytes’, ‘http_request_duration_seconds’).
namespace string The namespace that the metric belongs to. Indicates the source or plugin that provides this metric. For example, ‘itrsgroup.com/c2/kubernetes-plugin’ for Kubernetes metrics.
timestamp string (date-time) The timestamp for this data point in RFC3339 format. For bucketed data, this represents the start of the time bucket. For raw data, this is the exact time the measurement was taken.
unit integer (enum) The unit of measurement for the metric value. Common units include:
  • MILLICORES (111) for CPU
  • BYTES (1) or MEBIBYTES (6) for memory
  • PERCENT (100) for utilization
  • SECONDS (63) or MILLISECONDS (62) for duration
  • PER_SECOND (50) for rates.
See the Units enumeration for all supported units.
value number (double) The measured or aggregated metric value. For bucketed data, this is the result of applying the bucket function (e.g., average, max, sum) to all data points within the bucket. The interpretation depends on the metric type and unit. For example, 0.45 with unit MILLICORES means 0.45 CPU cores (450 millicores).

ModelDataPointValue Copied

A single aggregated value

Field Type Required Description
function integer (enum) The aggregation function (e.g. BUCKET_FUNCTION_PERCENTILE, BUCKET_FUNCTION_MIN).
percentile number (double) The percentile that is being calculated. Set only if BucketFunction is BUCKET_FUNCTION_PERCENTILE
value number (double) The aggregated value

ModelEntityFilter Copied

Targets a single entity for seasonal modelling. Supply exactly one of the following:

Variant Field Type Description
Ordered dimensions orderedDimensions OrderedDimensionsFilter Match dimension list in order (at most one entity)
Unordered dimensions dimensions UnorderedDimensionsFilter Match a set of dimension key/value pairs (order ignored)

Name Copied

A named entity or metric with its namespace, name, and applicable types.

Field Type Required Description
name string The name identifier, unique within its namespace.
namespace string The namespace that the name belongs to. Namespaces provide logical grouping of related names. For example, Kubernetes plugin names use ‘itrsgroup.com/c2/kubernetes-plugin’.
types array of integer The types that apply to this name. A name can have multiple types. For example, a metric might be available as both COUNTER and GAUGE depending on collection method.

NamedAny Copied

Automatically-generated message used to represent maps of Any as ordered (name,value) pairs.

Field Type Required Description
name string Map key
value Any Mapped value

NamespacedName Copied

Qualified name within a namespace (used for attributes, metrics, and artifact references).

Field Type Required Description
name string Non-blank, up to 64 characters
namespace string Up to 128 characters

OrderedDimensionsFilter Copied

A filter that exactly matches entity dimension keys and values, taking the order of dimensions into account.

Field Type Required Description
dimensions array of Dimension Dimensions (required). Cannot be empty.

SeasonalModelDataPoint Copied

Each seasonal model data point consists of a timestamp and set of one or more aggregated values as supplied in the request. Additionally, the response contains two counts that can aid evaluating the reliability of the data point. These are:

Field Type Required Description
bucketCount integer (uint32) The number of buckets across the look-back period that contributed to the model data point.
ts string (date-time) The timestamp for this model data point.
values array of ModelDataPointValue A list of one or more aggregated values

StatisticalAggregationFunction Copied

The aggregation function to apply on the metric datapoints. If the aggregation function is BUCKET_FUNCTION_PERCENTILE then the percentile must be set to a value in the exclusive range (0, 100).

Field Type Required Description
function integer (enum) The aggregation function (e.g. BUCKET_FUNCTION_AVG, BUCKET_FUNCTION_PERCENTILE).
percentile number (double) The percentile. Required if the function is BUCKET_FUNCTION_PERCENTILE. Must be set to a value in the exclusive range (0, 100).

StatisticalModelAggregations Copied

Specifies one or more statistical aggregations to calculate and return for each bucket

Field Type Required Description
functions array of StatisticalAggregationFunction One or more statistical aggregation functions to calculate for each bucket.

Status Copied

The Status type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by gRPC. Each Status message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the API Design Guide.

Field Type Required Description
code integer (int32) The status code, which should be an enum value of [google.rpc.Code][google.rpc.Code].
details array of GoogleProtobufAny A list of messages that carry the error details. There is a common set of message types for APIs to use.
message string A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the [google.rpc.Status.details][google.rpc.Status.details] field, or localized by the client.

StatusMetrics Copied

A single status metric value representing the latest state of a specific entity. Status values are categorical strings (not numbers) that indicate health, operational state, or alert level. Common status values include ‘Running’, ‘Pending’, ‘Failed’, ‘OK’, ‘WARNING’, ‘ERROR’, ‘CRITICAL’, ‘Unknown’, etc.

Field Type Required Description
dimensions array of Dimension The hierarchical dimensions that uniquely identify the entity this status belongs to. Dimensions are ordered from highest to lowest in the hierarchy (e.g., cluster → namespace → pod → container). Together, these dimensions form the unique identity of the monitored entity.
name string The status metric name. This identifies what state or condition is being reported. Common examples include ‘kube_pod_status’ (e.g., Running, Pending, Failed), ‘kube_node_condition’ (e.g., Ready, NotReady), ‘service_health_status’ (e.g., OK, WARNING, ERROR), ‘alert_severity’ (e.g., Critical, Warning, Info).
namespace string The namespace that the status metric belongs to. Indicates the source or plugin that provides this status metric. For example, ‘itrsgroup.com/c2/kubernetes-plugin’ for Kubernetes status metrics.
timestamp string (date-time) The timestamp when this status value was observed or last updated, in RFC3339 format. This represents when the entity entered or was confirmed to be in this state. For ’latest’ queries, this is the most recent timestamp within the requested time window.
value string The status value as a categorical string. The specific values depend on the status metric type. Examples:
  • Pod status — ‘Running’, ‘Pending’, ‘Failed’, ‘Succeeded’, ‘Unknown’, ‘CrashLoopBackOff’
  • Node condition — ‘Ready’, ‘NotReady’, ‘MemoryPressure’, ‘DiskPressure’
  • Health status — ‘OK’, ‘WARNING’, ‘ERROR’, ‘CRITICAL’
  • Alert severity — ‘Info’, ‘Warning’, ‘Critical’, ‘Fatal’
Status values are case-sensitive and should be treated as enumerated strings. Use these values for filtering, grouping, and conditional logic in dashboards and alerting systems.

StringList Copied

A list of string values, used for multi-valued attributes.

Field Type Required Description
values array of string Array of string values.

SummaryStatisticsGroup Copied

Field Type Required Description
attributes array of SummaryStatisticsGroup_GroupByAttributeValue The attributes that the summary statistics were grouped by
dimensions array of Dimension The dimensions that the summary statistics were grouped by
values array of number The aggregated values. The order of the values corresponds to the order of the aggregations in the request

SummaryStatisticsGroupBy Copied

The dimensions or attributes to group the summary statistics by

Field Type Required Description
attributes array of SummaryStatisticsGroupBy_GroupByAttribute The attributes to group the summary statistics by
dimensions array of string The dimensions to group the summary statistics by

SummaryStatisticsGroupBy_GroupByAttribute Copied

The attribute to group by

Field Type Required Description
name string The name of the attribute to group by
namespace string The namespace of the attribute to group by

SummaryStatisticsGroup_GroupByAttributeValue Copied

Field Type Required Description
name string The name of the attribute the aggregations were grouped by
namespace string The namespace of the attribute the aggregations were grouped by
value string The value of the attribute the aggregations were grouped by

TargetMetric Copied

Identifies a metric by namespace and name (and optionally type for seasonal models).

Field Type Required Description
metricType integer (enum) The metric type
name string The metric name
namespace string The metric namespace
{
  "namespace": "itrsgroup.com/c2/kubernetes-plugin",
  "name": "kube_container_cpu_limit"
}

UnorderedDimensionsFilter Copied

A filter that exactly matches entity dimension keys and values, irrespective of the order of dimensions.

Field Type Required Description
dimensions object Dimensions (required). Cannot be empty.

Value Copied

A polymorphic value that can hold different types. The actual type is indicated by which field is set in the oneof. The displayValue provides a human-readable representation useful for UI display.

Field Type Required Description
boolean boolean Boolean value (true/false). Used for flags and binary attributes.
displayValue string Human-readable representation of the value, useful for display purposes in UIs. May include formatted timestamps, unit conversions, or other presentation enhancements.
double number (double) Floating-point number. Used for measurements, percentages, and decimal values.
long string 64-bit integer value. Used for counts, IDs, and large numeric values.

Note

Serialized as string in JSON to prevent precision loss in JavaScript.
string string Text string value. The most common value type for names, labels, and descriptive attributes.
stringList StringList
timestamp string (date-time) Timestamp value in RFC3339 format. Used for time-based attributes like first_observed, last_updated, etc.

Units enumeration Copied

Numeric unit fields in the API use the platform unit enumeration (for example millicores, bytes, percent). The full set matches the protobuf Unit enum used by the analytics platform. Prefer the lookup and metrics responses for the unit applicable to each series.

["ITRS Analytics"] ["ITRS Analytics > API Gateway"] ["User Guide"]

Was this topic helpful?