Skip to main content
GET
/
v1
/
programs
/
{programId}
/
rules
/
event-references
List event field references for a program's rules
curl --request GET \
  --url https://api.scrip.dev/v1/programs/{programId}/rules/event-references \
  --header 'X-API-Key: <api-key>'
import requests

url = "https://api.scrip.dev/v1/programs/{programId}/rules/event-references"

headers = {"X-API-Key": "<api-key>"}

response = requests.get(url, headers=headers)

print(response.text)
const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};

fetch('https://api.scrip.dev/v1/programs/{programId}/rules/event-references', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));
<?php

$curl = curl_init();

curl_setopt_array($curl, [
CURLOPT_URL => "https://api.scrip.dev/v1/programs/{programId}/rules/event-references",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-Key: <api-key>"
],
]);

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
package main

import (
"fmt"
"net/http"
"io"
)

func main() {

url := "https://api.scrip.dev/v1/programs/{programId}/rules/event-references"

req, _ := http.NewRequest("GET", url, nil)

req.Header.Add("X-API-Key", "<api-key>")

res, _ := http.DefaultClient.Do(req)

defer res.Body.Close()
body, _ := io.ReadAll(res.Body)

fmt.Println(string(body))

}
HttpResponse<String> response = Unirest.get("https://api.scrip.dev/v1/programs/{programId}/rules/event-references")
.header("X-API-Key", "<api-key>")
.asString();
require 'uri'
require 'net/http'

url = URI("https://api.scrip.dev/v1/programs/{programId}/rules/event-references")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<api-key>'

response = http.request(request)
puts response.read_body
{
  "program_id": "550e8400-e29b-41d4-a716-446655440000",
  "rule_count": 3,
  "rules": [
    {
      "dynamic_event_paths": [
        "event.metadata[*]"
      ],
      "event_paths": [
        "event.amount"
      ],
      "rule_id": "550e8400-e29b-41d4-a716-446655440000",
      "rule_name": "3% cashback on purchases"
    }
  ],
  "union": {
    "dynamic_event_paths": [
      "event.metadata[*]"
    ],
    "event_paths": [
      "event.amount"
    ]
  }
}
{
"code": "bad_request",
"details": {
"expected": "uuid",
"field": "asset_id",
"fields": [
{
"expected": "<unknown>",
"field": "amount",
"message": "This field is required",
"reason": "required",
"received": "-10.00"
}
],
"reason": "invalid",
"received": "not-a-uuid"
},
"message": "Invalid request parameters"
}
{
"code": "unauthorized",
"details": {
"expected": "uuid",
"field": "asset_id",
"fields": [
{
"expected": "<unknown>",
"field": "amount",
"message": "This field is required",
"reason": "required",
"received": "-10.00"
}
],
"reason": "invalid",
"received": "not-a-uuid"
},
"message": "Missing or invalid credentials"
}
{
"code": "not_found",
"details": {
"expected": "uuid",
"field": "asset_id",
"fields": [
{
"expected": "<unknown>",
"field": "amount",
"message": "This field is required",
"reason": "required",
"received": "-10.00"
}
],
"reason": "invalid",
"received": "not-a-uuid"
},
"message": "Resource not found"
}
{
"code": "internal_error",
"message": "An internal error occurred"
}
Returns the event.* payload fields that a program’s ACTIVE rules read, scanned across each rule’s CEL condition and its action expressions (amounts, values, reference_id, payload templates, and dynamic target selectors). The response contains a per-rule breakdown and a deduplicated union, so you can treat the union as the integration contract for the events your system sends. Event payloads are schemaless, so a misspelled field name in a rule is a silent non-match: the rule never fires and nothing reports why. Use this endpoint to verify your event sender supplies every referenced field, or to detect drift between what rules expect and what your events contain. Computed keys such as event[x] are reported separately under dynamic_event_paths (for example event.metadata[*]) rather than dropped. SUSPENDED and ARCHIVED rules are excluded, and the scan ignores active_from/active_to windows so the contract stays stable.

Authorizations

X-API-Key
string
header
required

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

Path Parameters

programId
string<uuid>
required

Program ID

Response

Event field references for the program's active rules

program_id
string<uuid>

Program ID the references were computed for (UUID).

Example:

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

rule_count
integer

Number of ACTIVE rules scanned.

Example:

3

rules
object[]

Per-rule breakdown, ordered by rule evaluation order.

union
object

Deduplicated union of all event references across every scanned rule.