openapi: 3.2.0 info: description: 'The Config API provides standard HTTP/JSON REST endpoints for creating, reading, updating, deleting, and listing configurable Chronosphere resources. Use this link to download the raw Swagger specification: /api/v1/config/swagger.json' title: Config V1 Log Retention Config API version: v1 servers: - url: https://{tenant}.chronosphere.io variables: tenant: default: tenant description: tenant ID assigned by the service provider security: - ApiKeyAuth: [] tags: - name: LogRetentionConfig paths: /api/v1/config/log-retention-configs: get: operationId: ListLogRetentionConfigs 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 LogRetentionConfig 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 LogRetentionConfig 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 responses: '200': content: application/json: schema: $ref: '#/components/schemas/configv1ListLogRetentionConfigsResponse' 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: - LogRetentionConfig summary: List log retention configs x-summary-source: derived post: operationId: CreateLogRetentionConfig requestBody: content: application/json: schema: $ref: '#/components/schemas/configv1CreateLogRetentionConfigRequest' required: true x-originalParamName: body responses: '200': content: application/json: schema: $ref: '#/components/schemas/configv1CreateLogRetentionConfigResponse' description: A successful response containing the created LogRetentionConfig. '400': content: application/json: schema: $ref: '#/components/schemas/apiError' description: Cannot create the LogRetentionConfig because the request is invalid. '409': content: application/json: schema: $ref: '#/components/schemas/apiError' description: Cannot create the LogRetentionConfig because there is a conflict with an existing LogRetentionConfig. '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: - LogRetentionConfig summary: Create log retention config x-summary-source: derived /api/v1/config/log-retention-configs/{slug}: delete: operationId: DeleteLogRetentionConfig parameters: - in: path name: slug required: true schema: type: string responses: '200': content: application/json: schema: $ref: '#/components/schemas/configv1DeleteLogRetentionConfigResponse' description: A successful response. '400': content: application/json: schema: $ref: '#/components/schemas/apiError' description: Cannot delete the LogRetentionConfig because it is in use. '404': content: application/json: schema: $ref: '#/components/schemas/apiError' description: Cannot delete the LogRetentionConfig 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: - LogRetentionConfig summary: Delete log retention config x-summary-source: derived get: operationId: ReadLogRetentionConfig parameters: - in: path name: slug required: true schema: type: string responses: '200': content: application/json: schema: $ref: '#/components/schemas/configv1ReadLogRetentionConfigResponse' description: A successful response. '404': content: application/json: schema: $ref: '#/components/schemas/apiError' description: Cannot read the LogRetentionConfig 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: - LogRetentionConfig summary: Read log retention config x-summary-source: derived put: operationId: UpdateLogRetentionConfig parameters: - in: path name: slug required: true schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/ConfigV1UpdateLogRetentionConfigBody' required: true x-originalParamName: body responses: '200': content: application/json: schema: $ref: '#/components/schemas/configv1UpdateLogRetentionConfigResponse' description: A successful response containing the updated LogRetentionConfig. '400': content: application/json: schema: $ref: '#/components/schemas/apiError' description: Cannot update the LogRetentionConfig because the request is invalid. '404': content: application/json: schema: $ref: '#/components/schemas/apiError' description: Cannot update the LogRetentionConfig because the slug does not exist. '409': content: application/json: schema: $ref: '#/components/schemas/apiError' description: Cannot update the LogRetentionConfig because there is a conflict with an existing LogRetentionConfig. '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: - LogRetentionConfig summary: Update log retention config x-summary-source: derived components: schemas: configv1DeleteLogRetentionConfigResponse: type: object configv1UpdateLogRetentionConfigResponse: properties: log_retention_config: $ref: '#/components/schemas/configv1LogRetentionConfig' type: object configv1ReadLogRetentionConfigResponse: properties: log_retention_config: $ref: '#/components/schemas/configv1LogRetentionConfig' type: object ConfigV1UpdateLogRetentionConfigBody: properties: create_if_missing: description: If `true`, the LogRetentionConfig will be created if it does not already exist, identified by `slug`. If `false`, an error will be returned if the LogRetentionConfig does not already exist. type: boolean dry_run: description: If `true`, validates the specified configuration without creating or updating the LogRetentionConfig. If the specified configuration is valid, the endpoint returns a partial response without the LogRetentionConfig. If the specified configuration is invalid, the endpoint returns an error. type: boolean log_retention_config: allOf: - $ref: '#/components/schemas/configv1LogRetentionConfig' description: The LogRetentionConfig to update. type: object configv1LogRetentionConfigMode: enum: - ENABLED - DISABLED type: string configv1CreateLogRetentionConfigRequest: properties: dry_run: description: If `true`, validates the specified configuration without creating the LogRetentionConfig. If the specified configuration is valid, the endpoint returns a partial response without the LogRetentionConfig. If the specified configuration is invalid, the endpoint returns an error. type: boolean log_retention_config: allOf: - $ref: '#/components/schemas/configv1LogRetentionConfig' description: The LogRetentionConfig to create. 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 apiError: properties: message: description: An error message describing what went wrong. type: string type: object configv1LogRetentionConfig: description: 'LogRetentionConfig configures long-term retention policies for log data. Each config specifies a filter to match logs and retention parameters for cold storage (Iceberg). Multiple configs per tenant are supported; when configs overlap, the longest retention wins.' properties: created_at: description: Timestamp of when the LogRetentionConfig was created. Cannot be set by clients. format: date-time readOnly: true type: string filter: description: Log query filter. Only matching logs will have the retention config applied. type: string mode: allOf: - $ref: '#/components/schemas/configv1LogRetentionConfigMode' description: Specifies whether the retention config is enabled or disabled. name: description: The name of the LogRetentionConfig. You can modify this value after the LogRetentionConfig is created. type: string retention_days: description: 'Number of days to retain matching logs in long-term (Iceberg) storage after they are exported. Once this period elapses, data is expired from Iceberg by the IcebergDeleter.' format: int64 type: integer slug: description: The unique identifier of the LogRetentionConfig. If a `slug` isn't provided, one is generated based on the `name` field. You can't modify this field after the LogRetentionConfig is created. type: string updated_at: description: Timestamp of when the LogRetentionConfig was last updated. Cannot be set by clients. format: date-time readOnly: true type: string required: - filter - mode - name - retention_days - slug type: object configv1ListLogRetentionConfigsResponse: properties: log_retention_configs: items: $ref: '#/components/schemas/configv1LogRetentionConfig' type: array page: $ref: '#/components/schemas/configv1PageResult' type: object genericError: additionalProperties: true type: object configv1CreateLogRetentionConfigResponse: properties: log_retention_config: $ref: '#/components/schemas/configv1LogRetentionConfig' type: object securitySchemes: ApiKeyAuth: description: Chronosphere API token in: header name: API-Token type: apiKey