# `reserved_block` (phone): the regulator's table marks the block reserved

The Spaw phone risk signal reserved_block adds 40 points to risk_score when the allocation table of the number's regulator marks its block as reserved or set aside for special use, as NANPA does for the 555 code (the regulator table of the number's country).

- Weight: +40
- Dataset: the regulator table of the number's country: `nanpa-co-codes`, `cnac-co-codes`, `ofcom-numbering`, `acm-nummerregister`, `nad-number-register`, `uke-numeracja`, `mimit-numerazione`
- Read from: `block_status`
- Default SMS policy: does not block it on its own: +40 is within the default ceiling of 60, which blocks only a score above it.

Where a regulator publishes its number-block allocations, Spaw reads the block a number sits in, and block_status answers allocated, unassigned or reserved. Reserved is a block the table neither gives to a holder nor lists as free: NANPA's central office codes set aside rather than assigned (the 555 code among them), the CNAC's special-use and test codes, Ofcom's designated blocks, ACM's blocked ranges, the NAD's reserved codes, UKE's technical reserve and MIMIT's reserved ranges. Seven of the ten tables Spaw reads mark such blocks; the other three never answer reserved.

A number in a reserved block is still valid, because the plan allows it and the table does not list the block as free, but no subscriber line is expected there. risk_signals names the table that answered, so a US number cites nanpa-co-codes and a UK one ofcom-numbering.

**What it cannot tell you.**

- It cannot tell you what the block is reserved for: the tables name a status, not a purpose.
- Where no regulator table covers the country, block_status is null and the signal cannot fire: not evaluated, not clean. A table is only as current as its last sync, daily for NANPA and weekly for the others.

**What to do.** Reject it at signup unless you expect test or service numbers; on a list, check the row by hand. On its own it scores 40 and passes the default SMS policy, which blocks a score above 60; beside other signals the score can pass that.

The SMS policy is set per account with `PUT /api/v1/phone/policy` (https://spaw.co/docs/api/update-phone-policy) or the dashboard's SMS policy tab, and its `block_signals` may list any signal, this one included.

An excerpt of an answer carrying this signal alone, with the number and the other fields left out, because no test number answers it. The score and the decision are worked out as the lookup and the default SMS policy work them out.

```json
{
    "valid": true,
    "country": "US",
    "line_type": "fixed_line_or_mobile",
    "line_type_source": "numbering_plan",
    "block_status": "reserved",
    "risk_score": 40,
    "risk_level": "medium",
    "risk_signals": [
        {
            "signal": "reserved_block",
            "weight": 40,
            "dataset": "nanpa-co-codes"
        }
    ],
    "ok_to_send": true,
    "blocked_by": null
}
```

Related:

- [`virtual`](https://spaw.co/docs/signals/phone/virtual): the block is held by a virtual-number wholesaler or VoIP provider
- [The weights table in the phone guide](https://spaw.co/docs/phone-intelligence#signal-reserved_block)
- [Glossary: NPA-NXX](https://spaw.co/glossary/npa-nxx)
- [Glossary: unassigned block](https://spaw.co/glossary/unassigned-block)
- [What an unassigned block means](https://spaw.co/guides/what-an-unassigned-block-means)
- [Glossary: SMS policy](https://spaw.co/glossary/sms-policy)

Reference: https://spaw.co/docs/signals/phone/reserved_block
