---
title: "Get Rule"
method: GET
path: "/v1/rule-books/{rule_book_id}/rules/{rule}"
tags: ["Rule Books"]
---

# Get Rule

`GET /v1/rule-books/{rule_book_id}/rules/{rule}`

## Request

- Base URL: `https://api.sandbox.usenash.com`
- URL: `https://api.sandbox.usenash.com/v1/rule-books/{rule_book_id}/rules/{rule}`
- Auth: none declared

One rule at a version (default `current`). Its `etag` is what `If-Match` takes when you change it.

## Path parameters

- `rule_book_id` string, required: The rule book id (`rbk_…`).
- `rule` string, required: The rule's id (`rul_…`), key or alias.

## Query parameters

- `version` 'current' | 'draft' | 'working': Which version a read means: the one in use, the draft, or the draft if there is one, else the one in use.

## Response `200`

OK

- RuleRead: A rule's identity plus its revision in `version`.
  - `id` string, required
  - `key` string, required
  - `aliases` string[], required
  - `rule_book_id` string, required
  - `version` VersionRef, required
    - `id` string, required
    - `number` integer, required
    - `state` 'draft' | 'published' | 'superseded' | 'discarded', required
  - `revision_id` string, required
  - `revision_number` integer, required
  - `added_in_version` integer, nullable, required: The version that added the rule.
  - `revised_in_version` integer, nullable, required: The version that made this revision: later than `added_in_version` once the rule is edited.
  - `name` string, required
  - `customer_words` CustomerWords, required: The rule as the customer said or wrote it. `verbatim: false` marks our notes of a call, not a quote.
    - `text` string, required
    - `source_id` string, nullable
    - `verbatim` boolean
  - `applies_to` AppliesTo, required
    - `all_sites` boolean
    - `site_ids` string[]
  - `in_nash` 'must' | 'aim_for' | 'report' | 'not_in_nash', required: How Nash plans with a rule. Must is never broken, Aim for is kept unless it costs a lot, and Report is checked after planning.
  - `how` string, nullable, required
  - `values` RuleValueRead[], required
    - `scope` ValueScope, required: Exactly one of: every site, or one site.
      - `all_sites` boolean
      - `site_id` string, nullable
    - `customer_value` string, nullable, required
    - `nash_value` NashValue, required: What Nash runs with: an amount and a unit, a time or window in text, or plain text.
      - `amount` union
        - integer
        - number
      - `unit` 'h' | 'min' | 'stops' | 'cube' | 'percent' | 'count' | 'trucks' | 'time_of_day' | 'window'
      - `text` string, nullable
    - `status` 'confirmed' | 'assumed' | 'needs_answer', required
    - `authored_status` 'assumed' | 'needs_answer', required: What an author may set. `confirmed` only ever comes from a confirmation.
    - `status_reason` string, nullable, required
    - `source_ids` string[], required
  - `sources` RuleSourceRead[], required
    - `id` string, required
    - `kind` 'sheet_cells' | 'file_columns' | 'document' | 'call' | 'written_answer' | 'nash_reading', required
    - `label` string, nullable, required
    - `file_name` string, nullable, required
    - `sheet` string, nullable, required
    - `cells` string[], required
    - `columns` string[], required
    - `excerpt` CellExcerpt[], required
      - `ref` string, required
      - `value` string, required
    - `locator` string, nullable, required
    - `url` string, nullable, required
    - `title` string, nullable, required
    - `date` string, date, nullable, required
    - `author` string, nullable, required
    - `verbatim` boolean, required
    - `basis` string, nullable, required
    - `verified` boolean, required
  - `status` RuleStatusRead, required
    - `state` 'confirmed' | 'assumed' | 'needs_answer', required
    - `reason` string, nullable, required
  - `confirmations` ConfirmationRead[], required
    - `id` string, required
    - `rule_id` string, required
    - `revision_id` string, required
    - `confirmed_by` ConfirmedBy, required
      - `name` string, required
      - `role` string, nullable
      - `user_id` string, nullable
    - `channel` 'call' | 'email' | 'written_answer' | 'meeting' | 'portal', required
    - `confirmed_at` string, date, required
    - `source_url` string, nullable, required
    - `source_missing` boolean, required
    - `note` string, nullable, required
    - `recorded` ActorAt, required
      - `actor` Actor, required: Who did something. Built by the API layer from the request's credentials, never sent by a client.
        - `type` 'person' | 'agent' | 'integration', required
        - `id` string, required
        - `display` string, required
      - `at` string, date-time, required
  - `created` ActorAt, required
    - `actor` Actor, required: Who did something. Built by the API layer from the request's credentials, never sent by a client.
      - `type` 'person' | 'agent' | 'integration', required
      - `id` string, required
      - `display` string, required
    - `at` string, date-time, required
  - `updated` ActorAt, required
    - `actor` Actor, required: Who did something. Built by the API layer from the request's credentials, never sent by a client.
      - `type` 'person' | 'agent' | 'integration', required
      - `id` string, required
      - `display` string, required
    - `at` string, date-time, required
  - `etag` string, required

## Other responses

- `422`: Unprocessable Content

---

[API](https://skmtc.dev/nash/apis/nash-api.md) - [All operations](https://skmtc.dev/nash/apis/nash-api/llms.txt) - [OpenAPI document](https://skmtc.dev/nash/apis/nash-api/revisions/e3713837c5c9?raw)
