---
title: "Where an act happens"
url: https://services.dev/docs/people/where
captured: [legal-check.txt, legal-decline.txt, legal-region.txt, member-acts.txt]
codes: [ineligible, input_invalid, region_not_ratified]
---
# Where an act happens

URL: https://services.dev/docs/people/where

> The region a reserved act needs comes from its rules row and the job's facts. '*' takes any admission, regions says where a row is ratified, and flags mark jobs whose facts straddle two places.

A reserved act happens somewhere, and the person who performs it must hold the credential there. The rules row says whose region counts. The job's facts say which region that is.

## Whose region

`where: 'client'` means the client's region, not the governing law's. The order names it, and `check` reads the row aloud:

```bash
npx services.dev check
```

```txt title="magic values: none"
  bounds  reserved advise to bar admission where the client is, in US-CA, US-NY and US-TX only · the attorney sells the fee · open send · refused litigate
```

| `where` | The region is | The order sends |
|---|---|---|
| `'client'` | the client's | `client_region`, or `client_jurisdiction` |
| `'recipient'` | the recipient's | `recipient_region`, or `recipient_jurisdiction` |
| `'governing'` | the governing law's | `governing_law`, `governing_region` or `governing_jurisdiction` |
| `'*'` | any admission: federal scope | nothing |
| a function | what your rule returns from the job | what your rule reads |

A role can narrow it, with `where` set to a jurisdiction input, `'*'` or a function. Left out, the row's holds. The record prints the region the act happened in, beside the credential that performed it:

```txt
→ POST /reviews/tsk_7Hq2/attest {"checklist":["the claims read on the disclosure","every inventor is named","a reasonable inquiry was made"]}   # as mbr_7Hq2
```

```txt title="magic values: applicant.email = signs@example.test, client.email = signs@example.test, member = mbr_eligible"
  14:02 · step.committed · sign · person · patent agent · * · mbr_7Hq2
```

## Where a row is ratified

`regions` lists where counsel has ratified the row, in ISO 3166: `US-CA` for one state, `US` for every state. A bare `CA` is Canada. The legal example ratifies contract advice in three states:

```bash
grep regions rules.ts
```

```txt title="magic values: none"
      advise: { reserved: 'bar admission', where: 'client', regions: ['US-CA', 'US-NY', 'US-TX'], kind: 'advice', rail: 'member', position: 'Advice on a contract is legal advice in the client\'s state.' },
```

An order from anywhere else answers 403 `region_not_ratified`, charges nothing, and names the waitlist to join:

```txt
→ POST /matters {"service":"contract-review","contract":{"url":"data:text/plain,A%20lease.","name":"lease.pdf"},"client":{"name":"Ada Lovelace","email":"ada@example.com"},"client_region":"US-FL","max_usd":99,"key":"lease-fl"}
```

```json title="403 · magic values: none"
{
  "type": "BLOCKED",
  "category": "unavailable",
  "code": "region_not_ratified",
  "reason": "advise is ratified in US-CA, US-NY, US-TX under rules 2026-10, and this order's region is US-FL.",
  "param": "client_region",
  "act": "advise",
  "region": "US-FL",
  "regions": [
    "US-CA",
    "US-NY",
    "US-TX"
  ],
  "rule": {
    "version": "2026-10",
    "at": "services['contract-review'].advise",
    "position": "Advice on a contract is legal advice in the client's state."
  },
  "next": {
    "do": "waitlist",
    "service": "contract-review",
    "arguments": {
      "email": null
    },
    "tool": null,
    "http": "POST http://localhost:8787/contract-review/waitlist",
    "url": "http://localhost:8787/contract-review"
  },
  "doc_url": "https://api.lawyer/docs/errors/region_not_ratified",
  "request_id": "req_cXmV9f",
  "simulated": true
}

← GET /owner/events: no matter.ordered and no charge: $0
```

```txt
→ POST /contract-review/waitlist {"email":"ada@example.com"}   # the next the refusal named
```

```txt title="magic values: none"
← 200 {"object":"waitlist","service":"contract-review","status":"live","position":1,"simulated":true}
```

```txt
→ POST /matters {"service":"contract-review","contract":{"url":"data:text/plain,A%20lease.","name":"lease.pdf"},"client":{"name":"Ada Lovelace","email":"ada@example.com"},"client_region":"US-CA","max_usd":99,"key":"lease-ca"}
```

```txt title="202 · job_7Hq2 · working · $99.00 held · magic values: none"
← 202 · job_7Hq2 · working · $99.00 held
```

## When facts straddle two places

`flags` attach advisory signals when the job's facts cross a line, such as a letter to a recipient in another state. They never block. They ride on the Task, so the member sees them before they claim it:

```txt
→ POST /reviews/tsk_7Hq3/attest {"checklist":["every claim is supported","no threat the client cannot carry out"]}   # as mbr_7Hq3
```

```txt title="magic values: none"
← 200 tsk_7Hq3 · done · attorney · sign · US-NY · $75.00 · signals collections, recipient_elsewhere · attested · 30 min · $150.00 an hour · due 2026-10-27 14:02
  14:02 · step.committed · sign · person · bar admission · US-NY · mbr_7Hq3
  14:02 · pay.accrued · mbr_7Hq3 · attest · $75.00
```

## Refusals

| Code | When |
|---|---|
| [`input_invalid`](https://services.dev/docs/reference/errors.md#input_invalid) | The order doesn't name the region a reserved act needs. The answer names the input to send. Nothing is charged |
| [`region_not_ratified`](https://services.dev/docs/reference/errors.md#region_not_ratified) | The order's region is outside the row's `regions`. Nothing is charged |
| [`where_unresolved`](https://services.dev/docs/reference/check/where_unresolved.md) | `check`: the row reads a party's region, and the Service takes no input that names it |
| [`region_unqualified`](https://services.dev/docs/reference/check/region_unqualified.md) | `check`: a `regions` entry isn't an ISO 3166 code |
| [`ineligible`](https://services.dev/docs/reference/errors.md#ineligible) | A member not admitted in the job's region claims its Task |

---

- Up: [human: the line](https://services.dev/docs/people.md)
- Previous: [Your own team](https://services.dev/docs/people/staff.md)
- Next: [Refusals and cures](https://services.dev/docs/people/refusals.md)
