openapi: 3.0.3
info:
  title: Telique Telecom API
  version: 2026.11.6
  description: |-
    Unified Telique telecom data API. Consolidated from 4 services: lrn, cnam, lerg, routelink.

    Get your API token at [telique.ringer.tel](https://telique.ringer.tel).
  contact:
    name: Ringer Support
    email: support@ringer.com
    url: https://telique.ringer.tel
  license:
    name: Proprietary
servers:
  - url: https://api.telique.ringer.tel
    description: Production
security:
  - apiToken: []
tags:
  - name: LRN
    description: Local Routing Number lookups — resolve a phone number to the switch that currently serves it, with porting
      metadata.
  - name: CNAM
    description: Caller Name lookups and Robocall Mitigation scoring via TransUnion TruContact.
  - name: LERG
    description: Query any LERG table. Prefer the concrete per-table entries over the generic `{table_name}` one.
  - name: LERG Fast
    description: Ultra-fast LERG 6 path with a small filter allowlist and a required indexed entry point.
  - name: LERG Joins
    description: "Routes that reach beyond one table: rich filter operators, joins, pre-joined tandem lookups and GraphQL."
  - name: LERG Metadata
    description: Table names, columns and row counts.
  - name: LERG NPA-NXX
    description: Resource-style LERG 6 lookups by NPA-NXX and thousands block.
  - name: RouteLink
    description: Toll-free number routing — CIC lookups, ROR lookups, and CPR inspection.
  - name: DNO
    description: Do Not Originate checks — determine whether a phone number is flagged as one that should never appear as a
      caller ID.
  - name: LSMS
    description: LSMS database queries — relationship lookups across phone numbers, LRNs, SPIDs, and service providers via
      REST or GraphQL.
paths:
  /v1/telique/lrn/{phone_number}:
    get:
      operationId: lrnLookupByPath
      tags:
        - LRN
      summary: Look up the LRN for a phone number (GET)
      description: |
        Simple GET-based LRN lookup. Default response is plain text
        `LRN;SPID` (semicolon-separated, **not** pipe) for ported numbers,
        or just the dialed number echoed back as its own LRN for unported
        numbers. Use the `format` query parameter for JSON or XML.

        Examples:
        - `/v1/telique/lrn/3036298301` returns `7207081999;567G`
        - `/v1/telique/lrn/3036298301?format=json` returns JSON

        **Accepted input — geographic/wireless NANP numbers only.** This
        endpoint resolves numbers carried in LSMS/NPAC porting data. It does
        **not** service toll-free numbers (NPAs 800, 833, 844, 855, 866, 877,
        888, 822) — for toll-free routing use the RouteLink endpoints
        (`/v1/telique/ror/{crn}`, `/v1/telique/cicror/...`).

        **Unported, unknown, toll-free, and non-LERG-assigned numbers all
        return the dialed number as its own LRN** (plain text = the number
        itself; JSON `lrn` = the number, `metadata.spid` = null), HTTP `200`.
        The endpoint does **not** validate that the NPA-NXX is LERG-assigned
        and does **not** distinguish "valid unported number" from "toll-free /
        non-routable" — both yield this echo response. Callers should
        pre-filter toll-free and non-geographic NPAs before dipping to avoid
        wasted lookups. A `400 INVALID_PHONE_NUMBER` is returned **only** for
        malformed input (not a 10-digit NANP number after normalization).
      parameters:
        - name: phone_number
          in: path
          required: true
          description: 10-digit US phone number
          schema:
            type: string
            pattern: ^\d{10}$
            example: "3036298301"
        - name: format
          in: query
          required: false
          description: Response format (default is plain text)
          schema:
            type: string
            enum:
              - json
              - xml
              - plain
              - raw
            default: plain
      responses:
        "200":
          description: LRN found
          content:
            text/plain:
              schema:
                type: string
              example: 7207081999;567G
            application/json:
              schema:
                $ref: "#/components/schemas/LrnLookupResponse"
              example:
                phone_number: "3036298301"
                lrn: "7207081999"
                status: success
                timestamp: 2026-04-04T23:04:50.391142767Z
                metadata:
                  spid: 567G
                  lnp_type: lspp
        "400":
          description: Malformed input — the path value is not a 10-digit NANP number after normalization (wrong length, NPA/NXX
            starting with 0/1, or non-numeric). Returned as a JSON error body even though successful lookups default to
            plain text. Toll-free and non-LERG numbers do NOT 400 — they return `200` with the number echoed as its own
            LRN (see the endpoint description).
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
              example:
                error: INVALID_PHONE_NUMBER
                message: "Invalid phone number format: Invalid format: notanumber. Expected 10-digit US number or E.164 format."
                code: 400
                timestamp: 2026-04-04T23:04:50.391142767Z
        "404":
          description: Not returned for well-formed input — an unported/unknown number yields `200` with the number echoed as its
            own LRN, not a 404. This status is reserved for an explicit data-store "not found" signal that the current
            implementation does not emit. JSON error body if it ever occurs.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
        "503":
          description: Data store temporarily unavailable. Returned when the lookup exceeded its sub-second budget, when the data
            store was unreachable or returned 408/5xx, or when the server's in-flight lookup limit was reached and the
            request was shed. All four are **fast** (well under one second) and **retriable** — retry with backoff and
            jitter rather than immediately re-dialing. The response body carries no internal detail by design.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
              example:
                error: DATA_STORE_UNAVAILABLE
                message: Data store is temporarily unavailable
                code: 503
                timestamp: 2026-04-04T23:04:50.391142767Z
  /v1/telique/dno/{phone_number}:
    get:
      operationId: dnoCheck
      tags:
        - DNO
      summary: Check if a phone number is Do Not Originate
      description: |
        Returns whether the phone number appears on the Do Not Originate list.
        Default response is plain text `true` or `false`. Use the `format`
        query parameter for JSON (which includes match details when DNO).

        Supports prefix matching — the DNO list contains 3, 6, 7, and
        10-digit patterns. A 10-digit lookup matches against all prefix lengths.
      parameters:
        - name: phone_number
          in: path
          required: true
          description: 10-digit US phone number
          schema:
            type: string
            pattern: ^\d{10}$
            example: "8008291040"
        - name: format
          in: query
          required: false
          description: Response format (default is plain text)
          schema:
            type: string
            enum:
              - json
              - xml
              - raw
            default: raw
      responses:
        "200":
          description: DNO check completed
          content:
            text/plain:
              schema:
                type: string
                enum:
                  - "true"
                  - "false"
              example: "true"
            application/json:
              schema:
                $ref: "#/components/schemas/DnoLookupResponse"
              example:
                phone_number: "8008291040"
                is_dno: true
                status: success
                timestamp: 2026-04-04T23:05:01.706505032Z
                source: ITG
                created_at: 2022-10-12T07:44:48Z
                matched_pattern: "8008291040"
  /v1/telique/lsms/list/phone_number:
    get:
      operationId: lsmsListPhoneNumbers
      tags:
        - LSMS
      summary: List phone numbers by LRN or SPID
      description: |
        Query the LSMS database for all phone numbers associated with a
        given LRN or SPID. Exactly one query parameter must be provided.

        These endpoints query PostgreSQL directly and may have higher
        latency than the primary LRN lookup endpoints.
      parameters:
        - name: lrn
          in: query
          required: false
          description: Local Routing Number to filter by (10-digit)
          schema:
            type: string
            pattern: ^\d{10}$
            example: "7207081999"
        - name: spid
          in: query
          required: false
          description: Service Provider ID to filter by (4 characters)
          schema:
            type: string
            pattern: ^[A-Z0-9]{4}$
            example: 567G
      responses:
        "200":
          description: List of phone numbers
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PhoneNumberListResponse"
              example:
                count: 3
                phone_numbers:
                  - "3036298301"
                  - "3036298302"
                  - "3036298303"
                query:
                  lrn: "7207081999"
        "400":
          description: Invalid parameters (must provide exactly one of lrn or spid)
  /v1/telique/lsms/list/spid:
    get:
      operationId: lsmsListSpids
      tags:
        - LSMS
      summary: List SPIDs by LRN or phone number
      description: |
        Query the LSMS database for all Service Provider IDs associated with
        a given LRN or phone number. Exactly one query parameter must be provided.
      parameters:
        - name: lrn
          in: query
          required: false
          description: Local Routing Number to filter by (10-digit)
          schema:
            type: string
            pattern: ^\d{10}$
            example: "7207081999"
        - name: phone_number
          in: query
          required: false
          description: Phone number to filter by (10-digit)
          schema:
            type: string
            pattern: ^\d{10}$
            example: "3036298301"
      responses:
        "200":
          description: List of SPIDs
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/SpidListResponse"
              example:
                count: 1
                spids:
                  - 567G
                query:
                  lrn: "7207081999"
        "400":
          description: Invalid parameters (must provide exactly one of lrn or phone_number)
  /v1/telique/lsms/list/lrn:
    get:
      operationId: lsmsListLrns
      tags:
        - LSMS
      summary: List LRNs by SPID or phone number
      description: |
        Query the LSMS database for all Local Routing Numbers associated with
        a given SPID or phone number. Exactly one query parameter must be provided.
      parameters:
        - name: spid
          in: query
          required: false
          description: Service Provider ID to filter by (4 characters)
          schema:
            type: string
            pattern: ^[A-Z0-9]{4}$
            example: 567G
        - name: phone_number
          in: query
          required: false
          description: Phone number to filter by (10-digit)
          schema:
            type: string
            pattern: ^\d{10}$
            example: "3036298301"
      responses:
        "200":
          description: List of LRNs
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LrnListResponse"
              example:
                count: 2
                lrns:
                  - "7207081999"
                  - "3036298300"
                query:
                  spid: 567G
        "400":
          description: Invalid parameters (must provide exactly one of spid or phone_number)
  /v1/telique/lsms/gql:
    post:
      operationId: lsmsGraphql
      tags:
        - LSMS
      summary: Query LSMS data via GraphQL
      description: |
        GraphQL endpoint for flexible LSMS database queries. Supports
        subscription version lookups, number block queries, service provider
        information, and NPA-NXX data.

        Available root queries:
        - `subscriptionVersion(phoneNumber)` — single phone number lookup
        - `subscriptionVersionsByLrn(lrn, limit, offset)` — paginated list by LRN
        - `subscriptionVersionsBySpid(spid, limit, offset)` — paginated list by SPID
        - `numberBlock(npanxxx)` — NPA-NXX-X block details
        - `numberBlocks(spid, lrn, limit, offset)` — paginated block search
        - `serviceProvider(spid, npacRegion)` — provider details
        - `serviceProviders(limit, offset)` — list all providers
        - `locationRoutingNumber(lrn)` — LRN details
        - `npanxx(npa, nxx)` — NPA-NXX assignment info
        - `npanxxBySpid(spid, limit, offset)` — NPA-NXX assignments by SPID
        - `lsmsStats` — database statistics

        Visit the GraphQL playground (GET request to the same path) for
        interactive schema exploration.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - query
              properties:
                query:
                  type: string
                  description: GraphQL query string
                variables:
                  type: object
                  description: Query variables
            example:
              query: |
                {
                  subscriptionVersion(phoneNumber: "3036298301") {
                    phoneNumber
                    lrn
                    spid
                    lnpType
                    activationTimestamp
                    isActive
                  }
                }
      responses:
        "200":
          description: GraphQL response
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                  errors:
                    type: array
                    items:
                      type: object
              example:
                data:
                  subscriptionVersion:
                    phoneNumber: "3036298301"
                    lrn: "7207081999"
                    spid: 567G
                    lnpType: lspp
                    activationTimestamp: 2026-04-04T23:04:50.386843345Z
                    isActive: true
  /v1/telique/cnam/{phoneNumber}:
    get:
      operationId: cnamLookup
      tags:
        - CNAM
      summary: Simplified CNAM lookup by phone number
      description: |
        Look up the registered caller name for a phone number. This is a convenience
        endpoint that only requires the phone number in the URL path.

        Internally, the phone number is used as the `calling_party` and a placeholder
        value is injected for `called_party`. For full control over both parties and
        robocall mitigation scoring, use the `/v1/telique/cnam/identity` endpoint instead.
      parameters:
        - name: phoneNumber
          in: path
          required: true
          description: NANP phone number to look up. Accepts 10 digits (`5714345400`), 11 digits with a leading 1 (`15714345400`),
            or E.164 with leading `+1` (`+15714345400`). No dashes or spaces.
          schema:
            type: string
            pattern: ^(\+?1)?\d{10}$
            example: "5714345400"
        - name: nocache
          in: query
          required: false
          description: "When present (any value, including empty), bypasses the cache and fetches a fresh result from TransUnion.
            Successful (`status: ok`) responses are written back to the cache."
          schema:
            type: string
          allowEmptyValue: true
      responses:
        "200":
          description: Successful CNAM lookup
          headers:
            X-Cache:
              description: Cache status — `HIT` (served from cache), `MISS` (fetched from TransUnion and cached), or `BYPASS` (nocache
                was used)
              schema:
                type: string
                enum:
                  - HIT
                  - MISS
                  - BYPASS
            Cache-Control:
              description: Always `no-store` to prevent CDN and browser caching
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CnamResponse"
              examples:
                nameAvailable:
                  summary: Caller name found
                  value:
                    status: ok
                    cnam:
                      calling_name_status: available
                      calling_name: WIRELESS CALLER
                      presentation_indicator: allowed
                nameUnavailable:
                  summary: No caller name on file
                  value:
                    status: ok
                    cnam:
                      calling_name_status: unavailable
        "400":
          description: Invalid phone number format
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CnamErrorResponse"
              example:
                error: bad request
                message: invalid phone number
        "502":
          description: TransUnion upstream error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CnamErrorResponse"
              example:
                error: upstream error
                message: TransUnion request failed
  /v1/telique/cnam/identity:
    get:
      operationId: identityLookupGet
      tags:
        - CNAM
      summary: Full identity lookup (CNAM + Robocall Mitigation) via query parameters
      description: |
        Full CNAM and Robocall Mitigation lookup using query parameters. Both `calling_party`
        and `called_party` are required.

        Optionally include STIR/SHAKEN attestation fields (`verstat`, `attest`) to receive
        enhanced robocall risk scoring via TransUnion's TruContact engine.

        For requests that include nested `cv_data`, use the POST variant instead.
      parameters:
        - name: calling_party
          in: query
          required: false
          description: "Originating phone number — the number whose caller name is looked up. Optional: omitting it yields a
            less-useful result. Format is validated by the upstream (TransUnion); invalid numbers are returned as a
            non-ok status."
          schema:
            type: string
            pattern: ^(\+?1)?\d{10}$
            example: "5714345400"
        - name: called_party
          in: query
          required: true
          description: Destination NANP phone number. Accepts 10 digits, 11 digits with a leading 1, or E.164 with a leading `+1`.
          schema:
            type: string
            pattern: ^(\+?1)?\d{10}$
            example: "3034298788"
        - name: call_direction
          in: query
          required: false
          description: Direction of the call
          schema:
            type: string
            enum:
              - incoming
              - outgoing
            example: incoming
        - name: txn_id
          in: query
          required: false
          description: Your transaction ID, echoed back in the response
          schema:
            type: string
            example: txn-20260404-001
        - name: client_id
          in: query
          required: false
          description: Your client identifier (up to 32 alphanumeric characters)
          schema:
            type: string
            maxLength: 32
            example: telique-prod
        - name: verstat
          in: query
          required: false
          description: STIR/SHAKEN verification status
          schema:
            type: string
            example: TN-Validation-Passed
        - name: attest
          in: query
          required: false
          description: STIR/SHAKEN attestation level
          schema:
            type: string
            enum:
              - A
              - B
              - C
            example: A
        - name: nocache
          in: query
          required: false
          description: "When present (any value, including empty), bypasses the cache and fetches a fresh result from TransUnion.
            Successful (`status: ok`) responses are written back to the cache."
          schema:
            type: string
          allowEmptyValue: true
      responses:
        "200":
          description: Successful identity lookup
          headers:
            X-Cache:
              description: Cache status — `HIT`, `MISS`, or `BYPASS`
              schema:
                type: string
                enum:
                  - HIT
                  - MISS
                  - BYPASS
            Cache-Control:
              description: Always `no-store`
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/IdentityResponse"
              examples:
                cnamOnly:
                  summary: Basic CNAM result
                  value:
                    status: ok
                    cnam:
                      calling_name_status: available
                      calling_name: WIRELESS CALLER
                      presentation_indicator: allowed
                withRobocallMitigation:
                  summary: CNAM with robocall risk scoring
                  value:
                    status: ok
                    cnam:
                      calling_name_status: available
                      calling_name: ROBO? Marketing
                      presentation_indicator: allowed
                    call_insight:
                      call_treatment: DENY
                      fraud_score: 100
                      original_calling_name: Marketing Firm
                      propensity: very-high
        "400":
          description: Missing or invalid parameters
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CnamErrorResponse"
              example:
                error: bad request
                message: called_party is required
        "502":
          description: TransUnion upstream error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CnamErrorResponse"
              example:
                error: upstream error
                message: TransUnion request failed
    post:
      operationId: identityLookupPost
      tags:
        - CNAM
      summary: Full identity lookup (CNAM + Robocall Mitigation) via JSON body
      description: |
        Full CNAM and Robocall Mitigation lookup using a JSON request body. Supports all
        the same fields as the GET variant, plus nested `cv_data` for STIR/SHAKEN
        call-validation data.

        The request body is proxied to TransUnion with the API key injected. The `cv_data`
        object is preserved as-is (not flattened).
      parameters:
        - name: nocache
          in: query
          required: false
          description: "When present (any value, including empty), bypasses the cache and fetches a fresh result from TransUnion.
            Successful (`status: ok`) responses are written back to the cache."
          schema:
            type: string
          allowEmptyValue: true
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/IdentityRequest"
            examples:
              basicLookup:
                summary: Basic identity lookup
                value:
                  calling_party: "5714345400"
                  called_party: "3034298788"
                  call_direction: incoming
              withCvData:
                summary: Lookup with STIR/SHAKEN call-validation data
                value:
                  calling_party: "5714345400"
                  called_party: "3034298788"
                  call_direction: incoming
                  txn_id: txn-20260404-002
                  client_id: telique-prod
                  verstat: TN-Validation-Failed
                  attest: C
                  cv_data:
                    verstat: TN-Validation-Failed
                    attest: C
                    ppt: shaken
                    origid: 1db966a6-8f30-11e7-bc77-fa163e70349d
      responses:
        "200":
          description: Successful identity lookup
          headers:
            X-Cache:
              description: Cache status — `HIT`, `MISS`, or `BYPASS`
              schema:
                type: string
                enum:
                  - HIT
                  - MISS
                  - BYPASS
            Cache-Control:
              description: Always `no-store`
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/IdentityResponse"
              examples:
                withCvData:
                  summary: Response with STIR/SHAKEN cv_data echoed
                  value:
                    status: ok
                    cnam:
                      calling_name_status: available
                      calling_name: Fraudulent Call
                      presentation_indicator: allowed
                    call_insight:
                      call_treatment: DENY
                      fraud_score: 100
                      original_calling_name: Marketing firm
                      cv_data:
                        verstat: TN-Validation-Failed
                        attest: C
                        ppt: shaken
                        origid: 1db966a6-8f30-11e7-bc77-fa163e70349d
        "400":
          description: Missing required fields or invalid JSON
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CnamErrorResponse"
              examples:
                missingField:
                  summary: Missing required field
                  value:
                    error: bad request
                    message: called_party is required
                invalidJson:
                  summary: Malformed JSON body
                  value:
                    error: bad request
                    message: invalid character 'o' in literal null (expecting 'u')
        "502":
          description: TransUnion upstream error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CnamErrorResponse"
              example:
                error: upstream error
                message: TransUnion request failed
  /v1/lerg/fast/lerg_6:
    get:
      tags:
        - LERG Fast
      summary: Ultra-fast LERG 6 lookups with query-string filters
      description: >-
        The same query-string contract as `queryLerg6`, served from the interned-string LERG 6 store with typed
        post-filters. Use it when latency matters more than flexibility.


        Two limits distinguish it from the generic table route:


        - **Filter allowlist.** Only `npa`, `nxx`, `ocn`, `switch`, `block_id`, `lata` and `loc_state` may be filtered
        here; `state` is accepted as a synonym for `loc_state`. Any other column returns `400` naming `queryLerg6` as
        the replacement.

        - **An indexed entry point is required.** At least one of `npa`, `ocn` or `switch` must be supplied. `nxx`
        narrows `npa` but is not an index of its own, so `?nxx=629` alone is a `400`.


        `limit` is clamped to 1000 here rather than rejected: `?limit=5000` returns 200 with at most 1000 rows.
      operationId: queryLerg6Fast
      parameters:
        - name: fields
          in: query
          description: Comma-separated columns to return. Omit it, or pass `*`, for all 39.
          required: false
          schema:
            type: string
          example: npa,nxx,ocn,loc_name,switch
        - name: npa
          in: query
          description: "NPA. Indexed entry point; repeat the key for an IN-list. Whole numbers only: this route feeds it to a
            typed index, so `?npa=abc` is a `400` here where `queryLerg6` would return an empty page."
          required: false
          schema:
            type: array
            items:
              type: integer
              format: int64
          style: form
          explode: true
          example:
            - 303
        - name: nxx
          in: query
          description: "NXX, matched as exact text. Narrows `npa`; not an index on its own. It is a code, not a number: `007`
            matches the access tandem rows that hold `007`, and `7` matches none of them. `+` (sent as `%2B`) selects
            the access tandem rows that route directly to the designated switch."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - "629"
        - name: ocn
          in: query
          description: OCN. Indexed entry point; repeat the key for an IN-list.
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - "6529"
        - name: switch
          in: query
          description: Switch CLLI. Indexed entry point; repeat the key for an IN-list.
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - DNVRCOMADS0
        - name: block_id
          in: query
          description: "Thousands block: `A` for the whole 10,000-number code, `0`-`9` for an individual block. Applied as a
            post-filter."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - A
        - name: lata
          in: query
          description: LATA. Applied as a post-filter.
          required: false
          schema:
            type: array
            items:
              type: integer
              format: int64
          style: form
          explode: true
          example:
            - 656
        - name: loc_state
          in: query
          description: Location state. Applied as a post-filter. `state` is accepted as a synonym.
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - CO
        - name: limit
          in: query
          description: "Page size, default 100. Clamped to 1000: a larger value is accepted and silently reduced, never rejected."
          required: false
          schema:
            type: integer
            minimum: 0
          example: 10
        - name: offset
          in: query
          description: Rows to skip for pagination, default 0.
          required: false
          schema:
            type: integer
            minimum: 0
          example: 0
      responses:
        "200":
          description: Envelope with `table`, `count`, `total_unique`, `offset`, `limit` and `data[]`.
          content:
            application/json:
              schema: {}
              example:
                count: 2
                data:
                  - loc_name: DENVER
                    npa: 303
                    nxx: "629"
                    ocn: "6529"
                    switch: DNVRCOMADS0
                  - loc_name: DENVER
                    npa: 303
                    nxx: "630"
                    ocn: "6529"
                    switch: DNVRCOMADS1
                limit: 100
                offset: 0
                table: lerg_6
                total_unique: 2
        "400":
          description: Causes include no indexed filter (`npa`, `ocn` or `switch`), a filter outside this route's allowlist, a
            non-integer `npa` — it reaches a typed index here, so `?npa=abc` is rejected rather than matching nothing as
            it would on `queryLerg6` — an unknown column in `fields`, an empty filter value, and a non-numeric
            `limit`/`offset`.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LergErrorResponse"
      security:
        - apiToken: []
  /v1/lerg/graphql:
    post:
      tags:
        - LERG Joins
      summary: Execute a GraphQL query across all 27 LERG tables
      description: >-
        POST a JSON body with `query` and optional `variables`. `GET /v1/lerg/graphql` in a browser serves GraphiQL, and
        introspection is enabled, so the authoritative field-level schema lives at the endpoint rather than in this
        document.


        Backed by CloudSQL, not the in-memory store. It supports nested relationships (`lerg6.carrier`,
        `lerg6.switchInfo`, `lerg7Sha.tandemSwitch`) and a `dynamicJoin` resolver for arbitrary cross-table joins.
        Prefer the REST routes for high-throughput exact-match lookups: they read the in-memory store and are orders of
        magnitude faster.
      operationId: graphqlQuery
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - query
              properties:
                operationName:
                  type: string
                  description: Which operation to run, when the document holds more than one.
                query:
                  type: string
                  description: The GraphQL query document.
                variables:
                  type: object
                  description: Variable bindings for the query.
            example:
              operationName: BlocksForNpaNxx
              query: |-
                query BlocksForNpaNxx($npa: String!, $nxx: String!) {
                  lerg6(
                    filters: [
                      { field: "npa", op: EQ, value: $npa }
                      { field: "nxx", op: EQ, value: $nxx }
                    ]
                    pagination: { limit: 10 }
                  ) {
                    npa
                    nxx
                    blockId
                    ocn
                    carrier {
                      ocnName
                    }
                  }
                }
              variables:
                npa: "303"
                nxx: "629"
        required: true
      responses:
        "200":
          description: GraphQL response envelope. Note that GraphQL reports query errors in `errors` with HTTP 200 — do not treat
            a 200 as success without checking it.
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                  errors:
                    type: array
                    items:
                      type: object
                      properties:
                        message:
                          type: string
              example:
                data:
                  lerg6:
                    - blockId: A
                      carrier:
                        ocnName: AT&T MOBILITY
                      npa: "303"
                      nxx: "629"
                      ocn: "6529"
      security:
        - apiToken: []
  /v1/lerg/lerg10:
    get:
      tags:
        - LERG
      summary: Query lerg10 with exact-match column filters
      description: >-
        `GET /v1/lerg/lerg10?column=value&…`


        Every parameter below except `fields`, `limit` and `offset` is a column of lerg10. Repeat a parameter to match
        any of several values (an IN-list); omit it to leave that column unfiltered. Filters are exact-match and are
        ANDed together.


        A comma inside a filter value is **not** a separator — only `fields` is comma-separated. `?npa=303,720` looks
        for the literal value `303,720`, matches nothing, and returns 200 with an empty `data`. Repeat the key instead:
        `?npa=303&npa=720`.


        This table has no hash index, so every query is a filtered scan; keep `limit` modest.


        This is the same route as `queryTable` with `table_name=lerg10`, spelled out so the columns are nameable. For an
        operator other than equality, or to join to another table, use `complexQuery`.


        Column definitions are paraphrased from the TruOps TRA LERG Routing Guide, General Information, BD-TRA-LERG-GEN
        Issue 2 (2026-08-01), section 3.1.
      operationId: queryLerg10
      parameters:
        - name: fields
          in: query
          description: "Comma-separated projection. Omit it, or pass `*`, for every column. `*` cannot be combined with other
            names. Valid names: status, eff_date, npa, nxx, loc_name, loc_state, loc_index, npa_atc, atc, os1, os2, os3,
            os4, os5, os6, os7, os8, os9, os10, os11, os12, os13, os14, os15, os16, os17, os18, os19, os20, os21, os22,
            os23, os24, os25, lata."
          required: false
          schema:
            type: string
          example: status,eff_date,npa,nxx
        - name: limit
          in: query
          description: "Page size, default 100. Clamped to 10,000: a larger value is accepted and silently reduced, never
            rejected, so no `maximum` is declared here. `limit=0` is accepted and returns an empty page. On a query no
            index can narrow this also bounds the work: the scan stops at `offset + limit` distinct rows."
          required: false
          schema:
            type: integer
            minimum: 0
          example: 100
        - name: offset
          in: query
          description: "Rows to skip for pagination, default 0. Not capped, deliberately: a ceiling here would make paging through
            a table impossible. On a query no index can narrow, `offset` counts towards the scan bound of `offset +
            limit` distinct rows, so a deep page costs the rows it skips -- `offset=1500000` reads 1.5M rows whatever
            `limit` says. Filter on an indexed column to page at constant cost."
          required: false
          schema:
            type: integer
            minimum: 0
          example: 0
        - name: status
          in: query
          description: "Status (string). Nullable: rows where this column is null never match a filter on it. Pending activity on
            this record, read together with the effective date: E = the record is being established, M = the record is
            being modified (compare against the preceding current view to see what changes), D = the record is being
            disconnected. Null means the record is current and active as of this LERG issue."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: eff_date
          in: query
          description: "Effective Date (date). Nullable: rows where this column is null never match a filter on it. Date on which
            the activity in `status` takes effect, as YYYY-MM-DD. Null when the record is current. The LERG is a
            planning tool: this date is a forecast, not an activation record."
          required: false
          schema:
            type: array
            items:
              type: string
              format: date
          style: form
          explode: true
          example:
            - 2026-03-01
        - name: npa
          in: query
          description: NPA (integer). Numbering Plan Area, the three-digit area code.
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 303
        - name: nxx
          in: query
          description: "NXX (integer). Central office code (NXX) of the NPA NXX this row maps: the three digits after the area
            code. Served as a number, since an ordinary NXX begins with 2 through 9; in current data every value lies
            between 200 and 999."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 629
        - name: loc_name
          in: query
          description: "Location Name (string). Locality the NPA NXX serves. In current data it is spelled out in full: every
            value is a LERG 8 LOC full locality name (`loc_name_full`, up to 50 characters), not the ten-character
            abbreviation LERG 6 carries (SPRINGFIELD here where LERG 6 has SPRINGFLD)."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - DENVER
        - name: loc_state
          in: query
          description: "Location State (string). Two-letter state, province, or territory of the locality. In current data XX
            appears only on non-geographic NPAs: fifteen 5XX NPAs and the Canadian NPAs 600, 622 and 633."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - CO
        - name: loc_index
          in: query
          description: "Location Index (string). Nullable: rows where this column is null never match a filter on it.
            Two-character index that distinguishes two localities of the same name within one state or province. Null
            when the name is unambiguous."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: npa_atc
          in: query
          description: "NPA ATC (integer). Nullable: rows where this column is null never match a filter on it. Area code (NPA) of
            the access tandem code in `atc`; the two together identify the code. In current data it is null exactly when
            `atc` is. In current data it often differs from `npa`, and many NPA NXXs map to codes in several NPAs."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
        - name: atc
          in: query
          description: "Access Tandem Code (string). Nullable: rows where this column is null never match a filter on it. Access
            Tandem Code (ATC) this row maps to: a code of three digits from the 0XX or 1XX range, served as text so its
            leading zero is kept (007, not 7), naming a tandem through which service providers get operator or test
            access. A lone + stands for direct routing to the NPA's designated switch rather than through a numbered
            code. Despite the name, an ATC does not mean a Feature Group B or D access tandem. Null when the row maps no
            code. In current data every `npa_atc` and `atc` pair is also listed in LERG 6 ATC."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: os1
          in: query
          description: "Operating Service 1 (string). Nullable: rows where this column is null never match a filter on it.
            Operator Service code associated with an Access Tandem Code, listed in source-record order. Null when fewer
            codes are listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: os2
          in: query
          description: "Operating Service 2 (string). Nullable: rows where this column is null never match a filter on it.
            Operator Service code associated with an Access Tandem Code, listed in source-record order. Null when fewer
            codes are listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: os3
          in: query
          description: "Operating Service 3 (string). Nullable: rows where this column is null never match a filter on it.
            Operator Service code associated with an Access Tandem Code, listed in source-record order. Null when fewer
            codes are listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: os4
          in: query
          description: "Operating Service 4 (string). Nullable: rows where this column is null never match a filter on it.
            Operator Service code associated with an Access Tandem Code, listed in source-record order. Null when fewer
            codes are listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: os5
          in: query
          description: "Operating Service 5 (string). Nullable: rows where this column is null never match a filter on it.
            Operator Service code associated with an Access Tandem Code, listed in source-record order. Null when fewer
            codes are listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: os6
          in: query
          description: "Operating Service 6 (string). Nullable: rows where this column is null never match a filter on it.
            Operator Service code associated with an Access Tandem Code, listed in source-record order. Null when fewer
            codes are listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: os7
          in: query
          description: "Operating Service 7 (string). Nullable: rows where this column is null never match a filter on it.
            Operator Service code associated with an Access Tandem Code, listed in source-record order. Null when fewer
            codes are listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: os8
          in: query
          description: "Operating Service 8 (string). Nullable: rows where this column is null never match a filter on it.
            Operator Service code associated with an Access Tandem Code, listed in source-record order. Null when fewer
            codes are listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: os9
          in: query
          description: "Operating Service 9 (string). Nullable: rows where this column is null never match a filter on it.
            Operator Service code associated with an Access Tandem Code, listed in source-record order. Null when fewer
            codes are listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: os10
          in: query
          description: "Operating Service 10 (string). Nullable: rows where this column is null never match a filter on it.
            Operator Service code associated with an Access Tandem Code, listed in source-record order. Null when fewer
            codes are listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: os11
          in: query
          description: "Operating Service 11 (string). Nullable: rows where this column is null never match a filter on it.
            Operator Service code associated with an Access Tandem Code, listed in source-record order. Null when fewer
            codes are listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: os12
          in: query
          description: "Operating Service 12 (string). Nullable: rows where this column is null never match a filter on it.
            Operator Service code associated with an Access Tandem Code, listed in source-record order. Null when fewer
            codes are listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: os13
          in: query
          description: "Operating Service 13 (string). Nullable: rows where this column is null never match a filter on it.
            Operator Service code associated with an Access Tandem Code, listed in source-record order. Null when fewer
            codes are listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: os14
          in: query
          description: "Operating Service 14 (string). Nullable: rows where this column is null never match a filter on it.
            Operator Service code associated with an Access Tandem Code, listed in source-record order. Null when fewer
            codes are listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: os15
          in: query
          description: "Operating Service 15 (string). Nullable: rows where this column is null never match a filter on it.
            Operator Service code associated with an Access Tandem Code, listed in source-record order. Null when fewer
            codes are listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: os16
          in: query
          description: "Operating Service 16 (string). Nullable: rows where this column is null never match a filter on it.
            Operator Service code associated with an Access Tandem Code, listed in source-record order. Null when fewer
            codes are listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: os17
          in: query
          description: "Operating Service 17 (string). Nullable: rows where this column is null never match a filter on it.
            Operator Service code associated with an Access Tandem Code, listed in source-record order. Null when fewer
            codes are listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: os18
          in: query
          description: "Operating Service 18 (string). Nullable: rows where this column is null never match a filter on it.
            Operator Service code associated with an Access Tandem Code, listed in source-record order. Null when fewer
            codes are listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: os19
          in: query
          description: "Operating Service 19 (string). Nullable: rows where this column is null never match a filter on it.
            Operator Service code associated with an Access Tandem Code, listed in source-record order. Null when fewer
            codes are listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: os20
          in: query
          description: "Operating Service 20 (string). Nullable: rows where this column is null never match a filter on it.
            Operator Service code associated with an Access Tandem Code, listed in source-record order. Null when fewer
            codes are listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: os21
          in: query
          description: "Operating Service 21 (string). Nullable: rows where this column is null never match a filter on it.
            Operator Service code associated with an Access Tandem Code, listed in source-record order. Null when fewer
            codes are listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: os22
          in: query
          description: "Operating Service 22 (string). Nullable: rows where this column is null never match a filter on it.
            Operator Service code associated with an Access Tandem Code, listed in source-record order. Null when fewer
            codes are listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: os23
          in: query
          description: "Operating Service 23 (string). Nullable: rows where this column is null never match a filter on it.
            Operator Service code associated with an Access Tandem Code, listed in source-record order. Null when fewer
            codes are listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: os24
          in: query
          description: "Operating Service 24 (string). Nullable: rows where this column is null never match a filter on it.
            Operator Service code associated with an Access Tandem Code, listed in source-record order. Null when fewer
            codes are listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: os25
          in: query
          description: "Operating Service 25 (string). Nullable: rows where this column is null never match a filter on it.
            Operator Service code associated with an Access Tandem Code, listed in source-record order. Null when fewer
            codes are listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: lata
          in: query
          description: LATA (integer). Local Access and Transport Area, the numeric code of the geographic area this record
            belongs to. 999 and 99999 mark non-geographic and reserved assignments and are real values, not nulls.
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 656
      responses:
        "200":
          description: Envelope with `table`, `count`, `total_unique` and `data[]`, one object per row projected to `fields`.
          content:
            application/json:
              schema:
                type: object
                properties:
                  count:
                    type: integer
                  data:
                    type: array
                    items:
                      type: object
                  table:
                    type: string
                  total_unique:
                    type: integer
                    description: Distinct rows matched before `limit`/`offset`. A query no index can narrow stops scanning once it holds
                      `offset + limit` distinct rows, counting `limit` after it is clamped to 10,000, so a value exactly
                      equal to that sum means "at least this many", not a total; raise `limit` for the true count. Any
                      smaller value is exact, as is every value on an index-backed query.
              example:
                count: 1
                data:
                  - atc: EXAMPLE
                    eff_date: 2026-03-01
                    lata: 656
                    loc_index: EXAMPLE
                    loc_name: DENVER
                    loc_state: CO
                    npa: 303
                    npa_atc: 1
                    nxx: 629
                    os1: EXAMPLE
                    os10: EXAMPLE
                    os11: EXAMPLE
                    os12: EXAMPLE
                    os13: EXAMPLE
                    os14: EXAMPLE
                    os15: EXAMPLE
                    os16: EXAMPLE
                    os17: EXAMPLE
                    os18: EXAMPLE
                    os19: EXAMPLE
                    os2: EXAMPLE
                    os20: EXAMPLE
                    os21: EXAMPLE
                    os22: EXAMPLE
                    os23: EXAMPLE
                    os24: EXAMPLE
                    os25: EXAMPLE
                    os3: EXAMPLE
                    os4: EXAMPLE
                    os5: EXAMPLE
                    os6: EXAMPLE
                    os7: EXAMPLE
                    os8: EXAMPLE
                    os9: EXAMPLE
                    status: EXAMPLE
                table: lerg10
                total_unique: 1
        "400":
          description: Causes include an unknown column in `fields` or as a filter key, `*` combined with other field names, an
            empty filter value, a repeated `fields`/`limit`/`offset`, and a non-numeric `limit`/`offset`. The message
            names the offending key and may carry a `did you mean` hint.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LergErrorResponse"
      security:
        - apiToken: []
  /v1/lerg/lerg11:
    get:
      tags:
        - LERG
      summary: Query lerg11 with exact-match column filters
      description: >-
        `GET /v1/lerg/lerg11?column=value&…`


        Every parameter below except `fields`, `limit` and `offset` is a column of lerg11. Repeat a parameter to match
        any of several values (an IN-list); omit it to leave that column unfiltered. Filters are exact-match and are
        ANDed together.


        A comma inside a filter value is **not** a separator — only `fields` is comma-separated. `?npa=303,720` looks
        for the literal value `303,720`, matches nothing, and returns 200 with an empty `data`. Repeat the key instead:
        `?npa=303&npa=720`.


        This table has no hash index, so every query is a filtered scan; keep `limit` modest.


        This is the same route as `queryTable` with `table_name=lerg11`, spelled out so the columns are nameable. For an
        operator other than equality, or to join to another table, use `complexQuery`.


        Column definitions are paraphrased from the TruOps TRA LERG Routing Guide, General Information, BD-TRA-LERG-GEN
        Issue 2 (2026-08-01), section 3.1.
      operationId: queryLerg11
      parameters:
        - name: fields
          in: query
          description: "Comma-separated projection. Omit it, or pass `*`, for every column. `*` cannot be combined with other
            names. Valid names: status, eff_date, loc_name, loc_state, loc_index, npa_atc, atc, os1, os2, os3, os4, os5,
            os6, os7, os8, os9, os10, os11, os12, os13, os14, os15, os16, os17, os18, os19, os20, os21, os22, os23,
            os24, os25, lata."
          required: false
          schema:
            type: string
          example: status,eff_date,loc_name,loc_state
        - name: limit
          in: query
          description: "Page size, default 100. Clamped to 10,000: a larger value is accepted and silently reduced, never
            rejected, so no `maximum` is declared here. `limit=0` is accepted and returns an empty page. On a query no
            index can narrow this also bounds the work: the scan stops at `offset + limit` distinct rows."
          required: false
          schema:
            type: integer
            minimum: 0
          example: 100
        - name: offset
          in: query
          description: "Rows to skip for pagination, default 0. Not capped, deliberately: a ceiling here would make paging through
            a table impossible. On a query no index can narrow, `offset` counts towards the scan bound of `offset +
            limit` distinct rows, so a deep page costs the rows it skips -- `offset=1500000` reads 1.5M rows whatever
            `limit` says. Filter on an indexed column to page at constant cost."
          required: false
          schema:
            type: integer
            minimum: 0
          example: 0
        - name: status
          in: query
          description: "Status (string). Nullable: rows where this column is null never match a filter on it. Pending activity on
            this record, read together with the effective date: E = the record is being established, M = the record is
            being modified (compare against the preceding current view to see what changes), D = the record is being
            disconnected. Null means the record is current and active as of this LERG issue."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: eff_date
          in: query
          description: "Effective Date (date). Nullable: rows where this column is null never match a filter on it. Date on which
            the activity in `status` takes effect, as YYYY-MM-DD. Null when the record is current. The LERG is a
            planning tool: this date is a forecast, not an activation record."
          required: false
          schema:
            type: array
            items:
              type: string
              format: date
          style: form
          explode: true
          example:
            - 2026-03-01
        - name: loc_name
          in: query
          description: "Location Name (string). Locality this row maps; with `loc_state` and `loc_index` it identifies the
            locality. In current data it is spelled out in full: every value is a LERG 8 LOC full locality name
            (`loc_name_full`, up to 50 characters), not the ten-character abbreviation other files use."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - DENVER
        - name: loc_state
          in: query
          description: Location State (string). Two-letter state, province, or territory of the locality.
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - CO
        - name: loc_index
          in: query
          description: "Location Index (string). Nullable: rows where this column is null never match a filter on it.
            Two-character index that distinguishes two localities of the same name within one state or province. Null
            when the name is unambiguous."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: npa_atc
          in: query
          description: "NPA ATC (integer). Nullable: rows where this column is null never match a filter on it. Area code (NPA) of
            the access tandem code in `atc`; the two together identify the code. In current data it is null exactly when
            `atc` is."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
        - name: atc
          in: query
          description: "Access Tandem Code (string). Nullable: rows where this column is null never match a filter on it. Access
            Tandem Code (ATC) this row maps to: a code of three digits from the 0XX or 1XX range, served as text so its
            leading zero is kept (007, not 7), naming a tandem through which service providers get operator or test
            access. A lone + stands for direct routing to the NPA's designated switch rather than through a numbered
            code. Despite the name, an ATC does not mean a Feature Group B or D access tandem. Null when the row maps no
            code. In current data every `npa_atc` and `atc` pair is also listed in LERG 6 ATC."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: os1
          in: query
          description: "Operating Service 1 (string). Nullable: rows where this column is null never match a filter on it.
            Operator Service code associated with an Access Tandem Code, listed in source-record order. Null when fewer
            codes are listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: os2
          in: query
          description: "Operating Service 2 (string). Nullable: rows where this column is null never match a filter on it.
            Operator Service code associated with an Access Tandem Code, listed in source-record order. Null when fewer
            codes are listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: os3
          in: query
          description: "Operating Service 3 (string). Nullable: rows where this column is null never match a filter on it.
            Operator Service code associated with an Access Tandem Code, listed in source-record order. Null when fewer
            codes are listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: os4
          in: query
          description: "Operating Service 4 (string). Nullable: rows where this column is null never match a filter on it.
            Operator Service code associated with an Access Tandem Code, listed in source-record order. Null when fewer
            codes are listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: os5
          in: query
          description: "Operating Service 5 (string). Nullable: rows where this column is null never match a filter on it.
            Operator Service code associated with an Access Tandem Code, listed in source-record order. Null when fewer
            codes are listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: os6
          in: query
          description: "Operating Service 6 (string). Nullable: rows where this column is null never match a filter on it.
            Operator Service code associated with an Access Tandem Code, listed in source-record order. Null when fewer
            codes are listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: os7
          in: query
          description: "Operating Service 7 (string). Nullable: rows where this column is null never match a filter on it.
            Operator Service code associated with an Access Tandem Code, listed in source-record order. Null when fewer
            codes are listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: os8
          in: query
          description: "Operating Service 8 (string). Nullable: rows where this column is null never match a filter on it.
            Operator Service code associated with an Access Tandem Code, listed in source-record order. Null when fewer
            codes are listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: os9
          in: query
          description: "Operating Service 9 (string). Nullable: rows where this column is null never match a filter on it.
            Operator Service code associated with an Access Tandem Code, listed in source-record order. Null when fewer
            codes are listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: os10
          in: query
          description: "Operating Service 10 (string). Nullable: rows where this column is null never match a filter on it.
            Operator Service code associated with an Access Tandem Code, listed in source-record order. Null when fewer
            codes are listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: os11
          in: query
          description: "Operating Service 11 (string). Nullable: rows where this column is null never match a filter on it.
            Operator Service code associated with an Access Tandem Code, listed in source-record order. Null when fewer
            codes are listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: os12
          in: query
          description: "Operating Service 12 (string). Nullable: rows where this column is null never match a filter on it.
            Operator Service code associated with an Access Tandem Code, listed in source-record order. Null when fewer
            codes are listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: os13
          in: query
          description: "Operating Service 13 (string). Nullable: rows where this column is null never match a filter on it.
            Operator Service code associated with an Access Tandem Code, listed in source-record order. Null when fewer
            codes are listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: os14
          in: query
          description: "Operating Service 14 (string). Nullable: rows where this column is null never match a filter on it.
            Operator Service code associated with an Access Tandem Code, listed in source-record order. Null when fewer
            codes are listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: os15
          in: query
          description: "Operating Service 15 (string). Nullable: rows where this column is null never match a filter on it.
            Operator Service code associated with an Access Tandem Code, listed in source-record order. Null when fewer
            codes are listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: os16
          in: query
          description: "Operating Service 16 (string). Nullable: rows where this column is null never match a filter on it.
            Operator Service code associated with an Access Tandem Code, listed in source-record order. Null when fewer
            codes are listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: os17
          in: query
          description: "Operating Service 17 (string). Nullable: rows where this column is null never match a filter on it.
            Operator Service code associated with an Access Tandem Code, listed in source-record order. Null when fewer
            codes are listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: os18
          in: query
          description: "Operating Service 18 (string). Nullable: rows where this column is null never match a filter on it.
            Operator Service code associated with an Access Tandem Code, listed in source-record order. Null when fewer
            codes are listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: os19
          in: query
          description: "Operating Service 19 (string). Nullable: rows where this column is null never match a filter on it.
            Operator Service code associated with an Access Tandem Code, listed in source-record order. Null when fewer
            codes are listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: os20
          in: query
          description: "Operating Service 20 (string). Nullable: rows where this column is null never match a filter on it.
            Operator Service code associated with an Access Tandem Code, listed in source-record order. Null when fewer
            codes are listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: os21
          in: query
          description: "Operating Service 21 (string). Nullable: rows where this column is null never match a filter on it.
            Operator Service code associated with an Access Tandem Code, listed in source-record order. Null when fewer
            codes are listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: os22
          in: query
          description: "Operating Service 22 (string). Nullable: rows where this column is null never match a filter on it.
            Operator Service code associated with an Access Tandem Code, listed in source-record order. Null when fewer
            codes are listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: os23
          in: query
          description: "Operating Service 23 (string). Nullable: rows where this column is null never match a filter on it.
            Operator Service code associated with an Access Tandem Code, listed in source-record order. Null when fewer
            codes are listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: os24
          in: query
          description: "Operating Service 24 (string). Nullable: rows where this column is null never match a filter on it.
            Operator Service code associated with an Access Tandem Code, listed in source-record order. Null when fewer
            codes are listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: os25
          in: query
          description: "Operating Service 25 (string). Nullable: rows where this column is null never match a filter on it.
            Operator Service code associated with an Access Tandem Code, listed in source-record order. Null when fewer
            codes are listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: lata
          in: query
          description: LATA (integer). Local Access and Transport Area, the numeric code of the geographic area this record
            belongs to. 999 and 99999 mark non-geographic and reserved assignments and are real values, not nulls.
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 656
      responses:
        "200":
          description: Envelope with `table`, `count`, `total_unique` and `data[]`, one object per row projected to `fields`.
          content:
            application/json:
              schema:
                type: object
                properties:
                  count:
                    type: integer
                  data:
                    type: array
                    items:
                      type: object
                  table:
                    type: string
                  total_unique:
                    type: integer
                    description: Distinct rows matched before `limit`/`offset`. A query no index can narrow stops scanning once it holds
                      `offset + limit` distinct rows, counting `limit` after it is clamped to 10,000, so a value exactly
                      equal to that sum means "at least this many", not a total; raise `limit` for the true count. Any
                      smaller value is exact, as is every value on an index-backed query.
              example:
                count: 1
                data:
                  - atc: EXAMPLE
                    eff_date: 2026-03-01
                    lata: 656
                    loc_index: EXAMPLE
                    loc_name: DENVER
                    loc_state: CO
                    npa_atc: 1
                    os1: EXAMPLE
                    os10: EXAMPLE
                    os11: EXAMPLE
                    os12: EXAMPLE
                    os13: EXAMPLE
                    os14: EXAMPLE
                    os15: EXAMPLE
                    os16: EXAMPLE
                    os17: EXAMPLE
                    os18: EXAMPLE
                    os19: EXAMPLE
                    os2: EXAMPLE
                    os20: EXAMPLE
                    os21: EXAMPLE
                    os22: EXAMPLE
                    os23: EXAMPLE
                    os24: EXAMPLE
                    os25: EXAMPLE
                    os3: EXAMPLE
                    os4: EXAMPLE
                    os5: EXAMPLE
                    os6: EXAMPLE
                    os7: EXAMPLE
                    os8: EXAMPLE
                    os9: EXAMPLE
                    status: EXAMPLE
                table: lerg11
                total_unique: 1
        "400":
          description: Causes include an unknown column in `fields` or as a filter key, `*` combined with other field names, an
            empty filter value, a repeated `fields`/`limit`/`offset`, and a non-numeric `limit`/`offset`. The message
            names the offending key and may carry a `did you mean` hint.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LergErrorResponse"
      security:
        - apiToken: []
  /v1/lerg/lerg12:
    get:
      tags:
        - LERG
      summary: Query lerg12 with exact-match column filters
      description: >-
        `GET /v1/lerg/lerg12?column=value&…`


        Every parameter below except `fields`, `limit` and `offset` is a column of lerg12. Repeat a parameter to match
        any of several values (an IN-list); omit it to leave that column unfiltered. Filters are exact-match and are
        ANDed together.


        A comma inside a filter value is **not** a separator — only `fields` is comma-separated. `?npa=303,720` looks
        for the literal value `303,720`, matches nothing, and returns 200 with an empty `data`. Repeat the key instead:
        `?npa=303&npa=720`.


        This table has no hash index, so every query is a filtered scan; keep `limit` modest.


        This is the same route as `queryTable` with `table_name=lerg12`, spelled out so the columns are nameable. For an
        operator other than equality, or to join to another table, use `complexQuery`.


        Column definitions are paraphrased from the TruOps TRA LERG Routing Guide, General Information, BD-TRA-LERG-GEN
        Issue 2 (2026-08-01), section 3.1.
      operationId: queryLerg12
      parameters:
        - name: fields
          in: query
          description: "Comma-separated projection. Omit it, or pass `*`, for every column. `*` cannot be combined with other
            names. Valid names: lata, lata_name, status, eff_date, lrn, filler1, switch, aocn, filler2, ocn, rc_abbre,
            filler5, rc_state, filler3, sha_indicator, filler4."
          required: false
          schema:
            type: string
          example: lata,lata_name,status,eff_date
        - name: limit
          in: query
          description: "Page size, default 100. Clamped to 10,000: a larger value is accepted and silently reduced, never
            rejected, so no `maximum` is declared here. `limit=0` is accepted and returns an empty page. On a query no
            index can narrow this also bounds the work: the scan stops at `offset + limit` distinct rows."
          required: false
          schema:
            type: integer
            minimum: 0
          example: 100
        - name: offset
          in: query
          description: "Rows to skip for pagination, default 0. Not capped, deliberately: a ceiling here would make paging through
            a table impossible. On a query no index can narrow, `offset` counts towards the scan bound of `offset +
            limit` distinct rows, so a deep page costs the rows it skips -- `offset=1500000` reads 1.5M rows whatever
            `limit` says. Filter on an indexed column to page at constant cost."
          required: false
          schema:
            type: integer
            minimum: 0
          example: 0
        - name: lata
          in: query
          description: LATA (integer). Local Access and Transport Area, the numeric code of the geographic area this record
            belongs to. 999 and 99999 mark non-geographic and reserved assignments and are real values, not nulls.
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 656
        - name: lata_name
          in: query
          description: LATA Name (string). Name of the LATA, or of the LATA-like area for non-LATA regions.
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - DENVER
        - name: status
          in: query
          description: "Status (string). Nullable: rows where this column is null never match a filter on it. Pending activity on
            this record, read together with the effective date: E = the record is being established, M = the record is
            being modified (compare against the preceding current view to see what changes), D = the record is being
            disconnected. Null means the record is current and active as of this LERG issue."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: eff_date
          in: query
          description: "Effective Date (date). Nullable: rows where this column is null never match a filter on it. Date on which
            the activity in `status` takes effect, as YYYY-MM-DD. Null when the record is current. The LERG is a
            planning tool: this date is a forecast, not an activation record."
          required: false
          schema:
            type: array
            items:
              type: string
              format: date
          style: form
          explode: true
          example:
            - 2026-03-01
        - name: lrn
          in: query
          description: "Location Routing Number (string). Location Routing Number: a ten-digit number, taken from one of the
            service provider's own NPA NXXs, that the provider designates for routing calls to ported telephone numbers.
            Call setup and routing treat it much like a telephone number. Served as text."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: filler1
          in: query
          description: "Filler 1 (string). Nullable: rows where this column is null never match a filter on it. Unused filler
            column from the LERG layout; always null."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: switch
          in: query
          description: Switch (string). Eleven-character identifier, normally the CLLI code, of the switch or point of interface
            (POI) this LRN is associated with; LERG 7 describes it. In current data every value has a LERG 7 record,
            though on a few rows whose `status` is M that record is itself still pending (status E).
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - DNVRCOMADS0
        - name: aocn
          in: query
          description: "AOCN (string). Nullable: rows where this column is null never match a filter on it. Administrative
            Operating Company Number: the OCN of the company that maintains this record in the BIRRDS database. A
            company that administers its own records usually puts its own OCN here; a third-party administrator has a
            separate value. Since 2018 each new administrator gets a distinct OCN from TRA for this role, and since 2020
            those values begin with G."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - "6529"
        - name: filler2
          in: query
          description: "Filler 2 (string). Nullable: rows where this column is null never match a filter on it. Unused filler
            column from the LERG layout; always null."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: ocn
          in: query
          description: "Operating Company Number (string). Operating Company Number: the four-character alphanumeric code TRA uses
            to identify the company that holds this record's numbering resource, switch, or other assignment. NECA
            Company Codes are a subset; TRA assigns the rest. Names are in LERG 1. On an LRN record it is the OCN
            associated with the LRN's NPA NXX, which can differ from the switch owner's OCN in LERG 7."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - "6529"
        - name: rc_abbre
          in: query
          description: "Rate Center Abbreviation (string). Nullable: rows where this column is null never match a filter on it.
            Abbreviated name of the Rate Center, the geographic area whose midpoint is used for mileage-based rating.
            XXXXXXXXXX on codes that have no Rate Center. In current data it is null on about a quarter of LRN rows, and
            every value, read with `rc_state`, names a LERG 8 Rate Center."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: filler5
          in: query
          description: "Filler 5 (string). Nullable: rows where this column is null never match a filter on it. Unused filler
            column from the LERG layout; always null."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: rc_state
          in: query
          description: "Rate Center State (string). Nullable: rows where this column is null never match a filter on it.
            Two-letter code of the state, province or territory of the Rate Center in `rc_abbre`, in the LERG's own
            coding (PQ for Quebec, for example). In current data it is null whenever `rc_abbre` is, apart from a few
            rows."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - CO
        - name: filler3
          in: query
          description: "Filler 3 (string). Nullable: rows where this column is null never match a filter on it. Unused filler
            column from the LERG layout; always null."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: sha_indicator
          in: query
          description: SHA Indicator (string). Switch Homing Arrangement indicator, a two-digit code that together with `switch`
            selects which homing arrangement in LERG 7 SHA applies. 00 is the default arrangement.
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: filler4
          in: query
          description: "Filler 4 (string). Nullable: rows where this column is null never match a filter on it. Unused filler
            column from the LERG layout; always null."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
      responses:
        "200":
          description: Envelope with `table`, `count`, `total_unique` and `data[]`, one object per row projected to `fields`.
          content:
            application/json:
              schema:
                type: object
                properties:
                  count:
                    type: integer
                  data:
                    type: array
                    items:
                      type: object
                  table:
                    type: string
                  total_unique:
                    type: integer
                    description: Distinct rows matched before `limit`/`offset`. A query no index can narrow stops scanning once it holds
                      `offset + limit` distinct rows, counting `limit` after it is clamped to 10,000, so a value exactly
                      equal to that sum means "at least this many", not a total; raise `limit` for the true count. Any
                      smaller value is exact, as is every value on an index-backed query.
              example:
                count: 1
                data:
                  - aocn: "6529"
                    eff_date: 2026-03-01
                    filler1: EXAMPLE
                    filler2: EXAMPLE
                    filler3: EXAMPLE
                    filler4: EXAMPLE
                    filler5: EXAMPLE
                    lata: 656
                    lata_name: DENVER
                    lrn: EXAMPLE
                    ocn: "6529"
                    rc_abbre: EXAMPLE
                    rc_state: CO
                    sha_indicator: EXAMPLE
                    status: EXAMPLE
                    switch: DNVRCOMADS0
                table: lerg12
                total_unique: 1
        "400":
          description: Causes include an unknown column in `fields` or as a filter key, `*` combined with other field names, an
            empty filter value, a repeated `fields`/`limit`/`offset`, and a non-numeric `limit`/`offset`. The message
            names the offending key and may carry a `did you mean` hint.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LergErrorResponse"
      security:
        - apiToken: []
  /v1/lerg/lerg12_ins:
    get:
      tags:
        - LERG
      summary: Query lerg12_ins with exact-match column filters
      description: >-
        `GET /v1/lerg/lerg12_ins?column=value&…`


        Every parameter below except `fields`, `limit` and `offset` is a column of lerg12_ins. Repeat a parameter to
        match any of several values (an IN-list); omit it to leave that column unfiltered. Filters are exact-match and
        are ANDed together.


        A comma inside a filter value is **not** a separator — only `fields` is comma-separated. `?npa=303,720` looks
        for the literal value `303,720`, matches nothing, and returns 200 with an empty `data`. Repeat the key instead:
        `?npa=303&npa=720`.


        This table has no hash index, so every query is a filtered scan; keep `limit` modest.


        This is the same route as `queryTable` with `table_name=lerg12_ins`, spelled out so the columns are nameable.
        For an operator other than equality, or to join to another table, use `complexQuery`.


        Column definitions are paraphrased from the TruOps TRA LERG Routing Guide, General Information, BD-TRA-LERG-GEN
        Issue 2 (2026-08-01), section 3.1.
      operationId: queryLerg12Ins
      parameters:
        - name: fields
          in: query
          description: "Comma-separated projection. Omit it, or pass `*`, for every column. `*` cannot be combined with other
            names. Valid names: activity_code, activity_date, version, filler1, lata, lata_name, status, eff_date, lrn,
            filler2, switch, aocn, filler3, ocn, rc_abbre, filler6, rc_state, filler4, sha_indicator, filler5."
          required: false
          schema:
            type: string
          example: activity_code,activity_date,version,filler1
        - name: limit
          in: query
          description: "Page size, default 100. Clamped to 10,000: a larger value is accepted and silently reduced, never
            rejected, so no `maximum` is declared here. `limit=0` is accepted and returns an empty page. On a query no
            index can narrow this also bounds the work: the scan stops at `offset + limit` distinct rows."
          required: false
          schema:
            type: integer
            minimum: 0
          example: 100
        - name: offset
          in: query
          description: "Rows to skip for pagination, default 0. Not capped, deliberately: a ceiling here would make paging through
            a table impossible. On a query no index can narrow, `offset` counts towards the scan bound of `offset +
            limit` distinct rows, so a deep page costs the rows it skips -- `offset=1500000` reads 1.5M rows whatever
            `limit` says. Filter on an indexed column to page at constant cost."
          required: false
          schema:
            type: integer
            minimum: 0
          example: 0
        - name: activity_code
          in: query
          description: "Activity Code (string). What happened to this record in the month-to-month insert file: A = added, R =
            removed, U = updated. Interpret alongside `status` and `eff_date`."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: activity_date
          in: query
          description: Activity Date (date). Date the insert-file activity was performed in BIRRDS, as YYYY-MM-DD. Usually in the
            prior month.
          required: false
          schema:
            type: array
            items:
              type: string
              format: date
          style: form
          explode: true
          example:
            - 2026-03-01
        - name: version
          in: query
          description: Version (string). Version letter of this insert-file transaction. Normally A; a later letter means the same
            activity was reissued on the same activity date.
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: filler1
          in: query
          description: "Filler 1 (string). Nullable: rows where this column is null never match a filter on it. Unused filler
            column from the LERG layout; always null."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: lata
          in: query
          description: LATA (integer). Local Access and Transport Area, the numeric code of the geographic area this record
            belongs to. 999 and 99999 mark non-geographic and reserved assignments and are real values, not nulls.
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 656
        - name: lata_name
          in: query
          description: LATA Name (string). Name of the LATA, or of the LATA-like area for non-LATA regions.
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - DENVER
        - name: status
          in: query
          description: "Status (string). Kind of change this insert-file line reports, taking effect on `eff_date`: E = the record
            is being established, M = some of its values change (compare it field by field with the record's earlier
            view), D = the record is being disconnected. Always present on insert-file lines."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: eff_date
          in: query
          description: Effective Date (date). Date the change on this insert-file line takes effect, as YYYY-MM-DD. It can fall in
            the month since the previous LERG issue closed (the main table then already reflects the change as current)
            or in the future. For rare back-dated updates it equals `activity_date` and need not match the date held in
            BIRRDS.
          required: false
          schema:
            type: array
            items:
              type: string
              format: date
          style: form
          explode: true
          example:
            - 2026-03-01
        - name: lrn
          in: query
          description: "Location Routing Number (string). Location Routing Number: a ten-digit number, taken from one of the
            service provider's own NPA NXXs, that the provider designates for routing calls to ported telephone numbers.
            Call setup and routing treat it much like a telephone number. Served as text."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: filler2
          in: query
          description: "Filler 2 (string). Nullable: rows where this column is null never match a filter on it. Unused filler
            column from the LERG layout; always null."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: switch
          in: query
          description: Switch (string). Eleven-character identifier, normally the CLLI code, of the switch or point of interface
            (POI) this LRN is associated with; LERG 7 describes it. In current data every value has a LERG 7 record,
            though on a few rows whose `status` is M that record is itself still pending (status E).
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - DNVRCOMADS0
        - name: aocn
          in: query
          description: "AOCN (string). Administrative Operating Company Number: the OCN of the company that maintains this record
            in the BIRRDS database. A company that administers its own records usually puts its own OCN here; a
            third-party administrator has a separate value. Since 2018 each new administrator gets a distinct OCN from
            TRA for this role, and since 2020 those values begin with G."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - "6529"
        - name: filler3
          in: query
          description: "Filler 3 (string). Nullable: rows where this column is null never match a filter on it. Unused filler
            column from the LERG layout; always null."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: ocn
          in: query
          description: "Operating Company Number (string). Operating Company Number: the four-character alphanumeric code TRA uses
            to identify the company that holds this record's numbering resource, switch, or other assignment. NECA
            Company Codes are a subset; TRA assigns the rest. Names are in LERG 1. On an LRN record it is the OCN
            associated with the LRN's NPA NXX, which can differ from the switch owner's OCN in LERG 7."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - "6529"
        - name: rc_abbre
          in: query
          description: "Rate Center Abbreviation (string). Nullable: rows where this column is null never match a filter on it.
            Abbreviated name of the Rate Center, the geographic area whose midpoint is used for mileage-based rating.
            XXXXXXXXXX on codes that have no Rate Center. In current data it is null on about a quarter of LRN rows, and
            every value, read with `rc_state`, names a LERG 8 Rate Center."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: filler6
          in: query
          description: "Filler 6 (string). Nullable: rows where this column is null never match a filter on it. Unused filler
            column from the LERG layout; always null."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: rc_state
          in: query
          description: "Rate Center State (string). Nullable: rows where this column is null never match a filter on it.
            Two-letter code of the state, province or territory of the Rate Center in `rc_abbre`, in the LERG's own
            coding (PQ for Quebec, for example). In current data it is null whenever `rc_abbre` is, apart from a few
            rows."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - CO
        - name: filler4
          in: query
          description: "Filler 4 (string). Nullable: rows where this column is null never match a filter on it. Unused filler
            column from the LERG layout; always null."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: sha_indicator
          in: query
          description: SHA Indicator (string). Switch Homing Arrangement indicator, a two-digit code that together with `switch`
            selects which homing arrangement in LERG 7 SHA applies. 00 is the default arrangement.
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: filler5
          in: query
          description: "Filler 5 (string). Nullable: rows where this column is null never match a filter on it. Unused filler
            column from the LERG layout; always null."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
      responses:
        "200":
          description: Envelope with `table`, `count`, `total_unique` and `data[]`, one object per row projected to `fields`.
          content:
            application/json:
              schema:
                type: object
                properties:
                  count:
                    type: integer
                  data:
                    type: array
                    items:
                      type: object
                  table:
                    type: string
                  total_unique:
                    type: integer
                    description: Distinct rows matched before `limit`/`offset`. A query no index can narrow stops scanning once it holds
                      `offset + limit` distinct rows, counting `limit` after it is clamped to 10,000, so a value exactly
                      equal to that sum means "at least this many", not a total; raise `limit` for the true count. Any
                      smaller value is exact, as is every value on an index-backed query.
              example:
                count: 1
                data:
                  - activity_code: EXAMPLE
                    activity_date: 2026-03-01
                    aocn: "6529"
                    eff_date: 2026-03-01
                    filler1: EXAMPLE
                    filler2: EXAMPLE
                    filler3: EXAMPLE
                    filler4: EXAMPLE
                    filler5: EXAMPLE
                    filler6: EXAMPLE
                    lata: 656
                    lata_name: DENVER
                    lrn: EXAMPLE
                    ocn: "6529"
                    rc_abbre: EXAMPLE
                    rc_state: CO
                    sha_indicator: EXAMPLE
                    status: EXAMPLE
                    switch: DNVRCOMADS0
                    version: EXAMPLE
                table: lerg12_ins
                total_unique: 1
        "400":
          description: Causes include an unknown column in `fields` or as a filter key, `*` combined with other field names, an
            empty filter value, a repeated `fields`/`limit`/`offset`, and a non-numeric `limit`/`offset`. The message
            names the offending key and may carry a `did you mean` hint.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LergErrorResponse"
      security:
        - apiToken: []
  /v1/lerg/lerg16:
    get:
      tags:
        - LERG
      summary: Query lerg16 with exact-match column filters
      description: >-
        `GET /v1/lerg/lerg16?column=value&…`


        Every parameter below except `fields`, `limit` and `offset` is a column of lerg16. Repeat a parameter to match
        any of several values (an IN-list); omit it to leave that column unfiltered. Filters are exact-match and are
        ANDed together.


        A comma inside a filter value is **not** a separator — only `fields` is comma-separated. `?npa=303,720` looks
        for the literal value `303,720`, matches nothing, and returns 200 with an empty `data`. Repeat the key instead:
        `?npa=303&npa=720`.


        This table has no hash index, so every query is a filtered scan; keep `limit` modest.


        This is the same route as `queryTable` with `table_name=lerg16`, spelled out so the columns are nameable. For an
        operator other than equality, or to join to another table, use `complexQuery`.


        Column definitions are paraphrased from the TruOps TRA LERG Routing Guide, General Information, BD-TRA-LERG-GEN
        Issue 2 (2026-08-01), section 3.1.
      operationId: queryLerg16
      parameters:
        - name: fields
          in: query
          description: "Comma-separated projection. Omit it, or pass `*`, for every column. `*` cannot be combined with other
            names. Valid names: lrn, status, eff_date, ip_capable_ocn, ocn, aocn, fqdn_ocn, fqdn."
          required: false
          schema:
            type: string
          example: lrn,status,eff_date,ip_capable_ocn
        - name: limit
          in: query
          description: "Page size, default 100. Clamped to 10,000: a larger value is accepted and silently reduced, never
            rejected, so no `maximum` is declared here. `limit=0` is accepted and returns an empty page. On a query no
            index can narrow this also bounds the work: the scan stops at `offset + limit` distinct rows."
          required: false
          schema:
            type: integer
            minimum: 0
          example: 100
        - name: offset
          in: query
          description: "Rows to skip for pagination, default 0. Not capped, deliberately: a ceiling here would make paging through
            a table impossible. On a query no index can narrow, `offset` counts towards the scan bound of `offset +
            limit` distinct rows, so a deep page costs the rows it skips -- `offset=1500000` reads 1.5M rows whatever
            `limit` says. Filter on an indexed column to page at constant cost."
          required: false
          schema:
            type: integer
            minimum: 0
          example: 0
        - name: lrn
          in: query
          description: "Location Routing Number (string). Location Routing Number: a ten-digit number, taken from one of the
            service provider's own NPA NXXs, that the provider designates for routing calls to ported telephone numbers.
            Call setup and routing treat it much like a telephone number. Served as text. Every LRN in this table also
            appears in LERG 12."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: status
          in: query
          description: "Status (string). Nullable: rows where this column is null never match a filter on it. Pending activity on
            this record, read together with the effective date: E = the record is being established, M = the record is
            being modified (compare against the preceding current view to see what changes), D = the record is being
            disconnected. Null means the record is current and active as of this LERG issue. In current data most M rows
            have no current-view row in this table to compare against; LERG 12 holds the LRN's current view."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: eff_date
          in: query
          description: "Effective Date (date). Nullable: rows where this column is null never match a filter on it. Date on which
            the activity in `status` takes effect, as YYYY-MM-DD. Null when the record is current. The LERG is a
            planning tool: this date is a forecast, not an activation record."
          required: false
          schema:
            type: array
            items:
              type: string
              format: date
          style: form
          explode: true
          example:
            - 2026-03-01
        - name: ip_capable_ocn
          in: query
          description: "IP Capable OCN (string). Nullable: rows where this column is null never match a filter on it. OCN of the
            company that IP traffic for this LRN can be sent to, as chosen by the LRN's code holder (`ocn`). An OCN
            code, not a yes/no flag, whatever the name suggests, and it may be the code holder's own OCN. Naming one
            does not rule out delivering calls over TDM. In current data it matches `ocn` on most rows and is null on a
            few."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - "6529"
        - name: ocn
          in: query
          description: "OCN (string). Operating Company Number: the four-character alphanumeric code TRA uses to identify the
            company that holds this record's numbering resource, switch, or other assignment. NECA Company Codes are a
            subset; TRA assigns the rest. Names are in LERG 1. Here it is the LRN's code holder, the party that chooses
            `ip_capable_ocn`. In current data it always equals the `ocn` LERG 12 gives the same LRN with the same
            `status`."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - "6529"
        - name: aocn
          in: query
          description: "AOCN (string). Administrative Operating Company Number: the OCN of the company that maintains this record
            in the BIRRDS database. A company that administers its own records usually puts its own OCN here; a
            third-party administrator has a separate value. Since 2018 each new administrator gets a distinct OCN from
            TRA for this role, and since 2020 those values begin with G."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - "6529"
        - name: fqdn_ocn
          in: query
          description: "FQDN OCN (string). Nullable: rows where this column is null never match a filter on it. OCN of the company
            the FQDN in `fqdn` belongs to. Null when no FQDN is published. In current data it is set exactly where
            `fqdn` is, and always equals the row's `ocn`."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - "6529"
        - name: fqdn
          in: query
          description: "FQDN (string). Nullable: rows where this column is null never match a filter on it. Fully Qualified Domain
            Name for reaching these numbers over IP: the host part of a URI, published by the code holder if it chooses.
            It resolves to the IP addresses on a route list the IP interconnection partners have already exchanged.
            Optional, and calls can still be delivered over TDM. Null when none is published. Here it covers the ported
            numbers that route on this LRN."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
      responses:
        "200":
          description: Envelope with `table`, `count`, `total_unique` and `data[]`, one object per row projected to `fields`.
          content:
            application/json:
              schema:
                type: object
                properties:
                  count:
                    type: integer
                  data:
                    type: array
                    items:
                      type: object
                  table:
                    type: string
                  total_unique:
                    type: integer
                    description: Distinct rows matched before `limit`/`offset`. A query no index can narrow stops scanning once it holds
                      `offset + limit` distinct rows, counting `limit` after it is clamped to 10,000, so a value exactly
                      equal to that sum means "at least this many", not a total; raise `limit` for the true count. Any
                      smaller value is exact, as is every value on an index-backed query.
              example:
                count: 1
                data:
                  - aocn: "6529"
                    eff_date: 2026-03-01
                    fqdn: EXAMPLE
                    fqdn_ocn: "6529"
                    ip_capable_ocn: "6529"
                    lrn: EXAMPLE
                    ocn: "6529"
                    status: EXAMPLE
                table: lerg16
                total_unique: 1
        "400":
          description: Causes include an unknown column in `fields` or as a filter key, `*` combined with other field names, an
            empty filter value, a repeated `fields`/`limit`/`offset`, and a non-numeric `limit`/`offset`. The message
            names the offending key and may carry a `did you mean` hint.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LergErrorResponse"
      security:
        - apiToken: []
  /v1/lerg/lerg17:
    get:
      tags:
        - LERG
      summary: Query lerg17 with exact-match column filters
      description: >-
        `GET /v1/lerg/lerg17?column=value&…`


        Every parameter below except `fields`, `limit` and `offset` is a column of lerg17. Repeat a parameter to match
        any of several values (an IN-list); omit it to leave that column unfiltered. Filters are exact-match and are
        ANDed together.


        A comma inside a filter value is **not** a separator — only `fields` is comma-separated. `?npa=303,720` looks
        for the literal value `303,720`, matches nothing, and returns 200 with an empty `data`. Repeat the key instead:
        `?npa=303&npa=720`.


        This table has no hash index, so every query is a filtered scan; keep `limit` modest.


        This is the same route as `queryTable` with `table_name=lerg17`, spelled out so the columns are nameable. For an
        operator other than equality, or to join to another table, use `complexQuery`.


        Column definitions are paraphrased from the TruOps TRA LERG Routing Guide, General Information, BD-TRA-LERG-GEN
        Issue 2 (2026-08-01), section 3.1.
      operationId: queryLerg17
      parameters:
        - name: fields
          in: query
          description: "Comma-separated projection. Omit it, or pass `*`, for every column. `*` cannot be combined with other
            names. Valid names: npa, nxx, block, status, eff_date, ip_capable_nxx, ocn, switch, aocn, fqdn_ocn, fqdn."
          required: false
          schema:
            type: string
          example: npa,nxx,block,status
        - name: limit
          in: query
          description: "Page size, default 100. Clamped to 10,000: a larger value is accepted and silently reduced, never
            rejected, so no `maximum` is declared here. `limit=0` is accepted and returns an empty page. On a query no
            index can narrow this also bounds the work: the scan stops at `offset + limit` distinct rows."
          required: false
          schema:
            type: integer
            minimum: 0
          example: 100
        - name: offset
          in: query
          description: "Rows to skip for pagination, default 0. Not capped, deliberately: a ceiling here would make paging through
            a table impossible. On a query no index can narrow, `offset` counts towards the scan bound of `offset +
            limit` distinct rows, so a deep page costs the rows it skips -- `offset=1500000` reads 1.5M rows whatever
            `limit` says. Filter on an indexed column to page at constant cost."
          required: false
          schema:
            type: integer
            minimum: 0
          example: 0
        - name: npa
          in: query
          description: NPA (integer). Numbering Plan Area, the three-digit area code.
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 303
        - name: nxx
          in: query
          description: "NXX (string). Central office code, the three digits following the area code, served as text because it is
            a code, not a number. 0XX and 1XX values are not ordinary NXXs: they carry access tandem codes (listed with
            their operator service codes in LERG 6 ATC) or local plant-test uses, and are not administered nationally.
            On access tandem records the leading zero is part of the code (007 is not 7), and a lone + stands in for a
            code when calls route straight to the named switch, so the value is not always digits."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - "629"
        - name: block
          in: query
          description: Block (string). Thousands-block identifier. A means the whole NPA NXX as assigned to the code holder; 0
            through 9 identify a pooled thousands block (for example 3 covers line numbers 3000-3999) assigned to a
            block holder. Not all of 0-9 need exist; only assigned blocks appear.
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: status
          in: query
          description: "Status (string). Nullable: rows where this column is null never match a filter on it. Pending activity on
            this record, read together with the effective date: E = the record is being established, M = the record is
            being modified (compare against the preceding current view to see what changes), D = the record is being
            disconnected. Null means the record is current and active as of this LERG issue."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: eff_date
          in: query
          description: "Effective Date (date). Nullable: rows where this column is null never match a filter on it. Date on which
            the activity in `status` takes effect, as YYYY-MM-DD. Null when the record is current. The LERG is a
            planning tool: this date is a forecast, not an activation record."
          required: false
          schema:
            type: array
            items:
              type: string
              format: date
          style: form
          explode: true
          example:
            - 2026-03-01
        - name: ip_capable_nxx
          in: query
          description: IP Capable NXX (boolean). True when the code holder or block holder has declared that this code or block
            can be routed over IP. TDM termination remains possible. The declaration covers the code's or block's
            non-ported numbers, which route by default; ported numbers are handled through their LRN in LERG 16. In
            current data false on a small share of rows.
          required: false
          schema:
            type: array
            items:
              type: boolean
          style: form
          explode: true
          example:
            - true
        - name: ocn
          in: query
          description: "OCN (string). Operating Company Number: the four-character alphanumeric code TRA uses to identify the
            company that holds this record's numbering resource, switch, or other assignment. NECA Company Codes are a
            subset; TRA assigns the rest. Names are in LERG 1. Here it is the code holder (block A) or block holder
            (blocks 0-9), the party whose declaration `ip_capable_nxx` records."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - "6529"
        - name: switch
          in: query
          description: Switch (string). Eleven-character identifier, normally a CLLI code, of the switch or point of interface
            serving this code or block. The glossary lists cases that are not CLLIs; in current data this table has
            SWCHxxUNKNO on most Caribbean and Bermuda codes (xx names the country or territory) and ASGN-prefixed
            assignment values on non-geographic 5XX and 9YY codes.
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - DNVRCOMADS0
        - name: aocn
          in: query
          description: "AOCN (string). Administrative Operating Company Number: the OCN of the company that maintains this record
            in the BIRRDS database. A company that administers its own records usually puts its own OCN here; a
            third-party administrator has a separate value. Since 2018 each new administrator gets a distinct OCN from
            TRA for this role, and since 2020 those values begin with G."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - "6529"
        - name: fqdn_ocn
          in: query
          description: "FQDN OCN (string). Nullable: rows where this column is null never match a filter on it. OCN of the company
            the FQDN in `fqdn` belongs to. Null when no FQDN is published. In current data it is set exactly where
            `fqdn` is, and always equals the row's `ocn`."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - "6529"
        - name: fqdn
          in: query
          description: "FQDN (string). Nullable: rows where this column is null never match a filter on it. Fully Qualified Domain
            Name for reaching these numbers over IP: the host part of a URI, published by the code holder if it chooses.
            It resolves to the IP addresses on a route list the IP interconnection partners have already exchanged.
            Optional, and calls can still be delivered over TDM. Null when none is published. Here it covers the code's
            or block's numbers that have not been ported."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
      responses:
        "200":
          description: Envelope with `table`, `count`, `total_unique` and `data[]`, one object per row projected to `fields`.
          content:
            application/json:
              schema:
                type: object
                properties:
                  count:
                    type: integer
                  data:
                    type: array
                    items:
                      type: object
                  table:
                    type: string
                  total_unique:
                    type: integer
                    description: Distinct rows matched before `limit`/`offset`. A query no index can narrow stops scanning once it holds
                      `offset + limit` distinct rows, counting `limit` after it is clamped to 10,000, so a value exactly
                      equal to that sum means "at least this many", not a total; raise `limit` for the true count. Any
                      smaller value is exact, as is every value on an index-backed query.
              example:
                count: 1
                data:
                  - aocn: "6529"
                    block: EXAMPLE
                    eff_date: 2026-03-01
                    fqdn: EXAMPLE
                    fqdn_ocn: "6529"
                    ip_capable_nxx: true
                    npa: 303
                    nxx: "629"
                    ocn: "6529"
                    status: EXAMPLE
                    switch: DNVRCOMADS0
                table: lerg17
                total_unique: 1
        "400":
          description: Causes include an unknown column in `fields` or as a filter key, `*` combined with other field names, an
            empty filter value, a repeated `fields`/`limit`/`offset`, and a non-numeric `limit`/`offset`. The message
            names the offending key and may carry a `did you mean` hint.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LergErrorResponse"
      security:
        - apiToken: []
  /v1/lerg/lerg_1:
    get:
      tags:
        - LERG
      summary: Query lerg_1 with exact-match column filters
      description: >-
        `GET /v1/lerg/lerg_1?column=value&…`


        Every parameter below except `fields`, `limit` and `offset` is a column of lerg_1. Repeat a parameter to match
        any of several values (an IN-list); omit it to leave that column unfiltered. Filters are exact-match and are
        ANDed together.


        A comma inside a filter value is **not** a separator — only `fields` is comma-separated. `?npa=303,720` looks
        for the literal value `303,720`, matches nothing, and returns 200 with an empty `data`. Repeat the key instead:
        `?npa=303&npa=720`.


        Indexed columns, fastest when one is present: ocn_num.


        This is the same route as `queryTable` with `table_name=lerg_1`, spelled out so the columns are nameable. For an
        operator other than equality, or to join to another table, use `complexQuery`.


        Column definitions are paraphrased from the TruOps TRA LERG Routing Guide, General Information, BD-TRA-LERG-GEN
        Issue 2 (2026-08-01), section 3.1.
      operationId: queryLerg1
      parameters:
        - name: fields
          in: query
          description: "Comma-separated projection. Omit it, or pass `*`, for every column. `*` cannot be combined with other
            names. Valid names: ocn_num, ocn_name, abbre_ocn_name, ocn_state, category, overall_ocn, iso2_country_code,
            filler1, filler2, last, first, mi, co_name_spec, title, address1, address2, floor, rm, city, state, zip,
            phone, target_ocn, overall_target_ocn, rlec, silec."
          required: false
          schema:
            type: string
          example: ocn_num,ocn_name,abbre_ocn_name,ocn_state
        - name: limit
          in: query
          description: "Page size, default 100. Clamped to 10,000: a larger value is accepted and silently reduced, never
            rejected, so no `maximum` is declared here. `limit=0` is accepted and returns an empty page. On a query no
            index can narrow this also bounds the work: the scan stops at `offset + limit` distinct rows."
          required: false
          schema:
            type: integer
            minimum: 0
          example: 100
        - name: offset
          in: query
          description: "Rows to skip for pagination, default 0. Not capped, deliberately: a ceiling here would make paging through
            a table impossible. On a query no index can narrow, `offset` counts towards the scan bound of `offset +
            limit` distinct rows, so a deep page costs the rows it skips -- `offset=1500000` reads 1.5M rows whatever
            `limit` says. Filter on an indexed column to page at constant cost."
          required: false
          schema:
            type: integer
            minimum: 0
          example: 0
        - name: ocn_num
          in: query
          description: "OCN Number (string). Indexed. The Operating Company Number this row describes, and the table's key: four
            letters or digits. A NECA company code begins with a digit; an OCN that TRA issued itself begins with a
            letter. Other LERG files name companies by this value, in `ocn`, `aocn` and similar columns."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - "6529"
        - name: ocn_name
          in: query
          description: OCN Name (string). Full company name for the OCN, up to 50 characters. For an OCN that is a NECA company
            code the name is maintained through NECA and need not match the company's current legal or trading name.
            Where `target_ocn` is set, NECA regards this as the company's former name.
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - AT&T MOBILITY
        - name: abbre_ocn_name
          in: query
          description: Abbreviated OCN Name (string). Abbreviated company name for the OCN, up to 20 characters.
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - AT&T MOBILITY
        - name: ocn_state
          in: query
          description: "OCN State (string). Two-letter code of the state, province, territory or country the OCN is associated
            with: normally where the company operates, though an OCN used nationwide may carry its state of
            incorporation instead. Caribbean members use the LERG's own island codes (DR for the Dominican Republic, for
            example). In current data Quebec and Newfoundland appear as QC and NL, and some rows, foreign companies
            among them, carry XX."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - CO
        - name: category
          in: query
          description: "Category (string). Kind of company the OCN belongs to, from the classification the company gave NECA when
            it applied for its company code (or a later reclassification). Local exchange carriers: ILEC (incumbent),
            RBOC (the regional Bell companies, kept apart from ILEC), CLEC (competitive) and ULEC (a CLEC built from the
            incumbent's unbundled network elements). Wireless: WIRELESS (cellular, paging or radio other than PCS) and
            PCS (personal communications service). Resellers: L RESELLER (of local exchange service), W RESELLER (of
            wireless service) and P RESELLER (of PCS). Others: CAP (an alternative provider of access services), IC
            (interexchange carrier), IPES (a provider of IP-enabled services such as VoIP), ETHX (an Ethernet exchange,
            which cannot hold NPA NXX assignments), INTL (a company working only outside the NANP, or outside FCC and
            CRTC jurisdiction) and GENERAL (miscellaneous cases, among them TRA's administrative OCNs and some companies
            NECA classes as OTHER)."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: overall_ocn
          in: query
          description: "Overall OCN (string). Nullable: rows where this column is null never match a filter on it. NECA's overall
            company code for the OCN, which links OCNs that may belong to one company. Null when there is none: not
            every OCN is a company code, and not every company code has an overall code. Read the grouping loosely,
            since unrelated companies can share a name and affiliates are sometimes kept apart. In current data it is
            always an OCN listed in this table, sometimes the row's own."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - "6529"
        - name: iso2_country_code
          in: query
          description: ISO2 Country Code (string). Two-letter ISO 3166 country code for the OCN (US, CA, PR, ...). In current data
            a few rows carry XX, which names no country.
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: filler1
          in: query
          description: "Filler 1 (string). Nullable: rows where this column is null never match a filter on it. Unused filler
            column from the LERG layout; always null."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: filler2
          in: query
          description: "Filler 2 (string). Nullable: rows where this column is null never match a filter on it. Unused filler
            column from the LERG layout; always null."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: last
          in: query
          description: Last Name (string). Last name of the OCN's contact. Unless the company asks otherwise, the contact is
            whoever requested the OCN. On an expired OCN it reads EXPIRED followed by the expiry date as MM/DD/YY, and
            `first` says who expired it.
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: first
          in: query
          description: First Name (string). First name of the OCN's contact. On an expired OCN it is NECA or TRA, whichever of the
            two expired it.
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: mi
          in: query
          description: "Middle Initial (string). Nullable: rows where this column is null never match a filter on it. Middle
            initial of the OCN's contact; null when none is given."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: co_name_spec
          in: query
          description: "Company Name Spec (string). Nullable: rows where this column is null never match a filter on it. Company
            name given with the contact's address. The LERG glossary does not define this column. In current data it
            often names a parent or brand (LUMEN, WINDSTREAM) rather than repeating `ocn_name`, and it is null on every
            expired OCN."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: title
          in: query
          description: "Title (string). Nullable: rows where this column is null never match a filter on it. Job title of the
            OCN's contact; null when none is given."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: address1
          in: query
          description: "Address 1 (string). Nullable: rows where this column is null never match a filter on it. First line of the
            contact's mailing address. In current data it reads NOT RECOGNIZED on every expired OCN, whose other address
            and phone columns are null."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: address2
          in: query
          description: "Address 2 (string). Nullable: rows where this column is null never match a filter on it. Second line of
            the contact's mailing address; null when not used."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: floor
          in: query
          description: "Floor (string). Nullable: rows where this column is null never match a filter on it. Floor of the
            contact's address; null when not given."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: rm
          in: query
          description: "Room (string). Nullable: rows where this column is null never match a filter on it. Room or suite of the
            contact's address; null when not given."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: city
          in: query
          description: "City (string). Nullable: rows where this column is null never match a filter on it. City of the contact's
            address. In current data null exactly on the expired OCNs."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: state
          in: query
          description: "State (string). Nullable: rows where this column is null never match a filter on it. Two-letter state,
            province or country code of the contact's address, which need not match `ocn_state`. In current data null
            exactly on the expired OCNs."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - CO
        - name: zip
          in: query
          description: "ZIP Code (string). Nullable: rows where this column is null never match a filter on it. Postal code of the
            contact's address, as text: mostly a five-digit US ZIP code, or a Canadian code in the form A9A 9A9. In
            current data some rows hold eight digits with no separator, and a few hold other shapes. Null exactly on the
            expired OCNs."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: phone
          in: query
          description: "Phone (string). Nullable: rows where this column is null never match a filter on it. Telephone number of
            the OCN's contact, as text, normally NNN-NNN-NNNN. In current data null exactly on the expired OCNs."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: target_ocn
          in: query
          description: "Target OCN (string). Nullable: rows where this column is null never match a filter on it. After a merger
            or acquisition, the OCN of the acquiring company, which may go on using this OCN and its name. Set only if
            the acquirer chooses to use it, so null does not prove there was no acquisition. An OCN that has a target is
            known as a CECC (Combined Entity Company Code). Unlike `overall_ocn`, which groups a company's own OCNs,
            this points at the new owner."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - "6529"
        - name: overall_target_ocn
          in: query
          description: "Overall Target OCN (string). Nullable: rows where this column is null never match a filter on it. Overall
            OCN for the acquiring company. Usually that is the acquirer's own `overall_ocn`, but it is listed separately
            because a merger's details can make the two differ, and it can be null even when `target_ocn` is set. In
            current data it is also set on some rows that have no `target_ocn`."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - "6529"
        - name: rlec
          in: query
          description: "RLEC (boolean). Rural LEC indicator: true when the OCN is on NECA's current list of rural local exchange
            carriers, incumbent or competitive, which supports the FCC's rural call completion rules (FCC 13-135). The
            list is renewed each year, and an OCN that drops off it is no longer flagged. The source writes true as X
            and false as a blank."
          required: false
          schema:
            type: array
            items:
              type: boolean
          style: form
          explode: true
          example:
            - true
        - name: silec
          in: query
          description: "SILEC (boolean). Small ILEC indicator: true when the CRTC treats the OCN as a Canadian small incumbent
            local exchange carrier; false for every other OCN, which includes every OCN outside Canada. The source
            writes true as X and false as a blank."
          required: false
          schema:
            type: array
            items:
              type: boolean
          style: form
          explode: true
          example:
            - true
      responses:
        "200":
          description: Envelope with `table`, `count`, `total_unique` and `data[]`, one object per row projected to `fields`.
          content:
            application/json:
              schema:
                type: object
                properties:
                  count:
                    type: integer
                  data:
                    type: array
                    items:
                      type: object
                  table:
                    type: string
                  total_unique:
                    type: integer
                    description: Distinct rows matched before `limit`/`offset`. A query no index can narrow stops scanning once it holds
                      `offset + limit` distinct rows, counting `limit` after it is clamped to 10,000, so a value exactly
                      equal to that sum means "at least this many", not a total; raise `limit` for the true count. Any
                      smaller value is exact, as is every value on an index-backed query.
              example:
                count: 1
                data:
                  - abbre_ocn_name: AT&T MOBILITY
                    address1: EXAMPLE
                    address2: EXAMPLE
                    category: EXAMPLE
                    city: EXAMPLE
                    co_name_spec: EXAMPLE
                    filler1: EXAMPLE
                    filler2: EXAMPLE
                    first: EXAMPLE
                    floor: EXAMPLE
                    iso2_country_code: EXAMPLE
                    last: EXAMPLE
                    mi: EXAMPLE
                    ocn_name: AT&T MOBILITY
                    ocn_num: "6529"
                    ocn_state: CO
                    overall_ocn: "6529"
                    overall_target_ocn: "6529"
                    phone: EXAMPLE
                    rlec: true
                    rm: EXAMPLE
                    silec: true
                    state: CO
                    target_ocn: "6529"
                    title: EXAMPLE
                    zip: EXAMPLE
                table: lerg_1
                total_unique: 1
        "400":
          description: Causes include an unknown column in `fields` or as a filter key, `*` combined with other field names, an
            empty filter value, a repeated `fields`/`limit`/`offset`, and a non-numeric `limit`/`offset`. The message
            names the offending key and may carry a `did you mean` hint.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LergErrorResponse"
      security:
        - apiToken: []
  /v1/lerg/lerg_1_con:
    get:
      tags:
        - LERG
      summary: Query lerg_1_con with exact-match column filters
      description: >-
        `GET /v1/lerg/lerg_1_con?column=value&…`


        Every parameter below except `fields`, `limit` and `offset` is a column of lerg_1_con. Repeat a parameter to
        match any of several values (an IN-list); omit it to leave that column unfiltered. Filters are exact-match and
        are ANDed together.


        A comma inside a filter value is **not** a separator — only `fields` is comma-separated. `?npa=303,720` looks
        for the literal value `303,720`, matches nothing, and returns 200 with an empty `data`. Repeat the key instead:
        `?npa=303&npa=720`.


        This table has no hash index, so every query is a filtered scan; keep `limit` modest.


        This is the same route as `queryTable` with `table_name=lerg_1_con`, spelled out so the columns are nameable.
        For an operator other than equality, or to join to another table, use `complexQuery`.


        Column definitions are paraphrased from the TruOps TRA LERG Routing Guide, General Information, BD-TRA-LERG-GEN
        Issue 2 (2026-08-01), section 3.1.
      operationId: queryLerg1Con
      parameters:
        - name: fields
          in: query
          description: "Comma-separated projection. Omit it, or pass `*`, for every column. `*` cannot be combined with other
            names. Valid names: ocn_num, ocn_name, ocn_state, contact_function, contact_phone, contact_fax,
            contact_email_url, iso2_country_code, filler."
          required: false
          schema:
            type: string
          example: ocn_num,ocn_name,ocn_state,contact_function
        - name: limit
          in: query
          description: "Page size, default 100. Clamped to 10,000: a larger value is accepted and silently reduced, never
            rejected, so no `maximum` is declared here. `limit=0` is accepted and returns an empty page. On a query no
            index can narrow this also bounds the work: the scan stops at `offset + limit` distinct rows."
          required: false
          schema:
            type: integer
            minimum: 0
          example: 100
        - name: offset
          in: query
          description: "Rows to skip for pagination, default 0. Not capped, deliberately: a ceiling here would make paging through
            a table impossible. On a query no index can narrow, `offset` counts towards the scan bound of `offset +
            limit` distinct rows, so a deep page costs the rows it skips -- `offset=1500000` reads 1.5M rows whatever
            `limit` says. Filter on an indexed column to page at constant cost."
          required: false
          schema:
            type: integer
            minimum: 0
          example: 0
        - name: ocn_num
          in: query
          description: OCN Number (string). OCN the contact belongs to; its company details are in LERG 1. With `contact_function`
            it identifies the row.
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - "6529"
        - name: ocn_name
          in: query
          description: OCN Name (string). Full company name of the OCN. In current data it always matches `ocn_name` in LERG 1.
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - AT&T MOBILITY
        - name: ocn_state
          in: query
          description: OCN State (string). State, province, territory or country code of the OCN. In current data it always
            matches `ocn_state` in LERG 1.
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - CO
        - name: contact_function
          in: query
          description: Contact Function (string). What the contact is for, in the company's own words, and the key of the contact
            within its OCN. SERVICE OF SUBPOENAS is the only function every OCN carries; the rest vary by company (NOC,
            LNP, PORTING ISSUES, 911 ALI, and many more).
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: contact_phone
          in: query
          description: "Contact Phone (string). Nullable: rows where this column is null never match a filter on it. Telephone
            number for the contact function, as text. In current data ten digits with no punctuation on almost every row
            that has one. Null when the company gave none."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: contact_fax
          in: query
          description: "Contact Fax (string). Nullable: rows where this column is null never match a filter on it. Fax number for
            the contact function, as text. In current data set on few rows, always as ten digits with no punctuation.
            Null when the company gave none."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: contact_email_url
          in: query
          description: "Contact Email/URL (string). Nullable: rows where this column is null never match a filter on it. E-mail or
            web address for the contact function, as free text. Companies also use it for other details: in current data
            it can hold a name, a postal address, or a note such as EXPIRED OCN or NOT APPLICABLE. Null when the company
            gave none."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: iso2_country_code
          in: query
          description: ISO2 Country Code (string). Two-letter ISO 3166 country code for the OCN (US, CA, PR, ...). In current data
            a few rows carry XX, which names no country. In current data it always matches `iso2_country_code` in LERG 1
            for the same OCN.
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: filler
          in: query
          description: "Filler (string). Nullable: rows where this column is null never match a filter on it. Unused filler column
            from the LERG layout; always null."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
      responses:
        "200":
          description: Envelope with `table`, `count`, `total_unique` and `data[]`, one object per row projected to `fields`.
          content:
            application/json:
              schema:
                type: object
                properties:
                  count:
                    type: integer
                  data:
                    type: array
                    items:
                      type: object
                  table:
                    type: string
                  total_unique:
                    type: integer
                    description: Distinct rows matched before `limit`/`offset`. A query no index can narrow stops scanning once it holds
                      `offset + limit` distinct rows, counting `limit` after it is clamped to 10,000, so a value exactly
                      equal to that sum means "at least this many", not a total; raise `limit` for the true count. Any
                      smaller value is exact, as is every value on an index-backed query.
              example:
                count: 1
                data:
                  - contact_email_url: EXAMPLE
                    contact_fax: EXAMPLE
                    contact_function: EXAMPLE
                    contact_phone: EXAMPLE
                    filler: EXAMPLE
                    iso2_country_code: EXAMPLE
                    ocn_name: AT&T MOBILITY
                    ocn_num: "6529"
                    ocn_state: CO
                table: lerg_1_con
                total_unique: 1
        "400":
          description: Causes include an unknown column in `fields` or as a filter key, `*` combined with other field names, an
            empty filter value, a repeated `fields`/`limit`/`offset`, and a non-numeric `limit`/`offset`. The message
            names the offending key and may carry a `did you mean` hint.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LergErrorResponse"
      security:
        - apiToken: []
  /v1/lerg/lerg_2:
    get:
      tags:
        - LERG
      summary: Query lerg_2 with exact-match column filters
      description: >-
        `GET /v1/lerg/lerg_2?column=value&…`


        Every parameter below except `fields`, `limit` and `offset` is a column of lerg_2. Repeat a parameter to match
        any of several values (an IN-list); omit it to leave that column unfiltered. Filters are exact-match and are
        ANDed together.


        A comma inside a filter value is **not** a separator — only `fields` is comma-separated. `?npa=303,720` looks
        for the literal value `303,720`, matches nothing, and returns 200 with an empty `data`. Repeat the key instead:
        `?npa=303&npa=720`.


        This table has no hash index, so every query is a filtered scan; keep `limit` modest.


        This is the same route as `queryTable` with `table_name=lerg_2`, spelled out so the columns are nameable. For an
        operator other than equality, or to join to another table, use `complexQuery`.


        Column definitions are paraphrased from the TruOps TRA LERG Routing Guide, General Information, BD-TRA-LERG-GEN
        Issue 2 (2026-08-01), section 3.1.
      operationId: queryLerg2
      parameters:
        - name: fields
          in: query
          description: "Comma-separated projection. Omit it, or pass `*`, for every column. `*` cannot be combined with other
            names. Valid names: action, action_date, country_code, filler1, paired_code, filler2, country_name,
            footnote_code, filler3."
          required: false
          schema:
            type: string
          example: action,action_date,country_code,filler1
        - name: limit
          in: query
          description: "Page size, default 100. Clamped to 10,000: a larger value is accepted and silently reduced, never
            rejected, so no `maximum` is declared here. `limit=0` is accepted and returns an empty page. On a query no
            index can narrow this also bounds the work: the scan stops at `offset + limit` distinct rows."
          required: false
          schema:
            type: integer
            minimum: 0
          example: 100
        - name: offset
          in: query
          description: "Rows to skip for pagination, default 0. Not capped, deliberately: a ceiling here would make paging through
            a table impossible. On a query no index can narrow, `offset` counts towards the scan bound of `offset +
            limit` distinct rows, so a deep page costs the rows it skips -- `offset=1500000` reads 1.5M rows whatever
            `limit` says. Filter on an indexed column to page at constant cost."
          required: false
          schema:
            type: integer
            minimum: 0
          example: 0
        - name: action
          in: query
          description: "Action (string). Nullable: rows where this column is null never match a filter on it. Most recent change
            recorded for the country code, read with `action_date`: E = the code takes effect on that date, M = some of
            its details last changed then, D = the code was withdrawn (left unassigned) then. The date may be in the
            past. Null for codes that date from before the late 1990s and have not changed since; in current data
            `action` and `action_date` are null on the same rows."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: action_date
          in: query
          description: "Action Date (date). Nullable: rows where this column is null never match a filter on it. Date of the
            change in `action`, as YYYY-MM-DD. Often in the past. Null when `action` is."
          required: false
          schema:
            type: array
            items:
              type: string
              format: date
          style: form
          explode: true
          example:
            - 2026-03-01
        - name: country_code
          in: query
          description: "Country Code (integer). Country code the ITU has assigned, one to three digits, served as a number.
            Several entries can share a code: every NANP member is listed under 1. In current data 0 marks a NOT
            APPLICABLE row."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
        - name: filler1
          in: query
          description: "Filler 1 (string). Nullable: rows where this column is null never match a filter on it. Unused filler
            column from the LERG layout; always null."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: paired_code
          in: query
          description: "Paired Code (integer). Nullable: rows where this column is null never match a filter on it. AT&T's paired
            country code, also called a pseudo country code: a three-digit translation code for international calls
            originated without equal access. A legacy code, no longer used going forward. The LERG glossary writes it as
            three digits, padded with zeros when the ITU code is shorter (Russia's 7 pairs with 007), but the source
            column is an integer, so the API serves the number (7) and the padding cannot be recovered. It may equal
            `country_code` or be unrelated to it. Null when there is none."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
        - name: filler2
          in: query
          description: "Filler 2 (string). Nullable: rows where this column is null never match a filter on it. Unused filler
            column from the LERG layout; always null."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: country_name
          in: query
          description: Country Name (string). Name of the country, or of the shared or special service, that the code is assigned
            to, as the ITU lists it. In current data spare and reserved codes carry names such as SPARE CODE 801.
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - UNITED STATES
        - name: footnote_code
          in: query
          description: "Footnote Code (string). Nullable: rows where this column is null never match a filter on it. Letter of the
            ITU note that applies to the country code. The notes are listed in section 9 of the LERG general information
            document; for example B (integrated numbering plan) is on the countries that share codes 1 and 7. Null when
            no note applies."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: filler3
          in: query
          description: "Filler 3 (string). Nullable: rows where this column is null never match a filter on it. Unused filler
            column from the LERG layout; always null."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
      responses:
        "200":
          description: Envelope with `table`, `count`, `total_unique` and `data[]`, one object per row projected to `fields`.
          content:
            application/json:
              schema:
                type: object
                properties:
                  count:
                    type: integer
                  data:
                    type: array
                    items:
                      type: object
                  table:
                    type: string
                  total_unique:
                    type: integer
                    description: Distinct rows matched before `limit`/`offset`. A query no index can narrow stops scanning once it holds
                      `offset + limit` distinct rows, counting `limit` after it is clamped to 10,000, so a value exactly
                      equal to that sum means "at least this many", not a total; raise `limit` for the true count. Any
                      smaller value is exact, as is every value on an index-backed query.
              example:
                count: 1
                data:
                  - action: EXAMPLE
                    action_date: 2026-03-01
                    country_code: 1
                    country_name: UNITED STATES
                    filler1: EXAMPLE
                    filler2: EXAMPLE
                    filler3: EXAMPLE
                    footnote_code: EXAMPLE
                    paired_code: 1
                table: lerg_2
                total_unique: 1
        "400":
          description: Causes include an unknown column in `fields` or as a filter key, `*` combined with other field names, an
            empty filter value, a repeated `fields`/`limit`/`offset`, and a non-numeric `limit`/`offset`. The message
            names the offending key and may carry a `did you mean` hint.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LergErrorResponse"
      security:
        - apiToken: []
  /v1/lerg/lerg_3:
    get:
      tags:
        - LERG
      summary: Query lerg_3 with exact-match column filters
      description: >-
        `GET /v1/lerg/lerg_3?column=value&…`


        Every parameter below except `fields`, `limit` and `offset` is a column of lerg_3. Repeat a parameter to match
        any of several values (an IN-list); omit it to leave that column unfiltered. Filters are exact-match and are
        ANDed together.


        A comma inside a filter value is **not** a separator — only `fields` is comma-separated. `?npa=303,720` looks
        for the literal value `303,720`, matches nothing, and returns 200 with an empty `data`. Repeat the key instead:
        `?npa=303&npa=720`.


        This table has no hash index, so every query is a filtered scan; keep `limit` modest.


        This is the same route as `queryTable` with `table_name=lerg_3`, spelled out so the columns are nameable. For an
        operator other than equality, or to join to another table, use `complexQuery`.


        Column definitions are paraphrased from the TruOps TRA LERG Routing Guide, General Information, BD-TRA-LERG-GEN
        Issue 2 (2026-08-01), section 3.1.
      operationId: queryLerg3
      parameters:
        - name: fields
          in: query
          description: "Comma-separated projection. Omit it, or pass `*`, for every column. `*` cannot be combined with other
            names. Valid names: npa, st_prov_ter, npa_loc, tzone_1, tzone_2, tzone_3, tzone_4, test1_nxxline,
            test1_start, test1_end, test2_nxxline, test2_start, test2_end, test3_nxxline, test3_start, test3_end,
            test4_nxxline, test4_start, test4_end, orig1_action, orig1_pd_start, orig1_pd_end, orig1_npa_1, orig1_npa_2,
            orig1_npa_3, orig2_action, orig2_pd_start, orig2_pd_end, orig2_npa_1, orig2_npa_2, orig2_npa_3, footnote,
            basis1_action, basis1_pd_start, basis1_pd_end, basis1_npa, basis2_action, basis2_pd_start, basis2_pd_end,
            basis2_npa, basis3_action, basis3_pd_start, basis3_pd_end, basis3_npa, basis4_action, basis4_pd_start,
            basis4_pd_end, basis4_npa, basis5_action, basis5_pd_start, basis5_pd_end, basis5_npa, basis6_action,
            basis6_pd_start, basis6_pd_end, basis6_npa, basis7_action, basis7_pd_start, basis7_pd_end, basis7_npa,
            basis8_action, basis8_pd_start, basis8_pd_end, basis8_npa, basis9_action, basis9_pd_start, basis9_pd_end,
            basis9_npa, basis10_action, basis10_pd_start, basis10_pd_end, basis10_npa, basis11_action, basis11_pd_start,
            basis11_pd_end, basis11_npa, basis12_action, basis12_pd_start, basis12_pd_end, basis12_npa, basis13_action,
            basis13_pd_start, basis13_pd_end, basis13_npa, basis14_action, basis14_pd_start, basis14_pd_end,
            basis14_npa, basis15_action, basis15_pd_start, basis15_pd_end, basis15_npa, basis16_action,
            basis16_pd_start, basis16_pd_end, basis16_npa, filler1."
          required: false
          schema:
            type: string
          example: npa,st_prov_ter,npa_loc,tzone_1
        - name: limit
          in: query
          description: "Page size, default 100. Clamped to 10,000: a larger value is accepted and silently reduced, never
            rejected, so no `maximum` is declared here. `limit=0` is accepted and returns an empty page. On a query no
            index can narrow this also bounds the work: the scan stops at `offset + limit` distinct rows."
          required: false
          schema:
            type: integer
            minimum: 0
          example: 100
        - name: offset
          in: query
          description: "Rows to skip for pagination, default 0. Not capped, deliberately: a ceiling here would make paging through
            a table impossible. On a query no index can narrow, `offset` counts towards the scan bound of `offset +
            limit` distinct rows, so a deep page costs the rows it skips -- `offset=1500000` reads 1.5M rows whatever
            `limit` says. Filter on an indexed column to page at constant cost."
          required: false
          schema:
            type: integer
            minimum: 0
          example: 0
        - name: npa
          in: query
          description: NPA (integer). Numbering Plan Area, the three-digit area code. The NPA this row describes, and the table's
            key. Its form is NXX, so the first digit is 2 to 9; served as a number. In current data reserved, service
            and other non-geographic codes have rows too.
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 303
        - name: st_prov_ter
          in: query
          description: State/Province/Territory (string). Two-letter code of the state, province, territory or country (for NANP
            members outside the US and Canada) the NPA serves, from the LERG's state, province and island code table. In
            current data XX marks non-geographic NPAs (toll-free, personal communications service, service access,
            reserved and similar codes), and TS marks 710, the NPA for US federal government services.
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: npa_loc
          in: query
          description: NPA Location (string). Name the NANP has assigned to the NPA (COLORADO for 303, for example). In current
            data that is the state, province or country for a geographic NPA, while non-geographic NPAs carry a service
            name instead (TOLL FREE SERVICE, PERSONAL COM SERVICE, RESERVED and others); names stop at 20 characters, so
            a few are cut short (BRITISH VIRGIN ISLAN).
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: tzone_1
          in: query
          description: "Time Zone 1 (string). Time zone digit for the NPA: 0 not applicable, 1 Guam/CNMI, 2 Hawaii/American Samoa,
            3 Alaska, 4 Pacific, 5 Mountain, 6 Central, 7 Eastern, 8 Atlantic, 9 Newfoundland. First zone the NPA's area
            falls in; every NPA lists one (0 when no zone applies)."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: tzone_2
          in: query
          description: "Time Zone 2 (string). Nullable: rows where this column is null never match a filter on it. Time zone digit
            for the NPA: 0 not applicable, 1 Guam/CNMI, 2 Hawaii/American Samoa, 3 Alaska, 4 Pacific, 5 Mountain, 6
            Central, 7 Eastern, 8 Atlantic, 9 Newfoundland. Second zone, when the NPA's area spans more than one; null
            otherwise."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: tzone_3
          in: query
          description: "Time Zone 3 (string). Nullable: rows where this column is null never match a filter on it. Time zone digit
            for the NPA: 0 not applicable, 1 Guam/CNMI, 2 Hawaii/American Samoa, 3 Alaska, 4 Pacific, 5 Mountain, 6
            Central, 7 Eastern, 8 Atlantic, 9 Newfoundland. Third zone, when the area spans three or more; null
            otherwise."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: tzone_4
          in: query
          description: "Time Zone 4 (string). Nullable: rows where this column is null never match a filter on it. Time zone digit
            for the NPA: 0 not applicable, 1 Guam/CNMI, 2 Hawaii/American Samoa, 3 Alaska, 4 Pacific, 5 Mountain, 6
            Central, 7 Eastern, 8 Atlantic, 9 Newfoundland. Fourth zone, when the area spans four; null otherwise."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: test1_nxxline
          in: query
          description: "Test 1 NXX Line (string). Nullable: rows where this column is null never match a filter on it. A number
            set aside for test calls to this NPA when it was brought in by split or overlay, given as the seven-digit
            NXX and line number; the area code part is this row's `npa`. In current data written NXX-XXXX with a hyphen
            (990-8378, for example) and served as text, so leading zeros stay. The layout has four slots; when all four
            are full, `footnote` may name more. A number and its dates are taken out a few months after its end date, so
            the service provider can later give that line to a customer without trouble. Null when the slot is unused.
            Slot 1 of 4."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: test1_start
          in: query
          description: "Test 1 Start (date). Nullable: rows where this column is null never match a filter on it. Date the test
            number was announced as available, as YYYY-MM-DD; meant to come before the NPA itself starts. Null when the
            slot is unused. For `test1_nxxline`."
          required: false
          schema:
            type: array
            items:
              type: string
              format: date
          style: form
          explode: true
          example:
            - 2026-03-01
        - name: test1_end
          in: query
          description: "Test 1 End (date). Nullable: rows where this column is null never match a filter on it. Date the test
            number was announced as withdrawn, as YYYY-MM-DD. Null when not set. For `test1_nxxline`."
          required: false
          schema:
            type: array
            items:
              type: string
              format: date
          style: form
          explode: true
          example:
            - 2026-03-01
        - name: test2_nxxline
          in: query
          description: "Test 2 NXX Line (string). Nullable: rows where this column is null never match a filter on it. A number
            set aside for test calls to this NPA when it was brought in by split or overlay, given as the seven-digit
            NXX and line number; the area code part is this row's `npa`. In current data written NXX-XXXX with a hyphen
            (990-8378, for example) and served as text, so leading zeros stay. The layout has four slots; when all four
            are full, `footnote` may name more. A number and its dates are taken out a few months after its end date, so
            the service provider can later give that line to a customer without trouble. Null when the slot is unused.
            Slot 2 of 4."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: test2_start
          in: query
          description: "Test 2 Start (date). Nullable: rows where this column is null never match a filter on it. Date the test
            number was announced as available, as YYYY-MM-DD; meant to come before the NPA itself starts. Null when the
            slot is unused. For `test2_nxxline`."
          required: false
          schema:
            type: array
            items:
              type: string
              format: date
          style: form
          explode: true
          example:
            - 2026-03-01
        - name: test2_end
          in: query
          description: "Test 2 End (date). Nullable: rows where this column is null never match a filter on it. Date the test
            number was announced as withdrawn, as YYYY-MM-DD. Null when not set. For `test2_nxxline`."
          required: false
          schema:
            type: array
            items:
              type: string
              format: date
          style: form
          explode: true
          example:
            - 2026-03-01
        - name: test3_nxxline
          in: query
          description: "Test 3 NXX Line (string). Nullable: rows where this column is null never match a filter on it. A number
            set aside for test calls to this NPA when it was brought in by split or overlay, given as the seven-digit
            NXX and line number; the area code part is this row's `npa`. In current data written NXX-XXXX with a hyphen
            (990-8378, for example) and served as text, so leading zeros stay. The layout has four slots; when all four
            are full, `footnote` may name more. A number and its dates are taken out a few months after its end date, so
            the service provider can later give that line to a customer without trouble. Null when the slot is unused.
            Slot 3 of 4."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: test3_start
          in: query
          description: "Test 3 Start (date). Nullable: rows where this column is null never match a filter on it. Date the test
            number was announced as available, as YYYY-MM-DD; meant to come before the NPA itself starts. Null when the
            slot is unused. For `test3_nxxline`."
          required: false
          schema:
            type: array
            items:
              type: string
              format: date
          style: form
          explode: true
          example:
            - 2026-03-01
        - name: test3_end
          in: query
          description: "Test 3 End (date). Nullable: rows where this column is null never match a filter on it. Date the test
            number was announced as withdrawn, as YYYY-MM-DD. Null when not set. For `test3_nxxline`."
          required: false
          schema:
            type: array
            items:
              type: string
              format: date
          style: form
          explode: true
          example:
            - 2026-03-01
        - name: test4_nxxline
          in: query
          description: "Test 4 NXX Line (string). Nullable: rows where this column is null never match a filter on it. A number
            set aside for test calls to this NPA when it was brought in by split or overlay, given as the seven-digit
            NXX and line number; the area code part is this row's `npa`. In current data written NXX-XXXX with a hyphen
            (990-8378, for example) and served as text, so leading zeros stay. The layout has four slots; when all four
            are full, `footnote` may name more. A number and its dates are taken out a few months after its end date, so
            the service provider can later give that line to a customer without trouble. Null when the slot is unused.
            Slot 4 of 4."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: test4_start
          in: query
          description: "Test 4 Start (date). Nullable: rows where this column is null never match a filter on it. Date the test
            number was announced as available, as YYYY-MM-DD; meant to come before the NPA itself starts. Null when the
            slot is unused. For `test4_nxxline`."
          required: false
          schema:
            type: array
            items:
              type: string
              format: date
          style: form
          explode: true
          example:
            - 2026-03-01
        - name: test4_end
          in: query
          description: "Test 4 End (date). Nullable: rows where this column is null never match a filter on it. Date the test
            number was announced as withdrawn, as YYYY-MM-DD. Null when not set. For `test4_nxxline`."
          required: false
          schema:
            type: array
            items:
              type: string
              format: date
          style: form
          explode: true
          example:
            - 2026-03-01
        - name: orig1_action
          in: query
          description: "Origin 1 Action (string). Nullable: rows where this column is null never match a filter on it. How an NPA
            relief was carried out: S = split, O = overlay. Overlays are the usual method today; splits are historical
            and now rare. Null when the group is unused. Origin group 1 of 2: the relief that ties this NPA to the
            earlier NPAs in `orig1_npa_1` to `orig1_npa_3`."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: orig1_pd_start
          in: query
          description: "Origin 1 Permissive Dialing Start (date). Nullable: rows where this column is null never match a filter on
            it. Permissive dialing start date of an NPA relief, as YYYY-MM-DD. For a split (S) it opens the permissive
            dialing period, in which a caller can reach a moved number with either its old or its new NPA. For an
            overlay (O) it is the first date the new NPA could have an NXX in effect; it does not mark the ten-digit
            permissive dialing that can come with a new overlay. Null when the group is unused. Origin group 1, for the
            relief in `orig1_action`."
          required: false
          schema:
            type: array
            items:
              type: string
              format: date
          style: form
          explode: true
          example:
            - 2026-03-01
        - name: orig1_pd_end
          in: query
          description: "Origin 1 Permissive Dialing End (date). Nullable: rows where this column is null never match a filter on
            it. Date a split's (S) permissive dialing period ends, after which only the new NPA reaches a moved number;
            as YYYY-MM-DD. Null for an overlay (O), where the LERG gives no end date, and when the group is unused.
            Origin group 1, for the relief in `orig1_action`."
          required: false
          schema:
            type: array
            items:
              type: string
              format: date
          style: form
          explode: true
          example:
            - 2026-03-01
        - name: orig1_npa_1
          in: query
          description: "Origin 1 NPA 1 (integer). Nullable: rows where this column is null never match a filter on it. An earlier
            NPA this one was derived from: one already in place in the area this NPA covers, relieved by a split or by
            overlaying this NPA on it. After an overlay the earlier NPA can still serve the area too. A three-digit
            number; null when the position is unused. Origin group 1, first NPA."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
        - name: orig1_npa_2
          in: query
          description: "Origin 1 NPA 2 (integer). Nullable: rows where this column is null never match a filter on it. An earlier
            NPA this one was derived from: one already in place in the area this NPA covers, relieved by a split or by
            overlaying this NPA on it. After an overlay the earlier NPA can still serve the area too. A three-digit
            number; null when the position is unused. Origin group 1, second NPA, set when that relief involved more
            than one."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
        - name: orig1_npa_3
          in: query
          description: "Origin 1 NPA 3 (integer). Nullable: rows where this column is null never match a filter on it. An earlier
            NPA this one was derived from: one already in place in the area this NPA covers, relieved by a split or by
            overlaying this NPA on it. After an overlay the earlier NPA can still serve the area too. A three-digit
            number; null when the position is unused. Origin group 1, third NPA."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
        - name: orig2_action
          in: query
          description: "Origin 2 Action (string). Nullable: rows where this column is null never match a filter on it. How an NPA
            relief was carried out: S = split, O = overlay. Overlays are the usual method today; splits are historical
            and now rare. Null when the group is unused. Origin group 2 of 2, for the earlier NPAs in `orig2_npa_1` to
            `orig2_npa_3`. In current data it records either a later relief or one on the same date as group 1 that
            involved other NPAs."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: orig2_pd_start
          in: query
          description: "Origin 2 Permissive Dialing Start (date). Nullable: rows where this column is null never match a filter on
            it. Permissive dialing start date of an NPA relief, as YYYY-MM-DD. For a split (S) it opens the permissive
            dialing period, in which a caller can reach a moved number with either its old or its new NPA. For an
            overlay (O) it is the first date the new NPA could have an NXX in effect; it does not mark the ten-digit
            permissive dialing that can come with a new overlay. Null when the group is unused. Origin group 2, for the
            relief in `orig2_action`."
          required: false
          schema:
            type: array
            items:
              type: string
              format: date
          style: form
          explode: true
          example:
            - 2026-03-01
        - name: orig2_pd_end
          in: query
          description: "Origin 2 Permissive Dialing End (date). Nullable: rows where this column is null never match a filter on
            it. Date a split's (S) permissive dialing period ends, after which only the new NPA reaches a moved number;
            as YYYY-MM-DD. Null for an overlay (O), where the LERG gives no end date, and when the group is unused.
            Origin group 2, for the relief in `orig2_action`."
          required: false
          schema:
            type: array
            items:
              type: string
              format: date
          style: form
          explode: true
          example:
            - 2026-03-01
        - name: orig2_npa_1
          in: query
          description: "Origin 2 NPA 1 (integer). Nullable: rows where this column is null never match a filter on it. An earlier
            NPA this one was derived from: one already in place in the area this NPA covers, relieved by a split or by
            overlaying this NPA on it. After an overlay the earlier NPA can still serve the area too. A three-digit
            number; null when the position is unused. Origin group 2, first NPA."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
        - name: orig2_npa_2
          in: query
          description: "Origin 2 NPA 2 (integer). Nullable: rows where this column is null never match a filter on it. An earlier
            NPA this one was derived from: one already in place in the area this NPA covers, relieved by a split or by
            overlaying this NPA on it. After an overlay the earlier NPA can still serve the area too. A three-digit
            number; null when the position is unused. Origin group 2, second NPA, set when that relief involved more
            than one."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
        - name: orig2_npa_3
          in: query
          description: "Origin 2 NPA 3 (integer). Nullable: rows where this column is null never match a filter on it. An earlier
            NPA this one was derived from: one already in place in the area this NPA covers, relieved by a split or by
            overlaying this NPA on it. After an overlay the earlier NPA can still serve the area too. A three-digit
            number; null when the position is unused. Origin group 2, third NPA."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
        - name: footnote
          in: query
          description: "Footnote (string). Nullable: rows where this column is null never match a filter on it. Free-text note the
            data provider attached to this record. When all four test-number slots are full, it may list further test
            numbers. In current data the notes include short references such as PL501 and phrases such as ORIGINAL NPA
            1947 or RESERVED NPA."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: basis1_action
          in: query
          description: "Basis 1 Action (string). Nullable: rows where this column is null never match a filter on it. How an NPA
            relief was carried out: S = split, O = overlay. Overlays are the usual method today; splits are historical
            and now rare. Null when the group is unused. Basis group 1 of 16: the relief that involved `basis1_npa`."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: basis1_pd_start
          in: query
          description: "Basis 1 Permissive Dialing Start (date). Nullable: rows where this column is null never match a filter on
            it. Permissive dialing start date of an NPA relief, as YYYY-MM-DD. For a split (S) it opens the permissive
            dialing period, in which a caller can reach a moved number with either its old or its new NPA. For an
            overlay (O) it is the first date the new NPA could have an NXX in effect; it does not mark the ten-digit
            permissive dialing that can come with a new overlay. Null when the group is unused. Basis group 1, for the
            relief in `basis1_action`."
          required: false
          schema:
            type: array
            items:
              type: string
              format: date
          style: form
          explode: true
          example:
            - 2026-03-01
        - name: basis1_pd_end
          in: query
          description: "Basis 1 Permissive Dialing End (date). Nullable: rows where this column is null never match a filter on
            it. Date a split's (S) permissive dialing period ends, after which only the new NPA reaches a moved number;
            as YYYY-MM-DD. Null for an overlay (O), where the LERG gives no end date, and when the group is unused.
            Basis group 1, for the relief in `basis1_action`."
          required: false
          schema:
            type: array
            items:
              type: string
              format: date
          style: form
          explode: true
          example:
            - 2026-03-01
        - name: basis1_npa
          in: query
          description: "Basis 1 NPA (integer). Nullable: rows where this column is null never match a filter on it. An NPA linked
            to this one in the LERG's basis-for-NPA history, where one NPA came right before another in an area and,
            after an overlay, may still serve there. In current data this row's NPA is the earlier of the pair: the
            value is normally a newer NPA brought in by split or overlay to relieve it, and that NPA's own row lists
            this one in its origin groups; the groups are filled from group 1 upward in start-date order. A three-digit
            number; null when the group is unused. Basis group 1 of 16."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 303
        - name: basis2_action
          in: query
          description: "Basis 2 Action (string). Nullable: rows where this column is null never match a filter on it. How an NPA
            relief was carried out: S = split, O = overlay. Overlays are the usual method today; splits are historical
            and now rare. Null when the group is unused. Basis group 2 of 16: the relief that involved `basis2_npa`."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: basis2_pd_start
          in: query
          description: "Basis 2 Permissive Dialing Start (date). Nullable: rows where this column is null never match a filter on
            it. Permissive dialing start date of an NPA relief, as YYYY-MM-DD. For a split (S) it opens the permissive
            dialing period, in which a caller can reach a moved number with either its old or its new NPA. For an
            overlay (O) it is the first date the new NPA could have an NXX in effect; it does not mark the ten-digit
            permissive dialing that can come with a new overlay. Null when the group is unused. Basis group 2, for the
            relief in `basis2_action`."
          required: false
          schema:
            type: array
            items:
              type: string
              format: date
          style: form
          explode: true
          example:
            - 2026-03-01
        - name: basis2_pd_end
          in: query
          description: "Basis 2 Permissive Dialing End (date). Nullable: rows where this column is null never match a filter on
            it. Date a split's (S) permissive dialing period ends, after which only the new NPA reaches a moved number;
            as YYYY-MM-DD. Null for an overlay (O), where the LERG gives no end date, and when the group is unused.
            Basis group 2, for the relief in `basis2_action`."
          required: false
          schema:
            type: array
            items:
              type: string
              format: date
          style: form
          explode: true
          example:
            - 2026-03-01
        - name: basis2_npa
          in: query
          description: "Basis 2 NPA (integer). Nullable: rows where this column is null never match a filter on it. An NPA linked
            to this one in the LERG's basis-for-NPA history, where one NPA came right before another in an area and,
            after an overlay, may still serve there. In current data this row's NPA is the earlier of the pair: the
            value is normally a newer NPA brought in by split or overlay to relieve it, and that NPA's own row lists
            this one in its origin groups; the groups are filled from group 1 upward in start-date order. A three-digit
            number; null when the group is unused. Basis group 2 of 16."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 303
        - name: basis3_action
          in: query
          description: "Basis 3 Action (string). Nullable: rows where this column is null never match a filter on it. How an NPA
            relief was carried out: S = split, O = overlay. Overlays are the usual method today; splits are historical
            and now rare. Null when the group is unused. Basis group 3 of 16: the relief that involved `basis3_npa`."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: basis3_pd_start
          in: query
          description: "Basis 3 Permissive Dialing Start (date). Nullable: rows where this column is null never match a filter on
            it. Permissive dialing start date of an NPA relief, as YYYY-MM-DD. For a split (S) it opens the permissive
            dialing period, in which a caller can reach a moved number with either its old or its new NPA. For an
            overlay (O) it is the first date the new NPA could have an NXX in effect; it does not mark the ten-digit
            permissive dialing that can come with a new overlay. Null when the group is unused. Basis group 3, for the
            relief in `basis3_action`."
          required: false
          schema:
            type: array
            items:
              type: string
              format: date
          style: form
          explode: true
          example:
            - 2026-03-01
        - name: basis3_pd_end
          in: query
          description: "Basis 3 Permissive Dialing End (date). Nullable: rows where this column is null never match a filter on
            it. Date a split's (S) permissive dialing period ends, after which only the new NPA reaches a moved number;
            as YYYY-MM-DD. Null for an overlay (O), where the LERG gives no end date, and when the group is unused.
            Basis group 3, for the relief in `basis3_action`."
          required: false
          schema:
            type: array
            items:
              type: string
              format: date
          style: form
          explode: true
          example:
            - 2026-03-01
        - name: basis3_npa
          in: query
          description: "Basis 3 NPA (integer). Nullable: rows where this column is null never match a filter on it. An NPA linked
            to this one in the LERG's basis-for-NPA history, where one NPA came right before another in an area and,
            after an overlay, may still serve there. In current data this row's NPA is the earlier of the pair: the
            value is normally a newer NPA brought in by split or overlay to relieve it, and that NPA's own row lists
            this one in its origin groups; the groups are filled from group 1 upward in start-date order. A three-digit
            number; null when the group is unused. Basis group 3 of 16."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 303
        - name: basis4_action
          in: query
          description: "Basis 4 Action (string). Nullable: rows where this column is null never match a filter on it. How an NPA
            relief was carried out: S = split, O = overlay. Overlays are the usual method today; splits are historical
            and now rare. Null when the group is unused. Basis group 4 of 16: the relief that involved `basis4_npa`."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: basis4_pd_start
          in: query
          description: "Basis 4 Permissive Dialing Start (date). Nullable: rows where this column is null never match a filter on
            it. Permissive dialing start date of an NPA relief, as YYYY-MM-DD. For a split (S) it opens the permissive
            dialing period, in which a caller can reach a moved number with either its old or its new NPA. For an
            overlay (O) it is the first date the new NPA could have an NXX in effect; it does not mark the ten-digit
            permissive dialing that can come with a new overlay. Null when the group is unused. Basis group 4, for the
            relief in `basis4_action`."
          required: false
          schema:
            type: array
            items:
              type: string
              format: date
          style: form
          explode: true
          example:
            - 2026-03-01
        - name: basis4_pd_end
          in: query
          description: "Basis 4 Permissive Dialing End (date). Nullable: rows where this column is null never match a filter on
            it. Date a split's (S) permissive dialing period ends, after which only the new NPA reaches a moved number;
            as YYYY-MM-DD. Null for an overlay (O), where the LERG gives no end date, and when the group is unused.
            Basis group 4, for the relief in `basis4_action`."
          required: false
          schema:
            type: array
            items:
              type: string
              format: date
          style: form
          explode: true
          example:
            - 2026-03-01
        - name: basis4_npa
          in: query
          description: "Basis 4 NPA (integer). Nullable: rows where this column is null never match a filter on it. An NPA linked
            to this one in the LERG's basis-for-NPA history, where one NPA came right before another in an area and,
            after an overlay, may still serve there. In current data this row's NPA is the earlier of the pair: the
            value is normally a newer NPA brought in by split or overlay to relieve it, and that NPA's own row lists
            this one in its origin groups; the groups are filled from group 1 upward in start-date order. A three-digit
            number; null when the group is unused. Basis group 4 of 16."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 303
        - name: basis5_action
          in: query
          description: "Basis 5 Action (string). Nullable: rows where this column is null never match a filter on it. How an NPA
            relief was carried out: S = split, O = overlay. Overlays are the usual method today; splits are historical
            and now rare. Null when the group is unused. Basis group 5 of 16: the relief that involved `basis5_npa`."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: basis5_pd_start
          in: query
          description: "Basis 5 Permissive Dialing Start (date). Nullable: rows where this column is null never match a filter on
            it. Permissive dialing start date of an NPA relief, as YYYY-MM-DD. For a split (S) it opens the permissive
            dialing period, in which a caller can reach a moved number with either its old or its new NPA. For an
            overlay (O) it is the first date the new NPA could have an NXX in effect; it does not mark the ten-digit
            permissive dialing that can come with a new overlay. Null when the group is unused. Basis group 5, for the
            relief in `basis5_action`."
          required: false
          schema:
            type: array
            items:
              type: string
              format: date
          style: form
          explode: true
          example:
            - 2026-03-01
        - name: basis5_pd_end
          in: query
          description: "Basis 5 Permissive Dialing End (date). Nullable: rows where this column is null never match a filter on
            it. Date a split's (S) permissive dialing period ends, after which only the new NPA reaches a moved number;
            as YYYY-MM-DD. Null for an overlay (O), where the LERG gives no end date, and when the group is unused.
            Basis group 5, for the relief in `basis5_action`."
          required: false
          schema:
            type: array
            items:
              type: string
              format: date
          style: form
          explode: true
          example:
            - 2026-03-01
        - name: basis5_npa
          in: query
          description: "Basis 5 NPA (integer). Nullable: rows where this column is null never match a filter on it. An NPA linked
            to this one in the LERG's basis-for-NPA history, where one NPA came right before another in an area and,
            after an overlay, may still serve there. In current data this row's NPA is the earlier of the pair: the
            value is normally a newer NPA brought in by split or overlay to relieve it, and that NPA's own row lists
            this one in its origin groups; the groups are filled from group 1 upward in start-date order. A three-digit
            number; null when the group is unused. Basis group 5 of 16."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 303
        - name: basis6_action
          in: query
          description: "Basis 6 Action (string). Nullable: rows where this column is null never match a filter on it. How an NPA
            relief was carried out: S = split, O = overlay. Overlays are the usual method today; splits are historical
            and now rare. Null when the group is unused. Basis group 6 of 16: the relief that involved `basis6_npa`."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: basis6_pd_start
          in: query
          description: "Basis 6 Permissive Dialing Start (date). Nullable: rows where this column is null never match a filter on
            it. Permissive dialing start date of an NPA relief, as YYYY-MM-DD. For a split (S) it opens the permissive
            dialing period, in which a caller can reach a moved number with either its old or its new NPA. For an
            overlay (O) it is the first date the new NPA could have an NXX in effect; it does not mark the ten-digit
            permissive dialing that can come with a new overlay. Null when the group is unused. Basis group 6, for the
            relief in `basis6_action`."
          required: false
          schema:
            type: array
            items:
              type: string
              format: date
          style: form
          explode: true
          example:
            - 2026-03-01
        - name: basis6_pd_end
          in: query
          description: "Basis 6 Permissive Dialing End (date). Nullable: rows where this column is null never match a filter on
            it. Date a split's (S) permissive dialing period ends, after which only the new NPA reaches a moved number;
            as YYYY-MM-DD. Null for an overlay (O), where the LERG gives no end date, and when the group is unused.
            Basis group 6, for the relief in `basis6_action`."
          required: false
          schema:
            type: array
            items:
              type: string
              format: date
          style: form
          explode: true
          example:
            - 2026-03-01
        - name: basis6_npa
          in: query
          description: "Basis 6 NPA (integer). Nullable: rows where this column is null never match a filter on it. An NPA linked
            to this one in the LERG's basis-for-NPA history, where one NPA came right before another in an area and,
            after an overlay, may still serve there. In current data this row's NPA is the earlier of the pair: the
            value is normally a newer NPA brought in by split or overlay to relieve it, and that NPA's own row lists
            this one in its origin groups; the groups are filled from group 1 upward in start-date order. A three-digit
            number; null when the group is unused. Basis group 6 of 16."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 303
        - name: basis7_action
          in: query
          description: "Basis 7 Action (string). Nullable: rows where this column is null never match a filter on it. How an NPA
            relief was carried out: S = split, O = overlay. Overlays are the usual method today; splits are historical
            and now rare. Null when the group is unused. Basis group 7 of 16: the relief that involved `basis7_npa`."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: basis7_pd_start
          in: query
          description: "Basis 7 Permissive Dialing Start (date). Nullable: rows where this column is null never match a filter on
            it. Permissive dialing start date of an NPA relief, as YYYY-MM-DD. For a split (S) it opens the permissive
            dialing period, in which a caller can reach a moved number with either its old or its new NPA. For an
            overlay (O) it is the first date the new NPA could have an NXX in effect; it does not mark the ten-digit
            permissive dialing that can come with a new overlay. Null when the group is unused. Basis group 7, for the
            relief in `basis7_action`."
          required: false
          schema:
            type: array
            items:
              type: string
              format: date
          style: form
          explode: true
          example:
            - 2026-03-01
        - name: basis7_pd_end
          in: query
          description: "Basis 7 Permissive Dialing End (date). Nullable: rows where this column is null never match a filter on
            it. Date a split's (S) permissive dialing period ends, after which only the new NPA reaches a moved number;
            as YYYY-MM-DD. Null for an overlay (O), where the LERG gives no end date, and when the group is unused.
            Basis group 7, for the relief in `basis7_action`."
          required: false
          schema:
            type: array
            items:
              type: string
              format: date
          style: form
          explode: true
          example:
            - 2026-03-01
        - name: basis7_npa
          in: query
          description: "Basis 7 NPA (integer). Nullable: rows where this column is null never match a filter on it. An NPA linked
            to this one in the LERG's basis-for-NPA history, where one NPA came right before another in an area and,
            after an overlay, may still serve there. In current data this row's NPA is the earlier of the pair: the
            value is normally a newer NPA brought in by split or overlay to relieve it, and that NPA's own row lists
            this one in its origin groups; the groups are filled from group 1 upward in start-date order. A three-digit
            number; null when the group is unused. Basis group 7 of 16."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 303
        - name: basis8_action
          in: query
          description: "Basis 8 Action (string). Nullable: rows where this column is null never match a filter on it. How an NPA
            relief was carried out: S = split, O = overlay. Overlays are the usual method today; splits are historical
            and now rare. Null when the group is unused. Basis group 8 of 16: the relief that involved `basis8_npa`."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: basis8_pd_start
          in: query
          description: "Basis 8 Permissive Dialing Start (date). Nullable: rows where this column is null never match a filter on
            it. Permissive dialing start date of an NPA relief, as YYYY-MM-DD. For a split (S) it opens the permissive
            dialing period, in which a caller can reach a moved number with either its old or its new NPA. For an
            overlay (O) it is the first date the new NPA could have an NXX in effect; it does not mark the ten-digit
            permissive dialing that can come with a new overlay. Null when the group is unused. Basis group 8, for the
            relief in `basis8_action`."
          required: false
          schema:
            type: array
            items:
              type: string
              format: date
          style: form
          explode: true
          example:
            - 2026-03-01
        - name: basis8_pd_end
          in: query
          description: "Basis 8 Permissive Dialing End (date). Nullable: rows where this column is null never match a filter on
            it. Date a split's (S) permissive dialing period ends, after which only the new NPA reaches a moved number;
            as YYYY-MM-DD. Null for an overlay (O), where the LERG gives no end date, and when the group is unused.
            Basis group 8, for the relief in `basis8_action`."
          required: false
          schema:
            type: array
            items:
              type: string
              format: date
          style: form
          explode: true
          example:
            - 2026-03-01
        - name: basis8_npa
          in: query
          description: "Basis 8 NPA (integer). Nullable: rows where this column is null never match a filter on it. An NPA linked
            to this one in the LERG's basis-for-NPA history, where one NPA came right before another in an area and,
            after an overlay, may still serve there. In current data this row's NPA is the earlier of the pair: the
            value is normally a newer NPA brought in by split or overlay to relieve it, and that NPA's own row lists
            this one in its origin groups; the groups are filled from group 1 upward in start-date order. A three-digit
            number; null when the group is unused. Basis group 8 of 16."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 303
        - name: basis9_action
          in: query
          description: "Basis 9 Action (string). Nullable: rows where this column is null never match a filter on it. How an NPA
            relief was carried out: S = split, O = overlay. Overlays are the usual method today; splits are historical
            and now rare. Null when the group is unused. Basis group 9 of 16: the relief that involved `basis9_npa`."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: basis9_pd_start
          in: query
          description: "Basis 9 Permissive Dialing Start (date). Nullable: rows where this column is null never match a filter on
            it. Permissive dialing start date of an NPA relief, as YYYY-MM-DD. For a split (S) it opens the permissive
            dialing period, in which a caller can reach a moved number with either its old or its new NPA. For an
            overlay (O) it is the first date the new NPA could have an NXX in effect; it does not mark the ten-digit
            permissive dialing that can come with a new overlay. Null when the group is unused. Basis group 9, for the
            relief in `basis9_action`."
          required: false
          schema:
            type: array
            items:
              type: string
              format: date
          style: form
          explode: true
          example:
            - 2026-03-01
        - name: basis9_pd_end
          in: query
          description: "Basis 9 Permissive Dialing End (date). Nullable: rows where this column is null never match a filter on
            it. Date a split's (S) permissive dialing period ends, after which only the new NPA reaches a moved number;
            as YYYY-MM-DD. Null for an overlay (O), where the LERG gives no end date, and when the group is unused.
            Basis group 9, for the relief in `basis9_action`."
          required: false
          schema:
            type: array
            items:
              type: string
              format: date
          style: form
          explode: true
          example:
            - 2026-03-01
        - name: basis9_npa
          in: query
          description: "Basis 9 NPA (integer). Nullable: rows where this column is null never match a filter on it. An NPA linked
            to this one in the LERG's basis-for-NPA history, where one NPA came right before another in an area and,
            after an overlay, may still serve there. In current data this row's NPA is the earlier of the pair: the
            value is normally a newer NPA brought in by split or overlay to relieve it, and that NPA's own row lists
            this one in its origin groups; the groups are filled from group 1 upward in start-date order. A three-digit
            number; null when the group is unused. Basis group 9 of 16."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 303
        - name: basis10_action
          in: query
          description: "Basis 10 Action (string). Nullable: rows where this column is null never match a filter on it. How an NPA
            relief was carried out: S = split, O = overlay. Overlays are the usual method today; splits are historical
            and now rare. Null when the group is unused. Basis group 10 of 16: the relief that involved `basis10_npa`."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: basis10_pd_start
          in: query
          description: "Basis 10 Permissive Dialing Start (date). Nullable: rows where this column is null never match a filter on
            it. Permissive dialing start date of an NPA relief, as YYYY-MM-DD. For a split (S) it opens the permissive
            dialing period, in which a caller can reach a moved number with either its old or its new NPA. For an
            overlay (O) it is the first date the new NPA could have an NXX in effect; it does not mark the ten-digit
            permissive dialing that can come with a new overlay. Null when the group is unused. Basis group 10, for the
            relief in `basis10_action`."
          required: false
          schema:
            type: array
            items:
              type: string
              format: date
          style: form
          explode: true
          example:
            - 2026-03-01
        - name: basis10_pd_end
          in: query
          description: "Basis 10 Permissive Dialing End (date). Nullable: rows where this column is null never match a filter on
            it. Date a split's (S) permissive dialing period ends, after which only the new NPA reaches a moved number;
            as YYYY-MM-DD. Null for an overlay (O), where the LERG gives no end date, and when the group is unused.
            Basis group 10, for the relief in `basis10_action`."
          required: false
          schema:
            type: array
            items:
              type: string
              format: date
          style: form
          explode: true
          example:
            - 2026-03-01
        - name: basis10_npa
          in: query
          description: "Basis 10 NPA (integer). Nullable: rows where this column is null never match a filter on it. An NPA linked
            to this one in the LERG's basis-for-NPA history, where one NPA came right before another in an area and,
            after an overlay, may still serve there. In current data this row's NPA is the earlier of the pair: the
            value is normally a newer NPA brought in by split or overlay to relieve it, and that NPA's own row lists
            this one in its origin groups; the groups are filled from group 1 upward in start-date order. A three-digit
            number; null when the group is unused. Basis group 10 of 16."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 303
        - name: basis11_action
          in: query
          description: "Basis 11 Action (string). Nullable: rows where this column is null never match a filter on it. How an NPA
            relief was carried out: S = split, O = overlay. Overlays are the usual method today; splits are historical
            and now rare. Null when the group is unused. Basis group 11 of 16: the relief that involved `basis11_npa`."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: basis11_pd_start
          in: query
          description: "Basis 11 Permissive Dialing Start (date). Nullable: rows where this column is null never match a filter on
            it. Permissive dialing start date of an NPA relief, as YYYY-MM-DD. For a split (S) it opens the permissive
            dialing period, in which a caller can reach a moved number with either its old or its new NPA. For an
            overlay (O) it is the first date the new NPA could have an NXX in effect; it does not mark the ten-digit
            permissive dialing that can come with a new overlay. Null when the group is unused. Basis group 11, for the
            relief in `basis11_action`."
          required: false
          schema:
            type: array
            items:
              type: string
              format: date
          style: form
          explode: true
          example:
            - 2026-03-01
        - name: basis11_pd_end
          in: query
          description: "Basis 11 Permissive Dialing End (date). Nullable: rows where this column is null never match a filter on
            it. Date a split's (S) permissive dialing period ends, after which only the new NPA reaches a moved number;
            as YYYY-MM-DD. Null for an overlay (O), where the LERG gives no end date, and when the group is unused.
            Basis group 11, for the relief in `basis11_action`."
          required: false
          schema:
            type: array
            items:
              type: string
              format: date
          style: form
          explode: true
          example:
            - 2026-03-01
        - name: basis11_npa
          in: query
          description: "Basis 11 NPA (integer). Nullable: rows where this column is null never match a filter on it. An NPA linked
            to this one in the LERG's basis-for-NPA history, where one NPA came right before another in an area and,
            after an overlay, may still serve there. In current data this row's NPA is the earlier of the pair: the
            value is normally a newer NPA brought in by split or overlay to relieve it, and that NPA's own row lists
            this one in its origin groups; the groups are filled from group 1 upward in start-date order. A three-digit
            number; null when the group is unused. Basis group 11 of 16."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 303
        - name: basis12_action
          in: query
          description: "Basis 12 Action (string). Nullable: rows where this column is null never match a filter on it. How an NPA
            relief was carried out: S = split, O = overlay. Overlays are the usual method today; splits are historical
            and now rare. Null when the group is unused. Basis group 12 of 16: the relief that involved `basis12_npa`."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: basis12_pd_start
          in: query
          description: "Basis 12 Permissive Dialing Start (date). Nullable: rows where this column is null never match a filter on
            it. Permissive dialing start date of an NPA relief, as YYYY-MM-DD. For a split (S) it opens the permissive
            dialing period, in which a caller can reach a moved number with either its old or its new NPA. For an
            overlay (O) it is the first date the new NPA could have an NXX in effect; it does not mark the ten-digit
            permissive dialing that can come with a new overlay. Null when the group is unused. Basis group 12, for the
            relief in `basis12_action`."
          required: false
          schema:
            type: array
            items:
              type: string
              format: date
          style: form
          explode: true
          example:
            - 2026-03-01
        - name: basis12_pd_end
          in: query
          description: "Basis 12 Permissive Dialing End (date). Nullable: rows where this column is null never match a filter on
            it. Date a split's (S) permissive dialing period ends, after which only the new NPA reaches a moved number;
            as YYYY-MM-DD. Null for an overlay (O), where the LERG gives no end date, and when the group is unused.
            Basis group 12, for the relief in `basis12_action`."
          required: false
          schema:
            type: array
            items:
              type: string
              format: date
          style: form
          explode: true
          example:
            - 2026-03-01
        - name: basis12_npa
          in: query
          description: "Basis 12 NPA (integer). Nullable: rows where this column is null never match a filter on it. An NPA linked
            to this one in the LERG's basis-for-NPA history, where one NPA came right before another in an area and,
            after an overlay, may still serve there. In current data this row's NPA is the earlier of the pair: the
            value is normally a newer NPA brought in by split or overlay to relieve it, and that NPA's own row lists
            this one in its origin groups; the groups are filled from group 1 upward in start-date order. A three-digit
            number; null when the group is unused. Basis group 12 of 16."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 303
        - name: basis13_action
          in: query
          description: "Basis 13 Action (string). Nullable: rows where this column is null never match a filter on it. How an NPA
            relief was carried out: S = split, O = overlay. Overlays are the usual method today; splits are historical
            and now rare. Null when the group is unused. Basis group 13 of 16: the relief that involved `basis13_npa`."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: basis13_pd_start
          in: query
          description: "Basis 13 Permissive Dialing Start (date). Nullable: rows where this column is null never match a filter on
            it. Permissive dialing start date of an NPA relief, as YYYY-MM-DD. For a split (S) it opens the permissive
            dialing period, in which a caller can reach a moved number with either its old or its new NPA. For an
            overlay (O) it is the first date the new NPA could have an NXX in effect; it does not mark the ten-digit
            permissive dialing that can come with a new overlay. Null when the group is unused. Basis group 13, for the
            relief in `basis13_action`."
          required: false
          schema:
            type: array
            items:
              type: string
              format: date
          style: form
          explode: true
          example:
            - 2026-03-01
        - name: basis13_pd_end
          in: query
          description: "Basis 13 Permissive Dialing End (date). Nullable: rows where this column is null never match a filter on
            it. Date a split's (S) permissive dialing period ends, after which only the new NPA reaches a moved number;
            as YYYY-MM-DD. Null for an overlay (O), where the LERG gives no end date, and when the group is unused.
            Basis group 13, for the relief in `basis13_action`."
          required: false
          schema:
            type: array
            items:
              type: string
              format: date
          style: form
          explode: true
          example:
            - 2026-03-01
        - name: basis13_npa
          in: query
          description: "Basis 13 NPA (integer). Nullable: rows where this column is null never match a filter on it. An NPA linked
            to this one in the LERG's basis-for-NPA history, where one NPA came right before another in an area and,
            after an overlay, may still serve there. In current data this row's NPA is the earlier of the pair: the
            value is normally a newer NPA brought in by split or overlay to relieve it, and that NPA's own row lists
            this one in its origin groups; the groups are filled from group 1 upward in start-date order. A three-digit
            number; null when the group is unused. Basis group 13 of 16."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 303
        - name: basis14_action
          in: query
          description: "Basis 14 Action (string). Nullable: rows where this column is null never match a filter on it. How an NPA
            relief was carried out: S = split, O = overlay. Overlays are the usual method today; splits are historical
            and now rare. Null when the group is unused. Basis group 14 of 16: the relief that involved `basis14_npa`."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: basis14_pd_start
          in: query
          description: "Basis 14 Permissive Dialing Start (date). Nullable: rows where this column is null never match a filter on
            it. Permissive dialing start date of an NPA relief, as YYYY-MM-DD. For a split (S) it opens the permissive
            dialing period, in which a caller can reach a moved number with either its old or its new NPA. For an
            overlay (O) it is the first date the new NPA could have an NXX in effect; it does not mark the ten-digit
            permissive dialing that can come with a new overlay. Null when the group is unused. Basis group 14, for the
            relief in `basis14_action`."
          required: false
          schema:
            type: array
            items:
              type: string
              format: date
          style: form
          explode: true
          example:
            - 2026-03-01
        - name: basis14_pd_end
          in: query
          description: "Basis 14 Permissive Dialing End (date). Nullable: rows where this column is null never match a filter on
            it. Date a split's (S) permissive dialing period ends, after which only the new NPA reaches a moved number;
            as YYYY-MM-DD. Null for an overlay (O), where the LERG gives no end date, and when the group is unused.
            Basis group 14, for the relief in `basis14_action`."
          required: false
          schema:
            type: array
            items:
              type: string
              format: date
          style: form
          explode: true
          example:
            - 2026-03-01
        - name: basis14_npa
          in: query
          description: "Basis 14 NPA (integer). Nullable: rows where this column is null never match a filter on it. An NPA linked
            to this one in the LERG's basis-for-NPA history, where one NPA came right before another in an area and,
            after an overlay, may still serve there. In current data this row's NPA is the earlier of the pair: the
            value is normally a newer NPA brought in by split or overlay to relieve it, and that NPA's own row lists
            this one in its origin groups; the groups are filled from group 1 upward in start-date order. A three-digit
            number; null when the group is unused. Basis group 14 of 16."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 303
        - name: basis15_action
          in: query
          description: "Basis 15 Action (string). Nullable: rows where this column is null never match a filter on it. How an NPA
            relief was carried out: S = split, O = overlay. Overlays are the usual method today; splits are historical
            and now rare. Null when the group is unused. Basis group 15 of 16: the relief that involved `basis15_npa`."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: basis15_pd_start
          in: query
          description: "Basis 15 Permissive Dialing Start (date). Nullable: rows where this column is null never match a filter on
            it. Permissive dialing start date of an NPA relief, as YYYY-MM-DD. For a split (S) it opens the permissive
            dialing period, in which a caller can reach a moved number with either its old or its new NPA. For an
            overlay (O) it is the first date the new NPA could have an NXX in effect; it does not mark the ten-digit
            permissive dialing that can come with a new overlay. Null when the group is unused. Basis group 15, for the
            relief in `basis15_action`."
          required: false
          schema:
            type: array
            items:
              type: string
              format: date
          style: form
          explode: true
          example:
            - 2026-03-01
        - name: basis15_pd_end
          in: query
          description: "Basis 15 Permissive Dialing End (date). Nullable: rows where this column is null never match a filter on
            it. Date a split's (S) permissive dialing period ends, after which only the new NPA reaches a moved number;
            as YYYY-MM-DD. Null for an overlay (O), where the LERG gives no end date, and when the group is unused.
            Basis group 15, for the relief in `basis15_action`."
          required: false
          schema:
            type: array
            items:
              type: string
              format: date
          style: form
          explode: true
          example:
            - 2026-03-01
        - name: basis15_npa
          in: query
          description: "Basis 15 NPA (integer). Nullable: rows where this column is null never match a filter on it. An NPA linked
            to this one in the LERG's basis-for-NPA history, where one NPA came right before another in an area and,
            after an overlay, may still serve there. In current data this row's NPA is the earlier of the pair: the
            value is normally a newer NPA brought in by split or overlay to relieve it, and that NPA's own row lists
            this one in its origin groups; the groups are filled from group 1 upward in start-date order. A three-digit
            number; null when the group is unused. Basis group 15 of 16."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 303
        - name: basis16_action
          in: query
          description: "Basis 16 Action (string). Nullable: rows where this column is null never match a filter on it. How an NPA
            relief was carried out: S = split, O = overlay. Overlays are the usual method today; splits are historical
            and now rare. Null when the group is unused. Basis group 16 of 16: the relief that involved `basis16_npa`."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: basis16_pd_start
          in: query
          description: "Basis 16 Permissive Dialing Start (date). Nullable: rows where this column is null never match a filter on
            it. Permissive dialing start date of an NPA relief, as YYYY-MM-DD. For a split (S) it opens the permissive
            dialing period, in which a caller can reach a moved number with either its old or its new NPA. For an
            overlay (O) it is the first date the new NPA could have an NXX in effect; it does not mark the ten-digit
            permissive dialing that can come with a new overlay. Null when the group is unused. Basis group 16, for the
            relief in `basis16_action`."
          required: false
          schema:
            type: array
            items:
              type: string
              format: date
          style: form
          explode: true
          example:
            - 2026-03-01
        - name: basis16_pd_end
          in: query
          description: "Basis 16 Permissive Dialing End (date). Nullable: rows where this column is null never match a filter on
            it. Date a split's (S) permissive dialing period ends, after which only the new NPA reaches a moved number;
            as YYYY-MM-DD. Null for an overlay (O), where the LERG gives no end date, and when the group is unused.
            Basis group 16, for the relief in `basis16_action`."
          required: false
          schema:
            type: array
            items:
              type: string
              format: date
          style: form
          explode: true
          example:
            - 2026-03-01
        - name: basis16_npa
          in: query
          description: "Basis 16 NPA (integer). Nullable: rows where this column is null never match a filter on it. An NPA linked
            to this one in the LERG's basis-for-NPA history, where one NPA came right before another in an area and,
            after an overlay, may still serve there. In current data this row's NPA is the earlier of the pair: the
            value is normally a newer NPA brought in by split or overlay to relieve it, and that NPA's own row lists
            this one in its origin groups; the groups are filled from group 1 upward in start-date order. A three-digit
            number; null when the group is unused. Basis group 16 of 16."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 303
        - name: filler1
          in: query
          description: "Filler 1 (string). Nullable: rows where this column is null never match a filter on it. Unused filler
            column from the LERG layout; always null."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
      responses:
        "200":
          description: Envelope with `table`, `count`, `total_unique` and `data[]`, one object per row projected to `fields`.
          content:
            application/json:
              schema:
                type: object
                properties:
                  count:
                    type: integer
                  data:
                    type: array
                    items:
                      type: object
                  table:
                    type: string
                  total_unique:
                    type: integer
                    description: Distinct rows matched before `limit`/`offset`. A query no index can narrow stops scanning once it holds
                      `offset + limit` distinct rows, counting `limit` after it is clamped to 10,000, so a value exactly
                      equal to that sum means "at least this many", not a total; raise `limit` for the true count. Any
                      smaller value is exact, as is every value on an index-backed query.
              example:
                count: 1
                data:
                  - basis10_action: EXAMPLE
                    basis10_npa: 303
                    basis10_pd_end: 2026-03-01
                    basis10_pd_start: 2026-03-01
                    basis11_action: EXAMPLE
                    basis11_npa: 303
                    basis11_pd_end: 2026-03-01
                    basis11_pd_start: 2026-03-01
                    basis12_action: EXAMPLE
                    basis12_npa: 303
                    basis12_pd_end: 2026-03-01
                    basis12_pd_start: 2026-03-01
                    basis13_action: EXAMPLE
                    basis13_npa: 303
                    basis13_pd_end: 2026-03-01
                    basis13_pd_start: 2026-03-01
                    basis14_action: EXAMPLE
                    basis14_npa: 303
                    basis14_pd_end: 2026-03-01
                    basis14_pd_start: 2026-03-01
                    basis15_action: EXAMPLE
                    basis15_npa: 303
                    basis15_pd_end: 2026-03-01
                    basis15_pd_start: 2026-03-01
                    basis16_action: EXAMPLE
                    basis16_npa: 303
                    basis16_pd_end: 2026-03-01
                    basis16_pd_start: 2026-03-01
                    basis1_action: EXAMPLE
                    basis1_npa: 303
                    basis1_pd_end: 2026-03-01
                    basis1_pd_start: 2026-03-01
                    basis2_action: EXAMPLE
                    basis2_npa: 303
                    basis2_pd_end: 2026-03-01
                    basis2_pd_start: 2026-03-01
                    basis3_action: EXAMPLE
                    basis3_npa: 303
                    basis3_pd_end: 2026-03-01
                    basis3_pd_start: 2026-03-01
                    basis4_action: EXAMPLE
                    basis4_npa: 303
                    basis4_pd_end: 2026-03-01
                    basis4_pd_start: 2026-03-01
                    basis5_action: EXAMPLE
                    basis5_npa: 303
                    basis5_pd_end: 2026-03-01
                    basis5_pd_start: 2026-03-01
                    basis6_action: EXAMPLE
                    basis6_npa: 303
                    basis6_pd_end: 2026-03-01
                    basis6_pd_start: 2026-03-01
                    basis7_action: EXAMPLE
                    basis7_npa: 303
                    basis7_pd_end: 2026-03-01
                    basis7_pd_start: 2026-03-01
                    basis8_action: EXAMPLE
                    basis8_npa: 303
                    basis8_pd_end: 2026-03-01
                    basis8_pd_start: 2026-03-01
                    basis9_action: EXAMPLE
                    basis9_npa: 303
                    basis9_pd_end: 2026-03-01
                    basis9_pd_start: 2026-03-01
                    filler1: EXAMPLE
                    footnote: EXAMPLE
                    npa: 303
                    npa_loc: EXAMPLE
                    orig1_action: EXAMPLE
                    orig1_npa_1: 1
                    orig1_npa_2: 1
                    orig1_npa_3: 1
                    orig1_pd_end: 2026-03-01
                    orig1_pd_start: 2026-03-01
                    orig2_action: EXAMPLE
                    orig2_npa_1: 1
                    orig2_npa_2: 1
                    orig2_npa_3: 1
                    orig2_pd_end: 2026-03-01
                    orig2_pd_start: 2026-03-01
                    st_prov_ter: EXAMPLE
                    test1_end: 2026-03-01
                    test1_nxxline: EXAMPLE
                    test1_start: 2026-03-01
                    test2_end: 2026-03-01
                    test2_nxxline: EXAMPLE
                    test2_start: 2026-03-01
                    test3_end: 2026-03-01
                    test3_nxxline: EXAMPLE
                    test3_start: 2026-03-01
                    test4_end: 2026-03-01
                    test4_nxxline: EXAMPLE
                    test4_start: 2026-03-01
                    tzone_1: EXAMPLE
                    tzone_2: EXAMPLE
                    tzone_3: EXAMPLE
                    tzone_4: EXAMPLE
                table: lerg_3
                total_unique: 1
        "400":
          description: Causes include an unknown column in `fields` or as a filter key, `*` combined with other field names, an
            empty filter value, a repeated `fields`/`limit`/`offset`, and a non-numeric `limit`/`offset`. The message
            names the offending key and may carry a `did you mean` hint.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LergErrorResponse"
      security:
        - apiToken: []
  /v1/lerg/lerg_4:
    get:
      tags:
        - LERG
      summary: Query lerg_4 with exact-match column filters
      description: >-
        `GET /v1/lerg/lerg_4?column=value&…`


        Every parameter below except `fields`, `limit` and `offset` is a column of lerg_4. Repeat a parameter to match
        any of several values (an IN-list); omit it to leave that column unfiltered. Filters are exact-match and are
        ANDed together.


        A comma inside a filter value is **not** a separator — only `fields` is comma-separated. `?npa=303,720` looks
        for the literal value `303,720`, matches nothing, and returns 200 with an empty `data`. Repeat the key instead:
        `?npa=303&npa=720`.


        This table has no hash index, so every query is a filtered scan; keep `limit` modest.


        This is the same route as `queryTable` with `table_name=lerg_4`, spelled out so the columns are nameable. For an
        operator other than equality, or to join to another table, use `complexQuery`.


        Column definitions are paraphrased from the TruOps TRA LERG Routing Guide, General Information, BD-TRA-LERG-GEN
        Issue 2 (2026-08-01), section 3.1.
      operationId: queryLerg4
      parameters:
        - name: fields
          in: query
          description: "Comma-separated projection. Omit it, or pass `*`, for every column. `*` cannot be combined with other
            names. Valid names: network, cluster, member_fr, member_to, assignee_co, op_ctr_contact, phone, filler1."
          required: false
          schema:
            type: string
          example: network,cluster,member_fr,member_to
        - name: limit
          in: query
          description: "Page size, default 100. Clamped to 10,000: a larger value is accepted and silently reduced, never
            rejected, so no `maximum` is declared here. `limit=0` is accepted and returns an empty page. On a query no
            index can narrow this also bounds the work: the scan stops at `offset + limit` distinct rows."
          required: false
          schema:
            type: integer
            minimum: 0
          example: 100
        - name: offset
          in: query
          description: "Rows to skip for pagination, default 0. Not capped, deliberately: a ceiling here would make paging through
            a table impossible. On a query no index can narrow, `offset` counts towards the scan bound of `offset +
            limit` distinct rows, so a deep page costs the rows it skips -- `offset=1500000` reads 1.5M rows whatever
            `limit` says. Filter on an indexed column to page at constant cost."
          required: false
          schema:
            type: integer
            minimum: 0
          example: 0
        - name: network
          in: query
          description: "Network (string). Network part of the SS7 point code, its first three digits. Served as text with its
            leading zeros (005, not 5), because it is a code whose digits are positional, like `cluster`, `member_fr`
            and `member_to`. Codes 1 to 5 are set aside for small signalling networks: under 1 to 4 each cluster value
            serves as a small network's code, and under 5 the clusters and members are split into blocks for groups too
            small for a network code of their own."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - "005"
        - name: cluster
          in: query
          description: Cluster (string). Cluster part of the point code, the middle three digits, as text with leading zeros. XXX
            means the assignee holds the whole network and may hand out any cluster from 000 to 255 itself.
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - "001"
        - name: member_fr
          in: query
          description: Member From (string). First member of the assigned range, the last three digits of the point code, as text
            with leading zeros. XXX means the assignee holds the whole cluster and may hand out any member from 000 to
            255 itself. Small companies receive blocks of four members, from `member_fr` to `member_to`.
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - "000"
        - name: member_to
          in: query
          description: Member To (string). Last member of the assigned range, as text with leading zeros; XXX as in `member_fr`.
            In current data almost every numeric range is a block of four, ending three above `member_fr`, and a few
            rows pair XXX in `member_fr` with a number here.
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - "255"
        - name: assignee_co
          in: query
          description: "Assignee Company (string). Name of the company holding the point codes at the level this row assigns: a
            whole network, a cluster, or a range of members."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: op_ctr_contact
          in: query
          description: "Op Center Contact (string). Contact at the assignee's operations center: a person's name or a department
            such as NETWORK OPERATIONS CENTER. The LERG glossary does not define this column."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: phone
          in: query
          description: "Phone (string). Telephone number for `op_ctr_contact`, as free text: mostly NNN-NNN-NNNN, sometimes with
            an extension, other punctuation or an international prefix."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: filler1
          in: query
          description: "Filler 1 (string). Nullable: rows where this column is null never match a filter on it. Unused filler
            column from the LERG layout; always null."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
      responses:
        "200":
          description: Envelope with `table`, `count`, `total_unique` and `data[]`, one object per row projected to `fields`.
          content:
            application/json:
              schema:
                type: object
                properties:
                  count:
                    type: integer
                  data:
                    type: array
                    items:
                      type: object
                  table:
                    type: string
                  total_unique:
                    type: integer
                    description: Distinct rows matched before `limit`/`offset`. A query no index can narrow stops scanning once it holds
                      `offset + limit` distinct rows, counting `limit` after it is clamped to 10,000, so a value exactly
                      equal to that sum means "at least this many", not a total; raise `limit` for the true count. Any
                      smaller value is exact, as is every value on an index-backed query.
              example:
                count: 1
                data:
                  - assignee_co: EXAMPLE
                    cluster: "001"
                    filler1: EXAMPLE
                    member_fr: "000"
                    member_to: "255"
                    network: "005"
                    op_ctr_contact: EXAMPLE
                    phone: EXAMPLE
                table: lerg_4
                total_unique: 1
        "400":
          description: Causes include an unknown column in `fields` or as a filter key, `*` combined with other field names, an
            empty filter value, a repeated `fields`/`limit`/`offset`, and a non-numeric `limit`/`offset`. The message
            names the offending key and may carry a `did you mean` hint.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LergErrorResponse"
      security:
        - apiToken: []
  /v1/lerg/lerg_5:
    get:
      tags:
        - LERG
      summary: Query lerg_5 with exact-match column filters
      description: >-
        `GET /v1/lerg/lerg_5?column=value&…`


        Every parameter below except `fields`, `limit` and `offset` is a column of lerg_5. Repeat a parameter to match
        any of several values (an IN-list); omit it to leave that column unfiltered. Filters are exact-match and are
        ANDed together.


        A comma inside a filter value is **not** a separator — only `fields` is comma-separated. `?npa=303,720` looks
        for the literal value `303,720`, matches nothing, and returns 200 with an empty `data`. Repeat the key instead:
        `?npa=303&npa=720`.


        This table has no hash index, so every query is a filtered scan; keep `limit` modest.


        This is the same route as `queryTable` with `table_name=lerg_5`, spelled out so the columns are nameable. For an
        operator other than equality, or to join to another table, use `complexQuery`.


        Column definitions are paraphrased from the TruOps TRA LERG Routing Guide, General Information, BD-TRA-LERG-GEN
        Issue 2 (2026-08-01), section 3.1.
      operationId: queryLerg5
      parameters:
        - name: fields
          in: query
          description: "Comma-separated projection. Omit it, or pass `*`, for every column. `*` cannot be combined with other
            names. Valid names: region, lata, lata_name, npa1, npa2, npa3, npa4, npa5, npa6, npa7, npa8, npa9, npa10,
            npa11, npa12, npa13, npa14, npa15, npa16, npa17, npa18, npa19, npa20, npa21, npa22, npa23, npa24, npa25,
            npa26, npa27, npa28, npa29, npa30, npa31, npa32, npa33, npa34, npa35, npa36, npa37, npa38, npa39, npa40,
            npa41, npa42, npa43, npa44, npa45, npa46, npa47, npa48, npa49, npa50, npa51, npa52, npa53, npa54, npa55,
            npa56, npa57, npa58, npa59, npa60, npa61, npa62, npa63, npa64, npa65, npa66, npa67, npa68, npa69, npa70,
            npa71, npa72, npa73, npa74, npa75, npa76, npa77, npa78, npa79, npa80, npa81, npa82, npa83, npa84, npa85,
            npa86, npa87, npa88, npa89, npa90, npa91, npa92, npa93, npa94, npa95, npa96, npa97, npa98, npa99, npa100."
          required: false
          schema:
            type: string
          example: region,lata,lata_name,npa1
        - name: limit
          in: query
          description: "Page size, default 100. Clamped to 10,000: a larger value is accepted and silently reduced, never
            rejected, so no `maximum` is declared here. `limit=0` is accepted and returns an empty page. On a query no
            index can narrow this also bounds the work: the scan stops at `offset + limit` distinct rows."
          required: false
          schema:
            type: integer
            minimum: 0
          example: 100
        - name: offset
          in: query
          description: "Rows to skip for pagination, default 0. Not capped, deliberately: a ceiling here would make paging through
            a table impossible. On a query no index can narrow, `offset` counts towards the scan bound of `offset +
            limit` distinct rows, so a deep page costs the rows it skips -- `offset=1500000` reads 1.5M rows whatever
            `limit` says. Filter on an indexed column to page at constant cost."
          required: false
          schema:
            type: integer
            minimum: 0
          example: 0
        - name: region
          in: query
          description: "Region (string). Region the LATA is grouped under, which follows from the LATA's first digit. For 1 to 7
            it names the Regional Bell company that first served that series: 1 NYNEX, 2 BELL ATLANTIC, 3 AMERITECH, 4
            BELLSOUTH, 5 SOUTHWESTERN BELL CORPORATION, 6 US WEST, 7 PACIFIC BELL CORPORATION. 8 is OFF SHORE AND
            INTERNATIONAL (NANP areas outside the US, and US territories; in current data Alaska and Hawaii too) and 9
            is INDEPENDENTS (US independent companies that took up LATA numbering). In current data five-digit LATAs
            follow the same rule."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: lata
          in: query
          description: "LATA (integer). The LATA this row lists NPAs for, and the table's key: a three-digit code, or five digits
            where the last two are a Florida LATA sub-zone (an Equal Access Exchange Area). Some codes stand for whole
            NANP countries or territories (888 is Canada), and 99999 marks codes that belong to no single LATA."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 656
        - name: lata_name
          in: query
          description: LATA Name (string). Name of the LATA, or of the LATA-like area for non-LATA regions.
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - DENVER
        - name: npa1
          in: query
          description: "NPA 1 (integer). An NPA (area code) in use within the LATA, as a three-digit number. Unused positions are
            null; in current data each LATA lists its NPAs in ascending order from `npa1`, with no gaps. Required: every
            LATA lists at least one NPA."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
        - name: npa2
          in: query
          description: "NPA 2 (integer). Nullable: rows where this column is null never match a filter on it. An NPA (area code)
            in use within the LATA, as a three-digit number. Unused positions are null; in current data each LATA lists
            its NPAs in ascending order from `npa1`, with no gaps."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
        - name: npa3
          in: query
          description: "NPA 3 (integer). Nullable: rows where this column is null never match a filter on it. An NPA (area code)
            in use within the LATA, as a three-digit number. Unused positions are null; in current data each LATA lists
            its NPAs in ascending order from `npa1`, with no gaps."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
        - name: npa4
          in: query
          description: "NPA 4 (integer). Nullable: rows where this column is null never match a filter on it. An NPA (area code)
            in use within the LATA, as a three-digit number. Unused positions are null; in current data each LATA lists
            its NPAs in ascending order from `npa1`, with no gaps."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
        - name: npa5
          in: query
          description: "NPA 5 (integer). Nullable: rows where this column is null never match a filter on it. An NPA (area code)
            in use within the LATA, as a three-digit number. Unused positions are null; in current data each LATA lists
            its NPAs in ascending order from `npa1`, with no gaps."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
        - name: npa6
          in: query
          description: "NPA 6 (integer). Nullable: rows where this column is null never match a filter on it. An NPA (area code)
            in use within the LATA, as a three-digit number. Unused positions are null; in current data each LATA lists
            its NPAs in ascending order from `npa1`, with no gaps."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
        - name: npa7
          in: query
          description: "NPA 7 (integer). Nullable: rows where this column is null never match a filter on it. An NPA (area code)
            in use within the LATA, as a three-digit number. Unused positions are null; in current data each LATA lists
            its NPAs in ascending order from `npa1`, with no gaps."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
        - name: npa8
          in: query
          description: "NPA 8 (integer). Nullable: rows where this column is null never match a filter on it. An NPA (area code)
            in use within the LATA, as a three-digit number. Unused positions are null; in current data each LATA lists
            its NPAs in ascending order from `npa1`, with no gaps."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
        - name: npa9
          in: query
          description: "NPA 9 (integer). Nullable: rows where this column is null never match a filter on it. An NPA (area code)
            in use within the LATA, as a three-digit number. Unused positions are null; in current data each LATA lists
            its NPAs in ascending order from `npa1`, with no gaps."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
        - name: npa10
          in: query
          description: "NPA 10 (integer). Nullable: rows where this column is null never match a filter on it. An NPA (area code)
            in use within the LATA, as a three-digit number. Unused positions are null; in current data each LATA lists
            its NPAs in ascending order from `npa1`, with no gaps."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
        - name: npa11
          in: query
          description: "NPA 11 (integer). Nullable: rows where this column is null never match a filter on it. An NPA (area code)
            in use within the LATA, as a three-digit number. Unused positions are null; in current data each LATA lists
            its NPAs in ascending order from `npa1`, with no gaps."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
        - name: npa12
          in: query
          description: "NPA 12 (integer). Nullable: rows where this column is null never match a filter on it. An NPA (area code)
            in use within the LATA, as a three-digit number. Unused positions are null; in current data each LATA lists
            its NPAs in ascending order from `npa1`, with no gaps."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
        - name: npa13
          in: query
          description: "NPA 13 (integer). Nullable: rows where this column is null never match a filter on it. An NPA (area code)
            in use within the LATA, as a three-digit number. Unused positions are null; in current data each LATA lists
            its NPAs in ascending order from `npa1`, with no gaps."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
        - name: npa14
          in: query
          description: "NPA 14 (integer). Nullable: rows where this column is null never match a filter on it. An NPA (area code)
            in use within the LATA, as a three-digit number. Unused positions are null; in current data each LATA lists
            its NPAs in ascending order from `npa1`, with no gaps."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
        - name: npa15
          in: query
          description: "NPA 15 (integer). Nullable: rows where this column is null never match a filter on it. An NPA (area code)
            in use within the LATA, as a three-digit number. Unused positions are null; in current data each LATA lists
            its NPAs in ascending order from `npa1`, with no gaps."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
        - name: npa16
          in: query
          description: "NPA 16 (integer). Nullable: rows where this column is null never match a filter on it. An NPA (area code)
            in use within the LATA, as a three-digit number. Unused positions are null; in current data each LATA lists
            its NPAs in ascending order from `npa1`, with no gaps."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
        - name: npa17
          in: query
          description: "NPA 17 (integer). Nullable: rows where this column is null never match a filter on it. An NPA (area code)
            in use within the LATA, as a three-digit number. Unused positions are null; in current data each LATA lists
            its NPAs in ascending order from `npa1`, with no gaps."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
        - name: npa18
          in: query
          description: "NPA 18 (integer). Nullable: rows where this column is null never match a filter on it. An NPA (area code)
            in use within the LATA, as a three-digit number. Unused positions are null; in current data each LATA lists
            its NPAs in ascending order from `npa1`, with no gaps."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
        - name: npa19
          in: query
          description: "NPA 19 (integer). Nullable: rows where this column is null never match a filter on it. An NPA (area code)
            in use within the LATA, as a three-digit number. Unused positions are null; in current data each LATA lists
            its NPAs in ascending order from `npa1`, with no gaps."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
        - name: npa20
          in: query
          description: "NPA 20 (integer). Nullable: rows where this column is null never match a filter on it. An NPA (area code)
            in use within the LATA, as a three-digit number. Unused positions are null; in current data each LATA lists
            its NPAs in ascending order from `npa1`, with no gaps."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
        - name: npa21
          in: query
          description: "NPA 21 (integer). Nullable: rows where this column is null never match a filter on it. An NPA (area code)
            in use within the LATA, as a three-digit number. Unused positions are null; in current data each LATA lists
            its NPAs in ascending order from `npa1`, with no gaps."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
        - name: npa22
          in: query
          description: "NPA 22 (integer). Nullable: rows where this column is null never match a filter on it. An NPA (area code)
            in use within the LATA, as a three-digit number. Unused positions are null; in current data each LATA lists
            its NPAs in ascending order from `npa1`, with no gaps."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
        - name: npa23
          in: query
          description: "NPA 23 (integer). Nullable: rows where this column is null never match a filter on it. An NPA (area code)
            in use within the LATA, as a three-digit number. Unused positions are null; in current data each LATA lists
            its NPAs in ascending order from `npa1`, with no gaps."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
        - name: npa24
          in: query
          description: "NPA 24 (integer). Nullable: rows where this column is null never match a filter on it. An NPA (area code)
            in use within the LATA, as a three-digit number. Unused positions are null; in current data each LATA lists
            its NPAs in ascending order from `npa1`, with no gaps."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
        - name: npa25
          in: query
          description: "NPA 25 (integer). Nullable: rows where this column is null never match a filter on it. An NPA (area code)
            in use within the LATA, as a three-digit number. Unused positions are null; in current data each LATA lists
            its NPAs in ascending order from `npa1`, with no gaps."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
        - name: npa26
          in: query
          description: "NPA 26 (integer). Nullable: rows where this column is null never match a filter on it. An NPA (area code)
            in use within the LATA, as a three-digit number. Unused positions are null; in current data each LATA lists
            its NPAs in ascending order from `npa1`, with no gaps."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
        - name: npa27
          in: query
          description: "NPA 27 (integer). Nullable: rows where this column is null never match a filter on it. An NPA (area code)
            in use within the LATA, as a three-digit number. Unused positions are null; in current data each LATA lists
            its NPAs in ascending order from `npa1`, with no gaps."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
        - name: npa28
          in: query
          description: "NPA 28 (integer). Nullable: rows where this column is null never match a filter on it. An NPA (area code)
            in use within the LATA, as a three-digit number. Unused positions are null; in current data each LATA lists
            its NPAs in ascending order from `npa1`, with no gaps."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
        - name: npa29
          in: query
          description: "NPA 29 (integer). Nullable: rows where this column is null never match a filter on it. An NPA (area code)
            in use within the LATA, as a three-digit number. Unused positions are null; in current data each LATA lists
            its NPAs in ascending order from `npa1`, with no gaps."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
        - name: npa30
          in: query
          description: "NPA 30 (integer). Nullable: rows where this column is null never match a filter on it. An NPA (area code)
            in use within the LATA, as a three-digit number. Unused positions are null; in current data each LATA lists
            its NPAs in ascending order from `npa1`, with no gaps."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
        - name: npa31
          in: query
          description: "NPA 31 (integer). Nullable: rows where this column is null never match a filter on it. An NPA (area code)
            in use within the LATA, as a three-digit number. Unused positions are null; in current data each LATA lists
            its NPAs in ascending order from `npa1`, with no gaps."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
        - name: npa32
          in: query
          description: "NPA 32 (integer). Nullable: rows where this column is null never match a filter on it. An NPA (area code)
            in use within the LATA, as a three-digit number. Unused positions are null; in current data each LATA lists
            its NPAs in ascending order from `npa1`, with no gaps."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
        - name: npa33
          in: query
          description: "NPA 33 (integer). Nullable: rows where this column is null never match a filter on it. An NPA (area code)
            in use within the LATA, as a three-digit number. Unused positions are null; in current data each LATA lists
            its NPAs in ascending order from `npa1`, with no gaps."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
        - name: npa34
          in: query
          description: "NPA 34 (integer). Nullable: rows where this column is null never match a filter on it. An NPA (area code)
            in use within the LATA, as a three-digit number. Unused positions are null; in current data each LATA lists
            its NPAs in ascending order from `npa1`, with no gaps."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
        - name: npa35
          in: query
          description: "NPA 35 (integer). Nullable: rows where this column is null never match a filter on it. An NPA (area code)
            in use within the LATA, as a three-digit number. Unused positions are null; in current data each LATA lists
            its NPAs in ascending order from `npa1`, with no gaps."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
        - name: npa36
          in: query
          description: "NPA 36 (integer). Nullable: rows where this column is null never match a filter on it. An NPA (area code)
            in use within the LATA, as a three-digit number. Unused positions are null; in current data each LATA lists
            its NPAs in ascending order from `npa1`, with no gaps."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
        - name: npa37
          in: query
          description: "NPA 37 (integer). Nullable: rows where this column is null never match a filter on it. An NPA (area code)
            in use within the LATA, as a three-digit number. Unused positions are null; in current data each LATA lists
            its NPAs in ascending order from `npa1`, with no gaps."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
        - name: npa38
          in: query
          description: "NPA 38 (integer). Nullable: rows where this column is null never match a filter on it. An NPA (area code)
            in use within the LATA, as a three-digit number. Unused positions are null; in current data each LATA lists
            its NPAs in ascending order from `npa1`, with no gaps."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
        - name: npa39
          in: query
          description: "NPA 39 (integer). Nullable: rows where this column is null never match a filter on it. An NPA (area code)
            in use within the LATA, as a three-digit number. Unused positions are null; in current data each LATA lists
            its NPAs in ascending order from `npa1`, with no gaps."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
        - name: npa40
          in: query
          description: "NPA 40 (integer). Nullable: rows where this column is null never match a filter on it. An NPA (area code)
            in use within the LATA, as a three-digit number. Unused positions are null; in current data each LATA lists
            its NPAs in ascending order from `npa1`, with no gaps."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
        - name: npa41
          in: query
          description: "NPA 41 (integer). Nullable: rows where this column is null never match a filter on it. An NPA (area code)
            in use within the LATA, as a three-digit number. Unused positions are null; in current data each LATA lists
            its NPAs in ascending order from `npa1`, with no gaps."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
        - name: npa42
          in: query
          description: "NPA 42 (integer). Nullable: rows where this column is null never match a filter on it. An NPA (area code)
            in use within the LATA, as a three-digit number. Unused positions are null; in current data each LATA lists
            its NPAs in ascending order from `npa1`, with no gaps."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
        - name: npa43
          in: query
          description: "NPA 43 (integer). Nullable: rows where this column is null never match a filter on it. An NPA (area code)
            in use within the LATA, as a three-digit number. Unused positions are null; in current data each LATA lists
            its NPAs in ascending order from `npa1`, with no gaps."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
        - name: npa44
          in: query
          description: "NPA 44 (integer). Nullable: rows where this column is null never match a filter on it. An NPA (area code)
            in use within the LATA, as a three-digit number. Unused positions are null; in current data each LATA lists
            its NPAs in ascending order from `npa1`, with no gaps."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
        - name: npa45
          in: query
          description: "NPA 45 (integer). Nullable: rows where this column is null never match a filter on it. An NPA (area code)
            in use within the LATA, as a three-digit number. Unused positions are null; in current data each LATA lists
            its NPAs in ascending order from `npa1`, with no gaps."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
        - name: npa46
          in: query
          description: "NPA 46 (integer). Nullable: rows where this column is null never match a filter on it. An NPA (area code)
            in use within the LATA, as a three-digit number. Unused positions are null; in current data each LATA lists
            its NPAs in ascending order from `npa1`, with no gaps."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
        - name: npa47
          in: query
          description: "NPA 47 (integer). Nullable: rows where this column is null never match a filter on it. An NPA (area code)
            in use within the LATA, as a three-digit number. Unused positions are null; in current data each LATA lists
            its NPAs in ascending order from `npa1`, with no gaps."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
        - name: npa48
          in: query
          description: "NPA 48 (integer). Nullable: rows where this column is null never match a filter on it. An NPA (area code)
            in use within the LATA, as a three-digit number. Unused positions are null; in current data each LATA lists
            its NPAs in ascending order from `npa1`, with no gaps."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
        - name: npa49
          in: query
          description: "NPA 49 (integer). Nullable: rows where this column is null never match a filter on it. An NPA (area code)
            in use within the LATA, as a three-digit number. Unused positions are null; in current data each LATA lists
            its NPAs in ascending order from `npa1`, with no gaps."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
        - name: npa50
          in: query
          description: "NPA 50 (integer). Nullable: rows where this column is null never match a filter on it. An NPA (area code)
            in use within the LATA, as a three-digit number. Unused positions are null; in current data each LATA lists
            its NPAs in ascending order from `npa1`, with no gaps."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
        - name: npa51
          in: query
          description: "NPA 51 (integer). Nullable: rows where this column is null never match a filter on it. An NPA (area code)
            in use within the LATA, as a three-digit number. Unused positions are null; in current data each LATA lists
            its NPAs in ascending order from `npa1`, with no gaps."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
        - name: npa52
          in: query
          description: "NPA 52 (integer). Nullable: rows where this column is null never match a filter on it. An NPA (area code)
            in use within the LATA, as a three-digit number. Unused positions are null; in current data each LATA lists
            its NPAs in ascending order from `npa1`, with no gaps."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
        - name: npa53
          in: query
          description: "NPA 53 (integer). Nullable: rows where this column is null never match a filter on it. An NPA (area code)
            in use within the LATA, as a three-digit number. Unused positions are null; in current data each LATA lists
            its NPAs in ascending order from `npa1`, with no gaps."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
        - name: npa54
          in: query
          description: "NPA 54 (integer). Nullable: rows where this column is null never match a filter on it. An NPA (area code)
            in use within the LATA, as a three-digit number. Unused positions are null; in current data each LATA lists
            its NPAs in ascending order from `npa1`, with no gaps."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
        - name: npa55
          in: query
          description: "NPA 55 (integer). Nullable: rows where this column is null never match a filter on it. An NPA (area code)
            in use within the LATA, as a three-digit number. Unused positions are null; in current data each LATA lists
            its NPAs in ascending order from `npa1`, with no gaps."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
        - name: npa56
          in: query
          description: "NPA 56 (integer). Nullable: rows where this column is null never match a filter on it. An NPA (area code)
            in use within the LATA, as a three-digit number. Unused positions are null; in current data each LATA lists
            its NPAs in ascending order from `npa1`, with no gaps."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
        - name: npa57
          in: query
          description: "NPA 57 (integer). Nullable: rows where this column is null never match a filter on it. An NPA (area code)
            in use within the LATA, as a three-digit number. Unused positions are null; in current data each LATA lists
            its NPAs in ascending order from `npa1`, with no gaps."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
        - name: npa58
          in: query
          description: "NPA 58 (integer). Nullable: rows where this column is null never match a filter on it. An NPA (area code)
            in use within the LATA, as a three-digit number. Unused positions are null; in current data each LATA lists
            its NPAs in ascending order from `npa1`, with no gaps."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
        - name: npa59
          in: query
          description: "NPA 59 (integer). Nullable: rows where this column is null never match a filter on it. An NPA (area code)
            in use within the LATA, as a three-digit number. Unused positions are null; in current data each LATA lists
            its NPAs in ascending order from `npa1`, with no gaps."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
        - name: npa60
          in: query
          description: "NPA 60 (integer). Nullable: rows where this column is null never match a filter on it. An NPA (area code)
            in use within the LATA, as a three-digit number. Unused positions are null; in current data each LATA lists
            its NPAs in ascending order from `npa1`, with no gaps."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
        - name: npa61
          in: query
          description: "NPA 61 (integer). Nullable: rows where this column is null never match a filter on it. An NPA (area code)
            in use within the LATA, as a three-digit number. Unused positions are null; in current data each LATA lists
            its NPAs in ascending order from `npa1`, with no gaps."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
        - name: npa62
          in: query
          description: "NPA 62 (integer). Nullable: rows where this column is null never match a filter on it. An NPA (area code)
            in use within the LATA, as a three-digit number. Unused positions are null; in current data each LATA lists
            its NPAs in ascending order from `npa1`, with no gaps."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
        - name: npa63
          in: query
          description: "NPA 63 (integer). Nullable: rows where this column is null never match a filter on it. An NPA (area code)
            in use within the LATA, as a three-digit number. Unused positions are null; in current data each LATA lists
            its NPAs in ascending order from `npa1`, with no gaps."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
        - name: npa64
          in: query
          description: "NPA 64 (integer). Nullable: rows where this column is null never match a filter on it. An NPA (area code)
            in use within the LATA, as a three-digit number. Unused positions are null; in current data each LATA lists
            its NPAs in ascending order from `npa1`, with no gaps."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
        - name: npa65
          in: query
          description: "NPA 65 (integer). Nullable: rows where this column is null never match a filter on it. An NPA (area code)
            in use within the LATA, as a three-digit number. Unused positions are null; in current data each LATA lists
            its NPAs in ascending order from `npa1`, with no gaps."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
        - name: npa66
          in: query
          description: "NPA 66 (integer). Nullable: rows where this column is null never match a filter on it. An NPA (area code)
            in use within the LATA, as a three-digit number. Unused positions are null; in current data each LATA lists
            its NPAs in ascending order from `npa1`, with no gaps."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
        - name: npa67
          in: query
          description: "NPA 67 (integer). Nullable: rows where this column is null never match a filter on it. An NPA (area code)
            in use within the LATA, as a three-digit number. Unused positions are null; in current data each LATA lists
            its NPAs in ascending order from `npa1`, with no gaps."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
        - name: npa68
          in: query
          description: "NPA 68 (integer). Nullable: rows where this column is null never match a filter on it. An NPA (area code)
            in use within the LATA, as a three-digit number. Unused positions are null; in current data each LATA lists
            its NPAs in ascending order from `npa1`, with no gaps."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
        - name: npa69
          in: query
          description: "NPA 69 (integer). Nullable: rows where this column is null never match a filter on it. An NPA (area code)
            in use within the LATA, as a three-digit number. Unused positions are null; in current data each LATA lists
            its NPAs in ascending order from `npa1`, with no gaps."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
        - name: npa70
          in: query
          description: "NPA 70 (integer). Nullable: rows where this column is null never match a filter on it. An NPA (area code)
            in use within the LATA, as a three-digit number. Unused positions are null; in current data each LATA lists
            its NPAs in ascending order from `npa1`, with no gaps."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
        - name: npa71
          in: query
          description: "NPA 71 (integer). Nullable: rows where this column is null never match a filter on it. An NPA (area code)
            in use within the LATA, as a three-digit number. Unused positions are null; in current data each LATA lists
            its NPAs in ascending order from `npa1`, with no gaps."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
        - name: npa72
          in: query
          description: "NPA 72 (integer). Nullable: rows where this column is null never match a filter on it. An NPA (area code)
            in use within the LATA, as a three-digit number. Unused positions are null; in current data each LATA lists
            its NPAs in ascending order from `npa1`, with no gaps."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
        - name: npa73
          in: query
          description: "NPA 73 (integer). Nullable: rows where this column is null never match a filter on it. An NPA (area code)
            in use within the LATA, as a three-digit number. Unused positions are null; in current data each LATA lists
            its NPAs in ascending order from `npa1`, with no gaps."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
        - name: npa74
          in: query
          description: "NPA 74 (integer). Nullable: rows where this column is null never match a filter on it. An NPA (area code)
            in use within the LATA, as a three-digit number. Unused positions are null; in current data each LATA lists
            its NPAs in ascending order from `npa1`, with no gaps."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
        - name: npa75
          in: query
          description: "NPA 75 (integer). Nullable: rows where this column is null never match a filter on it. An NPA (area code)
            in use within the LATA, as a three-digit number. Unused positions are null; in current data each LATA lists
            its NPAs in ascending order from `npa1`, with no gaps."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
        - name: npa76
          in: query
          description: "NPA 76 (integer). Nullable: rows where this column is null never match a filter on it. An NPA (area code)
            in use within the LATA, as a three-digit number. Unused positions are null; in current data each LATA lists
            its NPAs in ascending order from `npa1`, with no gaps."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
        - name: npa77
          in: query
          description: "NPA 77 (integer). Nullable: rows where this column is null never match a filter on it. An NPA (area code)
            in use within the LATA, as a three-digit number. Unused positions are null; in current data each LATA lists
            its NPAs in ascending order from `npa1`, with no gaps."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
        - name: npa78
          in: query
          description: "NPA 78 (integer). Nullable: rows where this column is null never match a filter on it. An NPA (area code)
            in use within the LATA, as a three-digit number. Unused positions are null; in current data each LATA lists
            its NPAs in ascending order from `npa1`, with no gaps."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
        - name: npa79
          in: query
          description: "NPA 79 (integer). Nullable: rows where this column is null never match a filter on it. An NPA (area code)
            in use within the LATA, as a three-digit number. Unused positions are null; in current data each LATA lists
            its NPAs in ascending order from `npa1`, with no gaps."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
        - name: npa80
          in: query
          description: "NPA 80 (integer). Nullable: rows where this column is null never match a filter on it. An NPA (area code)
            in use within the LATA, as a three-digit number. Unused positions are null; in current data each LATA lists
            its NPAs in ascending order from `npa1`, with no gaps."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
        - name: npa81
          in: query
          description: "NPA 81 (integer). Nullable: rows where this column is null never match a filter on it. An NPA (area code)
            in use within the LATA, as a three-digit number. Unused positions are null; in current data each LATA lists
            its NPAs in ascending order from `npa1`, with no gaps."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
        - name: npa82
          in: query
          description: "NPA 82 (integer). Nullable: rows where this column is null never match a filter on it. An NPA (area code)
            in use within the LATA, as a three-digit number. Unused positions are null; in current data each LATA lists
            its NPAs in ascending order from `npa1`, with no gaps."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
        - name: npa83
          in: query
          description: "NPA 83 (integer). Nullable: rows where this column is null never match a filter on it. An NPA (area code)
            in use within the LATA, as a three-digit number. Unused positions are null; in current data each LATA lists
            its NPAs in ascending order from `npa1`, with no gaps."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
        - name: npa84
          in: query
          description: "NPA 84 (integer). Nullable: rows where this column is null never match a filter on it. An NPA (area code)
            in use within the LATA, as a three-digit number. Unused positions are null; in current data each LATA lists
            its NPAs in ascending order from `npa1`, with no gaps."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
        - name: npa85
          in: query
          description: "NPA 85 (integer). Nullable: rows where this column is null never match a filter on it. An NPA (area code)
            in use within the LATA, as a three-digit number. Unused positions are null; in current data each LATA lists
            its NPAs in ascending order from `npa1`, with no gaps."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
        - name: npa86
          in: query
          description: "NPA 86 (integer). Nullable: rows where this column is null never match a filter on it. An NPA (area code)
            in use within the LATA, as a three-digit number. Unused positions are null; in current data each LATA lists
            its NPAs in ascending order from `npa1`, with no gaps."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
        - name: npa87
          in: query
          description: "NPA 87 (integer). Nullable: rows where this column is null never match a filter on it. An NPA (area code)
            in use within the LATA, as a three-digit number. Unused positions are null; in current data each LATA lists
            its NPAs in ascending order from `npa1`, with no gaps."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
        - name: npa88
          in: query
          description: "NPA 88 (integer). Nullable: rows where this column is null never match a filter on it. An NPA (area code)
            in use within the LATA, as a three-digit number. Unused positions are null; in current data each LATA lists
            its NPAs in ascending order from `npa1`, with no gaps."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
        - name: npa89
          in: query
          description: "NPA 89 (integer). Nullable: rows where this column is null never match a filter on it. An NPA (area code)
            in use within the LATA, as a three-digit number. Unused positions are null; in current data each LATA lists
            its NPAs in ascending order from `npa1`, with no gaps."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
        - name: npa90
          in: query
          description: "NPA 90 (integer). Nullable: rows where this column is null never match a filter on it. An NPA (area code)
            in use within the LATA, as a three-digit number. Unused positions are null; in current data each LATA lists
            its NPAs in ascending order from `npa1`, with no gaps."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
        - name: npa91
          in: query
          description: "NPA 91 (integer). Nullable: rows where this column is null never match a filter on it. An NPA (area code)
            in use within the LATA, as a three-digit number. Unused positions are null; in current data each LATA lists
            its NPAs in ascending order from `npa1`, with no gaps."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
        - name: npa92
          in: query
          description: "NPA 92 (integer). Nullable: rows where this column is null never match a filter on it. An NPA (area code)
            in use within the LATA, as a three-digit number. Unused positions are null; in current data each LATA lists
            its NPAs in ascending order from `npa1`, with no gaps."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
        - name: npa93
          in: query
          description: "NPA 93 (integer). Nullable: rows where this column is null never match a filter on it. An NPA (area code)
            in use within the LATA, as a three-digit number. Unused positions are null; in current data each LATA lists
            its NPAs in ascending order from `npa1`, with no gaps."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
        - name: npa94
          in: query
          description: "NPA 94 (integer). Nullable: rows where this column is null never match a filter on it. An NPA (area code)
            in use within the LATA, as a three-digit number. Unused positions are null; in current data each LATA lists
            its NPAs in ascending order from `npa1`, with no gaps."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
        - name: npa95
          in: query
          description: "NPA 95 (integer). Nullable: rows where this column is null never match a filter on it. An NPA (area code)
            in use within the LATA, as a three-digit number. Unused positions are null; in current data each LATA lists
            its NPAs in ascending order from `npa1`, with no gaps."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
        - name: npa96
          in: query
          description: "NPA 96 (integer). Nullable: rows where this column is null never match a filter on it. An NPA (area code)
            in use within the LATA, as a three-digit number. Unused positions are null; in current data each LATA lists
            its NPAs in ascending order from `npa1`, with no gaps."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
        - name: npa97
          in: query
          description: "NPA 97 (integer). Nullable: rows where this column is null never match a filter on it. An NPA (area code)
            in use within the LATA, as a three-digit number. Unused positions are null; in current data each LATA lists
            its NPAs in ascending order from `npa1`, with no gaps."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
        - name: npa98
          in: query
          description: "NPA 98 (integer). Nullable: rows where this column is null never match a filter on it. An NPA (area code)
            in use within the LATA, as a three-digit number. Unused positions are null; in current data each LATA lists
            its NPAs in ascending order from `npa1`, with no gaps."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
        - name: npa99
          in: query
          description: "NPA 99 (integer). Nullable: rows where this column is null never match a filter on it. An NPA (area code)
            in use within the LATA, as a three-digit number. Unused positions are null; in current data each LATA lists
            its NPAs in ascending order from `npa1`, with no gaps."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
        - name: npa100
          in: query
          description: "NPA 100 (integer). Nullable: rows where this column is null never match a filter on it. An NPA (area code)
            in use within the LATA, as a three-digit number. Unused positions are null; in current data each LATA lists
            its NPAs in ascending order from `npa1`, with no gaps."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
      responses:
        "200":
          description: Envelope with `table`, `count`, `total_unique` and `data[]`, one object per row projected to `fields`.
          content:
            application/json:
              schema:
                type: object
                properties:
                  count:
                    type: integer
                  data:
                    type: array
                    items:
                      type: object
                  table:
                    type: string
                  total_unique:
                    type: integer
                    description: Distinct rows matched before `limit`/`offset`. A query no index can narrow stops scanning once it holds
                      `offset + limit` distinct rows, counting `limit` after it is clamped to 10,000, so a value exactly
                      equal to that sum means "at least this many", not a total; raise `limit` for the true count. Any
                      smaller value is exact, as is every value on an index-backed query.
              example:
                count: 1
                data:
                  - lata: 656
                    lata_name: DENVER
                    npa1: 1
                    npa10: 1
                    npa100: 1
                    npa11: 1
                    npa12: 1
                    npa13: 1
                    npa14: 1
                    npa15: 1
                    npa16: 1
                    npa17: 1
                    npa18: 1
                    npa19: 1
                    npa2: 1
                    npa20: 1
                    npa21: 1
                    npa22: 1
                    npa23: 1
                    npa24: 1
                    npa25: 1
                    npa26: 1
                    npa27: 1
                    npa28: 1
                    npa29: 1
                    npa3: 1
                    npa30: 1
                    npa31: 1
                    npa32: 1
                    npa33: 1
                    npa34: 1
                    npa35: 1
                    npa36: 1
                    npa37: 1
                    npa38: 1
                    npa39: 1
                    npa4: 1
                    npa40: 1
                    npa41: 1
                    npa42: 1
                    npa43: 1
                    npa44: 1
                    npa45: 1
                    npa46: 1
                    npa47: 1
                    npa48: 1
                    npa49: 1
                    npa5: 1
                    npa50: 1
                    npa51: 1
                    npa52: 1
                    npa53: 1
                    npa54: 1
                    npa55: 1
                    npa56: 1
                    npa57: 1
                    npa58: 1
                    npa59: 1
                    npa6: 1
                    npa60: 1
                    npa61: 1
                    npa62: 1
                    npa63: 1
                    npa64: 1
                    npa65: 1
                    npa66: 1
                    npa67: 1
                    npa68: 1
                    npa69: 1
                    npa7: 1
                    npa70: 1
                    npa71: 1
                    npa72: 1
                    npa73: 1
                    npa74: 1
                    npa75: 1
                    npa76: 1
                    npa77: 1
                    npa78: 1
                    npa79: 1
                    npa8: 1
                    npa80: 1
                    npa81: 1
                    npa82: 1
                    npa83: 1
                    npa84: 1
                    npa85: 1
                    npa86: 1
                    npa87: 1
                    npa88: 1
                    npa89: 1
                    npa9: 1
                    npa90: 1
                    npa91: 1
                    npa92: 1
                    npa93: 1
                    npa94: 1
                    npa95: 1
                    npa96: 1
                    npa97: 1
                    npa98: 1
                    npa99: 1
                    region: EXAMPLE
                table: lerg_5
                total_unique: 1
        "400":
          description: Causes include an unknown column in `fields` or as a filter key, `*` combined with other field names, an
            empty filter value, a repeated `fields`/`limit`/`offset`, and a non-numeric `limit`/`offset`. The message
            names the offending key and may carry a `did you mean` hint.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LergErrorResponse"
      security:
        - apiToken: []
  /v1/lerg/lerg_6:
    get:
      tags:
        - LERG
      summary: Query lerg_6 with exact-match column filters
      description: >-
        `GET /v1/lerg/lerg_6?column=value&…`


        Every parameter below except `fields`, `limit` and `offset` is a column of lerg_6. Repeat a parameter to match
        any of several values (an IN-list); omit it to leave that column unfiltered. Filters are exact-match and are
        ANDed together.


        A comma inside a filter value is **not** a separator — only `fields` is comma-separated. `?npa=303,720` looks
        for the literal value `303,720`, matches nothing, and returns 200 with an empty `data`. Repeat the key instead:
        `?npa=303&npa=720`.


        Indexed columns, fastest when one is present: npa, nxx, ocn, switch.


        This is the same route as `queryTable` with `table_name=lerg_6`, spelled out so the columns are nameable. For an
        operator other than equality, or to join to another table, use `complexQuery`.


        Column definitions are paraphrased from the TruOps TRA LERG Routing Guide, General Information, BD-TRA-LERG-GEN
        Issue 2 (2026-08-01), section 3.1.
      operationId: queryLerg6
      parameters:
        - name: fields
          in: query
          description: "Comma-separated projection. Omit it, or pass `*`, for every column. `*` cannot be combined with other
            names. Valid names: lata, lata_name, status, eff_date, npa, nxx, block_id, filler1, coc_type, ssc, dind,
            td_eo, td_at, portable, aocn, filler2, ocn, loc_name, loc_index, loc_state, rc_abbre, filler9, line_fr,
            line_to, switch, sha_indicator, filler3, test_line_num, test_line_response, filler8, thousand_blk_pool,
            rc_lata, filler4, creation_date, filler5, e_status_date, filler6, last_modified, filler7."
          required: false
          schema:
            type: string
          example: lata,lata_name,status,eff_date
        - name: limit
          in: query
          description: "Page size, default 100. Clamped to 10,000: a larger value is accepted and silently reduced, never
            rejected, so no `maximum` is declared here. `limit=0` is accepted and returns an empty page. On a query no
            index can narrow this also bounds the work: the scan stops at `offset + limit` distinct rows."
          required: false
          schema:
            type: integer
            minimum: 0
          example: 100
        - name: offset
          in: query
          description: "Rows to skip for pagination, default 0. Not capped, deliberately: a ceiling here would make paging through
            a table impossible. On a query no index can narrow, `offset` counts towards the scan bound of `offset +
            limit` distinct rows, so a deep page costs the rows it skips -- `offset=1500000` reads 1.5M rows whatever
            `limit` says. Filter on an indexed column to page at constant cost."
          required: false
          schema:
            type: integer
            minimum: 0
          example: 0
        - name: lata
          in: query
          description: LATA (integer). Local Access and Transport Area, the numeric code of the geographic area this record
            belongs to. 999 and 99999 mark non-geographic and reserved assignments and are real values, not nulls.
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 656
        - name: lata_name
          in: query
          description: LATA Name (string). Name of the LATA, or of the LATA-like area for non-LATA regions.
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - DENVER
        - name: status
          in: query
          description: "Status (string). Nullable: rows where this column is null never match a filter on it. Pending activity on
            this record, read together with the effective date: E = the record is being established, M = the record is
            being modified (compare against the preceding current view to see what changes), D = the record is being
            disconnected. Null means the record is current and active as of this LERG issue."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: eff_date
          in: query
          description: "Effective Date (date). Nullable: rows where this column is null never match a filter on it. Date on which
            the activity in `status` takes effect, as YYYY-MM-DD. Null when the record is current. The LERG is a
            planning tool: this date is a forecast, not an activation record."
          required: false
          schema:
            type: array
            items:
              type: string
              format: date
          style: form
          explode: true
          example:
            - 2026-03-01
        - name: npa
          in: query
          description: NPA (integer). Indexed. Numbering Plan Area, the three-digit area code.
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 303
        - name: nxx
          in: query
          description: "NXX (string). Indexed only in combination with `npa`; on its own it is a full scan. Matched as exact text:
            `007` matches the access tandem rows that hold `007` and `7` matches none of them; send `+` as `%2B`.
            Central office code, the three digits following the area code, served as text because it is a code, not a
            number. 0XX and 1XX values are not ordinary NXXs: they carry access tandem codes (listed with their operator
            service codes in LERG 6 ATC) or local plant-test uses, and are not administered nationally. On access tandem
            records the leading zero is part of the code (007 is not 7), and a lone + stands in for a code when calls
            route straight to the named switch, so the value is not always digits."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - "629"
        - name: block_id
          in: query
          description: Block ID (string). Thousands-block identifier. A means the whole NPA NXX as assigned to the code holder; 0
            through 9 identify a pooled thousands block (for example 3 covers line numbers 3000-3999) assigned to a
            block holder. Not all of 0-9 need exist; only assigned blocks appear.
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - A
        - name: filler1
          in: query
          description: "Filler 1 (string). Nullable: rows where this column is null never match a filter on it. Unused filler
            column from the LERG layout; always null."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: coc_type
          in: query
          description: "COC Type (string). Central Office Code type, the primary use of the NPA NXX or block: ATC = access tandem
            code, CDA = customer directory assistance (555-1212 only), EOC = end office code (wireline POTS), PLN =
            planned code (not routable; it can be neither ported nor pooled), PMC = public mobile carrier (wireless,
            Type 2A interconnection), RCC = radio common carrier (wireless, Type 1 interconnection), SP1 and SP2 =
            miscellaneous Type 1 and Type 2A service providers, SIC = special 800 service code, TST = standard plant
            test code, VOI = VoIP. Read with `ssc`."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: ssc
          in: query
          description: SSC (string). Special Service Code, further qualifying `coc_type`. N when no special service applies; other
            letters (A, B, C, V, ...) identify intraLATA-only, paging, cellular, IP voice and similar service
            restrictions defined in the LERG glossary.
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: dind
          in: query
          description: "Dialable Indicator (boolean). Dialable indicator: true when a subscriber or an operator can dial this NPA
            NXX; false when it is not dialable."
          required: false
          schema:
            type: array
            items:
              type: boolean
          style: form
          explode: true
          example:
            - true
        - name: td_eo
          in: query
          description: "Terminating Digits EO (string). Terminating digits outpulsed when a call is routed directly to the end
            office: typically 7 or 10. NA on thousands-block records, which never carry this field."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: td_at
          in: query
          description: "Terminating Digits AT (string). Terminating digits outpulsed when a call is routed via the primary access
            tandem: typically 7 or 10. NA on thousands-block records."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: portable
          in: query
          description: Portable (boolean). True when one or more line numbers in this NPA NXX or block may be ported, by
            thousands-block pooling or by service provider number portability. Paging numbers are never portable.
          required: false
          schema:
            type: array
            items:
              type: boolean
          style: form
          explode: true
          example:
            - true
        - name: aocn
          in: query
          description: "AOCN (string). Administrative Operating Company Number: the OCN of the company that maintains this record
            in the BIRRDS database. A company that administers its own records usually puts its own OCN here; a
            third-party administrator has a separate value. Since 2018 each new administrator gets a distinct OCN from
            TRA for this role, and since 2020 those values begin with G."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - "6529"
        - name: filler2
          in: query
          description: "Filler 2 (string). Nullable: rows where this column is null never match a filter on it. Unused filler
            column from the LERG layout; always null."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: ocn
          in: query
          description: "OCN (string). Indexed. Operating Company Number: the four-character alphanumeric code TRA uses to identify
            the company that holds this record's numbering resource, switch, or other assignment. NECA Company Codes are
            a subset; TRA assigns the rest. Names are in LERG 1."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - "6529"
        - name: loc_name
          in: query
          description: Locality Name (string). Locality served by this NPA NXX or block, up to ten characters and abbreviated when
            longer. Often the place name printed on the subscriber's bill. XXXXXXXXXX on oddball and access tandem
            codes, which have no locality.
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - DENVER
        - name: loc_index
          in: query
          description: "Locality Index (string). Nullable: rows where this column is null never match a filter on it.
            Two-character index that distinguishes two localities of the same name within one state or province. Null
            when the name is unambiguous."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: loc_state
          in: query
          description: Locality State (string). Two-letter state, province, or territory of the locality.
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - CO
        - name: rc_abbre
          in: query
          description: Rate Center Abbreviation (string). Abbreviated name of the Rate Center, the geographic area whose midpoint
            is used for mileage-based rating. XXXXXXXXXX on codes that have no Rate Center.
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: filler9
          in: query
          description: "Filler 9 (string). Nullable: rows where this column is null never match a filter on it. Unused filler
            column from the LERG layout; always null."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: line_fr
          in: query
          description: "Line From (string). First line number of the range this record covers: 0000 for a whole NXX (block A), or
            the block digit followed by 000 for a thousands block (3000 for block 3). NXX 555 is the exception, covering
            only 1212."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: line_to
          in: query
          description: "Line To (string). Last line number of the range this record covers: 9999 for a whole NXX (block A), or the
            block digit followed by 999 for a thousands block (3999 for block 3). NXX 555 is the exception, covering
            only 1212."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: switch
          in: query
          description: "Switch (string). Indexed. CLLI code of the switching entity or point of interface that serves this record.
            Not always a true CLLI: oddball codes carry XXXXXXXXXXX, and in the non-geographic 5XX, 600 and 9YY NPAs the
            value reports assignment, status or routing information about the NXX instead of naming a switch. Caribbean
            and Bermuda NXXs carry SWCHxxUNKNO, and NPA 710 carries RTGETSAGENT."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - DNVRCOMADS0
        - name: sha_indicator
          in: query
          description: SHA Indicator (string). Switch Homing Arrangement indicator, a two-digit code that together with `switch`
            selects which homing arrangement in LERG 7 SHA applies. 00 is the default arrangement.
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: filler3
          in: query
          description: "Filler 3 (string). Nullable: rows where this column is null never match a filter on it. Unused filler
            column from the LERG layout; always null."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: test_line_num
          in: query
          description: "Test Line Number (string). Nullable: rows where this column is null never match a filter on it. Optional
            four-digit line number within this NPA NXX that the service provider offers as a test line. Null when none
            is published."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: test_line_response
          in: query
          description: "Test Line Response (string). Nullable: rows where this column is null never match a filter on it. What a
            call to the test line returns: A = announcement, M = milliwatt tone. Null when no test line is published."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: filler8
          in: query
          description: "Filler 8 (string). Nullable: rows where this column is null never match a filter on it. Unused filler
            column from the LERG layout; always null."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: thousand_blk_pool
          in: query
          description: "Thousands Block Pooling Indicator (string). Thousands Block Pooling Indicator. Y: the NPA NXX belongs to a
            pool from which NANPA assigns 1000-line thousands blocks, potentially to different companies; such pools
            currently exist only in Puerto Rico and the United States. N: the NXX is not in a public pool, and the LERG
            carries nothing for it below the NXX level. S: not in a public pool either, but the service provider has
            chosen, for its own reasons such as intra-service-provider porting or seven-digit routing, to present its
            fully assigned NXX divided into thousands blocks; any NPA in the NANP can carry it. I: like S, but here the
            Code Holder has asked NANPA to put BIRRDS system controls on that division; only pooled NPAs carry it, which
            today means FCC-regulated areas."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: rc_lata
          in: query
          description: Rate Center LATA (integer). LATA of the Rate Center, which can differ from the LATA of the serving switch.
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 656
        - name: filler4
          in: query
          description: "Filler 4 (string). Nullable: rows where this column is null never match a filter on it. Unused filler
            column from the LERG layout; always null."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: creation_date
          in: query
          description: Creation Date (date). Date the record was first created in BIRRDS, as YYYY-MM-DD. Informational; useful for
            reconciliation only.
          required: false
          schema:
            type: array
            items:
              type: string
              format: date
          style: form
          explode: true
          example:
            - 2026-03-01
        - name: filler5
          in: query
          description: "Filler 5 (string). Nullable: rows where this column is null never match a filter on it. Unused filler
            column from the LERG layout; always null."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: e_status_date
          in: query
          description: E Status Date (date). Date the record was last established in BIRRDS, as YYYY-MM-DD. Can be more recent
            than the true in-service date because of database clean-up; indicates roughly how long the record has been
            in effect.
          required: false
          schema:
            type: array
            items:
              type: string
              format: date
          style: form
          explode: true
          example:
            - 2026-03-01
        - name: filler6
          in: query
          description: "Filler 6 (string). Nullable: rows where this column is null never match a filter on it. Unused filler
            column from the LERG layout; always null."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: last_modified
          in: query
          description: Last Modified (date). Date of the most recent change to the record that is already in effect, as
            YYYY-MM-DD. Equals the establishing date when nothing has changed since.
          required: false
          schema:
            type: array
            items:
              type: string
              format: date
          style: form
          explode: true
          example:
            - 2026-03-01
        - name: filler7
          in: query
          description: "Filler 7 (string). Nullable: rows where this column is null never match a filter on it. Unused filler
            column from the LERG layout; always null."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
      responses:
        "200":
          description: Envelope with `table`, `count`, `total_unique` and `data[]`, one object per row projected to `fields`.
          content:
            application/json:
              schema:
                type: object
                properties:
                  count:
                    type: integer
                  data:
                    type: array
                    items:
                      type: object
                  table:
                    type: string
                  total_unique:
                    type: integer
                    description: Distinct rows matched before `limit`/`offset`. A query no index can narrow stops scanning once it holds
                      `offset + limit` distinct rows, counting `limit` after it is clamped to 10,000, so a value exactly
                      equal to that sum means "at least this many", not a total; raise `limit` for the true count. Any
                      smaller value is exact, as is every value on an index-backed query.
              example:
                count: 1
                data:
                  - aocn: "6529"
                    block_id: A
                    coc_type: EXAMPLE
                    creation_date: 2026-03-01
                    dind: true
                    e_status_date: 2026-03-01
                    eff_date: 2026-03-01
                    filler1: EXAMPLE
                    filler2: EXAMPLE
                    filler3: EXAMPLE
                    filler4: EXAMPLE
                    filler5: EXAMPLE
                    filler6: EXAMPLE
                    filler7: EXAMPLE
                    filler8: EXAMPLE
                    filler9: EXAMPLE
                    last_modified: 2026-03-01
                    lata: 656
                    lata_name: DENVER
                    line_fr: EXAMPLE
                    line_to: EXAMPLE
                    loc_index: EXAMPLE
                    loc_name: DENVER
                    loc_state: CO
                    npa: 303
                    nxx: "629"
                    ocn: "6529"
                    portable: true
                    rc_abbre: EXAMPLE
                    rc_lata: 656
                    sha_indicator: EXAMPLE
                    ssc: EXAMPLE
                    status: EXAMPLE
                    switch: DNVRCOMADS0
                    td_at: EXAMPLE
                    td_eo: EXAMPLE
                    test_line_num: EXAMPLE
                    test_line_response: EXAMPLE
                    thousand_blk_pool: EXAMPLE
                table: lerg_6
                total_unique: 1
        "400":
          description: Causes include an unknown column in `fields` or as a filter key, `*` combined with other field names, an
            empty filter value, a repeated `fields`/`limit`/`offset`, and a non-numeric `limit`/`offset`. The message
            names the offending key and may carry a `did you mean` hint.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LergErrorResponse"
      security:
        - apiToken: []
  /v1/lerg/lerg_6_atc:
    get:
      tags:
        - LERG
      summary: Query lerg_6_atc with exact-match column filters
      description: >-
        `GET /v1/lerg/lerg_6_atc?column=value&…`


        Every parameter below except `fields`, `limit` and `offset` is a column of lerg_6_atc. Repeat a parameter to
        match any of several values (an IN-list); omit it to leave that column unfiltered. Filters are exact-match and
        are ANDed together.


        A comma inside a filter value is **not** a separator — only `fields` is comma-separated. `?npa=303,720` looks
        for the literal value `303,720`, matches nothing, and returns 200 with an empty `data`. Repeat the key instead:
        `?npa=303&npa=720`.


        This table has no hash index, so every query is a filtered scan; keep `limit` modest.


        This is the same route as `queryTable` with `table_name=lerg_6_atc`, spelled out so the columns are nameable.
        For an operator other than equality, or to join to another table, use `complexQuery`.


        Column definitions are paraphrased from the TruOps TRA LERG Routing Guide, General Information, BD-TRA-LERG-GEN
        Issue 2 (2026-08-01), section 3.1.
      operationId: queryLerg6Atc
      parameters:
        - name: fields
          in: query
          description: "Comma-separated projection. Omit it, or pass `*`, for every column. `*` cannot be combined with other
            names. Valid names: lata, lata_name, status, eff_date, npa, nxx, block_id, filler1, coc_type, ssc, dind,
            td_eo, td_at, portable, aocn, filler2, ocn, loc_name, loc_index, loc_state, rc_abbre, filler9, line_from,
            line_to, switch, sha_indicator, filler3, test_line_num, test_line_response, filler8, thousand_blk_pool,
            rc_lata, filler4, creation_date, filler5, e_status_date, filler6, last_modified, filler7, os_1, os_2, os_3,
            os_4, os_5, os_6, os_7, os_8, os_9, os_10, os_11, os_12, os_13, os_14, os_15, os_16, os_17, os_18, os_19,
            os_20, os_21, os_22, os_23, os_24, os_25."
          required: false
          schema:
            type: string
          example: lata,lata_name,status,eff_date
        - name: limit
          in: query
          description: "Page size, default 100. Clamped to 10,000: a larger value is accepted and silently reduced, never
            rejected, so no `maximum` is declared here. `limit=0` is accepted and returns an empty page. On a query no
            index can narrow this also bounds the work: the scan stops at `offset + limit` distinct rows."
          required: false
          schema:
            type: integer
            minimum: 0
          example: 100
        - name: offset
          in: query
          description: "Rows to skip for pagination, default 0. Not capped, deliberately: a ceiling here would make paging through
            a table impossible. On a query no index can narrow, `offset` counts towards the scan bound of `offset +
            limit` distinct rows, so a deep page costs the rows it skips -- `offset=1500000` reads 1.5M rows whatever
            `limit` says. Filter on an indexed column to page at constant cost."
          required: false
          schema:
            type: integer
            minimum: 0
          example: 0
        - name: lata
          in: query
          description: LATA (integer). Local Access and Transport Area, the numeric code of the geographic area this record
            belongs to. 999 and 99999 mark non-geographic and reserved assignments and are real values, not nulls.
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 656
        - name: lata_name
          in: query
          description: LATA Name (string). Name of the LATA, or of the LATA-like area for non-LATA regions.
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - DENVER
        - name: status
          in: query
          description: "Status (string). Nullable: rows where this column is null never match a filter on it. Pending activity on
            this record, read together with the effective date: E = the record is being established, M = the record is
            being modified (compare against the preceding current view to see what changes), D = the record is being
            disconnected. Null means the record is current and active as of this LERG issue."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: eff_date
          in: query
          description: "Effective Date (date). Nullable: rows where this column is null never match a filter on it. Date on which
            the activity in `status` takes effect, as YYYY-MM-DD. Null when the record is current. The LERG is a
            planning tool: this date is a forecast, not an activation record."
          required: false
          schema:
            type: array
            items:
              type: string
              format: date
          style: form
          explode: true
          example:
            - 2026-03-01
        - name: npa
          in: query
          description: NPA (integer). Numbering Plan Area, the three-digit area code.
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 303
        - name: nxx
          in: query
          description: "NXX (string). Access Tandem Code in the NXX position, served as text: usually a three-digit 0XX or 1XX
            code identifying a tandem that gives service providers operator or test access, where the leading zero
            matters (007 is not 7). A lone + appears instead when calls route straight to the named switch in the NPA
            rather than through a numbered code. Such codes are not administered nationally the way ordinary central
            office codes are."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - "629"
        - name: block_id
          in: query
          description: Block ID (string). Thousands-block identifier. A means the whole NPA NXX as assigned to the code holder; 0
            through 9 identify a pooled thousands block (for example 3 covers line numbers 3000-3999) assigned to a
            block holder. Not all of 0-9 need exist; only assigned blocks appear.
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - A
        - name: filler1
          in: query
          description: "Filler 1 (string). Nullable: rows where this column is null never match a filter on it. Unused filler
            column from the LERG layout; always null."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: coc_type
          in: query
          description: "COC Type (string). Central Office Code type, the primary use of the NPA NXX or block: ATC = access tandem
            code, CDA = customer directory assistance (555-1212 only), EOC = end office code (wireline POTS), PLN =
            planned code (not routable; it can be neither ported nor pooled), PMC = public mobile carrier (wireless,
            Type 2A interconnection), RCC = radio common carrier (wireless, Type 1 interconnection), SP1 and SP2 =
            miscellaneous Type 1 and Type 2A service providers, SIC = special 800 service code, TST = standard plant
            test code, VOI = VoIP. Read with `ssc`."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: ssc
          in: query
          description: SSC (string). Special Service Code, further qualifying `coc_type`. N when no special service applies; other
            letters (A, B, C, V, ...) identify intraLATA-only, paging, cellular, IP voice and similar service
            restrictions defined in the LERG glossary.
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: dind
          in: query
          description: "Dialable Indicator (boolean). Dialable indicator: true when a subscriber or an operator can dial this NPA
            NXX; false when it is not dialable."
          required: false
          schema:
            type: array
            items:
              type: boolean
          style: form
          explode: true
          example:
            - true
        - name: td_eo
          in: query
          description: Terminating Digits EO (string). Terminating digits when a call to this access tandem code is routed to an
            end office. Usually NA, because such calls terminate directly at the Operator Services tandem; a digit count
            appears only when the code is tied to an end office instead.
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: td_at
          in: query
          description: "Terminating Digits AT (string). Number of digits delivered to the Operator Services tandem for this code,
            from 3 to 11: the NPA (0 or 3 digits), plus the access tandem code (3 digits, or 0 for a + direct-routing
            entry), plus the longest operator service code it may carry (3 to 5 digits). NA in rare cases."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: portable
          in: query
          description: Portable (boolean). True when one or more line numbers in this NPA NXX or block may be ported, by
            thousands-block pooling or by service provider number portability. Paging numbers are never portable.
          required: false
          schema:
            type: array
            items:
              type: boolean
          style: form
          explode: true
          example:
            - true
        - name: aocn
          in: query
          description: "AOCN (string). Administrative Operating Company Number: the OCN of the company that maintains this record
            in the BIRRDS database. A company that administers its own records usually puts its own OCN here; a
            third-party administrator has a separate value. Since 2018 each new administrator gets a distinct OCN from
            TRA for this role, and since 2020 those values begin with G."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - "6529"
        - name: filler2
          in: query
          description: "Filler 2 (string). Nullable: rows where this column is null never match a filter on it. Unused filler
            column from the LERG layout; always null."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: ocn
          in: query
          description: "OCN (string). Operating Company Number: the four-character alphanumeric code TRA uses to identify the
            company that holds this record's numbering resource, switch, or other assignment. NECA Company Codes are a
            subset; TRA assigns the rest. Names are in LERG 1."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - "6529"
        - name: loc_name
          in: query
          description: Locality Name (string). Locality served by this NPA NXX or block, up to ten characters and abbreviated when
            longer. Often the place name printed on the subscriber's bill. XXXXXXXXXX on oddball and access tandem
            codes, which have no locality.
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - DENVER
        - name: loc_index
          in: query
          description: "Locality Index (string). Nullable: rows where this column is null never match a filter on it.
            Two-character index that distinguishes two localities of the same name within one state or province. Null
            when the name is unambiguous."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: loc_state
          in: query
          description: Locality State (string). Two-letter state, province, or territory of the locality.
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - CO
        - name: rc_abbre
          in: query
          description: Rate Center Abbreviation (string). Abbreviated name of the Rate Center, the geographic area whose midpoint
            is used for mileage-based rating. XXXXXXXXXX on codes that have no Rate Center.
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: filler9
          in: query
          description: "Filler 9 (string). Nullable: rows where this column is null never match a filter on it. Unused filler
            column from the LERG layout; always null."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: line_from
          in: query
          description: "Line From (string). First line number of the range this record covers: 0000 for a whole NXX (block A), or
            the block digit followed by 000 for a thousands block (3000 for block 3). NXX 555 is the exception, covering
            only 1212."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: line_to
          in: query
          description: "Line To (string). Last line number of the range this record covers: 9999 for a whole NXX (block A), or the
            block digit followed by 999 for a thousands block (3999 for block 3). NXX 555 is the exception, covering
            only 1212."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: switch
          in: query
          description: "Switch (string). CLLI code of the switching entity or point of interface that serves this record. Not
            always a true CLLI: oddball codes carry XXXXXXXXXXX, and in the non-geographic 5XX, 600 and 9YY NPAs the
            value reports assignment, status or routing information about the NXX instead of naming a switch. Caribbean
            and Bermuda NXXs carry SWCHxxUNKNO, and NPA 710 carries RTGETSAGENT."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - DNVRCOMADS0
        - name: sha_indicator
          in: query
          description: SHA Indicator (string). Switch Homing Arrangement indicator, a two-digit code that together with `switch`
            selects which homing arrangement in LERG 7 SHA applies. 00 is the default arrangement.
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: filler3
          in: query
          description: "Filler 3 (string). Nullable: rows where this column is null never match a filter on it. Unused filler
            column from the LERG layout; always null."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: test_line_num
          in: query
          description: "Test Line Number (string). Nullable: rows where this column is null never match a filter on it. Optional
            four-digit line number within this NPA NXX that the service provider offers as a test line. Null when none
            is published."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: test_line_response
          in: query
          description: "Test Line Response (string). Nullable: rows where this column is null never match a filter on it. What a
            call to the test line returns: A = announcement, M = milliwatt tone. Null when no test line is published."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: filler8
          in: query
          description: "Filler 8 (string). Nullable: rows where this column is null never match a filter on it. Unused filler
            column from the LERG layout; always null."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: thousand_blk_pool
          in: query
          description: "Thousands Block Pooling Indicator (string). Thousands Block Pooling Indicator. Y: the NPA NXX belongs to a
            pool from which NANPA assigns 1000-line thousands blocks, potentially to different companies; such pools
            currently exist only in Puerto Rico and the United States. N: the NXX is not in a public pool, and the LERG
            carries nothing for it below the NXX level. S: not in a public pool either, but the service provider has
            chosen, for its own reasons such as intra-service-provider porting or seven-digit routing, to present its
            fully assigned NXX divided into thousands blocks; any NPA in the NANP can carry it. I: like S, but here the
            Code Holder has asked NANPA to put BIRRDS system controls on that division; only pooled NPAs carry it, which
            today means FCC-regulated areas."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: rc_lata
          in: query
          description: Rate Center LATA (integer). LATA of the Rate Center, which can differ from the LATA of the serving switch.
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 656
        - name: filler4
          in: query
          description: "Filler 4 (string). Nullable: rows where this column is null never match a filter on it. Unused filler
            column from the LERG layout; always null."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: creation_date
          in: query
          description: Creation Date (date). Date the record was first created in BIRRDS, as YYYY-MM-DD. Informational; useful for
            reconciliation only.
          required: false
          schema:
            type: array
            items:
              type: string
              format: date
          style: form
          explode: true
          example:
            - 2026-03-01
        - name: filler5
          in: query
          description: "Filler 5 (string). Nullable: rows where this column is null never match a filter on it. Unused filler
            column from the LERG layout; always null."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: e_status_date
          in: query
          description: E Status Date (date). Date the record was last established in BIRRDS, as YYYY-MM-DD. Can be more recent
            than the true in-service date because of database clean-up; indicates roughly how long the record has been
            in effect.
          required: false
          schema:
            type: array
            items:
              type: string
              format: date
          style: form
          explode: true
          example:
            - 2026-03-01
        - name: filler6
          in: query
          description: "Filler 6 (string). Nullable: rows where this column is null never match a filter on it. Unused filler
            column from the LERG layout; always null."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: last_modified
          in: query
          description: Last Modified (date). Date of the most recent change to the record that is already in effect, as
            YYYY-MM-DD. Equals the establishing date when nothing has changed since.
          required: false
          schema:
            type: array
            items:
              type: string
              format: date
          style: form
          explode: true
          example:
            - 2026-03-01
        - name: filler7
          in: query
          description: "Filler 7 (string). Nullable: rows where this column is null never match a filter on it. Unused filler
            column from the LERG layout; always null."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: os_1
          in: query
          description: "Operator Service Code 1 (string). Nullable: rows where this column is null never match a filter on it.
            Operator Service code associated with an Access Tandem Code, listed in source-record order. Null when fewer
            codes are listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: os_2
          in: query
          description: "Operator Service Code 2 (string). Nullable: rows where this column is null never match a filter on it.
            Operator Service code associated with an Access Tandem Code, listed in source-record order. Null when fewer
            codes are listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: os_3
          in: query
          description: "Operator Service Code 3 (string). Nullable: rows where this column is null never match a filter on it.
            Operator Service code associated with an Access Tandem Code, listed in source-record order. Null when fewer
            codes are listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: os_4
          in: query
          description: "Operator Service Code 4 (string). Nullable: rows where this column is null never match a filter on it.
            Operator Service code associated with an Access Tandem Code, listed in source-record order. Null when fewer
            codes are listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: os_5
          in: query
          description: "Operator Service Code 5 (string). Nullable: rows where this column is null never match a filter on it.
            Operator Service code associated with an Access Tandem Code, listed in source-record order. Null when fewer
            codes are listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: os_6
          in: query
          description: "Operator Service Code 6 (string). Nullable: rows where this column is null never match a filter on it.
            Operator Service code associated with an Access Tandem Code, listed in source-record order. Null when fewer
            codes are listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: os_7
          in: query
          description: "Operator Service Code 7 (string). Nullable: rows where this column is null never match a filter on it.
            Operator Service code associated with an Access Tandem Code, listed in source-record order. Null when fewer
            codes are listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: os_8
          in: query
          description: "Operator Service Code 8 (string). Nullable: rows where this column is null never match a filter on it.
            Operator Service code associated with an Access Tandem Code, listed in source-record order. Null when fewer
            codes are listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: os_9
          in: query
          description: "Operator Service Code 9 (string). Nullable: rows where this column is null never match a filter on it.
            Operator Service code associated with an Access Tandem Code, listed in source-record order. Null when fewer
            codes are listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: os_10
          in: query
          description: "Operator Service Code 10 (string). Nullable: rows where this column is null never match a filter on it.
            Operator Service code associated with an Access Tandem Code, listed in source-record order. Null when fewer
            codes are listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: os_11
          in: query
          description: "Operator Service Code 11 (string). Nullable: rows where this column is null never match a filter on it.
            Operator Service code associated with an Access Tandem Code, listed in source-record order. Null when fewer
            codes are listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: os_12
          in: query
          description: "Operator Service Code 12 (string). Nullable: rows where this column is null never match a filter on it.
            Operator Service code associated with an Access Tandem Code, listed in source-record order. Null when fewer
            codes are listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: os_13
          in: query
          description: "Operator Service Code 13 (string). Nullable: rows where this column is null never match a filter on it.
            Operator Service code associated with an Access Tandem Code, listed in source-record order. Null when fewer
            codes are listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: os_14
          in: query
          description: "Operator Service Code 14 (string). Nullable: rows where this column is null never match a filter on it.
            Operator Service code associated with an Access Tandem Code, listed in source-record order. Null when fewer
            codes are listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: os_15
          in: query
          description: "Operator Service Code 15 (string). Nullable: rows where this column is null never match a filter on it.
            Operator Service code associated with an Access Tandem Code, listed in source-record order. Null when fewer
            codes are listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: os_16
          in: query
          description: "Operator Service Code 16 (string). Nullable: rows where this column is null never match a filter on it.
            Operator Service code associated with an Access Tandem Code, listed in source-record order. Null when fewer
            codes are listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: os_17
          in: query
          description: "Operator Service Code 17 (string). Nullable: rows where this column is null never match a filter on it.
            Operator Service code associated with an Access Tandem Code, listed in source-record order. Null when fewer
            codes are listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: os_18
          in: query
          description: "Operator Service Code 18 (string). Nullable: rows where this column is null never match a filter on it.
            Operator Service code associated with an Access Tandem Code, listed in source-record order. Null when fewer
            codes are listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: os_19
          in: query
          description: "Operator Service Code 19 (string). Nullable: rows where this column is null never match a filter on it.
            Operator Service code associated with an Access Tandem Code, listed in source-record order. Null when fewer
            codes are listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: os_20
          in: query
          description: "Operator Service Code 20 (string). Nullable: rows where this column is null never match a filter on it.
            Operator Service code associated with an Access Tandem Code, listed in source-record order. Null when fewer
            codes are listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: os_21
          in: query
          description: "Operator Service Code 21 (string). Nullable: rows where this column is null never match a filter on it.
            Operator Service code associated with an Access Tandem Code, listed in source-record order. Null when fewer
            codes are listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: os_22
          in: query
          description: "Operator Service Code 22 (string). Nullable: rows where this column is null never match a filter on it.
            Operator Service code associated with an Access Tandem Code, listed in source-record order. Null when fewer
            codes are listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: os_23
          in: query
          description: "Operator Service Code 23 (string). Nullable: rows where this column is null never match a filter on it.
            Operator Service code associated with an Access Tandem Code, listed in source-record order. Null when fewer
            codes are listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: os_24
          in: query
          description: "Operator Service Code 24 (string). Nullable: rows where this column is null never match a filter on it.
            Operator Service code associated with an Access Tandem Code, listed in source-record order. Null when fewer
            codes are listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: os_25
          in: query
          description: "Operator Service Code 25 (string). Nullable: rows where this column is null never match a filter on it.
            Operator Service code associated with an Access Tandem Code, listed in source-record order. Null when fewer
            codes are listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
      responses:
        "200":
          description: Envelope with `table`, `count`, `total_unique` and `data[]`, one object per row projected to `fields`.
          content:
            application/json:
              schema:
                type: object
                properties:
                  count:
                    type: integer
                  data:
                    type: array
                    items:
                      type: object
                  table:
                    type: string
                  total_unique:
                    type: integer
                    description: Distinct rows matched before `limit`/`offset`. A query no index can narrow stops scanning once it holds
                      `offset + limit` distinct rows, counting `limit` after it is clamped to 10,000, so a value exactly
                      equal to that sum means "at least this many", not a total; raise `limit` for the true count. Any
                      smaller value is exact, as is every value on an index-backed query.
              example:
                count: 1
                data:
                  - aocn: "6529"
                    block_id: A
                    coc_type: EXAMPLE
                    creation_date: 2026-03-01
                    dind: true
                    e_status_date: 2026-03-01
                    eff_date: 2026-03-01
                    filler1: EXAMPLE
                    filler2: EXAMPLE
                    filler3: EXAMPLE
                    filler4: EXAMPLE
                    filler5: EXAMPLE
                    filler6: EXAMPLE
                    filler7: EXAMPLE
                    filler8: EXAMPLE
                    filler9: EXAMPLE
                    last_modified: 2026-03-01
                    lata: 656
                    lata_name: DENVER
                    line_from: EXAMPLE
                    line_to: EXAMPLE
                    loc_index: EXAMPLE
                    loc_name: DENVER
                    loc_state: CO
                    npa: 303
                    nxx: "629"
                    ocn: "6529"
                    os_1: EXAMPLE
                    os_10: EXAMPLE
                    os_11: EXAMPLE
                    os_12: EXAMPLE
                    os_13: EXAMPLE
                    os_14: EXAMPLE
                    os_15: EXAMPLE
                    os_16: EXAMPLE
                    os_17: EXAMPLE
                    os_18: EXAMPLE
                    os_19: EXAMPLE
                    os_2: EXAMPLE
                    os_20: EXAMPLE
                    os_21: EXAMPLE
                    os_22: EXAMPLE
                    os_23: EXAMPLE
                    os_24: EXAMPLE
                    os_25: EXAMPLE
                    os_3: EXAMPLE
                    os_4: EXAMPLE
                    os_5: EXAMPLE
                    os_6: EXAMPLE
                    os_7: EXAMPLE
                    os_8: EXAMPLE
                    os_9: EXAMPLE
                    portable: true
                    rc_abbre: EXAMPLE
                    rc_lata: 656
                    sha_indicator: EXAMPLE
                    ssc: EXAMPLE
                    status: EXAMPLE
                    switch: DNVRCOMADS0
                    td_at: EXAMPLE
                    td_eo: EXAMPLE
                    test_line_num: EXAMPLE
                    test_line_response: EXAMPLE
                    thousand_blk_pool: EXAMPLE
                table: lerg_6_atc
                total_unique: 1
        "400":
          description: Causes include an unknown column in `fields` or as a filter key, `*` combined with other field names, an
            empty filter value, a repeated `fields`/`limit`/`offset`, and a non-numeric `limit`/`offset`. The message
            names the offending key and may carry a `did you mean` hint.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LergErrorResponse"
      security:
        - apiToken: []
  /v1/lerg/lerg_6_ins:
    get:
      tags:
        - LERG
      summary: Query lerg_6_ins with exact-match column filters
      description: >-
        `GET /v1/lerg/lerg_6_ins?column=value&…`


        Every parameter below except `fields`, `limit` and `offset` is a column of lerg_6_ins. Repeat a parameter to
        match any of several values (an IN-list); omit it to leave that column unfiltered. Filters are exact-match and
        are ANDed together.


        A comma inside a filter value is **not** a separator — only `fields` is comma-separated. `?npa=303,720` looks
        for the literal value `303,720`, matches nothing, and returns 200 with an empty `data`. Repeat the key instead:
        `?npa=303&npa=720`.


        This table has no hash index, so every query is a filtered scan; keep `limit` modest.


        This is the same route as `queryTable` with `table_name=lerg_6_ins`, spelled out so the columns are nameable.
        For an operator other than equality, or to join to another table, use `complexQuery`.


        Column definitions are paraphrased from the TruOps TRA LERG Routing Guide, General Information, BD-TRA-LERG-GEN
        Issue 2 (2026-08-01), section 3.1.
      operationId: queryLerg6Ins
      parameters:
        - name: fields
          in: query
          description: "Comma-separated projection. Omit it, or pass `*`, for every column. `*` cannot be combined with other
            names. Valid names: activity_code, activity_date, version, filler1, lata, lata_name, status, eff_date, npa,
            nxx, block_id, filler2, coc_type, ssc, dind, td_eo, td_at, portable, aocn, filler3, ocn, loc_name,
            loc_index, loc_state, rc_abbre, filler10, line_fr, line_to, switch, sha_indicator, filler4, test_line_num,
            test_line_response, filler9, thousand_blk_pool, rc_lata, filler5, creation_date, filler6, e_status_date,
            filler7, last_modified, filler8."
          required: false
          schema:
            type: string
          example: activity_code,activity_date,version,filler1
        - name: limit
          in: query
          description: "Page size, default 100. Clamped to 10,000: a larger value is accepted and silently reduced, never
            rejected, so no `maximum` is declared here. `limit=0` is accepted and returns an empty page. On a query no
            index can narrow this also bounds the work: the scan stops at `offset + limit` distinct rows."
          required: false
          schema:
            type: integer
            minimum: 0
          example: 100
        - name: offset
          in: query
          description: "Rows to skip for pagination, default 0. Not capped, deliberately: a ceiling here would make paging through
            a table impossible. On a query no index can narrow, `offset` counts towards the scan bound of `offset +
            limit` distinct rows, so a deep page costs the rows it skips -- `offset=1500000` reads 1.5M rows whatever
            `limit` says. Filter on an indexed column to page at constant cost."
          required: false
          schema:
            type: integer
            minimum: 0
          example: 0
        - name: activity_code
          in: query
          description: "Activity Code (string). What happened to this record in the month-to-month insert file: A = added, R =
            removed, U = updated. Interpret alongside `status` and `eff_date`."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: activity_date
          in: query
          description: Activity Date (date). Date the insert-file activity was performed in BIRRDS, as YYYY-MM-DD. Usually in the
            prior month.
          required: false
          schema:
            type: array
            items:
              type: string
              format: date
          style: form
          explode: true
          example:
            - 2026-03-01
        - name: version
          in: query
          description: Version (string). Version letter of this insert-file transaction. Normally A; a later letter means the same
            activity was reissued on the same activity date.
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: filler1
          in: query
          description: "Filler 1 (string). Nullable: rows where this column is null never match a filter on it. Unused filler
            column from the LERG layout; always null."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: lata
          in: query
          description: LATA (integer). Local Access and Transport Area, the numeric code of the geographic area this record
            belongs to. 999 and 99999 mark non-geographic and reserved assignments and are real values, not nulls.
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 656
        - name: lata_name
          in: query
          description: LATA Name (string). Name of the LATA, or of the LATA-like area for non-LATA regions.
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - DENVER
        - name: status
          in: query
          description: "Status (string). Kind of change this insert-file line reports, taking effect on `eff_date`: E = the record
            is being established, M = some of its values change (compare it field by field with the record's earlier
            view), D = the record is being disconnected. Always present on insert-file lines."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: eff_date
          in: query
          description: Effective Date (date). Date the change on this insert-file line takes effect, as YYYY-MM-DD. It can fall in
            the month since the previous LERG issue closed (the main table then already reflects the change as current)
            or in the future. For rare back-dated updates it equals `activity_date` and need not match the date held in
            BIRRDS.
          required: false
          schema:
            type: array
            items:
              type: string
              format: date
          style: form
          explode: true
          example:
            - 2026-03-01
        - name: npa
          in: query
          description: NPA (integer). Numbering Plan Area, the three-digit area code.
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 303
        - name: nxx
          in: query
          description: "NXX (string). Central office code, the three digits following the area code, served as text because it is
            a code, not a number. 0XX and 1XX values are not ordinary NXXs: they carry access tandem codes (listed with
            their operator service codes in LERG 6 ATC) or local plant-test uses, and are not administered nationally.
            On access tandem records the leading zero is part of the code (007 is not 7), and a lone + stands in for a
            code when calls route straight to the named switch, so the value is not always digits."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - "629"
        - name: block_id
          in: query
          description: Block ID (string). Thousands-block identifier. A means the whole NPA NXX as assigned to the code holder; 0
            through 9 identify a pooled thousands block (for example 3 covers line numbers 3000-3999) assigned to a
            block holder. Not all of 0-9 need exist; only assigned blocks appear.
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - A
        - name: filler2
          in: query
          description: "Filler 2 (string). Nullable: rows where this column is null never match a filter on it. Unused filler
            column from the LERG layout; always null."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: coc_type
          in: query
          description: "COC Type (string). Central Office Code type, the primary use of the NPA NXX or block: ATC = access tandem
            code, CDA = customer directory assistance (555-1212 only), EOC = end office code (wireline POTS), PLN =
            planned code (not routable; it can be neither ported nor pooled), PMC = public mobile carrier (wireless,
            Type 2A interconnection), RCC = radio common carrier (wireless, Type 1 interconnection), SP1 and SP2 =
            miscellaneous Type 1 and Type 2A service providers, SIC = special 800 service code, TST = standard plant
            test code, VOI = VoIP. Read with `ssc`."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: ssc
          in: query
          description: SSC (string). Special Service Code, further qualifying `coc_type`. N when no special service applies; other
            letters (A, B, C, V, ...) identify intraLATA-only, paging, cellular, IP voice and similar service
            restrictions defined in the LERG glossary.
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: dind
          in: query
          description: "Dialable Indicator (boolean). Dialable indicator: true when a subscriber or an operator can dial this NPA
            NXX; false when it is not dialable."
          required: false
          schema:
            type: array
            items:
              type: boolean
          style: form
          explode: true
          example:
            - true
        - name: td_eo
          in: query
          description: "Terminating Digits EO (string). Terminating digits outpulsed when a call is routed directly to the end
            office: typically 7 or 10. NA on thousands-block records, which never carry this field."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: td_at
          in: query
          description: "Terminating Digits AT (string). Terminating digits outpulsed when a call is routed via the primary access
            tandem: typically 7 or 10. NA on thousands-block records."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: portable
          in: query
          description: Portable (boolean). True when one or more line numbers in this NPA NXX or block may be ported, by
            thousands-block pooling or by service provider number portability. Paging numbers are never portable.
          required: false
          schema:
            type: array
            items:
              type: boolean
          style: form
          explode: true
          example:
            - true
        - name: aocn
          in: query
          description: "AOCN (string). Administrative Operating Company Number: the OCN of the company that maintains this record
            in the BIRRDS database. A company that administers its own records usually puts its own OCN here; a
            third-party administrator has a separate value. Since 2018 each new administrator gets a distinct OCN from
            TRA for this role, and since 2020 those values begin with G."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - "6529"
        - name: filler3
          in: query
          description: "Filler 3 (string). Nullable: rows where this column is null never match a filter on it. Unused filler
            column from the LERG layout; always null."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: ocn
          in: query
          description: "OCN (string). Operating Company Number: the four-character alphanumeric code TRA uses to identify the
            company that holds this record's numbering resource, switch, or other assignment. NECA Company Codes are a
            subset; TRA assigns the rest. Names are in LERG 1."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - "6529"
        - name: loc_name
          in: query
          description: Locality Name (string). Locality served by this NPA NXX or block, up to ten characters and abbreviated when
            longer. Often the place name printed on the subscriber's bill. XXXXXXXXXX on oddball and access tandem
            codes, which have no locality.
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - DENVER
        - name: loc_index
          in: query
          description: "Locality Index (string). Nullable: rows where this column is null never match a filter on it.
            Two-character index that distinguishes two localities of the same name within one state or province. Null
            when the name is unambiguous."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: loc_state
          in: query
          description: Locality State (string). Two-letter state, province, or territory of the locality.
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - CO
        - name: rc_abbre
          in: query
          description: Rate Center Abbreviation (string). Abbreviated name of the Rate Center, the geographic area whose midpoint
            is used for mileage-based rating. XXXXXXXXXX on codes that have no Rate Center.
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: filler10
          in: query
          description: "Filler 10 (string). Nullable: rows where this column is null never match a filter on it. Unused filler
            column from the LERG layout; always null."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: line_fr
          in: query
          description: "Line From (string). First line number of the range this record covers: 0000 for a whole NXX (block A), or
            the block digit followed by 000 for a thousands block (3000 for block 3). NXX 555 is the exception, covering
            only 1212."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: line_to
          in: query
          description: "Line To (string). Last line number of the range this record covers: 9999 for a whole NXX (block A), or the
            block digit followed by 999 for a thousands block (3999 for block 3). NXX 555 is the exception, covering
            only 1212."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: switch
          in: query
          description: "Switch (string). CLLI code of the switching entity or point of interface that serves this record. Not
            always a true CLLI: oddball codes carry XXXXXXXXXXX, and in the non-geographic 5XX, 600 and 9YY NPAs the
            value reports assignment, status or routing information about the NXX instead of naming a switch. Caribbean
            and Bermuda NXXs carry SWCHxxUNKNO, and NPA 710 carries RTGETSAGENT."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - DNVRCOMADS0
        - name: sha_indicator
          in: query
          description: SHA Indicator (string). Switch Homing Arrangement indicator, a two-digit code that together with `switch`
            selects which homing arrangement in LERG 7 SHA applies. 00 is the default arrangement.
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: filler4
          in: query
          description: "Filler 4 (string). Nullable: rows where this column is null never match a filter on it. Unused filler
            column from the LERG layout; always null."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: test_line_num
          in: query
          description: "Test Line Number (string). Nullable: rows where this column is null never match a filter on it. Optional
            four-digit line number within this NPA NXX that the service provider offers as a test line. Null when none
            is published."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: test_line_response
          in: query
          description: "Test Line Response (string). Nullable: rows where this column is null never match a filter on it. What a
            call to the test line returns: A = announcement, M = milliwatt tone. Null when no test line is published."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: filler9
          in: query
          description: "Filler 9 (string). Nullable: rows where this column is null never match a filter on it. Unused filler
            column from the LERG layout; always null."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: thousand_blk_pool
          in: query
          description: "Thousands Block Pooling Indicator (string). Thousands Block Pooling Indicator. Y: the NPA NXX belongs to a
            pool from which NANPA assigns 1000-line thousands blocks, potentially to different companies; such pools
            currently exist only in Puerto Rico and the United States. N: the NXX is not in a public pool, and the LERG
            carries nothing for it below the NXX level. S: not in a public pool either, but the service provider has
            chosen, for its own reasons such as intra-service-provider porting or seven-digit routing, to present its
            fully assigned NXX divided into thousands blocks; any NPA in the NANP can carry it. I: like S, but here the
            Code Holder has asked NANPA to put BIRRDS system controls on that division; only pooled NPAs carry it, which
            today means FCC-regulated areas."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: rc_lata
          in: query
          description: Rate Center LATA (integer). LATA of the Rate Center, which can differ from the LATA of the serving switch.
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 656
        - name: filler5
          in: query
          description: "Filler 5 (string). Nullable: rows where this column is null never match a filter on it. Unused filler
            column from the LERG layout; always null."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: creation_date
          in: query
          description: Creation Date (date). Date the record was first created in BIRRDS, as YYYY-MM-DD. Informational; useful for
            reconciliation only.
          required: false
          schema:
            type: array
            items:
              type: string
              format: date
          style: form
          explode: true
          example:
            - 2026-03-01
        - name: filler6
          in: query
          description: "Filler 6 (string). Nullable: rows where this column is null never match a filter on it. Unused filler
            column from the LERG layout; always null."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: e_status_date
          in: query
          description: E Status Date (date). Date the record was last established in BIRRDS, as YYYY-MM-DD. Can be more recent
            than the true in-service date because of database clean-up; indicates roughly how long the record has been
            in effect.
          required: false
          schema:
            type: array
            items:
              type: string
              format: date
          style: form
          explode: true
          example:
            - 2026-03-01
        - name: filler7
          in: query
          description: "Filler 7 (string). Nullable: rows where this column is null never match a filter on it. Unused filler
            column from the LERG layout; always null."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: last_modified
          in: query
          description: Last Modified (date). Date of the most recent change to the record that is already in effect, as
            YYYY-MM-DD. Equals the establishing date when nothing has changed since.
          required: false
          schema:
            type: array
            items:
              type: string
              format: date
          style: form
          explode: true
          example:
            - 2026-03-01
        - name: filler8
          in: query
          description: "Filler 8 (string). Nullable: rows where this column is null never match a filter on it. Unused filler
            column from the LERG layout; always null."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
      responses:
        "200":
          description: Envelope with `table`, `count`, `total_unique` and `data[]`, one object per row projected to `fields`.
          content:
            application/json:
              schema:
                type: object
                properties:
                  count:
                    type: integer
                  data:
                    type: array
                    items:
                      type: object
                  table:
                    type: string
                  total_unique:
                    type: integer
                    description: Distinct rows matched before `limit`/`offset`. A query no index can narrow stops scanning once it holds
                      `offset + limit` distinct rows, counting `limit` after it is clamped to 10,000, so a value exactly
                      equal to that sum means "at least this many", not a total; raise `limit` for the true count. Any
                      smaller value is exact, as is every value on an index-backed query.
              example:
                count: 1
                data:
                  - activity_code: EXAMPLE
                    activity_date: 2026-03-01
                    aocn: "6529"
                    block_id: A
                    coc_type: EXAMPLE
                    creation_date: 2026-03-01
                    dind: true
                    e_status_date: 2026-03-01
                    eff_date: 2026-03-01
                    filler1: EXAMPLE
                    filler10: EXAMPLE
                    filler2: EXAMPLE
                    filler3: EXAMPLE
                    filler4: EXAMPLE
                    filler5: EXAMPLE
                    filler6: EXAMPLE
                    filler7: EXAMPLE
                    filler8: EXAMPLE
                    filler9: EXAMPLE
                    last_modified: 2026-03-01
                    lata: 656
                    lata_name: DENVER
                    line_fr: EXAMPLE
                    line_to: EXAMPLE
                    loc_index: EXAMPLE
                    loc_name: DENVER
                    loc_state: CO
                    npa: 303
                    nxx: "629"
                    ocn: "6529"
                    portable: true
                    rc_abbre: EXAMPLE
                    rc_lata: 656
                    sha_indicator: EXAMPLE
                    ssc: EXAMPLE
                    status: EXAMPLE
                    switch: DNVRCOMADS0
                    td_at: EXAMPLE
                    td_eo: EXAMPLE
                    test_line_num: EXAMPLE
                    test_line_response: EXAMPLE
                    thousand_blk_pool: EXAMPLE
                    version: EXAMPLE
                table: lerg_6_ins
                total_unique: 1
        "400":
          description: Causes include an unknown column in `fields` or as a filter key, `*` combined with other field names, an
            empty filter value, a repeated `fields`/`limit`/`offset`, and a non-numeric `limit`/`offset`. The message
            names the offending key and may carry a `did you mean` hint.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LergErrorResponse"
      security:
        - apiToken: []
  /v1/lerg/lerg_6_odd:
    get:
      tags:
        - LERG
      summary: Query lerg_6_odd with exact-match column filters
      description: >-
        `GET /v1/lerg/lerg_6_odd?column=value&…`


        Every parameter below except `fields`, `limit` and `offset` is a column of lerg_6_odd. Repeat a parameter to
        match any of several values (an IN-list); omit it to leave that column unfiltered. Filters are exact-match and
        are ANDed together.


        A comma inside a filter value is **not** a separator — only `fields` is comma-separated. `?npa=303,720` looks
        for the literal value `303,720`, matches nothing, and returns 200 with an empty `data`. Repeat the key instead:
        `?npa=303&npa=720`.


        This table has no hash index, so every query is a filtered scan; keep `limit` modest.


        This is the same route as `queryTable` with `table_name=lerg_6_odd`, spelled out so the columns are nameable.
        For an operator other than equality, or to join to another table, use `complexQuery`.


        Column definitions are paraphrased from the TruOps TRA LERG Routing Guide, General Information, BD-TRA-LERG-GEN
        Issue 2 (2026-08-01), section 3.1.
      operationId: queryLerg6Odd
      parameters:
        - name: fields
          in: query
          description: "Comma-separated projection. Omit it, or pass `*`, for every column. `*` cannot be combined with other
            names. Valid names: lata, lata_name, status, eff_date, npa, nxx, block_id, filler1, coc_type, ssc, dind,
            td_eo, td_at, portable, aocn, filler2, ocn, loc_name, loc_index, loc_state, rc_abbre, filler9, line_fr,
            line_to, switch, sha_indicator, filler3, test_line_num, test_line_response, filler8, thousand_blk_pool,
            rc_lata, filler4, creation_date, filler5, e_status_date, filler6, last_modified, filler7, notes."
          required: false
          schema:
            type: string
          example: lata,lata_name,status,eff_date
        - name: limit
          in: query
          description: "Page size, default 100. Clamped to 10,000: a larger value is accepted and silently reduced, never
            rejected, so no `maximum` is declared here. `limit=0` is accepted and returns an empty page. On a query no
            index can narrow this also bounds the work: the scan stops at `offset + limit` distinct rows."
          required: false
          schema:
            type: integer
            minimum: 0
          example: 100
        - name: offset
          in: query
          description: "Rows to skip for pagination, default 0. Not capped, deliberately: a ceiling here would make paging through
            a table impossible. On a query no index can narrow, `offset` counts towards the scan bound of `offset +
            limit` distinct rows, so a deep page costs the rows it skips -- `offset=1500000` reads 1.5M rows whatever
            `limit` says. Filter on an indexed column to page at constant cost."
          required: false
          schema:
            type: integer
            minimum: 0
          example: 0
        - name: lata
          in: query
          description: LATA (integer). Local Access and Transport Area, the numeric code of the geographic area this record
            belongs to. 999 and 99999 mark non-geographic and reserved assignments and are real values, not nulls.
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 656
        - name: lata_name
          in: query
          description: LATA Name (string). Name of the LATA, or of the LATA-like area for non-LATA regions.
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - DENVER
        - name: status
          in: query
          description: "Status (string). Nullable: rows where this column is null never match a filter on it. Pending activity on
            this record, read together with the effective date: E = the record is being established, M = the record is
            being modified (compare against the preceding current view to see what changes), D = the record is being
            disconnected. Null means the record is current and active as of this LERG issue."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: eff_date
          in: query
          description: "Effective Date (date). Nullable: rows where this column is null never match a filter on it. Date on which
            the activity in `status` takes effect, as YYYY-MM-DD. Null when the record is current. The LERG is a
            planning tool: this date is a forecast, not an activation record."
          required: false
          schema:
            type: array
            items:
              type: string
              format: date
          style: form
          explode: true
          example:
            - 2026-03-01
        - name: npa
          in: query
          description: NPA (integer). Numbering Plan Area, the three-digit area code.
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 303
        - name: nxx
          in: query
          description: "NXX (string). Central office code, the three digits following the area code, served as text because it is
            a code, not a number. 0XX and 1XX values are not ordinary NXXs: they carry access tandem codes (listed with
            their operator service codes in LERG 6 ATC) or local plant-test uses, and are not administered nationally.
            On access tandem records the leading zero is part of the code (007 is not 7), and a lone + stands in for a
            code when calls route straight to the named switch, so the value is not always digits."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - "629"
        - name: block_id
          in: query
          description: Block ID (string). Thousands-block identifier. A means the whole NPA NXX as assigned to the code holder; 0
            through 9 identify a pooled thousands block (for example 3 covers line numbers 3000-3999) assigned to a
            block holder. Not all of 0-9 need exist; only assigned blocks appear.
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - A
        - name: filler1
          in: query
          description: "Filler 1 (string). Nullable: rows where this column is null never match a filter on it. Unused filler
            column from the LERG layout; always null."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: coc_type
          in: query
          description: COC Type (string). Central Office Code type; every row here is an oddball type. AIN = Advanced Intelligent
            Network routing code, BLG = billing-only code (neither dialable nor switched), BRD = broadband, CDA =
            customer directory assistance (line 1212 only), CTV = cable television access, ENP = emergency preparedness
            (not an N11), FGB = access to Feature Group B, on NXX 950, HVL = high-volume or mass-calling code, INP =
            information provider (976 and similar), N11 = the 211 to 911 service codes, ONA = Open Network Architecture,
            RTG = routing-only code for a provider's administrative calls, UFA = unavailable for assignment, 700 =
            intraLATA presubscription access. Read with `ssc`.
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: ssc
          in: query
          description: SSC (string). Special Service Code, further qualifying `coc_type`. N when no special service applies; other
            letters (A, B, C, V, ...) identify intraLATA-only, paging, cellular, IP voice and similar service
            restrictions defined in the LERG glossary.
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: dind
          in: query
          description: "Dialable Indicator (boolean). Dialable indicator: true when a subscriber or an operator can dial this NPA
            NXX; false when it is not dialable."
          required: false
          schema:
            type: array
            items:
              type: boolean
          style: form
          explode: true
          example:
            - true
        - name: td_eo
          in: query
          description: "Terminating Digits EO (string). Terminating digits outpulsed when a call is routed directly to the end
            office: typically 7 or 10. NA on thousands-block records, which never carry this field."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: td_at
          in: query
          description: "Terminating Digits AT (string). Terminating digits outpulsed when a call is routed via the primary access
            tandem: typically 7 or 10. NA on thousands-block records."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: portable
          in: query
          description: Portable (boolean). True when one or more line numbers in this NPA NXX or block may be ported, by
            thousands-block pooling or by service provider number portability. Paging numbers are never portable.
          required: false
          schema:
            type: array
            items:
              type: boolean
          style: form
          explode: true
          example:
            - true
        - name: aocn
          in: query
          description: "AOCN (string). Administrative Operating Company Number: the OCN of the company that maintains this record
            in the BIRRDS database. A company that administers its own records usually puts its own OCN here; a
            third-party administrator has a separate value. Since 2018 each new administrator gets a distinct OCN from
            TRA for this role, and since 2020 those values begin with G."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - "6529"
        - name: filler2
          in: query
          description: "Filler 2 (string). Nullable: rows where this column is null never match a filter on it. Unused filler
            column from the LERG layout; always null."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: ocn
          in: query
          description: "OCN (string). Operating Company Number: the four-character alphanumeric code TRA uses to identify the
            company that holds this record's numbering resource, switch, or other assignment. NECA Company Codes are a
            subset; TRA assigns the rest. Names are in LERG 1."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - "6529"
        - name: loc_name
          in: query
          description: Locality Name (string). Locality served by this NPA NXX or block, up to ten characters and abbreviated when
            longer. Often the place name printed on the subscriber's bill. XXXXXXXXXX on oddball and access tandem
            codes, which have no locality.
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - DENVER
        - name: loc_index
          in: query
          description: "Locality Index (string). Nullable: rows where this column is null never match a filter on it.
            Two-character index that distinguishes two localities of the same name within one state or province. Null
            when the name is unambiguous."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: loc_state
          in: query
          description: Locality State (string). Two-letter state, province, or territory of the locality.
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - CO
        - name: rc_abbre
          in: query
          description: Rate Center Abbreviation (string). Abbreviated name of the Rate Center, the geographic area whose midpoint
            is used for mileage-based rating. XXXXXXXXXX on codes that have no Rate Center.
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: filler9
          in: query
          description: "Filler 9 (string). Nullable: rows where this column is null never match a filter on it. Unused filler
            column from the LERG layout; always null."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: line_fr
          in: query
          description: "Line From (string). First line number of the range this record covers: 0000 for a whole NXX (block A), or
            the block digit followed by 000 for a thousands block (3000 for block 3). NXX 555 is the exception, covering
            only 1212."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: line_to
          in: query
          description: "Line To (string). Last line number of the range this record covers: 9999 for a whole NXX (block A), or the
            block digit followed by 999 for a thousands block (3999 for block 3). NXX 555 is the exception, covering
            only 1212."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: switch
          in: query
          description: "Switch (string). CLLI code of the switching entity or point of interface that serves this record. Not
            always a true CLLI: oddball codes carry XXXXXXXXXXX, and in the non-geographic 5XX, 600 and 9YY NPAs the
            value reports assignment, status or routing information about the NXX instead of naming a switch. Caribbean
            and Bermuda NXXs carry SWCHxxUNKNO, and NPA 710 carries RTGETSAGENT."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - DNVRCOMADS0
        - name: sha_indicator
          in: query
          description: SHA Indicator (string). Switch Homing Arrangement indicator, a two-digit code that together with `switch`
            selects which homing arrangement in LERG 7 SHA applies. 00 is the default arrangement.
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: filler3
          in: query
          description: "Filler 3 (string). Nullable: rows where this column is null never match a filter on it. Unused filler
            column from the LERG layout; always null."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: test_line_num
          in: query
          description: "Test Line Number (string). Nullable: rows where this column is null never match a filter on it. Optional
            four-digit line number within this NPA NXX that the service provider offers as a test line. Null when none
            is published."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: test_line_response
          in: query
          description: "Test Line Response (string). Nullable: rows where this column is null never match a filter on it. What a
            call to the test line returns: A = announcement, M = milliwatt tone. Null when no test line is published."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: filler8
          in: query
          description: "Filler 8 (string). Nullable: rows where this column is null never match a filter on it. Unused filler
            column from the LERG layout; always null."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: thousand_blk_pool
          in: query
          description: "Thousands Block Pooling Indicator (string). Thousands Block Pooling Indicator. Y: the NPA NXX belongs to a
            pool from which NANPA assigns 1000-line thousands blocks, potentially to different companies; such pools
            currently exist only in Puerto Rico and the United States. N: the NXX is not in a public pool, and the LERG
            carries nothing for it below the NXX level. S: not in a public pool either, but the service provider has
            chosen, for its own reasons such as intra-service-provider porting or seven-digit routing, to present its
            fully assigned NXX divided into thousands blocks; any NPA in the NANP can carry it. I: like S, but here the
            Code Holder has asked NANPA to put BIRRDS system controls on that division; only pooled NPAs carry it, which
            today means FCC-regulated areas."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: rc_lata
          in: query
          description: Rate Center LATA (integer). LATA of the Rate Center, which can differ from the LATA of the serving switch.
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 656
        - name: filler4
          in: query
          description: "Filler 4 (string). Nullable: rows where this column is null never match a filter on it. Unused filler
            column from the LERG layout; always null."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: creation_date
          in: query
          description: Creation Date (date). Date the record was first created in BIRRDS, as YYYY-MM-DD. Informational; useful for
            reconciliation only.
          required: false
          schema:
            type: array
            items:
              type: string
              format: date
          style: form
          explode: true
          example:
            - 2026-03-01
        - name: filler5
          in: query
          description: "Filler 5 (string). Nullable: rows where this column is null never match a filter on it. Unused filler
            column from the LERG layout; always null."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: e_status_date
          in: query
          description: E Status Date (date). Date the record was last established in BIRRDS, as YYYY-MM-DD. Can be more recent
            than the true in-service date because of database clean-up; indicates roughly how long the record has been
            in effect.
          required: false
          schema:
            type: array
            items:
              type: string
              format: date
          style: form
          explode: true
          example:
            - 2026-03-01
        - name: filler6
          in: query
          description: "Filler 6 (string). Nullable: rows where this column is null never match a filter on it. Unused filler
            column from the LERG layout; always null."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: last_modified
          in: query
          description: Last Modified (date). Date of the most recent change to the record that is already in effect, as
            YYYY-MM-DD. Equals the establishing date when nothing has changed since.
          required: false
          schema:
            type: array
            items:
              type: string
              format: date
          style: form
          explode: true
          example:
            - 2026-03-01
        - name: filler7
          in: query
          description: "Filler 7 (string). Nullable: rows where this column is null never match a filter on it. Unused filler
            column from the LERG layout; always null."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: notes
          in: query
          description: "Notes (string). Free-text remark recorded in BIRRDS for this oddball code, usually naming the service it
            carries or a calling restriction (for example national dial-it services or mass calling). Where `ssc`
            includes O, the note explains that special service. Always present: a code appears in this table only when
            it has a note."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
      responses:
        "200":
          description: Envelope with `table`, `count`, `total_unique` and `data[]`, one object per row projected to `fields`.
          content:
            application/json:
              schema:
                type: object
                properties:
                  count:
                    type: integer
                  data:
                    type: array
                    items:
                      type: object
                  table:
                    type: string
                  total_unique:
                    type: integer
                    description: Distinct rows matched before `limit`/`offset`. A query no index can narrow stops scanning once it holds
                      `offset + limit` distinct rows, counting `limit` after it is clamped to 10,000, so a value exactly
                      equal to that sum means "at least this many", not a total; raise `limit` for the true count. Any
                      smaller value is exact, as is every value on an index-backed query.
              example:
                count: 1
                data:
                  - aocn: "6529"
                    block_id: A
                    coc_type: EXAMPLE
                    creation_date: 2026-03-01
                    dind: true
                    e_status_date: 2026-03-01
                    eff_date: 2026-03-01
                    filler1: EXAMPLE
                    filler2: EXAMPLE
                    filler3: EXAMPLE
                    filler4: EXAMPLE
                    filler5: EXAMPLE
                    filler6: EXAMPLE
                    filler7: EXAMPLE
                    filler8: EXAMPLE
                    filler9: EXAMPLE
                    last_modified: 2026-03-01
                    lata: 656
                    lata_name: DENVER
                    line_fr: EXAMPLE
                    line_to: EXAMPLE
                    loc_index: EXAMPLE
                    loc_name: DENVER
                    loc_state: CO
                    notes: EXAMPLE
                    npa: 303
                    nxx: "629"
                    ocn: "6529"
                    portable: true
                    rc_abbre: EXAMPLE
                    rc_lata: 656
                    sha_indicator: EXAMPLE
                    ssc: EXAMPLE
                    status: EXAMPLE
                    switch: DNVRCOMADS0
                    td_at: EXAMPLE
                    td_eo: EXAMPLE
                    test_line_num: EXAMPLE
                    test_line_response: EXAMPLE
                    thousand_blk_pool: EXAMPLE
                table: lerg_6_odd
                total_unique: 1
        "400":
          description: Causes include an unknown column in `fields` or as a filter key, `*` combined with other field names, an
            empty filter value, a repeated `fields`/`limit`/`offset`, and a non-numeric `limit`/`offset`. The message
            names the offending key and may carry a `did you mean` hint.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LergErrorResponse"
      security:
        - apiToken: []
  /v1/lerg/lerg_7:
    get:
      tags:
        - LERG
      summary: Query lerg_7 with exact-match column filters
      description: >-
        `GET /v1/lerg/lerg_7?column=value&…`


        Every parameter below except `fields`, `limit` and `offset` is a column of lerg_7. Repeat a parameter to match
        any of several values (an IN-list); omit it to leave that column unfiltered. Filters are exact-match and are
        ANDed together.


        A comma inside a filter value is **not** a separator — only `fields` is comma-separated. `?npa=303,720` looks
        for the literal value `303,720`, matches nothing, and returns 200 with an empty `data`. Repeat the key instead:
        `?npa=303&npa=720`.


        This table has no hash index, so every query is a filtered scan; keep `limit` modest.


        This is the same route as `queryTable` with `table_name=lerg_7`, spelled out so the columns are nameable. For an
        operator other than equality, or to join to another table, use `complexQuery`.


        Column definitions are paraphrased from the TruOps TRA LERG Routing Guide, General Information, BD-TRA-LERG-GEN
        Issue 2 (2026-08-01), section 3.1.
      operationId: queryLerg7
      parameters:
        - name: fields
          in: query
          description: "Comma-separated projection. Omit it, or pass `*`, for every column. `*` cannot be combined with other
            names. Valid names: lata, lata_name, status, eff_date, switch, eqp_type, aocn, filler1, ocn, v_coord,
            h_coord, iddd, sw_street, sw_city, sw_state, sw_zip, pt_code_flag, cl_4_5_sw, sof_1_eo, sof_2_host,
            sof_3_rem, sof_4_da, sof_5_4_5, sof_6_wireless, sof_7_filler, sof_8_filler, sof_9_filler, sof_10_filler,
            sof_11_filler, sof_12_fg_b_tdm, sof_13_fg_c_tdm, sof_14_fg_d_tdm, sof_15_os_tdm, sof_16_int_ofc,
            sof_17_da_tdm, sof_18_911_tdm, sof_19_filler, sof_20_local_tdm, sof_21_intra_tdm, sof_22_cs_data_tdm,
            sof_23_bcr5, sof_24_bcr6, sof_25_pri_64, sof_26_isdn_mult, sof_27_isdn_fs, sof_28_filler, sof_29_filler,
            sof_30_filler, sof_31_filler, sof_32_filler, sof_33_filler, sof_34_stp, sof_35_ccs_ac, sof_36_filler,
            sof_37_800_ssp, sof_38_lnp, sof_39_filler, sof_40_filler, sof_41_filler, sof_42_cip, sof_43_csp,
            sof_44_filler, sof_45_sw_56, sof_46_fgd_56, sof_47_fgd_64, sof_48_int_prsub, sof_49_call_agent,
            sof_50_trunk_gateway, sof_51_access_gateway, sof_52_filler, sof_53_filler, sof_54_filler, sof_55_filler,
            filler2, creation_date, filler3, e_status_date, filler4, last_modified, filler5, cln_indicator, bill_to_rao,
            send_to_rao, filler6."
          required: false
          schema:
            type: string
          example: lata,lata_name,status,eff_date
        - name: limit
          in: query
          description: "Page size, default 100. Clamped to 10,000: a larger value is accepted and silently reduced, never
            rejected, so no `maximum` is declared here. `limit=0` is accepted and returns an empty page. On a query no
            index can narrow this also bounds the work: the scan stops at `offset + limit` distinct rows."
          required: false
          schema:
            type: integer
            minimum: 0
          example: 100
        - name: offset
          in: query
          description: "Rows to skip for pagination, default 0. Not capped, deliberately: a ceiling here would make paging through
            a table impossible. On a query no index can narrow, `offset` counts towards the scan bound of `offset +
            limit` distinct rows, so a deep page costs the rows it skips -- `offset=1500000` reads 1.5M rows whatever
            `limit` says. Filter on an indexed column to page at constant cost."
          required: false
          schema:
            type: integer
            minimum: 0
          example: 0
        - name: lata
          in: query
          description: LATA (integer). Local Access and Transport Area, the numeric code of the geographic area this record
            belongs to. 999 and 99999 mark non-geographic and reserved assignments and are real values, not nulls.
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 656
        - name: lata_name
          in: query
          description: LATA Name (string). Name of the LATA, or of the LATA-like area for non-LATA regions.
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - DENVER
        - name: status
          in: query
          description: "Status (string). Nullable: rows where this column is null never match a filter on it. Pending activity on
            this record, read together with the effective date: E = the record is being established, M = the record is
            being modified (compare against the preceding current view to see what changes), D = the record is being
            disconnected. Null means the record is current and active as of this LERG issue."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: eff_date
          in: query
          description: "Effective Date (date). Nullable: rows where this column is null never match a filter on it. Date on which
            the activity in `status` takes effect, as YYYY-MM-DD. Null when the record is current. The LERG is a
            planning tool: this date is a forecast, not an activation record."
          required: false
          schema:
            type: array
            items:
              type: string
              format: date
          style: form
          explode: true
          example:
            - 2026-03-01
        - name: switch
          in: query
          description: Switch (string). Eleven-character identifier of this switching entity or point of interface (POI), normally
            its Common Language (CLLI) code, and the key other LERG files use to refer to it. One physical switch can be
            listed under several identifiers (for instance one per role it plays), a POI need not sit at a physical
            switch, and a few values are placeholders rather than real CLLIs; `cln_indicator` reports whether the code
            is a valid CLLI.
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - DNVRCOMADS0
        - name: eqp_type
          in: query
          description: Equipment Type (string). Short code for the kind of equipment the switch runs on, normally three characters
            and matched to Common Language switching system codes (for example DMT or 5EH). XXX marks a placeholder
            identifier that stands for no real switch, such as those used for NPA 9YY or for NANP areas without CLLIs;
            POI marks a point of interface.
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: aocn
          in: query
          description: "AOCN (string). Administrative Operating Company Number: the OCN of the company that maintains this record
            in the BIRRDS database. A company that administers its own records usually puts its own OCN here; a
            third-party administrator has a separate value. Since 2018 each new administrator gets a distinct OCN from
            TRA for this role, and since 2020 those values begin with G."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - "6529"
        - name: filler1
          in: query
          description: "Filler 1 (string). Nullable: rows where this column is null never match a filter on it. Unused filler
            column from the LERG layout; always null."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: ocn
          in: query
          description: "OCN (string). Operating Company Number: the four-character alphanumeric code TRA uses to identify the
            company that holds this record's numbering resource, switch, or other assignment. NECA Company Codes are a
            subset; TRA assigns the rest. Names are in LERG 1."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - "6529"
        - name: v_coord
          in: query
          description: V Coordinate (float). Vertical coordinate of the switch or POI on the V&H grid, a whole number of normally
            four or five digits worked out from latitude and longitude. With `h_coord` it gives the air mileage between
            two switches. A provider may report a spot other than the true site for tariff reasons (a remote placed at
            its host, say), and switch V&H can differ from the Rate Center V&H in LERG 8.
          required: false
          schema:
            type: array
            items:
              type: number
          style: form
          explode: true
          example:
            - 1
        - name: h_coord
          in: query
          description: "H Coordinate (float). Horizontal coordinate of the switch or POI on the V&H grid, read together with
            `v_coord`: a whole number of normally four or five digits, negative for a few locations such as Puerto Rico.
            The same caveats apply: it may be reported away from the true site for tariff reasons, and it is not the
            Rate Center coordinate in LERG 8."
          required: false
          schema:
            type: array
            items:
              type: number
          style: form
          explode: true
          example:
            - 1
        - name: iddd
          in: query
          description: IDDD (boolean). True when the switch provides International Direct Distance Dialing, so international calls
            need no operator.
          required: false
          schema:
            type: array
            items:
              type: boolean
          style: form
          explode: true
          example:
            - true
        - name: sw_street
          in: query
          description: Switch Street (string). Street address of the building that houses the switch or POI.
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: sw_city
          in: query
          description: Switch City (string). City of the switch or POI address.
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: sw_state
          in: query
          description: Switch State (string). Two-letter code for the state, province, territory or (for Caribbean NANP members)
            country of the switch or POI address.
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - CO
        - name: sw_zip
          in: query
          description: "Switch ZIP (string). Postal code of the address: a five-digit or nine-digit US ZIP, or a non-US postal
            code."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: pt_code_flag
          in: query
          description: "Point Code Flag (string). Nullable: rows where this column is null never match a filter on it. SS7 point
            code flag. P: a point code is assigned to the switch now, or is due to be from this future view onward. C:
            on a future view, the point code differs from the one on the preceding view. Null: the switch has no point
            code, or this view removes it. The code itself is not in the LERG; the switch's provider supplies it on
            request."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: cl_4_5_sw
          in: query
          description: "CL 4/5 Switch (string). Nullable: rows where this column is null never match a filter on it. Set only on
            Class 4/5 switches (`sof_5_4_5`). Such an office does both end-office (Class 5) and toll or tandem (Class 4)
            work and appears in LERG 7 under two identifiers, one per role; this column normally names the record for
            the other role. Null for every other switch."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: sof_1_eo
          in: query
          description: "SOF 1 EO (boolean). SOF 1, End Office: true when the switch is designated to serve subscriber lines: it
            supplies dial tone and connects calls among its own lines and between those lines and trunks. A host with no
            lines of its own does not count."
          required: false
          schema:
            type: array
            items:
              type: boolean
          style: form
          explode: true
          example:
            - true
        - name: sof_2_host
          in: query
          description: "SOF 2 Host (boolean). SOF 2, Host: true when the switch is designated to supply shared processor functions
            to one or more remote switches and to carry the traffic those remotes originate or terminate."
          required: false
          schema:
            type: array
            items:
              type: boolean
          style: form
          explode: true
          example:
            - true
        - name: sof_3_rem
          in: query
          description: "SOF 3 REM (boolean). SOF 3, Remote: true when the switch relies on a host switch for common processing,
            its traffic normally passing through that host (LERG 7 SHA names the host)."
          required: false
          schema:
            type: array
            items:
              type: boolean
          style: form
          explode: true
          example:
            - true
        - name: sof_4_da
          in: query
          description: "SOF 4 DA (boolean). SOF 4, Directory Assistance Office: true when the switch lets customers or operators
            look up listed numbers and addresses (dialled as 411, 555-1212, NPA-555-1212)."
          required: false
          schema:
            type: array
            items:
              type: boolean
          style: form
          explode: true
          example:
            - true
        - name: sof_5_4_5
          in: query
          description: "SOF 5 4/5 (boolean). SOF 5, Class 4/5: true when one switch does both Class 5 work (dial tone and
            line-side features for end users) and Class 4 work (tandem and toll trunking such as feature group access
            and operator services). Such an office is listed under two identifiers, linked through `cl_4_5_sw`."
          required: false
          schema:
            type: array
            items:
              type: boolean
          style: form
          explode: true
          example:
            - true
        - name: sof_6_wireless
          in: query
          description: "SOF 6 Wireless (boolean). SOF 6, Wireless Office: true when the switch is the point where wireless
            subscribers' calls get dial tone or are delivered to them."
          required: false
          schema:
            type: array
            items:
              type: boolean
          style: form
          explode: true
          example:
            - true
        - name: sof_7_filler
          in: query
          description: SOF 7 Filler (boolean). SOF position reserved by the LERG layout with no function assigned; always false.
          required: false
          schema:
            type: array
            items:
              type: boolean
          style: form
          explode: true
          example:
            - true
        - name: sof_8_filler
          in: query
          description: SOF 8 Filler (boolean). SOF position reserved by the LERG layout with no function assigned; always false.
          required: false
          schema:
            type: array
            items:
              type: boolean
          style: form
          explode: true
          example:
            - true
        - name: sof_9_filler
          in: query
          description: SOF 9 Filler (boolean). SOF position reserved by the LERG layout with no function assigned; always false.
          required: false
          schema:
            type: array
            items:
              type: boolean
          style: form
          explode: true
          example:
            - true
        - name: sof_10_filler
          in: query
          description: SOF 10 Filler (boolean). SOF position reserved by the LERG layout with no function assigned; always false.
          required: false
          schema:
            type: array
            items:
              type: boolean
          style: form
          explode: true
          example:
            - true
        - name: sof_11_filler
          in: query
          description: SOF 11 Filler (boolean). SOF position reserved by the LERG layout with no function assigned; always false.
          required: false
          schema:
            type: array
            items:
              type: boolean
          style: form
          explode: true
          example:
            - true
        - name: sof_12_fg_b_tdm
          in: query
          description: "SOF 12 FG B TDM (boolean). SOF 12, Feature Group B Tandem: true when the switch is a tandem that
            concentrates the Feature Group B traffic exchanged between end offices and interexchange carriers."
          required: false
          schema:
            type: array
            items:
              type: boolean
          style: form
          explode: true
          example:
            - true
        - name: sof_13_fg_c_tdm
          in: query
          description: "SOF 13 FG C TDM (boolean). SOF 13, Feature Group C Tandem: true when end offices home on this tandem for
            Feature Group C exchange access, the arrangement that uses traditional signalling and does not offer Feature
            Group D equal access."
          required: false
          schema:
            type: array
            items:
              type: boolean
          style: form
          explode: true
          example:
            - true
        - name: sof_14_fg_d_tdm
          in: query
          description: "SOF 14 FG D TDM (boolean). SOF 14, Feature Group D Tandem: true when the switch is a tandem for Feature
            Group D, the equal-access trunk arrangement with interexchange carriers that lets a caller reach the
            presubscribed carrier by dialling 1+ and any other carrier with a 101XXXX code."
          required: false
          schema:
            type: array
            items:
              type: boolean
          style: form
          explode: true
          example:
            - true
        - name: sof_15_os_tdm
          in: query
          description: "SOF 15 OS TDM (boolean). SOF 15, Operator Services Tandem: true when the switch concentrates
            operator-handled traffic such as toll assistance and intercept, typically with alternate billing, coin
            service, AMA processing and call distribution to operators."
          required: false
          schema:
            type: array
            items:
              type: boolean
          style: form
          explode: true
          example:
            - true
        - name: sof_16_int_ofc
          in: query
          description: "SOF 16 INT OFC (boolean). SOF 16, Intermediate Office: true when the switch, neither the end office where
            a call starts or ends nor an access tandem, sits between those offices in some network designs to help
            complete calls."
          required: false
          schema:
            type: array
            items:
              type: boolean
          style: form
          explode: true
          example:
            - true
        - name: sof_17_da_tdm
          in: query
          description: "SOF 17 DA TDM (boolean). SOF 17, Directory Assistance Tandem: true when the switch is the tandem through
            which customers or operators reach a Directory Assistance office (411, 555-1212, NPA-555-1212)."
          required: false
          schema:
            type: array
            items:
              type: boolean
          style: form
          explode: true
          example:
            - true
        - name: sof_18_911_tdm
          in: query
          description: "SOF 18 911 TDM (boolean). SOF 18, 911 Tandem: true when the switch links end-office trunks to the switch
            serving Public Safety Answering Points. PSAPs and the area a 911 service covers are not in the LERG."
          required: false
          schema:
            type: array
            items:
              type: boolean
          style: form
          explode: true
          example:
            - true
        - name: sof_19_filler
          in: query
          description: SOF 19 Filler (boolean). SOF position reserved by the LERG layout with no function assigned; always false.
          required: false
          schema:
            type: array
            items:
              type: boolean
          style: form
          explode: true
          example:
            - true
        - name: sof_20_local_tdm
          in: query
          description: "SOF 20 Local TDM (boolean). SOF 20, Local Tandem: true when the switch is a LEC tandem joining trunks
            between end offices for local traffic inside a tariffed local calling area. Only the tandem an office homes
            on is shown, although reaching every office may take more than one local tandem."
          required: false
          schema:
            type: array
            items:
              type: boolean
          style: form
          explode: true
          example:
            - true
        - name: sof_21_intra_tdm
          in: query
          description: "SOF 21 Intra TDM (boolean). SOF 21, IntraLATA Tandem: true when the switch concentrates trunks for toll
            calls that both start and end inside one LATA, so end offices need fewer direct trunks between them."
          required: false
          schema:
            type: array
            items:
              type: boolean
          style: form
          explode: true
          example:
            - true
        - name: sof_22_cs_data_tdm
          in: query
          description: "SOF 22 CS Data TDM (boolean). SOF 22, Circuit Switched Data Tandem: true when the switch acts as a tandem
            for switched data calls such as BCR5, BCR6 and PRI 64 traffic."
          required: false
          schema:
            type: array
            items:
              type: boolean
          style: form
          explode: true
          example:
            - true
        - name: sof_23_bcr5
          in: query
          description: "SOF 23 BCR5 (boolean). SOF 23, BCR5: true when the switch offers ISDN Basic Rate Interface access at 56
            kbps: two bearer channels plus one signalling channel (2B+D), signalled out of band."
          required: false
          schema:
            type: array
            items:
              type: boolean
          style: form
          explode: true
          example:
            - true
        - name: sof_24_bcr6
          in: query
          description: "SOF 24 BCR6 (boolean). SOF 24, BCR6: true when the switch offers ISDN Basic Rate Interface access with 64
            kbps clear channels as well as 56 kbps, again 2B+D with out-of-band signalling."
          required: false
          schema:
            type: array
            items:
              type: boolean
          style: form
          explode: true
          example:
            - true
        - name: sof_25_pri_64
          in: query
          description: "SOF 25 PRI 64 (boolean). SOF 25, PRI 64: true when the switch offers ISDN Primary Rate Interface access:
            23 bearer channels plus one signalling channel (23B+D), each 64 kbps, usable at 56 or 64 kbps clear in any
            mix."
          required: false
          schema:
            type: array
            items:
              type: boolean
          style: form
          explode: true
          example:
            - true
        - name: sof_26_isdn_mult
          in: query
          description: "SOF 26 ISDN Mult (boolean). SOF 26, ISDN Multirate: true when the switch lets customers set up
            circuit-switched calls of n x 64 kbps over an ISDN PRI on demand, from one DS0 (64 kbps) to 24 DS0s (1,536
            kbps)."
          required: false
          schema:
            type: array
            items:
              type: boolean
          style: form
          explode: true
          example:
            - true
        - name: sof_27_isdn_fs
          in: query
          description: "SOF 27 ISDN FS (boolean). SOF 27, ISDN Foreign Serving Office: true when this switch supplies ISDN service
            to subscribers of other offices that do not provide it themselves. Offices served this way name it in the
            `isdn_foreign_off` column of their LERG 7 SHA rows."
          required: false
          schema:
            type: array
            items:
              type: boolean
          style: form
          explode: true
          example:
            - true
        - name: sof_28_filler
          in: query
          description: SOF 28 Filler (boolean). SOF position reserved by the LERG layout with no function assigned; always false.
          required: false
          schema:
            type: array
            items:
              type: boolean
          style: form
          explode: true
          example:
            - true
        - name: sof_29_filler
          in: query
          description: SOF 29 Filler (boolean). SOF position reserved by the LERG layout with no function assigned; always false.
          required: false
          schema:
            type: array
            items:
              type: boolean
          style: form
          explode: true
          example:
            - true
        - name: sof_30_filler
          in: query
          description: SOF 30 Filler (boolean). SOF position reserved by the LERG layout with no function assigned; always false.
          required: false
          schema:
            type: array
            items:
              type: boolean
          style: form
          explode: true
          example:
            - true
        - name: sof_31_filler
          in: query
          description: SOF 31 Filler (boolean). SOF position reserved by the LERG layout with no function assigned; always false.
          required: false
          schema:
            type: array
            items:
              type: boolean
          style: form
          explode: true
          example:
            - true
        - name: sof_32_filler
          in: query
          description: SOF 32 Filler (boolean). SOF position reserved by the LERG layout with no function assigned; always false.
          required: false
          schema:
            type: array
            items:
              type: boolean
          style: form
          explode: true
          example:
            - true
        - name: sof_33_filler
          in: query
          description: SOF 33 Filler (boolean). SOF position reserved by the LERG layout with no function assigned; always false.
          required: false
          schema:
            type: array
            items:
              type: boolean
          style: form
          explode: true
          example:
            - true
        - name: sof_34_stp
          in: query
          description: "SOF 34 STP (boolean). SOF 34, Signal Transfer Point: true when the switch is an STP, the packet switch
            that routes SS7 signalling messages between nodes of the common channel signalling network."
          required: false
          schema:
            type: array
            items:
              type: boolean
          style: form
          explode: true
          example:
            - true
        - name: sof_35_ccs_ac
          in: query
          description: "SOF 35 CCS AC (boolean). SOF 35, CCS Access Capable Office: true when the switch has the common channel
            signalling access capability defined in TR-394, so access purchasers may signal to it over SS7; such a
            switch should list its STP pair. A switch without it may still list STPs, but for intraLATA signalling
            only."
          required: false
          schema:
            type: array
            items:
              type: boolean
          style: form
          explode: true
          example:
            - true
        - name: sof_36_filler
          in: query
          description: SOF 36 Filler (boolean). SOF position reserved by the LERG layout with no function assigned; always false.
          required: false
          schema:
            type: array
            items:
              type: boolean
          style: form
          explode: true
          example:
            - true
        - name: sof_37_800_ssp
          in: query
          description: "SOF 37 800 SSP (boolean). SOF 37, 800 SSP: true when the switch can query the toll-free (NPA 800) database
            for calls that originate there. This applies to originating traffic only."
          required: false
          schema:
            type: array
            items:
              type: boolean
          style: form
          explode: true
          example:
            - true
        - name: sof_38_lnp
          in: query
          description: "SOF 38 LNP (boolean). SOF 38, LNP Capable: true when the switch can handle the SS7 messages used for local
            number portability."
          required: false
          schema:
            type: array
            items:
              type: boolean
          style: form
          explode: true
          example:
            - true
        - name: sof_39_filler
          in: query
          description: SOF 39 Filler (boolean). SOF position reserved by the LERG layout with no function assigned; always false.
          required: false
          schema:
            type: array
            items:
              type: boolean
          style: form
          explode: true
          example:
            - true
        - name: sof_40_filler
          in: query
          description: SOF 40 Filler (boolean). SOF position reserved by the LERG layout with no function assigned; always false.
          required: false
          schema:
            type: array
            items:
              type: boolean
          style: form
          explode: true
          example:
            - true
        - name: sof_41_filler
          in: query
          description: SOF 41 Filler (boolean). SOF position reserved by the LERG layout with no function assigned; always false.
          required: false
          schema:
            type: array
            items:
              type: boolean
          style: form
          explode: true
          example:
            - true
        - name: sof_42_cip
          in: query
          description: "SOF 42 CIP (boolean). SOF 42, Carrier Identification Parameter: true when the switch has the special
            option of passing the three- or four-digit CIC of the line's presubscribed carrier in SS7 call setup (the
            Initial Address Message)."
          required: false
          schema:
            type: array
            items:
              type: boolean
          style: form
          explode: true
          example:
            - true
        - name: sof_43_csp
          in: query
          description: "SOF 43 CSP (boolean). SOF 43, Carrier Selection Parameter: true when the switch has the special option of
            signalling automatically whether a call came from a presubscribed line."
          required: false
          schema:
            type: array
            items:
              type: boolean
          style: form
          explode: true
          example:
            - true
        - name: sof_44_filler
          in: query
          description: SOF 44 Filler (boolean). SOF position reserved by the LERG layout with no function assigned; always false.
          required: false
          schema:
            type: array
            items:
              type: boolean
          style: form
          explode: true
          example:
            - true
        - name: sof_45_sw_56
          in: query
          description: "SOF 45 SW 56 (boolean). SOF 45, Switched 56: true when the switch offers switched 56 kbps service (Public
            Switched Digital Service), carrying data at 56 kbps across the public network with in-band signalling."
          required: false
          schema:
            type: array
            items:
              type: boolean
          style: form
          explode: true
          example:
            - true
        - name: sof_46_fgd_56
          in: query
          description: "SOF 46 FGD 56 (boolean). SOF 46, FGD 56: true when the switch offers Feature Group D trunk connections to
            interexchange carriers that can carry 56 kbps rate-adapted data, signalled in band."
          required: false
          schema:
            type: array
            items:
              type: boolean
          style: form
          explode: true
          example:
            - true
        - name: sof_47_fgd_64
          in: query
          description: "SOF 47 FGD 64 (boolean). SOF 47, FGD 64: true when the switch offers Feature Group D trunk connections to
            interexchange carriers with 56 or 64 kbps clear channels, signalled out of band."
          required: false
          schema:
            type: array
            items:
              type: boolean
          style: form
          explode: true
          example:
            - true
        - name: sof_48_int_prsub
          in: query
          description: "SOF 48 INT PRSUB (boolean). SOF 48, IntraLATA Presubscription: true when the switch supports dual PIC, so
            a subscriber can presubscribe to one carrier for intraLATA toll and keep a different carrier for interLATA
            calls."
          required: false
          schema:
            type: array
            items:
              type: boolean
          style: form
          explode: true
          example:
            - true
        - name: sof_49_call_agent
          in: query
          description: "SOF 49 Call Agent (boolean). SOF 49, Call Agent: true when the switch supplies call control and program
            control for distributed, high-capacity gateway equipment in the network."
          required: false
          schema:
            type: array
            items:
              type: boolean
          style: form
          explode: true
          example:
            - true
        - name: sof_50_trunk_gateway
          in: query
          description: "SOF 50 Trunk Gateway (boolean). SOF 50, Trunk Gateway: true when the switch joins digital PSTN trunk
            facilities to a Voice over Packet core network."
          required: false
          schema:
            type: array
            items:
              type: boolean
          style: form
          explode: true
          example:
            - true
        - name: sof_51_access_gateway
          in: query
          description: "SOF 51 Access Gateway (boolean). SOF 51, Access Gateway: true when the switch connects the PSTN line side
            to a Voice over Packet core network."
          required: false
          schema:
            type: array
            items:
              type: boolean
          style: form
          explode: true
          example:
            - true
        - name: sof_52_filler
          in: query
          description: SOF 52 Filler (boolean). SOF position reserved by the LERG layout with no function assigned; always false.
          required: false
          schema:
            type: array
            items:
              type: boolean
          style: form
          explode: true
          example:
            - true
        - name: sof_53_filler
          in: query
          description: SOF 53 Filler (boolean). SOF position reserved by the LERG layout with no function assigned; always false.
          required: false
          schema:
            type: array
            items:
              type: boolean
          style: form
          explode: true
          example:
            - true
        - name: sof_54_filler
          in: query
          description: SOF 54 Filler (boolean). SOF position reserved by the LERG layout with no function assigned; always false.
          required: false
          schema:
            type: array
            items:
              type: boolean
          style: form
          explode: true
          example:
            - true
        - name: sof_55_filler
          in: query
          description: SOF 55 Filler (boolean). SOF position reserved by the LERG layout with no function assigned; always false.
          required: false
          schema:
            type: array
            items:
              type: boolean
          style: form
          explode: true
          example:
            - true
        - name: filler2
          in: query
          description: "Filler 2 (string). Nullable: rows where this column is null never match a filter on it. Unused filler
            column from the LERG layout; always null."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: creation_date
          in: query
          description: Creation Date (date). Date the record was first created in BIRRDS, as YYYY-MM-DD. Informational; useful for
            reconciliation only.
          required: false
          schema:
            type: array
            items:
              type: string
              format: date
          style: form
          explode: true
          example:
            - 2026-03-01
        - name: filler3
          in: query
          description: "Filler 3 (string). Nullable: rows where this column is null never match a filter on it. Unused filler
            column from the LERG layout; always null."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: e_status_date
          in: query
          description: E Status Date (date). Date the record was last established in BIRRDS, as YYYY-MM-DD. Can be more recent
            than the true in-service date because of database clean-up; indicates roughly how long the record has been
            in effect.
          required: false
          schema:
            type: array
            items:
              type: string
              format: date
          style: form
          explode: true
          example:
            - 2026-03-01
        - name: filler4
          in: query
          description: "Filler 4 (string). Nullable: rows where this column is null never match a filter on it. Unused filler
            column from the LERG layout; always null."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: last_modified
          in: query
          description: Last Modified (date). Date of the most recent change to the record that is already in effect, as
            YYYY-MM-DD. Equals the establishing date when nothing has changed since.
          required: false
          schema:
            type: array
            items:
              type: string
              format: date
          style: form
          explode: true
          example:
            - 2026-03-01
        - name: filler5
          in: query
          description: "Filler 5 (string). Nullable: rows where this column is null never match a filter on it. Unused filler
            column from the LERG layout; always null."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: cln_indicator
          in: query
          description: "CLN Indicator (string). Whether the switch CLLI was valid in the CLONES database the day before this LERG
            was produced: A = active (usable and still updatable), I = inactive (usable but no longer updatable), D =
            marked for deletion (not to be used and no longer updatable; it lingers in CLONES until its creator erases
            it), N = not in CLONES (never present, or dropped before August 2004), R = once in CLONES but dropped since
            August 2004, when removals started being tracked. A, I and D are CLONES statuses; N and R are added for the
            LERG."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: bill_to_rao
          in: query
          description: "Bill To RAO (string). Nullable: rows where this column is null never match a filter on it. Bill-to Revenue
            Accounting Office: a three-character alphanumeric code that billing systems use to collect call records for
            the company that will bill them. It is the upper level of the RAO hierarchy; `send_to_rao` refines it. Null
            when not listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: send_to_rao
          in: query
          description: "Send To RAO (string). Nullable: rows where this column is null never match a filter on it. Send-to Revenue
            Accounting Office: a three-character alphanumeric code that subdivides a Bill-to RAO when billing records
            need a finer split. Each Send-to RAO belongs to a Bill-to RAO, though a LERG row may list one without the
            other. Null when not listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: filler6
          in: query
          description: "Filler 6 (string). Nullable: rows where this column is null never match a filter on it. Unused filler
            column from the LERG layout; always null."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
      responses:
        "200":
          description: Envelope with `table`, `count`, `total_unique` and `data[]`, one object per row projected to `fields`.
          content:
            application/json:
              schema:
                type: object
                properties:
                  count:
                    type: integer
                  data:
                    type: array
                    items:
                      type: object
                  table:
                    type: string
                  total_unique:
                    type: integer
                    description: Distinct rows matched before `limit`/`offset`. A query no index can narrow stops scanning once it holds
                      `offset + limit` distinct rows, counting `limit` after it is clamped to 10,000, so a value exactly
                      equal to that sum means "at least this many", not a total; raise `limit` for the true count. Any
                      smaller value is exact, as is every value on an index-backed query.
              example:
                count: 1
                data:
                  - aocn: "6529"
                    bill_to_rao: EXAMPLE
                    cl_4_5_sw: EXAMPLE
                    cln_indicator: EXAMPLE
                    creation_date: 2026-03-01
                    e_status_date: 2026-03-01
                    eff_date: 2026-03-01
                    eqp_type: EXAMPLE
                    filler1: EXAMPLE
                    filler2: EXAMPLE
                    filler3: EXAMPLE
                    filler4: EXAMPLE
                    filler5: EXAMPLE
                    filler6: EXAMPLE
                    h_coord: 1
                    iddd: true
                    last_modified: 2026-03-01
                    lata: 656
                    lata_name: DENVER
                    ocn: "6529"
                    pt_code_flag: EXAMPLE
                    send_to_rao: EXAMPLE
                    sof_10_filler: true
                    sof_11_filler: true
                    sof_12_fg_b_tdm: true
                    sof_13_fg_c_tdm: true
                    sof_14_fg_d_tdm: true
                    sof_15_os_tdm: true
                    sof_16_int_ofc: true
                    sof_17_da_tdm: true
                    sof_18_911_tdm: true
                    sof_19_filler: true
                    sof_1_eo: true
                    sof_20_local_tdm: true
                    sof_21_intra_tdm: true
                    sof_22_cs_data_tdm: true
                    sof_23_bcr5: true
                    sof_24_bcr6: true
                    sof_25_pri_64: true
                    sof_26_isdn_mult: true
                    sof_27_isdn_fs: true
                    sof_28_filler: true
                    sof_29_filler: true
                    sof_2_host: true
                    sof_30_filler: true
                    sof_31_filler: true
                    sof_32_filler: true
                    sof_33_filler: true
                    sof_34_stp: true
                    sof_35_ccs_ac: true
                    sof_36_filler: true
                    sof_37_800_ssp: true
                    sof_38_lnp: true
                    sof_39_filler: true
                    sof_3_rem: true
                    sof_40_filler: true
                    sof_41_filler: true
                    sof_42_cip: true
                    sof_43_csp: true
                    sof_44_filler: true
                    sof_45_sw_56: true
                    sof_46_fgd_56: true
                    sof_47_fgd_64: true
                    sof_48_int_prsub: true
                    sof_49_call_agent: true
                    sof_4_da: true
                    sof_50_trunk_gateway: true
                    sof_51_access_gateway: true
                    sof_52_filler: true
                    sof_53_filler: true
                    sof_54_filler: true
                    sof_55_filler: true
                    sof_5_4_5: true
                    sof_6_wireless: true
                    sof_7_filler: true
                    sof_8_filler: true
                    sof_9_filler: true
                    status: EXAMPLE
                    sw_city: EXAMPLE
                    sw_state: CO
                    sw_street: EXAMPLE
                    sw_zip: EXAMPLE
                    switch: DNVRCOMADS0
                    v_coord: 1
                table: lerg_7
                total_unique: 1
        "400":
          description: Causes include an unknown column in `fields` or as a filter key, `*` combined with other field names, an
            empty filter value, a repeated `fields`/`limit`/`offset`, and a non-numeric `limit`/`offset`. The message
            names the offending key and may carry a `did you mean` hint.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LergErrorResponse"
      security:
        - apiToken: []
  /v1/lerg/lerg_7_ins:
    get:
      tags:
        - LERG
      summary: Query lerg_7_ins with exact-match column filters
      description: >-
        `GET /v1/lerg/lerg_7_ins?column=value&…`


        Every parameter below except `fields`, `limit` and `offset` is a column of lerg_7_ins. Repeat a parameter to
        match any of several values (an IN-list); omit it to leave that column unfiltered. Filters are exact-match and
        are ANDed together.


        A comma inside a filter value is **not** a separator — only `fields` is comma-separated. `?npa=303,720` looks
        for the literal value `303,720`, matches nothing, and returns 200 with an empty `data`. Repeat the key instead:
        `?npa=303&npa=720`.


        This table has no hash index, so every query is a filtered scan; keep `limit` modest.


        This is the same route as `queryTable` with `table_name=lerg_7_ins`, spelled out so the columns are nameable.
        For an operator other than equality, or to join to another table, use `complexQuery`.


        Column definitions are paraphrased from the TruOps TRA LERG Routing Guide, General Information, BD-TRA-LERG-GEN
        Issue 2 (2026-08-01), section 3.1.
      operationId: queryLerg7Ins
      parameters:
        - name: fields
          in: query
          description: "Comma-separated projection. Omit it, or pass `*`, for every column. `*` cannot be combined with other
            names. Valid names: activity_code, activity_date, version, filler_1, lata, lata_name, status, eff_date,
            switch, eqp_type, aocn, filler_2, ocn, v_coord, h_coord, iddd, sw_street, sw_city, sw_state, sw_zip,
            pt_code_flag, cl_4_5_sw, sof_1_eo, sof_2_host, sof_3_rem, sof_4_da, sof_5_4_5, sof_6_wireless, sof_7_filler,
            sof_8_filler, sof_9_filler, sof_10_filler, sof_11_filler, sof_12_fg_b_tdm, sof_13_fg_c_tdm, sof_14_fg_d_tdm,
            sof_15_os_tdm, sof_16_int_ofc, sof_17_da_tdm, sof_18_911_tdm, sof_19_filler, sof_20_local_tdm,
            sof_21_intra_tdm, sof_22_cs_data_tdm, sof_23_bcr5, sof_24_bcr6, sof_25_pri_64, sof_26_isdn_mult,
            sof_27_isdn_fs, sof_28_filler, sof_29_filler, sof_30_filler, sof_31_filler, sof_32_filler, sof_33_filler,
            sof_34_stp, sof_35_ccs_ac, sof_36_filler, sof_37_800_ssp, sof_38_lnp, sof_39_filler, sof_40_filler,
            sof_41_filler, sof_42_cip, sof_43_csp, sof_44_filler, sof_45_sw_56, sof_46_fgd_56, sof_47_fgd_64,
            sof_48_int_prsub, sof_49_call_agent, sof_50_trunk_gateway, sof_51_access_gateway, sof_52_filler,
            sof_53_filler, sof_54_filler, sof_55_filler, filler_3, creation_date, filler_4, e_status_date, filler_5,
            last_modified, filler_6, cln_indicator, bill_to_rao, send_to_rao, filler_7."
          required: false
          schema:
            type: string
          example: activity_code,activity_date,version,filler_1
        - name: limit
          in: query
          description: "Page size, default 100. Clamped to 10,000: a larger value is accepted and silently reduced, never
            rejected, so no `maximum` is declared here. `limit=0` is accepted and returns an empty page. On a query no
            index can narrow this also bounds the work: the scan stops at `offset + limit` distinct rows."
          required: false
          schema:
            type: integer
            minimum: 0
          example: 100
        - name: offset
          in: query
          description: "Rows to skip for pagination, default 0. Not capped, deliberately: a ceiling here would make paging through
            a table impossible. On a query no index can narrow, `offset` counts towards the scan bound of `offset +
            limit` distinct rows, so a deep page costs the rows it skips -- `offset=1500000` reads 1.5M rows whatever
            `limit` says. Filter on an indexed column to page at constant cost."
          required: false
          schema:
            type: integer
            minimum: 0
          example: 0
        - name: activity_code
          in: query
          description: "Activity Code (string). What happened to this record in the month-to-month insert file: A = added, R =
            removed, U = updated. Interpret alongside `status` and `eff_date`."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: activity_date
          in: query
          description: Activity Date (date). Date the insert-file activity was performed in BIRRDS, as YYYY-MM-DD. Usually in the
            prior month.
          required: false
          schema:
            type: array
            items:
              type: string
              format: date
          style: form
          explode: true
          example:
            - 2026-03-01
        - name: version
          in: query
          description: Version (string). Version letter of this insert-file transaction. Normally A; a later letter means the same
            activity was reissued on the same activity date.
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: filler_1
          in: query
          description: "Filler 1 (string). Nullable: rows where this column is null never match a filter on it. Unused filler
            column from the LERG layout; always null."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: lata
          in: query
          description: LATA (integer). Local Access and Transport Area, the numeric code of the geographic area this record
            belongs to. 999 and 99999 mark non-geographic and reserved assignments and are real values, not nulls.
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 656
        - name: lata_name
          in: query
          description: LATA Name (string). Name of the LATA, or of the LATA-like area for non-LATA regions.
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - DENVER
        - name: status
          in: query
          description: "Status (string). Kind of change this insert-file line reports, taking effect on `eff_date`: E = the record
            is being established, M = some of its values change (compare it field by field with the record's earlier
            view), D = the record is being disconnected. Always present on insert-file lines."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: eff_date
          in: query
          description: Effective Date (date). Date the change on this insert-file line takes effect, as YYYY-MM-DD. It can fall in
            the month since the previous LERG issue closed (the main table then already reflects the change as current)
            or in the future. For rare back-dated updates it equals `activity_date` and need not match the date held in
            BIRRDS.
          required: false
          schema:
            type: array
            items:
              type: string
              format: date
          style: form
          explode: true
          example:
            - 2026-03-01
        - name: switch
          in: query
          description: Switch (string). Eleven-character identifier of this switching entity or point of interface (POI), normally
            its Common Language (CLLI) code, and the key other LERG files use to refer to it. One physical switch can be
            listed under several identifiers (for instance one per role it plays), a POI need not sit at a physical
            switch, and a few values are placeholders rather than real CLLIs; `cln_indicator` reports whether the code
            is a valid CLLI.
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - DNVRCOMADS0
        - name: eqp_type
          in: query
          description: Equipment Type (string). Short code for the kind of equipment the switch runs on, normally three characters
            and matched to Common Language switching system codes (for example DMT or 5EH). XXX marks a placeholder
            identifier that stands for no real switch, such as those used for NPA 9YY or for NANP areas without CLLIs;
            POI marks a point of interface.
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: aocn
          in: query
          description: "AOCN (string). Administrative Operating Company Number: the OCN of the company that maintains this record
            in the BIRRDS database. A company that administers its own records usually puts its own OCN here; a
            third-party administrator has a separate value. Since 2018 each new administrator gets a distinct OCN from
            TRA for this role, and since 2020 those values begin with G."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - "6529"
        - name: filler_2
          in: query
          description: "Filler 2 (string). Nullable: rows where this column is null never match a filter on it. Unused filler
            column from the LERG layout; always null."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: ocn
          in: query
          description: "OCN (string). Operating Company Number: the four-character alphanumeric code TRA uses to identify the
            company that holds this record's numbering resource, switch, or other assignment. NECA Company Codes are a
            subset; TRA assigns the rest. Names are in LERG 1."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - "6529"
        - name: v_coord
          in: query
          description: V Coordinate (float). Vertical coordinate of the switch or POI on the V&H grid, a whole number of normally
            four or five digits worked out from latitude and longitude. With `h_coord` it gives the air mileage between
            two switches. A provider may report a spot other than the true site for tariff reasons (a remote placed at
            its host, say), and switch V&H can differ from the Rate Center V&H in LERG 8.
          required: false
          schema:
            type: array
            items:
              type: number
          style: form
          explode: true
          example:
            - 1
        - name: h_coord
          in: query
          description: "H Coordinate (float). Horizontal coordinate of the switch or POI on the V&H grid, read together with
            `v_coord`: a whole number of normally four or five digits, negative for a few locations such as Puerto Rico.
            The same caveats apply: it may be reported away from the true site for tariff reasons, and it is not the
            Rate Center coordinate in LERG 8."
          required: false
          schema:
            type: array
            items:
              type: number
          style: form
          explode: true
          example:
            - 1
        - name: iddd
          in: query
          description: IDDD (boolean). True when the switch provides International Direct Distance Dialing, so international calls
            need no operator.
          required: false
          schema:
            type: array
            items:
              type: boolean
          style: form
          explode: true
          example:
            - true
        - name: sw_street
          in: query
          description: Switch Street (string). Street address of the building that houses the switch or POI.
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: sw_city
          in: query
          description: Switch City (string). City of the switch or POI address.
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: sw_state
          in: query
          description: Switch State (string). Two-letter code for the state, province, territory or (for Caribbean NANP members)
            country of the switch or POI address.
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - CO
        - name: sw_zip
          in: query
          description: "Switch ZIP (string). Postal code of the address: a five-digit or nine-digit US ZIP, or a non-US postal
            code."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: pt_code_flag
          in: query
          description: "Point Code Flag (string). Nullable: rows where this column is null never match a filter on it. SS7 point
            code flag. P: a point code is assigned to the switch now, or is due to be from this future view onward. C:
            on a future view, the point code differs from the one on the preceding view. Null: the switch has no point
            code, or this view removes it. The code itself is not in the LERG; the switch's provider supplies it on
            request."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: cl_4_5_sw
          in: query
          description: "CL 4/5 Switch (string). Nullable: rows where this column is null never match a filter on it. Set only on
            Class 4/5 switches (`sof_5_4_5`). Such an office does both end-office (Class 5) and toll or tandem (Class 4)
            work and appears in LERG 7 under two identifiers, one per role; this column normally names the record for
            the other role. Null for every other switch."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: sof_1_eo
          in: query
          description: "SOF 1 EO (boolean). SOF 1, End Office: true when the switch is designated to serve subscriber lines: it
            supplies dial tone and connects calls among its own lines and between those lines and trunks. A host with no
            lines of its own does not count."
          required: false
          schema:
            type: array
            items:
              type: boolean
          style: form
          explode: true
          example:
            - true
        - name: sof_2_host
          in: query
          description: "SOF 2 Host (boolean). SOF 2, Host: true when the switch is designated to supply shared processor functions
            to one or more remote switches and to carry the traffic those remotes originate or terminate."
          required: false
          schema:
            type: array
            items:
              type: boolean
          style: form
          explode: true
          example:
            - true
        - name: sof_3_rem
          in: query
          description: "SOF 3 REM (boolean). SOF 3, Remote: true when the switch relies on a host switch for common processing,
            its traffic normally passing through that host (LERG 7 SHA names the host)."
          required: false
          schema:
            type: array
            items:
              type: boolean
          style: form
          explode: true
          example:
            - true
        - name: sof_4_da
          in: query
          description: "SOF 4 DA (boolean). SOF 4, Directory Assistance Office: true when the switch lets customers or operators
            look up listed numbers and addresses (dialled as 411, 555-1212, NPA-555-1212)."
          required: false
          schema:
            type: array
            items:
              type: boolean
          style: form
          explode: true
          example:
            - true
        - name: sof_5_4_5
          in: query
          description: "SOF 5 4/5 (boolean). SOF 5, Class 4/5: true when one switch does both Class 5 work (dial tone and
            line-side features for end users) and Class 4 work (tandem and toll trunking such as feature group access
            and operator services). Such an office is listed under two identifiers, linked through `cl_4_5_sw`."
          required: false
          schema:
            type: array
            items:
              type: boolean
          style: form
          explode: true
          example:
            - true
        - name: sof_6_wireless
          in: query
          description: "SOF 6 Wireless (boolean). SOF 6, Wireless Office: true when the switch is the point where wireless
            subscribers' calls get dial tone or are delivered to them."
          required: false
          schema:
            type: array
            items:
              type: boolean
          style: form
          explode: true
          example:
            - true
        - name: sof_7_filler
          in: query
          description: SOF 7 Filler (boolean). SOF position reserved by the LERG layout with no function assigned; always false.
          required: false
          schema:
            type: array
            items:
              type: boolean
          style: form
          explode: true
          example:
            - true
        - name: sof_8_filler
          in: query
          description: SOF 8 Filler (boolean). SOF position reserved by the LERG layout with no function assigned; always false.
          required: false
          schema:
            type: array
            items:
              type: boolean
          style: form
          explode: true
          example:
            - true
        - name: sof_9_filler
          in: query
          description: SOF 9 Filler (boolean). SOF position reserved by the LERG layout with no function assigned; always false.
          required: false
          schema:
            type: array
            items:
              type: boolean
          style: form
          explode: true
          example:
            - true
        - name: sof_10_filler
          in: query
          description: SOF 10 Filler (boolean). SOF position reserved by the LERG layout with no function assigned; always false.
          required: false
          schema:
            type: array
            items:
              type: boolean
          style: form
          explode: true
          example:
            - true
        - name: sof_11_filler
          in: query
          description: SOF 11 Filler (boolean). SOF position reserved by the LERG layout with no function assigned; always false.
          required: false
          schema:
            type: array
            items:
              type: boolean
          style: form
          explode: true
          example:
            - true
        - name: sof_12_fg_b_tdm
          in: query
          description: "SOF 12 FG B TDM (boolean). SOF 12, Feature Group B Tandem: true when the switch is a tandem that
            concentrates the Feature Group B traffic exchanged between end offices and interexchange carriers."
          required: false
          schema:
            type: array
            items:
              type: boolean
          style: form
          explode: true
          example:
            - true
        - name: sof_13_fg_c_tdm
          in: query
          description: "SOF 13 FG C TDM (boolean). SOF 13, Feature Group C Tandem: true when end offices home on this tandem for
            Feature Group C exchange access, the arrangement that uses traditional signalling and does not offer Feature
            Group D equal access."
          required: false
          schema:
            type: array
            items:
              type: boolean
          style: form
          explode: true
          example:
            - true
        - name: sof_14_fg_d_tdm
          in: query
          description: "SOF 14 FG D TDM (boolean). SOF 14, Feature Group D Tandem: true when the switch is a tandem for Feature
            Group D, the equal-access trunk arrangement with interexchange carriers that lets a caller reach the
            presubscribed carrier by dialling 1+ and any other carrier with a 101XXXX code."
          required: false
          schema:
            type: array
            items:
              type: boolean
          style: form
          explode: true
          example:
            - true
        - name: sof_15_os_tdm
          in: query
          description: "SOF 15 OS TDM (boolean). SOF 15, Operator Services Tandem: true when the switch concentrates
            operator-handled traffic such as toll assistance and intercept, typically with alternate billing, coin
            service, AMA processing and call distribution to operators."
          required: false
          schema:
            type: array
            items:
              type: boolean
          style: form
          explode: true
          example:
            - true
        - name: sof_16_int_ofc
          in: query
          description: "SOF 16 INT OFC (boolean). SOF 16, Intermediate Office: true when the switch, neither the end office where
            a call starts or ends nor an access tandem, sits between those offices in some network designs to help
            complete calls."
          required: false
          schema:
            type: array
            items:
              type: boolean
          style: form
          explode: true
          example:
            - true
        - name: sof_17_da_tdm
          in: query
          description: "SOF 17 DA TDM (boolean). SOF 17, Directory Assistance Tandem: true when the switch is the tandem through
            which customers or operators reach a Directory Assistance office (411, 555-1212, NPA-555-1212)."
          required: false
          schema:
            type: array
            items:
              type: boolean
          style: form
          explode: true
          example:
            - true
        - name: sof_18_911_tdm
          in: query
          description: "SOF 18 911 TDM (boolean). SOF 18, 911 Tandem: true when the switch links end-office trunks to the switch
            serving Public Safety Answering Points. PSAPs and the area a 911 service covers are not in the LERG."
          required: false
          schema:
            type: array
            items:
              type: boolean
          style: form
          explode: true
          example:
            - true
        - name: sof_19_filler
          in: query
          description: SOF 19 Filler (boolean). SOF position reserved by the LERG layout with no function assigned; always false.
          required: false
          schema:
            type: array
            items:
              type: boolean
          style: form
          explode: true
          example:
            - true
        - name: sof_20_local_tdm
          in: query
          description: "SOF 20 Local TDM (boolean). SOF 20, Local Tandem: true when the switch is a LEC tandem joining trunks
            between end offices for local traffic inside a tariffed local calling area. Only the tandem an office homes
            on is shown, although reaching every office may take more than one local tandem."
          required: false
          schema:
            type: array
            items:
              type: boolean
          style: form
          explode: true
          example:
            - true
        - name: sof_21_intra_tdm
          in: query
          description: "SOF 21 Intra TDM (boolean). SOF 21, IntraLATA Tandem: true when the switch concentrates trunks for toll
            calls that both start and end inside one LATA, so end offices need fewer direct trunks between them."
          required: false
          schema:
            type: array
            items:
              type: boolean
          style: form
          explode: true
          example:
            - true
        - name: sof_22_cs_data_tdm
          in: query
          description: "SOF 22 CS Data TDM (boolean). SOF 22, Circuit Switched Data Tandem: true when the switch acts as a tandem
            for switched data calls such as BCR5, BCR6 and PRI 64 traffic."
          required: false
          schema:
            type: array
            items:
              type: boolean
          style: form
          explode: true
          example:
            - true
        - name: sof_23_bcr5
          in: query
          description: "SOF 23 BCR5 (boolean). SOF 23, BCR5: true when the switch offers ISDN Basic Rate Interface access at 56
            kbps: two bearer channels plus one signalling channel (2B+D), signalled out of band."
          required: false
          schema:
            type: array
            items:
              type: boolean
          style: form
          explode: true
          example:
            - true
        - name: sof_24_bcr6
          in: query
          description: "SOF 24 BCR6 (boolean). SOF 24, BCR6: true when the switch offers ISDN Basic Rate Interface access with 64
            kbps clear channels as well as 56 kbps, again 2B+D with out-of-band signalling."
          required: false
          schema:
            type: array
            items:
              type: boolean
          style: form
          explode: true
          example:
            - true
        - name: sof_25_pri_64
          in: query
          description: "SOF 25 PRI 64 (boolean). SOF 25, PRI 64: true when the switch offers ISDN Primary Rate Interface access:
            23 bearer channels plus one signalling channel (23B+D), each 64 kbps, usable at 56 or 64 kbps clear in any
            mix."
          required: false
          schema:
            type: array
            items:
              type: boolean
          style: form
          explode: true
          example:
            - true
        - name: sof_26_isdn_mult
          in: query
          description: "SOF 26 ISDN Mult (boolean). SOF 26, ISDN Multirate: true when the switch lets customers set up
            circuit-switched calls of n x 64 kbps over an ISDN PRI on demand, from one DS0 (64 kbps) to 24 DS0s (1,536
            kbps)."
          required: false
          schema:
            type: array
            items:
              type: boolean
          style: form
          explode: true
          example:
            - true
        - name: sof_27_isdn_fs
          in: query
          description: "SOF 27 ISDN FS (boolean). SOF 27, ISDN Foreign Serving Office: true when this switch supplies ISDN service
            to subscribers of other offices that do not provide it themselves. Offices served this way name it in the
            `isdn_foreign_off` column of their LERG 7 SHA rows."
          required: false
          schema:
            type: array
            items:
              type: boolean
          style: form
          explode: true
          example:
            - true
        - name: sof_28_filler
          in: query
          description: SOF 28 Filler (boolean). SOF position reserved by the LERG layout with no function assigned; always false.
          required: false
          schema:
            type: array
            items:
              type: boolean
          style: form
          explode: true
          example:
            - true
        - name: sof_29_filler
          in: query
          description: SOF 29 Filler (boolean). SOF position reserved by the LERG layout with no function assigned; always false.
          required: false
          schema:
            type: array
            items:
              type: boolean
          style: form
          explode: true
          example:
            - true
        - name: sof_30_filler
          in: query
          description: SOF 30 Filler (boolean). SOF position reserved by the LERG layout with no function assigned; always false.
          required: false
          schema:
            type: array
            items:
              type: boolean
          style: form
          explode: true
          example:
            - true
        - name: sof_31_filler
          in: query
          description: SOF 31 Filler (boolean). SOF position reserved by the LERG layout with no function assigned; always false.
          required: false
          schema:
            type: array
            items:
              type: boolean
          style: form
          explode: true
          example:
            - true
        - name: sof_32_filler
          in: query
          description: SOF 32 Filler (boolean). SOF position reserved by the LERG layout with no function assigned; always false.
          required: false
          schema:
            type: array
            items:
              type: boolean
          style: form
          explode: true
          example:
            - true
        - name: sof_33_filler
          in: query
          description: SOF 33 Filler (boolean). SOF position reserved by the LERG layout with no function assigned; always false.
          required: false
          schema:
            type: array
            items:
              type: boolean
          style: form
          explode: true
          example:
            - true
        - name: sof_34_stp
          in: query
          description: "SOF 34 STP (boolean). SOF 34, Signal Transfer Point: true when the switch is an STP, the packet switch
            that routes SS7 signalling messages between nodes of the common channel signalling network."
          required: false
          schema:
            type: array
            items:
              type: boolean
          style: form
          explode: true
          example:
            - true
        - name: sof_35_ccs_ac
          in: query
          description: "SOF 35 CCS AC (boolean). SOF 35, CCS Access Capable Office: true when the switch has the common channel
            signalling access capability defined in TR-394, so access purchasers may signal to it over SS7; such a
            switch should list its STP pair. A switch without it may still list STPs, but for intraLATA signalling
            only."
          required: false
          schema:
            type: array
            items:
              type: boolean
          style: form
          explode: true
          example:
            - true
        - name: sof_36_filler
          in: query
          description: SOF 36 Filler (boolean). SOF position reserved by the LERG layout with no function assigned; always false.
          required: false
          schema:
            type: array
            items:
              type: boolean
          style: form
          explode: true
          example:
            - true
        - name: sof_37_800_ssp
          in: query
          description: "SOF 37 800 SSP (boolean). SOF 37, 800 SSP: true when the switch can query the toll-free (NPA 800) database
            for calls that originate there. This applies to originating traffic only."
          required: false
          schema:
            type: array
            items:
              type: boolean
          style: form
          explode: true
          example:
            - true
        - name: sof_38_lnp
          in: query
          description: "SOF 38 LNP (boolean). SOF 38, LNP Capable: true when the switch can handle the SS7 messages used for local
            number portability."
          required: false
          schema:
            type: array
            items:
              type: boolean
          style: form
          explode: true
          example:
            - true
        - name: sof_39_filler
          in: query
          description: SOF 39 Filler (boolean). SOF position reserved by the LERG layout with no function assigned; always false.
          required: false
          schema:
            type: array
            items:
              type: boolean
          style: form
          explode: true
          example:
            - true
        - name: sof_40_filler
          in: query
          description: SOF 40 Filler (boolean). SOF position reserved by the LERG layout with no function assigned; always false.
          required: false
          schema:
            type: array
            items:
              type: boolean
          style: form
          explode: true
          example:
            - true
        - name: sof_41_filler
          in: query
          description: SOF 41 Filler (boolean). SOF position reserved by the LERG layout with no function assigned; always false.
          required: false
          schema:
            type: array
            items:
              type: boolean
          style: form
          explode: true
          example:
            - true
        - name: sof_42_cip
          in: query
          description: "SOF 42 CIP (boolean). SOF 42, Carrier Identification Parameter: true when the switch has the special
            option of passing the three- or four-digit CIC of the line's presubscribed carrier in SS7 call setup (the
            Initial Address Message)."
          required: false
          schema:
            type: array
            items:
              type: boolean
          style: form
          explode: true
          example:
            - true
        - name: sof_43_csp
          in: query
          description: "SOF 43 CSP (boolean). SOF 43, Carrier Selection Parameter: true when the switch has the special option of
            signalling automatically whether a call came from a presubscribed line."
          required: false
          schema:
            type: array
            items:
              type: boolean
          style: form
          explode: true
          example:
            - true
        - name: sof_44_filler
          in: query
          description: SOF 44 Filler (boolean). SOF position reserved by the LERG layout with no function assigned; always false.
          required: false
          schema:
            type: array
            items:
              type: boolean
          style: form
          explode: true
          example:
            - true
        - name: sof_45_sw_56
          in: query
          description: "SOF 45 SW 56 (boolean). SOF 45, Switched 56: true when the switch offers switched 56 kbps service (Public
            Switched Digital Service), carrying data at 56 kbps across the public network with in-band signalling."
          required: false
          schema:
            type: array
            items:
              type: boolean
          style: form
          explode: true
          example:
            - true
        - name: sof_46_fgd_56
          in: query
          description: "SOF 46 FGD 56 (boolean). SOF 46, FGD 56: true when the switch offers Feature Group D trunk connections to
            interexchange carriers that can carry 56 kbps rate-adapted data, signalled in band."
          required: false
          schema:
            type: array
            items:
              type: boolean
          style: form
          explode: true
          example:
            - true
        - name: sof_47_fgd_64
          in: query
          description: "SOF 47 FGD 64 (boolean). SOF 47, FGD 64: true when the switch offers Feature Group D trunk connections to
            interexchange carriers with 56 or 64 kbps clear channels, signalled out of band."
          required: false
          schema:
            type: array
            items:
              type: boolean
          style: form
          explode: true
          example:
            - true
        - name: sof_48_int_prsub
          in: query
          description: "SOF 48 INT PRSUB (boolean). SOF 48, IntraLATA Presubscription: true when the switch supports dual PIC, so
            a subscriber can presubscribe to one carrier for intraLATA toll and keep a different carrier for interLATA
            calls."
          required: false
          schema:
            type: array
            items:
              type: boolean
          style: form
          explode: true
          example:
            - true
        - name: sof_49_call_agent
          in: query
          description: "SOF 49 Call Agent (boolean). SOF 49, Call Agent: true when the switch supplies call control and program
            control for distributed, high-capacity gateway equipment in the network."
          required: false
          schema:
            type: array
            items:
              type: boolean
          style: form
          explode: true
          example:
            - true
        - name: sof_50_trunk_gateway
          in: query
          description: "SOF 50 Trunk Gateway (boolean). SOF 50, Trunk Gateway: true when the switch joins digital PSTN trunk
            facilities to a Voice over Packet core network."
          required: false
          schema:
            type: array
            items:
              type: boolean
          style: form
          explode: true
          example:
            - true
        - name: sof_51_access_gateway
          in: query
          description: "SOF 51 Access Gateway (boolean). SOF 51, Access Gateway: true when the switch connects the PSTN line side
            to a Voice over Packet core network."
          required: false
          schema:
            type: array
            items:
              type: boolean
          style: form
          explode: true
          example:
            - true
        - name: sof_52_filler
          in: query
          description: SOF 52 Filler (boolean). SOF position reserved by the LERG layout with no function assigned; always false.
          required: false
          schema:
            type: array
            items:
              type: boolean
          style: form
          explode: true
          example:
            - true
        - name: sof_53_filler
          in: query
          description: SOF 53 Filler (boolean). SOF position reserved by the LERG layout with no function assigned; always false.
          required: false
          schema:
            type: array
            items:
              type: boolean
          style: form
          explode: true
          example:
            - true
        - name: sof_54_filler
          in: query
          description: SOF 54 Filler (boolean). SOF position reserved by the LERG layout with no function assigned; always false.
          required: false
          schema:
            type: array
            items:
              type: boolean
          style: form
          explode: true
          example:
            - true
        - name: sof_55_filler
          in: query
          description: SOF 55 Filler (boolean). SOF position reserved by the LERG layout with no function assigned; always false.
          required: false
          schema:
            type: array
            items:
              type: boolean
          style: form
          explode: true
          example:
            - true
        - name: filler_3
          in: query
          description: "Filler 3 (string). Nullable: rows where this column is null never match a filter on it. Unused filler
            column from the LERG layout; always null."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: creation_date
          in: query
          description: Creation Date (date). Date the record was first created in BIRRDS, as YYYY-MM-DD. Informational; useful for
            reconciliation only.
          required: false
          schema:
            type: array
            items:
              type: string
              format: date
          style: form
          explode: true
          example:
            - 2026-03-01
        - name: filler_4
          in: query
          description: "Filler 4 (string). Nullable: rows where this column is null never match a filter on it. Unused filler
            column from the LERG layout; always null."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: e_status_date
          in: query
          description: E Status Date (date). Date the record was last established in BIRRDS, as YYYY-MM-DD. Can be more recent
            than the true in-service date because of database clean-up; indicates roughly how long the record has been
            in effect.
          required: false
          schema:
            type: array
            items:
              type: string
              format: date
          style: form
          explode: true
          example:
            - 2026-03-01
        - name: filler_5
          in: query
          description: "Filler 5 (string). Nullable: rows where this column is null never match a filter on it. Unused filler
            column from the LERG layout; always null."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: last_modified
          in: query
          description: Last Modified (date). Date of the most recent change to the record that is already in effect, as
            YYYY-MM-DD. Equals the establishing date when nothing has changed since.
          required: false
          schema:
            type: array
            items:
              type: string
              format: date
          style: form
          explode: true
          example:
            - 2026-03-01
        - name: filler_6
          in: query
          description: "Filler 6 (string). Nullable: rows where this column is null never match a filter on it. Unused filler
            column from the LERG layout; always null."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: cln_indicator
          in: query
          description: "CLN Indicator (string). Whether the switch CLLI was valid in the CLONES database the day before this LERG
            was produced: A = active (usable and still updatable), I = inactive (usable but no longer updatable), D =
            marked for deletion (not to be used and no longer updatable; it lingers in CLONES until its creator erases
            it), N = not in CLONES (never present, or dropped before August 2004), R = once in CLONES but dropped since
            August 2004, when removals started being tracked. A, I and D are CLONES statuses; N and R are added for the
            LERG."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: bill_to_rao
          in: query
          description: "Bill To RAO (string). Nullable: rows where this column is null never match a filter on it. Bill-to Revenue
            Accounting Office: a three-character alphanumeric code that billing systems use to collect call records for
            the company that will bill them. It is the upper level of the RAO hierarchy; `send_to_rao` refines it. Null
            when not listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: send_to_rao
          in: query
          description: "Send To RAO (string). Nullable: rows where this column is null never match a filter on it. Send-to Revenue
            Accounting Office: a three-character alphanumeric code that subdivides a Bill-to RAO when billing records
            need a finer split. Each Send-to RAO belongs to a Bill-to RAO, though a LERG row may list one without the
            other. Null when not listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: filler_7
          in: query
          description: "Filler 7 (string). Nullable: rows where this column is null never match a filter on it. Unused filler
            column from the LERG layout; always null."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
      responses:
        "200":
          description: Envelope with `table`, `count`, `total_unique` and `data[]`, one object per row projected to `fields`.
          content:
            application/json:
              schema:
                type: object
                properties:
                  count:
                    type: integer
                  data:
                    type: array
                    items:
                      type: object
                  table:
                    type: string
                  total_unique:
                    type: integer
                    description: Distinct rows matched before `limit`/`offset`. A query no index can narrow stops scanning once it holds
                      `offset + limit` distinct rows, counting `limit` after it is clamped to 10,000, so a value exactly
                      equal to that sum means "at least this many", not a total; raise `limit` for the true count. Any
                      smaller value is exact, as is every value on an index-backed query.
              example:
                count: 1
                data:
                  - activity_code: EXAMPLE
                    activity_date: 2026-03-01
                    aocn: "6529"
                    bill_to_rao: EXAMPLE
                    cl_4_5_sw: EXAMPLE
                    cln_indicator: EXAMPLE
                    creation_date: 2026-03-01
                    e_status_date: 2026-03-01
                    eff_date: 2026-03-01
                    eqp_type: EXAMPLE
                    filler_1: EXAMPLE
                    filler_2: EXAMPLE
                    filler_3: EXAMPLE
                    filler_4: EXAMPLE
                    filler_5: EXAMPLE
                    filler_6: EXAMPLE
                    filler_7: EXAMPLE
                    h_coord: 1
                    iddd: true
                    last_modified: 2026-03-01
                    lata: 656
                    lata_name: DENVER
                    ocn: "6529"
                    pt_code_flag: EXAMPLE
                    send_to_rao: EXAMPLE
                    sof_10_filler: true
                    sof_11_filler: true
                    sof_12_fg_b_tdm: true
                    sof_13_fg_c_tdm: true
                    sof_14_fg_d_tdm: true
                    sof_15_os_tdm: true
                    sof_16_int_ofc: true
                    sof_17_da_tdm: true
                    sof_18_911_tdm: true
                    sof_19_filler: true
                    sof_1_eo: true
                    sof_20_local_tdm: true
                    sof_21_intra_tdm: true
                    sof_22_cs_data_tdm: true
                    sof_23_bcr5: true
                    sof_24_bcr6: true
                    sof_25_pri_64: true
                    sof_26_isdn_mult: true
                    sof_27_isdn_fs: true
                    sof_28_filler: true
                    sof_29_filler: true
                    sof_2_host: true
                    sof_30_filler: true
                    sof_31_filler: true
                    sof_32_filler: true
                    sof_33_filler: true
                    sof_34_stp: true
                    sof_35_ccs_ac: true
                    sof_36_filler: true
                    sof_37_800_ssp: true
                    sof_38_lnp: true
                    sof_39_filler: true
                    sof_3_rem: true
                    sof_40_filler: true
                    sof_41_filler: true
                    sof_42_cip: true
                    sof_43_csp: true
                    sof_44_filler: true
                    sof_45_sw_56: true
                    sof_46_fgd_56: true
                    sof_47_fgd_64: true
                    sof_48_int_prsub: true
                    sof_49_call_agent: true
                    sof_4_da: true
                    sof_50_trunk_gateway: true
                    sof_51_access_gateway: true
                    sof_52_filler: true
                    sof_53_filler: true
                    sof_54_filler: true
                    sof_55_filler: true
                    sof_5_4_5: true
                    sof_6_wireless: true
                    sof_7_filler: true
                    sof_8_filler: true
                    sof_9_filler: true
                    status: EXAMPLE
                    sw_city: EXAMPLE
                    sw_state: CO
                    sw_street: EXAMPLE
                    sw_zip: EXAMPLE
                    switch: DNVRCOMADS0
                    v_coord: 1
                    version: EXAMPLE
                table: lerg_7_ins
                total_unique: 1
        "400":
          description: Causes include an unknown column in `fields` or as a filter key, `*` combined with other field names, an
            empty filter value, a repeated `fields`/`limit`/`offset`, and a non-numeric `limit`/`offset`. The message
            names the offending key and may carry a `did you mean` hint.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LergErrorResponse"
      security:
        - apiToken: []
  /v1/lerg/lerg_7_sha:
    get:
      tags:
        - LERG
      summary: Query lerg_7_sha with exact-match column filters
      description: >-
        `GET /v1/lerg/lerg_7_sha?column=value&…`


        Every parameter below except `fields`, `limit` and `offset` is a column of lerg_7_sha. Repeat a parameter to
        match any of several values (an IN-list); omit it to leave that column unfiltered. Filters are exact-match and
        are ANDed together.


        A comma inside a filter value is **not** a separator — only `fields` is comma-separated. `?npa=303,720` looks
        for the literal value `303,720`, matches nothing, and returns 200 with an empty `data`. Repeat the key instead:
        `?npa=303&npa=720`.


        This table has no hash index, so every query is a filtered scan; keep `limit` modest.


        This is the same route as `queryTable` with `table_name=lerg_7_sha`, spelled out so the columns are nameable.
        For an operator other than equality, or to join to another table, use `complexQuery`.


        Column definitions are paraphrased from the TruOps TRA LERG Routing Guide, General Information, BD-TRA-LERG-GEN
        Issue 2 (2026-08-01), section 3.1.
      operationId: queryLerg7Sha
      parameters:
        - name: fields
          in: query
          description: "Comma-separated projection. Omit it, or pass `*`, for every column. `*` cannot be combined with other
            names. Valid names: lata, lata_name, status, eff_date, switch, sha_indicator, h_org_b_tdm, h_org_c_tdm,
            h_org_d_tdm, h_org_os_tdm, h_org_b_int_tdm, h_org_c_int_tdm, h_org_d_int_tdm, h_org_local_tdm,
            h_org_intra_l_tdm, h_org_cir_sw_tdm, filler1, h_trm_b_tdm, h_trm_c_tdm, h_trm_d_tdm, h_trm_os_tdm,
            h_trm_b_int_tdm, h_trm_c_int_tdm, h_trm_d_int_tdm, h_trm_local_tdm, h_trm_intra_l_tdm, h_trm_cir_sw_tdm,
            filler2, host, stp1, stp2, filler3, orig_800_ssp, isdn_foreign_off, actual_sw_id, call_agent, trunk_gateway,
            filler4, filler5, ocn, aocn, filler6, creation_date, filler7, e_status_date, filler8, last_modified,
            filler9."
          required: false
          schema:
            type: string
          example: lata,lata_name,status,eff_date
        - name: limit
          in: query
          description: "Page size, default 100. Clamped to 10,000: a larger value is accepted and silently reduced, never
            rejected, so no `maximum` is declared here. `limit=0` is accepted and returns an empty page. On a query no
            index can narrow this also bounds the work: the scan stops at `offset + limit` distinct rows."
          required: false
          schema:
            type: integer
            minimum: 0
          example: 100
        - name: offset
          in: query
          description: "Rows to skip for pagination, default 0. Not capped, deliberately: a ceiling here would make paging through
            a table impossible. On a query no index can narrow, `offset` counts towards the scan bound of `offset +
            limit` distinct rows, so a deep page costs the rows it skips -- `offset=1500000` reads 1.5M rows whatever
            `limit` says. Filter on an indexed column to page at constant cost."
          required: false
          schema:
            type: integer
            minimum: 0
          example: 0
        - name: lata
          in: query
          description: LATA (integer). Local Access and Transport Area, the numeric code of the geographic area this record
            belongs to. 999 and 99999 mark non-geographic and reserved assignments and are real values, not nulls.
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 656
        - name: lata_name
          in: query
          description: LATA Name (string). Name of the LATA, or of the LATA-like area for non-LATA regions.
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - DENVER
        - name: status
          in: query
          description: "Status (string). Nullable: rows where this column is null never match a filter on it. Pending activity on
            this record, read together with the effective date: E = the record is being established, M = the record is
            being modified (compare against the preceding current view to see what changes), D = the record is being
            disconnected. Null means the record is current and active as of this LERG issue."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: eff_date
          in: query
          description: "Effective Date (date). Nullable: rows where this column is null never match a filter on it. Date on which
            the activity in `status` takes effect, as YYYY-MM-DD. Null when the record is current. The LERG is a
            planning tool: this date is a forecast, not an activation record."
          required: false
          schema:
            type: array
            items:
              type: string
              format: date
          style: form
          explode: true
          example:
            - 2026-03-01
        - name: switch
          in: query
          description: Switch (string). Eleven-character identifier, normally the CLLI code, of the LERG 7 switching entity or
            point of interface whose homing arrangement this record describes. With `sha_indicator` it selects one
            arrangement; look the switch itself up in LERG 7.
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - DNVRCOMADS0
        - name: sha_indicator
          in: query
          description: SHA Indicator (string). Switch Homing Arrangement indicator, a two-digit code that together with `switch`
            selects which homing arrangement in LERG 7 SHA applies. 00 is the default arrangement.
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: h_org_b_tdm
          in: query
          description: "H-ORG B TDM (string). Nullable: rows where this column is null never match a filter on it. Originating
            Feature Group B tandem: CLLI of the tandem this switch homes on for Feature Group B traffic that starts at
            the switch. A Feature Group B tandem concentrates the carrier-access traffic passed between end offices and
            interexchange carriers. Null when no such homing is listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: h_org_c_tdm
          in: query
          description: "H-ORG C TDM (string). Nullable: rows where this column is null never match a filter on it. Originating
            Feature Group C tandem: CLLI of the tandem this switch homes on for Feature Group C exchange-access traffic
            that starts at the switch. Feature Group C is the carrier-access arrangement that uses traditional
            signalling and does not offer Feature Group D equal access. Null when no such homing is listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: h_org_d_tdm
          in: query
          description: "H-ORG D TDM (string). Nullable: rows where this column is null never match a filter on it. Originating
            Feature Group D tandem: CLLI of the tandem this switch homes on for Feature Group D traffic that starts at
            the switch. Feature Group D is the equal-access arrangement: a caller reaches the presubscribed carrier by
            dialling 1+ and any other carrier with a 101XXXX code. Null when no such homing is listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: h_org_os_tdm
          in: query
          description: "H-ORG OS TDM (string). Nullable: rows where this column is null never match a filter on it. Originating
            operator services tandem: CLLI of the tandem that handles operator traffic starting at this switch, such as
            toll and intercept assistance, alternate billing and coin calls. Null when no such homing is listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: h_org_b_int_tdm
          in: query
          description: "H-ORG B INT TDM (string). Nullable: rows where this column is null never match a filter on it. Originating
            Feature Group B intermediate office: CLLI of the intermediate office this switch homes on for Feature Group
            B traffic that starts at the switch. INT stands for intermediate, not international: the glossary names
            Feature Group B, C and D intermediate offices among the homing relationships, and in current data LERG 9
            lists these homings under the intermediate-office function codes. An intermediate office helps complete
            calls in some network designs without being the end office at either end or the access tandem. Null when no
            such homing is listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: h_org_c_int_tdm
          in: query
          description: "H-ORG C INT TDM (string). Nullable: rows where this column is null never match a filter on it. Originating
            Feature Group C intermediate office: CLLI of the intermediate office this switch homes on for Feature Group
            C traffic that starts at the switch. INT stands for intermediate, not international: the glossary names
            Feature Group B, C and D intermediate offices among the homing relationships, and in current data LERG 9
            lists these homings under the intermediate-office function codes. An intermediate office helps complete
            calls in some network designs without being the end office at either end or the access tandem. Null when no
            such homing is listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: h_org_d_int_tdm
          in: query
          description: "H-ORG D INT TDM (string). Nullable: rows where this column is null never match a filter on it. Originating
            Feature Group D intermediate office: CLLI of the intermediate office this switch homes on for Feature Group
            D traffic that starts at the switch. INT stands for intermediate, not international: the glossary names
            Feature Group B, C and D intermediate offices among the homing relationships, and in current data LERG 9
            lists these homings under the intermediate-office function codes. An intermediate office helps complete
            calls in some network designs without being the end office at either end or the access tandem. Null when no
            such homing is listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: h_org_local_tdm
          in: query
          description: "H-ORG LOCAL TDM (string). Nullable: rows where this column is null never match a filter on it. Originating
            local tandem: CLLI of the LEC tandem this switch homes on for local traffic that starts at the switch and
            stays inside its tariffed local calling area. Only the tandem the switch subtends is listed, though reaching
            every office in the area can take more than one, and a host serving a remote is not a local tandem. Null
            when no local tandem serves the switch."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: h_org_intra_l_tdm
          in: query
          description: "H-ORG INTRA-L TDM (string). Nullable: rows where this column is null never match a filter on it.
            Originating IntraLATA tandem: CLLI of the tandem this switch homes on for intraLATA toll traffic that starts
            at the switch, meaning calls that begin and end inside one LATA, whether intrastate or interstate. Null when
            the switch has no IntraLATA tandem."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: h_org_cir_sw_tdm
          in: query
          description: "H-ORG CIR SW TDM (string). Nullable: rows where this column is null never match a filter on it.
            Originating circuit switched data tandem: CLLI of the tandem this switch homes on for switched data calls
            that start at the switch, such as BCR5, BCR6 and PRI 64 traffic. Null when no such homing is listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: filler1
          in: query
          description: "Filler 1 (string). Nullable: rows where this column is null never match a filter on it. Unused filler
            column from the LERG layout; always null."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: h_trm_b_tdm
          in: query
          description: "H-TRM B TDM (string). Nullable: rows where this column is null never match a filter on it. Terminating
            Feature Group B tandem: CLLI of the tandem through which Feature Group B traffic is delivered to this
            switch. A Feature Group B tandem concentrates the carrier-access traffic passed between end offices and
            interexchange carriers. Null when no such homing is listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: h_trm_c_tdm
          in: query
          description: "H-TRM C TDM (string). Nullable: rows where this column is null never match a filter on it. Terminating
            Feature Group C tandem: CLLI of the tandem through which Feature Group C exchange-access traffic is
            delivered to this switch. Feature Group C is the carrier-access arrangement that uses traditional signalling
            and does not offer Feature Group D equal access. Null when no such homing is listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: h_trm_d_tdm
          in: query
          description: "H-TRM D TDM (string). Nullable: rows where this column is null never match a filter on it. Terminating
            Feature Group D tandem: CLLI of the tandem through which Feature Group D (equal-access) carrier traffic is
            delivered to this switch. Feature Group D is the arrangement in which a caller reaches the presubscribed
            carrier by dialling 1+ and any other carrier with a 101XXXX code. Null when no such homing is listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: h_trm_os_tdm
          in: query
          description: "H-TRM OS TDM (string). Nullable: rows where this column is null never match a filter on it. Terminating
            operator services tandem: CLLI of the operator services tandem through which operator-handled traffic
            reaches this switch. Null when no such homing is listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: h_trm_b_int_tdm
          in: query
          description: "H-TRM B INT TDM (string). Nullable: rows where this column is null never match a filter on it. Terminating
            Feature Group B intermediate office: CLLI of the intermediate office through which Feature Group B traffic
            is delivered to this switch. INT stands for intermediate, not international: the glossary names Feature
            Group B, C and D intermediate offices among the homing relationships, and in current data LERG 9 lists these
            homings under the intermediate-office function codes. An intermediate office helps complete calls in some
            network designs without being the end office at either end or the access tandem. Null when no such homing is
            listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: h_trm_c_int_tdm
          in: query
          description: "H-TRM C INT TDM (string). Nullable: rows where this column is null never match a filter on it. Terminating
            Feature Group C intermediate office: CLLI of the intermediate office through which Feature Group C traffic
            is delivered to this switch. INT stands for intermediate, not international: the glossary names Feature
            Group B, C and D intermediate offices among the homing relationships, and in current data LERG 9 lists these
            homings under the intermediate-office function codes. An intermediate office helps complete calls in some
            network designs without being the end office at either end or the access tandem. Null when no such homing is
            listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: h_trm_d_int_tdm
          in: query
          description: "H-TRM D INT TDM (string). Nullable: rows where this column is null never match a filter on it. Terminating
            Feature Group D intermediate office: CLLI of the intermediate office through which Feature Group D traffic
            is delivered to this switch. INT stands for intermediate, not international: the glossary names Feature
            Group B, C and D intermediate offices among the homing relationships, and in current data LERG 9 lists these
            homings under the intermediate-office function codes. An intermediate office helps complete calls in some
            network designs without being the end office at either end or the access tandem. Null when no such homing is
            listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: h_trm_local_tdm
          in: query
          description: "H-TRM LOCAL TDM (string). Nullable: rows where this column is null never match a filter on it. Terminating
            local tandem: CLLI of the LEC tandem through which local traffic from inside the tariffed local calling area
            reaches this switch. Only the tandem the switch subtends is listed, though reaching every office in the area
            can take more than one, and a host serving a remote is not a local tandem. Null when no local tandem serves
            the switch."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: h_trm_intra_l_tdm
          in: query
          description: "H-TRM INTRA-L TDM (string). Nullable: rows where this column is null never match a filter on it.
            Terminating IntraLATA tandem: CLLI of the tandem through which intraLATA toll traffic reaches this switch,
            meaning calls that begin and end inside one LATA, whether intrastate or interstate. Null when the switch has
            no IntraLATA tandem."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: h_trm_cir_sw_tdm
          in: query
          description: "H-TRM CIR SW TDM (string). Nullable: rows where this column is null never match a filter on it.
            Terminating circuit switched data tandem: CLLI of the tandem through which switched data calls such as BCR5,
            BCR6 and PRI 64 traffic reach this switch. Null when no such homing is listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: filler2
          in: query
          description: "Filler 2 (string). Nullable: rows where this column is null never match a filter on it. Unused filler
            column from the LERG layout; always null."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: host
          in: query
          description: "Host (string). Nullable: rows where this column is null never match a filter on it. CLLI of the host
            switch that supplies shared processing to this switch when it is a remote (SOF 3 in LERG 7) and carries the
            traffic the remote originates and terminates. A remote's SS7 point-code signalling also sits at its host.
            Null when no host is listed; in current data nearly every switch that names one is a remote."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: stp1
          in: query
          description: "STP1 (string). Nullable: rows where this column is null never match a filter on it. CLLI of the first
            Signal Transfer Point serving this switch. STPs are the packet switches that route SS7 messages in the
            common channel signalling network and are always listed as a pair, so `stp1` and `stp2` are set together or
            both null. A listed pair means the switch uses common channel signalling within its LATA; when the switch is
            also CCS access capable (SOF 35 in LERG 7), access purchasers may use the pair for interLATA signalling
            too."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: stp2
          in: query
          description: "STP2 (string). Nullable: rows where this column is null never match a filter on it. CLLI of the second
            Signal Transfer Point of the pair serving this switch; read with `stp1`, which is always set when this is."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: filler3
          in: query
          description: "Filler 3 (string). Nullable: rows where this column is null never match a filter on it. Unused filler
            column from the LERG layout; always null."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: orig_800_ssp
          in: query
          description: "ORIG 800 SSP (string). Nullable: rows where this column is null never match a filter on it. CLLI of the
            800 SSP for this switch: the switch that launches the toll-free (NPA 800) database query for calls
            originating here. Covers originating traffic only. Null when none is listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: isdn_foreign_off
          in: query
          description: "ISDN Foreign OFF (string). Nullable: rows where this column is null never match a filter on it. CLLI of
            the ISDN foreign serving office: the switch that actually provides the ISDN service offered to this switch's
            subscribers when that service comes from another office. The office named here is normally flagged SOF 27 in
            LERG 7. Null when no foreign serving office is listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: actual_sw_id
          in: query
          description: "Actual SW ID (string). Nullable: rows where this column is null never match a filter on it. For a point of
            interface (POI), the CLLI of the real switch that stands behind it. Under the LERG rules it must be filled
            in when the POI in `switch` is of the message-trunk-interface type and left empty otherwise, and it does not
            apply to host/remote pairs, where `host` names the remote's host instead. SS7 signalling for the POI is
            addressed to its point code at this actual switch, except when the actual switch is itself a trunk gateway
            or a packet end office: signalling then goes to the switch named in `call_agent`. The POI and its actual
            switch may lie in different LATAs or states, and a POI that holds NPA NXX assignments must point to a switch
            that may hold numbering."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: call_agent
          in: query
          description: "Call Agent (string). Nullable: rows where this column is null never match a filter on it. CLLI of the call
            agent this switch homes on: the switch that gives call control and program control to distributed
            high-capacity gateway equipment such as trunk gateways and packet end offices. For a trunk gateway, or a POI
            whose actual switch is one of those, SS7 point-code signalling sits at this call agent. Null when none is
            listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: trunk_gateway
          in: query
          description: "Trunk Gateway (string). Nullable: rows where this column is null never match a filter on it. CLLI of the
            trunk gateway this switch homes on, the equipment that joins PSTN digital trunk facilities to a Voice over
            Packet core network. Null when none is listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: filler4
          in: query
          description: "Filler 4 (string). Nullable: rows where this column is null never match a filter on it. Unused filler
            column from the LERG layout; always null."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: filler5
          in: query
          description: "Filler 5 (string). Nullable: rows where this column is null never match a filter on it. Unused filler
            column from the LERG layout; always null."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: ocn
          in: query
          description: "OCN (string). Operating Company Number: the four-character alphanumeric code TRA uses to identify the
            company that holds this record's numbering resource, switch, or other assignment. NECA Company Codes are a
            subset; TRA assigns the rest. Names are in LERG 1."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - "6529"
        - name: aocn
          in: query
          description: "AOCN (string). Administrative Operating Company Number: the OCN of the company that maintains this record
            in the BIRRDS database. A company that administers its own records usually puts its own OCN here; a
            third-party administrator has a separate value. Since 2018 each new administrator gets a distinct OCN from
            TRA for this role, and since 2020 those values begin with G."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - "6529"
        - name: filler6
          in: query
          description: "Filler 6 (string). Nullable: rows where this column is null never match a filter on it. Unused filler
            column from the LERG layout; always null."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: creation_date
          in: query
          description: Creation Date (date). Date the record was first created in BIRRDS, as YYYY-MM-DD. Informational; useful for
            reconciliation only.
          required: false
          schema:
            type: array
            items:
              type: string
              format: date
          style: form
          explode: true
          example:
            - 2026-03-01
        - name: filler7
          in: query
          description: "Filler 7 (string). Nullable: rows where this column is null never match a filter on it. Unused filler
            column from the LERG layout; always null."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: e_status_date
          in: query
          description: E Status Date (date). Date the record was last established in BIRRDS, as YYYY-MM-DD. Can be more recent
            than the true in-service date because of database clean-up; indicates roughly how long the record has been
            in effect.
          required: false
          schema:
            type: array
            items:
              type: string
              format: date
          style: form
          explode: true
          example:
            - 2026-03-01
        - name: filler8
          in: query
          description: "Filler 8 (string). Nullable: rows where this column is null never match a filter on it. Unused filler
            column from the LERG layout; always null."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: last_modified
          in: query
          description: Last Modified (date). Date of the most recent change to the record that is already in effect, as
            YYYY-MM-DD. Equals the establishing date when nothing has changed since.
          required: false
          schema:
            type: array
            items:
              type: string
              format: date
          style: form
          explode: true
          example:
            - 2026-03-01
        - name: filler9
          in: query
          description: "Filler 9 (string). Nullable: rows where this column is null never match a filter on it. Unused filler
            column from the LERG layout; always null."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
      responses:
        "200":
          description: Envelope with `table`, `count`, `total_unique` and `data[]`, one object per row projected to `fields`.
          content:
            application/json:
              schema:
                type: object
                properties:
                  count:
                    type: integer
                  data:
                    type: array
                    items:
                      type: object
                  table:
                    type: string
                  total_unique:
                    type: integer
                    description: Distinct rows matched before `limit`/`offset`. A query no index can narrow stops scanning once it holds
                      `offset + limit` distinct rows, counting `limit` after it is clamped to 10,000, so a value exactly
                      equal to that sum means "at least this many", not a total; raise `limit` for the true count. Any
                      smaller value is exact, as is every value on an index-backed query.
              example:
                count: 1
                data:
                  - actual_sw_id: EXAMPLE
                    aocn: "6529"
                    call_agent: EXAMPLE
                    creation_date: 2026-03-01
                    e_status_date: 2026-03-01
                    eff_date: 2026-03-01
                    filler1: EXAMPLE
                    filler2: EXAMPLE
                    filler3: EXAMPLE
                    filler4: EXAMPLE
                    filler5: EXAMPLE
                    filler6: EXAMPLE
                    filler7: EXAMPLE
                    filler8: EXAMPLE
                    filler9: EXAMPLE
                    h_org_b_int_tdm: EXAMPLE
                    h_org_b_tdm: EXAMPLE
                    h_org_c_int_tdm: EXAMPLE
                    h_org_c_tdm: EXAMPLE
                    h_org_cir_sw_tdm: EXAMPLE
                    h_org_d_int_tdm: EXAMPLE
                    h_org_d_tdm: EXAMPLE
                    h_org_intra_l_tdm: EXAMPLE
                    h_org_local_tdm: EXAMPLE
                    h_org_os_tdm: EXAMPLE
                    h_trm_b_int_tdm: EXAMPLE
                    h_trm_b_tdm: EXAMPLE
                    h_trm_c_int_tdm: EXAMPLE
                    h_trm_c_tdm: EXAMPLE
                    h_trm_cir_sw_tdm: EXAMPLE
                    h_trm_d_int_tdm: EXAMPLE
                    h_trm_d_tdm: EXAMPLE
                    h_trm_intra_l_tdm: EXAMPLE
                    h_trm_local_tdm: EXAMPLE
                    h_trm_os_tdm: EXAMPLE
                    host: EXAMPLE
                    isdn_foreign_off: EXAMPLE
                    last_modified: 2026-03-01
                    lata: 656
                    lata_name: DENVER
                    ocn: "6529"
                    orig_800_ssp: EXAMPLE
                    sha_indicator: EXAMPLE
                    status: EXAMPLE
                    stp1: EXAMPLE
                    stp2: EXAMPLE
                    switch: DNVRCOMADS0
                    trunk_gateway: EXAMPLE
                table: lerg_7_sha
                total_unique: 1
        "400":
          description: Causes include an unknown column in `fields` or as a filter key, `*` combined with other field names, an
            empty filter value, a repeated `fields`/`limit`/`offset`, and a non-numeric `limit`/`offset`. The message
            names the offending key and may carry a `did you mean` hint.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LergErrorResponse"
      security:
        - apiToken: []
  /v1/lerg/lerg_7_sha_ins:
    get:
      tags:
        - LERG
      summary: Query lerg_7_sha_ins with exact-match column filters
      description: >-
        `GET /v1/lerg/lerg_7_sha_ins?column=value&…`


        Every parameter below except `fields`, `limit` and `offset` is a column of lerg_7_sha_ins. Repeat a parameter to
        match any of several values (an IN-list); omit it to leave that column unfiltered. Filters are exact-match and
        are ANDed together.


        A comma inside a filter value is **not** a separator — only `fields` is comma-separated. `?npa=303,720` looks
        for the literal value `303,720`, matches nothing, and returns 200 with an empty `data`. Repeat the key instead:
        `?npa=303&npa=720`.


        This table has no hash index, so every query is a filtered scan; keep `limit` modest.


        This is the same route as `queryTable` with `table_name=lerg_7_sha_ins`, spelled out so the columns are
        nameable. For an operator other than equality, or to join to another table, use `complexQuery`.


        Column definitions are paraphrased from the TruOps TRA LERG Routing Guide, General Information, BD-TRA-LERG-GEN
        Issue 2 (2026-08-01), section 3.1.
      operationId: queryLerg7ShaIns
      parameters:
        - name: fields
          in: query
          description: "Comma-separated projection. Omit it, or pass `*`, for every column. `*` cannot be combined with other
            names. Valid names: activity_code, activity_date, version, filler1, lata, lata_name, status, eff_date,
            switch, sha_indicator, h_org_b_tdm, h_org_c_tdm, h_org_d_tdm, h_org_os_tdm, h_org_b_int_tdm,
            h_org_c_int_tdm, h_org_d_int_tdm, h_org_local_tdm, h_org_intra_l_tdm, h_org_cir_sw_tdm, filler2,
            h_trm_b_tdm, h_trm_c_tdm, h_trm_d_tdm, h_trm_os_tdm, h_trm_b_int_tdm, h_trm_c_int_tdm, h_trm_d_int_tdm,
            h_trm_local_tdm, h_trm_intra_l_tdm, h_trm_cir_sw_tdm, filler3, host, stp1, stp2, filler4, orig_800_ssp,
            isdn_foreign_off, actual_sw_id, call_agent, trunk_gateway, filler5, filler6, ocn, aocn, filler7,
            creation_date, filler8, e_status_date, filler9, last_modified, filler10."
          required: false
          schema:
            type: string
          example: activity_code,activity_date,version,filler1
        - name: limit
          in: query
          description: "Page size, default 100. Clamped to 10,000: a larger value is accepted and silently reduced, never
            rejected, so no `maximum` is declared here. `limit=0` is accepted and returns an empty page. On a query no
            index can narrow this also bounds the work: the scan stops at `offset + limit` distinct rows."
          required: false
          schema:
            type: integer
            minimum: 0
          example: 100
        - name: offset
          in: query
          description: "Rows to skip for pagination, default 0. Not capped, deliberately: a ceiling here would make paging through
            a table impossible. On a query no index can narrow, `offset` counts towards the scan bound of `offset +
            limit` distinct rows, so a deep page costs the rows it skips -- `offset=1500000` reads 1.5M rows whatever
            `limit` says. Filter on an indexed column to page at constant cost."
          required: false
          schema:
            type: integer
            minimum: 0
          example: 0
        - name: activity_code
          in: query
          description: "Activity Code (string). What happened to this record in the month-to-month insert file: A = added, R =
            removed, U = updated. Interpret alongside `status` and `eff_date`."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: activity_date
          in: query
          description: Activity Date (date). Date the insert-file activity was performed in BIRRDS, as YYYY-MM-DD. Usually in the
            prior month.
          required: false
          schema:
            type: array
            items:
              type: string
              format: date
          style: form
          explode: true
          example:
            - 2026-03-01
        - name: version
          in: query
          description: Version (string). Version letter of this insert-file transaction. Normally A; a later letter means the same
            activity was reissued on the same activity date.
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: filler1
          in: query
          description: "Filler 1 (string). Nullable: rows where this column is null never match a filter on it. Unused filler
            column from the LERG layout; always null."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: lata
          in: query
          description: LATA (integer). Local Access and Transport Area, the numeric code of the geographic area this record
            belongs to. 999 and 99999 mark non-geographic and reserved assignments and are real values, not nulls.
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 656
        - name: lata_name
          in: query
          description: LATA Name (string). Name of the LATA, or of the LATA-like area for non-LATA regions.
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - DENVER
        - name: status
          in: query
          description: "Status (string). Kind of change this insert-file line reports, taking effect on `eff_date`: E = the record
            is being established, M = some of its values change (compare it field by field with the record's earlier
            view), D = the record is being disconnected. Always present on insert-file lines."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: eff_date
          in: query
          description: Effective Date (date). Date the change on this insert-file line takes effect, as YYYY-MM-DD. It can fall in
            the month since the previous LERG issue closed (the main table then already reflects the change as current)
            or in the future. For rare back-dated updates it equals `activity_date` and need not match the date held in
            BIRRDS.
          required: false
          schema:
            type: array
            items:
              type: string
              format: date
          style: form
          explode: true
          example:
            - 2026-03-01
        - name: switch
          in: query
          description: Switch (string). Eleven-character identifier, normally the CLLI code, of the LERG 7 switching entity or
            point of interface whose homing arrangement this record describes. With `sha_indicator` it selects one
            arrangement; look the switch itself up in LERG 7.
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - DNVRCOMADS0
        - name: sha_indicator
          in: query
          description: SHA Indicator (string). Switch Homing Arrangement indicator, a two-digit code that together with `switch`
            selects which homing arrangement in LERG 7 SHA applies. 00 is the default arrangement.
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: h_org_b_tdm
          in: query
          description: "H-ORG B TDM (string). Nullable: rows where this column is null never match a filter on it. Originating
            Feature Group B tandem: CLLI of the tandem this switch homes on for Feature Group B traffic that starts at
            the switch. A Feature Group B tandem concentrates the carrier-access traffic passed between end offices and
            interexchange carriers. Null when no such homing is listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: h_org_c_tdm
          in: query
          description: "H-ORG C TDM (string). Nullable: rows where this column is null never match a filter on it. Originating
            Feature Group C tandem: CLLI of the tandem this switch homes on for Feature Group C exchange-access traffic
            that starts at the switch. Feature Group C is the carrier-access arrangement that uses traditional
            signalling and does not offer Feature Group D equal access. Null when no such homing is listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: h_org_d_tdm
          in: query
          description: "H-ORG D TDM (string). Nullable: rows where this column is null never match a filter on it. Originating
            Feature Group D tandem: CLLI of the tandem this switch homes on for Feature Group D traffic that starts at
            the switch. Feature Group D is the equal-access arrangement: a caller reaches the presubscribed carrier by
            dialling 1+ and any other carrier with a 101XXXX code. Null when no such homing is listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: h_org_os_tdm
          in: query
          description: "H-ORG OS TDM (string). Nullable: rows where this column is null never match a filter on it. Originating
            operator services tandem: CLLI of the tandem that handles operator traffic starting at this switch, such as
            toll and intercept assistance, alternate billing and coin calls. Null when no such homing is listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: h_org_b_int_tdm
          in: query
          description: "H-ORG B INT TDM (string). Nullable: rows where this column is null never match a filter on it. Originating
            Feature Group B intermediate office: CLLI of the intermediate office this switch homes on for Feature Group
            B traffic that starts at the switch. INT stands for intermediate, not international: the glossary names
            Feature Group B, C and D intermediate offices among the homing relationships, and in current data LERG 9
            lists these homings under the intermediate-office function codes. An intermediate office helps complete
            calls in some network designs without being the end office at either end or the access tandem. Null when no
            such homing is listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: h_org_c_int_tdm
          in: query
          description: "H-ORG C INT TDM (string). Nullable: rows where this column is null never match a filter on it. Originating
            Feature Group C intermediate office: CLLI of the intermediate office this switch homes on for Feature Group
            C traffic that starts at the switch. INT stands for intermediate, not international: the glossary names
            Feature Group B, C and D intermediate offices among the homing relationships, and in current data LERG 9
            lists these homings under the intermediate-office function codes. An intermediate office helps complete
            calls in some network designs without being the end office at either end or the access tandem. Null when no
            such homing is listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: h_org_d_int_tdm
          in: query
          description: "H-ORG D INT TDM (string). Nullable: rows where this column is null never match a filter on it. Originating
            Feature Group D intermediate office: CLLI of the intermediate office this switch homes on for Feature Group
            D traffic that starts at the switch. INT stands for intermediate, not international: the glossary names
            Feature Group B, C and D intermediate offices among the homing relationships, and in current data LERG 9
            lists these homings under the intermediate-office function codes. An intermediate office helps complete
            calls in some network designs without being the end office at either end or the access tandem. Null when no
            such homing is listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: h_org_local_tdm
          in: query
          description: "H-ORG LOCAL TDM (string). Nullable: rows where this column is null never match a filter on it. Originating
            local tandem: CLLI of the LEC tandem this switch homes on for local traffic that starts at the switch and
            stays inside its tariffed local calling area. Only the tandem the switch subtends is listed, though reaching
            every office in the area can take more than one, and a host serving a remote is not a local tandem. Null
            when no local tandem serves the switch."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: h_org_intra_l_tdm
          in: query
          description: "H-ORG INTRA-L TDM (string). Nullable: rows where this column is null never match a filter on it.
            Originating IntraLATA tandem: CLLI of the tandem this switch homes on for intraLATA toll traffic that starts
            at the switch, meaning calls that begin and end inside one LATA, whether intrastate or interstate. Null when
            the switch has no IntraLATA tandem."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: h_org_cir_sw_tdm
          in: query
          description: "H-ORG CIR SW TDM (string). Nullable: rows where this column is null never match a filter on it.
            Originating circuit switched data tandem: CLLI of the tandem this switch homes on for switched data calls
            that start at the switch, such as BCR5, BCR6 and PRI 64 traffic. Null when no such homing is listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: filler2
          in: query
          description: "Filler 2 (string). Nullable: rows where this column is null never match a filter on it. Unused filler
            column from the LERG layout; always null."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: h_trm_b_tdm
          in: query
          description: "H-TRM B TDM (string). Nullable: rows where this column is null never match a filter on it. Terminating
            Feature Group B tandem: CLLI of the tandem through which Feature Group B traffic is delivered to this
            switch. A Feature Group B tandem concentrates the carrier-access traffic passed between end offices and
            interexchange carriers. Null when no such homing is listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: h_trm_c_tdm
          in: query
          description: "H-TRM C TDM (string). Nullable: rows where this column is null never match a filter on it. Terminating
            Feature Group C tandem: CLLI of the tandem through which Feature Group C exchange-access traffic is
            delivered to this switch. Feature Group C is the carrier-access arrangement that uses traditional signalling
            and does not offer Feature Group D equal access. Null when no such homing is listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: h_trm_d_tdm
          in: query
          description: "H-TRM D TDM (string). Nullable: rows where this column is null never match a filter on it. Terminating
            Feature Group D tandem: CLLI of the tandem through which Feature Group D (equal-access) carrier traffic is
            delivered to this switch. Feature Group D is the arrangement in which a caller reaches the presubscribed
            carrier by dialling 1+ and any other carrier with a 101XXXX code. Null when no such homing is listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: h_trm_os_tdm
          in: query
          description: "H-TRM OS TDM (string). Nullable: rows where this column is null never match a filter on it. Terminating
            operator services tandem: CLLI of the operator services tandem through which operator-handled traffic
            reaches this switch. Null when no such homing is listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: h_trm_b_int_tdm
          in: query
          description: "H-TRM B INT TDM (string). Nullable: rows where this column is null never match a filter on it. Terminating
            Feature Group B intermediate office: CLLI of the intermediate office through which Feature Group B traffic
            is delivered to this switch. INT stands for intermediate, not international: the glossary names Feature
            Group B, C and D intermediate offices among the homing relationships, and in current data LERG 9 lists these
            homings under the intermediate-office function codes. An intermediate office helps complete calls in some
            network designs without being the end office at either end or the access tandem. Null when no such homing is
            listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: h_trm_c_int_tdm
          in: query
          description: "H-TRM C INT TDM (string). Nullable: rows where this column is null never match a filter on it. Terminating
            Feature Group C intermediate office: CLLI of the intermediate office through which Feature Group C traffic
            is delivered to this switch. INT stands for intermediate, not international: the glossary names Feature
            Group B, C and D intermediate offices among the homing relationships, and in current data LERG 9 lists these
            homings under the intermediate-office function codes. An intermediate office helps complete calls in some
            network designs without being the end office at either end or the access tandem. Null when no such homing is
            listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: h_trm_d_int_tdm
          in: query
          description: "H-TRM D INT TDM (string). Nullable: rows where this column is null never match a filter on it. Terminating
            Feature Group D intermediate office: CLLI of the intermediate office through which Feature Group D traffic
            is delivered to this switch. INT stands for intermediate, not international: the glossary names Feature
            Group B, C and D intermediate offices among the homing relationships, and in current data LERG 9 lists these
            homings under the intermediate-office function codes. An intermediate office helps complete calls in some
            network designs without being the end office at either end or the access tandem. Null when no such homing is
            listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: h_trm_local_tdm
          in: query
          description: "H-TRM LOCAL TDM (string). Nullable: rows where this column is null never match a filter on it. Terminating
            local tandem: CLLI of the LEC tandem through which local traffic from inside the tariffed local calling area
            reaches this switch. Only the tandem the switch subtends is listed, though reaching every office in the area
            can take more than one, and a host serving a remote is not a local tandem. Null when no local tandem serves
            the switch."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: h_trm_intra_l_tdm
          in: query
          description: "H-TRM INTRA-L TDM (string). Nullable: rows where this column is null never match a filter on it.
            Terminating IntraLATA tandem: CLLI of the tandem through which intraLATA toll traffic reaches this switch,
            meaning calls that begin and end inside one LATA, whether intrastate or interstate. Null when the switch has
            no IntraLATA tandem."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: h_trm_cir_sw_tdm
          in: query
          description: "H-TRM CIR SW TDM (string). Nullable: rows where this column is null never match a filter on it.
            Terminating circuit switched data tandem: CLLI of the tandem through which switched data calls such as BCR5,
            BCR6 and PRI 64 traffic reach this switch. Null when no such homing is listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: filler3
          in: query
          description: "Filler 3 (string). Nullable: rows where this column is null never match a filter on it. Unused filler
            column from the LERG layout; always null."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: host
          in: query
          description: "Host (string). Nullable: rows where this column is null never match a filter on it. CLLI of the host
            switch that supplies shared processing to this switch when it is a remote (SOF 3 in LERG 7) and carries the
            traffic the remote originates and terminates. A remote's SS7 point-code signalling also sits at its host.
            Null when no host is listed; in current data nearly every switch that names one is a remote."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: stp1
          in: query
          description: "STP1 (string). Nullable: rows where this column is null never match a filter on it. CLLI of the first
            Signal Transfer Point serving this switch. STPs are the packet switches that route SS7 messages in the
            common channel signalling network and are always listed as a pair, so `stp1` and `stp2` are set together or
            both null. A listed pair means the switch uses common channel signalling within its LATA; when the switch is
            also CCS access capable (SOF 35 in LERG 7), access purchasers may use the pair for interLATA signalling
            too."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: stp2
          in: query
          description: "STP2 (string). Nullable: rows where this column is null never match a filter on it. CLLI of the second
            Signal Transfer Point of the pair serving this switch; read with `stp1`, which is always set when this is."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: filler4
          in: query
          description: "Filler 4 (string). Nullable: rows where this column is null never match a filter on it. Unused filler
            column from the LERG layout; always null."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: orig_800_ssp
          in: query
          description: "ORIG 800 SSP (string). Nullable: rows where this column is null never match a filter on it. CLLI of the
            800 SSP for this switch: the switch that launches the toll-free (NPA 800) database query for calls
            originating here. Covers originating traffic only. Null when none is listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: isdn_foreign_off
          in: query
          description: "ISDN Foreign OFF (string). Nullable: rows where this column is null never match a filter on it. CLLI of
            the ISDN foreign serving office: the switch that actually provides the ISDN service offered to this switch's
            subscribers when that service comes from another office. The office named here is normally flagged SOF 27 in
            LERG 7. Null when no foreign serving office is listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: actual_sw_id
          in: query
          description: "Actual SW ID (string). Nullable: rows where this column is null never match a filter on it. For a point of
            interface (POI), the CLLI of the real switch that stands behind it. Under the LERG rules it must be filled
            in when the POI in `switch` is of the message-trunk-interface type and left empty otherwise, and it does not
            apply to host/remote pairs, where `host` names the remote's host instead. SS7 signalling for the POI is
            addressed to its point code at this actual switch, except when the actual switch is itself a trunk gateway
            or a packet end office: signalling then goes to the switch named in `call_agent`. The POI and its actual
            switch may lie in different LATAs or states, and a POI that holds NPA NXX assignments must point to a switch
            that may hold numbering."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: call_agent
          in: query
          description: "Call Agent (string). Nullable: rows where this column is null never match a filter on it. CLLI of the call
            agent this switch homes on: the switch that gives call control and program control to distributed
            high-capacity gateway equipment such as trunk gateways and packet end offices. For a trunk gateway, or a POI
            whose actual switch is one of those, SS7 point-code signalling sits at this call agent. Null when none is
            listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: trunk_gateway
          in: query
          description: "Trunk Gateway (string). Nullable: rows where this column is null never match a filter on it. CLLI of the
            trunk gateway this switch homes on, the equipment that joins PSTN digital trunk facilities to a Voice over
            Packet core network. Null when none is listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: filler5
          in: query
          description: "Filler 5 (string). Nullable: rows where this column is null never match a filter on it. Unused filler
            column from the LERG layout; always null."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: filler6
          in: query
          description: "Filler 6 (string). Nullable: rows where this column is null never match a filter on it. Unused filler
            column from the LERG layout; always null."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: ocn
          in: query
          description: "OCN (string). Operating Company Number: the four-character alphanumeric code TRA uses to identify the
            company that holds this record's numbering resource, switch, or other assignment. NECA Company Codes are a
            subset; TRA assigns the rest. Names are in LERG 1."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - "6529"
        - name: aocn
          in: query
          description: "AOCN (string). Administrative Operating Company Number: the OCN of the company that maintains this record
            in the BIRRDS database. A company that administers its own records usually puts its own OCN here; a
            third-party administrator has a separate value. Since 2018 each new administrator gets a distinct OCN from
            TRA for this role, and since 2020 those values begin with G."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - "6529"
        - name: filler7
          in: query
          description: "Filler 7 (string). Nullable: rows where this column is null never match a filter on it. Unused filler
            column from the LERG layout; always null."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: creation_date
          in: query
          description: Creation Date (date). Date the record was first created in BIRRDS, as YYYY-MM-DD. Informational; useful for
            reconciliation only.
          required: false
          schema:
            type: array
            items:
              type: string
              format: date
          style: form
          explode: true
          example:
            - 2026-03-01
        - name: filler8
          in: query
          description: "Filler 8 (string). Nullable: rows where this column is null never match a filter on it. Unused filler
            column from the LERG layout; always null."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: e_status_date
          in: query
          description: E Status Date (date). Date the record was last established in BIRRDS, as YYYY-MM-DD. Can be more recent
            than the true in-service date because of database clean-up; indicates roughly how long the record has been
            in effect.
          required: false
          schema:
            type: array
            items:
              type: string
              format: date
          style: form
          explode: true
          example:
            - 2026-03-01
        - name: filler9
          in: query
          description: "Filler 9 (string). Nullable: rows where this column is null never match a filter on it. Unused filler
            column from the LERG layout; always null."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: last_modified
          in: query
          description: Last Modified (date). Date of the most recent change to the record that is already in effect, as
            YYYY-MM-DD. Equals the establishing date when nothing has changed since.
          required: false
          schema:
            type: array
            items:
              type: string
              format: date
          style: form
          explode: true
          example:
            - 2026-03-01
        - name: filler10
          in: query
          description: "Filler 10 (string). Nullable: rows where this column is null never match a filter on it. Unused filler
            column from the LERG layout; always null."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
      responses:
        "200":
          description: Envelope with `table`, `count`, `total_unique` and `data[]`, one object per row projected to `fields`.
          content:
            application/json:
              schema:
                type: object
                properties:
                  count:
                    type: integer
                  data:
                    type: array
                    items:
                      type: object
                  table:
                    type: string
                  total_unique:
                    type: integer
                    description: Distinct rows matched before `limit`/`offset`. A query no index can narrow stops scanning once it holds
                      `offset + limit` distinct rows, counting `limit` after it is clamped to 10,000, so a value exactly
                      equal to that sum means "at least this many", not a total; raise `limit` for the true count. Any
                      smaller value is exact, as is every value on an index-backed query.
              example:
                count: 1
                data:
                  - activity_code: EXAMPLE
                    activity_date: 2026-03-01
                    actual_sw_id: EXAMPLE
                    aocn: "6529"
                    call_agent: EXAMPLE
                    creation_date: 2026-03-01
                    e_status_date: 2026-03-01
                    eff_date: 2026-03-01
                    filler1: EXAMPLE
                    filler10: EXAMPLE
                    filler2: EXAMPLE
                    filler3: EXAMPLE
                    filler4: EXAMPLE
                    filler5: EXAMPLE
                    filler6: EXAMPLE
                    filler7: EXAMPLE
                    filler8: EXAMPLE
                    filler9: EXAMPLE
                    h_org_b_int_tdm: EXAMPLE
                    h_org_b_tdm: EXAMPLE
                    h_org_c_int_tdm: EXAMPLE
                    h_org_c_tdm: EXAMPLE
                    h_org_cir_sw_tdm: EXAMPLE
                    h_org_d_int_tdm: EXAMPLE
                    h_org_d_tdm: EXAMPLE
                    h_org_intra_l_tdm: EXAMPLE
                    h_org_local_tdm: EXAMPLE
                    h_org_os_tdm: EXAMPLE
                    h_trm_b_int_tdm: EXAMPLE
                    h_trm_b_tdm: EXAMPLE
                    h_trm_c_int_tdm: EXAMPLE
                    h_trm_c_tdm: EXAMPLE
                    h_trm_cir_sw_tdm: EXAMPLE
                    h_trm_d_int_tdm: EXAMPLE
                    h_trm_d_tdm: EXAMPLE
                    h_trm_intra_l_tdm: EXAMPLE
                    h_trm_local_tdm: EXAMPLE
                    h_trm_os_tdm: EXAMPLE
                    host: EXAMPLE
                    isdn_foreign_off: EXAMPLE
                    last_modified: 2026-03-01
                    lata: 656
                    lata_name: DENVER
                    ocn: "6529"
                    orig_800_ssp: EXAMPLE
                    sha_indicator: EXAMPLE
                    status: EXAMPLE
                    stp1: EXAMPLE
                    stp2: EXAMPLE
                    switch: DNVRCOMADS0
                    trunk_gateway: EXAMPLE
                    version: EXAMPLE
                table: lerg_7_sha_ins
                total_unique: 1
        "400":
          description: Causes include an unknown column in `fields` or as a filter key, `*` combined with other field names, an
            empty filter value, a repeated `fields`/`limit`/`offset`, and a non-numeric `limit`/`offset`. The message
            names the offending key and may carry a `did you mean` hint.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LergErrorResponse"
      security:
        - apiToken: []
  /v1/lerg/lerg_8:
    get:
      tags:
        - LERG
      summary: Query lerg_8 with exact-match column filters
      description: >-
        `GET /v1/lerg/lerg_8?column=value&…`


        Every parameter below except `fields`, `limit` and `offset` is a column of lerg_8. Repeat a parameter to match
        any of several values (an IN-list); omit it to leave that column unfiltered. Filters are exact-match and are
        ANDed together.


        A comma inside a filter value is **not** a separator — only `fields` is comma-separated. `?npa=303,720` looks
        for the literal value `303,720`, matches nothing, and returns 200 with an empty `data`. Repeat the key instead:
        `?npa=303&npa=720`.


        This table has no hash index, so every query is a filtered scan; keep `limit` modest.


        This is the same route as `queryTable` with `table_name=lerg_8`, spelled out so the columns are nameable. For an
        operator other than equality, or to join to another table, use `complexQuery`.


        Column definitions are paraphrased from the TruOps TRA LERG Routing Guide, General Information, BD-TRA-LERG-GEN
        Issue 2 (2026-08-01), section 3.1.
      operationId: queryLerg8
      parameters:
        - name: fields
          in: query
          description: "Comma-separated projection. Omit it, or pass `*`, for every column. `*` cannot be combined with other
            names. Valid names: lata, lata_name, status, eff_date, rc_state, rc_abbr_name, filler3, rc_full_name,
            major_v, major_h, minor_v, minor_h, npa1, npa2, npa3, npa4, npa5, npa6, npa7, npa8, npa9, npa10, mta1, mta2,
            split_indicator, emb_overlay_npa1, emb_overlay_npa2, emb_overlay_npa3, emb_overlay_npa4, filler2."
          required: false
          schema:
            type: string
          example: lata,lata_name,status,eff_date
        - name: limit
          in: query
          description: "Page size, default 100. Clamped to 10,000: a larger value is accepted and silently reduced, never
            rejected, so no `maximum` is declared here. `limit=0` is accepted and returns an empty page. On a query no
            index can narrow this also bounds the work: the scan stops at `offset + limit` distinct rows."
          required: false
          schema:
            type: integer
            minimum: 0
          example: 100
        - name: offset
          in: query
          description: "Rows to skip for pagination, default 0. Not capped, deliberately: a ceiling here would make paging through
            a table impossible. On a query no index can narrow, `offset` counts towards the scan bound of `offset +
            limit` distinct rows, so a deep page costs the rows it skips -- `offset=1500000` reads 1.5M rows whatever
            `limit` says. Filter on an indexed column to page at constant cost."
          required: false
          schema:
            type: integer
            minimum: 0
          example: 0
        - name: lata
          in: query
          description: LATA (integer). Local Access and Transport Area, the numeric code of the geographic area this record
            belongs to. 999 and 99999 mark non-geographic and reserved assignments and are real values, not nulls.
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 656
        - name: lata_name
          in: query
          description: LATA Name (string). Name of the LATA, or of the LATA-like area for non-LATA regions.
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - DENVER
        - name: status
          in: query
          description: "Status (string). Nullable: rows where this column is null never match a filter on it. Pending activity on
            this record, read together with the effective date: E = the record is being established, M = the record is
            being modified (compare against the preceding current view to see what changes), D = the record is being
            disconnected. Null means the record is current and active as of this LERG issue."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: eff_date
          in: query
          description: "Effective Date (date). Nullable: rows where this column is null never match a filter on it. Date on which
            the activity in `status` takes effect, as YYYY-MM-DD. Null when the record is current. The LERG is a
            planning tool: this date is a forecast, not an activation record."
          required: false
          schema:
            type: array
            items:
              type: string
              format: date
          style: form
          explode: true
          example:
            - 2026-03-01
        - name: rc_state
          in: query
          description: Rate Center State (string). Two-letter code of the state, province, territory or (for Caribbean NANP
            members) country where the Rate Center lies, in the LERG's own coding (for example PQ for Quebec).
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - CO
        - name: rc_abbr_name
          in: query
          description: Rate Center Abbr Name (string). Abbreviated Rate Center name, at most ten characters and shortened when the
            full name is longer; this is the form LERG 6 uses in `rc_abbre` to tie a block to its Rate Center.
            XXXXXXXXXX stands for no specific Rate Center, as oddball codes use it. In current data DIR ASST (directory
            assistance) is a second placeholder of the same sort; both recur across most states and provinces, with zero
            coordinates and no NPAs.
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - DENVER
        - name: filler3
          in: query
          description: "Filler 3 (string). Nullable: rows where this column is null never match a filter on it. Unused filler
            column from the LERG layout; always null."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: rc_full_name
          in: query
          description: Rate Center Full Name (string). Full, correctly spelled name of the Rate Center, which `rc_abbr_name`
            shortens to ten characters when needed. Most Rate Centers are named for a locality, and then this is that
            locality's full name.
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - DENVER
        - name: major_v
          in: query
          description: Major V (float). Major vertical coordinate of the Rate Center point on the V&H grid, a whole number of four
            or five digits. With `major_h` it fixes the point from which mileage between Rate Centers is measured, which
            carriers with distance-based toll rates use to rate calls; when a tariff does not say whether the major or
            minor coordinates apply, the major ones are used. A Rate Center's V&H need not match that of the switches
            serving it (LERG 7).
          required: false
          schema:
            type: array
            items:
              type: number
          style: form
          explode: true
          example:
            - 1
        - name: major_h
          in: query
          description: Major H (float). Major horizontal coordinate of the Rate Center point on the V&H grid, read with `major_v`.
            In current data it is negative only in Puerto Rico and in the U.S. Virgin Islands; both major coordinates
            are zero on placeholder Rate Centers and on many Caribbean ones.
          required: false
          schema:
            type: array
            items:
              type: number
          style: form
          explode: true
          example:
            - 1
        - name: minor_v
          in: query
          description: "Minor V (float). Nullable: rows where this column is null never match a filter on it. Minor vertical
            coordinate of the Rate Center, a five-digit V&H value that, together with `minor_h`, locates the Rate
            Center. A rating carrier's tariff switches to the minor coordinates when the two Rate Centers of a call are
            nearer to each other than a set number of air miles. Alaska's minor coordinates come from a different
            algorithm than its major ones. Null when the Rate Center has no minor coordinates."
          required: false
          schema:
            type: array
            items:
              type: number
          style: form
          explode: true
          example:
            - 1
        - name: minor_h
          in: query
          description: "Minor H (float). Nullable: rows where this column is null never match a filter on it. Minor horizontal
            coordinate of the Rate Center, read with `minor_v` under the same rules: used by tariffs for calls between
            Rate Centers that lie close together, computed differently in Alaska, and null when the Rate Center has
            none."
          required: false
          schema:
            type: array
            items:
              type: number
          style: form
          explode: true
          example:
            - 1
        - name: npa1
          in: query
          description: "NPA 1 (integer). Nullable: rows where this column is null never match a filter on it. An NPA (area code)
            associated with this Rate Center: three digits, the first 2-9. A Rate Center can list up to ten, in `npa1`
            to `npa10`; unused positions are null. Embedded overlay NPAs are listed separately, in `emb_overlay_npa1` to
            `emb_overlay_npa4`."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
        - name: npa2
          in: query
          description: "NPA 2 (integer). Nullable: rows where this column is null never match a filter on it. An NPA (area code)
            associated with this Rate Center: three digits, the first 2-9. A Rate Center can list up to ten, in `npa1`
            to `npa10`; unused positions are null. Embedded overlay NPAs are listed separately, in `emb_overlay_npa1` to
            `emb_overlay_npa4`."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
        - name: npa3
          in: query
          description: "NPA 3 (integer). Nullable: rows where this column is null never match a filter on it. An NPA (area code)
            associated with this Rate Center: three digits, the first 2-9. A Rate Center can list up to ten, in `npa1`
            to `npa10`; unused positions are null. Embedded overlay NPAs are listed separately, in `emb_overlay_npa1` to
            `emb_overlay_npa4`."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
        - name: npa4
          in: query
          description: "NPA 4 (integer). Nullable: rows where this column is null never match a filter on it. An NPA (area code)
            associated with this Rate Center: three digits, the first 2-9. A Rate Center can list up to ten, in `npa1`
            to `npa10`; unused positions are null. Embedded overlay NPAs are listed separately, in `emb_overlay_npa1` to
            `emb_overlay_npa4`."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
        - name: npa5
          in: query
          description: "NPA 5 (integer). Nullable: rows where this column is null never match a filter on it. An NPA (area code)
            associated with this Rate Center: three digits, the first 2-9. A Rate Center can list up to ten, in `npa1`
            to `npa10`; unused positions are null. Embedded overlay NPAs are listed separately, in `emb_overlay_npa1` to
            `emb_overlay_npa4`."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
        - name: npa6
          in: query
          description: "NPA 6 (integer). Nullable: rows where this column is null never match a filter on it. An NPA (area code)
            associated with this Rate Center: three digits, the first 2-9. A Rate Center can list up to ten, in `npa1`
            to `npa10`; unused positions are null. Embedded overlay NPAs are listed separately, in `emb_overlay_npa1` to
            `emb_overlay_npa4`."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
        - name: npa7
          in: query
          description: "NPA 7 (integer). Nullable: rows where this column is null never match a filter on it. An NPA (area code)
            associated with this Rate Center: three digits, the first 2-9. A Rate Center can list up to ten, in `npa1`
            to `npa10`; unused positions are null. Embedded overlay NPAs are listed separately, in `emb_overlay_npa1` to
            `emb_overlay_npa4`."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
        - name: npa8
          in: query
          description: "NPA 8 (integer). Nullable: rows where this column is null never match a filter on it. An NPA (area code)
            associated with this Rate Center: three digits, the first 2-9. A Rate Center can list up to ten, in `npa1`
            to `npa10`; unused positions are null. Embedded overlay NPAs are listed separately, in `emb_overlay_npa1` to
            `emb_overlay_npa4`."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
        - name: npa9
          in: query
          description: "NPA 9 (integer). Nullable: rows where this column is null never match a filter on it. An NPA (area code)
            associated with this Rate Center: three digits, the first 2-9. A Rate Center can list up to ten, in `npa1`
            to `npa10`; unused positions are null. Embedded overlay NPAs are listed separately, in `emb_overlay_npa1` to
            `emb_overlay_npa4`."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
        - name: npa10
          in: query
          description: "NPA 10 (integer). Nullable: rows where this column is null never match a filter on it. An NPA (area code)
            associated with this Rate Center: three digits, the first 2-9. A Rate Center can list up to ten, in `npa1`
            to `npa10`; unused positions are null. Embedded overlay NPAs are listed separately, in `emb_overlay_npa1` to
            `emb_overlay_npa4`."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
        - name: mta1
          in: query
          description: "MTA 1 (string). Nullable: rows where this column is null never match a filter on it. Major Trading Area: a
            two-digit code (01 New York through 51 American Samoa) for one of the areas that federal rules in the United
            States use to define the territory of certain wireless carriers. This is the MTA the Rate Center lies in; it
            is a code, so the leading zero is kept. Null when no MTA is listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: mta2
          in: query
          description: "MTA 2 (string). Nullable: rows where this column is null never match a filter on it. Second Major Trading
            Area code, set when MTA and Rate Center boundaries do not line up and the Rate Center lies partly in another
            MTA; read with `mta1`. Null otherwise."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: split_indicator
          in: query
          description: Split Indicator (boolean). True when the Rate Center is split across NPA boundaries. Does not refer to
            area-code splits.
          required: false
          schema:
            type: array
            items:
              type: boolean
          style: form
          explode: true
          example:
            - true
        - name: emb_overlay_npa1
          in: query
          description: "Embedded Overlay NPA 1 (integer). Nullable: rows where this column is null never match a filter on it.
            Embedded overlay NPA: an area code linked to this Rate Center only by grandfathering, where it would not
            otherwise belong, and often left off NPA maps, which can confuse anyone working out where NXXs are assigned.
            No new NXX codes are assigned from it here, though numbers in its existing NXXs can still be ported or
            pooled where the situation allows. Causes include wireless carriers keeping old-NPA codes after an area-code
            split, pre-NANPA misassignments, ILEC oddball codes that have to be tied to one Rate Center, and state
            commission waivers. Up to four per Rate Center, in `emb_overlay_npa1` to `emb_overlay_npa4`; unused
            positions are null."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
        - name: emb_overlay_npa2
          in: query
          description: "Embedded Overlay NPA 2 (integer). Nullable: rows where this column is null never match a filter on it.
            Embedded overlay NPA: an area code linked to this Rate Center only by grandfathering, where it would not
            otherwise belong, and often left off NPA maps, which can confuse anyone working out where NXXs are assigned.
            No new NXX codes are assigned from it here, though numbers in its existing NXXs can still be ported or
            pooled where the situation allows. Causes include wireless carriers keeping old-NPA codes after an area-code
            split, pre-NANPA misassignments, ILEC oddball codes that have to be tied to one Rate Center, and state
            commission waivers. Up to four per Rate Center, in `emb_overlay_npa1` to `emb_overlay_npa4`; unused
            positions are null."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
        - name: emb_overlay_npa3
          in: query
          description: "Embedded Overlay NPA 3 (integer). Nullable: rows where this column is null never match a filter on it.
            Embedded overlay NPA: an area code linked to this Rate Center only by grandfathering, where it would not
            otherwise belong, and often left off NPA maps, which can confuse anyone working out where NXXs are assigned.
            No new NXX codes are assigned from it here, though numbers in its existing NXXs can still be ported or
            pooled where the situation allows. Causes include wireless carriers keeping old-NPA codes after an area-code
            split, pre-NANPA misassignments, ILEC oddball codes that have to be tied to one Rate Center, and state
            commission waivers. Up to four per Rate Center, in `emb_overlay_npa1` to `emb_overlay_npa4`; unused
            positions are null."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
        - name: emb_overlay_npa4
          in: query
          description: "Embedded Overlay NPA 4 (integer). Nullable: rows where this column is null never match a filter on it.
            Embedded overlay NPA: an area code linked to this Rate Center only by grandfathering, where it would not
            otherwise belong, and often left off NPA maps, which can confuse anyone working out where NXXs are assigned.
            No new NXX codes are assigned from it here, though numbers in its existing NXXs can still be ported or
            pooled where the situation allows. Causes include wireless carriers keeping old-NPA codes after an area-code
            split, pre-NANPA misassignments, ILEC oddball codes that have to be tied to one Rate Center, and state
            commission waivers. Up to four per Rate Center, in `emb_overlay_npa1` to `emb_overlay_npa4`; unused
            positions are null."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
        - name: filler2
          in: query
          description: "Filler 2 (string). Nullable: rows where this column is null never match a filter on it. Unused filler
            column from the LERG layout; always null."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
      responses:
        "200":
          description: Envelope with `table`, `count`, `total_unique` and `data[]`, one object per row projected to `fields`.
          content:
            application/json:
              schema:
                type: object
                properties:
                  count:
                    type: integer
                  data:
                    type: array
                    items:
                      type: object
                  table:
                    type: string
                  total_unique:
                    type: integer
                    description: Distinct rows matched before `limit`/`offset`. A query no index can narrow stops scanning once it holds
                      `offset + limit` distinct rows, counting `limit` after it is clamped to 10,000, so a value exactly
                      equal to that sum means "at least this many", not a total; raise `limit` for the true count. Any
                      smaller value is exact, as is every value on an index-backed query.
              example:
                count: 1
                data:
                  - eff_date: 2026-03-01
                    emb_overlay_npa1: 1
                    emb_overlay_npa2: 1
                    emb_overlay_npa3: 1
                    emb_overlay_npa4: 1
                    filler2: EXAMPLE
                    filler3: EXAMPLE
                    lata: 656
                    lata_name: DENVER
                    major_h: 1
                    major_v: 1
                    minor_h: 1
                    minor_v: 1
                    mta1: EXAMPLE
                    mta2: EXAMPLE
                    npa1: 1
                    npa10: 1
                    npa2: 1
                    npa3: 1
                    npa4: 1
                    npa5: 1
                    npa6: 1
                    npa7: 1
                    npa8: 1
                    npa9: 1
                    rc_abbr_name: DENVER
                    rc_full_name: DENVER
                    rc_state: CO
                    split_indicator: true
                    status: EXAMPLE
                table: lerg_8
                total_unique: 1
        "400":
          description: Causes include an unknown column in `fields` or as a filter key, `*` combined with other field names, an
            empty filter value, a repeated `fields`/`limit`/`offset`, and a non-numeric `limit`/`offset`. The message
            names the offending key and may carry a `did you mean` hint.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LergErrorResponse"
      security:
        - apiToken: []
  /v1/lerg/lerg_8_lir:
    get:
      tags:
        - LERG
      summary: Query lerg_8_lir with exact-match column filters
      description: >-
        `GET /v1/lerg/lerg_8_lir?column=value&…`


        Every parameter below except `fields`, `limit` and `offset` is a column of lerg_8_lir. Repeat a parameter to
        match any of several values (an IN-list); omit it to leave that column unfiltered. Filters are exact-match and
        are ANDed together.


        A comma inside a filter value is **not** a separator — only `fields` is comma-separated. `?npa=303,720` looks
        for the literal value `303,720`, matches nothing, and returns 200 with an empty `data`. Repeat the key instead:
        `?npa=303&npa=720`.


        This table has no hash index, so every query is a filtered scan; keep `limit` modest.


        This is the same route as `queryTable` with `table_name=lerg_8_lir`, spelled out so the columns are nameable.
        For an operator other than equality, or to join to another table, use `complexQuery`.


        Column definitions are paraphrased from the TruOps TRA LERG Routing Guide, General Information, BD-TRA-LERG-GEN
        Issue 2 (2026-08-01), section 3.1.
      operationId: queryLerg8Lir
      parameters:
        - name: fields
          in: query
          description: "Comma-separated projection. Omit it, or pass `*`, for every column. `*` cannot be combined with other
            names. Valid names: province, lir, status, eff_date, lir_full_name, ilec_ocn, lir_code, rc_abbr_name,
            filler2, rc_full_name, rc_portable, filler1."
          required: false
          schema:
            type: string
          example: province,lir,status,eff_date
        - name: limit
          in: query
          description: "Page size, default 100. Clamped to 10,000: a larger value is accepted and silently reduced, never
            rejected, so no `maximum` is declared here. `limit=0` is accepted and returns an empty page. On a query no
            index can narrow this also bounds the work: the scan stops at `offset + limit` distinct rows."
          required: false
          schema:
            type: integer
            minimum: 0
          example: 100
        - name: offset
          in: query
          description: "Rows to skip for pagination, default 0. Not capped, deliberately: a ceiling here would make paging through
            a table impossible. On a query no index can narrow, `offset` counts towards the scan bound of `offset +
            limit` distinct rows, so a deep page costs the rows it skips -- `offset=1500000` reads 1.5M rows whatever
            `limit` says. Filter on an indexed column to page at constant cost."
          required: false
          schema:
            type: integer
            minimum: 0
          example: 0
        - name: province
          in: query
          description: Province (string). Two-letter code of the Canadian province or territory, in the LERG's own coding, which
            differs from Canada Post's for Newfoundland and Labrador (NF), Nunavut (VU) and Quebec (PQ).
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: lir
          in: query
          description: "LIR (string). Local Interconnection Region, a Canadian-only area set by an incumbent LEC inside which it
            and competitive LECs exchange traffic under bill and keep, as set out in CRTC Telecom Decision 2004-46. Ten
            characters at most: when `lir_full_name` is longer, this abbreviates the LIR's tariff name, or the point of
            interconnection location if the tariff gives the LIR only a code. UNASSIGNED groups the Rate Centers that
            belong to no LIR."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: status
          in: query
          description: "Status (string). Nullable: rows where this column is null never match a filter on it. Pending activity on
            this record, read together with the effective date: E = the record is being established, M = the record is
            being modified (compare against the preceding current view to see what changes), D = the record is being
            disconnected. Null means the record is current and active as of this LERG issue. Here the record is the Rate
            Center's assignment to the LIR, not the LIR itself."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: eff_date
          in: query
          description: "Effective Date (date). Nullable: rows where this column is null never match a filter on it. Date on which
            the activity in `status` takes effect, as YYYY-MM-DD. Null when the record is current. The LERG is a
            planning tool: this date is a forecast, not an activation record."
          required: false
          schema:
            type: array
            items:
              type: string
              format: date
          style: form
          explode: true
          example:
            - 2026-03-01
        - name: lir_full_name
          in: query
          description: "LIR Full Name (string). Full name of the LIR, up to 50 characters: the name the ILEC tariff gives it
            (which may be a code), then a hyphen and the location of its point of interconnection when the tariff names
            one."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - DENVER
        - name: ilec_ocn
          in: query
          description: "ILEC OCN (string). Nullable: rows where this column is null never match a filter on it. OCN of the
            incumbent LEC whose tariff defines this LIR. Null when the Rate Center is not assigned to an LIR."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - "6529"
        - name: lir_code
          in: query
          description: "LIR Code (string). Nullable: rows where this column is null never match a filter on it. Code the LERG
            itself adds, taken from no tariff or CRTC source, to make an LIR easier to pick out when its tariff
            identifies it by a coded name (for example LIR-ON16). Null when no code applies."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: rc_abbr_name
          in: query
          description: Rate Center Abbr Name (string). Abbreviated name, ten characters at most, of the Rate Center this row
            places in the LIR; the Rate Center itself is in LERG 8. In current data NONE appears on a few UNASSIGNED
            placeholder rows that name no Rate Center.
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - DENVER
        - name: filler2
          in: query
          description: "Filler 2 (string). Nullable: rows where this column is null never match a filter on it. Unused filler
            column from the LERG layout; always null."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: rc_full_name
          in: query
          description: Rate Center Full Name (string). Full, correctly spelled name of the Rate Center, which `rc_abbr_name`
            shortens to ten characters when needed. Most Rate Centers are named for a locality, and then this is that
            locality's full name.
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - DENVER
        - name: rc_portable
          in: query
          description: "Rate Center Portable (boolean). Nullable: rows where this column is null never match a filter on it. Rate
            Center portability, set on Canadian Rate Centers only: true when the CRTC has identified the Rate Center as
            portable, or when the code holder of at least one of its NXXs has marked that NXX portable in LERG 6; false
            otherwise. In current data it is null only on placeholder rows that name no Rate Center."
          required: false
          schema:
            type: array
            items:
              type: boolean
          style: form
          explode: true
          example:
            - true
        - name: filler1
          in: query
          description: "Filler 1 (string). Nullable: rows where this column is null never match a filter on it. Unused filler
            column from the LERG layout; always null."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
      responses:
        "200":
          description: Envelope with `table`, `count`, `total_unique` and `data[]`, one object per row projected to `fields`.
          content:
            application/json:
              schema:
                type: object
                properties:
                  count:
                    type: integer
                  data:
                    type: array
                    items:
                      type: object
                  table:
                    type: string
                  total_unique:
                    type: integer
                    description: Distinct rows matched before `limit`/`offset`. A query no index can narrow stops scanning once it holds
                      `offset + limit` distinct rows, counting `limit` after it is clamped to 10,000, so a value exactly
                      equal to that sum means "at least this many", not a total; raise `limit` for the true count. Any
                      smaller value is exact, as is every value on an index-backed query.
              example:
                count: 1
                data:
                  - eff_date: 2026-03-01
                    filler1: EXAMPLE
                    filler2: EXAMPLE
                    ilec_ocn: "6529"
                    lir: EXAMPLE
                    lir_code: EXAMPLE
                    lir_full_name: DENVER
                    province: EXAMPLE
                    rc_abbr_name: DENVER
                    rc_full_name: DENVER
                    rc_portable: true
                    status: EXAMPLE
                table: lerg_8_lir
                total_unique: 1
        "400":
          description: Causes include an unknown column in `fields` or as a filter key, `*` combined with other field names, an
            empty filter value, a repeated `fields`/`limit`/`offset`, and a non-numeric `limit`/`offset`. The message
            names the offending key and may carry a `did you mean` hint.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LergErrorResponse"
      security:
        - apiToken: []
  /v1/lerg/lerg_8_loc:
    get:
      tags:
        - LERG
      summary: Query lerg_8_loc with exact-match column filters
      description: >-
        `GET /v1/lerg/lerg_8_loc?column=value&…`


        Every parameter below except `fields`, `limit` and `offset` is a column of lerg_8_loc. Repeat a parameter to
        match any of several values (an IN-list); omit it to leave that column unfiltered. Filters are exact-match and
        are ANDed together.


        A comma inside a filter value is **not** a separator — only `fields` is comma-separated. `?npa=303,720` looks
        for the literal value `303,720`, matches nothing, and returns 200 with an empty `data`. Repeat the key instead:
        `?npa=303&npa=720`.


        This table has no hash index, so every query is a filtered scan; keep `limit` modest.


        This is the same route as `queryTable` with `table_name=lerg_8_loc`, spelled out so the columns are nameable.
        For an operator other than equality, or to join to another table, use `complexQuery`.


        Column definitions are paraphrased from the TruOps TRA LERG Routing Guide, General Information, BD-TRA-LERG-GEN
        Issue 2 (2026-08-01), section 3.1.
      operationId: queryLerg8Loc
      parameters:
        - name: fields
          in: query
          description: "Comma-separated projection. Omit it, or pass `*`, for every column. `*` cannot be combined with other
            names. Valid names: lata, lata_name, status, eff_date, loc_name_abbr, loc_index, loc_state, loc_name_full,
            rc_name_abbr, filler3, filler1, loc_county, filler2."
          required: false
          schema:
            type: string
          example: lata,lata_name,status,eff_date
        - name: limit
          in: query
          description: "Page size, default 100. Clamped to 10,000: a larger value is accepted and silently reduced, never
            rejected, so no `maximum` is declared here. `limit=0` is accepted and returns an empty page. On a query no
            index can narrow this also bounds the work: the scan stops at `offset + limit` distinct rows."
          required: false
          schema:
            type: integer
            minimum: 0
          example: 100
        - name: offset
          in: query
          description: "Rows to skip for pagination, default 0. Not capped, deliberately: a ceiling here would make paging through
            a table impossible. On a query no index can narrow, `offset` counts towards the scan bound of `offset +
            limit` distinct rows, so a deep page costs the rows it skips -- `offset=1500000` reads 1.5M rows whatever
            `limit` says. Filter on an indexed column to page at constant cost."
          required: false
          schema:
            type: integer
            minimum: 0
          example: 0
        - name: lata
          in: query
          description: LATA (integer). Local Access and Transport Area, the numeric code of the geographic area this record
            belongs to. 999 and 99999 mark non-geographic and reserved assignments and are real values, not nulls.
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 656
        - name: lata_name
          in: query
          description: LATA Name (string). Name of the LATA, or of the LATA-like area for non-LATA regions.
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - DENVER
        - name: status
          in: query
          description: "Status (string). Nullable: rows where this column is null never match a filter on it. Pending activity on
            this record, read together with the effective date: E = the record is being established, M = the record is
            being modified (compare against the preceding current view to see what changes), D = the record is being
            disconnected. Null means the record is current and active as of this LERG issue."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: eff_date
          in: query
          description: "Effective Date (date). Nullable: rows where this column is null never match a filter on it. Date on which
            the activity in `status` takes effect, as YYYY-MM-DD. Null when the record is current. The LERG is a
            planning tool: this date is a forecast, not an activation record."
          required: false
          schema:
            type: array
            items:
              type: string
              format: date
          style: form
          explode: true
          example:
            - 2026-03-01
        - name: loc_name_abbr
          in: query
          description: "Location Name Abbr (string). Locality name in the form the other LERG files use: ten characters at most,
            abbreviated when the full name is longer (`loc_name_full` gives it in full). Usually a recognised place
            name, sometimes a locally defined one, and often what a subscriber's bill shows as the called place."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: loc_index
          in: query
          description: "Location Index (string). Nullable: rows where this column is null never match a filter on it.
            Two-character index that distinguishes two localities of the same name within one state or province. Null
            when the name is unambiguous."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: loc_state
          in: query
          description: Location State (string). Two-letter state, province, or territory of the locality.
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - CO
        - name: loc_name_full
          in: query
          description: Location Name Full (string). Full, correctly spelled name of the locality, up to 50 characters. When
            `loc_index` is set, the full name usually adds a note saying where the locality is.
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: rc_name_abbr
          in: query
          description: Rate Center Abbr Name (string). Abbreviated name of the Rate Center (LERG 8 `rc_abbr_name`) that this
            locality maps to.
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: filler3
          in: query
          description: "Filler 3 (string). Nullable: rows where this column is null never match a filter on it. Named as a filler
            in the LERG layout, but not always empty. In current data it holds Z on a few rows, all New York City zone
            Rate Centers in LATA 132, and is null on every other row. The LERG glossary gives this position no meaning,
            so this definition claims none."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: filler1
          in: query
          description: "Filler 1 (string). Nullable: rows where this column is null never match a filter on it. Unused filler
            column from the LERG layout; always null."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: loc_county
          in: query
          description: "Location County (string). County the locality is in, or one of three placeholders: MULTIPLE COUNTIES when
            the locality covers more than one, NOT APPLICABLE when the row is not a real locality (a zoned Rate Center
            name or an oddball-code label, say), and NOT AVAILABLE for real localities in parts of the NANP with no
            county or equivalent. Comparing the counties of all localities in a Rate Center shows which counties it
            covers."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: filler2
          in: query
          description: "Filler 2 (string). Nullable: rows where this column is null never match a filter on it. Unused filler
            column from the LERG layout; always null."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
      responses:
        "200":
          description: Envelope with `table`, `count`, `total_unique` and `data[]`, one object per row projected to `fields`.
          content:
            application/json:
              schema:
                type: object
                properties:
                  count:
                    type: integer
                  data:
                    type: array
                    items:
                      type: object
                  table:
                    type: string
                  total_unique:
                    type: integer
                    description: Distinct rows matched before `limit`/`offset`. A query no index can narrow stops scanning once it holds
                      `offset + limit` distinct rows, counting `limit` after it is clamped to 10,000, so a value exactly
                      equal to that sum means "at least this many", not a total; raise `limit` for the true count. Any
                      smaller value is exact, as is every value on an index-backed query.
              example:
                count: 1
                data:
                  - eff_date: 2026-03-01
                    filler1: EXAMPLE
                    filler2: EXAMPLE
                    filler3: EXAMPLE
                    lata: 656
                    lata_name: DENVER
                    loc_county: EXAMPLE
                    loc_index: EXAMPLE
                    loc_name_abbr: EXAMPLE
                    loc_name_full: EXAMPLE
                    loc_state: CO
                    rc_name_abbr: EXAMPLE
                    status: EXAMPLE
                table: lerg_8_loc
                total_unique: 1
        "400":
          description: Causes include an unknown column in `fields` or as a filter key, `*` combined with other field names, an
            empty filter value, a repeated `fields`/`limit`/`offset`, and a non-numeric `limit`/`offset`. The message
            names the offending key and may carry a `did you mean` hint.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LergErrorResponse"
      security:
        - apiToken: []
  /v1/lerg/lerg_8_pst:
    get:
      tags:
        - LERG
      summary: Query lerg_8_pst with exact-match column filters
      description: >-
        `GET /v1/lerg/lerg_8_pst?column=value&…`


        Every parameter below except `fields`, `limit` and `offset` is a column of lerg_8_pst. Repeat a parameter to
        match any of several values (an IN-list); omit it to leave that column unfiltered. Filters are exact-match and
        are ANDed together.


        A comma inside a filter value is **not** a separator — only `fields` is comma-separated. `?npa=303,720` looks
        for the literal value `303,720`, matches nothing, and returns 200 with an empty `data`. Repeat the key instead:
        `?npa=303&npa=720`.


        This table has no hash index, so every query is a filtered scan; keep `limit` modest.


        This is the same route as `queryTable` with `table_name=lerg_8_pst`, spelled out so the columns are nameable.
        For an operator other than equality, or to join to another table, use `complexQuery`.


        Column definitions are paraphrased from the TruOps TRA LERG Routing Guide, General Information, BD-TRA-LERG-GEN
        Issue 2 (2026-08-01), section 3.1.
      operationId: queryLerg8Pst
      parameters:
        - name: fields
          in: query
          description: "Comma-separated projection. Omit it, or pass `*`, for every column. `*` cannot be combined with other
            names. Valid names: loc_name_abbr, loc_index, loc_state, filler1, postal_code, filler2, usage_ind, filler3,
            exception, filler4."
          required: false
          schema:
            type: string
          example: loc_name_abbr,loc_index,loc_state,filler1
        - name: limit
          in: query
          description: "Page size, default 100. Clamped to 10,000: a larger value is accepted and silently reduced, never
            rejected, so no `maximum` is declared here. `limit=0` is accepted and returns an empty page. On a query no
            index can narrow this also bounds the work: the scan stops at `offset + limit` distinct rows."
          required: false
          schema:
            type: integer
            minimum: 0
          example: 100
        - name: offset
          in: query
          description: "Rows to skip for pagination, default 0. Not capped, deliberately: a ceiling here would make paging through
            a table impossible. On a query no index can narrow, `offset` counts towards the scan bound of `offset +
            limit` distinct rows, so a deep page costs the rows it skips -- `offset=1500000` reads 1.5M rows whatever
            `limit` says. Filter on an indexed column to page at constant cost."
          required: false
          schema:
            type: integer
            minimum: 0
          example: 0
        - name: loc_name_abbr
          in: query
          description: Location Name Abbr (string). Abbreviated locality name, ten characters at most; with `loc_index` and
            `loc_state` it names the LERG 8 LOC locality this postal code belongs to.
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: loc_index
          in: query
          description: "Location Index (string). Nullable: rows where this column is null never match a filter on it.
            Two-character index that distinguishes two localities of the same name within one state or province. Null
            when the name is unambiguous."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: loc_state
          in: query
          description: Location State (string). Two-letter state, province, or territory of the locality.
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - CO
        - name: filler1
          in: query
          description: "Filler 1 (string). Nullable: rows where this column is null never match a filter on it. Unused filler
            column from the LERG layout; always null."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: postal_code
          in: query
          description: "Postal Code (string). Nullable: rows where this column is null never match a filter on it. Postal code
            linked to the locality: in practice a five-digit U.S. ZIP code, without ZIP+4, served as text so a leading
            zero is kept. Null when the row records a locality with no postal code; `exception` may say why."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: filler2
          in: query
          description: "Filler 2 (string). Nullable: rows where this column is null never match a filter on it. Unused filler
            column from the LERG layout; always null."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: usage_ind
          in: query
          description: "Usage Indicator (string). Nullable: rows where this column is null never match a filter on it. Extra
            information about the postal code. N = the code has been linked with this locality (historically, say), but
            the postal authority does not recommend using this locality name with it; some localities are not
            recommended for any code, others only for some, and once the data is complete another row should carry the
            same code without the flag. P = a post office box code. U = a code assigned to one company or organization,
            though still tied to this locality. Null when none of these applies."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: filler3
          in: query
          description: "Filler 3 (string). Nullable: rows where this column is null never match a filter on it. Unused filler
            column from the LERG layout; always null."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: exception
          in: query
          description: "Exception Flag (string). Nullable: rows where this column is null never match a filter on it. Code
            explaining why the locality has no postal code: O = the locality exists only to label oddball NXX codes, not
            as a real place (BROADBAND, for example); R = the name is that of a Rate Center (rate exchange area), or
            another name that appears as a LERG 6 locality such as a local or combined name, rather than a real place
            spelled the same way; U = a real area that simply has no postal codes, such as a state park or an abandoned
            town. Null when none applies; a null on a row with no postal code means the case is still being researched.
            In current data a few R and U rows carry a postal code anyway."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: filler4
          in: query
          description: "Filler 4 (string). Nullable: rows where this column is null never match a filter on it. Unused filler
            column from the LERG layout; always null."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
      responses:
        "200":
          description: Envelope with `table`, `count`, `total_unique` and `data[]`, one object per row projected to `fields`.
          content:
            application/json:
              schema:
                type: object
                properties:
                  count:
                    type: integer
                  data:
                    type: array
                    items:
                      type: object
                  table:
                    type: string
                  total_unique:
                    type: integer
                    description: Distinct rows matched before `limit`/`offset`. A query no index can narrow stops scanning once it holds
                      `offset + limit` distinct rows, counting `limit` after it is clamped to 10,000, so a value exactly
                      equal to that sum means "at least this many", not a total; raise `limit` for the true count. Any
                      smaller value is exact, as is every value on an index-backed query.
              example:
                count: 1
                data:
                  - exception: EXAMPLE
                    filler1: EXAMPLE
                    filler2: EXAMPLE
                    filler3: EXAMPLE
                    filler4: EXAMPLE
                    loc_index: EXAMPLE
                    loc_name_abbr: EXAMPLE
                    loc_state: CO
                    postal_code: EXAMPLE
                    usage_ind: EXAMPLE
                table: lerg_8_pst
                total_unique: 1
        "400":
          description: Causes include an unknown column in `fields` or as a filter key, `*` combined with other field names, an
            empty filter value, a repeated `fields`/`limit`/`offset`, and a non-numeric `limit`/`offset`. The message
            names the offending key and may carry a `did you mean` hint.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LergErrorResponse"
      security:
        - apiToken: []
  /v1/lerg/lerg_9:
    get:
      tags:
        - LERG
      summary: Query lerg_9 with exact-match column filters
      description: >-
        `GET /v1/lerg/lerg_9?column=value&…`


        Every parameter below except `fields`, `limit` and `offset` is a column of lerg_9. Repeat a parameter to match
        any of several values (an IN-list); omit it to leave that column unfiltered. Filters are exact-match and are
        ANDed together.


        A comma inside a filter value is **not** a separator — only `fields` is comma-separated. `?npa=303,720` looks
        for the literal value `303,720`, matches nothing, and returns 200 with an empty `data`. Repeat the key instead:
        `?npa=303&npa=720`.


        This table has no hash index, so every query is a filtered scan; keep `limit` modest.


        This is the same route as `queryTable` with `table_name=lerg_9`, spelled out so the columns are nameable. For an
        operator other than equality, or to join to another table, use `complexQuery`.


        Column definitions are paraphrased from the TruOps TRA LERG Routing Guide, General Information, BD-TRA-LERG-GEN
        Issue 2 (2026-08-01), section 3.1.
      operationId: queryLerg9
      parameters:
        - name: fields
          in: query
          description: "Comma-separated projection. Omit it, or pass `*`, for every column. `*` cannot be combined with other
            names. Valid names: lata, lata_name, t_switch, t_tandem, t_equip_type, t_status, t_eff_date, h_coctype,
            h_chg_source, h_status, h_eff_date, h_npa, h_nxx, h_switch, h_equip_type, h_f_orig, h_f_term, view_id,
            view_line_num, tot_lines_view, rec_type, filler1, sha_indicator, filler2."
          required: false
          schema:
            type: string
          example: lata,lata_name,t_switch,t_tandem
        - name: limit
          in: query
          description: "Page size, default 100. Clamped to 10,000: a larger value is accepted and silently reduced, never
            rejected, so no `maximum` is declared here. `limit=0` is accepted and returns an empty page. On a query no
            index can narrow this also bounds the work: the scan stops at `offset + limit` distinct rows."
          required: false
          schema:
            type: integer
            minimum: 0
          example: 100
        - name: offset
          in: query
          description: "Rows to skip for pagination, default 0. Not capped, deliberately: a ceiling here would make paging through
            a table impossible. On a query no index can narrow, `offset` counts towards the scan bound of `offset +
            limit` distinct rows, so a deep page costs the rows it skips -- `offset=1500000` reads 1.5M rows whatever
            `limit` says. Filter on an indexed column to page at constant cost."
          required: false
          schema:
            type: integer
            minimum: 0
          example: 0
        - name: lata
          in: query
          description: LATA (integer). Local Access and Transport Area, the numeric code of the geographic area this record
            belongs to. 999 and 99999 mark non-geographic and reserved assignments and are real values, not nulls.
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 656
        - name: lata_name
          in: query
          description: LATA Name (string). Name of the LATA, or of the LATA-like area for non-LATA regions.
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - DENVER
        - name: t_switch
          in: query
          description: "Tandem Switch (string). Eleven-character identifier, normally a CLLI code, of the homed-to switch whose
            view this line is part of. Usually a tandem, but LERG 9 files other homing targets the same way: Signal
            Transfer Points, hosts, 800 SSPs, intermediate offices, call agents, trunk gateways, and the real switches
            behind points of interface. A switch serving more than one LATA appears once for each."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - DNVRCOMADS0
        - name: t_tandem
          in: query
          description: "Tandem LATA (integer). Nullable: rows where this column is null never match a filter on it. LATA of the
            homed-to switch itself. A switch serving more than one LATA has a view for each, so this can differ from the
            line's `lata`. The glossary does not define this column; in current data it always equals the LATA that LERG
            7 records for `t_switch`, and it is null when `t_switch` has no LERG 7 record."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
        - name: t_equip_type
          in: query
          description: "Tandem Equipment Type (string). Nullable: rows where this column is null never match a filter on it.
            Three-character equipment type of the homed-to switch, the same code LERG 7 holds in `eqp_type` for
            `t_switch`. In current data it is null exactly when `t_switch` has no LERG 7 record, as `t_tandem` is."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: t_status
          in: query
          description: "Tandem Status (string). Nullable: rows where this column is null never match a filter on it. Pending
            activity on the homed-to switch itself, read with `t_eff_date`: E = it is being established, M = it is being
            modified, D = it is being disconnected. Null when nothing is pending for it. In current data it agrees with
            the status LERG 7 shows for `t_switch`."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: t_eff_date
          in: query
          description: "Tandem Effective Date (date). Nullable: rows where this column is null never match a filter on it. Date
            the change in `t_status` takes effect, as YYYY-MM-DD; null when `t_status` is. A planning date, not a record
            of activation."
          required: false
          schema:
            type: array
            items:
              type: string
              format: date
          style: form
          explode: true
          example:
            - 2026-03-01
        - name: h_coctype
          in: query
          description: "Homing COC Type (string). Nullable: rows where this column is null never match a filter on it. COC type of
            this line's NPA NXX, as LERG 6 gives it on the code's whole-NXX (block A) record: the three-letter code for
            what the central office code is used for, such as EOC for an end office code, PMC or RCC for wireless, VOI
            for VoIP, or ATC for an access tandem code. LERG 6 `coc_type` lists the values. Null on lines without an NPA
            NXX, as `h_npa` is."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: h_chg_source
          in: query
          description: "Homing Change Source (string). Nullable: rows where this column is null never match a filter on it. Source
            of a pending change to this homing line: B = NPA NXX activity and switch activity fall on one effective
            date; D = NPA NXX activity alone, such as a code being opened or closed, or an edit that leaves its switch
            as it is; H = homing activity alone, for example a switch moving to a different tandem; L = NPA NXX activity
            in which a code already in service moves to another switch; S = switch activity alone, such as a switch
            being opened or closed, or an edit that leaves its homing as it is; T = a change to the tandem's own data,
            whether it is being opened, closed or edited. Meant to be set whenever a status is; in current data T goes
            with `t_status` on the homed-to switch's own line and the other letters with `h_status`."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: h_status
          in: query
          description: "Homing Status (string). Nullable: rows where this column is null never match a filter on it. Pending
            change to this line's pairing of NPA NXX and switch under the homed-to switch, read with `h_eff_date`: E =
            the pairing is being added under `t_switch`, D = it is being taken out from under it, M = it is being
            modified. The letters speak only about `t_switch`: a code moving to a switch that homes elsewhere shows D
            under the old homed-to switch and E under the new one, though neither the code nor the switch is leaving the
            network. Null when nothing is pending."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: h_eff_date
          in: query
          description: "Homing Effective Date (date). Nullable: rows where this column is null never match a filter on it. Date
            the change in `h_status` takes effect, as YYYY-MM-DD; null when `h_status` is. A planning date, not a record
            of activation."
          required: false
          schema:
            type: array
            items:
              type: string
              format: date
          style: form
          explode: true
          example:
            - 2026-03-01
        - name: h_npa
          in: query
          description: "Homing NPA (integer). Nullable: rows where this column is null never match a filter on it. Three-digit
            area code (NPA) of the NPA NXX on this line, taken from LERG 6. Null, with `h_nxx` and `h_coctype`, on lines
            that list no NPA NXX: the homed-to switch's own line (record type A) and, in current data, some subtending
            lines (C) that name a switch alone."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 303
        - name: h_nxx
          in: query
          description: "Homing NXX (string). Nullable: rows where this column is null never match a filter on it. NXX of the NPA
            NXX on this line, taken from LERG 6 and served as text because it is a code, not a number. On an access
            tandem code line (record type B) it is the code itself: a 0XX or 1XX value whose leading zero matters (007
            is not 7), or a lone + when calls route straight to the switch named instead of through a numbered code.
            Other lines carry an ordinary three-digit central office code. Null on lines without an NPA NXX, as `h_npa`
            is."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - "629"
        - name: h_switch
          in: query
          description: Homing Switch (string). Eleven-character identifier, normally a CLLI code, of the switch this line is
            about. On a subtending line (record type C) it is a switch that homes on `t_switch`, serving the NPA NXX if
            one is given; on an access tandem code line (B) it is the switch LERG 6 names for the code; in current data,
            on the homed-to switch's own line (A) it repeats `t_switch`.
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - DNVRCOMADS0
        - name: h_equip_type
          in: query
          description: "Homing Equipment Type (string). Nullable: rows where this column is null never match a filter on it.
            Three-character equipment type of `h_switch`, the same code LERG 7 holds in `eqp_type` for that switch (POI
            marks a point of interface). In current data null only on a few record type A lines whose switch has no LERG
            7 record."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: h_f_orig
          in: query
          description: "Homing F Originating (string). Nullable: rows where this column is null never match a filter on it. Roles
            `t_switch` plays for traffic that starts at `h_switch`, one character per role, so a value can combine
            several (BDTU, for instance). Codes: A = actual switch (the real switch behind `h_switch` when that is a
            point of interface); B, C and D = tandem for Feature Group B, C and D traffic respectively, D being the
            equal access tandem; F = ISDN foreign serving office, which provides ISDN service for `h_switch`; H = host;
            J, K and L = intermediate office for Feature Group B, C and D respectively; M = tandem for circuit-switched
            data; O = tandem for operator services; S = Signal Transfer Point, and because STPs come in pairs an NPA NXX
            is listed under both of its STPs; T = tandem for intraLATA toll traffic; U = tandem for local traffic; 3 =
            call agent; 4 = trunk gateway; 8 = 800 SSP, for originating traffic only. Null when no originating role is
            listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: h_f_term
          in: query
          description: "Homing F Terminating (string). Nullable: rows where this column is null never match a filter on it. Roles
            `t_switch` plays for traffic delivered to `h_switch`, one character per role, so a value can combine
            several. Codes: A = actual switch (the real switch behind `h_switch` when that is a point of interface); B,
            C and D = tandem for Feature Group B, C and D traffic respectively, D being the equal access tandem; F =
            ISDN foreign serving office, which provides ISDN service for `h_switch`; H = host; J, K and L = intermediate
            office for Feature Group B, C and D respectively; M = tandem for circuit-switched data; O = tandem for
            operator services; S = Signal Transfer Point, and because STPs come in pairs an NPA NXX is listed under both
            of its STPs; T = tandem for intraLATA toll traffic; U = tandem for local traffic; 3 = call agent; 4 = trunk
            gateway; 8 = 800 SSP, for originating traffic only. Null when no terminating role is listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: view_id
          in: query
          description: "View ID (string). Identifier shared by every line of one view, the block of lines in which LERG 9 sets out
            one homed-to switch's homing data (in current data, one view per homed-to switch and LATA). IDs follow the
            sort order of each monthly file, so a view's ID can change from one month to the next: it groups lines and
            is not a lasting key. In current data seven zero-padded digits, served as text."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: view_line_num
          in: query
          description: View Line Number (integer). Position of this line within its LERG 9 view, counting from 1. The source pads
            it to four digits (0001); it is served as a number. In current data line 1 is always the homed-to switch's
            own line (record type A).
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
        - name: tot_lines_view
          in: query
          description: Total Lines View (integer). How many lines the LERG 9 view holding this line has, repeated on each of them.
            The source pads it to four digits; it is served as a number.
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
        - name: rec_type
          in: query
          description: "Record Type (string). Which part of a tandem's record this line belongs to: A = the tandem itself, B =
            access tandem codes using the tandem, C = a subtending NPA NXX and its switch."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: filler1
          in: query
          description: "Filler 1 (string). Nullable: rows where this column is null never match a filter on it. Unused filler
            column from the LERG layout; always null."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: sha_indicator
          in: query
          description: "SHA Indicator (string). Nullable: rows where this column is null never match a filter on it. Switch Homing
            Arrangement indicator of `h_switch` for this line: a two-digit code, kept as text, that together with
            `h_switch` picks the LERG 7 SHA arrangement under which that switch homes on `t_switch`. 00 is the default
            arrangement. In current data null exactly on the homed-to switch's own lines (record type A)."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: filler2
          in: query
          description: "Filler 2 (string). Nullable: rows where this column is null never match a filter on it. Unused filler
            column from the LERG layout; always null."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
      responses:
        "200":
          description: Envelope with `table`, `count`, `total_unique` and `data[]`, one object per row projected to `fields`.
          content:
            application/json:
              schema:
                type: object
                properties:
                  count:
                    type: integer
                  data:
                    type: array
                    items:
                      type: object
                  table:
                    type: string
                  total_unique:
                    type: integer
                    description: Distinct rows matched before `limit`/`offset`. A query no index can narrow stops scanning once it holds
                      `offset + limit` distinct rows, counting `limit` after it is clamped to 10,000, so a value exactly
                      equal to that sum means "at least this many", not a total; raise `limit` for the true count. Any
                      smaller value is exact, as is every value on an index-backed query.
              example:
                count: 1
                data:
                  - filler1: EXAMPLE
                    filler2: EXAMPLE
                    h_chg_source: EXAMPLE
                    h_coctype: EXAMPLE
                    h_eff_date: 2026-03-01
                    h_equip_type: EXAMPLE
                    h_f_orig: EXAMPLE
                    h_f_term: EXAMPLE
                    h_npa: 303
                    h_nxx: "629"
                    h_status: EXAMPLE
                    h_switch: DNVRCOMADS0
                    lata: 656
                    lata_name: DENVER
                    rec_type: EXAMPLE
                    sha_indicator: EXAMPLE
                    t_eff_date: 2026-03-01
                    t_equip_type: EXAMPLE
                    t_status: EXAMPLE
                    t_switch: DNVRCOMADS0
                    t_tandem: 1
                    tot_lines_view: 1
                    view_id: EXAMPLE
                    view_line_num: 1
                table: lerg_9
                total_unique: 1
        "400":
          description: Causes include an unknown column in `fields` or as a filter key, `*` combined with other field names, an
            empty filter value, a repeated `fields`/`limit`/`offset`, and a non-numeric `limit`/`offset`. The message
            names the offending key and may carry a `did you mean` hint.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LergErrorResponse"
      security:
        - apiToken: []
  /v1/lerg/lerg_9_atc:
    get:
      tags:
        - LERG
      summary: Query lerg_9_atc with exact-match column filters
      description: >-
        `GET /v1/lerg/lerg_9_atc?column=value&…`


        Every parameter below except `fields`, `limit` and `offset` is a column of lerg_9_atc. Repeat a parameter to
        match any of several values (an IN-list); omit it to leave that column unfiltered. Filters are exact-match and
        are ANDed together.


        A comma inside a filter value is **not** a separator — only `fields` is comma-separated. `?npa=303,720` looks
        for the literal value `303,720`, matches nothing, and returns 200 with an empty `data`. Repeat the key instead:
        `?npa=303&npa=720`.


        This table has no hash index, so every query is a filtered scan; keep `limit` modest.


        This is the same route as `queryTable` with `table_name=lerg_9_atc`, spelled out so the columns are nameable.
        For an operator other than equality, or to join to another table, use `complexQuery`.


        Column definitions are paraphrased from the TruOps TRA LERG Routing Guide, General Information, BD-TRA-LERG-GEN
        Issue 2 (2026-08-01), section 3.1.
      operationId: queryLerg9Atc
      parameters:
        - name: fields
          in: query
          description: "Comma-separated projection. Omit it, or pass `*`, for every column. `*` cannot be combined with other
            names. Valid names: lata, lata_name, t_switch, t_tandem, t_equip_type, t_status, t_eff_date, h_coctype,
            h_change_source, h_status, h_eff_date, h_npa, h_nxx, h_switch, h_equip_type, h_funct_orig, h_funct_term,
            view_id, view_line_num, tot_lines_view, rec_type, filler1, sha_indicator, filler2, os_1, os_2, os_3, os_4,
            os_5, os_6, os_7, os_8, os_9, os_10, os_11, oa_12, os_13, os_14, os_15, os_16, os_17, os_18, os_19, os_20,
            os_21, os_22, os_23, os_24, os_25."
          required: false
          schema:
            type: string
          example: lata,lata_name,t_switch,t_tandem
        - name: limit
          in: query
          description: "Page size, default 100. Clamped to 10,000: a larger value is accepted and silently reduced, never
            rejected, so no `maximum` is declared here. `limit=0` is accepted and returns an empty page. On a query no
            index can narrow this also bounds the work: the scan stops at `offset + limit` distinct rows."
          required: false
          schema:
            type: integer
            minimum: 0
          example: 100
        - name: offset
          in: query
          description: "Rows to skip for pagination, default 0. Not capped, deliberately: a ceiling here would make paging through
            a table impossible. On a query no index can narrow, `offset` counts towards the scan bound of `offset +
            limit` distinct rows, so a deep page costs the rows it skips -- `offset=1500000` reads 1.5M rows whatever
            `limit` says. Filter on an indexed column to page at constant cost."
          required: false
          schema:
            type: integer
            minimum: 0
          example: 0
        - name: lata
          in: query
          description: LATA (integer). Local Access and Transport Area, the numeric code of the geographic area this record
            belongs to. 999 and 99999 mark non-geographic and reserved assignments and are real values, not nulls.
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 656
        - name: lata_name
          in: query
          description: LATA Name (string). Name of the LATA, or of the LATA-like area for non-LATA regions.
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - DENVER
        - name: t_switch
          in: query
          description: "Tandem Switch (string). Eleven-character identifier, normally a CLLI code, of the homed-to switch whose
            view this line is part of. Usually a tandem, but LERG 9 files other homing targets the same way: Signal
            Transfer Points, hosts, 800 SSPs, intermediate offices, call agents, trunk gateways, and the real switches
            behind points of interface. A switch serving more than one LATA appears once for each."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - DNVRCOMADS0
        - name: t_tandem
          in: query
          description: "Tandem LATA (integer). Nullable: rows where this column is null never match a filter on it. LATA of the
            homed-to switch itself. A switch serving more than one LATA has a view for each, so this can differ from the
            line's `lata`. The glossary does not define this column; in current data it always equals the LATA that LERG
            7 records for `t_switch`, and it is null when `t_switch` has no LERG 7 record."
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
        - name: t_equip_type
          in: query
          description: "Tandem Equipment Type (string). Nullable: rows where this column is null never match a filter on it.
            Three-character equipment type of the homed-to switch, the same code LERG 7 holds in `eqp_type` for
            `t_switch`. In current data it is null exactly when `t_switch` has no LERG 7 record, as `t_tandem` is."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: t_status
          in: query
          description: "Tandem Status (string). Nullable: rows where this column is null never match a filter on it. Pending
            activity on the homed-to switch itself, read with `t_eff_date`: E = it is being established, M = it is being
            modified, D = it is being disconnected. Null when nothing is pending for it. In current data it agrees with
            the status LERG 7 shows for `t_switch`."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: t_eff_date
          in: query
          description: "Tandem Effective Date (date). Nullable: rows where this column is null never match a filter on it. Date
            the change in `t_status` takes effect, as YYYY-MM-DD; null when `t_status` is. A planning date, not a record
            of activation."
          required: false
          schema:
            type: array
            items:
              type: string
              format: date
          style: form
          explode: true
          example:
            - 2026-03-01
        - name: h_coctype
          in: query
          description: "Homing COC Type (string). COC type of this line's NPA NXX, as LERG 6 gives it on the code's whole-NXX
            (block A) record: the three-letter code for what the central office code is used for, such as EOC for an end
            office code, PMC or RCC for wireless, VOI for VoIP, or ATC for an access tandem code. LERG 6 `coc_type`
            lists the values."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: h_change_source
          in: query
          description: "Homing Change Source (string). Nullable: rows where this column is null never match a filter on it. Source
            of a pending change to this homing line: B = NPA NXX activity and switch activity fall on one effective
            date; D = NPA NXX activity alone, such as a code being opened or closed, or an edit that leaves its switch
            as it is; H = homing activity alone, for example a switch moving to a different tandem; L = NPA NXX activity
            in which a code already in service moves to another switch; S = switch activity alone, such as a switch
            being opened or closed, or an edit that leaves its homing as it is; T = a change to the tandem's own data,
            whether it is being opened, closed or edited. Meant to be set whenever a status is; in current data T goes
            with `t_status` on the homed-to switch's own line and the other letters with `h_status`."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: h_status
          in: query
          description: "Homing Status (string). Nullable: rows where this column is null never match a filter on it. Pending
            change to this line's pairing of NPA NXX and switch under the homed-to switch, read with `h_eff_date`: E =
            the pairing is being added under `t_switch`, D = it is being taken out from under it, M = it is being
            modified. The letters speak only about `t_switch`: a code moving to a switch that homes elsewhere shows D
            under the old homed-to switch and E under the new one, though neither the code nor the switch is leaving the
            network. Null when nothing is pending."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: h_eff_date
          in: query
          description: "Homing Effective Date (date). Nullable: rows where this column is null never match a filter on it. Date
            the change in `h_status` takes effect, as YYYY-MM-DD; null when `h_status` is. A planning date, not a record
            of activation."
          required: false
          schema:
            type: array
            items:
              type: string
              format: date
          style: form
          explode: true
          example:
            - 2026-03-01
        - name: h_npa
          in: query
          description: Homing NPA (integer). Three-digit area code (NPA) of the NPA NXX on this line, taken from LERG 6.
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 303
        - name: h_nxx
          in: query
          description: "Homing NXX (string). NXX of the NPA NXX on this line, taken from LERG 6 and served as text because it is a
            code, not a number. On an access tandem code line (record type B) it is the code itself: a 0XX or 1XX value
            whose leading zero matters (007 is not 7), or a lone + when calls route straight to the switch named instead
            of through a numbered code. Other lines carry an ordinary three-digit central office code."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - "629"
        - name: h_switch
          in: query
          description: Homing Switch (string). Eleven-character identifier, normally a CLLI code, of the switch this line is
            about. On a subtending line (record type C) it is a switch that homes on `t_switch`, serving the NPA NXX if
            one is given; on an access tandem code line (B) it is the switch LERG 6 names for the code; in current data,
            on the homed-to switch's own line (A) it repeats `t_switch`.
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - DNVRCOMADS0
        - name: h_equip_type
          in: query
          description: Homing Equipment Type (string). Three-character equipment type of `h_switch`, the same code LERG 7 holds in
            `eqp_type` for that switch (POI marks a point of interface).
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: h_funct_orig
          in: query
          description: "Homing Function Originating (string). Nullable: rows where this column is null never match a filter on it.
            Roles `t_switch` plays for traffic that starts at `h_switch`, one character per role, so a value can combine
            several (BDTU, for instance). Codes: A = actual switch (the real switch behind `h_switch` when that is a
            point of interface); B, C and D = tandem for Feature Group B, C and D traffic respectively, D being the
            equal access tandem; F = ISDN foreign serving office, which provides ISDN service for `h_switch`; H = host;
            J, K and L = intermediate office for Feature Group B, C and D respectively; M = tandem for circuit-switched
            data; O = tandem for operator services; S = Signal Transfer Point, and because STPs come in pairs an NPA NXX
            is listed under both of its STPs; T = tandem for intraLATA toll traffic; U = tandem for local traffic; 3 =
            call agent; 4 = trunk gateway; 8 = 800 SSP, for originating traffic only. Null when no originating role is
            listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: h_funct_term
          in: query
          description: "Homing Function Terminating (string). Nullable: rows where this column is null never match a filter on it.
            Roles `t_switch` plays for traffic delivered to `h_switch`, one character per role, so a value can combine
            several. Codes: A = actual switch (the real switch behind `h_switch` when that is a point of interface); B,
            C and D = tandem for Feature Group B, C and D traffic respectively, D being the equal access tandem; F =
            ISDN foreign serving office, which provides ISDN service for `h_switch`; H = host; J, K and L = intermediate
            office for Feature Group B, C and D respectively; M = tandem for circuit-switched data; O = tandem for
            operator services; S = Signal Transfer Point, and because STPs come in pairs an NPA NXX is listed under both
            of its STPs; T = tandem for intraLATA toll traffic; U = tandem for local traffic; 3 = call agent; 4 = trunk
            gateway; 8 = 800 SSP, for originating traffic only. Null when no terminating role is listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: view_id
          in: query
          description: "View ID (string). Identifier shared by every line of one view, the block of lines in which LERG 9 sets out
            one homed-to switch's homing data (in current data, one view per homed-to switch and LATA). IDs follow the
            sort order of each monthly file, so a view's ID can change from one month to the next: it groups lines and
            is not a lasting key. In current data seven zero-padded digits, served as text."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: view_line_num
          in: query
          description: View Line Number (integer). Position of this line within its LERG 9 view, counting from 1. The source pads
            it to four digits (0001); it is served as a number. In current data line 1 is always the homed-to switch's
            own line (record type A).
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
        - name: tot_lines_view
          in: query
          description: Total Lines View (integer). How many lines the LERG 9 view holding this line has, repeated on each of them.
            The source pads it to four digits; it is served as a number.
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: true
          example:
            - 1
        - name: rec_type
          in: query
          description: "Record Type (string). Which part of a tandem's record this line belongs to: A = the tandem itself, B =
            access tandem codes using the tandem, C = a subtending NPA NXX and its switch. In current data every line
            here is B."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: filler1
          in: query
          description: "Filler 1 (string). Nullable: rows where this column is null never match a filter on it. Unused filler
            column from the LERG layout; always null."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: sha_indicator
          in: query
          description: "SHA Indicator (string). Switch Homing Arrangement indicator of `h_switch` for this line: a two-digit code,
            kept as text, that together with `h_switch` picks the LERG 7 SHA arrangement under which that switch homes
            on `t_switch`. 00 is the default arrangement."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: filler2
          in: query
          description: "Filler 2 (string). Nullable: rows where this column is null never match a filter on it. Unused filler
            column from the LERG layout; always null."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: os_1
          in: query
          description: "Operator Service Code 1 (string). Nullable: rows where this column is null never match a filter on it.
            Operator Service code associated with an Access Tandem Code, listed in source-record order. Null when fewer
            codes are listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: os_2
          in: query
          description: "Operator Service Code 2 (string). Nullable: rows where this column is null never match a filter on it.
            Operator Service code associated with an Access Tandem Code, listed in source-record order. Null when fewer
            codes are listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: os_3
          in: query
          description: "Operator Service Code 3 (string). Nullable: rows where this column is null never match a filter on it.
            Operator Service code associated with an Access Tandem Code, listed in source-record order. Null when fewer
            codes are listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: os_4
          in: query
          description: "Operator Service Code 4 (string). Nullable: rows where this column is null never match a filter on it.
            Operator Service code associated with an Access Tandem Code, listed in source-record order. Null when fewer
            codes are listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: os_5
          in: query
          description: "Operator Service Code 5 (string). Nullable: rows where this column is null never match a filter on it.
            Operator Service code associated with an Access Tandem Code, listed in source-record order. Null when fewer
            codes are listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: os_6
          in: query
          description: "Operator Service Code 6 (string). Nullable: rows where this column is null never match a filter on it.
            Operator Service code associated with an Access Tandem Code, listed in source-record order. Null when fewer
            codes are listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: os_7
          in: query
          description: "Operator Service Code 7 (string). Nullable: rows where this column is null never match a filter on it.
            Operator Service code associated with an Access Tandem Code, listed in source-record order. Null when fewer
            codes are listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: os_8
          in: query
          description: "Operator Service Code 8 (string). Nullable: rows where this column is null never match a filter on it.
            Operator Service code associated with an Access Tandem Code, listed in source-record order. Null when fewer
            codes are listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: os_9
          in: query
          description: "Operator Service Code 9 (string). Nullable: rows where this column is null never match a filter on it.
            Operator Service code associated with an Access Tandem Code, listed in source-record order. Null when fewer
            codes are listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: os_10
          in: query
          description: "Operator Service Code 10 (string). Nullable: rows where this column is null never match a filter on it.
            Operator Service code associated with an Access Tandem Code, listed in source-record order. Null when fewer
            codes are listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: os_11
          in: query
          description: "Operator Service Code 11 (string). Nullable: rows where this column is null never match a filter on it.
            Operator Service code associated with an Access Tandem Code, listed in source-record order. Null when fewer
            codes are listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: oa_12
          in: query
          description: "Operator Service Code 12 (string). Nullable: rows where this column is null never match a filter on it.
            Operator Service code associated with an Access Tandem Code, listed in source-record order. Null when fewer
            codes are listed. This is the twelfth position; the source layout names its column OA_12 rather than OS_12."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: os_13
          in: query
          description: "Operator Service Code 13 (string). Nullable: rows where this column is null never match a filter on it.
            Operator Service code associated with an Access Tandem Code, listed in source-record order. Null when fewer
            codes are listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: os_14
          in: query
          description: "Operator Service Code 14 (string). Nullable: rows where this column is null never match a filter on it.
            Operator Service code associated with an Access Tandem Code, listed in source-record order. Null when fewer
            codes are listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: os_15
          in: query
          description: "Operator Service Code 15 (string). Nullable: rows where this column is null never match a filter on it.
            Operator Service code associated with an Access Tandem Code, listed in source-record order. Null when fewer
            codes are listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: os_16
          in: query
          description: "Operator Service Code 16 (string). Nullable: rows where this column is null never match a filter on it.
            Operator Service code associated with an Access Tandem Code, listed in source-record order. Null when fewer
            codes are listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: os_17
          in: query
          description: "Operator Service Code 17 (string). Nullable: rows where this column is null never match a filter on it.
            Operator Service code associated with an Access Tandem Code, listed in source-record order. Null when fewer
            codes are listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: os_18
          in: query
          description: "Operator Service Code 18 (string). Nullable: rows where this column is null never match a filter on it.
            Operator Service code associated with an Access Tandem Code, listed in source-record order. Null when fewer
            codes are listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: os_19
          in: query
          description: "Operator Service Code 19 (string). Nullable: rows where this column is null never match a filter on it.
            Operator Service code associated with an Access Tandem Code, listed in source-record order. Null when fewer
            codes are listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: os_20
          in: query
          description: "Operator Service Code 20 (string). Nullable: rows where this column is null never match a filter on it.
            Operator Service code associated with an Access Tandem Code, listed in source-record order. Null when fewer
            codes are listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: os_21
          in: query
          description: "Operator Service Code 21 (string). Nullable: rows where this column is null never match a filter on it.
            Operator Service code associated with an Access Tandem Code, listed in source-record order. Null when fewer
            codes are listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: os_22
          in: query
          description: "Operator Service Code 22 (string). Nullable: rows where this column is null never match a filter on it.
            Operator Service code associated with an Access Tandem Code, listed in source-record order. Null when fewer
            codes are listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: os_23
          in: query
          description: "Operator Service Code 23 (string). Nullable: rows where this column is null never match a filter on it.
            Operator Service code associated with an Access Tandem Code, listed in source-record order. Null when fewer
            codes are listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: os_24
          in: query
          description: "Operator Service Code 24 (string). Nullable: rows where this column is null never match a filter on it.
            Operator Service code associated with an Access Tandem Code, listed in source-record order. Null when fewer
            codes are listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
        - name: os_25
          in: query
          description: "Operator Service Code 25 (string). Nullable: rows where this column is null never match a filter on it.
            Operator Service code associated with an Access Tandem Code, listed in source-record order. Null when fewer
            codes are listed."
          required: false
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - EXAMPLE
      responses:
        "200":
          description: Envelope with `table`, `count`, `total_unique` and `data[]`, one object per row projected to `fields`.
          content:
            application/json:
              schema:
                type: object
                properties:
                  count:
                    type: integer
                  data:
                    type: array
                    items:
                      type: object
                  table:
                    type: string
                  total_unique:
                    type: integer
                    description: Distinct rows matched before `limit`/`offset`. A query no index can narrow stops scanning once it holds
                      `offset + limit` distinct rows, counting `limit` after it is clamped to 10,000, so a value exactly
                      equal to that sum means "at least this many", not a total; raise `limit` for the true count. Any
                      smaller value is exact, as is every value on an index-backed query.
              example:
                count: 1
                data:
                  - filler1: EXAMPLE
                    filler2: EXAMPLE
                    h_change_source: EXAMPLE
                    h_coctype: EXAMPLE
                    h_eff_date: 2026-03-01
                    h_equip_type: EXAMPLE
                    h_funct_orig: EXAMPLE
                    h_funct_term: EXAMPLE
                    h_npa: 303
                    h_nxx: "629"
                    h_status: EXAMPLE
                    h_switch: DNVRCOMADS0
                    lata: 656
                    lata_name: DENVER
                    oa_12: EXAMPLE
                    os_1: EXAMPLE
                    os_10: EXAMPLE
                    os_11: EXAMPLE
                    os_13: EXAMPLE
                    os_14: EXAMPLE
                    os_15: EXAMPLE
                    os_16: EXAMPLE
                    os_17: EXAMPLE
                    os_18: EXAMPLE
                    os_19: EXAMPLE
                    os_2: EXAMPLE
                    os_20: EXAMPLE
                    os_21: EXAMPLE
                    os_22: EXAMPLE
                    os_23: EXAMPLE
                    os_24: EXAMPLE
                    os_25: EXAMPLE
                    os_3: EXAMPLE
                    os_4: EXAMPLE
                    os_5: EXAMPLE
                    os_6: EXAMPLE
                    os_7: EXAMPLE
                    os_8: EXAMPLE
                    os_9: EXAMPLE
                    rec_type: EXAMPLE
                    sha_indicator: EXAMPLE
                    t_eff_date: 2026-03-01
                    t_equip_type: EXAMPLE
                    t_status: EXAMPLE
                    t_switch: DNVRCOMADS0
                    t_tandem: 1
                    tot_lines_view: 1
                    view_id: EXAMPLE
                    view_line_num: 1
                table: lerg_9_atc
                total_unique: 1
        "400":
          description: Causes include an unknown column in `fields` or as a filter key, `*` combined with other field names, an
            empty filter value, a repeated `fields`/`limit`/`offset`, and a non-numeric `limit`/`offset`. The message
            names the offending key and may carry a `did you mean` hint.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LergErrorResponse"
      security:
        - apiToken: []
  /v1/lerg/lergdate:
    get:
      tags:
        - LERG
      summary: Query lergdate with exact-match column filters
      description: >-
        `GET /v1/lerg/lergdate?column=value&…`


        Every parameter below except `fields`, `limit` and `offset` is a column of lergdate. Repeat a parameter to match
        any of several values (an IN-list); omit it to leave that column unfiltered. Filters are exact-match and are
        ANDed together.


        A comma inside a filter value is **not** a separator — only `fields` is comma-separated. `?npa=303,720` looks
        for the literal value `303,720`, matches nothing, and returns 200 with an empty `data`. Repeat the key instead:
        `?npa=303&npa=720`.


        This table has no hash index, so every query is a filtered scan; keep `limit` modest.


        This is the same route as `queryTable` with `table_name=lergdate`, spelled out so the columns are nameable. For
        an operator other than equality, or to join to another table, use `complexQuery`.


        Column definitions are paraphrased from the TruOps TRA LERG Routing Guide, General Information, BD-TRA-LERG-GEN
        Issue 2 (2026-08-01), section 3.1.
      operationId: queryLergdate
      parameters:
        - name: fields
          in: query
          description: "Comma-separated projection. Omit it, or pass `*`, for every column. `*` cannot be combined with other
            names. Valid names: date."
          required: false
          schema:
            type: string
          example: date
        - name: limit
          in: query
          description: "Page size, default 100. Clamped to 10,000: a larger value is accepted and silently reduced, never
            rejected, so no `maximum` is declared here. `limit=0` is accepted and returns an empty page. On a query no
            index can narrow this also bounds the work: the scan stops at `offset + limit` distinct rows."
          required: false
          schema:
            type: integer
            minimum: 0
          example: 100
        - name: offset
          in: query
          description: "Rows to skip for pagination, default 0. Not capped, deliberately: a ceiling here would make paging through
            a table impossible. On a query no index can narrow, `offset` counts towards the scan bound of `offset +
            limit` distinct rows, so a deep page costs the rows it skips -- `offset=1500000` reads 1.5M rows whatever
            `limit` says. Filter on an indexed column to page at constant cost."
          required: false
          schema:
            type: integer
            minimum: 0
          example: 0
        - name: date
          in: query
          description: LERG Date (date). Issue date of this LERG data set, as YYYY-MM-DD. The source holds it as MM/DD/YY text;
            the loader normalises it.
          required: false
          schema:
            type: array
            items:
              type: string
              format: date
          style: form
          explode: true
          example:
            - 2026-03-01
      responses:
        "200":
          description: Envelope with `table`, `count`, `total_unique` and `data[]`, one object per row projected to `fields`.
          content:
            application/json:
              schema:
                type: object
                properties:
                  count:
                    type: integer
                  data:
                    type: array
                    items:
                      type: object
                  table:
                    type: string
                  total_unique:
                    type: integer
                    description: Distinct rows matched before `limit`/`offset`. A query no index can narrow stops scanning once it holds
                      `offset + limit` distinct rows, counting `limit` after it is clamped to 10,000, so a value exactly
                      equal to that sum means "at least this many", not a total; raise `limit` for the true count. Any
                      smaller value is exact, as is every value on an index-backed query.
              example:
                count: 1
                data:
                  - date: 2026-03-01
                table: lergdate
                total_unique: 1
        "400":
          description: Causes include an unknown column in `fields` or as a filter key, `*` combined with other field names, an
            empty filter value, a repeated `fields`/`limit`/`offset`, and a non-numeric `limit`/`offset`. The message
            names the offending key and may carry a `did you mean` hint.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LergErrorResponse"
      security:
        - apiToken: []
  /v1/lerg/npanxx/{npa}/{nxx}:
    get:
      tags:
        - LERG NPA-NXX
      summary: All LERG 6 thousands blocks for one NPA-NXX
      description: >-
        Resource-shaped shortcut for the most common LERG 6 lookup. Returns the same rows as `GET
        /v1/lerg/lerg_6?npa=…&nxx=…`, though it reaches them through a different index, so treat the row set as the
        contract and not the performance.


        `npa` and `nxx` must each be exactly three ASCII digits. This route takes `fields`, `limit` and `offset` but no
        filter keys; supply one and it is a `400`, not a silent no-op. Use `queryLerg6` when you need to filter on any
        other column.


        Rows are keyed by `block_id`, whose domain is exactly `A` and `0`-`9`: `A` is the whole 10,000-number code,
        `0`-`9` are its individual thousands blocks. One NPA-NXX often returns both — a code held whole, alongside
        blocks returned to pooling and reassigned — frequently under different OCNs.


        An NPA-NXX with no rows is a `404`, not an empty `data` array: the URL names a resource that does not exist.
      operationId: getNpaNxx
      parameters:
        - name: npa
          in: path
          description: NPA — exactly three ASCII digits.
          required: true
          schema:
            type: string
            pattern: ^[0-9]{3}$
          example: "303"
        - name: nxx
          in: path
          description: NXX — exactly three ASCII digits.
          required: true
          schema:
            type: string
            pattern: ^[0-9]{3}$
          example: "629"
        - name: fields
          in: query
          description: Comma-separated LERG 6 columns to return. Omit it, or pass `*`, for all 39.
          required: false
          schema:
            type: string
          example: block_id,ocn,switch
        - name: limit
          in: query
          description: "Maximum blocks to return. Defaults to 100. Clamped to 10,000: a larger value is accepted and silently
            reduced, never rejected."
          required: false
          schema:
            type: integer
            minimum: 0
          example: 10
        - name: offset
          in: query
          description: Blocks to skip for pagination. Defaults to 0.
          required: false
          schema:
            type: integer
            minimum: 0
          example: 0
      responses:
        "200":
          description: Every thousands block for this NPA-NXX.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/NpaNxxListResponse"
              example:
                count: 2
                data:
                  - block_id: A
                    ocn: "6529"
                    switch: DNVRCOMADS0
                  - block_id: "0"
                    ocn: "0325"
                    switch: DNVRCOCPDS0
                limit: 100
                npa: 303
                nxx: "629"
                offset: 0
                table: lerg_6
                total_unique: 2
        "400":
          description: Causes include `npa` or `nxx` not being exactly three ASCII digits, a filter key this route does not
            accept, and a non-numeric `limit`/`offset`.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LergErrorResponse"
        "404":
          description: No LERG 6 rows exist for this NPA-NXX.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LergErrorResponse"
      security:
        - apiToken: []
  /v1/lerg/npanxx/{npa}/{nxx}/{block_id}:
    get:
      tags:
        - LERG NPA-NXX
      summary: One LERG 6 thousands block
      description: >-
        Returns the single LERG 6 record for one NPA-NXX thousands block, unwrapped — a bare object, not a `data[]`
        envelope. That response-shape difference is why this is not a drop-in replacement for `queryLerg6` with the same
        filters.


        This route takes `fields` but no filter keys. `limit` and `offset` are still validated — `?limit=abc` is a `400`
        — and then ignored, because the response is always at most one record.
      operationId: getNpaNxxBlock
      parameters:
        - name: npa
          in: path
          description: NPA — exactly three ASCII digits.
          required: true
          schema:
            type: string
            pattern: ^[0-9]{3}$
          example: "303"
        - name: nxx
          in: path
          description: NXX — exactly three ASCII digits.
          required: true
          schema:
            type: string
            pattern: ^[0-9]{3}$
          example: "629"
        - name: block_id
          in: path
          description: 'Thousands block. The domain is exactly `A` and `0`-`9`, nothing else: `A` is the whole 10,000-number code
            (the "A block"), and `0`-`9` are its individual thousands blocks. A code can be held whole as `A`, or parts
            of its `0`-`9` range can be returned to pooling and reassigned, so one NPA-NXX often has both an `A` row and
            digit rows, frequently under different OCNs.'
          required: true
          schema:
            type: string
            pattern: ^[0-9A]$
          example: A
        - name: fields
          in: query
          description: Comma-separated LERG 6 columns to return. Omit it, or pass `*`, for all 39.
          required: false
          schema:
            type: string
          example: ocn,switch
        - name: limit
          in: query
          description: "Accepted and validated, then ignored: the response is a single record."
          required: false
          schema:
            type: integer
            minimum: 0
        - name: offset
          in: query
          description: "Accepted and validated, then ignored: the response is a single record."
          required: false
          schema:
            type: integer
            minimum: 0
      responses:
        "200":
          description: The LERG 6 record for this thousands block, projected to `fields`.
          content:
            application/json:
              schema:
                type: object
              example:
                ocn: "6529"
                switch: DNVRCOMADS0
        "400":
          description: Causes include `npa`/`nxx` not being three ASCII digits, `block_id` not being a single digit or `A`, a
            filter key this route does not accept, and a non-numeric `limit`/`offset`.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LergErrorResponse"
        "404":
          description: No LERG 6 row exists for this NPA-NXX and thousands block.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LergErrorResponse"
      security:
        - apiToken: []
  /v1/lerg/query:
    post:
      tags:
        - LERG Joins
      summary: Query with rich filter operators and an optional join
      description: >-
        The escape hatch from the GET routes. Use it when you need an operator other than equality — `ne`, `gt`, `gte`,
        `lt`, `lte`, `like`, `in`, `notin`, `isnull`, `isnotnull` — or when you need to join one LERG table to another
        (`inner`, `left`, `right`).

                For plain exact-match filtering prefer the GET routes: they are cacheable and the per-table path items give you named parameters. Prefer `queryTandem` for switch-to-tandem lookups, which are already pre-joined.

                `limit` is clamped to 10000 here: a larger value is accepted and silently reduced, never rejected.

                **Unlike the GET routes, an unknown `filters[].field` is not an error.** For ten of the eleven operators it matches no row, so the call returns `200` with an empty `data`. `isnull` is the exception: an absent column reads as null, so a mistyped field matches **every** row and returns a full page. Either way a typo is silent — check the column against `getTableSchema` rather than trusting the status.

                **Error bodies vary on this route.** Only a request that parses and validates against the schema reaches the handler, so only the handler's own failures carry the JSON `ErrorResponse`; anything the request-body extractor rejects comes back as `text/plain`. See the individual responses.
      operationId: complexQuery
      requestBody:
        description: Table, projection, filters, pagination and an optional join.
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/ComplexQueryRequest"
            example:
              fields:
                - npa
                - nxx
                - ocn
                - loc_name
              filters:
                - field: npa
                  operator: in
                  value:
                    - 303
                    - 720
                - field: loc_name
                  operator: like
                  value: DENVER%
              join:
                fields:
                  - ocn_name
                join_type: inner
                on:
                  - left_field: ocn
                    right_field: ocn_num
                table: lerg_1
              limit: 10
              offset: 0
              table: lerg_6
        required: true
      responses:
        "200":
          description: Envelope with `table`, `count`, `data[]` and `joined_with` (the joined table name, or null).
          content:
            application/json:
              schema: {}
              example:
                count: 2
                data:
                  - loc_name: DENVER
                    npa: 303
                    nxx: "629"
                    ocn: "6529"
                    ocn_name: AT&T MOBILITY
                  - loc_name: DENVER
                    npa: 720
                    nxx: "708"
                    ocn: "6529"
                    ocn_name: AT&T MOBILITY
                joined_with: lerg_1
                table: lerg_6
        "400":
          description: Two different bodies. `application/json` with the usual `ErrorResponse` when the handler rejects the
            request — causes include an unknown join type and a join whose columns do not exist on both tables.
            `text/plain` when the body is not valid JSON at all, which the extractor rejects before the handler runs.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LergErrorResponse"
            text/plain:
              schema:
                type: string
        "404":
          description: No such table.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LergErrorResponse"
        "415":
          description: "The request had no `Content-Type`, or one that is not `application/json`. Refused by the request-body
            extractor before anything is read, with a fixed `text/plain` body. Set `Content-Type: application/json`."
          content:
            text/plain:
              schema:
                type: string
        "422":
          description: The body is valid JSON but does not fit the schema — causes include an unknown `filters[].operator` and a
            missing `table`. Rejected by the request-body extractor, so the body is `text/plain` describing the
            offending field, never an `ErrorResponse`.
          content:
            text/plain:
              schema:
                type: string
      security:
        - apiToken: []
  /v1/lerg/tables:
    get:
      tags:
        - LERG Metadata
      summary: List every LERG table with its columns and row count
      description: >-
        Returns all 27 tables, each with `name`, `display_name`, `record_count` and the full `fields[]` column list.
        This is the discovery call for a client that does not already know the table names.

                A generated client rarely needs it: the 27 concrete path items in this document already name every table and column. Reach for `getTableInfo` when you want one table, or `getTableSchema` when you want its columns without the row count.
      operationId: listTables
      responses:
        "200":
          description: Array of table descriptors.
          content:
            application/json:
              schema: {}
              example:
                - display_name: LERG 1
                  fields:
                    - data_type: string
                      display_name: OCN Number
                      name: ocn_num
                      nullable: false
                    - data_type: string
                      display_name: OCN Name
                      name: ocn_name
                      nullable: false
                  name: lerg_1
                  record_count: 4312
                - display_name: LERG 6
                  fields:
                    - data_type: integer
                      display_name: NPA
                      name: npa
                      nullable: false
                    - data_type: string
                      display_name: NXX
                      name: nxx
                      nullable: false
                  name: lerg_6
                  record_count: 1547392
      security:
        - apiToken: []
  /v1/lerg/tables/{table_name}:
    get:
      tags:
        - LERG Metadata
      summary: Metadata and row count for one LERG table
      description: Returns `name`, `display_name`, `record_count` and the full `fields[]` column list for one table. Use it
        over `getTableSchema` when you need the row count too, and over `listTables` when you already know which table
        you want.
      operationId: getTableInfo
      parameters:
        - name: table_name
          in: path
          description: One of the 27 LERG tables.
          required: true
          schema:
            type: string
          example: lerg_6
      responses:
        "200":
          description: Table descriptor with columns and row count.
          content:
            application/json:
              schema: {}
              example:
                display_name: LERG 6
                fields:
                  - data_type: integer
                    description: Numbering Plan Area, the three-digit area code.
                    display_name: NPA
                    name: npa
                    nullable: false
                  - data_type: string
                    description: Central office code, the three digits following the area code, served as text because it is a code, not a
                      number.
                    display_name: NXX
                    name: nxx
                    nullable: false
                  - data_type: string
                    description: Operating Company Number of the company that holds this assignment.
                    display_name: OCN
                    name: ocn
                    nullable: false
                name: lerg_6
                record_count: 1547392
        "404":
          description: No such table.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LergErrorResponse"
      security:
        - apiToken: []
  /v1/lerg/tables/{table_name}/schema:
    get:
      tags:
        - LERG Metadata
      summary: Column definitions for one LERG table
      description: >-
        Returns `table`, `display_name` and a `fields[]` of column name, display name, declared data type and
        nullability. This is the authoritative list of filter keys and `fields` values a table accepts.


        Prefer the concrete per-table path item (for example `queryLerg6`) when you are generating a typed call — it
        already carries these columns as named query parameters. Call this at runtime only when the table is chosen
        dynamically. Use `getTableInfo` instead if you also want the row count.
      operationId: getTableSchema
      parameters:
        - name: table_name
          in: path
          description: One of the 27 LERG tables.
          required: true
          schema:
            type: string
          example: lerg_6
      responses:
        "200":
          description: "Table schema: `table`, `display_name`, `fields[]`."
          content:
            application/json:
              schema: {}
              example:
                display_name: LERG 6
                fields:
                  - data_type: integer
                    description: Numbering Plan Area, the three-digit area code.
                    display_name: NPA
                    name: npa
                    nullable: false
                  - data_type: string
                    description: Central office code, the three digits following the area code, served as text because it is a code, not a
                      number.
                    display_name: NXX
                    name: nxx
                    nullable: false
                  - data_type: string
                    description: Operating Company Number of the company that holds this assignment.
                    display_name: OCN
                    name: ocn
                    nullable: false
                table: lerg_6
        "404":
          description: No such table.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LergErrorResponse"
      security:
        - apiToken: []
  /v1/lerg/tandem:
    get:
      tags:
        - LERG Joins
      summary: Query tandem switch relationships
      description: >-
        Pre-joined queries across LERG tables that resolve tandem switch relationships, returning carrier, LATA, switch
        and tandem for each matched record. Served from CloudSQL, not the in-memory store, so this is the one REST route
        whose latency depends on the database.

                At least one search parameter is required, and the first one present wins in this order: `npa`+`nxx`, `switch`, `tandem`, `name`. Use it instead of joining `lerg_6` to `lerg_7` yourself through `complexQuery`.

                **This route's failures carry no body.** Unlike every other REST route here it answers with a bare status code, so do not try to parse an `ErrorResponse` from a 400 or a 500.
      operationId: queryTandem
      parameters:
        - name: npa
          in: query
          description: NPA (area code). Requires `nxx` as well.
          required: false
          schema:
            type: string
          example: "303"
        - name: nxx
          in: query
          description: NXX (exchange). Requires `npa` as well.
          required: false
          schema:
            type: string
          example: "629"
        - name: switch
          in: query
          description: Switch CLLI code — all tandems this switch homes on.
          required: false
          schema:
            type: string
          example: DNVRCOMADS0
        - name: tandem
          in: query
          description: Tandem CLLI code — reverse lookup of every switch routing through it.
          required: false
          schema:
            type: string
          example: DNVRCO2630T
        - name: name
          in: query
          description: Carrier name pattern. `%` and `*` both work as the wildcard.
          required: false
          schema:
            type: string
          example: BANDWIDTH%
        - name: limit
          in: query
          description: SQL `LIMIT`, default 100. Passed through unclamped.
          required: false
          schema:
            type: integer
            format: int32
            minimum: 0
          example: 100
        - name: offset
          in: query
          description: SQL `OFFSET`, default 0.
          required: false
          schema:
            type: integer
            format: int32
            minimum: 0
          example: 0
      responses:
        "200":
          description: Matched records plus a `query` block echoing the resolved query type and pagination.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/TandemResponse"
              example:
                count: 1
                query:
                  limit: 100
                  offset: 0
                  query_type: npa_nxx
                records:
                  - lata: "656"
                    lata_name: DENVER
                    npa: "303"
                    nxx: "629"
                    ocn: "6529"
                    ocn_name: AT&T MOBILITY
                    state: CO
                    switch: DNVRCOMADS0
                    tandem: DNVRCO2630T
                    tandem_ocn: "9533"
                    tandem_ocn_name: CENTURYLINK
        "400":
          description: "**Empty body.** This handler returns a bare status code, not the `ErrorResponse` the in-memory routes
            send, so there is nothing to parse. Raised when no usable search parameter was supplied — including `nxx` on
            its own, since the NPA-NXX branch needs both. A malformed `limit`/`offset` is also a 400, but from the query
            extractor, with a short `text/plain` body."
        "500":
          description: "**Empty body.** Any CloudSQL failure — this is the one REST route backed by the database rather than the
            in-memory store, so it can fail in ways the others cannot."
      security:
        - apiToken: []
  /v1/lerg/{table_name}:
    get:
      tags:
        - LERG
      summary: Query any LERG table with query-string filters
      description: >-
        Query any of the 27 LERG tables. Projection, filters and pagination all travel in the query string, so an
        ordinary HTTP client builds the URL and values are percent-encoded normally.

                Every query-string key other than `fields`, `limit` and `offset` is read as a filter on the column of that name. Filters are exact-match and combined with AND; repeating a key means IN, so `?npa=303&npa=720` matches either NPA. For any other operator (`like`, `gt`, `isnull`, …) use `complexQuery`.

                A comma inside a filter value is **not** a separator — only `fields` is comma-separated. `?npa=303,720` looks for the literal value `303,720`, matches nothing, and returns 200 with an empty `data`. Repeat the key instead: `?npa=303&npa=720`.

                **Generating a call? Use the concrete per-table entry instead.** This item takes `table_name` as an opaque string and cannot enumerate that table's columns. The 27 sibling items (`/v1/lerg/lerg_6`, `/v1/lerg/lerg_1`, …) describe exactly the same routes and list every column as a typed, named parameter. This generic item exists for callers that pick the table at runtime.

                `limit` is clamped to 10,000 rather than rejected: a larger value is accepted and silently reduced. Use `GET /v1/lerg/tables/{table_name}` to list a table's valid columns.
      operationId: queryTable
      parameters:
        - name: table_name
          in: path
          description: One of the 27 LERG tables.
          required: true
          schema:
            type: string
          example: lerg_6
        - name: fields
          in: query
          description: Comma-separated columns to return. Omit it, or pass `*`, for every column. `*` cannot be combined with
            other names.
          required: false
          schema:
            type: string
          example: npa,nxx,ocn,loc_name,switch
        - name: limit
          in: query
          description: "Page size, default 100. Clamped to 10,000: a larger value is accepted and silently reduced, never rejected."
          required: false
          schema:
            type: integer
            minimum: 0
          example: 10
        - name: offset
          in: query
          description: "Rows to skip for pagination, default 0. Not capped: a ceiling here would make paging through a table
            impossible. On a query no index can narrow, `offset` counts towards the scan bound of `offset + limit`
            distinct rows, so a deep page costs the rows it skips."
          required: false
          schema:
            type: integer
            minimum: 0
          example: 0
      responses:
        "200":
          description: >-
            Envelope with `table`, `count`, `total_unique` and `data[]`, one object per row projected to `fields`.


            A query no index can narrow stops scanning once it holds `offset + limit` distinct rows, so a `total_unique`
            exactly equal to `offset + limit` means "at least this many" rather than a total; raise `limit` for the true
            count. Any smaller value is exact, as is every value on an index-backed query.
          content:
            application/json:
              schema: {}
              example:
                count: 2
                data:
                  - loc_name: DENVER
                    npa: 303
                    nxx: "629"
                    ocn: "6529"
                    switch: DNVRCOMADS0
                  - loc_name: DENVER
                    npa: 303
                    nxx: "629"
                    ocn: "6529"
                    switch: DNVRCOMADS1
                table: lerg_6
                total_unique: 2
        "400":
          description: Causes include an unknown column in `fields` or as a filter key, `*` combined with other field names, an
            empty filter value, a repeated `fields`/`limit`/`offset`, and a non-numeric `limit`/`offset`. The message
            names the offending key and may carry a `did you mean` hint.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LergErrorResponse"
        "404":
          description: No such table. Resolved before the query string is parsed, so `/lerg_99?limit=abc` reports the missing
            table rather than the unparseable `limit`, matching the deprecated alias.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LergErrorResponse"
      security:
        - apiToken: []
  /v1/telique/cic/{crn}/{ani}/{lata}:
    get:
      operationId: lookupCic
      tags:
        - RouteLink
      summary: Look up the Carrier Identification Code for a toll-free call
      description: |
        Interprets the Call Processing Record (CPR) for the given toll-free
        number (CRN) using the caller's ANI and LATA to walk the decision
        tree, returning the routed carrier and optional Network Management
        Class (NMC).

        **Plain text response** (default):
        - When no NMC is present: the 4-digit zero-padded carrier code
          (e.g. `0288`).
        - When an NMC is present: a compact JSON blob with the unpadded
          integer carrier and NMC (e.g. `{"carrier":288,"networkmanagementclass":14}`).

        If the CRN is not found, the response is `0000` with HTTP 200 (for
        compatibility with legacy cicdip clients).
      parameters:
        - $ref: "#/components/parameters/crn"
        - $ref: "#/components/parameters/ani"
        - $ref: "#/components/parameters/lata"
        - $ref: "#/components/parameters/format"
      responses:
        "200":
          description: Successful CIC lookup
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CicResponse"
              example:
                carrier: "0288"
                networkmanagementclass: 14
                timestamp: 2026-04-04T14:32:15.123456Z
            text/plain:
              schema:
                type: string
              examples:
                withoutNmc:
                  summary: No NMC present
                  value: "0288"
                withNmc:
                  summary: NMC present (carrier emitted as unpadded integer)
                  value: '{"carrier":288,"networkmanagementclass":14}'
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/RateLimited"
        "500":
          $ref: "#/components/responses/InternalError"
        "503":
          $ref: "#/components/responses/ServiceUnavailable"
  /v1/telique/cicror/{crn}/{ani}/{lata}:
    get:
      operationId: lookupCicRor
      tags:
        - RouteLink
      summary: Look up both the CIC and Responsible Organization for a toll-free call
      description: |
        Combines a CIC lookup (CPR interpretation) with the CRN's Responsible
        Organization. Useful when the caller needs both routing and ownership
        data in a single request.

        **Plain text response** (default): `{carrier};{ror}` (e.g. `0288;ATX01`).

        If the CRN is not found, the response is `0000;` with HTTP 200 (for
        compatibility with legacy cicdip clients).
      parameters:
        - $ref: "#/components/parameters/crn"
        - $ref: "#/components/parameters/ani"
        - $ref: "#/components/parameters/lata"
        - $ref: "#/components/parameters/format"
      responses:
        "200":
          description: Successful CIC + ROR lookup
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CicRorResponse"
              example:
                carrier: "0288"
                ror: ATX01
                timestamp: 2026-04-04T14:32:15.123456Z
            text/plain:
              schema:
                type: string
              example: 0288;ATX01
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/RateLimited"
        "500":
          $ref: "#/components/responses/InternalError"
        "503":
          $ref: "#/components/responses/ServiceUnavailable"
  /v1/telique/ror/{crn}:
    get:
      operationId: lookupRor
      tags:
        - RouteLink
      summary: Look up the Responsible Organization for a toll-free number
      description: |
        Returns the ROR (Responsible Organization) code assigned to the given
        toll-free number. Does not require ANI or LATA since no CPR
        interpretation is performed.

        **Plain text response** (default): the ROR code (e.g. `ATX01`).

        If the CRN is not found, the response is an empty string with HTTP 200
        (for compatibility with legacy cicdip clients).
      parameters:
        - name: crn
          in: path
          required: true
          description: 10-digit toll-free number (digits only)
          schema:
            type: string
            pattern: ^\d{10}$
            example: "8005551234"
        - $ref: "#/components/parameters/format"
      responses:
        "200":
          description: Successful ROR lookup
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/RorResponse"
              example:
                ror: ATX01
                timestamp: 2026-04-04T14:32:15.123456Z
            text/plain:
              schema:
                type: string
              example: ATX01
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/RateLimited"
        "503":
          $ref: "#/components/responses/ServiceUnavailable"
  /v1/telique/ror/{ror}/tfns:
    get:
      operationId: lookupTfnsByRor
      tags:
        - RouteLink
      summary: List toll-free numbers assigned to a Responsible Organization
      description: |
        Returns a paginated list of toll-free numbers (CRNs) that belong to
        the given ROR. Results are paginated with `limit` and `offset` query
        parameters.

        **Plain text response** (default): header lines followed by one TFN
        per line.
      parameters:
        - $ref: "#/components/parameters/ror"
        - $ref: "#/components/parameters/format"
        - $ref: "#/components/parameters/limit"
        - $ref: "#/components/parameters/offset"
      responses:
        "200":
          description: Successful TFN list
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/TfnsByRorResponse"
              example:
                ror: ATX01
                total_count: 1814973
                tfns:
                  - "8002257793"
                  - "8003216540"
                  - "8004417890"
                  - "8005029311"
                  - "8006183472"
                limit: 5
                offset: 0
                timestamp: 2026-04-04T14:32:15.123456Z
            text/plain:
              schema:
                type: string
              example: |
                ROR: ATX01
                Total: 1814973
                Showing: 1-5

                8002257793
                8003216540
                8004417890
                8005029311
                8006183472
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/RateLimited"
        "503":
          $ref: "#/components/responses/ServiceUnavailable"
  /v1/telique/ror/{ror}/cprs:
    get:
      operationId: lookupCprsByRor
      tags:
        - RouteLink
      summary: List Call Processing Records assigned to a Responsible Organization
      description: |
        Returns a paginated list of template CRN identifiers whose CPRs belong
        to the given ROR. Template CRNs start with leading zeros
        (e.g. `0000350718`). Paginated with `limit` and `offset`.

        **Plain text response** (default): header lines followed by one
        template CRN per line.
      parameters:
        - $ref: "#/components/parameters/ror"
        - $ref: "#/components/parameters/format"
        - $ref: "#/components/parameters/limit"
        - $ref: "#/components/parameters/offset"
      responses:
        "200":
          description: Successful CPR list
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CprsByRorResponse"
              example:
                ror: ATX01
                total_count: 248132
                cprs:
                  - "0000350718"
                  - "0000350719"
                  - "0000350720"
                limit: 3
                offset: 0
                timestamp: 2026-04-04T14:32:15.123456Z
            text/plain:
              schema:
                type: string
              example: |
                ROR: ATX01
                Total: 248132
                Showing: 1-3

                0000350718
                0000350719
                0000350720
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/RateLimited"
        "503":
          $ref: "#/components/responses/ServiceUnavailable"
  /v1/telique/cpr/{crn}:
    get:
      operationId: dumpCpr
      tags:
        - RouteLink
      summary: Dump the CPR decision tree for a toll-free number or template
      description: |
        Returns the full Call Processing Record for a CRN, including the
        decision tree rendered as human-readable text. Accepts 1–10 digit
        CRNs; shorter values are zero-padded to 10 digits (e.g. `350718` →
        `0000350718`), which is useful for looking up template CPRs directly.

        Set `?expand=true` to recursively resolve and inline any referenced
        template decision trees.

        **Plain text response** (default): metadata header followed by the
        rendered decision tree. If the CRN has no CPR, the response still
        returns HTTP 200 with `CPR: (none)` in the body.
      parameters:
        - name: crn
          in: path
          required: true
          description: 1–10 digit CRN or template ID (digits only). Values shorter than 10 digits are zero-padded.
          schema:
            type: string
            pattern: ^\d{1,10}$
            example: "8002211212"
        - $ref: "#/components/parameters/format"
        - name: expand
          in: query
          required: false
          description: When true, recursively resolves referenced template CPRs and inlines their decision trees.
          schema:
            type: boolean
            default: false
      responses:
        "200":
          description: Successful CPR dump
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CprDumpResponse"
              example:
                crn: "8002211212"
                ror: ATX01
                cpr_sha1: f4fbadea1aed0c596ef3a764b364485ad945af92
                cpr_json:
                  node:
                    type: action
                    values:
                      - template: "0000350718"
                tree_text: |
                  -> Template 0000350718
                timestamp: 2026-04-04T14:32:15.123456Z
            text/plain:
              schema:
                type: string
              example: |
                CRN: 8002211212
                ROR: ATX01
                CPR SHA1: f4fbadea1aed0c596ef3a764b364485ad945af92
                Templates: [350718]
                ======= CPR Decision Tree =======
                -> Template 0000350718
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/RateLimited"
        "503":
          $ref: "#/components/responses/ServiceUnavailable"
components:
  securitySchemes:
    apiToken:
      type: apiKey
      in: header
      name: x-api-token
      description: API token for authentication. Get yours at https://telique.ringer.tel. Anonymous access (no token) is
        rate-limited to 10 requests per minute.
  schemas:
    LrnLookupResponse:
      type: object
      required:
        - phone_number
        - lrn
        - status
        - timestamp
      properties:
        phone_number:
          type: string
          description: Normalized 10-digit phone number
          example: "3036298301"
        lrn:
          type: string
          description: Local Routing Number — the switch serving this number
          example: "7207081999"
        status:
          type: string
          description: Request status
          example: success
        timestamp:
          type: string
          format: date-time
          description: Response timestamp (ISO 8601)
          example: 2026-04-04T23:04:50.391142767Z
        metadata:
          $ref: "#/components/schemas/LrnMetadata"
    LrnMetadata:
      type: object
      description: |
        Routing metadata for the LRN response. For authoritative NPAC port-event
        history (activation timestamp, transaction history), use the LSMS GraphQL
        `subscriptionVersion` query — this REST endpoint only carries the routing
        identifiers needed to dial the number.
      properties:
        spid:
          type: string
          description: Service Provider ID (4 characters)
          example: 567G
        lnp_type:
          type: string
          description: Local Number Portability type
          enum:
            - lspp
            - lisp
            - pool
          example: lspp
    DnoLookupResponse:
      type: object
      required:
        - phone_number
        - is_dno
        - status
        - timestamp
      properties:
        phone_number:
          type: string
          description: Phone number that was checked
          example: "8008291040"
        is_dno:
          type: boolean
          description: Whether the number is on the Do Not Originate list
          example: true
        status:
          type: string
          example: success
        timestamp:
          type: string
          format: date-time
          example: 2026-04-04T23:05:01.706505032Z
        source:
          type: string
          description: Source of the DNO entry (only present when is_dno is true)
          example: ITG
        created_at:
          type: string
          format: date-time
          description: When the DNO entry was created (only present when is_dno is true)
          example: 2022-10-12T07:44:48Z
        matched_pattern:
          type: string
          description: The pattern that matched (3, 6, 7, or 10 digits; only present when is_dno is true)
          example: "8008291040"
    PhoneNumberListResponse:
      type: object
      required:
        - count
        - phone_numbers
        - query
      properties:
        count:
          type: integer
          description: Number of results
          example: 3
        phone_numbers:
          type: array
          items:
            type: string
          description: List of 10-digit phone numbers
          example:
            - "3036298301"
            - "3036298302"
            - "3036298303"
        query:
          $ref: "#/components/schemas/LsmsListQuery"
    SpidListResponse:
      type: object
      required:
        - count
        - spids
        - query
      properties:
        count:
          type: integer
          description: Number of results
          example: 1
        spids:
          type: array
          items:
            type: string
          description: List of 4-character Service Provider IDs
          example:
            - 567G
        query:
          $ref: "#/components/schemas/LsmsListQuery"
    LrnListResponse:
      type: object
      required:
        - count
        - lrns
        - query
      properties:
        count:
          type: integer
          description: Number of results
          example: 2
        lrns:
          type: array
          items:
            type: string
          description: List of 10-digit Local Routing Numbers
          example:
            - "7207081999"
            - "3036298300"
        query:
          $ref: "#/components/schemas/LsmsListQuery"
    LsmsListQuery:
      type: object
      description: The query parameters that were used (echoed back)
      properties:
        lrn:
          type: string
          example: "7207081999"
        spid:
          type: string
          example: 567G
        phone_number:
          type: string
          example: "3036298301"
    ErrorResponse:
      type: object
      description: JSON error envelope returned for all 4xx/5xx responses, including on endpoints whose successful responses
        default to plain text. Fields mirror the service's error struct.
      required:
        - error
        - message
        - code
        - timestamp
      properties:
        error:
          type: string
          description: Machine-readable error code.
          example: INVALID_PHONE_NUMBER
        message:
          type: string
          description: Human-readable detail.
          example: "Invalid phone number format: Expected 10-digit US number or E.164 format."
        code:
          type: integer
          description: HTTP status code, repeated in the body.
          example: 400
        timestamp:
          type: string
          format: date-time
          description: RFC 3339 timestamp of when the error was generated.
          example: 2026-04-04T23:04:50.391142767Z
        details:
          type: object
          description: Optional structured context; omitted when absent.
          additionalProperties: true
    CnamObject:
      type: object
      description: Caller name data
      properties:
        calling_name_status:
          type: string
          description: Whether a caller name is available for this number
          enum:
            - available
            - unavailable
          example: available
        calling_name:
          type: string
          description: The registered caller name (up to 15 characters). Present only when `calling_name_status` is `available`.
          example: WIRELESS CALLER
        presentation_indicator:
          type: string
          description: Whether the caller name is allowed to be displayed
          enum:
            - allowed
            - restricted
          example: allowed
    CallInsight:
      type: object
      description: Robocall Mitigation risk scoring (included when the subscription supports it)
      properties:
        call_treatment:
          type: string
          description: Recommended call treatment action
          enum:
            - ALLOW
            - DENY
            - REVIEW
          example: DENY
        fraud_score:
          type: integer
          description: Risk score from 0 (safe) to 100 (fraudulent)
          minimum: 0
          maximum: 100
          example: 100
        original_calling_name:
          type: string
          description: Original caller name before any modification
          example: Marketing Firm
        propensity:
          type: string
          description: Likelihood the call is unwanted
          enum:
            - very-low
            - low
            - medium
            - high
            - very-high
          example: very-high
        category_id:
          type: string
          description: Call category identifier. Included only when the upstream returns it.
        cv_data:
          type: object
          description: STIR/SHAKEN call-validation data (echoed when submitted in the request)
          properties:
            verstat:
              type: string
              example: TN-Validation-Failed
            attest:
              type: string
              example: C
            ppt:
              type: string
              example: shaken
            origid:
              type: string
              example: 1db966a6-8f30-11e7-bc77-fa163e70349d
    CnamResponse:
      type: object
      description: Response from the simplified CNAM lookup
      required:
        - status
      properties:
        status:
          type: string
          description: Response status
          example: ok
        cnam:
          $ref: "#/components/schemas/CnamObject"
    IdentityResponse:
      type: object
      description: Response from the full identity lookup
      required:
        - status
      properties:
        status:
          type: string
          description: Response status
          example: ok
        cnam:
          $ref: "#/components/schemas/CnamObject"
        call_insight:
          $ref: "#/components/schemas/CallInsight"
        addtl_info:
          type: object
          description: Additional metadata about the lookup. Included only when the upstream returns it.
          properties:
            cnam_type:
              type: string
              description: Source type of CNAM data
            cnam_source:
              type: string
              description: Provider source of CNAM data
    IdentityRequest:
      type: object
      description: Request body for the POST identity lookup
      required:
        - called_party
      properties:
        calling_party:
          type: string
          description: "Originating phone number — the number whose caller name is looked up. Optional: omitting it yields a
            less-useful result."
          pattern: ^(\+?1)?\d{10}$
          example: "5714345400"
        called_party:
          type: string
          description: Destination NANP phone number. Accepts 10 digits, 11 digits with a leading 1, or E.164 with a leading `+1`.
          pattern: ^(\+?1)?\d{10}$
          example: "3034298788"
        call_direction:
          type: string
          description: Direction of the call
          enum:
            - incoming
            - outgoing
          example: incoming
        txn_id:
          type: string
          description: Your transaction ID, echoed back in the response
          example: txn-20260404-002
        client_id:
          type: string
          description: Your client identifier (up to 32 alphanumeric characters)
          maxLength: 32
          example: telique-prod
        verstat:
          type: string
          description: STIR/SHAKEN verification status
          example: TN-Validation-Failed
        attest:
          type: string
          description: STIR/SHAKEN attestation level
          enum:
            - A
            - B
            - C
          example: C
        cv_data:
          type: object
          description: STIR/SHAKEN call-validation data (preserved as-is and forwarded to TransUnion)
          properties:
            verstat:
              type: string
              example: TN-Validation-Failed
            attest:
              type: string
              example: C
            ppt:
              type: string
              example: shaken
            origid:
              type: string
              example: 1db966a6-8f30-11e7-bc77-fa163e70349d
    CnamErrorResponse:
      type: object
      description: Error response
      required:
        - error
        - message
      properties:
        error:
          type: string
          description: Error type
          example: bad request
        message:
          type: string
          description: Human-readable error message
          example: called_party is required
    ComplexQueryRequest:
      type: object
      description: Request body for `complexQuery`.
      required:
        - table
        - filters
      properties:
        fields:
          type: array
          items:
            type: string
          description: Columns to return. Omit for every column.
          example:
            - npa
            - nxx
            - ocn
          nullable: true
        filters:
          type: array
          items:
            $ref: "#/components/schemas/FilterCondition"
          description: Conditions, ANDed together. An empty array matches every row.
        join:
          oneOf:
            - type: "null"
            - $ref: "#/components/schemas/JoinClause"
              description: Optional join to a second table. Joined rows carry a `joined_with` key.
        limit:
          type: integer
          description: |-
            Page size, default 100. Clamped to 10000: a larger value is accepted and
            silently reduced, never rejected.
          example: 10
          minimum: 0
          nullable: true
        offset:
          type: integer
          description: Rows to skip for pagination, default 0.
          minimum: 0
          nullable: true
        table:
          type: string
          description: Table to query, e.g. `lerg_6`. Unknown names are a `404`.
          example: lerg_6
    LergErrorResponse:
      type: object
      description: |-
        The JSON error body returned by the in-memory REST routes.

        Not every failure carries it. Rejections raised by Axum's own extractors
        before a handler runs come back as `text/plain` — the JSON request body on
        `complexQuery`, and the typed `Query`/`Path` extractors on `queryTandem` —
        and `queryTandem`'s own failures are a bare status code with an empty body.
        The GET filter routes are the exception rather than a further case of it:
        their query string is read by this crate's `QueryPairs` extractor, which
        fails as a `LergError` and therefore answers with this body, so a malformed
        query string on `queryTable` is JSON like any other 400 there.

        Each operation's responses say which shape it sends.
      required:
        - error
        - status
      properties:
        error:
          type: string
          description: |-
            Human-readable message. Names the offending key where one exists, and may
            carry a `did you mean` hint for a near-miss column name.
          example: "Bad request: unknown filter(s) for table `lerg_6`: `ncx` (did you mean `nxx`?). Use GET /v1/lerg/tables/lerg_6
            to list valid fields."
        status:
          type: integer
          format: int32
          description: HTTP status code, repeated in the body so a logged payload is self-describing.
          example: 400
          minimum: 0
      example:
        error: "Bad request: unknown filter(s) for table `lerg_6`: `ncx` (did you mean `nxx`?). Use GET /v1/lerg/tables/lerg_6
          to list valid fields."
        status: 400
    FilterCondition:
      type: object
      description: One condition in a `complexQuery` request body.
      required:
        - field
        - operator
        - value
      properties:
        field:
          type: string
          description: |-
            Column to filter on. An unknown column is **not** rejected. For ten of
            the eleven operators it matches nothing, so a typo returns 200 with zero
            rows rather than an error. The exception is `isnull`, which treats an
            absent column as null and therefore matches **every** row — so a typo
            there returns a full page that looks like a real result. Use
            `getTableSchema` if you need the name validated.
          example: npa
        operator:
          $ref: "#/components/schemas/FilterOperator"
        value:
          description: |-
            Value to compare against. Any JSON type — a scalar such as `303` or
            `"DENVER"` for the comparison operators, a JSON array such as
            `[303, 720]` for `in`/`notin`. Ignored by `isnull` and `isnotnull`.
      example:
        field: npa
        operator: in
        value:
          - 303
          - 720
    FilterOperator:
      type: string
      description: Filter operators
      enum:
        - eq
        - ne
        - gt
        - gte
        - lt
        - lte
        - like
        - in
        - notin
        - isnull
        - isnotnull
    JoinClause:
      type: object
      description: A join onto a second LERG table.
      required:
        - table
        - on
      properties:
        fields:
          type: array
          items:
            type: string
          description: Columns to take from the joined table. Omit for every column.
          nullable: true
        join_type:
          type: string
          description: |-
            `inner`, `left` or `right`, case-insensitive. Defaults to `inner`.
            Anything else is a `400`.
          example: inner
          nullable: true
        on:
          type: array
          items:
            $ref: "#/components/schemas/JoinCondition"
          description: Column pairs to join on. All conditions must hold.
        table:
          type: string
          description: Table to join to, e.g. `lerg_1` to resolve an OCN to a carrier name.
          example: lerg_1
    JoinCondition:
      type: object
      description: One column pair in a join.
      required:
        - left_field
        - right_field
      properties:
        left_field:
          type: string
          description: Column on the table named by `ComplexQueryRequest.table`.
          example: ocn
        right_field:
          type: string
          description: Column on the table named by `JoinClause.table`.
          example: ocn_num
    NpaNxxListResponse:
      type: object
      description: |-
        Every LERG 6 thousands block for one NPA-NXX, plus the pagination that
        produced this page. `npa` is a JSON number; `nxx` is a JSON string, because
        it is a code whose leading zero is significant (`007` is not `7`).
      required:
        - table
        - npa
        - nxx
        - count
        - total_unique
        - offset
        - limit
        - data
      properties:
        count:
          type: integer
          description: Rows in `data` — at most `limit`.
          minimum: 0
        data:
          type: array
          items:
            type: object
          description: |-
            One object per thousands block, projected to `fields`. Keys are LERG 6
            column names; values are whatever that column holds.
        limit:
          type: integer
          description: Effective `limit` (100 when the caller omitted it).
          minimum: 0
        npa:
          type: integer
          format: int64
          description: Echo of the `npa` path segment, as a number.
          example: 303
        nxx:
          type: string
          description: Echo of the `nxx` path segment, as the same three-character string.
          example: "629"
        offset:
          type: integer
          description: Effective `offset` (0 when the caller omitted it).
          minimum: 0
        table:
          type: string
          description: Always `lerg_6`; these rows come from the same table as `queryLerg6`.
        total_unique:
          type: integer
          description: Distinct thousands-block rows this NPA-NXX has, before pagination.
          minimum: 0
    QueryInfo:
      type: object
      required:
        - query_type
        - limit
        - offset
      properties:
        limit:
          type: integer
          format: int32
        offset:
          type: integer
          format: int32
        query_type:
          type: string
    TandemRecord:
      type: object
      properties:
        lata:
          type: string
          nullable: true
        lata_name:
          type: string
          nullable: true
        npa:
          type: string
          nullable: true
        nxx:
          type: string
          nullable: true
        ocn:
          type: string
          nullable: true
        ocn_name:
          type: string
          nullable: true
        state:
          type: string
          nullable: true
        switch:
          type: string
          nullable: true
        tandem:
          type: string
          nullable: true
        tandem_ocn:
          type: string
          nullable: true
        tandem_ocn_name:
          type: string
          nullable: true
    TandemResponse:
      type: object
      required:
        - records
        - count
        - query
      properties:
        count:
          type: integer
          minimum: 0
        query:
          $ref: "#/components/schemas/QueryInfo"
        records:
          type: array
          items:
            $ref: "#/components/schemas/TandemRecord"
    RoutelinkErrorResponse:
      type: object
      properties:
        error:
          type: boolean
          example: true
        error_code:
          type: integer
          description: HTTP status code
          example: 400
        error_type:
          type: string
          description: Machine-readable error category
          enum:
            - parse
            - unknowncrn
            - templatemissing
            - interp
            - ratelimit
            - unavailable
            - other
          example: parse
        error_desc:
          type: string
          description: Human-readable error message
          example: "Invalid CRN format: abc"
    CicResponse:
      type: object
      properties:
        carrier:
          type: string
          description: 4-digit Carrier Identification Code (zero-padded)
          example: "0288"
        networkmanagementclass:
          type: integer
          description: Network Management Class (present only when the CPR specifies one)
          example: 14
        timestamp:
          type: string
          format: date-time
          example: 2026-04-04T14:32:15.123456Z
      required:
        - carrier
        - timestamp
    CicRorResponse:
      type: object
      properties:
        carrier:
          type: string
          description: 4-digit Carrier Identification Code (zero-padded)
          example: "0288"
        ror:
          type: string
          description: Responsible Organization code
          example: ATX01
        timestamp:
          type: string
          format: date-time
          example: 2026-04-04T14:32:15.123456Z
      required:
        - carrier
        - ror
        - timestamp
    RorResponse:
      type: object
      properties:
        ror:
          type: string
          description: Responsible Organization code
          example: ATX01
        timestamp:
          type: string
          format: date-time
          example: 2026-04-04T14:32:15.123456Z
      required:
        - ror
        - timestamp
    TfnsByRorResponse:
      type: object
      properties:
        ror:
          type: string
          description: Responsible Organization code
          example: ATX01
        total_count:
          type: integer
          description: Total number of TFNs assigned to this ROR
          example: 1814973
        tfns:
          type: array
          items:
            type: string
          description: List of 10-digit toll-free numbers
        limit:
          type: integer
          description: Requested page size
          example: 1000
        offset:
          type: integer
          description: Number of results skipped
          example: 0
        timestamp:
          type: string
          format: date-time
          example: 2026-04-04T14:32:15.123456Z
      required:
        - ror
        - total_count
        - tfns
        - limit
        - offset
        - timestamp
    CprsByRorResponse:
      type: object
      properties:
        ror:
          type: string
          description: Responsible Organization code
          example: ATX01
        total_count:
          type: integer
          description: Total number of CPR templates for this ROR
          example: 248132
        cprs:
          type: array
          items:
            type: string
          description: List of 10-digit template CRN identifiers
        limit:
          type: integer
          description: Requested page size
          example: 1000
        offset:
          type: integer
          description: Number of results skipped
          example: 0
        timestamp:
          type: string
          format: date-time
          example: 2026-04-04T14:32:15.123456Z
      required:
        - ror
        - total_count
        - cprs
        - limit
        - offset
        - timestamp
    CprDumpResponse:
      type: object
      properties:
        crn:
          type: string
          description: 10-digit CRN (zero-padded)
          example: "8002211212"
        ror:
          type: string
          nullable: true
          description: Responsible Organization code, or null if the CRN has no ROR assigned
          example: ATX01
        cpr_sha1:
          type: string
          nullable: true
          description: SHA-1 hash of the CPR content, or null if the CRN has no CPR
          example: f4fbadea1aed0c596ef3a764b364485ad945af92
        cpr_json:
          type: object
          nullable: true
          description: Raw CPR decision tree as JSON. Omitted from the response when the CRN has no CPR.
        tree_text:
          type: string
          description: Human-readable rendering of the CPR decision tree (empty string if the CRN has no CPR)
          example: |
            -> Template 0000350718
        timestamp:
          type: string
          format: date-time
          example: 2026-04-04T14:32:15.123456Z
      required:
        - crn
        - ror
        - cpr_sha1
        - tree_text
        - timestamp
  parameters:
    crn:
      name: crn
      in: path
      required: true
      description: 10-digit toll-free number (digits only)
      schema:
        type: string
        pattern: ^\d{10}$
        example: "8005551234"
    ani:
      name: ani
      in: path
      required: true
      description: 10-digit caller number / Automatic Number Identification (digits only)
      schema:
        type: string
        pattern: ^\d{10}$
        example: "2125551234"
    lata:
      name: lata
      in: path
      required: true
      description: 3-digit Local Access Transport Area code
      schema:
        type: string
        pattern: ^\d{3}$
        example: "820"
    ror:
      name: ror
      in: path
      required: true
      description: 1–5 character Responsible Organization code (alphanumeric, case-insensitive)
      schema:
        type: string
        pattern: ^[A-Za-z0-9]{1,5}$
        example: ATX01
    format:
      name: format
      in: query
      required: false
      description: Response format. Defaults to plain text.
      schema:
        type: string
        enum:
          - plain
          - json
          - xml
        default: plain
    limit:
      name: limit
      in: query
      required: false
      description: Maximum number of results to return (default 1000, max 10000)
      schema:
        type: integer
        minimum: 1
        maximum: 10000
        default: 1000
    offset:
      name: offset
      in: query
      required: false
      description: Number of results to skip for pagination
      schema:
        type: integer
        minimum: 0
        default: 0
  responses:
    BadRequest:
      description: Invalid request parameters (malformed CRN, ANI, LATA, or ROR)
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/ErrorResponse"
          example:
            error: true
            error_code: 400
            error_type: parse
            error_desc: "Invalid CRN format: abc"
    InternalError:
      description: CPR interpretation failed (malformed routing tree, missing template, or unexpected interpreter error)
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/ErrorResponse"
          example:
            error: true
            error_code: 500
            error_type: interp
            error_desc: CPR interpretation failed
    RateLimited:
      description: Rate limit exceeded
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/ErrorResponse"
          example:
            error: true
            error_code: 429
            error_type: ratelimit
            error_desc: Rate limit exceeded
    ServiceUnavailable:
      description: Data store service is unavailable
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/ErrorResponse"
          example:
            error: true
            error_code: 503
            error_type: unavailable
            error_desc: Data store unavailable
