Chronosphere RollupRule API
The RollupRule API from Chronosphere — 2 operation(s) for rolluprule.
The RollupRule API from Chronosphere — 2 operation(s) for rolluprule.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/chronosphere-rolluprule-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Chronosphere Rollup Rule API
version: v1
description: 'Operations tagged RollupRule across 2 of this provider''s published API definitions: chronosphere-config-v1-openapi3.json, chronosphere-openapi.yml. Each path carries the servers of the definition it was published in.'
servers:
- url: https://{tenant}.chronosphere.io
variables:
tenant:
default: tenant
description: tenant ID assigned by the service provider
- url: /
tags:
- name: RollupRule
paths:
/api/v1/config/rollup-rules:
get:
operationId: ListRollupRules
parameters:
- description: 'Sets the preferred number of items to return per page. If set to `0`, the
server will use its default value. Regardless of the value specified, clients
must never assume how many items will be returned.'
in: query
name: page.max_size
schema:
format: int64
type: integer
- description: 'An opaque page token that identifies which page the client should request.
An empty value indicates the first page.'
in: query
name: page.token
schema:
type: string
- description: Filters results by slug, where any RollupRule with a matching slug in the given list (and matches all other filters) will be returned.
in: query
name: slugs
schema:
items:
type: string
type: array
- description: Filters results by name, where any RollupRule with a matching name in the given list (and matches all other filters) will be returned.
in: query
name: names
schema:
items:
type: string
type: array
- description: Filters results by bucket_slug, where any RollupRule with a matching bucket_slug in the given list (and matches all other filters) will be returned.
in: query
name: bucket_slugs
schema:
items:
type: string
type: array
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/configv1ListRollupRulesResponse'
description: A successful response.
'500':
content:
application/json:
schema:
$ref: '#/components/schemas/apiError'
description: An unexpected error response.
default:
content:
application/json:
schema:
$ref: '#/components/schemas/genericError'
description: An undefined error response.
tags:
- RollupRule
security:
- ApiKeyAuth: []
summary: List rollup rules
x-summary-source: derived
post:
operationId: CreateRollupRule
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/configv1CreateRollupRuleRequest'
required: true
x-originalParamName: body
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/configv1CreateRollupRuleResponse'
description: A successful response containing the created RollupRule.
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/apiError'
description: Cannot create the RollupRule because the request is invalid.
'409':
content:
application/json:
schema:
$ref: '#/components/schemas/apiError'
description: Cannot create the RollupRule because there is a conflict with an existing RollupRule.
'500':
content:
application/json:
schema:
$ref: '#/components/schemas/apiError'
description: An unexpected error response.
default:
content:
application/json:
schema:
$ref: '#/components/schemas/genericError'
description: An undefined error response.
tags:
- RollupRule
security:
- ApiKeyAuth: []
summary: Create rollup rule
x-summary-source: derived
servers:
- url: https://{tenant}.chronosphere.io
variables:
tenant:
default: tenant
description: tenant ID assigned by the service provider
/api/v1/config/rollup-rules/{slug}:
delete:
operationId: DeleteRollupRule
parameters:
- in: path
name: slug
required: true
schema:
type: string
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/configv1DeleteRollupRuleResponse'
description: A successful response.
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/apiError'
description: Cannot delete the RollupRule because it is in use.
'404':
content:
application/json:
schema:
$ref: '#/components/schemas/apiError'
description: Cannot delete the RollupRule because the slug does not exist.
'500':
content:
application/json:
schema:
$ref: '#/components/schemas/apiError'
description: An unexpected error response.
default:
content:
application/json:
schema:
$ref: '#/components/schemas/genericError'
description: An undefined error response.
tags:
- RollupRule
security:
- ApiKeyAuth: []
summary: Delete rollup rule
x-summary-source: derived
get:
operationId: ReadRollupRule
parameters:
- in: path
name: slug
required: true
schema:
type: string
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/configv1ReadRollupRuleResponse'
description: A successful response.
'404':
content:
application/json:
schema:
$ref: '#/components/schemas/apiError'
description: Cannot read the RollupRule because the slug does not exist.
'500':
content:
application/json:
schema:
$ref: '#/components/schemas/apiError'
description: An unexpected error response.
default:
content:
application/json:
schema:
$ref: '#/components/schemas/genericError'
description: An undefined error response.
tags:
- RollupRule
security:
- ApiKeyAuth: []
summary: Read rollup rule
x-summary-source: derived
put:
operationId: UpdateRollupRule
parameters:
- in: path
name: slug
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/ConfigV1UpdateRollupRuleBody'
required: true
x-originalParamName: body
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/configv1UpdateRollupRuleResponse'
description: A successful response containing the updated RollupRule.
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/apiError'
description: Cannot update the RollupRule because the request is invalid.
'404':
content:
application/json:
schema:
$ref: '#/components/schemas/apiError'
description: Cannot update the RollupRule because the slug does not exist.
'409':
content:
application/json:
schema:
$ref: '#/components/schemas/apiError'
description: Cannot update the RollupRule because there is a conflict with an existing RollupRule.
'500':
content:
application/json:
schema:
$ref: '#/components/schemas/apiError'
description: An unexpected error response.
default:
content:
application/json:
schema:
$ref: '#/components/schemas/genericError'
description: An undefined error response.
tags:
- RollupRule
security:
- ApiKeyAuth: []
summary: Update rollup rule
x-summary-source: derived
servers:
- url: https://{tenant}.chronosphere.io
variables:
tenant:
default: tenant
description: tenant ID assigned by the service provider
components:
schemas:
GraphiteLabelPolicyReplace:
properties:
name:
description: 'Name of the label to replace the value for. Only positional Graphite labels
such as `__gX__` are allowed.'
example: __g1__
type: string
new_value:
description: New value of the replaced label.
example: ALL_HOSTS
type: string
required:
- name
- new_value
type: object
configv1AggregationType:
enum:
- LAST
- MIN
- MAX
- MEAN
- MEDIAN
- COUNT
- SUM
- SUMSQ
- STDEV
- P10
- P20
- P30
- P40
- P50
- P60
- P70
- P80
- P90
- P95
- P99
- P999
- P9999
- P25
- P75
- COUNT_SAMPLES
- HISTOGRAM
type: string
genericError:
additionalProperties: true
type: object
RollupRuleGraphiteLabelPolicy:
properties:
replace:
description: 'List of labels to replace. Use to discard high-cardinality values while still
preserving the original positions of the Graphite metric.'
items:
$ref: '#/components/schemas/GraphiteLabelPolicyReplace'
type: array
required:
- replace
type: object
RollupRuleLabelReplace:
description: 'Must keep this around for backwards compatibility because terraform will
still send this key w/ a null value.'
type: object
configv1DeleteRollupRuleResponse:
type: object
configv1CreateRollupRuleRequest:
properties:
dry_run:
description: If `true`, validates the specified configuration without creating the RollupRule. If the specified configuration is valid, the endpoint returns a partial response without the RollupRule. If the specified configuration is invalid, the endpoint returns an error.
type: boolean
rollup_rule:
allOf:
- $ref: '#/components/schemas/configv1RollupRule'
description: The RollupRule to create.
type: object
configv1UpdateRollupRuleResponse:
properties:
rollup_rule:
$ref: '#/components/schemas/configv1RollupRule'
type: object
configv1RollupRule:
properties:
add_metric_type_label:
description: Defines whether to add a `__rollup_type__` label in the new metric.
type: boolean
aggregation:
allOf:
- $ref: '#/components/schemas/configv1AggregationType'
description: Defines the method by which metrics are aggregated.
bucket_slug:
description: The slug of the bucket the RollupRule belongs to.
type: string
created_at:
description: Timestamp of when the RollupRule was created. Cannot be set by clients.
format: date-time
readOnly: true
type: string
drop_raw:
description: 'Defines whether to automatically generate drop rules for this rollup rule. Set
to `true` to remove raw metrics that match this rollup rule. Default: `false`.'
type: boolean
expansive_match:
description: '**DEPRECATED**.
A series matches and aggregates only if each label defined by filters and
`label_policy.keep` or `graphite_label_policy.replace` (respectively) exist in
the series. Setting `expansive_match=true` removes this restriction. Default:
`expansive_match=false`.
If `false`, a series matches and aggregates only if each label defined by the
provided `filters` and the `label_policy.keep` or
`graphite_label_policy.replace` settings exist in the series.'
type: boolean
filters:
description: "Filters incoming metrics by label. If multiple label filters are specified, an\nincoming metric must match every label filter to match the rule. Label values\nsupport glob patterns, including matching multiple patterns with an `OR`, such\nas `service:{svc1,svc2}`. These special filters are available for matching\nmetrics by non-label request metadata:\n * `__metric_type__`: Matches the incoming metric's [Observability Platform\n metric\n type](https://docs.chronosphere.io/control/shaping/shape-metrics/types#observability-platform-types).\n This is the recommended method for filtering on metric type. Valid values:\n `cumulative_counter`, `cumulative_exponential_histogram`, `delta_counter`,\n `delta_exponential_histogram`, `gauge`, `measurement`.\n * `__metric_source__`: Matches the incoming metric's [source\n format](https://docs.chronosphere.io/control/shaping/shape-metrics/types#supported-formats).\n Valid values: `carbon`, `chrono_gcp`, `dogstatsd`, `open_metrics`,\n `open_telemetry`, `prometheus`, `signalfx`, `statsd`, `wavefront`.\n * `__m3_prom_type__`: When ingesting metric data with Prometheus, matches the\n incoming metric's [Prometheus metric\n type](https://docs.chronosphere.io/control/shaping/shape-metrics/types#prometheus). Valid\n values: `counter`, `gauge`, `histogram`, `gauge_histogram`, `summary`,\n `info`, `state_set`, `quantile`.\n * `__otel_type__`: When ingesting with OpenTelemetry, matches on the incoming\n metric's [OpenTelemetry metric\n type](https://docs.chronosphere.io/control/shaping/shape-metrics/types#opentelemetry).\n Valid values: `sum`, `monotonic_sum`, `gauge`, `histogram`, `exp_histogram`,\n `summary`. For example, the following filter matches any cumulative counter\n metric with a `service=gateway` label whose metric name starts with\n `http_requests_`:\n```\n__metric_type__:cumulative_counter service:gateway __name__:http_requests_*\n```"
items:
$ref: '#/components/schemas/configv1LabelFilter'
type: array
graphite_label_policy:
allOf:
- $ref: '#/components/schemas/RollupRuleGraphiteLabelPolicy'
description: "Optional. Label aggregation policy for Graphite metrics. If set, new\nrestrictions will apply to the rule:\n- `label_policy` cannot be set.\n- `metric_name` cannot be set.\n- `filters` can reference only positional Graphite labels, such as `__gX__`,\n and synthetic labels, such as `__metric_type__`."
interval:
description: 'Optional. Sets a custom interval that defines the amount of
time between aggregated data points. Intervals are based on your
[retention policy](https://docs.chronosphere.io/administer/limits-licensing/licensing).
This field was known as `storage_policies` in version
0.286.0-2023-01-06-release.1
and earlier.'
type: string
label_policy:
allOf:
- $ref: '#/components/schemas/configv1RollupRuleLabelPolicy'
description: 'Label aggregation policy, which acts as a filter, defining which labels to
preserve in the resulting metric. Use `keep` to keep one or more labels, or
`discard` to ignore one or more labels. Required for non-Graphite rules.'
label_replace:
allOf:
- $ref: '#/components/schemas/RollupRuleLabelReplace'
description: '**DEPRECATED**.'
metric_name:
description: 'The name of the new metric to create and persist to the database. You can use
the template string `{{.MetricName }}` to create a new metric name that
references the original metric name. For example, `new_metric: ''{{ .MetricName
}}:by_instance''` outputs a metric with the name `my_metric:by_instance` if the
matched metric is `my_metric`.
This field is optional for Graphite rollup rules.'
type: string
metric_type:
allOf:
- $ref: '#/components/schemas/RollupRuleMetricType'
description: 'Declares the metric type of the input metrics. Each rollup rule must declare the
type of metric it aggregates by setting the `metric_type` field, because each
metric type aggregates differently. Choosing the wrong `metric_type` for your
rule can produce unexpected results.
`COUNTER` is deprecated; use `CUMULATIVE_COUNTER` instead.
`DELTA` is deprecated; use `DELTA_COUNTER` instead.'
mode:
allOf:
- $ref: '#/components/schemas/configv1RollupRuleMode'
description: 'The operational mode for this rollup rule. If `mode=ENABLED`, the rule is
applied. If `mode=PREVIEW`, the rule is not applied, but shaping impact stats
for the rule are recorded. If empty, defaults to `mode=ENABLED`.'
name:
description: The name of the RollupRule. You can modify this value after the RollupRule is created.
type: string
skip_on_conflict:
description: 'If true, this rollup rule is skipped if another rollup rule produces a
metric with the same output name. Use this flag to write rollup rules that
produce metrics only if no other rollup rule produces a series with the
same name.'
type: boolean
slug:
description: The unique identifier of the RollupRule. If a `slug` isn't provided, one is generated based on the `name` field. You can't modify this field after the RollupRule is created.
type: string
storage_policy:
allOf:
- $ref: '#/components/schemas/configv1RollupRuleStoragePolicy'
description: '**DEPRECATED**.
Use `interval` instead. Storage policy applied to the resulting
rollup rule, which must match a known storage policy. If empty, the default
storage policy is used. If set, `interval` can''t be set.'
updated_at:
description: Timestamp of when the RollupRule was last updated. Cannot be set by clients.
format: date-time
readOnly: true
type: string
required:
- bucket_slug
- name
type: object
configv1RollupRuleMode:
enum:
- ENABLED
- PREVIEW
title: '- PREVIEW: TODO: DISABLED = 2;'
type: string
ConfigV1UpdateRollupRuleBody:
properties:
create_if_missing:
description: If `true`, the RollupRule will be created if it does not already exist, identified by `slug`. If `false`, an error will be returned if the RollupRule does not already exist.
type: boolean
dry_run:
description: If `true`, validates the specified configuration without creating or updating the RollupRule. If the specified configuration is valid, the endpoint returns a partial response without the RollupRule. If the specified configuration is invalid, the endpoint returns an error.
type: boolean
rollup_rule:
allOf:
- $ref: '#/components/schemas/configv1RollupRule'
description: The RollupRule to update.
type: object
configv1RollupRuleLabelPolicy:
description: "TODO: consolidate w/ RecordingRule.LabelPolicy once both of these\n entities implement the same label semantics."
properties:
discard:
description: 'Labels to discard in the output metric. If set, the `keep` field must be
empty.'
items:
type: string
type: array
keep:
description: 'Labels to retain in the output metric. If set, the `discard` field must
be empty.'
items:
type: string
type: array
type: object
apiError:
properties:
message:
description: An error message describing what went wrong.
type: string
type: object
configv1ReadRollupRuleResponse:
properties:
rollup_rule:
$ref: '#/components/schemas/configv1RollupRule'
type: object
configv1LabelFilter:
properties:
name:
description: The name of the label to match.
example: job
type: string
value_glob:
description: The glob value of the label to match.
example: myservice*
type: string
type: object
RollupRuleMetricType:
description: " - CUMULATIVE_COUNTER: Alias of COUNTER.\n - DELTA_COUNTER: Alias of DELTA."
enum:
- COUNTER
- GAUGE
- DELTA
- DISTRIBUTION
- CUMULATIVE_EXPONENTIAL_HISTOGRAM
- MEASUREMENT
- CUMULATIVE_COUNTER
- DELTA_COUNTER
- DELTA_EXPONENTIAL_HISTOGRAM
type: string
configv1RollupRuleStoragePolicy:
properties:
resolution:
description: Resolution of the aggregated metrics.
type: string
retention:
description: Retention of the aggregated metrics.
type: string
required:
- resolution
- retention
type: object
configv1ListRollupRulesResponse:
properties:
page:
$ref: '#/components/schemas/configv1PageResult'
rollup_rules:
items:
$ref: '#/components/schemas/configv1RollupRule'
type: array
type: object
configv1PageResult:
properties:
next_token:
description: 'An opaque page token that identifies the next page of items that the
client should request. An empty value indicates that there are no
more items to return.'
type: string
type: object
configv1CreateRollupRuleResponse:
properties:
rollup_rule:
$ref: '#/components/schemas/configv1RollupRule'
type: object
GraphiteLabelPolicyReplace_2:
type: object
properties:
name:
type: string
description: 'Required name of the label whose value should be replaced. Only
`__gX__` labels are allowed (aka positional Graphite labels).'
example: __g1__
new_value:
type: string
description: Required new value of the replaced label.
example: ALL_HOSTS
RollupRuleGraphiteLabelPolicy_2:
type: object
properties:
replace:
type: array
description: 'Required list of labels to replace. Useful for discarding
high-cardinality values while still preserving the original positions of
the Graphite metric.'
items:
$ref: '#/components/schemas/GraphiteLabelPolicyReplace_2'
configv1CreateRollupRuleRequest_2:
type: object
properties:
rollup_rule:
$ref: '#/components/schemas/configv1RollupRule_2'
dry_run:
type: boolean
description: If true, the RollupRule isn't created, and no response RollupRule will be returned. The response will return an error if the given RollupRule is invalid.
configv1RollupRule_2:
type: object
properties:
slug:
type: string
description: Unique identifier of the RollupRule. If a `slug` isn't provided, one will be generated based of the `name` field. You can't modify this field after the RollupRule is created.
name:
type: string
description: Required. Name of the RollupRule. You can modify this value after the RollupRule is created.
created_at:
type: string
description: Timestamp of when the RollupRule was created. Cannot be set by clients.
format: date-time
readOnly: true
updated_at:
type: string
description: Timestamp of when the RollupRule was last updated. Cannot be set by clients.
format: date-time
readOnly: true
bucket_slug:
type: string
description: Required. Slug of the bucket the RollupRule belongs to.
filters:
type: array
description: "Filters incoming metrics by label. If multiple label filters are specified, an\nincoming metric must match every label filter to match the rule. Label values\nsupport glob patterns, including matching multiple patterns with an `OR`, such\nas `service:{svc1,svc2}`. These special filters are available for matching\nmetrics by non-label request metadata:\n * `__metric_type__`: Matches the incoming metric's [Observability Platform\n metric\n type](https://docs.chronosphere.io/control/shaping/types#observability-platform-types).\n This is the recommended method for filtering on metric type. Valid values:\n `cumulative_counter`, `cumulative_exponential_histogram`, `delta_counter`,\n `delta_exponential_histogram`, `gauge`, `measurement`.\n * `__metric_source__`: Matches the incoming metric's [source\n format](https://docs.chronosphere.io/control/shaping/types#supported-formats).\n Valid values: `carbon`, `chrono_gcp`, `dogstatsd`, `open_metrics`,\n `open_telemetry`, `prometheus`, `signalfx`, `statsd`, `wavefront`.\n * `__m3_prom_type__`: When ingesting with Prometheus, matches the incoming\n metric's [Prometheus metric\n type](https://docs.chronosphere.io/control/shaping/types#prometheus). Valid\n values: `counter`, `gauge`, `histogram`, `gauge_histogram`, `summary`,\n `info`, `state_set`, `quantile`.\n * `__otel_type__`: When ingesting with OpenTelemetry, matches on the incoming\n metric's [OpenTelemetry metric type](https://docs.chronosphere.io/control/shaping/types#opentelemetry).\n Valid values: `sum`, `monotonic_sum`, `gauge`, `histogram`, `exp_histogram`,\n `summary`.\nFor example, the following filter matches any cumulative counter metric with a\n`service=gateway` label whose metric name starts with `http_requests_`:\n```\n__metric_type__:cumulative_counter service:gateway __name__:http_requests_*\n```"
items:
$ref: '#/components/schemas/configv1LabelFilter_2'
metric_name:
type: string
description: This field is optional for Graphite rollup rules.
metric_type:
$ref: '#/components/schemas/RollupRuleMetricType'
aggregation:
$ref: '#/components/schemas/configv1AggregationType'
storage_policy:
$ref: '#/components/schemas/configv1RollupRuleStoragePolicy_2'
interval:
type: string
description: 'The distance in time between aggregated data points. Intervals are based on your
[retention policy](https://docs.chronosphere.io/administer/licensing#retention-policies).
Use this optional field to set a custom interval.
This field was known as `storage_policies` in version
0.286.0-2023-01-06-release.1 and earlier.'
expansive_match:
type: boolean
description: 'DEPRECATED.
A series matches and aggregates only if each label defined by filters and
`label_policy.keep` or `graphite_label_policy.replace` (respectively) exist in
the series. Setting `expansive_match=true` removes this restriction. Default:
`expansive_match=false`.
If `false`, a series matches and aggregates only if each label defined by the
provided `filters` and the `label_policy.keep` or
`graphite_label_policy.replace` settings exist in the series.'
add_metric_type_label:
type: boolean
description: Defines whether to add a `__rollup_type__` label in the new metric.
drop_raw:
type: boolean
description: 'Defines whether to automatically generate drop rules for this rollup rule.
Set to `true` to remove raw metrics that match this rollup rule. Default: `false`.'
label_policy:
$ref: '#/components/schemas/configv1RollupRuleLabelPolicy_2'
label_replace:
$ref: '#/components/schemas/RollupRuleLabelReplace'
mode:
$ref: '#/components/schemas/configv1RollupRuleMode'
graphite_label_policy:
$ref: '#/components/schemas/RollupRuleGraphiteLabelPolicy_2'
ConfigV1UpdateRollupRuleBody_2:
type: object
properties:
rollup_rule:
$ref: '#/components/schemas/configv1RollupRule_2'
create_if_missing:
type: boolean
description: If true, the RollupRule will be created if it does not already exist, identified by slug. If false, an error will be returned if the RollupRule does not already exist.
dry_run:
type: boolean
description: If true, the RollupRule isn't created or updated, and no response RollupRule will be returned. The response will return an error if the given RollupRule is invalid.
configv1RollupRuleLabelPolicy_2:
type: object
properties:
keep:
type: array
description: 'Labels that should be retained in the output metric. If set, then the
discard field must be empty.'
items:
type: string
discard:
type: array
description: 'Labels that should be discarded in the output metric. If set, then the
keep field must be empty.'
items:
type: string
description: "TODO: consolidate w/ RecordingRule.LabelPolicy once both of these\n entities implement the same label semantics."
apiError_2:
type: object
properties:
code:
type: integer
description: An optional private error code whose values are undefined.
format: int32
message:
type: string
description: An error message describing what went wrong.
configv1LabelFilter_2:
type: object
properties:
name:
type: string
description: Name of the label to match.
example: job
value_glob:
type: string
description: Glob value of the label to match.
example: myservice*
configv1RollupRuleStoragePolicy_2:
type: object
properties:
resolution:
type: string
description: Required resolution of the aggregated metrics.
retention:
type: string
description: Required retention of the aggregated metrics.
configv1PageResult_2:
type: object
properties:
next_token:
type: string
description: 'Opaque page token which identifies the next page of items which the
client should request. An empty next_token indicates that there are no
more items to return.'
securitySchemes:
ApiKeyAuth:
description: Chronosphere API token
in: header
name: API-Token
type: apiKey
x-refined-from:
- chronosphere-config-v1-openapi3.json
- chronosphere-openapi.yml