Chronosphere RecordingRule API

The RecordingRule API from Chronosphere — 2 operation(s) for recordingrule.

Business capability
Observability Management BC-4220.20

Operations 5

GET /api/v1/config/recording-rules List recording rules #
POST /api/v1/config/recording-rules Create recording rule #
DELETE /api/v1/config/recording-rules/{slug} Delete recording rule #
GET /api/v1/config/recording-rules/{slug} Read recording rule #
PUT /api/v1/config/recording-rules/{slug} Update recording rule #

Work with this as data

Every API 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 apis

7 MCP tools reach this
  • 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.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/chronosphere-recordingrule-api"
All apis
curl "https://apis.io/api/v1/apis?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.

OpenAPI Specification

chronosphere-recordingrule-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Chronosphere Recording Rule API
  version: v1
  description: 'Operations tagged RecordingRule 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: RecordingRule
paths:
  /api/v1/config/recording-rules:
    get:
      operationId: ListRecordingRules
      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 RecordingRule 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 RecordingRule 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: The execution_groups filter cannot be used when a bucket_slug filter is provided.
        in: query
        name: bucket_slugs
        schema:
          items:
            type: string
          type: array
      - description: The bucket_slugs filter cannot be used when an execution_group filter is provided.
        in: query
        name: execution_groups
        schema:
          items:
            type: string
          type: array
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/configv1ListRecordingRulesResponse'
          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:
      - RecordingRule
      security:
      - ApiKeyAuth: []
      summary: List recording rules
      x-summary-source: derived
    post:
      operationId: CreateRecordingRule
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configv1CreateRecordingRuleRequest'
        required: true
        x-originalParamName: body
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/configv1CreateRecordingRuleResponse'
          description: A successful response containing the created RecordingRule.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/apiError'
          description: Cannot create the RecordingRule because the request is invalid.
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/apiError'
          description: Cannot create the RecordingRule because there is a conflict with an existing RecordingRule.
        '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:
      - RecordingRule
      security:
      - ApiKeyAuth: []
      summary: Create recording 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/recording-rules/{slug}:
    delete:
      operationId: DeleteRecordingRule
      parameters:
      - in: path
        name: slug
        required: true
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/configv1DeleteRecordingRuleResponse'
          description: A successful response.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/apiError'
          description: Cannot delete the RecordingRule because it is in use.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/apiError'
          description: Cannot delete the RecordingRule 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:
      - RecordingRule
      security:
      - ApiKeyAuth: []
      summary: Delete recording rule
      x-summary-source: derived
    get:
      operationId: ReadRecordingRule
      parameters:
      - in: path
        name: slug
        required: true
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/configv1ReadRecordingRuleResponse'
          description: A successful response.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/apiError'
          description: Cannot read the RecordingRule 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:
      - RecordingRule
      security:
      - ApiKeyAuth: []
      summary: Read recording rule
      x-summary-source: derived
    put:
      operationId: UpdateRecordingRule
      parameters:
      - in: path
        name: slug
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ConfigV1UpdateRecordingRuleBody'
        required: true
        x-originalParamName: body
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/configv1UpdateRecordingRuleResponse'
          description: A successful response containing the updated RecordingRule.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/apiError'
          description: Cannot update the RecordingRule because the request is invalid.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/apiError'
          description: Cannot update the RecordingRule because the slug does not exist.
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/apiError'
          description: Cannot update the RecordingRule because there is a conflict with an existing RecordingRule.
        '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:
      - RecordingRule
      security:
      - ApiKeyAuth: []
      summary: Update recording 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:
    configv1RecordingRule:
      properties:
        bucket_slug:
          description: 'The slug of the bucket the recording rule belongs to. Required if

            `execution_group` is not set. If both `bucket_slug` and `execution_group`

            are set, their values must match.'
          type: string
        created_at:
          description: Timestamp of when the RecordingRule was created. Cannot be set by clients.
          format: date-time
          readOnly: true
          type: string
        execution_group:
          description: 'The slug of the execution group in which the recording rule will be evaluated.

            Rules in the same execution group run at intervals. All rules in a group must

            complete before the rules in that group run again. Required if `bucket_slug`

            isn''t set. If both `bucket_slug` and `execution_group` are set, their values

            must match.


            Creating too many rules in an execution group can cause delays in execution of

            the next iteration. Chronosphere recommends limiting the number of rules in an

            execution group to 200-300 maximum.'
          type: string
        execution_mode:
          allOf:
          - $ref: '#/components/schemas/RecordingRuleExecutionMode'
          description: 'Controls how this rule is assigned to shards for execution.

            When set to SYNCHRONIZED, all rules in the same execution group with

            this mode are assigned to the same shard, which ensures that they execute

            together with the same evaluation timestamp.'
        interval_secs:
          description: 'Specifies how often to evaluate the recording rule. Default: `60s`.'
          format: int32
          type: integer
        label_policy:
          allOf:
          - $ref: '#/components/schemas/configv1RecordingRuleLabelPolicy'
          description: 'Specifies label names to add to the output metric. If you attempt to add an

            existing label, the label isn''t added. For example, `add (instance123:instance)`.'
        metric_name:
          description: 'The name of the time series to use for the output of `prometheus_expr`.

            This value must be a valid metric name. If you don''t set this value,

            the output of `prometheus_expr` is output to a time series with a name

            defined by the value of `name`.'
          type: string
        name:
          description: The name of the RecordingRule. You can modify this value after the RecordingRule is created.
          type: string
        prometheus_expr:
          description: 'The PromQL expression to evaluate at the time of each evaluation cycle. The

            result is output to a new time series with a name defined by the value of

            `metric_name`. If `metric_name` is unset, the result is output to a

            time series defined by the value of `name`.'
          type: string
        slug:
          description: The unique identifier of the RecordingRule. If a `slug` isn't provided, one is generated based on the `name` field. You can't modify this field after the RecordingRule is created.
          type: string
        updated_at:
          description: Timestamp of when the RecordingRule was last updated. Cannot be set by clients.
          format: date-time
          readOnly: true
          type: string
      required:
      - name
      type: object
    configv1ListRecordingRulesResponse:
      properties:
        page:
          $ref: '#/components/schemas/configv1PageResult'
        recording_rules:
          items:
            $ref: '#/components/schemas/configv1RecordingRule'
          type: array
      type: object
    ConfigV1UpdateRecordingRuleBody:
      properties:
        create_if_missing:
          description: If `true`, the RecordingRule will be created if it does not already exist, identified by `slug`. If `false`, an error will be returned if the RecordingRule does not already exist.
          type: boolean
        dry_run:
          description: If `true`, validates the specified configuration without creating or updating the RecordingRule. If the specified configuration is valid, the endpoint returns a partial response without the RecordingRule. If the specified configuration is invalid, the endpoint returns an error.
          type: boolean
        recording_rule:
          allOf:
          - $ref: '#/components/schemas/configv1RecordingRule'
          description: The RecordingRule to update.
      type: object
    configv1CreateRecordingRuleRequest:
      properties:
        dry_run:
          description: If `true`, validates the specified configuration without creating the RecordingRule. If the specified configuration is valid, the endpoint returns a partial response without the RecordingRule. If the specified configuration is invalid, the endpoint returns an error.
          type: boolean
        recording_rule:
          allOf:
          - $ref: '#/components/schemas/configv1RecordingRule'
          description: The RecordingRule to create.
      type: object
    configv1DeleteRecordingRuleResponse:
      type: object
    genericError:
      additionalProperties: true
      type: object
    configv1CreateRecordingRuleResponse:
      properties:
        recording_rule:
          $ref: '#/components/schemas/configv1RecordingRule'
      type: object
    configv1RecordingRuleLabelPolicy:
      properties:
        add:
          additionalProperties:
            type: string
          description: A list of labels to add or overwrite before storing the result.
          type: object
      type: object
    configv1ReadRecordingRuleResponse:
      properties:
        recording_rule:
          $ref: '#/components/schemas/configv1RecordingRule'
      type: object
    apiError:
      properties:
        message:
          description: An error message describing what went wrong.
          type: string
      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
    RecordingRuleExecutionMode:
      description: "ExecutionMode controls how a recording rule is assigned to shards for execution.\n\n - EXECUTION_MODE_SYNCHRONIZED: Synchronized: shard rule by execution group, which ensures that all\nsynchronized rules in the same group execute on the same shard."
      enum:
      - EXECUTION_MODE_SYNCHRONIZED
      type: string
    configv1UpdateRecordingRuleResponse:
      properties:
        recording_rule:
          $ref: '#/components/schemas/configv1RecordingRule'
      type: object
    configv1RecordingRule_2:
      type: object
      properties:
        slug:
          type: string
          description: Unique identifier of the RecordingRule. If a `slug` isn't provided, one will be generated based of the `name` field. You can't modify this field after the RecordingRule is created.
        name:
          type: string
          description: Required. Name of the RecordingRule. You can modify this value after the RecordingRule is created.
        created_at:
          type: string
          description: Timestamp of when the RecordingRule was created. Cannot be set by clients.
          format: date-time
          readOnly: true
        updated_at:
          type: string
          description: Timestamp of when the RecordingRule was last updated. Cannot be set by clients.
          format: date-time
          readOnly: true
        bucket_slug:
          type: string
          description: Optional slug of the bucket the RecordingRule belongs to.
        label_policy:
          $ref: '#/components/schemas/configv1RecordingRuleLabelPolicy_2'
        interval_secs:
          type: integer
          description: Optional interval for evaluating the recording rule.
          format: int32
        metric_name:
          type: string
          description: 'The name of the time series to use for output, which must be a valid

            metric name.'
        prometheus_expr:
          type: string
          description: 'The PromQL expression to evaluate at the time of each evaluation cycle.

            The result is recorded as a new time series with its metric name

            defined by the metric_name (or name) field.'
        execution_group:
          type: string
          description: 'Optional execution_group in which this rule is to be evaluated.

            At least one of bucket_slug and execution_group must be set. If both are set, then they are expected to match.'
    ConfigV1UpdateRecordingRuleBody_2:
      type: object
      properties:
        recording_rule:
          $ref: '#/components/schemas/configv1RecordingRule_2'
        create_if_missing:
          type: boolean
          description: If true, the RecordingRule will be created if it does not already exist, identified by slug. If false, an error will be returned if the RecordingRule does not already exist.
        dry_run:
          type: boolean
          description: If true, the RecordingRule isn't created or updated, and no response RecordingRule will be returned. The response will return an error if the given RecordingRule is invalid.
    configv1CreateRecordingRuleRequest_2:
      type: object
      properties:
        recording_rule:
          $ref: '#/components/schemas/configv1RecordingRule_2'
        dry_run:
          type: boolean
          description: If true, the RecordingRule isn't created, and no response RecordingRule will be returned. The response will return an error if the given RecordingRule is invalid.
    configv1RecordingRuleLabelPolicy_2:
      type: object
      properties:
        add:
          type: object
          additionalProperties:
            type: string
          description: Labels to add or overwrite before storing the result.
    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.
    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