A valid request URL is required to generate request examples{
"rule": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"environment_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"key": "<string>",
"name": "<string>",
"kind": "event",
"event_type": "<string>",
"points": 123,
"award_limit": "once",
"limit_value": 123,
"segment_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"active": true,
"awards": 123,
"earners": 123,
"sightings": 123,
"last_seen": "2023-11-07T05:31:56Z",
"created_by": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"metric_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
}{
"error": {
"code": "forbidden",
"message": "your role does not allow this action"
}
}{
"error": {
"code": "forbidden",
"message": "your role does not allow this action"
}
}{
"error": {
"code": "forbidden",
"message": "your role does not allow this action"
}
}{
"error": {
"code": "forbidden",
"message": "your role does not allow this action"
}
}Update a point rule
Requires engagement:manage. Partial: an absent field is left alone.
key, kind and event_type cannot change, and sending one is a 400 rather than a silent no-op. What a rule listens to is its identity — the ledger lines it already wrote say “you earned this for X” — so repointing it would rewrite the meaning of everybody’s history without touching a row. Retire the rule and write another; the lines keep their frozen name.
Re-pricing is allowed and is not retroactive: changing points from 10 to 5 changes what the next award is worth and nothing that already happened.
limit_value only travels with award_limit — the number arriving alone would leave unlimited carrying a 5 that reads as a cap and caps nothing.
A valid request URL is required to generate request examples{
"rule": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"environment_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"key": "<string>",
"name": "<string>",
"kind": "event",
"event_type": "<string>",
"points": 123,
"award_limit": "once",
"limit_value": 123,
"segment_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"active": true,
"awards": 123,
"earners": 123,
"sightings": 123,
"last_seen": "2023-11-07T05:31:56Z",
"created_by": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"metric_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
}{
"error": {
"code": "forbidden",
"message": "your role does not allow this action"
}
}{
"error": {
"code": "forbidden",
"message": "your role does not allow this action"
}
}{
"error": {
"code": "forbidden",
"message": "your role does not allow this action"
}
}{
"error": {
"code": "forbidden",
"message": "your role does not allow this action"
}
}Authorizations
A staff session token, uk_st_…. Minted by sign-up, sign-in or the two-factor exchange. Only a 401 means it is spent; not_a_member (403) is about the organization named in X-Organization-Id and leaves the token good for the others.
Headers
The organization the caller is acting on — the org_… code that appears in the panel URL. It identifies; the membership JOIN is what authorizes, so a forged code reads nothing: the answer is not_a_member (403), which does not mean the session is over. Absent, the session's default organization answers, or — if that membership was revoked while the session was open — any other one the caller still holds.
Path Parameters
The rule's id.
Body
120Not zero.
-10000 <= x <= 10000Required. There is no default on purpose.
once, per_day, cooldown, unlimited Required for per_day and cooldown, refused for the other two.
1 <= x <= 525600Who earns from it, or null for everybody.
Response
The rule.
A fact, some points, and a ceiling. A rule pays when the fact it names lands — nothing you or your users can call moves a balance, the same way nothing ticks an onboarding step.
Show child attributes
Show child attributes