Sift Stack Rule Service API

Service to programmatically interact with rules.

Operations 24

GET /api/v1/rules GetRule #
POST /api/v1/rules CreateRule #
PUT /api/v1/rules UpdateRule #
POST /api/v1/rules/archive ArchiveRule #
POST /api/v1/rules/batchArchive BatchArchiveRules #
POST /api/v1/rules/batchDelete BatchDeleteRules #
POST /api/v1/rules/batchUnarchive BatchUnarchiveRules #
POST /api/v1/rules/batchUndelete BatchUndeleteRules #
POST /api/v1/rules/delete DeleteRule #
POST /api/v1/rules/evaluate EvaluateRules #
POST /api/v1/rules/search SearchRules #
POST /api/v1/rules/unarchive UnarchiveRule #
POST /api/v1/rules/undelete UndeleteRule #
GET /api/v1/rules/{ruleId}/versions ListRuleVersions #
POST /api/v1/rules:batchGet BatchGetRules #
POST /api/v1/rules:batchGetVersions BatchGetRuleVersions #
PUT /api/v1/rules:batchUpdate BatchUpdateRules #
GET /api/v1/rules:list ListRules #
POST /api/v1/rules:updateHumanFriendly UpdateHumanFriendlyRules #
POST /api/v1/rules:updateJson UpdateJsonRules #
POST /api/v1/rules:validateJson ValidateJsonRules #
GET /api/v1/rules:version GetRuleVersion #
GET /api/v1/rules:viewHumanFriendly ViewHumanFriendlyRules #
GET /api/v1/rules:viewJson ViewJsonRules #

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/sift-stack-ruleservice-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

sift-stack-ruleservice-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Sift Rule Service API
  version: '1.0'
  description: Service to programmatically interact with rules.
servers:
- url: https://api.siftstack.com
  description: Production
- url: https://gov.api.siftstack.com
  description: Gov
security:
- BearerAuth: []
tags:
- name: RuleService
  description: Service to programmatically interact with rules.
  externalDocs:
    description: Read more about what rules are.
    url: https://customer.support.siftstack.com/servicedesk/customer/portal/2/article/265421102
paths:
  /api/v1/rules:
    get:
      summary: GetRule
      description: Retrieves the latest version of a rule.
      operationId: RuleService_GetRule
      responses:
        '200':
          description: A successful response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/v1GetRuleResponse'
        default:
          description: An unexpected error response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rpcStatus'
      parameters:
      - name: ruleId
        in: query
        required: false
        schema:
          type: string
      - name: clientKey
        in: query
        required: false
        schema:
          type: string
      tags:
      - RuleService
    post:
      summary: CreateRule
      description: Creates a rule.
      operationId: RuleService_CreateRule
      responses:
        '200':
          description: A successful response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/v1CreateRuleResponse'
        default:
          description: An unexpected error response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rpcStatus'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/v1CreateRuleRequest'
        required: true
      tags:
      - RuleService
    put:
      summary: UpdateRule
      description: Updates an existing rule.
      operationId: RuleService_UpdateRule
      responses:
        '200':
          description: A successful response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/v1UpdateRuleResponse'
        default:
          description: An unexpected error response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rpcStatus'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/v1UpdateRuleRequest'
        description: UpdateRuleRequest is used to create or update a rule. If the rule_id or client_key is provided, the rule will be updated. If not, a new rule will be created.
        required: true
      tags:
      - RuleService
  /api/v1/rules/archive:
    post:
      summary: ArchiveRule
      description: Archives a rule.
      operationId: RuleService_ArchiveRule
      responses:
        '200':
          description: A successful response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/v1ArchiveRuleResponse'
        default:
          description: An unexpected error response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rpcStatus'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/v1ArchiveRuleRequest'
        description: ArchiveRuleRequest is used to archive a rule by rule_id or client_key. If both are provided, only rule_id will be used.
        required: true
      tags:
      - RuleService
  /api/v1/rules/batchArchive:
    post:
      summary: BatchArchiveRules
      description: Batch archives rules.
      operationId: RuleService_BatchArchiveRules
      responses:
        '200':
          description: A successful response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/v1BatchArchiveRulesResponse'
        default:
          description: An unexpected error response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rpcStatus'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/v1BatchArchiveRulesRequest'
        description: BatchArchiveRulesRequest is used to archive a rule by rule_id or client_key. For each rule if both are provided, only rule_id will be used.
        required: true
      tags:
      - RuleService
  /api/v1/rules/batchDelete:
    post:
      summary: BatchDeleteRules
      description: 'Archives multiple rules. Deprecated: Use BatchArchiveRules instead.'
      operationId: RuleService_BatchDeleteRules
      responses:
        '200':
          description: A successful response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/v1BatchDeleteRulesResponse'
        default:
          description: An unexpected error response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rpcStatus'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/v1BatchDeleteRulesRequest'
        description: BatchDeleteRulesRequest is used to delete a rule by rule_id or client_key. For each rule if both are provided, only rule_id will be used.
        required: true
      tags:
      - RuleService
  /api/v1/rules/batchUnarchive:
    post:
      summary: BatchUnarchiveRules
      description: Batch unarchives rules.
      operationId: RuleService_BatchUnarchiveRules
      responses:
        '200':
          description: A successful response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/v1BatchUnarchiveRulesResponse'
        default:
          description: An unexpected error response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rpcStatus'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/v1BatchUnarchiveRulesRequest'
        description: BatchUnarchiveRulesRequest is used to unarchive a rule by rule_id or client_key. For each rule if both are provided, only rule_id will be used.
        required: true
      tags:
      - RuleService
  /api/v1/rules/batchUndelete:
    post:
      summary: BatchUndeleteRules
      description: 'Deprecated: Use BatchUnarchiveRules instead.'
      operationId: RuleService_BatchUndeleteRules
      responses:
        '200':
          description: A successful response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/v1BatchUndeleteRulesResponse'
        default:
          description: An unexpected error response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rpcStatus'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/v1BatchUndeleteRulesRequest'
        description: BatchUndeleteRulesRequest is used to delete a rule by rule_id or client_key. For each rule if both are provided, only rule_id will be used.
        required: true
      tags:
      - RuleService
  /api/v1/rules/delete:
    post:
      summary: DeleteRule
      description: 'Archives a rule. Deprecated: Use ArchiveRule instead.'
      operationId: RuleService_DeleteRule
      responses:
        '200':
          description: A successful response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/v1DeleteRuleResponse'
        default:
          description: An unexpected error response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rpcStatus'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/v1DeleteRuleRequest'
        description: DeleteRuleRequest is used to delete a rule by rule_id or client_key. If both are provided, only rule_id will be used.
        required: true
      tags:
      - RuleService
  /api/v1/rules/evaluate:
    post:
      summary: EvaluateRules
      description: Evaluates the provided rules and generate annotations based on the result.
      operationId: RuleService_EvaluateRules
      responses:
        '200':
          description: A successful response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/siftrulesv1EvaluateRulesResponse'
        default:
          description: An unexpected error response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rpcStatus'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/siftrulesv1EvaluateRulesRequest'
        description: Deprecated - use RuleEvaluationService instead.
        required: true
      tags:
      - RuleService
  /api/v1/rules/search:
    post:
      summary: SearchRules
      description: Queries rules based on provided search parameters.
      operationId: RuleService_SearchRules
      responses:
        '200':
          description: A successful response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/v1SearchRulesResponse'
        default:
          description: An unexpected error response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rpcStatus'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/v1SearchRulesRequest'
        required: true
      tags:
      - RuleService
  /api/v1/rules/unarchive:
    post:
      summary: UnarchiveRule
      description: Unarchives a rule.
      operationId: RuleService_UnarchiveRule
      responses:
        '200':
          description: A successful response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/v1UnarchiveRuleResponse'
        default:
          description: An unexpected error response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rpcStatus'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/v1UnarchiveRuleRequest'
        description: UnarchiveRuleRequest is used to unarchive a rule by rule_id or client_key. If both are provided, only rule_id will be used.
        required: true
      tags:
      - RuleService
  /api/v1/rules/undelete:
    post:
      summary: UndeleteRule
      description: 'Deprecated: Use UnarchiveRule instead.'
      operationId: RuleService_UndeleteRule
      responses:
        '200':
          description: A successful response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/v1UndeleteRuleResponse'
        default:
          description: An unexpected error response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rpcStatus'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/v1UndeleteRuleRequest'
        description: UndeleteRuleRequest is used to undelete a rule by rule_id or client_key. If both are provided, only rule_id will be used.
        required: true
      tags:
      - RuleService
  /api/v1/rules/{ruleId}/versions:
    get:
      summary: ListRuleVersions
      description: Retrieves a list of rule versions for the given rule.
      operationId: RuleService_ListRuleVersions
      responses:
        '200':
          description: A successful response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/v1ListRuleVersionsResponse'
        default:
          description: An unexpected error response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rpcStatus'
      parameters:
      - name: ruleId
        in: path
        required: true
        schema:
          type: string
      - name: pageSize
        description: 'The maximum number of Rule Versions to return.

          The service may return fewer than this value.

          If unspecified, at most 50 Rule Versions will be returned.

          The maximum value is 1000; values above 1000 will be coerced to 1000.'
        in: query
        required: false
        schema:
          type: integer
          format: int64
      - name: pageToken
        description: 'A page token, received from a previous `ListRuleVersions` call.

          Provide this to retrieve the subsequent page.

          When paginating, all other parameters provided to `ListRuleVersions` must match

          the call that provided the page token.'
        in: query
        required: false
        schema:
          type: string
      - name: filter
        description: 'A [Common Expression Language (CEL)](https://github.com/google/cel-spec) filter string.

          Available fields to filter by are `rule_version_id`, `user_notes`,  and `change_message`.

          For further information about how to use CELs, please refer to [this guide](https://github.com/google/cel-spec/blob/master/doc/langdef.md#standard-definitions). Optional.'
        in: query
        required: false
        schema:
          type: string
      tags:
      - RuleService
  /api/v1/rules:batchGet:
    post:
      summary: BatchGetRules
      description: Retrieves multiple rules.
      operationId: RuleService_BatchGetRules
      responses:
        '200':
          description: A successful response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/v1BatchGetRulesResponse'
        default:
          description: An unexpected error response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rpcStatus'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/v1BatchGetRulesRequest'
        description: BatchGetRulesRequest is used to retrieve rules by rule_ids or client_keys. If both are provided, both will be used to retrieve rules.
        required: true
      tags:
      - RuleService
  /api/v1/rules:batchGetVersions:
    post:
      summary: BatchGetRuleVersions
      description: Retrieves multiple rules by rule versions.
      operationId: RuleService_BatchGetRuleVersions
      responses:
        '200':
          description: A successful response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/v1BatchGetRuleVersionsResponse'
        default:
          description: An unexpected error response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rpcStatus'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/v1BatchGetRuleVersionsRequest'
        required: true
      tags:
      - RuleService
  /api/v1/rules:batchUpdate:
    put:
      summary: BatchUpdateRules
      description: Updates existing rules or creates rules that do not exist.
      operationId: RuleService_BatchUpdateRules
      responses:
        '200':
          description: A successful response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/v1BatchUpdateRulesResponse'
        default:
          description: An unexpected error response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rpcStatus'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/v1BatchUpdateRulesRequest'
        required: true
      tags:
      - RuleService
  /api/v1/rules:list:
    get:
      summary: ListRules
      description: Retrieves a list of rules.
      operationId: RuleService_ListRules
      responses:
        '200':
          description: A successful response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/v1ListRulesResponse'
        default:
          description: An unexpected error response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rpcStatus'
      parameters:
      - name: pageSize
        description: 'The maximum number of Rules to return.

          The service may return fewer than this value.

          If unspecified, at most 50 Rules will be returned.

          The maximum value is 1000; values above 1000 will be coerced to 1000.'
        in: query
        required: false
        schema:
          type: integer
          format: int64
      - name: pageToken
        description: 'A page token, received from a previous `ListRules` call.

          Provide this to retrieve the subsequent page.

          When paginating, all other parameters provided to `ListRules` must match

          the call that provided the page token.'
        in: query
        required: false
        schema:
          type: string
      - name: filter
        description: 'A [Common Expression Language (CEL)](https://github.com/google/cel-spec) filter string.

          Available fields to filter by are `rule_id`, `client_key`, `name`, `description`, `is_external`, `asset_id`, `tag_id`,

          `created_date`, `created_by_user_id`, `metadata`, `modified_date`, `modified_by_user_id`, `deleted_date`, `is_archived`, `archived_date`, and `is_live_evaluation_enabled`.

          Metadata can be used in filters by using `metadata.{metadata_key_name}` as the field name.

          Folder membership is filterable via the `folders` and `activeFolders` fields. Both contain the ids of the folders

          the rule belongs to; `activeFolders` excludes archived folders. Use `"<folder_id>" in folders` to return rules in

          the given folder, and `size(activeFolders) == 0` to return uncategorized rules (rules whose only memberships are

          in archived folders count as uncategorized).

          For further information about how to use CELs, please refer to [this guide](https://github.com/google/cel-spec/blob/master/doc/langdef.md#standard-definitions).

          Optional.'
        in: query
        required: false
        schema:
          type: string
      - name: orderBy
        description: 'How to order the retrieved Rules. Formatted as a comma-separated string i.e. "FIELD_NAME[ desc],...".

          Available fields to order_by are `created_date` and `modified_date`.

          If left empty, items are ordered by `created_date` in descending order (newest-first).'
        in: query
        required: false
        schema:
          type: string
      tags:
      - RuleService
  /api/v1/rules:updateHumanFriendly:
    post:
      summary: UpdateHumanFriendlyRules
      description: Batch update rules given the `rules_json` which is a JSON list of rules.
      operationId: RuleService_UpdateHumanFriendlyRules
      responses:
        '200':
          description: A successful response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/v1UpdateHumanFriendlyRulesResponse'
        default:
          description: An unexpected error response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rpcStatus'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/v1UpdateHumanFriendlyRulesRequest'
        description: Deprecated - use UpdateJsonRulesRequest.
        required: true
      tags:
      - RuleService
  /api/v1/rules:updateJson:
    post:
      summary: UpdateJsonRules
      description: Batch update rules given the `rules_json` which is a JSON list of rules.
      operationId: RuleService_UpdateJsonRules
      responses:
        '200':
          description: A successful response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/v1UpdateJsonRulesResponse'
        default:
          description: An unexpected error response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rpcStatus'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/v1UpdateJsonRulesRequest'
        required: true
      tags:
      - RuleService
  /api/v1/rules:validateJson:
    post:
      summary: ValidateJsonRules
      description: Validate a batch update for rules given the `rules_json` which is a JSON list of rules.
      operationId: RuleService_ValidateJsonRules
      responses:
        '200':
          description: A successful response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/v1ValidateJsonRulesResponse'
        default:
          description: An unexpected error response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rpcStatus'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/v1ValidateJsonRulesRequest'
        required: true
      tags:
      - RuleService
  /api/v1/rules:version:
    get:
      summary: GetRuleVersion
      description: Retrieves a specific version of a rule.
      operationId: RuleService_GetRuleVersion
      responses:
        '200':
          description: A successful response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/v1GetRuleVersionResponse'
        default:
          description: An unexpected error response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rpcStatus'
      parameters:
      - name: ruleVersionId
        in: query
        required: true
        schema:
          type: string
      tags:
      - RuleService
  /api/v1/rules:viewHumanFriendly:
    get:
      summary: ViewHumanFriendlyRules
      description: Retrieve a JSON object containing all of the rules for a given asset.
      operationId: RuleService_ViewHumanFriendlyRules
      responses:
        '200':
          description: A successful response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/v1ViewHumanFriendlyRulesResponse'
        default:
          description: An unexpected error response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rpcStatus'
      parameters:
      - name: assetId
        in: query
        required: true
        schema:
          type: string
      tags:
      - RuleService
  /api/v1/rules:viewJson:
    get:
      summary: ViewJsonRules
      description: Retrieve a JSON object containing all of the rules for a given asset.
      operationId: RuleService_ViewJsonRules
      responses:
        '200':
          description: A successful response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/v1ViewJsonRulesResponse'
        default:
          description: An unexpected error response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rpcStatus'
      parameters:
      - name: assetId
        in: query
        required: true
        schema:
          type: string
      tags:
      - RuleService
components:
  schemas:
    v1SearchOrder:
      type: string
      enum:
      - SEARCH_ORDER_UNSPECIFIED
      - SEARCH_ORDER_ASC
      - SEARCH_ORDER_DESC
      default: SEARCH_ORDER_UNSPECIFIED
    v1NamedResources:
      type: object
      properties:
        ids:
          $ref: '#/components/schemas/v1Ids'
        names:
          $ref: '#/components/schemas/v1Names'
    v1ArchiveRuleResponse:
      type: object
    v1RuleAssetConfiguration:
      type: object
      properties:
        assetIds:
          type: array
          items:
            type: string
        tagIds:
          type: array
          items:
            type: string
    v1ListRulesResponse:
      type: object
      properties:
        rules:
          type: array
          items:
            $ref: '#/components/schemas/v1Rule'
        nextPageToken:
          type: string
      required:
      - rules
    v1BatchGetRulesResponse:
      type: object
      properties:
        rules:
          type: array
          items:
            $ref: '#/components/schemas/v1Rule'
      required:
      - rules
    v1UpdateConditionRequest:
      type: object
      properties:
        ruleConditionId:
          type: string
        expression:
          $ref: '#/components/schemas/v1RuleConditionExpression'
        actions:
          type: array
          items:
            $ref: '#/components/schemas/v1UpdateActionRequest'
      required:
      - expression
      - actions
    v1DryRunAnnotation:
      type: object
      properties:
        conditionId:
          type: string
        name:
          type: string
        startTime:
          type: string
          format: date-time
        endTime:
          type: string
          format: date-time
        conditionVersionId:
          type: string
      required:
      - startTime
      - endTime
    v1FunctionDependency:
      type: object
      properties:
        userDefinedFunctionVersionId:
          type: string
      required:
      - userDefinedFunctionVersionId
    v1ValidationResult:
      type: object
      properties:
        ruleId:
          type: string
        clientKey:
          type: string
        assetExpressionValidationResults:
          type: array
          items:
            $ref: '#/components/schemas/v1AssetExpressionValidationResult'
          description: 'If the expression is invalid for an asset, one or more AssetExpressionValidationResult will be returned. This may block

            saving if the override_expression_validation flag is not set.'
        error:
          type: string
          description: 'If the rule is invalid and unable to be saved, this will contain the error message. Expression errors will be returned in

            the asset_expression_validation_results.'
        ruleName:
          type: string
      required:
      - assetExpressionValidationResults
    v1BatchArchiveRulesResponse:
      type: object
    v1Names:
      type: object
      properties:
        names:
          type: array
          items:
            type: string
      required:
      - names
    v1ViewJsonRulesResponse:
      type: object
      properties:
        rulesJson:
          type: string
      required:
      - rulesJson
    v1RuleActionConfiguration:
      type: object
      properties:
        notification:
          $ref: '#/components/schemas/v1NotificationActionConfiguration'
        annotation:
          $ref: '#/components/schemas/v1AnnotationActionConfiguration'
        webhook:
          $ref: '#/components/schemas/v1WebhookActionConfiguration'
    v1BatchArchiveRulesRequest:
      type: object
      properties:
        ruleIds:
          type: array
          items:
            type: string
        clientKeys:
          type: array
          items:
            type: string
      description: BatchArchiveRulesRequest is used to archive a rule by rule_id or client_key. For each rule if both are provided, only rule_id will be used.
    v1LastValueThreshold:
      type: object
    v1JsonRulesRequest:
      type: object
      properties:
        assetId:
          type: string
        rulesJson:
          type: string
        organizationId:
          type: string
      required:
      - assetId
      - rulesJson
      - organizationId
    v1MetadataKey:
      type: object
      properties:
        name:
          type: string
        type:
          $ref: '#/components/schemas/v1MetadataKeyType'
        archivedDate:
          type: string
          format: date-time
        isArchived:
          type: boolean
          description: "Whether the metadata key is archived. This is inferred from whether archived_date is set.\n\nThe filter field type this key maps to, so a client can build a CEL filter\n against it (`metadata[\"<name>\"]`) and resolve its operators and functions\n from FilterGrammarService. Derived from `type`."
      required:
      - name
      - type
    v1BatchUndeleteRulesResponse:
      type: object
    v1UndeleteRuleResponse:
      type: object
    v1BatchUndeleteRulesRequest:
      type: object
      properties:
        ruleIds:
          type: array
          items:
            type: string
        clientKeys:
          type: array
          items:
            type: string
      description: BatchUndeleteRulesRequest is used to delete a rule by rule_id or client_key. For each rule if both are provided, only rule_id will be used.
    v1ViewHumanFriendlyRulesResponse:
      type: object
      properties:
        rulesJson:
          type: string
      description: Deprecated - use ViewJsonRulesResponse.
      required:
      - rulesJson
    v1DeleteRuleRequest:
      type: object
      properties:
        ruleId:
          type: string
        clientKey:
          type: string
      description: DeleteRuleRequest is used to delete a rule by rule_id or client_key. If both are provided, only rule_id will be used.
    v1BatchGetRuleVersionsResponse:
      type: object
      properties:
        rules:
          type: array
          items:
            $ref: '#/components/schemas/v1Rule'
      required:
      - rules
    v1UnarchiveRuleResponse:
      type: object
    v1AnnotationType:
      type: string
      enum:
      - ANNOTATION_TYPE_UNSPECIFIED
      - ANNOTATION_TYPE_DATA_REVIEW
      - ANNOTATION_TYPE_PHASE
      default: ANNOTATION_TYPE_UNSPECIFIED
    v1RuleVersion:
      type: object
      properties:
        ruleId:
          type: string
        ruleVersionId:
          type: string
        version:
          type: string
        createdDate:
          type: string
          format: date-time
        createdByUserId:
          type: string
        versionNotes:
          type: string
        generatedChangeMessage:
          type: string
        deletedDate:
          type: string
          format: date-time
        archivedDate:
          type: string
          format: date-time
          title: archived_date indicates when the rule version was archived
        isArchived:
          type: boolean
          title: is_archived is inferred from when archived_date is not null
      required:
      - ruleId
      - ruleVersionId
      - version
      - createdDate
      - createdByUserId
      - versionNotes
      - generatedChangeMessage
      - isArchived
    v1AssetExpressionValidationResult:
      type: object
      properties:
        assetId:
          type: string
        assetName:
          type: string
        assetTagId:
          type: string
          title: asset_tag_id is the tag_id that caused this asset to be included in the rule
        error:
          type: string
      required:
      - assetId
      - assetName
    v1SingleChannelComparisonExpression:
      type: object
      properties:
        channelComponent:
          type: string
          title: Deprecated - use channel_name instead. If provided, channel_component will be joined with the name as `channel_component.channe

# --- truncated at 32 KB (60 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/sift-stack/refs/heads/main/openapi/sift-stack-ruleservice-api-openapi.yml