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 email required.
A second provider on the same verified email joins the account you already have.
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:
v1BatchGetRulesResponse:
type: object
properties:
rules:
type: array
items:
$ref: '#/components/schemas/v1Rule'
required:
- rules
v1BatchArchiveRulesResponse:
type: object
v1RuleAction:
type: object
properties:
ruleActionId:
type: string
ruleConditionId:
type: string
actionType:
$ref: '#/components/schemas/v1ActionKind'
configuration:
$ref: '#/components/schemas/v1RuleActionConfiguration'
createdDate:
type: string
format: date-time
modifiedDate:
type: string
format: date-time
createdByUserId:
type: string
modifiedByUserId:
type: string
ruleActionVersionId:
type: string
required:
- ruleActionId
- ruleConditionId
- actionType
- configuration
- createdDate
- modifiedDate
- createdByUserId
- modifiedByUserId
- ruleActionVersionId
BatchUpdateRulesResponseRuleIdentifiers:
type: object
properties:
ruleId:
type: string
name:
type: string
clientKey:
type: string
required:
- ruleId
- name
v1BatchGetRuleVersionsRequest:
type: object
properties:
ruleVersionIds:
type: array
items:
type: string
required:
- ruleVersionIds
v1BatchGetRuleVersionsResponse:
type: object
properties:
rules:
type: array
items:
$ref: '#/components/schemas/v1Rule'
required:
- rules
siftrulesv1EvaluateRulesRequest:
type: object
properties:
ruleIds:
type: array
items:
type: string
annotationOptions:
$ref: '#/components/schemas/v1EvaluatedAnnotationOptions'
runId:
type: string
timeRange:
$ref: '#/components/schemas/v1TimeRangeQuery'
dryRun:
type: boolean
description: Deprecated - use RuleEvaluationService instead.
required:
- ruleIds
v1CreateRuleResponse:
type: object
properties:
ruleId:
type: string
required:
- ruleId
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
v1BatchUnarchiveRulesResponse:
type: object
v1BatchUnarchiveRulesRequest:
type: object
properties:
ruleIds:
type: array
items:
type: string
clientKeys:
type: array
items:
type: string
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.
v1MetadataValue:
type: object
properties:
key:
$ref: '#/components/schemas/v1MetadataKey'
stringValue:
type: string
numberValue:
type: number
format: double
booleanValue:
type: boolean
relationValue:
$ref: '#/components/schemas/v1MetadataRelationValue'
archivedDate:
type: string
format: date-time
isArchived:
type: boolean
description: Whether the metadata value is archived. This is inferred from whether archived_date is set.
required:
- key
rulesv1ChannelReference:
type: object
properties:
name:
type: string
description: Required for native channel references. Must not be set when calculated_channel_version_id is provided.
component:
type: string
description: 'Deprecated - use name instead. If provided, name will be joined with the component as `component.name`.
Must not be set when calculated_channel_version_id is provided.'
calculatedChannelVersionId:
type: string
description: 'Reference to a calculated channel version. When set, the rule will use the calculated channel
instead of looking up a native channel by name. Must not be set when name is provided.'
v1UpdateRuleRequest:
type: object
properties:
ruleId:
type: string
name:
type: string
description:
type: string
assetId:
type: string
description: Deprecated - use asset_configuration instead.
isEnabled:
type: boolean
description: Deprecated - use DeleteRule instead.
conditions:
type: array
items:
$ref: '#/components/schemas/v1UpdateConditionRequest'
organizationId:
type: string
versionNotes:
type: string
clientKey:
type: string
title: client_key is a client provided identifier for the rule. It is immutable after being set
assetConfiguration:
$ref: '#/components/schemas/v1RuleAssetConfiguration'
contextualChannels:
$ref: '#/components/schemas/v1ContextualChannels'
isExternal:
type: boolean
metadata:
type: array
items:
$ref: '#/components/schemas/v1MetadataValue'
isArchived:
type: boolean
isLiveEvaluationEnabled:
type: boolean
description: 'If set to `true` then this rule will be evaluated on live data, otherwise live rule evaluation
will be disabled. This rule can still be used, however, in report generation. If this value
is null then the original value is preserved.
This is a request, not a guarantee. When combined with
`BatchUpdateRulesRequest.override_expression_validation = true`, a `true` value here can be
silently overridden to `false` if UDF inlining fails (the rule is still persisted, just with
live evaluation disabled). Re-send this request with the underlying issue resolved -- e.g.
the referenced channels populated, or the expression simplified -- to flip it back on.'
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:
- name
- description
- conditions
- metadata
v1UnarchiveRuleResponse:
type: object
v1UpdateJsonRulesRequest:
type: object
properties:
request:
$ref: '#/components/schemas/v1JsonRulesRequest'
required:
- request
v1DeleteRuleResponse:
type: object
v1BatchDeleteRulesResponse:
type: object
v1SearchRulesResponse:
type: object
properties:
count:
type: integer
format: int64
rules:
type: array
items:
$ref: '#/components/schemas/v1Rule'
description: Conditions are not included in the search response. The
# --- 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