Skip to main content
PATCH
/
v1
/
rules
/
{id}
Update a rule
curl --request PATCH \
  --url https://api.scrip.dev/v1/rules/{id} \
  --header 'Content-Type: application/json' \
  --header 'X-API-Key: <api-key>' \
  --data @- <<EOF
{
  "actions": [
    {
      "allow_negative": false,
      "amount": "10",
      "asset_id": "550e8400-e29b-41d4-a716-446655440000",
      "bucket": "AVAILABLE",
      "delay": "24h",
      "description": "Purchase reward",
      "event_name": "check_status",
      "expires_at": "8760h",
      "key": "purchase_count",
      "level": "gold",
      "matures_at": "720h",
      "payload": {},
      "reference_id": "event.authorization_id",
      "reset_after": "720h",
      "tag": "VIP",
      "target": {
        "external_id": "event.referrer_id",
        "id": "550e8400-e29b-41d4-a716-446655440000",
        "participant_id": "event.recipient_id",
        "type": "PARTICIPANT"
      },
      "tier": "status",
      "type": "CREDIT",
      "value": "1"
    }
  ],
  "active_from": "2024-01-01T00:00:00Z",
  "active_to": "2024-12-31T23:59:59Z",
  "budgets": [
    {
      "asset_id": "550e8400-e29b-41d4-a716-446655440000",
      "cron_expression": "0 0 1 * *",
      "interval": "720h",
      "limit": "10000.00",
      "schedule_type": "CRON"
    }
  ],
  "condition": "event.type == 'purchase'",
  "description": "Updated description",
  "name": "Updated Rule Name",
  "order": 50,
  "status": "SUSPENDED",
  "stop_after_match": true
}
EOF
{
  "actions": [
    {
      "amount": "event.amount * 10",
      "asset_id": "550e8400-e29b-41d4-a716-446655440002",
      "type": "CREDIT"
    }
  ],
  "active_from": "2024-01-01T00:00:00Z",
  "active_to": "2024-12-31T23:59:59Z",
  "budgets": [
    {
      "asset_id": "550e8400-e29b-41d4-a716-446655440000",
      "consumed": "4500.00",
      "cron_expression": "0 0 1 * *",
      "interval": "720h",
      "limit": "10000.00",
      "next_reset_at": "2026-03-01T00:00:00Z",
      "schedule_type": "CRON"
    }
  ],
  "condition": "event.type == 'purchase' && event.amount > 0",
  "created_at": "2024-01-15T10:30:00Z",
  "deleted_at": "2023-11-07T05:31:56Z",
  "description": "Awards 10 points per dollar spent",
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "name": "Purchase Reward",
  "order": 100,
  "program_id": "550e8400-e29b-41d4-a716-446655440001",
  "status": "ACTIVE",
  "stop_after_match": false,
  "updated_at": "2024-01-15T10:30:00Z"
}
Updates a rule’s configuration. You can modify the name, condition, actions, order, stop_after_match, active_from, active_to, budgets, or status. Only the fields included in the request body are changed; omitted fields remain untouched. The budgets field is a full replacement when present: the provided array replaces all existing budgets. Omitting the field leaves budgets unchanged. To remove all budgets, send an empty budgets array. To suspend a rule without archiving it, set status to SUSPENDED. Changing the order field will fail if another active rule in the same program already occupies that position.
For usage patterns and examples, see the Writing Rules guide.

Authorizations

X-API-Key
string
header
required

API key passed in the X-API-Key header.

Path Parameters

id
string<uuid>
required

Rule ID

Body

application/json

Fields to update

Request body for updating an existing rule. Only provided fields are updated. At least one field must be specified. If actions is provided, it must be a non-empty array.

actions
object[]

Replacement actions array. Omit to leave actions unchanged. If provided, must be non-empty.

active_from
string<date-time>

Start of the rule's active window (RFC 3339). Send null to clear.

Example:

"2024-01-01T00:00:00Z"

active_to
string<date-time>

End of the rule's active window (RFC 3339). Send null to clear.

Example:

"2024-12-31T23:59:59Z"

budgets
object[]

Replacement budget array. Omit to leave budgets unchanged. Send empty array to remove all budgets.

condition
string

Updated CEL expression

Minimum string length: 1
Example:

"event.type == 'purchase'"

description
string

Updated description

Maximum string length: 1000
Example:

"Updated description"

name
string

Updated display name

Required string length: 1 - 255
Example:

"Updated Rule Name"

order
integer

Updated evaluation sequence position

Required range: x >= 1
Example:

50

status
enum<string>

Updated lifecycle status: ACTIVE, SUSPENDED, or ARCHIVED

Available options:
ACTIVE,
SUSPENDED,
ARCHIVED
Example:

"SUSPENDED"

stop_after_match
boolean

Whether to stop evaluating subsequent rules after this one matches

Example:

true

Response

Updated rule

actions
object[]

Actions to execute when the condition matches

Example:
[
{
"amount": "event.amount * 10",
"asset_id": "550e8400-e29b-41d4-a716-446655440002",
"type": "CREDIT"
}
]
active_from
string<date-time>

Start of the rule's active window (RFC 3339, null if always active)

Example:

"2024-01-01T00:00:00Z"

active_to
string<date-time>

End of the rule's active window (RFC 3339, null if no end date)

Example:

"2024-12-31T23:59:59Z"

budgets
object[]

Budget constraints applied to this rule

condition
string

CEL expression that determines when the rule fires

Example:

"event.type == 'purchase' && event.amount > 0"

created_at
string<date-time>

When this rule was created (RFC 3339)

Example:

"2024-01-15T10:30:00Z"

deleted_at
string<date-time>

When this rule was archived (null if not archived)

description
string

Human-readable summary of what this rule does

Example:

"Awards 10 points per dollar spent"

id
string<uuid>

Unique identifier for this rule

Example:

"550e8400-e29b-41d4-a716-446655440000"

name
string

Display name

Example:

"Purchase Reward"

order
integer

Evaluation sequence (lower = first, must be unique per program)

Example:

100

program_id
string<uuid>

Program this rule belongs to

Example:

"550e8400-e29b-41d4-a716-446655440001"

status
string

Lifecycle status: ACTIVE, SUSPENDED, or ARCHIVED

Example:

"ACTIVE"

stop_after_match
boolean

When true, no subsequent rules evaluate after this one matches

Example:

false

updated_at
string<date-time>

When this rule was last modified (RFC 3339)

Example:

"2024-01-15T10:30:00Z"