Chronosphere · Schema
ConfigV1UpdateSLOBody
ObservabilityAIOpsMonitoringMetricsLoggingDistributed TracingTelemetryOpenTelemetryPrometheusAlertingSLOInfrastructure as CodeMCPAgent ReadyA2A
Properties
| Name | Type | Description |
|---|---|---|
| create_if_missing | boolean | If `true`, the SLO will be created if it does not already exist, identified by `slug`. If `false`, an error will be returned if the SLO does not already exist. |
| dry_run | boolean | If `true`, validates the specified configuration without creating or updating the SLO. If the specified configuration is valid, the endpoint returns a partial response without the SLO. If the specifie |
| slo | object | The SLO to update. |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://raw.githubusercontent.com/api-evangelist/chronosphere/main/json-schema/chronosphere-config-v1-update-slobody-schema.json",
"title": "ConfigV1UpdateSLOBody",
"x-generated": "2026-10-03",
"x-method": "derived",
"x-generator": "derive-json-schema.py",
"x-source": "openapi/chronosphere-slo-api-openapi.yml#/components/schemas/ConfigV1UpdateSLOBody",
"properties": {
"create_if_missing": {
"description": "If `true`, the SLO will be created if it does not already exist, identified by `slug`. If `false`, an error will be returned if the SLO does not already exist.",
"type": "boolean"
},
"dry_run": {
"description": "If `true`, validates the specified configuration without creating or updating the SLO. If the specified configuration is valid, the endpoint returns a partial response without the SLO. If the specified configuration is invalid, the endpoint returns an error.",
"type": "boolean"
},
"slo": {
"allOf": [
{
"$ref": "#/$defs/configv1SLO"
}
],
"description": "The SLO to update."
}
},
"type": "object",
"$defs": {
"ConditionOp": {
"enum": [
"GEQ",
"GT",
"LEQ",
"LT",
"EQ",
"NEQ",
"EXISTS",
"NOT_EXISTS",
"SIGNAL_NOT_EXISTS"
],
"type": "string"
},
"DefinitionBurnRateDefinition": {
"properties": {
"budget": {
"description": "The amount of allowed errors during a given time window, expressed as a\npercentage of the error budget. Must be a value between `0.0` and `100.0`,\nexclusive.",
"format": "double",
"type": "number"
},
"labels": {
"additionalProperties": {
"type": "string"
},
"description": "Labels to attach when this burn rate triggers. If you add these labels to\n`signal_groupings`, you can route them in the notification policy, and can\nroute different burn rates to other notifiers.",
"type": "object"
},
"severity": {
"description": "Defines the alert severity level, which can only be one of `critical` or\n`warn`.",
"type": "string"
},
"window": {
"description": "Time window for the burn rate calculation.",
"type": "string"
}
},
"required": [
"window"
],
"type": "object"
},
"DefinitionTimeWindow": {
"properties": {
"duration": {
"description": "Time window that defines the evaluation period as a string, in the format\nlike `\"28d\"` (28 days) or `\"24h\"` (24 hours).",
"type": "string"
}
},
"type": "object"
},
"MonitorSignalGrouping": {
"description": "SignalGrouping defines how the set of series from the query are split into signals.",
"properties": {
"label_names": {
"description": "Set of label names used to split series into signals. Each unique combination\nof labels result in its own signal. For example, if `label_names` is\n`[\"service\", \"code\"]`, then all series including labels\n`{service=\"foo\",code=\"404\"}` will be grouped together in the same signal.\n\nCannot be used if `graphite_query` is set.",
"items": {
"type": "string"
},
"type": "array"
},
"signal_per_series": {
"description": "If set to `true`, each series will have its own signal. Cannot be used with\n`label_names`.",
"type": "boolean"
}
},
"type": "object"
},
"SLICustomIndicatorConfig": {
"description": "Configuration for error ratio SLIs. You can include these variables in PromQL\nqueries for SLIs:\n- `{{.Window}}`: Specifies the window of time that the PromQL query operates on.\n- `{{.GroupBy}}`: Specifies a comma-separated list of signal and dimension\n labels to group the results by.\n- `{{.AdditionalFilters}}`: Requires setting `additional_promql_filters`.",
"properties": {
"bad_query_template": {
"description": "A PromQL query that measures the number of \"bad\" events for this SLI.\nEither this or `good_query_template` must be set.",
"type": "string"
},
"good_query_template": {
"description": "A PromQL query that measures the number of \"good\" events for this SLI.\nEither this or `bad_query_template` must be set.",
"type": "string"
},
"total_query_template": {
"description": "A PromQL query that measures the total number of events for this SLI.\nThis is required for all error ratio SLOs.",
"type": "string"
}
},
"required": [
"total_query_template"
],
"type": "object"
},
"SLICustomTimeSliceIndicatorConfig": {
"description": "Defines the configuration for time slice SLIs. Time slice SLIs are evaluated by\nrunning a PromQL query over a certain time window and comparing the result against\na condition. You can include these variables in PromQL queries for SLIs:\n- `{{.Window}}`: Specifies the window of time that the PromQL query operates on.\n- `{{.GroupBy}}`: Specifies a comma-separated list of signal and dimension labels\n to group the results by.\n- `{{.TimeSlice}}`: The time slice being evaluated, such as `1m` or `5m`.\n- `{{.AdditionalFilters}}`: Requires setting `additional_promql_filters`.",
"properties": {
"condition": {
"allOf": [
{
"$ref": "#/$defs/SLITimeSliceCondition"
}
],
"description": "The condition to use for the SLI."
},
"query_template": {
"description": "A PromQL query template for the time slice SLI.",
"type": "string"
},
"timeslice_size": {
"allOf": [
{
"$ref": "#/$defs/SLITimeSliceSize"
}
],
"description": "The size of the time slice to use for the SLI."
}
},
"type": "object"
},
"SLISLOType": {
"description": "What the SLO measures. No query generation depends on it: the queries are\nstill authored through `custom_indicator` or `custom_timeslice_indicator`,\nand this only records the intent behind them.",
"enum": [
"ENDPOINT_AVAILABILITY",
"LATENCY"
],
"type": "string"
},
"SLITimeSliceCondition": {
"description": "Defines the condition for evaluating time slice SLIs.",
"properties": {
"op": {
"allOf": [
{
"$ref": "#/$defs/ConditionOp"
}
],
"description": "The comparison operation to use."
},
"value": {
"description": "The value to compare against.",
"format": "double",
"type": "number"
}
},
"type": "object"
},
"SLITimeSliceSize": {
"description": "Defines the supported time slice sizes for time slice SLIs.",
"enum": [
"TIMESLICE_SIZE_ONE_MINUTE",
"TIMESLICE_SIZE_FIVE_MINUTES"
],
"type": "string"
},
"SLODefinition": {
"properties": {
"burn_rate_alerting_config": {
"description": "Provides the burn rate alert configuration for the SLO. If not provided, the\ndefault burn rates are used. The configuration is only valid if the\n`enable_burn_rate_alerting` flag is set to `true`.",
"items": {
"$ref": "#/$defs/DefinitionBurnRateDefinition"
},
"type": "array"
},
"enable_burn_rate_alerting": {
"description": "If `true`, enables burn rate alerting.",
"type": "boolean"
},
"objective": {
"description": "The SLO target percentage, which represents the availability of the SLO.",
"format": "double",
"type": "number"
},
"time_window": {
"allOf": [
{
"$ref": "#/$defs/DefinitionTimeWindow"
}
],
"description": "Specifies the duration over which the SLO is evaluated. The SLO is considered\nbreached if the error budget is depleted in this window. Default: `4w` (4\nweeks)."
}
},
"type": "object"
},
"commonPromQLMatcher": {
"properties": {
"name": {
"description": "Prometheus label name for the matcher",
"type": "string"
},
"type": {
"allOf": [
{
"$ref": "#/$defs/commonPromQLMatcherType"
}
],
"description": "The type of match to be performed"
},
"value": {
"description": "Prometheus label value for the matcher",
"type": "string"
}
},
"type": "object"
},
"commonPromQLMatcherType": {
"enum": [
"MatchEqual",
"MatchRegexp",
"MatchNotEqual",
"MatchNotRegexp"
],
"type": "string"
},
"configv1CollectionReference": {
"properties": {
"slug": {
"type": "string"
},
"type": {
"$ref": "#/$defs/configv1CollectionReferenceType"
}
},
"type": "object"
},
"configv1CollectionReferenceType": {
"enum": [
"SIMPLE",
"SERVICE"
],
"title": "Type values must match entitiespb.Collection.CollectionType.",
"type": "string"
},
"configv1SLI": {
"properties": {
"additional_promql_filters": {
"description": "Specifies additional PromQL filters, which are made available to the SLO queries.\nUse these filters to reduce the number of metrics used by the SLO.",
"items": {
"$ref": "#/$defs/commonPromQLMatcher"
},
"type": "array"
},
"custom_dimension_labels": {
"description": "Configures additional labels to export from the underlying queries. This feature\nprovides a logical budget to group unique combinations of dimensions. For\nexample, if you want to track a budget per endpoint, add the endpoint label as a\ndimension. These dimensions are provided on the top-level SLI so that SLOs will\nreceive them in the `.GroupBy` variable.",
"items": {
"type": "string"
},
"type": "array"
},
"custom_indicator": {
"allOf": [
{
"$ref": "#/$defs/SLICustomIndicatorConfig"
}
],
"description": "Indicates an error ratio SLI, which measures a count of events matching some\ncondition against a total number of events. For example, measuring a ratio of\nsuccessful requests against the total number of requests. Use `custom_indicator`\nto track error ratio SLOs. You can set only one of `custom_indicator` or\n`custom_timeslice_indicator`."
},
"custom_timeslice_indicator": {
"allOf": [
{
"$ref": "#/$defs/SLICustomTimeSliceIndicatorConfig"
}
],
"description": "Indicates a TimeSlice SLI, which measures a count of time slices that meet a\ndefined condition, compared against the total number of time slices in a\nspecific time period. Use `custom_timeslice_indicator` to track TimeSlice SLOs.\nYou can set only one of `custom_indicator` or `custom_timeslice_indicator`."
},
"latency_threshold_nanos": {
"description": "Optional. The latency that requests are measured against, in nanoseconds:\n50000000 is the \"50ms\" in \"P99 < 50ms\". Required when `slo_type` is\n`LATENCY`, rejected otherwise.",
"format": "int64",
"type": "string"
},
"slo_type": {
"allOf": [
{
"$ref": "#/$defs/SLISLOType"
}
],
"description": "Optional. Unset means the type was never declared, and consumers render\nthe SLO the same way they did before this field existed."
}
},
"type": "object"
},
"configv1SLO": {
"properties": {
"annotations": {
"additionalProperties": {
"type": "string"
},
"description": "Annotations are visible in notifications generated by this SLO.\nYou can template annotations with labels from notifications.",
"type": "object"
},
"collection_ref": {
"$ref": "#/$defs/configv1CollectionReference"
},
"created_at": {
"description": "Timestamp of when the SLO was created. Cannot be set by clients.",
"format": "date-time",
"readOnly": true,
"type": "string"
},
"definition": {
"allOf": [
{
"$ref": "#/$defs/SLODefinition"
}
],
"description": "Defines the core criteria the SLO measures."
},
"description": {
"type": "string"
},
"labels": {
"additionalProperties": {
"type": "string"
},
"description": "Labels are visible in notifications generated by this SLO,\nand can be used to route alerts with notification overrides.",
"type": "object"
},
"name": {
"description": "The name of the SLO. You can modify this value after the SLO is created.",
"type": "string"
},
"notification_policy_slug": {
"description": "Optional. Slug of the notification policy to use for the SLO. If you don't\nspecify a value, then the collection or service this SLO belongs to must have a\nnotification policy. Required if alerting is enabled for this SLO.",
"type": "string"
},
"signal_grouping": {
"$ref": "#/$defs/MonitorSignalGrouping"
},
"sli": {
"$ref": "#/$defs/configv1SLI"
},
"slug": {
"description": "The unique identifier of the SLO. If a `slug` isn't provided, one is generated based on the `name` field. You can't modify this field after the SLO is created.",
"type": "string"
},
"updated_at": {
"description": "Timestamp of when the SLO was last updated. Cannot be set by clients.",
"format": "date-time",
"readOnly": true,
"type": "string"
}
},
"required": [
"name"
],
"type": "object"
}
}
}
Work with this as data
Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for schemas
4 MCP tools reach this
find_json_schemasBrowse and filter every JSON Schema in the catalog.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.
Call it yourself
curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/chronosphere-config-v1-update-slobody"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
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.