> ## Documentation Index
> Fetch the complete documentation index at: https://vaquill.ai/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Get a state session law, by id or by citation

> Everything we hold about one STATE session law except its text: identity and
citation, session, approval date, every printed effective date (`effectiveDates`,
always a list), other printed dates, the code sections the publisher's own table
lists the act as affecting (`codeSectionsAffected`), its sources with hashes, and
whether its text is held. Fetch the text itself, paged, from
`/us/session-laws/{sessionLawId}/body`.

**Cost**: 2 credits. Pass a citation where the id goes and it adds the
`/us/statutes/resolve` price (2 credits), kept whether or not the citation
resolves, so `creditsConsumed` is then 4. A 404 never keeps this
route's own price; a failure on our side (500, 503) is refunded in full. A 422
is never charged.

**Id or citation.** Send a `sessionLawId` from a list result, or a citation or
bill number (`S.F.No. 1552`); the `sessionLawId` path parameter says which forms
are matched and how. `resolvedFrom` tells you what your input matched, and the
`sessionLawId` to send next time. A citation matching several laws is a 404 with
`reason: ambiguous_citation`, every candidate in `didYouMean`, and none chosen for you.
Prefer the id: it is free of the resolve fee and unambiguous. When a citation names no
state (`Laws 2025, ch. 1`), pass the optional `jurisdiction` (`mn`) to scope it: it
supplies the state, and it vetoes a conflicting one (`Minn. Laws 2025, ch. 1` with
`jurisdiction=tx` is a 404 `unresolved_citation`). It has no effect on an id.

**Citing and sourcing.** `citableAs` is the law in the form a lawyer writes
(`Minn. Laws 2025, ch. 1`), and `citationShort` a compact label for tables
(`MN ch. 1 (2025)`); either is null where we do not know the state's form, never a
guess, and `citableAs` resolves back to this law. `sourceUrl` is the official page
the text was collected from, on a government host, and is present on a withheld
law too. `licenseNote` says what the law's licence class permits.

**What the dates mean.** `approvedDate` is when the act was signed and is never an
effective date. Where the registry holds none but the publisher dates the governor's
signature among its other milestones (South Dakota's `Signed by the Governor`), we
fill it from that label and say so with `approvedDateDerived: true`; a presented or
passed date is never read as an approval, and a derived date is not matched by the
list's `approvedFrom` and `approvedTo`. `effectiveDates` holds the dates the publisher prints as effective
and is empty, not guessed, when none is printed or it is printed as a rule ("the
day following final enactment"); empty does not mean the act is not in force.
`otherDates` holds the rest (approval, filing, presentment) each with its `kind`.
`codeSectionsAffected` is the publisher's table as printed and is empty when the
publisher prints none, though `title` usually names the sections in prose.

**What the publisher printed.** `publisher` carries what the publisher itself
states about the act: `publisherFields`, its own structured fields verbatim (Texas gives the
bill's full action history with journal pages, Maryland the committees and reading dates,
North Carolina and New Mexico a history that can include vote counts, most states little
more than a bill number and a sponsor), plus `publisherIds`, `otherCitations`,
`legislatureNumber`, `sessionLastYear`, `printedPageStart` and `printedPageEnd` and the
label the document carries for its own kind (`documentKindAsPrinted`). The keys of
`publisherFields` differ by state and are the publisher's words, not ours: nothing is
normalised, and a key that is absent is not a fact about the act. `provenance` says how the
text was obtained (`textMethod`, `pagesWithText`, and the bound `volume` and pages it was
cut from) and lists the collector's own `caveats` on the record, verbatim: most say
something about the act or its text a reader should know, and some are working notes about
how the record was assembled. `session.coverageStatus` says whether we hold the whole
session (`complete`) or only part of it (`partial`, so a missing neighbour may exist).
These three are omitted, not null, if they cannot be read; the rest of the answer and its
price are the same.

**Withheld text.** A law whose text has a measured defect is still returned in
full, with `textStatus: withheld` and the `withheldReason`; only its text is held
back (`/body` answers `available: false`, free). Check `amendatoryMarkup` before
quoting an amending act: where it is `lost`, deleted words can read as law.

**Cost of reading a law.** Reading a whole law is `estimatedBodyPages` times the price
of one body page (6 credits). Both are on the record: `charCount` is its length
in characters and `estimatedBodyPages` is that divided by the page size (about
30,000 characters), rounded up, and null unless the text is served. Most acts
take a page or two. The longest we hold, Ohio's 2025 budget act (HB 96, 9,571,132
characters), takes about 320 pages, 1,920 credits to read in
full, so check `estimatedBodyPages` before you page through an omnibus act. Each body
response then carries `pagePrice` (what that page cost) and `estimatedRemainingCredits`
(the pages still to come times the price) so you can stop whenever you have enough.

**Example**

```bash
curl "https://api.vaquill.ai/api/v1/us/session-laws/SSL_MN_2025R_G_Y2025_C1" \
  -H "Authorization: Bearer $VAQUILL_API_KEY"

# the same law by bill number (URL-encode the citation)
curl "https://api.vaquill.ai/api/v1/us/session-laws/S.F.No.%201552" -H "Authorization: Bearer $VAQUILL_API_KEY"

# a citation that names no state, scoped to one
curl "https://api.vaquill.ai/api/v1/us/session-laws/Laws%202025,%20ch.%201?jurisdiction=mn" -H "Authorization: Bearer $VAQUILL_API_KEY"
```

```javascript
const id = "SSL_MN_2025R_G_Y2025_C1";
const res = await fetch(`https://api.vaquill.ai/api/v1/us/session-laws/${encodeURIComponent(id)}`, {
  headers: { Authorization: `Bearer ${process.env.VAQUILL_API_KEY}` },
});
const law = await res.json();
```

**Related endpoints**

- `GET /us/statutes/resolve` answers a citation that names a state session law
  rather than a code section with a `sessionLaw` block (`matched`, or `ambiguous`
  with every candidate), pointing here. It never changes `resolved` or `section`.
- `GET /us/statutes/coverage` lists, per jurisdiction under `sessionLaws`, which
  sessions we hold session laws for and whether each is `complete` or `partial`.
  Read it first: a law missing from a `partial` session is not evidence that it
  does not exist.
- Federal session laws (the Statutes at Large, `SAL_` ids) are not served here. Read
  them with `GET /us/statutes/section/{actId}`.

**Nulls.** Every field of a response is always present: one with no value is `null`
(or `[]` for a list). The examples on this page leave the nulls out for brevity. The
exceptions are blocks that exist only when they apply and are OMITTED otherwise, never
null: `publisher`, `provenance` and `session.coverageStatus` on a law, and `coverage` on a
list page that has rows.

**Rate limits.** Calls count against your key's per-minute budget like every Data
API route; a 429 carries `Retry-After`.



## OpenAPI

````yaml https://api.vaquill.ai/external/openapi.json get /api/v1/us/session-laws/{session_law_id}
openapi: 3.1.0
info:
  title: Vaquill Developer API
  description: >-
    Public API for legal statutes and legislation.


    **Authentication**: Pass your API key as `Authorization: Bearer vq_key_...`
    (preferred) or in the `X-API-Key` header. The `api_key` query parameter also
    works where a header cannot be set, but a URL ends up in logs and browser
    history. Sending two different keys in one request is rejected with a 401.


    **Credits**: Each call costs API credits. See `GET
    /api/v1/api-credits/pricing` for the full pricing matrix.


    ## Jurisdictions


    | Jurisdiction | Coverage | `countryCode` |

    |---|---|---|

    | **United States** | USC and the Statutes at Large, the CFR and its annual
    editions, all 52 state and territory statutory codes (50 states plus DC and
    Puerto Rico), state administrative regulations, court rules, federal and
    state constitutions, federal agency guidance and adjudications, the Federal
    Register, the Sentencing Guidelines and US tax treaties. | `US` |


    See the full [Coverage page](https://www.vaquill.ai/docs/api-guide/coverage)
    for the jurisdiction-by-jurisdiction breakdown, or call
    `/us/statutes/coverage` for live counts. Coverage is per (jurisdiction,
    corpusType) pair, so treat that endpoint as the authoritative list rather
    than this summary.


    ## Endpoints


    - **US Statutes**: Search and retrieve any of the corpora above with full
    text, resolve a citation to its exact section, browse the statutory
    hierarchy, read a section as it stood on a past date, and follow its change
    history, cross-references and defined terms

    - **Board Watches**: Subscribe to a corpus source and get a webhook or email
    when it refreshes with real changes (free, API key required)

    - **Pricing**: Credit costs per endpoint (no auth required)


    ## Rate limits


    Limits are enforced per API key and scale with your plan. A `429` response
    includes a `Retry-After` header.


    | Plan | Per minute | Per hour | Per day |

    |---|---|---|---|

    | Vaquill API Pro | 60 | 1,000 | 2,000 |

    | Vaquill API Business | 150 | 2,500 | 10,000 |


    For full documentation, visit the [API
    Reference](https://www.vaquill.ai/docs/api-reference/).
  version: 1.0.0
  contact:
    name: Vaquill API Support
    url: https://www.vaquill.ai
    email: support@vaquill.ai
  license:
    name: Proprietary
    url: https://www.vaquill.ai/terms
  termsOfService: https://www.vaquill.ai/terms
servers:
  - url: https://api.vaquill.ai
    description: Production
security:
  - ApiKeyAuth: []
  - ApiKeyHeader: []
  - ApiKeyQuery: []
tags:
  - name: US Statutes
    description: >-
      Search and retrieve US primary law. Covers the United States Code and the
      Statutes at Large, the Code of Federal Regulations and its annual
      editions, state statutory codes and administrative regulations, federal
      and state constitutions, court rules, Federal Register rules and
      Presidential documents, federal and state agency guidance, agency
      adjudications, state Attorney General opinions, the Sentencing Guidelines
      and US tax treaties. Scope a search with the `corpusType` filter, and call
      `/us/statutes/coverage` for the live jurisdiction-by-corpusType list.


      - **Search**: Search across all USC, CFR, state, and regulatory sections

      - **Section**: Get metadata, citation, hierarchy, and source links for a
      specific section

      - **Body**: Get the full text of a section

      - **Enactments**: Which state session laws a publisher's own tables list
      against a section (supported jurisdictions only, never a complete history)
  - name: US Session Laws
    description: >-
      State session laws: the acts of each legislature as they were enacted,
      chapter by chapter, before they are folded into a code. A session law is
      what the governor signs. It carries the act's own text, including the
      language it strikes and inserts, its approval and effective dates, and,
      where the publisher prints one, the code sections it changes. That makes
      it the source for "which act changed this section, and when did it take
      effect".


      Every act has a permanent `sessionLawId` (for example
      `SSL_MN_2025R_G_Y2025_C1`, Minnesota Laws 2025, regular session, chapter
      1) whether or not we hold its text, and a citation or bill number such as
      `S.F.No. 1552` is accepted where an id goes. v1 serves STATE acts only.
      Federal session laws (the Statutes at Large, `SAL_` ids) are served by
      `/us/statutes/section`, and `/us/statutes/resolve` points a session-law
      citation here.


      **Start here**: check `/us/statutes/coverage` (free) for what we hold per
      state: each jurisdiction's `sessionLaws` block lists its sessions, which
      are complete or only partly collected, and the `series` and
      `instrumentTypes` that exist. Then **List** a session or a date range to
      get ids, **Get** one act for its record, then **Body** for its text. A law
      missing from a partly collected session is a free 404
      (`session_not_fully_collected`), not proof it does not exist.


      - **List**: everything enacted in a state's session, approved in a window,
      or taking effect on a date

      - **Get**: one act by id or by citation; dates (`effectiveDates` is always
      a list), sources and the code sections it affects

      - **Body**: the act's text as printed, paged by cursor, with amendatory
      markup preserved where the publisher printed it

      - **Batch**: up to 50 ids or citations in one call, the same record as
      Get, billed per law served, with every miss listed and its reason

      - **Changes**: a sync feed of the registry over an integer cursor
      (`sinceId`): what began to be served, was corrected, withdrawn or merged


      The reverse link, from a code section to the acts a publisher's own tables
      list against it, is `GET /us/statutes/section/{actId}/enactments`.
  - name: Board Watches
    description: >-
      Law-change alerts. Subscribe to a **board** (a tracked corpus source,
      identified by `corpusType` plus an optional `state`) and get a webhook or
      email whenever it refreshes with real changes, naming the exact sections
      that changed. Fetch old-vs-new text for any amended section via the change
      diff.


      Boards refresh on their own existing cadence; watching one does not change
      how often it refreshes. Every endpoint here is **free**: authenticated by
      API key and rate-limited, but not credit-metered.


      See the [Law Change Alerts
      guide](https://www.vaquill.ai/docs/api-guide/alerts) for the full
      walkthrough.
  - name: Pricing
    description: >-
      Credit pricing and conversion rates. No authentication required. 1 credit
      = $0.01 USD.
  - name: Credits
    description: >-
      Your own credit balance: what is spendable right now, where it came from,
      and what is about to expire.


      Free and never charged, so it is safe to poll for low-balance alerting or
      to pre-flight a batch job.
externalDocs:
  description: Full API Reference
  url: https://www.vaquill.ai/docs/api-reference/
paths:
  /api/v1/us/session-laws/{session_law_id}:
    get:
      tags:
        - US Session Laws
      summary: Get a state session law, by id or by citation
      description: >-
        Everything we hold about one STATE session law except its text: identity
        and

        citation, session, approval date, every printed effective date
        (`effectiveDates`,

        always a list), other printed dates, the code sections the publisher's
        own table

        lists the act as affecting (`codeSectionsAffected`), its sources with
        hashes, and

        whether its text is held. Fetch the text itself, paged, from

        `/us/session-laws/{sessionLawId}/body`.


        **Cost**: 2 credits. Pass a citation where the id goes and it adds the

        `/us/statutes/resolve` price (2 credits), kept whether or not the
        citation

        resolves, so `creditsConsumed` is then 4. A 404 never keeps this

        route's own price; a failure on our side (500, 503) is refunded in full.
        A 422

        is never charged.


        **Id or citation.** Send a `sessionLawId` from a list result, or a
        citation or

        bill number (`S.F.No. 1552`); the `sessionLawId` path parameter says
        which forms

        are matched and how. `resolvedFrom` tells you what your input matched,
        and the

        `sessionLawId` to send next time. A citation matching several laws is a
        404 with

        `reason: ambiguous_citation`, every candidate in `didYouMean`, and none
        chosen for you.

        Prefer the id: it is free of the resolve fee and unambiguous. When a
        citation names no

        state (`Laws 2025, ch. 1`), pass the optional `jurisdiction` (`mn`) to
        scope it: it

        supplies the state, and it vetoes a conflicting one (`Minn. Laws 2025,
        ch. 1` with

        `jurisdiction=tx` is a 404 `unresolved_citation`). It has no effect on
        an id.


        **Citing and sourcing.** `citableAs` is the law in the form a lawyer
        writes

        (`Minn. Laws 2025, ch. 1`), and `citationShort` a compact label for
        tables

        (`MN ch. 1 (2025)`); either is null where we do not know the state's
        form, never a

        guess, and `citableAs` resolves back to this law. `sourceUrl` is the
        official page

        the text was collected from, on a government host, and is present on a
        withheld

        law too. `licenseNote` says what the law's licence class permits.


        **What the dates mean.** `approvedDate` is when the act was signed and
        is never an

        effective date. Where the registry holds none but the publisher dates
        the governor's

        signature among its other milestones (South Dakota's `Signed by the
        Governor`), we

        fill it from that label and say so with `approvedDateDerived: true`; a
        presented or

        passed date is never read as an approval, and a derived date is not
        matched by the

        list's `approvedFrom` and `approvedTo`. `effectiveDates` holds the dates
        the publisher prints as effective

        and is empty, not guessed, when none is printed or it is printed as a
        rule ("the

        day following final enactment"); empty does not mean the act is not in
        force.

        `otherDates` holds the rest (approval, filing, presentment) each with
        its `kind`.

        `codeSectionsAffected` is the publisher's table as printed and is empty
        when the

        publisher prints none, though `title` usually names the sections in
        prose.


        **What the publisher printed.** `publisher` carries what the publisher
        itself

        states about the act: `publisherFields`, its own structured fields
        verbatim (Texas gives the

        bill's full action history with journal pages, Maryland the committees
        and reading dates,

        North Carolina and New Mexico a history that can include vote counts,
        most states little

        more than a bill number and a sponsor), plus `publisherIds`,
        `otherCitations`,

        `legislatureNumber`, `sessionLastYear`, `printedPageStart` and
        `printedPageEnd` and the

        label the document carries for its own kind (`documentKindAsPrinted`).
        The keys of

        `publisherFields` differ by state and are the publisher's words, not
        ours: nothing is

        normalised, and a key that is absent is not a fact about the act.
        `provenance` says how the

        text was obtained (`textMethod`, `pagesWithText`, and the bound `volume`
        and pages it was

        cut from) and lists the collector's own `caveats` on the record,
        verbatim: most say

        something about the act or its text a reader should know, and some are
        working notes about

        how the record was assembled. `session.coverageStatus` says whether we
        hold the whole

        session (`complete`) or only part of it (`partial`, so a missing
        neighbour may exist).

        These three are omitted, not null, if they cannot be read; the rest of
        the answer and its

        price are the same.


        **Withheld text.** A law whose text has a measured defect is still
        returned in

        full, with `textStatus: withheld` and the `withheldReason`; only its
        text is held

        back (`/body` answers `available: false`, free). Check
        `amendatoryMarkup` before

        quoting an amending act: where it is `lost`, deleted words can read as
        law.


        **Cost of reading a law.** Reading a whole law is `estimatedBodyPages`
        times the price

        of one body page (6 credits). Both are on the record: `charCount` is its
        length

        in characters and `estimatedBodyPages` is that divided by the page size
        (about

        30,000 characters), rounded up, and null unless the text is served. Most
        acts

        take a page or two. The longest we hold, Ohio's 2025 budget act (HB 96,
        9,571,132

        characters), takes about 320 pages, 1,920 credits to read in

        full, so check `estimatedBodyPages` before you page through an omnibus
        act. Each body

        response then carries `pagePrice` (what that page cost) and
        `estimatedRemainingCredits`

        (the pages still to come times the price) so you can stop whenever you
        have enough.


        **Example**


        ```bash

        curl
        "https://api.vaquill.ai/api/v1/us/session-laws/SSL_MN_2025R_G_Y2025_C1"
        \
          -H "Authorization: Bearer $VAQUILL_API_KEY"

        # the same law by bill number (URL-encode the citation)

        curl "https://api.vaquill.ai/api/v1/us/session-laws/S.F.No.%201552" -H
        "Authorization: Bearer $VAQUILL_API_KEY"


        # a citation that names no state, scoped to one

        curl
        "https://api.vaquill.ai/api/v1/us/session-laws/Laws%202025,%20ch.%201?jurisdiction=mn"
        -H "Authorization: Bearer $VAQUILL_API_KEY"

        ```


        ```javascript

        const id = "SSL_MN_2025R_G_Y2025_C1";

        const res = await
        fetch(`https://api.vaquill.ai/api/v1/us/session-laws/${encodeURIComponent(id)}`,
        {
          headers: { Authorization: `Bearer ${process.env.VAQUILL_API_KEY}` },
        });

        const law = await res.json();

        ```


        **Related endpoints**


        - `GET /us/statutes/resolve` answers a citation that names a state
        session law
          rather than a code section with a `sessionLaw` block (`matched`, or `ambiguous`
          with every candidate), pointing here. It never changes `resolved` or `section`.
        - `GET /us/statutes/coverage` lists, per jurisdiction under
        `sessionLaws`, which
          sessions we hold session laws for and whether each is `complete` or `partial`.
          Read it first: a law missing from a `partial` session is not evidence that it
          does not exist.
        - Federal session laws (the Statutes at Large, `SAL_` ids) are not
        served here. Read
          them with `GET /us/statutes/section/{actId}`.

        **Nulls.** Every field of a response is always present: one with no
        value is `null`

        (or `[]` for a list). The examples on this page leave the nulls out for
        brevity. The

        exceptions are blocks that exist only when they apply and are OMITTED
        otherwise, never

        null: `publisher`, `provenance` and `session.coverageStatus` on a law,
        and `coverage` on a

        list page that has rows.


        **Rate limits.** Calls count against your key's per-minute budget like
        every Data

        API route; a 429 carries `Retry-After`.
      operationId: get_session_law_api_v1_us_session_laws__session_law_id__get
      parameters:
        - name: session_law_id
          in: path
          required: true
          schema:
            type: string
            minLength: 1
            maxLength: 300
            description: >-
              A STATE session law's id, for example `SSL_MN_2025S1_G_Y2025_C1`,
              from a `/us/session-laws/list` result.


              A citation also works here on `GET
              /us/session-laws/{sessionLawId}`, and `resolvedFrom` says what
              your input matched. Name the state in the citation: `Minn. Laws
              2025, ch. 1`, `2025 Minn. Laws ch. 1`, `Ch. 1, Laws of Minnesota
              2025`, `Ch. 2025-12, Laws of Fla.`, `2025 Wash. Sess. Laws ch.
              12`, `La. Acts 2025, No. 12`, `Pa. Act 12 of 2025`, `Minn. S.F.
              1552 (2025)`, `MN: Laws 2025, ch. 1`. A form only one state uses
              needs no state: `P.A. 104-0001` (Illinois), `Pub. Act No. 26-151`
              (Connecticut), `S.L. 2025-12` (North Carolina), `Stats. 2025, ch.
              12` (California), `D.C. Law 25-713`. The publisher's printed form
              (`CHAPTER 2025-12`, `S.F.No. 1552`) and the `citation` we print on
              every law also work. A form several states share (`Laws 2025, ch.
              1`, `HB 123`, `Act 12 of 2025`) is a 404 with `reason:
              needs_jurisdiction`, the states it exists in and one candidate per
              state: we never guess the state. A citation naming several laws of
              one state (Minnesota 2025 has two Chapter 1s) is a 404 listing all
              of them, `candidateCount` and `truncated` saying whether the list
              is complete, and `defaultSessionLawId` the regular session's law
              where there is exactly one conventional reading. An id or citation
              that matches nothing in a session we have only partly collected is
              a 404 with `reason: session_not_fully_collected` and that
              session's coverage: the law may exist and not be held yet, so it
              is never charged, the resolve price included. A citation costs the
              route's price PLUS the `/us/statutes/resolve` price (2 credits),
              the second charged whether or not it resolves. URL-encode the
              citation; one containing `/` cannot travel in a path segment.


              Federal session laws (`SAL_...`, `Pub. L. 118-5`, the Statutes at
              Large) are served by `/us/statutes/section`, not here, and code
              citations (`26 U.S.C. § 1`) by `/us/statutes/resolve`.
            examples:
              - SSL_MN_2025R_G_Y2025_C1
            title: Session Law Id
          description: >-
            A STATE session law's id, for example `SSL_MN_2025S1_G_Y2025_C1`,
            from a `/us/session-laws/list` result.


            A citation also works here on `GET /us/session-laws/{sessionLawId}`,
            and `resolvedFrom` says what your input matched. Name the state in
            the citation: `Minn. Laws 2025, ch. 1`, `2025 Minn. Laws ch. 1`,
            `Ch. 1, Laws of Minnesota 2025`, `Ch. 2025-12, Laws of Fla.`, `2025
            Wash. Sess. Laws ch. 12`, `La. Acts 2025, No. 12`, `Pa. Act 12 of
            2025`, `Minn. S.F. 1552 (2025)`, `MN: Laws 2025, ch. 1`. A form only
            one state uses needs no state: `P.A. 104-0001` (Illinois), `Pub. Act
            No. 26-151` (Connecticut), `S.L. 2025-12` (North Carolina), `Stats.
            2025, ch. 12` (California), `D.C. Law 25-713`. The publisher's
            printed form (`CHAPTER 2025-12`, `S.F.No. 1552`) and the `citation`
            we print on every law also work. A form several states share (`Laws
            2025, ch. 1`, `HB 123`, `Act 12 of 2025`) is a 404 with `reason:
            needs_jurisdiction`, the states it exists in and one candidate per
            state: we never guess the state. A citation naming several laws of
            one state (Minnesota 2025 has two Chapter 1s) is a 404 listing all
            of them, `candidateCount` and `truncated` saying whether the list is
            complete, and `defaultSessionLawId` the regular session's law where
            there is exactly one conventional reading. An id or citation that
            matches nothing in a session we have only partly collected is a 404
            with `reason: session_not_fully_collected` and that session's
            coverage: the law may exist and not be held yet, so it is never
            charged, the resolve price included. A citation costs the route's
            price PLUS the `/us/statutes/resolve` price (2 credits), the second
            charged whether or not it resolves. URL-encode the citation; one
            containing `/` cannot travel in a path segment.


            Federal session laws (`SAL_...`, `Pub. L. 118-5`, the Statutes at
            Large) are served by `/us/statutes/section`, not here, and code
            citations (`26 U.S.C. § 1`) by `/us/statutes/resolve`.
        - name: jurisdiction
          in: query
          required: false
          schema:
            anyOf:
              - type: string
                enum:
                  - al
                  - ak
                  - as
                  - az
                  - ar
                  - ca
                  - co
                  - ct
                  - de
                  - dc
                  - fl
                  - ga
                  - gu
                  - hi
                  - id
                  - il
                  - in
                  - ia
                  - ks
                  - ky
                  - la
                  - me
                  - md
                  - ma
                  - mi
                  - mn
                  - ms
                  - mo
                  - mt
                  - ne
                  - nv
                  - nh
                  - nj
                  - nm
                  - ny
                  - nc
                  - nd
                  - mp
                  - oh
                  - ok
                  - or
                  - pa
                  - pr
                  - ri
                  - sc
                  - sd
                  - tn
                  - tx
                  - ut
                  - vt
                  - vi
                  - va
                  - wa
                  - wv
                  - wi
                  - wy
              - type: 'null'
            description: >-
              Optional two-letter state code that scopes how a CITATION sent in
              place of the id is read. It supplies the state a citation does not
              name (`Laws 2025, ch. 1` with `jurisdiction=mn` is Minnesota's)
              and it vetoes a state the citation does name or whose form belongs
              to another: `Minn. Laws 2025, ch. 1` with `jurisdiction=tx` is a
              404 `unresolved_citation` (the resolution fee is kept), never
              answered from Minnesota. Ignored, with no effect, when you send an
              id. The same codes as the list's `jurisdiction`: the 50 states,
              `dc` and `pr`, case-insensitive; `federal` or an unknown code is a
              422 and is never charged.
            examples:
              - mn
            title: Jurisdiction
          description: >-
            Optional two-letter state code that scopes how a CITATION sent in
            place of the id is read. It supplies the state a citation does not
            name (`Laws 2025, ch. 1` with `jurisdiction=mn` is Minnesota's) and
            it vetoes a state the citation does name or whose form belongs to
            another: `Minn. Laws 2025, ch. 1` with `jurisdiction=tx` is a 404
            `unresolved_citation` (the resolution fee is kept), never answered
            from Minnesota. Ignored, with no effect, when you send an id. The
            same codes as the list's `jurisdiction`: the 50 states, `dc` and
            `pr`, case-insensitive; `federal` or an unknown code is a 422 and is
            never charged.
      responses:
        '200':
          description: >-
            The law's record. `textStatus` says whether its text is served;
            `resolvedFrom` is present when a citation was sent in place of an
            id.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SessionLawResponse'
              examples:
                byId:
                  summary: A law by id (Minnesota 2025, chapter 1)
                  value:
                    sessionLawId: SSL_MN_2025R_G_Y2025_C1
                    jurisdiction: mn
                    citation: CHAPTER 1--S.F.No. 1552
                    citableAs: Minn. Laws 2025, ch. 1
                    citationShort: MN ch. 1 (2025)
                    session:
                      code: 2025R
                      label: 2025 Regular Session
                      type: regular
                      year: 2025
                      coverageStatus: complete
                    series: general
                    instrumentType: act
                    number: '1'
                    billNumber: S.F.No. 1552
                    numberingYear: 2025
                    title: >-
                      An act relating to agriculture; modifying financial
                      reporting requirements for grain buyers; amending
                      Minnesota Statutes 2024, section 223.17, subdivision 6.
                    approvedDate: '2025-03-17'
                    approvedDateDerived: false
                    enactmentOutcome: signed
                    isLaw: true
                    textStatus: held
                    charCount: 5470
                    estimatedBodyPages: 1
                    textSha256: >-
                      55c7a8d08647e41f87e23fc2016881a6583911a1d5cfa8687403442e9096451b
                    versionNo: 1
                    amendatoryMarkup: preserved
                    markupConvention: publisher_literal
                    documentKind: session_law_print
                    identityConfidence: single_source
                    licenseNote: >-
                      Government public: published by a government body with no
                      restrictive terms, so the text may be reused, including
                      commercially.
                    updatedAt: '2026-10-05T09:06:39.998043+00:00'
                    citationAsPrinted: CHAPTER 1--S.F.No. 1552
                    vetoStatusAsPrinted: Signed by the governor March 17, 2025, 10:54 a.m.
                    effectiveDates: []
                    otherDates:
                      - kind: approved
                        date: '2025-03-17'
                        dateAsPrinted: March 17, 2025, 10:54 a.m.
                      - kind: other
                        date: '2025-03-14'
                        dateAsPrinted: March 14, 2025
                        kindAsPrinted: Presentment Date
                      - kind: other
                        date: '2025-03-14'
                        dateAsPrinted: March 14, 2025
                        kindAsPrinted: Presented to the governor
                    codeSectionsAffected: []
                    sourceUrl: >-
                      https://www.revisor.mn.gov/laws/2025/0/Session+Law/Chapter/1/
                    sources:
                      - sourceIndex: 0
                        role: text
                        url: >-
                          https://www.revisor.mn.gov/laws/2025/0/Session+Law/Chapter/1/
                        fetchedAt: '2026-09-29T00:41:01+00:00'
                        contentType: text/html; charset=utf-8
                        sha256: >-
                          6c83d9c109c1ec61fcd96cea92c8c48414df7ae7dfda7452ebcfbddc181b6b45
                        byteLength: 69907
                        hostClass: gov
                      - sourceIndex: 1
                        role: identity
                        url: https://www.revisor.mn.gov/laws/2025/0/
                        fetchedAt: '2026-09-29T00:41:00+00:00'
                        contentType: text/html; charset=utf-8
                        sha256: >-
                          7c7e4d1195d3e82ec1b26a20687f8b4532f4e06bde6297a6c1a7963f92cedcb1
                        byteLength: 89348
                        hostClass: gov
                    publisher:
                      legislatureNumber: 94
                      sessionLastYear: 2025
                      publisherIds: []
                      otherCitations: []
                      publisherFields:
                        Chapter: Chapter 1
                        Bill: SF1552
                        Presentment Date: March 14, 2025
                      publisherFieldsOmitted: []
                    provenance:
                      textMethod: html
                      caveats:
                        - >-
                          session_label '2025 Regular Session' is the title of
                          the session index page; the chapter page also names
                          its own session ('2025 Regular Session') and bill,
                          both checked against the index, since every special
                          session restarts chapter numbering at 1 and
                          session_ordinal 0 is part of identity.
                        - >-
                          Amendatory markup kept as the publisher's literal
                          markers. Raw HTML: 16 'new text begin', 16 'new text
                          end', 12 'deleted text begin', 12 'deleted text end',
                          alongside 16 <ins> and 12 line-through spans that
                          duplicate them typographically (not also written as
                          wdiff). Extracted text: 16 'new text begin', 16 'new
                          text end', 12 'deleted text begin', 12 'deleted text
                          end'. Counts match.
                    processingTimeMs: 412.6
                    creditsConsumed: 2
                byCitation:
                  summary: The same law by its bill number, which adds the resolve fee
                  value:
                    sessionLawId: SSL_MN_2025R_G_Y2025_C1
                    jurisdiction: mn
                    citation: CHAPTER 1--S.F.No. 1552
                    citableAs: Minn. Laws 2025, ch. 1
                    citationShort: MN ch. 1 (2025)
                    session:
                      code: 2025R
                      label: 2025 Regular Session
                      type: regular
                      year: 2025
                      coverageStatus: complete
                    series: general
                    instrumentType: act
                    number: '1'
                    billNumber: S.F.No. 1552
                    numberingYear: 2025
                    title: >-
                      An act relating to agriculture; modifying financial
                      reporting requirements for grain buyers; amending
                      Minnesota Statutes 2024, section 223.17, subdivision 6.
                    approvedDate: '2025-03-17'
                    approvedDateDerived: false
                    enactmentOutcome: signed
                    isLaw: true
                    textStatus: held
                    charCount: 5470
                    estimatedBodyPages: 1
                    textSha256: >-
                      55c7a8d08647e41f87e23fc2016881a6583911a1d5cfa8687403442e9096451b
                    versionNo: 1
                    amendatoryMarkup: preserved
                    markupConvention: publisher_literal
                    documentKind: session_law_print
                    identityConfidence: single_source
                    licenseNote: >-
                      Government public: published by a government body with no
                      restrictive terms, so the text may be reused, including
                      commercially.
                    updatedAt: '2026-10-05T09:06:39.998043+00:00'
                    citationAsPrinted: CHAPTER 1--S.F.No. 1552
                    vetoStatusAsPrinted: Signed by the governor March 17, 2025, 10:54 a.m.
                    effectiveDates: []
                    otherDates:
                      - kind: approved
                        date: '2025-03-17'
                        dateAsPrinted: March 17, 2025, 10:54 a.m.
                      - kind: other
                        date: '2025-03-14'
                        dateAsPrinted: March 14, 2025
                        kindAsPrinted: Presentment Date
                      - kind: other
                        date: '2025-03-14'
                        dateAsPrinted: March 14, 2025
                        kindAsPrinted: Presented to the governor
                    codeSectionsAffected: []
                    sourceUrl: >-
                      https://www.revisor.mn.gov/laws/2025/0/Session+Law/Chapter/1/
                    sources:
                      - sourceIndex: 0
                        role: text
                        url: >-
                          https://www.revisor.mn.gov/laws/2025/0/Session+Law/Chapter/1/
                        fetchedAt: '2026-09-29T00:41:01+00:00'
                        contentType: text/html; charset=utf-8
                        sha256: >-
                          6c83d9c109c1ec61fcd96cea92c8c48414df7ae7dfda7452ebcfbddc181b6b45
                        byteLength: 69907
                        hostClass: gov
                      - sourceIndex: 1
                        role: identity
                        url: https://www.revisor.mn.gov/laws/2025/0/
                        fetchedAt: '2026-09-29T00:41:00+00:00'
                        contentType: text/html; charset=utf-8
                        sha256: >-
                          7c7e4d1195d3e82ec1b26a20687f8b4532f4e06bde6297a6c1a7963f92cedcb1
                        byteLength: 89348
                        hostClass: gov
                    publisher:
                      legislatureNumber: 94
                      sessionLastYear: 2025
                      publisherIds: []
                      otherCitations: []
                      publisherFields:
                        Chapter: Chapter 1
                        Bill: SF1552
                        Presentment Date: March 14, 2025
                      publisherFieldsOmitted: []
                    provenance:
                      textMethod: html
                      caveats:
                        - >-
                          session_label '2025 Regular Session' is the title of
                          the session index page; the chapter page also names
                          its own session ('2025 Regular Session') and bill,
                          both checked against the index, since every special
                          session restarts chapter numbering at 1 and
                          session_ordinal 0 is part of identity.
                        - >-
                          Amendatory markup kept as the publisher's literal
                          markers. Raw HTML: 16 'new text begin', 16 'new text
                          end', 12 'deleted text begin', 12 'deleted text end',
                          alongside 16 <ins> and 12 line-through spans that
                          duplicate them typographically (not also written as
                          wdiff). Extracted text: 16 'new text begin', 16 'new
                          text end', 12 'deleted text begin', 12 'deleted text
                          end'. Counts match.
                    resolvedFrom:
                      input: S.F.No. 1552
                      sessionLawId: SSL_MN_2025R_G_Y2025_C1
                      via: citation
                      matchedForm: bill
                    processingTimeMs: 412.6
                    creditsConsumed: 4
                withheld:
                  summary: A law whose text is withheld (the record is still served)
                  value:
                    sessionLawId: SSL_LA_2025R_G_C2
                    jurisdiction: la
                    citation: ACT No. 2
                    citableAs: La. Acts 2025, No. 2
                    citationShort: LA Act 2 (2025)
                    session:
                      code: 2025R
                      label: 2025 Regular Session
                      type: regular
                      year: 2025
                    series: general
                    instrumentType: act
                    number: '2'
                    billNumber: HOUSE BILL NO. 2
                    title: >-
                      To provide with respect to the capital outlay budget and
                      the capital outlay program for state government, state
                      institutions, and other public entities; to provide for
                      the designation of projects and improvements; to provide
                      for the financing thereof making appropriations from
                      certain sources; and to provide for related matters.
                    approvedDate: '2025-06-20'
                    approvedDateDerived: false
                    effectiveFirst: '2025-06-20'
                    effectiveLast: '2025-06-20'
                    enactmentOutcome: signed
                    isLaw: true
                    textStatus: withheld
                    withheldReason: >-
                      LA: struck (deleted) law is merged into the text as if
                      current while the record declares the markup preserved or
                      absent (audit 2026-10-03). Awaiting a re-run with strike
                      and underline recovery.
                    charCount: 290570
                    textSha256: >-
                      20b4b897e95427a214dc2c41e37ffabb18513751537d3486d7ffbc22ef639af7
                    versionNo: 1
                    amendatoryMarkup: absent
                    documentKind: enrolled_bill
                    identityConfidence: single_source
                    licenseNote: >-
                      Government public: published by a government body with no
                      restrictive terms, so the text may be reused, including
                      commercially.
                    updatedAt: '2026-10-05T09:01:58.992647+00:00'
                    citationAsPrinted: ACT No. 2
                    vetoStatusAsPrinted: Signed by the Governor - Act 2
                    pageCount: 162
                    effectiveDates:
                      - date: '2025-06-20'
                        dateAsPrinted: 06/20/25
                    otherDates:
                      - kind: approved
                        date: '2025-06-20'
                        dateAsPrinted: 06/20/25
                    codeSectionsAffected: []
                    sourceUrl: https://www.legis.la.gov/legis/ViewDocument.aspx?d=1426048
                    sources:
                      - sourceIndex: 0
                        role: text
                        url: >-
                          https://www.legis.la.gov/legis/ViewDocument.aspx?d=1426048
                        fetchedAt: '2026-09-29T00:37:45+00:00'
                        contentType: application/pdf
                        sha256: >-
                          4fb7220c0f502ff45ee57d7febaa1d86a1d3f94ab239f98d060d3a95c6a053ec
                        byteLength: 560862
                        hostClass: gov
                    processingTimeMs: 388.2
                    creditsConsumed: 2
                withPublisherRecord:
                  summary: >-
                    Texas chapter 1: the publisher's own fields (the bill's
                    action history with journal pages), the legislature number
                    and the collector's caveats
                  value:
                    sessionLawId: SSL_TX_2025R_G_Y2025_C1
                    jurisdiction: tx
                    citation: 89th Regular Session, ch. 1
                    citableAs: 2025 Tex. Gen. Laws ch. 1
                    citationShort: TX ch. 1 (2025)
                    session:
                      code: 2025R
                      label: 89th Regular Session
                      type: regular
                      year: 2025
                      coverageStatus: complete
                    series: general
                    instrumentType: act
                    number: '1'
                    billNumber: S.B. No. 14
                    numberingYear: 2025
                    title: >-
                      Relating to reforming the procedure by which state
                      agencies adopt rules and impose regulatory requirements
                      and the deference given to the interpretation of laws and
                      rules by state agencies in certain judicial proceedings.
                    approvedDate: '2025-04-23'
                    approvedDateDerived: false
                    effectiveFirst: '2025-09-01'
                    effectiveLast: '2025-09-01'
                    enactmentOutcome: signed
                    isLaw: true
                    textStatus: held
                    charCount: 18449
                    estimatedBodyPages: 1
                    textSha256: >-
                      27df48f5be5c3d8b6a13832b064710b7584cd26b1dd1de0033f085dd3249f257
                    versionNo: 1
                    amendatoryMarkup: preserved
                    markupConvention: mixed
                    documentKind: enrolled_bill
                    identityConfidence: single_source
                    licenseNote: >-
                      Government public: published by a government body with no
                      restrictive terms, so the text may be reused, including
                      commercially.
                    updatedAt: '2026-10-05T09:04:11.120118+00:00'
                    vetoStatusAsPrinted: Signed by the Governor
                    effectiveDates:
                      - date: '2025-09-01'
                        dateAsPrinted: Effective on 9/1/25
                    otherDates:
                      - kind: approved
                        date: '2025-04-23'
                        dateAsPrinted: 04/23/2025
                    codeSectionsAffected: []
                    sourceUrl: >-
                      https://capitol.texas.gov/tlodocs/89R/billtext/html/SB00014F.htm
                    sources:
                      - sourceIndex: 0
                        role: text
                        url: >-
                          https://capitol.texas.gov/tlodocs/89R/billtext/html/SB00014F.htm
                        fetchedAt: '2026-09-30T01:27:33+00:00'
                        contentType: text/html
                        sha256: >-
                          2cf759f6fb4b194c84cfc2e728efa304dbc48b4682fb0181ab15438ed3782096
                        byteLength: 101673
                        hostClass: gov
                      - sourceIndex: 3
                        role: metadata
                        url: >-
                          https://capitol.texas.gov/BillLookup/History.aspx?LegSess=89R&Bill=SB14
                        fetchedAt: '2026-09-30T01:27:34+00:00'
                        contentType: text/html; charset=utf-8
                        sha256: >-
                          6c2061e7f16f7880ae16eb1c2d3143249eff282b42a8ac198c80c6b390727fed
                        byteLength: 85366
                        hostClass: gov
                    publisher:
                      legislatureNumber: 89
                      sessionLastYear: 2025
                      documentKindAsPrinted: Enrolled version
                      publisherIds: []
                      otherCitations: []
                      publisherFields:
                        Bill: '14'
                        Chapter: '1'
                        Caption Version: Enrolled
                        Last Action: 04/23/2025 E Effective on 9/1/25
                        Actions:
                          - Action Chamber: E
                            Action Description: Effective on 9/1/25
                            Action Comment: ''
                            Action Date: 04/23/2025
                            Action Time: ''
                            Journal Page Number: ''
                          - Action Chamber: E
                            Action Description: Signed by the Governor
                            Action Comment: ''
                            Action Date: 04/23/2025
                            Action Time: ''
                            Journal Page Number: '1441'
                          - Action Chamber: E
                            Action Description: Sent to the Governor
                            Action Comment: ''
                            Action Date: 04/14/2025
                            Action Time: ''
                            Journal Page Number: '1265'
                      publisherFieldsOmitted: []
                    provenance:
                      textMethod: html
                      caveats:
                        - >-
                          One printed line per text line; a blank line marks a
                          paragraph, taken from the publisher's indented first
                          line (a run of non-breaking spaces opening the row).
                        - >-
                          Amendatory markup preserved from <s>/<u> tags: 4
                          deletion and 215 addition spans. Texas also prints
                          literal brackets around struck text, kept as printed,
                          so deletions read '[[-...-]]' and the convention is
                          'mixed'.
                        - >-
                          Chapter number and session label '89th Regular
                          Session' come from the SOS table; the enrolled bill
                          prints neither. numbering_year is 2025, the session's
                          own calendar year (chapters restart at 1 each session,
                          and the session's year is what the standard citation
                          form 'Acts of the ... Legislature, Regular Session,
                          2025' prints); citation_as_printed is null because no
                          source this record cites prints that or any other
                          formatted citation.
                        - >-
                          publisher_fields.Actions is the bill-history action
                          table as printed, every row and column: the visible
                          header merges the first two columns under one
                          'Description' heading, so the keys are the source's
                          own per-cell data-label attributes (Action Chamber,
                          Action Description, ...), not a heading we invented.
                    processingTimeMs: 437.9
                    creditsConsumed: 2
        '401':
          description: Missing, invalid or revoked API key. Not charged.
          content:
            application/json:
              example:
                detail: Invalid or expired API key
              schema:
                $ref: '#/components/schemas/ApiDetailError'
        '402':
          description: >-
            Insufficient credits for this call. Nothing was done and nothing was
            charged. Read your balance, free, at `GET /credits/balance`.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiDetailError'
              example:
                detail: Insufficient credits
        '403':
          description: The API key lacks the `research:read` scope. Not charged.
          content:
            application/json:
              example:
                detail: Insufficient permissions for this operation
              schema:
                $ref: '#/components/schemas/ApiDetailError'
        '404':
          description: >-
            Unknown id, an unresolved or ambiguous citation, a federal act, or
            an endpoint name where the id goes. `reason` says which,
            `didYouMean` lists real ids, and `defaultSessionLawId` is the
            conventional reading of an ambiguous citation. The route's own price
            is never kept; a citation's resolve fee is kept on
            `unresolved_citation` and `ambiguous_citation`.
          content:
            application/json:
              examples:
                not_in_registry:
                  summary: No law carries this id
                  value:
                    detail: >-
                      Session law not found. No law in the registry carries this
                      id. Take ids from a /us/session-laws/list result, or send
                      the citation in its place.
                    sessionLawId: SSL_MN_1801R_G_Y1801_C9999
                    reason: not_in_registry
                    didYouMean: []
                wrong_case:
                  summary: The id exists in another letter case (never served for you)
                  value:
                    detail: >-
                      Session law not found. Ids are case-sensitive and this one
                      exists in a different case; see didYouMean.
                    sessionLawId: ssl_mn_2025r_g_y2025_c1
                    reason: wrong_case
                    didYouMean:
                      - SSL_MN_2025R_G_Y2025_C1
                federal_session_law:
                  summary: >-
                    A federal act: served by /us/statutes/section, refused
                    before any charge
                  value:
                    detail: >-
                      Session law not found. This endpoint covers STATE session
                      laws; federal session laws (the Statutes at Large) are
                      served by GET /us/statutes/section/{actId}. A federal id
                      (`SAL_...`) is not charged; a federal citation typed in
                      its place keeps the /us/statutes/resolve price, like any
                      unresolved citation.
                    sessionLawId: SAL_PL118-5
                    reason: federal_session_law
                    didYouMean: []
                missing_session_law_id:
                  summary: >-
                    An endpoint name where the id goes, refused before any
                    charge
                  value:
                    detail: >-
                      Session law not found. The URL has no session-law id in
                      it: the segment where the id goes names an endpoint, for
                      example /us/session-laws/{sessionLawId}/body. Nothing was
                      charged.
                    sessionLawId: body
                    reason: missing_session_law_id
                    didYouMean: []
                session_not_fully_collected:
                  summary: >-
                    Nothing matched, and the session is only partly collected:
                    the law may exist (nothing is charged, the resolve price
                    included)
                  value:
                    detail: >-
                      Session law not found. Nothing matched, and the session
                      this points into is only partly collected, so the law may
                      exist and not be held yet. `sessionCoverage` says how much
                      of the session we hold. Nothing was charged: a miss in a
                      partly collected session is never billed.
                    sessionLawId: SSL_DE_2025R_G_C3
                    reason: session_not_fully_collected
                    didYouMean: []
                    sessionCoverage:
                      code: 2025R
                      label: 153rd General Assembly
                      type: regular
                      year: 2025
                      status: partial
                      servedCount: 43
                      withheldCount: 0
                      notHeldCount: 0
                      registryCount: 43
                      collectedCount: 43
                      denominator:
                        kind: complete_listing
                        value: 296
                        derivation: >-
                          The publisher's complete listing of this session names
                          296 measures. We hold 43 of them; the rest are not yet
                          collected.
                      openGaps: 253
                unresolved_citation:
                  summary: A citation no law carries (the resolve fee is kept)
                  value:
                    detail: >-
                      Session law not found. This reads as a citation, and no
                      state session law we know of carries it. The resolution
                      attempt is charged at the /us/statutes/resolve price, as
                      an unresolved citation is there.
                    sessionLawId: Laws 1801, ch. 9999
                    reason: unresolved_citation
                    didYouMean: []
                needs_jurisdiction:
                  summary: >-
                    A citation in a form several states share and naming none:
                    `jurisdictions` lists where it exists, `didYouMean` one law
                    per state (the resolve fee is kept)
                  value:
                    detail: >-
                      Session law not found. This citation is in a form several
                      states share and it names none, so no law was chosen for
                      you. Name the state in the citation, for example `Minn.
                      Laws 2025, ch. 1`, `MN: Laws 2025, ch. 1` or `Minn. S.F.
                      1552 (2025)`; on /us/statutes/resolve pass `state`.
                      `jurisdictions` lists every state where the citation
                      exists and `didYouMean` one law per state. The resolution
                      attempt is charged at the /us/statutes/resolve price.
                    sessionLawId: ACT No. 1
                    reason: needs_jurisdiction
                    didYouMean:
                      - SSL_LA_2025R_G_C1
                      - SSL_SC_2025R_G_C1
                    jurisdictions:
                      - la
                      - sc
                    candidateCount: 2
                    truncated: false
                ambiguous_citation:
                  summary: >-
                    A citation naming several laws, every candidate listed and
                    none chosen (the resolve fee is kept)
                  value:
                    detail: >-
                      Session law not found. This citation names more than one
                      law, so none was chosen for you: every candidate id is in
                      didYouMean, and defaultSessionLawId is the conventional
                      reading. Send the id you mean. The resolution attempt is
                      charged at the /us/statutes/resolve price.
                    sessionLawId: House Bill 2
                    reason: ambiguous_citation
                    didYouMean:
                      - SSL_KY_2025R_G_Y2025_C100
                      - SSL_MO_2025R_G_Y2025_BHB2
                    candidateCount: 2
                    truncated: false
              schema:
                $ref: '#/components/schemas/SessionLawNotFoundError'
        '422':
          description: >-
            A parameter failed validation: `sessionLawId` empty or over 300
            characters, or `jurisdiction` not a state. Never charged.
            `errors[].loc` names the parameter exactly as you send it.
          content:
            application/json:
              examples:
                badJurisdiction:
                  summary: >-
                    `jurisdiction=federal`: federal acts are on
                    /us/statutes/section
                  value:
                    detail: Invalid request parameters
                    errors:
                      - loc:
                          - query
                          - jurisdiction
                        msg: >-
                          Value error, Unknown `jurisdiction` value 'federal'.
                          Expected one of: al, ak, as, az, ar, ca, co, ct, de,
                          dc, fl, ga, gu, hi, id, il, in, ia, ks, ky, la, me,
                          md, ma, mi, mn, ms, mo, mt, ne, nv, nh, nj, nm, ny,
                          nc, nd, mp, oh, ok, or, pa, pr, ri, sc, sd, tn, tx,
                          ut, vt, vi, va, wa, wv, wi, wy.
                        type: value_error
                idTooLong:
                  summary: A `sessionLawId` over 300 characters
                  value:
                    detail: Invalid request parameters
                    errors:
                      - loc:
                          - path
                          - session_law_id
                        msg: String should have at most 300 characters
                        type: string_too_long
              schema:
                $ref: '#/components/schemas/ApiDetailError'
        '429':
          description: >-
            Rate limit exceeded for your key. Not charged. Wait `Retry-After`
            seconds.
          headers:
            Retry-After:
              description: Seconds to wait before retrying.
              schema:
                type: integer
                examples:
                  - 12
            X-RateLimit-Limit:
              description: Requests per minute your key is allowed.
              schema:
                type: integer
                examples:
                  - 60
            X-RateLimit-Remaining:
              description: Requests left in the current minute. 0 on a 429.
              schema:
                type: integer
                examples:
                  - 0
            X-RateLimit-Reset:
              description: Unix time at which the minute window resets.
              schema:
                type: integer
                examples:
                  - 1791194460
          content:
            application/json:
              example:
                detail: Rate limit exceeded. Try again in 12 seconds.
              schema:
                $ref: '#/components/schemas/ApiDetailError'
        '500':
          description: An unexpected failure on our side. The charge is refunded.
          content:
            application/json:
              example:
                detail: Internal server error
              schema:
                $ref: '#/components/schemas/ApiDetailError'
        '503':
          description: >-
            The session-laws database is temporarily unavailable. The charge is
            refunded; retry.
          content:
            application/json:
              example:
                detail: >-
                  The US session-laws database is temporarily unavailable.
                  Please retry.
              schema:
                $ref: '#/components/schemas/ApiDetailError'
components:
  schemas:
    SessionLawResponse:
      properties:
        processingTimeMs:
          type: number
          title: Processingtimems
          description: >-
            Server-side time for this request in milliseconds, excluding network
            transit. Not billed on.
          default: 0
          examples:
            - 747.5
        creditsConsumed:
          type: integer
          title: Creditsconsumed
          description: >-
            Credits actually charged for this call, never the list price. It
            includes the `/us/statutes/resolve` fee when a citation was sent
            where an id goes. 0 when the call was not charged or was refunded (a
            body that answers `available: false`).
          default: 0
          examples:
            - 2
        sessionLawId:
          type: string
          title: Sessionlawid
          description: >-
            Permanent identifier of the law, the key to use everywhere. Shape
            `SSL_{state}_{session
            code}_{series}[_Y{numberingYear}]_{C<chapter>|B<billKey>}`. It never
            changes: a correction to our reading of a law keeps the old id
            working. Pass it to `GET /us/session-laws/{sessionLawId}`.
          examples:
            - SSL_MN_2025R_G_Y2025_C1
        lawId:
          anyOf:
            - type: string
            - type: 'null'
          title: Lawid
          description: >-
            The law's identifier in the open us1 scheme. Null until its identity
            is confirmed by a second source and the us1 state shape is minted,
            so it is null on every state law today. Use `sessionLawId`, which is
            always present.
          examples:
            - null
        jurisdiction:
          type: string
          title: Jurisdiction
          description: >-
            Lowercase two-letter code of the state, `dc` or `pr`. Federal acts
            are not served by this family: they are on `/us/statutes/section`.
          examples:
            - mn
        citation:
          type: string
          title: Citation
          description: >-
            The act's citation as its publisher prints it, falling back to
            `{session label}, ch. {number}` when none is printed. It is NOT
            unique: many states print a bare `CHAPTER 1` every session. Key on
            `sessionLawId`.
          examples:
            - CHAPTER 1--S.F.No. 1552
            - ACT No. 2
            - Chapter 1, Laws of 2025
        citableAs:
          anyOf:
            - type: string
            - type: 'null'
          title: Citableas
          description: >-
            The law cited the way a lawyer writes it, from the state's own form:
            `Minn. Laws 2025, ch. 1`, `2025 Fla. Laws ch. 3`, `Ill. Pub. Act
            104-0001`, `S.L. 2025-12` (North Carolina), `Stats. 2025, ch. 12`
            (California), `Ohio S.B. 1 (2025)` for a state that numbers no
            chapters. A law in a special or extraordinary session carries it
            (`Minn. Laws 2025, 1st Spec. Sess., ch. 1`). Every value is read
            back through the grammar that `GET /us/session-laws/{sessionLawId}`
            accepts a citation in, and must name this law; one that would not is
            null, never guessed. Null where the state's form is not known, for a
            series with no standard form (resolutions, memorials), or for a law
            with neither a chapter nor a bill key. Where a regular and a special
            session each have a chapter 1, the bare form is the regular
            session's law and resolves with that law flagged as the default; the
            special session's carries its session. Distinct from `citation`,
            which is the publisher's printed form.
          examples:
            - Minn. Laws 2025, ch. 1
            - 2025 Tex. Gen. Laws ch. 1
            - null
        citationShort:
          anyOf:
            - type: string
            - type: 'null'
          title: Citationshort
          description: >-
            A compact label for tables and badges: `MN ch. 1 (2025)`, `IL P.A.
            104-0001`, `OH S.B. 1 (2025)`. Not a form to send back: use
            `citableAs` or the `sessionLawId`. Null exactly when `citableAs` is
            null.
          examples:
            - MN ch. 1 (2025)
            - TX ch. 1 (2025)
            - null
        session:
          $ref: '#/components/schemas/SessionLawDetailSession'
          description: >-
            The legislative session the law was enacted in, and whether we hold
            all of it (`coverageStatus`).
        series:
          type: string
          title: Series
          description: >-
            The numbering series the law belongs to within its session. Most
            states have one, `general`. Others number acts, resolutions or local
            laws separately (`public`, `act`, `acts`, `law`, `public_act`,
            `resolve`, `resolution_chapter`, `local`, ...). An open list that
            grows as jurisdictions load. Filter with `series` on the list.
          examples:
            - general
        instrumentType:
          type: string
          title: Instrumenttype
          description: >-
            What kind of measure this is: `act`, `joint_resolution`,
            `concurrent_resolution`, `resolution`, `resolve`, `memorial` or
            `other`. An open list. A resolution that was numbered and published
            among the session laws is included, with `isLaw` saying whether it
            binds as law.
          examples:
            - act
        number:
          anyOf:
            - type: string
            - type: 'null'
          title: Number
          description: >-
            The chapter or act number exactly as printed, as a string. It is not
            always an integer: `1`, `2025-12` (Florida), `104-0001` (Illinois),
            `1A`. Null where the state does not number its acts (see `billKey`).
          examples:
            - '1'
            - 2025-12
        billKey:
          anyOf:
            - type: string
            - type: 'null'
          title: Billkey
          description: >-
            Normalised bill identifier (chamber and type letters plus the
            number) that stands in for a chapter number in states that do not
            number their acts (Missouri, Ohio, Nebraska). `House Bill 2` is
            `HB2`. Null whenever `number` is set. Part of the `sessionLawId` as
            `B<billKey>`.
          examples:
            - HB2
            - null
        billNumber:
          anyOf:
            - type: string
            - type: 'null'
          title: Billnumber
          description: >-
            The bill the act originated as, as the publisher prints it. Matches
            as a citation on `GET /us/session-laws/{sessionLawId}`.
          examples:
            - S.F.No. 1552
            - House Bill 2
        numberingYear:
          anyOf:
            - type: integer
            - type: 'null'
          title: Numberingyear
          description: >-
            The year of the numbering sequence the chapter number belongs to,
            where the state numbers by year (Minnesota, Florida, Texas). It
            appears in the `sessionLawId` as `_Y2025`. A chapter number is only
            unique within a session and numbering year: Minnesota's regular and
            first special sessions of 2025 each have a Chapter 1. Null where one
            sequence runs across the session (Louisiana).
          examples:
            - 2025
            - null
        title:
          anyOf:
            - type: string
            - type: 'null'
          title: Title
          description: >-
            The act's long title as printed, usually beginning `An act relating
            to`. It names the code sections the act amends in prose.
          examples:
            - >-
              An act relating to agriculture; modifying financial reporting
              requirements for grain buyers; amending Minnesota Statutes 2024,
              section 223.17, subdivision 6.
        shortTitle:
          anyOf:
            - type: string
            - type: 'null'
          title: Shorttitle
          description: >-
            The act's short title when the publisher gives one (Ohio, New York,
            the District of Columbia and a few others do), otherwise null.
          examples:
            - Enact Advance Ohio Higher Education Act
            - null
        approvedDate:
          anyOf:
            - type: string
              format: date
            - type: 'null'
          title: Approveddate
          description: >-
            Date the governor (or the equivalent authority) approved the act,
            ISO 8601. Never an effective date: an act is usually in force on a
            different day, which is `effectiveDates`. Null when the publisher
            prints no approval date. Where the registry holds none but the
            publisher's own dated label on `otherDates` names the governor's
            signature, it is filled from that label and `approvedDateDerived` is
            true. The `approvedFrom` and `approvedTo` filters do NOT match a
            derived date: they read the registry's own approval date.
          examples:
            - '2025-03-17'
        approvedDateDerived:
          type: boolean
          title: Approveddatederived
          description: >-
            True only when `approvedDate` was not held as an approval date and
            we filled it from a dated label printed on the act (today South
            Dakota's `Signed by the Governor`, listed under `otherDates`), on an
            act whose `enactmentOutcome` is `signed` or `line_item_veto`. False
            when `approvedDate` is null or is the registry's own. We never read
            a `presented` or `passed` date as an approval, nor a signing label
            on an act that became law without signature.
          default: false
          examples:
            - false
            - true
        effectiveFirst:
          anyOf:
            - type: string
              format: date
            - type: 'null'
          title: Effectivefirst
          description: >-
            Earliest of the act's effective dates we hold. Null when we hold
            none: a date the publisher does not print, or prints as a relative
            rule (`the day following final enactment`), is not guessed. The full
            list is `effectiveDates` on `GET /us/session-laws/{sessionLawId}`.
          examples:
            - '2025-09-01'
            - null
        effectiveLast:
          anyOf:
            - type: string
              format: date
            - type: 'null'
          title: Effectivelast
          description: >-
            Latest of the act's effective dates we hold. Equal to
            `effectiveFirst` for an act with one date; null when we hold none.
          examples:
            - '2026-01-01'
            - null
        enactmentOutcome:
          type: string
          title: Enactmentoutcome
          description: >-
            How the measure became, or failed to become, law. `signed`;
            `became_law_without_signature`; `veto_overridden`; `line_item_veto`
            (signed with some items vetoed); `vetoed` and `pocket_veto` (not
            law); `not_presented` (no governor action recorded, usual for
            resolutions); `approved_by_voters`; `unknown` (the publisher does
            not say).
          examples:
            - signed
        isLaw:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Islaw
          description: >-
            True for an act that is law. False for a numbered measure that is
            not: a vetoed bill, a pocket veto. Null when `enactmentOutcome` does
            not settle it (`not_presented`, `unknown`).
          examples:
            - true
        textStatus:
          type: string
          enum:
            - held
            - withheld
            - not_held
            - pending
          title: Textstatus
          description: >-
            Whether we serve this law's text. `held`: the text is served by
            `/us/session-laws/{sessionLawId}/body`. `withheld`: we hold the text
            but a measured defect keeps it from being served, and
            `withheldReason` says what. `not_held`: we know the act exists and
            do not hold its text. `pending`: collected and not yet verified.
          examples:
            - held
        withheldReason:
          anyOf:
            - type: string
            - type: 'null'
          title: Withheldreason
          description: >-
            Present only when `textStatus` is `withheld`: a plain sentence
            saying what is wrong with the text we hold and what would release
            it. Free text, not an enum: show it, do not branch on it. The record
            itself (dates, sources, title) is still served and still correct.
          examples:
            - >-
              LA: struck (deleted) law is merged into the text as if current
              while the record declares the markup preserved or absent (audit
              2026-10-03). Awaiting a re-run with strike and underline recovery.
            - null
        charCount:
          anyOf:
            - type: integer
            - type: 'null'
          title: Charcount
          description: >-
            Length of the law's full text in characters, the same as
            `totalChars` on the body. Null when there is no text. It is reported
            for a withheld law too (a fact about the text we hold), though that
            text is not served.
          examples:
            - 5470
            - 310454
        estimatedBodyPages:
          anyOf:
            - type: integer
            - type: 'null'
          title: Estimatedbodypages
          description: >-
            How many body pages the text takes: `charCount` divided by the page
            size (30,000 characters), rounded up. Pages are cut back to a
            paragraph break, so a long act can run a few percent over. Null
            unless `textStatus` is `held`: there is nothing to read. Reading a
            whole law costs `estimatedBodyPages` times the price of one body
            page (6 credits per page on `GET
            /us/session-laws/{sessionLawId}/body`). Ohio's 2025 budget act (HB
            96) is 9,571,132 characters, about 320 pages or 1,920 credits to
            read in full; most acts are a page or two.
          examples:
            - 1
            - 11
        textSha256:
          anyOf:
            - type: string
            - type: 'null'
          title: Textsha256
          description: >-
            SHA-256 (hex) of the full text of this law. It changes only when the
            text does, so it is the cheap way to tell whether a copy you hold is
            current. Body pages carry the same value.
          examples:
            - 55c7a8d08647e41f87e23fc2016881a6583911a1d5cfa8687403442e9096451b
        versionNo:
          anyOf:
            - type: integer
            - type: 'null'
          title: Versionno
          description: >-
            Revision counter of our record of this law: 1 for the first
            collection, higher after a re-collection changed the text or the
            metadata. Not a legislative version.
          examples:
            - 1
        amendatoryMarkup:
          anyOf:
            - type: string
            - type: 'null'
          title: Amendatorymarkup
          description: >-
            Whether the language an amending act strikes and inserts survives in
            the text. `preserved`: it is in `text`, in the convention
            `markupConvention` names. `lost`: the publisher printed it and our
            text does not keep it, so deleted words can read as law: check the
            source before quoting. `absent`: the act carries no such markup that
            we found. `not_applicable`: there is no text to carry it.
          examples:
            - preserved
        markupConvention:
          anyOf:
            - type: string
            - type: 'null'
          title: Markupconvention
          description: >-
            How preserved markup is written, set only when `amendatoryMarkup` is
            `preserved`. `wdiff`: deleted language is `[-like this-]` and
            inserted language `{+like this+}`. `publisher_literal`: the
            publisher's own words are left as printed (Minnesota prints `new
            text begin` / `new text end` and `deleted text begin` / `deleted
            text end` markers). `mixed`: both in one text.
          examples:
            - publisher_literal
            - wdiff
        documentKind:
          anyOf:
            - type: string
            - type: 'null'
          title: Documentkind
          description: >-
            What kind of document the text was taken from: `session_law_print`
            (the publisher's printed chapter), `enrolled_bill`, `slip_law`,
            `volume_extract` (carved out of a bound volume) or `other`. An open
            list. Null when there is no text.
          examples:
            - session_law_print
            - enrolled_bill
        identityConfidence:
          type: string
          title: Identityconfidence
          description: >-
            How firmly the law's identity (session and number) is established.
            `single_source`: read from one publisher source, which is every
            state law at launch. `confirmed`: agreed by a second independent
            source, the level at which a `lawId` can be minted. `inferred`:
            derived by us rather than printed. `disputed`: sources disagree. The
            `sessionLawId` is the same at every level.
          examples:
            - single_source
        licenseNote:
          anyOf:
            - type: string
            - type: 'null'
          title: Licensenote
          description: >-
            What the law's licence class is and what it means for reuse, in a
            plain sentence: `Government public: published by a government body
            with no restrictive terms, so the text may be reused, including
            commercially.` Every law served with text is of a class that permits
            reuse; a note saying otherwise describes a record whose text is held
            back. Free text to show, not an enum to branch on: branch on
            `textStatus`.
          examples:
            - >-
              Government public: published by a government body with no
              restrictive terms, so the text may be reused, including
              commercially.
        updatedAt:
          anyOf:
            - type: string
            - type: 'null'
          title: Updatedat
          description: >-
            When this law's record last changed in our registry, ISO 8601 UTC
            with a `+00:00` offset, the same form as the statutes routes. Use it
            with `updatedSince` on the list to sync only what changed.
          examples:
            - '2026-10-05T09:06:39.998043+00:00'
        citationAsPrinted:
          anyOf:
            - type: string
            - type: 'null'
          title: Citationasprinted
          description: >-
            The citation exactly as the publisher prints it. Null when none is
            printed.
          examples:
            - CHAPTER 1--S.F.No. 1552
            - CCS SS SCS HCS HB 2
        vetoStatusAsPrinted:
          anyOf:
            - type: string
            - type: 'null'
          title: Vetostatusasprinted
          description: >-
            The publisher's own words on the governor's action.
            `enactmentOutcome` is our normalised reading of it.
          examples:
            - Signed by the governor March 17, 2025, 10:54 a.m.
        pageCount:
          anyOf:
            - type: integer
            - type: 'null'
          title: Pagecount
          description: >-
            Pages in the source document when it is a PDF. Null for HTML
            sources.
          examples:
            - 162
            - null
        sourceUrl:
          anyOf:
            - type: string
            - type: 'null'
          title: Sourceurl
          description: >-
            The official page or file the act's text was collected from, on a
            government publisher's host: the first `sources` entry whose `role`
            is `text` and whose `hostClass` is `gov`. Open it to verify the text
            against the publisher. Null when we hold no such source (a law we
            know exists and have not collected) or when the text source is not a
            government host. Present on a withheld law too: the official copy is
            always where to go when we hold the text back.
          examples:
            - https://www.revisor.mn.gov/laws/2025/0/Session+Law/Chapter/1/
        effectiveDates:
          items:
            $ref: '#/components/schemas/SessionLawDate'
          type: array
          title: Effectivedates
          description: >-
            Every effective date the publisher prints for the act, in printed
            order. Always a list, never null; empty when none is held. Empty
            does NOT mean the act is not in force: a date printed as a rule
            (`the day following final enactment`) or not printed in the
            publisher's metadata is not guessed, and the approval date is never
            substituted for it. An act can take effect in parts, so a date may
            carry a `scopeAsPrinted`.
          examples:
            - - date: '2024-12-05'
                dateAsPrinted: December 5, 2024
            - - date: '2025-04-02'
                dateAsPrinted: '2025-04-02 00:00:00'
                scopeAsPrinted: CCP §871.20.
            - []
        otherDates:
          items:
            $ref: '#/components/schemas/SessionLawDate'
          type: array
          title: Otherdates
          description: >-
            Every other date printed on the act, each with its `kind`: the
            approval date, filing dates and the publisher's own milestones
            (presentment to the governor).
          examples:
            - - date: '2025-03-17'
                dateAsPrinted: March 17, 2025, 10:54 a.m.
                kind: approved
              - date: '2025-03-14'
                dateAsPrinted: March 14, 2025
                kind: other
                kindAsPrinted: Presentment Date
        codeSectionsAffected:
          items:
            $ref: '#/components/schemas/CodeSectionAffected'
          type: array
          title: Codesectionsaffected
          description: >-
            The code sections the publisher's own table lists the act as
            affecting, as printed. Always a list. Empty when the publisher
            prints no such table, which is common: the title still names
            sections in prose. We do not read sections out of the act text into
            this list.
          examples:
            - - actSectionAsPrinted: '6'
                actionAsPrinted: AMD
                codeAsPrinted: RCW
                sectionAsPrinted: 19.27A.020
            - []
        sources:
          items:
            $ref: '#/components/schemas/SessionLawSource'
          type: array
          title: Sources
          description: >-
            The publisher documents the record was collected from, with the hash
            and fetch time of each: the audit trail from this response back to
            the official copy.
          examples:
            - - byteLength: 69907
                contentType: text/html; charset=utf-8
                fetchedAt: '2026-09-29T00:41:01Z'
                hostClass: gov
                role: text
                sha256: >-
                  6c83d9c109c1ec61fcd96cea92c8c48414df7ae7dfda7452ebcfbddc181b6b45
                sourceIndex: 0
                url: https://www.revisor.mn.gov/laws/2025/0/Session+Law/Chapter/1/
        publisher:
          anyOf:
            - $ref: '#/components/schemas/SessionLawPublisher'
            - type: 'null'
          description: >-
            What the publisher itself printed or published about the act, beyond
            the dates and citation above: its own structured fields verbatim
            (`publisherFields`: the bill's action history, committees, sponsors,
            and vote counts where the publisher gives them), its own
            identifiers, the legislature number and the printed pages. Omitted,
            not null, when it cannot be read or we only know the act exists.
        provenance:
          anyOf:
            - $ref: '#/components/schemas/SessionLawProvenance'
            - type: 'null'
          description: >-
            How we came by the text (the extraction method, the bound volume it
            was cut from) and the collector's own `caveats` on the record.
            Omitted, not null, when it cannot be read or we only know the act
            exists.
        resolvedFrom:
          anyOf:
            - $ref: '#/components/schemas/SessionLawResolution'
            - type: 'null'
          description: >-
            Present only when your input did not match an id as sent: it says
            what was matched and how. Null when you sent an exact id.
      type: object
      required:
        - sessionLawId
        - jurisdiction
        - citation
        - session
        - series
        - instrumentType
        - enactmentOutcome
        - textStatus
        - identityConfidence
      title: SessionLawResponse
      description: Response for `GET /us/session-laws/{sessionLawId}`.
    ApiDetailError:
      properties:
        detail:
          type: string
          title: Detail
          description: >-
            Human-readable reason, safe to surface to an end user. Branch on the
            HTTP status rather than on this string: the wording is not part of
            the contract and may be reworded, but 401 (bad key), 402 (out of
            credits), 403 (missing scope), 404 (no such resource) and 429 (rate
            limited) are stable.
          examples:
            - Insufficient API credits.
        errors:
          anyOf:
            - items:
                $ref: '#/components/schemas/ApiFieldError'
              type: array
            - type: 'null'
          title: Errors
          description: 'Present on 422 only: every field that failed validation.'
      type: object
      required:
        - detail
      title: ApiDetailError
      description: >-
        Error envelope the API actually returns.


        Every error (400/401/402/403/404/405/422/429/5xx) carries a `detail`

        string, e.g. `{"detail": "Insufficient API credits."}`, on every mount
        of

        the API. A 422 adds `errors`, one entry per rejected field. Some 404s
        add

        endpoint-specific diagnosis beside `detail` (the statutes section routes

        add `actId`, `reason` and `didYouMean`); treat unknown keys as optional.
    SessionLawNotFoundError:
      properties:
        detail:
          type: string
          title: Detail
          description: >-
            Human-readable reason, safe to show a user. Branch on `reason`, not
            on this string: the wording can change.
          examples:
            - >-
              Session law not found. No law in the registry carries this id.
              Take ids from a /us/session-laws/list result, or send the citation
              in its place.
        sessionLawId:
          type: string
          title: Sessionlawid
          description: The identifier exactly as you sent it.
          examples:
            - SSL_MN_1801R_G_Y1801_C9999
        reason:
          type: string
          enum:
            - not_in_registry
            - wrong_case
            - unresolved_citation
            - ambiguous_citation
            - federal_session_law
            - missing_session_law_id
            - needs_jurisdiction
            - session_not_fully_collected
          title: Reason
          description: >-
            `not_in_registry`: no law carries this id. `wrong_case`: it exists
            in another letter case, see `didYouMean`. `unresolved_citation`: you
            sent a citation and no law carries it. `ambiguous_citation`: the
            citation names several laws, all in `didYouMean`, none chosen for
            you; `defaultSessionLawId` is the publisher's conventional reading
            when one is recorded. `federal_session_law`: federal acts are served
            by /us/statutes/section. `missing_session_law_id`: the URL names an
            endpoint where the id goes. `needs_jurisdiction`: the citation is in
            a form several states share and names none, so none was chosen for
            you; `jurisdictions` lists the states where it exists and
            `didYouMean` one law per state. `session_not_fully_collected`:
            nothing matched, and the session the id or citation points into is
            only partly collected, so the law may exist; `sessionCoverage` says
            how much of the session we hold. The route's price is never charged
            on a 404; a citation's resolution fee is kept on
            `unresolved_citation`, `ambiguous_citation` and
            `needs_jurisdiction`, and refunded on `session_not_fully_collected`:
            a miss in a partly collected session is never charged.
          examples:
            - not_in_registry
        didYouMean:
          items:
            type: string
          type: array
          title: Didyoumean
          description: >-
            Real `sessionLawId`s the input points at: the one that exists in a
            different case, or every law an ambiguous citation names (at most
            20, the conventional reading first). Empty when nothing matched.
          examples:
            - - SSL_KY_2025R_G_Y2025_C100
              - SSL_MO_2025R_G_Y2025_BHB2
        defaultSessionLawId:
          anyOf:
            - type: string
            - type: 'null'
          title: Defaultsessionlawid
          description: >-
            On `ambiguous_citation`, the conventional reading when the registry
            records one, otherwise null. Informational: it is never served for
            you.
          examples:
            - null
        jurisdictions:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Jurisdictions
          description: >-
            On `needs_jurisdiction`, every state (lower-case postal code) where
            the citation you sent exists. Name one of them in the citation and
            send it again. Absent on every other reason.
          examples:
            - - il
              - mn
              - tx
        candidateCount:
          anyOf:
            - type: integer
            - type: 'null'
          title: Candidatecount
          description: >-
            On `ambiguous_citation` and `needs_jurisdiction`, how many laws the
            citation names in all. Compare it with `len(didYouMean)`: when it is
            larger, `truncated` is true and the list is a sample, not the full
            set.
          examples:
            - 22
        truncated:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Truncated
          description: >-
            True when `didYouMean` was capped (at most 20 ids) and
            `candidateCount` is larger than the list. Absent on reasons that
            carry no candidates.
          examples:
            - true
        sessionCoverage:
          anyOf:
            - $ref: '#/components/schemas/SessionLawSessionCoverage'
            - type: 'null'
          description: >-
            On `session_not_fully_collected`, the partly collected session the
            id or citation points into: how many laws we hold of how many it is
            expected to have (`denominator`), and how many are still open.
            Absent on every other reason. The same block is in
            `sessionLaws.sessions` on `GET /us/statutes/coverage`.
      type: object
      required:
        - detail
        - sessionLawId
        - reason
      title: SessionLawNotFoundError
      description: The 404 from `GET /us/session-laws/{sessionLawId}` and its `/body`.
    SessionLawDetailSession:
      properties:
        code:
          type: string
          title: Code
          description: >-
            Session code, `{year}{type}{ordinal}`. `type` is `R` regular, `S`
            special, `X` extraordinary, `F` fiscal, `V` veto, `U` unknown. A
            regular session has no ordinal (`2025R`); a numbered special session
            carries it (`2025S1`, the first special session of 2025); a lettered
            one carries its letter (`2025SC`, Florida's Special Session C).
            `year` is the year the publisher numbers the session by, which for a
            period spanning two years is the first (District of Columbia Council
            Period 25 is `2023R`). Pass it as `session` to `GET
            /us/session-laws/list`.
          examples:
            - 2025R
            - 2025S1
        label:
          anyOf:
            - type: string
            - type: 'null'
          title: Label
          description: The session's canonical label, as the publisher names it.
          examples:
            - 2025 Regular Session
            - 2025 1st Special Session
        type:
          anyOf:
            - type: string
            - type: 'null'
          title: Type
          description: >-
            `regular`, `special`, `extraordinary`, `fiscal`, `veto` or
            `unknown`.
          examples:
            - regular
        year:
          anyOf:
            - type: integer
            - type: 'null'
          title: Year
          description: The year the session convened, the same year `code` starts with.
          examples:
            - 2025
        coverageStatus:
          anyOf:
            - type: string
              enum:
                - complete
                - partial
            - type: 'null'
          title: Coveragestatus
          description: >-
            Whether we hold every law of this session. `complete`: every law the
            publisher lists for the session is accounted for, so a law absent
            from the list does not exist. `partial`: the collection of the
            session stopped short, so a law that is not found may exist, and
            this law's neighbours may be missing. The same verdict, with the
            counts behind it, is in the `sessionLaws` block on `GET
            /us/statutes/coverage`. Omitted when it cannot be read.
          examples:
            - complete
            - partial
      type: object
      required:
        - code
      title: SessionLawDetailSession
      description: >-
        The session block of a single law: the session, and whether we hold all
        of it.
    SessionLawDate:
      properties:
        kind:
          anyOf:
            - type: string
            - type: 'null'
          title: Kind
          description: >-
            What the date is, on `otherDates`: `approved`, `filed` or `other`
            (`kindAsPrinted` carries the publisher's label for `other`). Null on
            `effectiveDates`, where every entry is an effective date.
          examples:
            - approved
            - other
            - null
        date:
          anyOf:
            - type: string
              format: date
            - type: 'null'
          title: Date
          description: >-
            The date as ISO 8601 when the printed text could be read as one.
            Null when the publisher's wording is not a calendar date.
          examples:
            - '2025-03-17'
        dateAsPrinted:
          anyOf:
            - type: string
            - type: 'null'
          title: Dateasprinted
          description: >-
            The date exactly as the publisher wrote it, including any time of
            day.
          examples:
            - March 17, 2025, 10:54 a.m.
            - 06/20/25
        kindAsPrinted:
          anyOf:
            - type: string
            - type: 'null'
          title: Kindasprinted
          description: The publisher's own label for what the date is, when it prints one.
          examples:
            - Presentment Date
            - Presented to the governor
        scopeAsPrinted:
          anyOf:
            - type: string
            - type: 'null'
          title: Scopeasprinted
          description: >-
            What the date applies to when it is not the whole act, as printed:
            an act can take effect in parts. Null when the date applies to the
            act as a whole.
          examples:
            - CCP §871.20.
            - null
      type: object
      title: SessionLawDate
      description: One printed date on a session law.
    CodeSectionAffected:
      properties:
        sectionAsPrinted:
          type: string
          title: Sectionasprinted
          description: >-
            The code section the act changes, as the publisher's table prints
            it. Not normalised and not linked to an `actId` on `/us/statutes`.
          examples:
            - 19.27A.020
        actionAsPrinted:
          anyOf:
            - type: string
            - type: 'null'
          title: Actionasprinted
          description: >-
            What the act does to that section, in the publisher's own words or
            abbreviation (`AMD` amended, `ADD`, `REP`, ...).
          examples:
            - AMD
        codeAsPrinted:
          anyOf:
            - type: string
            - type: 'null'
          title: Codeasprinted
          description: The code the section belongs to, as printed.
          examples:
            - RCW
        actSectionAsPrinted:
          anyOf:
            - type: string
            - type: 'null'
          title: Actsectionasprinted
          description: The section of the act itself that makes the change.
          examples:
            - '6'
      type: object
      required:
        - sectionAsPrinted
      title: CodeSectionAffected
      description: A code section the publisher lists the act as affecting.
    SessionLawSource:
      properties:
        sourceIndex:
          type: integer
          title: Sourceindex
          description: Position of this source in the law's source list, starting at 0.
          examples:
            - 0
        role:
          anyOf:
            - type: string
            - type: 'null'
          title: Role
          description: >-
            What this document supplied: `text` (the act itself), `identity`
            (the publisher page that lists and numbers the session's laws),
            `metadata` (dates, veto and status tables), `code_sections` or
            `certified_image`.
          examples:
            - text
        url:
          anyOf:
            - type: string
            - type: 'null'
          title: Url
          description: The publisher's URL for this document, as we fetched it.
          examples:
            - https://www.revisor.mn.gov/laws/2025/0/Session+Law/Chapter/1/
        fetchedAt:
          anyOf:
            - type: string
            - type: 'null'
          title: Fetchedat
          description: When we fetched the document, ISO 8601 UTC with a `+00:00` offset.
          examples:
            - '2026-09-29T00:41:01+00:00'
        contentType:
          anyOf:
            - type: string
            - type: 'null'
          title: Contenttype
          description: The document's media type as the publisher served it.
          examples:
            - text/html; charset=utf-8
            - application/pdf
        sha256:
          anyOf:
            - type: string
            - type: 'null'
          title: Sha256
          description: SHA-256 (hex) of the exact bytes we fetched and archived.
          examples:
            - 6c83d9c109c1ec61fcd96cea92c8c48414df7ae7dfda7452ebcfbddc181b6b45
        byteLength:
          anyOf:
            - type: integer
            - type: 'null'
          title: Bytelength
          description: Size of the fetched document in bytes.
          examples:
            - 69907
        hostClass:
          anyOf:
            - type: string
            - type: 'null'
          title: Hostclass
          description: >-
            `gov` when the document comes from a government publisher (including
            an official publisher on a non-`.gov` host), otherwise `other`.
          examples:
            - gov
      type: object
      required:
        - sourceIndex
      title: SessionLawSource
      description: A document the record was collected from.
    SessionLawPublisher:
      properties:
        legislatureNumber:
          anyOf:
            - type: integer
            - type: 'null'
          title: Legislaturenumber
          description: >-
            The number of the legislature that enacted the act, as the publisher
            counts them (Minnesota's 94th Legislature, Alaska's 34th). Null
            where the publisher does not number its legislatures on the act's
            own pages; a gap in what we hold, not a fact about the act.
          examples:
            - 94
            - 34
            - null
        sessionLastYear:
          anyOf:
            - type: integer
            - type: 'null'
          title: Sessionlastyear
          description: >-
            The last calendar year of the session the act belongs to, for a
            session that spans two (the District of Columbia's Council Period 25
            runs 2023 to 2024, California's regular session 2025 to 2026). Equal
            to `session.year` for a session inside one year.
          examples:
            - 2025
            - 2024
            - 2026
        printedPageStart:
          anyOf:
            - type: string
            - type: 'null'
          title: Printedpagestart
          description: >-
            The page number printed on the act's first page in the publisher's
            bound volume, as printed and therefore a string (`1`, `ix`, `42A`).
            Not the physical page of a PDF: see `provenance.volume`. Null where
            the act is not printed in a volume.
          examples:
            - '1'
            - '135'
            - null
        printedPageEnd:
          anyOf:
            - type: string
            - type: 'null'
          title: Printedpageend
          description: >-
            The page number printed on the act's last page, as printed. Null as
            above.
          examples:
            - '1'
            - '142'
            - null
        documentKindAsPrinted:
          anyOf:
            - type: string
            - type: 'null'
          title: Documentkindasprinted
          description: >-
            The label the publisher's own document carries for what kind of text
            it is, exactly as printed: `Enrolled version` (Texas), `As Adopted`,
            `Pamphlet Law` (New Jersey), `As Enacted`, `slip copy of this
            session law`. Our normalised reading of it is `documentKind`. Null
            where the document prints none.
          examples:
            - Enrolled version
            - As Adopted
            - Pamphlet Law
            - null
        publisherIds:
          items:
            $ref: '#/components/schemas/SessionLawPublisherId'
          type: array
          title: Publisherids
          description: >-
            The identifiers the publisher itself gives the act, in the order it
            presents them: South Carolina's ratification number, California's
            `bill_id`, the District of Columbia's act and bill numbers,
            Maryland's `BillNumber`. Useful for joining to the publisher's own
            site or data. Which identifiers exist differs by state. Empty when
            the publisher exposes none.
          examples:
            - - name: RAT#
                value: '5'
            - - name: num type="act"
                value: 25-5
        otherCitations:
          items:
            type: string
          type: array
          title: Othercitations
          description: >-
            Other citations the publisher prints for the same act, each exactly
            as printed: `Act No. 1` beside `CHAPTER 1`, `A.L.2025, c.1`, `70 DCR
            1863`, `D.C. Act 25-5`. They are accepted as citations on `GET
            /us/session-laws/{sessionLawId}`. Empty when the publisher prints
            one form only.
          examples:
            - - Act No. 1
            - - D.C. Act 25-5
              - 70 DCR 1863
        publisherFields:
          additionalProperties: true
          type: object
          title: Publisherfields
          description: >-
            The publisher's own structured fields for this act, as the publisher
            states them and otherwise untouched: an object whose keys, nesting
            and values are the publisher's own words. The keys DIFFER BY STATE
            and are not normalised or renamed: Texas gives the bill's full
            action history with journal page numbers (`Actions`), Maryland the
            committees and the reading and hearing dates in each chamber, North
            Carolina and New Mexico a history that can carry vote counts, most
            states little more than the bill number and a sponsor. What a given
            state supplies is whatever its publisher printed; do not assume any
            key exists, and do not read a missing key as a fact about the act.
            Votes in particular are present only where a publisher printed them.
            A few values are the publisher's own HTML: treat every string as
            untrusted text and never render it unescaped. `{}` when the
            publisher printed no such fields. A value too large to serve is left
            out and its key named in `publisherFieldsOmitted`.
          examples:
            - Actions:
                - Action Chamber: E
                  Action Comment: ''
                  Action Date: 04/23/2025
                  Action Description: Effective on 9/1/25
                  Action Time: ''
                  Journal Page Number: ''
                - Action Chamber: E
                  Action Comment: ''
                  Action Date: 04/23/2025
                  Action Description: Signed by the Governor
                  Action Time: ''
                  Journal Page Number: '1441'
                - Action Chamber: E
                  Action Comment: ''
                  Action Date: 04/14/2025
                  Action Description: Sent to the Governor
                  Action Time: ''
                  Journal Page Number: '1265'
              Bill: '14'
              Caption Version: Enrolled
              Chapter: '1'
              Last Action: 04/23/2025 E Effective on 9/1/25
            - BillNumber: HB0001
              ChapterNumber: CH0437
              CommitteePrimaryOpposite: Judicial Proceedings
              CommitteePrimaryOrigin: Environment and Transportation
              CrossfileBillNumber: SB0007
              FirstReadingDateHouseOfOrigin: '2025-01-08'
              SponsorPrimary: Delegate Ebersole
              Status: Approved by the Governor - Chapter 437
              ThirdReadingActionHouseOfOrigin: Passed
              ThirdReadingDateHouseOfOrigin: '2025-02-27'
            - Bill: S115
              History:
                - Action: Concurred In H Com Sub
                  Chamber: Senate
                  Date: 2/26/2025
                  Documents: None
                  Votes: 'PASS: 46-2'
                - Action: Passed 2nd Reading
                  Chamber: House
                  Date: 2/25/2025
                  Documents: None
                  Votes: 'PASS: 93-23'
              Session Law: 2025-1
        publisherFieldsOmitted:
          items:
            type: string
          type: array
          title: Publisherfieldsomitted
          description: >-
            Keys of `publisherFields` that exist on the record but were too
            large to serve inline (past 64 KiB of JSON the largest values are
            left out, whole, never cut). Typically a publisher's full-bill HTML
            copy, whose text is on the body route in any case. Empty when
            nothing was left out, which is almost always.
          examples:
            - []
            - - currentBillHTML
      type: object
      title: SessionLawPublisher
      description: >-
        What the publisher itself printed or published about an act, beyond the
        record's dates and citation.
    SessionLawProvenance:
      properties:
        textMethod:
          anyOf:
            - type: string
            - type: 'null'
          title: Textmethod
          description: >-
            How the text was extracted from the publisher's document:
            `pdf_text_layer`, `html`, `xml`, `docx`, `doc`, or `none` when no
            text was extracted. An open list. `none` is the same fact as
            `textStatus: not_held` for a collected law.
          examples:
            - pdf_text_layer
            - html
            - xml
        pagesWithText:
          anyOf:
            - type: integer
            - type: 'null'
          title: Pageswithtext
          description: >-
            For a PDF, how many of its `pageCount` pages had a text layer to
            read. A figure below `pageCount` means some pages (a signature page,
            a scanned stamp) contributed no text. Null for a source that has no
            pages.
          examples:
            - 3
            - 162
            - null
        volume:
          anyOf:
            - $ref: '#/components/schemas/SessionLawVolume'
            - type: 'null'
          description: >-
            Present only when the act's text was cut out of a bound volume of
            the session's laws rather than published on its own: the volume and
            the pages. Null otherwise.
        caveats:
          items:
            type: string
          type: array
          title: Caveats
          description: >-
            The collector's own remarks on this record, one string each,
            verbatim and in order. Most say something about the act or its text
            that a reader should know: where the chapter number came from when
            the act does not print one, that the publisher prints no
            strike-through so there is no amendatory markup to carry, that an
            effective date is the publisher's wording rather than a calendar
            date, that the text layer has kerning damage. Some are working notes
            about how the record was assembled and are published as written;
            they are free text for a person to read, not a vocabulary to branch
            on, and their wording can change. Notes that only describe how a
            page was fetched or decoded are not included. `[]` when there are
            none.
          examples:
            - - >-
                Chapter number is from the publisher's Passed Legislation index
                ('Current Status'); the enrolled PDF prints a blank 'Chapter No.
                ____' field.
              - The 1-25 line-number column printed on every page is stripped.
      type: object
      title: SessionLawProvenance
      description: >-
        How the text of an act was obtained, and what the collector noted about
        the record.
    SessionLawResolution:
      properties:
        input:
          type: string
          title: Input
          description: What you sent in the path, exactly.
          examples:
            - S.F.No. 1552
        sessionLawId:
          type: string
          title: Sessionlawid
          description: >-
            The id it resolved to. Send this next time to skip resolution and
            its fee.
          examples:
            - SSL_MN_2025R_G_Y2025_C1
        via:
          type: string
          enum:
            - normalized_id
            - citation
          title: Via
          description: >-
            `citation`: your input was a citation and matched exactly one law's
            citation form. `normalized_id`: your input was an id carrying
            surrounding whitespace, quotes or a trailing period, which were
            removed.
          examples:
            - citation
        matchedForm:
          anyOf:
            - type: string
            - type: 'null'
          title: Matchedform
          description: >-
            Which of the law's citation forms your input matched: `as_printed`
            (its printed citation), `bill` (its bill number) or
            `other_as_printed` (another printed form). Null for `normalized_id`.
          examples:
            - bill
            - as_printed
      type: object
      required:
        - input
        - sessionLawId
        - via
      title: SessionLawResolution
      description: How a citation sent in place of a `sessionLawId` was matched.
    ApiFieldError:
      properties:
        loc:
          items:
            anyOf:
              - type: string
              - type: integer
          type: array
          title: Loc
          description: >-
            Where the bad value is: `body`, `query` or `path`, then the
            parameter name exactly as you send it (camelCase), then list
            indexes. A bare `["body"]` means the body as a whole was not a JSON
            object.
          examples:
            - - body
              - corpusType
        msg:
          type: string
          title: Msg
          description: What is wrong with the value, in plain English.
          examples:
            - Input should be 'USC', 'CFR' or 'STATE'
        type:
          type: string
          title: Type
          description: >-
            Machine-readable error kind, e.g. `missing`, `literal_error`,
            `json_invalid`.
          examples:
            - literal_error
      type: object
      required:
        - loc
        - msg
        - type
      title: ApiFieldError
      description: One rejected field in a 422 response.
    SessionLawSessionCoverage:
      properties:
        code:
          type: string
          title: Code
          description: Session code, for example `2025R`.
          examples:
            - 2025R
        label:
          anyOf:
            - type: string
            - type: 'null'
          title: Label
          description: The session's canonical label.
          examples:
            - 2025 Regular Session
        type:
          anyOf:
            - type: string
            - type: 'null'
          title: Type
          description: >-
            `regular`, `special`, `extraordinary`, `fiscal`, `veto` or
            `unknown`.
          examples:
            - regular
        year:
          anyOf:
            - type: integer
            - type: 'null'
          title: Year
          description: The year the session convened, the year `code` starts with.
          examples:
            - 2025
        status:
          type: string
          enum:
            - complete
            - partial
          title: Status
          description: >-
            `complete` when every law the publisher lists for the session is
            accounted for. Anything less is `partial`: a law missing from a
            partial session is not evidence that it does not exist, and asking
            for one by id or citation answers `session_not_fully_collected`,
            free of charge, rather than a plain not found.
          examples:
            - complete
        servedCount:
          type: integer
          minimum: 0
          title: Servedcount
          description: >-
            Laws from this session we serve: every one we answer for by id,
            citation or list, whether or not we hold its text (`notHeldCount` of
            them have none). Laws whose text is withheld are not counted here,
            they are `withheldCount`. `servedCount + withheldCount` is
            `registryCount`, less any law still being verified.
          examples:
            - 39
        withheldCount:
          type: integer
          minimum: 0
          title: Withheldcount
          description: >-
            Laws from this session we hold and list but whose text is withheld
            for a measured defect (`textStatus: withheld`). They are real laws:
            their records are served, their text is not.
          default: 0
          examples:
            - 0
        notHeldCount:
          type: integer
          minimum: 0
          title: Notheldcount
          description: >-
            Of the laws counted in `servedCount`, how many have no text held
            (`textStatus: not_held` or `pending`). A subset of `servedCount`,
            not an addition to it: do not add it to `servedCount` or
            `withheldCount`.
          default: 0
          examples:
            - 0
        registryCount:
          type: integer
          minimum: 0
          title: Registrycount
          description: >-
            Every law of this session in our registry, whether or not its text
            is held: `servedCount + withheldCount`. Any difference is a law
            still being verified, which is neither.
          default: 0
          examples:
            - 39
        collectedCount:
          type: integer
          minimum: 0
          title: Collectedcount
          description: >-
            Laws from this session whose text we have collected, served or
            withheld. Compare it with `denominator.value` to see how much of the
            session we hold.
          default: 0
          examples:
            - 39
        denominator:
          anyOf:
            - $ref: '#/components/schemas/SessionLawDenominator'
            - type: 'null'
          description: >-
            How many laws the session is expected to hold, and where that figure
            comes from. Null when it could not be read.
          examples:
            - derivation: >-
                The publisher's complete listing of this session names 296
                measures. We hold 43 of them; the rest are not yet collected.
              kind: complete_listing
              value: 296
        openGaps:
          type: integer
          minimum: 0
          title: Opengaps
          description: >-
            Laws the publisher lists for this session that we could not collect
            and have not yet. 0 on a `complete` session.
          default: 0
          examples:
            - 0
        measuredAt:
          anyOf:
            - type: string
            - type: 'null'
          title: Measuredat
          description: When this session's coverage was last measured, ISO 8601 UTC.
          examples:
            - '2026-10-05T09:07:12+00:00'
      type: object
      required:
        - code
        - status
        - servedCount
      title: SessionLawSessionCoverage
      description: One legislative session's session-law coverage.
    SessionLawPublisherId:
      properties:
        name:
          type: string
          title: Name
          description: >-
            The publisher's own label for the identifier, exactly as it prints
            or exposes it, so it is not a vocabulary: `RAT#` (South Carolina),
            `bill_id` (California), `num type="act"` (District of Columbia),
            `BillNumber` (Maryland), `L.D.` (Maine).
          examples:
            - RAT#
            - bill_id
            - num type="act"
        value:
          type: string
          title: Value
          description: >-
            The identifier's value as the publisher gives it, always a string:
            `5`, `202520260SB26`, `25-5`, `HB0001`.
          examples:
            - '5'
            - 202520260SB26
            - 25-5
      type: object
      required:
        - name
        - value
      title: SessionLawPublisherId
      description: An identifier the publisher itself gives an act.
    SessionLawVolume:
      properties:
        url:
          type: string
          title: Url
          description: >-
            The publisher's URL of the whole volume (a PDF of every act of the
            session) that this act's text was cut from. A government host.
          examples:
            - >-
              https://static.legmt.gov/Laws/MCA-Supplements/2025SessionLaws_VOL1_Updated.pdf
        pageStart:
          type: integer
          title: Pagestart
          description: >-
            First physical page of the act in that volume, counted from 1 at the
            first page of the file. Not the page number printed on the page: see
            `publisher.printedPageStart` for that.
          examples:
            - 135
        pageEnd:
          type: integer
          title: Pageend
          description: >-
            Last physical page of the act in that volume, the same counting as
            `pageStart`.
          examples:
            - 135
        boundaryHeading:
          anyOf:
            - type: string
            - type: 'null'
          title: Boundaryheading
          description: >-
            The heading in the volume at which the act's text begins, which is
            how the cut was found. Null when none is recorded.
          examples:
            - CHAPTER NO. 1
      type: object
      required:
        - url
        - pageStart
        - pageEnd
      title: SessionLawVolume
      description: The bound volume an act's text was cut out of.
    SessionLawDenominator:
      properties:
        kind:
          type: string
          enum:
            - stated_count
            - complete_listing
            - max_number
            - feed_total
            - our_recount
            - registry_union
            - none
          title: Kind
          description: >-
            Where the total comes from. `stated_count`: the publisher states how
            many measures the session enacted. `complete_listing`: the
            publisher's own complete list of the session's acts, which we
            counted. `max_number`: the highest chapter number the publisher
            printed. `feed_total`: the total a publisher feed reports.
            `our_recount`: we counted the publisher's pages ourselves.
            `registry_union`: the measures we know of from several sources.
            `none`: no total is available, so completeness cannot be judged.
          examples:
            - complete_listing
        value:
          anyOf:
            - type: integer
              minimum: 0
            - type: 'null'
          title: Value
          description: >-
            The number of laws the session is expected to hold. Null when `kind`
            is `none`. Compare it with `registryCount` and `servedCount`.
          examples:
            - 296
        derivation:
          type: string
          title: Derivation
          description: >-
            One plain sentence saying what `value` counts and where it comes
            from. Written for customers: it never contains our internal audit or
            collection notes.
          examples:
            - The publisher's complete listing of this session names 296 acts.
      type: object
      required:
        - kind
        - derivation
      title: SessionLawDenominator
      description: >-
        How many laws a session is supposed to hold, and where that number comes
        from.
  securitySchemes:
    ApiKeyAuth:
      type: http
      scheme: bearer
      bearerFormat: vq_key_*
      description: >-
        API key issued from the developer dashboard. Pass as `Authorization:
        Bearer vq_key_...` (preferred).
    ApiKeyHeader:
      type: apiKey
      in: header
      name: X-API-Key
      description: >-
        The same API key as a bare header value: `X-API-Key: vq_key_...`.
        Equivalent to the Bearer form.
    ApiKeyQuery:
      type: apiKey
      in: query
      name: api_key
      description: >-
        The same API key as a query parameter: `?api_key=vq_key_...`. Use only
        where you cannot set a header. A URL can end up in proxy and server
        logs, browser history and shared links, so prefer either header form,
        and rotate a key that has leaked.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.