Lithic Auth Rules API
The Auth Rules API from Lithic — 10 operation(s) for auth rules.
The Auth Rules API from Lithic — 10 operation(s) for auth rules.
openapi: 3.1.0
info:
contact:
email: support@lithic.com
description: 'The Lithic Developer API is designed to provide a predictable programmatic interface for accessing your Lithic account through an API and transaction webhooks.
Note that your API key is a secret and should be treated as such. Don''t share it with anyone, including us. We will never ask you for it.
'
termsOfService: https://lithic.com/legal/terms
license:
name: Apache 2.0
url: https://www.apache.org/licenses/LICENSE-2.0.txt
title: Lithic Developer 3DS Auth Rules API
version: 1.0.0
servers:
- description: Sandbox environment that provides key functionality mirroring production
url: https://sandbox.lithic.com
security:
- ApiKeyAuth: []
tags:
- name: Auth Rules
paths:
/v2/auth_rules:
post:
summary: Create a new rule
description: Creates a new V2 Auth rule in draft mode
tags:
- Auth Rules
parameters: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/create-auth-rule-request'
responses:
'201':
description: Auth Rule Created
$ref: '#/components/responses/AuthRule'
'400':
$ref: '#/components/responses/responses-BadRequest'
'404':
$ref: '#/components/responses/responses-NotFound'
get:
summary: List rules
description: Lists V2 Auth rules
tags:
- Auth Rules
parameters:
- $ref: '#/components/parameters/EndingBefore'
- $ref: '#/components/parameters/PageSize'
- $ref: '#/components/parameters/StartingAfter'
- name: card_token
in: query
description: Only return Auth Rules that are bound to the provided card token.
schema:
type: string
format: uuid
required: false
- name: account_token
in: query
description: Only return Auth Rules that are bound to the provided account token.
schema:
type: string
format: uuid
required: false
- name: business_account_token
in: query
description: Only return Auth Rules that are bound to the provided business account token.
schema:
type: string
format: uuid
required: false
- name: scope
in: query
description: Only return Auth Rules that are bound to the provided scope.
schema:
enum:
- PROGRAM
- ACCOUNT
- BUSINESS_ACCOUNT
- CARD
- ANY
type: string
- name: event_stream
in: query
description: 'Deprecated: Use event_streams instead. Only return Auth rules that are executed during the provided event stream.'
deprecated: true
schema:
$ref: '#/components/schemas/event-stream'
required: false
- name: event_streams
in: query
explode: false
description: Only return Auth rules that are executed during any of the provided event streams. If event_streams and event_stream are specified, the values will be combined.
style: form
schema:
type: array
items:
$ref: '#/components/schemas/event-stream'
required: false
responses:
'200':
description: Auth Rules
content:
application/json:
schema:
properties:
data:
items:
$ref: '#/components/schemas/auth-rule'
type: array
has_more:
description: Indicates whether there are more Auth Rules to be retrieved by paging through the results.
type: boolean
required:
- data
- has_more
type: object
'400':
$ref: '#/components/responses/responses-BadRequest'
'404':
$ref: '#/components/responses/responses-NotFound'
/v2/auth_rules/{auth_rule_token}:
get:
summary: Fetch a rule
description: Fetches a V2 Auth rule by its token
tags:
- Auth Rules
parameters:
- $ref: '#/components/parameters/AuthRuleToken'
responses:
'200':
$ref: '#/components/responses/AuthRule'
'400':
$ref: '#/components/responses/responses-BadRequest'
'404':
$ref: '#/components/responses/responses-NotFound'
patch:
summary: Update a rule
description: 'Updates a V2 Auth rule''s properties
If `account_tokens`, `card_tokens`, `program_level`, `excluded_card_tokens`, `excluded_account_tokens`, or `excluded_business_account_tokens` is provided, this will replace existing associations with the provided list of entities.
'
tags:
- Auth Rules
parameters:
- $ref: '#/components/parameters/AuthRuleToken'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/patch-auth-rule-request'
responses:
'200':
description: Updated Auth Rule
$ref: '#/components/responses/AuthRule'
'400':
$ref: '#/components/responses/responses-BadRequest'
'404':
$ref: '#/components/responses/responses-NotFound'
delete:
summary: Delete a rule
description: Deletes a V2 Auth rule
tags:
- Auth Rules
parameters:
- $ref: '#/components/parameters/AuthRuleToken'
responses:
'204':
description: Auth Rule Deleted
'400':
$ref: '#/components/responses/responses-BadRequest'
'404':
$ref: '#/components/responses/responses-NotFound'
/v2/auth_rules/{auth_rule_token}/draft:
post:
summary: Draft a new rule version
description: 'Creates a new draft version of a rule that will be ran in shadow mode.
This can also be utilized to reset the draft parameters, causing a draft version to no longer be ran in shadow mode.
'
tags:
- Auth Rules
parameters:
- $ref: '#/components/parameters/AuthRuleToken'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
parameters:
anyOf:
- title: Null (delete draft)
type: 'null'
description: Resets the drafts parameters, causing a draft version to no longer be ran in shadow mode.
- $ref: '#/components/schemas/auth-rule-parameters'
responses:
'200':
$ref: '#/components/responses/AuthRule'
'400':
$ref: '#/components/responses/responses-BadRequest'
'404':
$ref: '#/components/responses/responses-NotFound'
/v2/auth_rules/{auth_rule_token}/features:
get:
summary: Calculated Feature values
description: 'Fetches the current calculated Feature values for the given Auth Rule
This only calculates the features for the active version.
- VelocityLimit Rules calculates the current Velocity Feature data. This requires a `card_token` or `account_token` matching what the rule is Scoped to.
- ConditionalBlock Rules calculates the CARD_TRANSACTION_COUNT_* attributes on the rule. This requires a `card_token`
'
tags:
- Auth Rules
parameters:
- $ref: '#/components/parameters/AuthRuleToken'
- in: query
name: account_token
schema:
type: string
format: uuid
- in: query
name: card_token
schema:
type: string
format: uuid
responses:
'200':
description: Calculated Feature values for the given Auth Rule
content:
application/json:
schema:
$ref: '#/components/schemas/auth-rule-feature-state'
'400':
$ref: '#/components/responses/responses-BadRequest'
'404':
$ref: '#/components/responses/responses-NotFound'
/v2/auth_rules/{auth_rule_token}/promote:
post:
summary: Promote a rule version
description: Promotes the draft version of an Auth rule to the currently active version such that it is enforced in the respective stream.
tags:
- Auth Rules
parameters:
- $ref: '#/components/parameters/AuthRuleToken'
responses:
'200':
$ref: '#/components/responses/AuthRule'
'400':
$ref: '#/components/responses/responses-BadRequest'
'404':
$ref: '#/components/responses/responses-NotFound'
/v2/auth_rules/{auth_rule_token}/versions:
get:
summary: List rule versions
description: Returns all versions of an auth rule, sorted by version number descending (newest first).
tags:
- Auth Rules
parameters:
- $ref: '#/components/parameters/AuthRuleToken'
responses:
'200':
description: Auth Rule Versions
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/auth-rule-version'
required:
- data
'400':
$ref: '#/components/responses/responses-BadRequest'
'404':
$ref: '#/components/responses/responses-NotFound'
/v2/auth_rules/{auth_rule_token}/report:
get:
summary: Retrieve a performance report
description: 'Retrieves a performance report for an Auth rule containing daily statistics and evaluation outcomes.
**Time Range Limitations:**
- Reports are supported for the past 3 months only
- Maximum interval length is 1 month
- Report data is available only through the previous day in UTC (current day data is not available)
The report provides daily statistics for both current and draft versions of the Auth rule, including approval, decline, and challenge counts along with sample events.
'
tags:
- Auth Rules
parameters:
- $ref: '#/components/parameters/AuthRuleToken'
- name: begin
in: query
required: true
description: Start date for the report
schema:
type: string
format: date
- name: end
in: query
required: true
description: End date for the report
schema:
type: string
format: date
responses:
'200':
description: Auth Rule Performance Report
content:
application/json:
schema:
$ref: '#/components/schemas/performance-report-v2'
'400':
$ref: '#/components/responses/responses-BadRequest'
'404':
$ref: '#/components/responses/responses-NotFound'
/v2/auth_rules/{auth_rule_token}/backtests:
get:
summary: List backtests
description: Lists backtests for an Auth Rule
tags:
- Auth Rules
parameters:
- $ref: '#/components/parameters/AuthRuleToken'
- $ref: '#/components/parameters/EndingBefore'
- $ref: '#/components/parameters/PageSize'
- $ref: '#/components/parameters/StartingAfter'
responses:
'200':
description: Backtests
content:
application/json:
schema:
properties:
data:
items:
$ref: '#/components/schemas/backtest-list-item'
type: array
has_more:
description: Indicates whether there are more backtests to be retrieved by paging through the results.
type: boolean
required:
- data
- has_more
type: object
'400':
$ref: '#/components/responses/responses-BadRequest'
'404':
$ref: '#/components/responses/responses-NotFound'
post:
summary: Request a backtest
description: 'Initiates a request to asynchronously generate a backtest for an Auth rule. During backtesting, both the active version (if one exists) and the draft version of the Auth Rule are evaluated by replaying historical transaction data against the rule''s conditions. This process allows customers to simulate and understand the effects of proposed rule changes before deployment.
The generated backtest report provides detailed results showing whether the draft version of the Auth Rule would have approved or declined historical transactions which were processed during the backtest period. These reports help evaluate how changes to rule configurations might affect overall transaction approval rates.
The generated backtest report will be delivered asynchronously through a webhook with `event_type` = `auth_rules.backtest_report.created`. See the docs on setting up [webhook subscriptions](https://docs.lithic.com/docs/events-api).
It is also possible to request backtest reports on-demand through the `/v2/auth_rules/{auth_rule_token}/backtests/{auth_rule_backtest_token}` endpoint.
Lithic currently supports backtesting for `CONDITIONAL_BLOCK` / `CONDITIONAL_ACTION` rules. Backtesting for `VELOCITY_LIMIT` rules is generally not supported. In specific cases (i.e. where Lithic has pre-calculated the requested velocity metrics for historical transactions), a backtest may be feasible. However, such cases are uncommon and customers should not anticipate support for velocity backtests under most configurations.
If a historical transaction does not feature the required inputs to evaluate the rule, then it will not be included in the final backtest report.
'
tags:
- Auth Rules
parameters:
- $ref: '#/components/parameters/AuthRuleToken'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/backtest-request'
responses:
'200':
description: Backtest request received
content:
application/json:
schema:
type: object
properties:
backtest_token:
$ref: '#/components/schemas/backtest-token'
'400':
$ref: '#/components/responses/responses-BadRequest'
'404':
$ref: '#/components/responses/responses-NotFound'
/v2/auth_rules/{auth_rule_token}/backtests/{auth_rule_backtest_token}:
get:
summary: Retrieve backtest results
description: 'Returns the backtest results of an Auth rule (if available).
Backtesting is an asynchronous process that requires time to complete. If a customer retrieves the backtest results using this endpoint before the report is fully generated, the response will return null for `results.current_version` and `results.draft_version`. Customers are advised to wait for the backtest creation process to complete (as indicated by the webhook event auth_rules.backtest_report.created) before retrieving results from this endpoint.
Backtesting is an asynchronous process, while the backtest is being processed, results will not be available which will cause `results.current_version` and `results.draft_version` objects to contain `null`.
The entries in `results` will also always represent the configuration of the rule at the time requests are made to this endpoint. For example, the results for `current_version` in the served backtest report will be consistent with which version of the rule is currently activated in the respective event stream, regardless of which version of the rule was active in the event stream at the time a backtest is requested.
'
tags:
- Auth Rules
parameters:
- $ref: '#/components/parameters/AuthRuleToken'
- $ref: '#/components/parameters/AuthRuleBacktestToken'
responses:
'200':
description: Backtest results
content:
application/json:
schema:
$ref: '#/components/schemas/backtest-results'
'400':
$ref: '#/components/responses/responses-BadRequest'
'404':
$ref: '#/components/responses/responses-NotFound'
/v2/auth_rules/results:
get:
summary: List rule evaluation results
description: 'Lists Auth Rule evaluation results.
**Limitations:**
- Results are available for the past 3 months only
- At least one filter (`event_token` or `auth_rule_token`) must be provided
- When filtering by `event_token`, pagination is not supported
'
tags:
- Auth Rules
parameters:
- $ref: '#/components/parameters/EndingBefore'
- $ref: '#/components/parameters/PageSize'
- $ref: '#/components/parameters/StartingAfter'
- name: event_token
in: query
description: Filter by event token
schema:
type: string
format: uuid
required: false
- name: auth_rule_token
in: query
description: Filter by Auth Rule token
schema:
type: string
format: uuid
required: false
- name: begin
in: query
description: Date string in RFC 3339 format. Only events evaluated after the specified time will be included. UTC time zone.
schema:
type: string
format: date-time
required: false
- name: end
in: query
description: Date string in RFC 3339 format. Only events evaluated before the specified time will be included. UTC time zone.
schema:
type: string
format: date-time
required: false
- name: has_actions
in: query
description: Filter by whether the rule evaluation produced any actions. When not provided, all results are returned.
schema:
type: boolean
required: false
responses:
'200':
description: Auth Rule Results
content:
application/json:
schema:
properties:
data:
items:
$ref: '#/components/schemas/auth-rule-result'
type: array
has_more:
description: Indicates whether there are more results to be retrieved by paging through the results.
type: boolean
required:
- data
- has_more
type: object
example:
data:
- token: a1b2c3d4-e5f6-7890-abcd-ef1234567890
auth_rule_token: b2c3d4e5-f6a7-8901-bcde-f12345678901
event_token: c3d4e5f6-a7b8-9012-cdef-123456789012
transaction_token: d4e5f6a7-b8c9-0123-defa-234567890123
evaluation_time: '2026-01-15T09:30:00Z'
rule_version: 1
mode: ACTIVE
event_stream: AUTHORIZATION
actions:
- type: DECLINE
code: CARD_SPEND_LIMIT_EXCEEDED
explanation: Transaction declined due to velocity limit
has_more: false
'400':
$ref: '#/components/responses/responses-BadRequest'
'404':
$ref: '#/components/responses/responses-NotFound'
components:
schemas:
auth-rule-name:
title: Auth Rule Name
description: Auth Rule Name
anyOf:
- type: 'null'
- type: string
maxLength: 1024
conditional-3ds-action-parameters:
title: Conditional Action (3DS) Parameters
type: object
properties:
action:
description: The action to take if the conditions are met.
$ref: '#/components/schemas/authentication-3ds-action'
conditions:
type: array
items:
type: object
properties:
attribute:
type: string
description: 'The attribute to target.
The following attributes may be targeted:
* `MCC`: A four-digit number listed in ISO 18245. An MCC is used to classify a business by the types of goods or services it provides.
* `COUNTRY`: Country of entity of card acceptor. Possible values are: (1) all ISO 3166-1 alpha-3 country codes, (2) QZZ for Kosovo, and (3) ANT for Netherlands Antilles.
* `CURRENCY`: 3-character alphabetic ISO 4217 code for the merchant currency of the transaction.
* `MERCHANT_ID`: Unique alphanumeric identifier for the payment card acceptor (merchant).
* `DESCRIPTOR`: Short description of card acceptor.
* `TRANSACTION_AMOUNT`: The base transaction amount (in cents) plus the acquirer fee field in the settlement/cardholder billing currency. This is the amount the issuer should authorize against unless the issuer is paying the acquirer fee on behalf of the cardholder.
* `RISK_SCORE`: Mastercard only: Assessment by the network of the authentication risk level, with a higher value indicating a higher amount of risk.
* `MESSAGE_CATEGORY`: The category of the authentication being processed.
* `ADDRESS_MATCH`: Lithic''s evaluation result comparing transaction''s address data with the cardholder KYC data if it exists. Valid values are `MATCH`, `MATCH_ADDRESS_ONLY`, `MATCH_ZIP_ONLY`,`MISMATCH`,`NOT_PRESENT`.'
enum:
- MCC
- COUNTRY
- CURRENCY
- MERCHANT_ID
- DESCRIPTOR
- TRANSACTION_AMOUNT
- RISK_SCORE
- MESSAGE_CATEGORY
- ADDRESS_MATCH
operation:
$ref: '#/components/schemas/conditional-operation'
value:
$ref: '#/components/schemas/conditional-value'
required:
- attribute
- operation
- value
required:
- action
- conditions
card-transaction-update-action:
title: Card Transaction Update Action
oneOf:
- title: Tag Action
type: object
properties:
type:
type: string
enum:
- TAG
description: Tag the transaction with key-value metadata
key:
type: string
description: The key of the tag to apply to the transaction
value:
type: string
description: The value of the tag to apply to the transaction
required:
- type
- key
- value
- title: Create Case Action
type: object
properties:
type:
type: string
enum:
- CREATE_CASE
description: Create a case for the transaction
scope:
type: string
enum:
- CARD
- ACCOUNT
description: The scope of the case to create
queue_token:
type: string
format: uuid
description: The token of the queue to create the case in
required:
- type
- scope
- queue_token
conditional-ach-action-parameters:
title: Conditional Action (ACH) Parameters
type: object
properties:
action:
description: The action to take if the conditions are met.
$ref: '#/components/schemas/ach-action'
conditions:
type: array
items:
type: object
properties:
attribute:
type: string
description: 'The attribute to target.
The following attributes may be targeted:
* `COMPANY_NAME`: The name of the company initiating the ACH transaction.
* `COMPANY_ID`: The company ID (also known as Standard Entry Class (SEC) Company ID) of the entity initiating the ACH transaction.
* `TIMESTAMP`: The timestamp of the ACH transaction in ISO 8601 format.
* `TRANSACTION_AMOUNT`: The amount of the ACH transaction in minor units (cents).
* `SEC_CODE`: Standard Entry Class code indicating the type of ACH transaction. Valid values include PPD (Prearranged Payment and Deposit Entry), CCD (Corporate Credit or Debit Entry), WEB (Internet-Initiated/Mobile Entry), TEL (Telephone-Initiated Entry), and others.
* `MEMO`: Optional memo or description field included with the ACH transaction.'
enum:
- COMPANY_NAME
- COMPANY_ID
- TIMESTAMP
- TRANSACTION_AMOUNT
- SEC_CODE
- MEMO
operation:
$ref: '#/components/schemas/conditional-operation'
value:
$ref: '#/components/schemas/conditional-value'
required:
- attribute
- operation
- value
required:
- action
- conditions
current-version:
title: Auth Rule Current Version
anyOf:
- type: 'null'
description: No current version.
- type: object
properties:
parameters:
$ref: '#/components/schemas/auth-rule-parameters'
version:
$ref: '#/components/schemas/auth-rule-version-id'
required:
- parameters
- version
auth-rule-version:
title: Auth Rule Version
type: object
properties:
version:
$ref: '#/components/schemas/auth-rule-version-id'
state:
$ref: '#/components/schemas/auth-rule-version-state'
parameters:
$ref: '#/components/schemas/auth-rule-parameters'
created:
description: Timestamp of when this version was created.
type: string
format: date-time
required:
- version
- state
- parameters
- created
excluded-account-tokens:
title: Auth Rule Excluded Account Tokens
description: Account tokens to which the Auth Rule does not apply.
type: array
items:
type: string
format: uuid
auth-rule-state:
title: Auth Rule State
type: string
description: The state of the Auth Rule
enum:
- ACTIVE
- INACTIVE
auth-rule-version-state:
title: Auth Rule Version State
description: The current state of this version.
type: string
enum:
- ACTIVE
- SHADOW
- INACTIVE
auth-rule-type:
title: Auth Rule Types
type: string
enum:
- CONDITIONAL_BLOCK
- VELOCITY_LIMIT
- MERCHANT_LOCK
- CONDITIONAL_ACTION
- TYPESCRIPT_CODE
description: 'The type of Auth Rule. For certain rule types, this determines the event stream during which it will be evaluated. For rules that can be applied to one of several event streams, the effective one is defined by the separate `event_stream` field.
- `CONDITIONAL_BLOCK`: Deprecated. Use `CONDITIONAL_ACTION` instead. AUTHORIZATION event stream.
- `VELOCITY_LIMIT`: AUTHORIZATION event stream.
- `MERCHANT_LOCK`: AUTHORIZATION event stream.
- `CONDITIONAL_ACTION`: AUTHORIZATION, THREE_DS_AUTHENTICATION, TOKENIZATION, ACH_CREDIT_RECEIPT, ACH_DEBIT_RECEIPT, or CARD_TRANSACTION_UPDATE event stream.
- `TYPESCRIPT_CODE`: AUTHORIZATION, THREE_DS_AUTHENTICATION, TOKENIZATION, ACH_CREDIT_RECEIPT, or ACH_DEBIT_RECEIPT event stream.'
backtest-simulation-parameters:
title: Backtest Simulation Parameters
type: object
properties:
start:
type: string
format: date-time
description: The start time of the simulation
end:
type: string
format: date-time
description: The end time of the simulation
required:
- start
- end
authorization-action:
title: Authorization Action
type: string
enum:
- DECLINE
- CHALLENGE
report-stats-v2:
title: Auth Rule Version Report Statistics
type: object
properties:
version:
description: The rule version number.
type: integer
state:
description: The evaluation mode of this version during the reported period.
$ref: '#/components/schemas/auth-rule-version-state'
action_counts:
type: object
description: A mapping of action types to the number of times that action was returned by this version during the relevant period. Actions are the possible outcomes of a rule evaluation, such as DECLINE, CHALLENGE, REQUIRE_TFA, etc. In case rule didn't trigger any action, it's counted under NO_ACTION key.
additionalProperties:
type: integer
examples:
type: array
description: Example events and their outcomes for this version.
items:
type: object
properties:
event_token:
type: string
format: uuid
description: The event token.
transaction_token:
type:
- string
- 'null'
format: uuid
description: The token of the transaction associated with the event
timestamp:
type: string
format: date-time
description: The timestamp of the event.
actions:
type: array
description: The actions taken by this version for this event.
items:
oneOf:
- $ref: '#/components/schemas/result-authorization-action'
- $ref: '#/components/schemas/result-authentication-3ds-action'
- $ref: '#/components/schemas/tokenization-action'
- $ref: '#/components/schemas/ach-action'
required:
- event_token
- timestamp
- actions
required:
- version
- state
- action_counts
- examples
conditional-block-parameters:
title: Conditional Block Parameters
deprecated: true
description: 'Deprecated: Use CONDITIONAL_ACTION instead.'
type: object
properties:
conditions:
type: array
items:
type: object
properties:
attribute:
type: string
description: 'The attribute to target.
The following attributes may be targeted:
* `MCC`: A four-digit number listed in ISO 18245. An MCC is used to classify a business by the types of goods or services it provides.
* `COUNTRY`: Country of entity of card acceptor. Possible values are: (1) all ISO 3166-1 alpha-3 country codes, (2) QZZ for Kosovo, and (3) ANT for Netherlands Antilles.
* `CURRENCY`: 3-character alphabetic ISO 4217 code for the merchant currency of the transaction.
* `MERCHANT_ID`: Unique alphanumeric identifier for the payment card acceptor (merchant).
* `DESCRIPTOR`: Short description of card acceptor.
* `LIABILITY_SHIFT`: Indicates whether chargeback liability shift to the issuer applies to the transaction. Valid values are `NONE`, `3DS_AUTHENTICATED`, or `TOKEN_AUTHENTICATED`.
* `PAN_ENTRY_MODE`: The method by which the cardholder''s primary account number (PAN) was entered. Valid values are `AUTO_ENTRY`, `BAR_CODE`, `CONTACTLESS`, `ECOMMERCE`, `ERROR_KEYED`, `ERROR_MAGNETIC_STRIPE`, `ICC`, `KEY_ENTERED`, `MAGNETIC_STRIPE`, `MANUAL`, `OCR`, `SECURE_CARDLESS`, `UNSPECIFIED`, `UNKNOWN`, `CREDENTIAL_ON_FILE`, or `ECOMMERCE`.
* `TRANSACTION_AMOUNT`: The base transaction amount (in cents) plus the acquirer fee field in the settlement/cardholder billing currency. This is the amount the issuer should authorize against unless the issuer is pa
# --- truncated at 32 KB (97 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/lithic/refs/heads/main/openapi/lithic-auth-rules-api-openapi.yml