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

# Get a store by stable internal ID



## OpenAPI

````yaml /openapi/v1.yaml get /stores/{store_id}
openapi: 3.1.0
info:
  title: Independent Utah DABS API
  version: 1.0.0
  summary: Database-backed product, store, and reported-inventory reads
  description: >
    Version 1 pilot contract. All requests read a locally published database
    revision;

    no public request waits for or triggers Utah DABS. Reported quantities are

    observations, not purchase guarantees. This service is independent and is
    not

    affiliated with or endorsed by Utah DABS. The current local seed contains

    historical inventory fixtures; clients must inspect response warnings and

    coverage metadata.
servers:
  - url: http://127.0.0.1:5185/v1
    description: Local development only; set MINTLIFY_API_BASE_URL before publishing
security: []
tags:
  - name: Products
  - name: Stores
  - name: Metadata
paths:
  /stores/{store_id}:
    get:
      tags:
        - Stores
      summary: Get a store by stable internal ID
      operationId: getStore
      parameters:
        - $ref: '#/components/parameters/StoreIdPath'
        - $ref: '#/components/parameters/IfNoneMatch'
        - $ref: '#/components/parameters/IfModifiedSince'
      responses:
        '200':
          description: Store detail with separate source fields.
          headers:
            ETag:
              $ref: '#/components/headers/ETag'
            Last-Modified:
              $ref: '#/components/headers/LastModified'
            Cache-Control:
              $ref: '#/components/headers/StoreCacheControl'
            X-Publication-Revision:
              $ref: '#/components/headers/PublicationRevision'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StoreResponse'
        '304':
          $ref: '#/components/responses/NotModified'
        '400':
          $ref: '#/components/responses/BadRequest'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/RateLimited'
        '500':
          $ref: '#/components/responses/InternalError'
        '503':
          $ref: '#/components/responses/Unavailable'
components:
  parameters:
    StoreIdPath:
      name: store_id
      in: path
      required: true
      description: Stable API-owned store UUID.
      schema:
        type: string
        format: uuid
    IfNoneMatch:
      name: If-None-Match
      in: header
      description: Strong entity tag from an earlier response.
      schema:
        type: string
    IfModifiedSince:
      name: If-Modified-Since
      in: header
      description: HTTP-date fallback validator. ETag takes precedence.
      schema:
        type: string
  headers:
    ETag:
      description: >-
        Strong validator for the response representation. A new publication may
        retain the validator when this response is unchanged.
      schema:
        type: string
      example: '"v1-018f2fd0-a3d4-7d20-9c11-9482722f6b26-a91c"'
    LastModified:
      description: >-
        Newest relevant publication time in HTTP-date format; not an upstream
        update time.
      schema:
        type: string
      example: Tue, 15 Sep 2026 16:31:00 GMT
    StoreCacheControl:
      schema:
        type: string
      example: public, max-age=300, stale-while-revalidate=86400
    PublicationRevision:
      description: Immutable API publication revision used for this representation.
      schema:
        type: string
        format: uuid
    RetryAfter:
      description: Seconds until retry or an HTTP-date.
      schema:
        type: string
    RequestId:
      description: >-
        Server-generated identifier for correlating a response with private
        operational logs.
      schema:
        type: string
        format: uuid
  schemas:
    StoreResponse:
      type: object
      additionalProperties: false
      required:
        - data
        - meta
      properties:
        data:
          $ref: '#/components/schemas/Store'
        meta:
          $ref: '#/components/schemas/ResourceMeta'
    Store:
      type: object
      additionalProperties: false
      required:
        - id
        - source_ids
        - name
        - address
        - phone
        - contact_links
        - location
        - distance_m
        - access_type
        - regular_hours_available
        - regular_hours
        - directory_presence
        - details_times
        - source_fields
      properties:
        id:
          type: string
          format: uuid
        source_ids:
          $ref: '#/components/schemas/StoreSourceIds'
        name:
          type: string
        address:
          $ref: '#/components/schemas/PostalAddress'
        phone:
          type:
            - string
            - 'null'
          description: E.164 when normalization is verified.
        contact_links:
          $ref: '#/components/schemas/ContactLinks'
        location:
          oneOf:
            - $ref: '#/components/schemas/GeoPoint'
            - type: 'null'
        distance_m:
          type:
            - integer
            - 'null'
          minimum: 0
        access_type:
          $ref: '#/components/schemas/StoreAccessType'
        regular_hours_available:
          type: boolean
        regular_hours:
          oneOf:
            - $ref: '#/components/schemas/RegularStoreHours'
            - type: 'null'
        directory_presence:
          oneOf:
            - $ref: '#/components/schemas/SourcePresence'
            - type: 'null'
        details_times:
          $ref: '#/components/schemas/ObservationTimes'
        source_fields:
          $ref: '#/components/schemas/StoreSourceFields'
    ResourceMeta:
      type: object
      additionalProperties: false
      required:
        - warnings
      properties:
        warnings:
          type: array
          items:
            $ref: '#/components/schemas/Warning'
    Problem:
      type: object
      additionalProperties: false
      required:
        - type
        - title
        - status
        - detail
        - instance
        - code
        - request_id
      properties:
        type:
          type: string
          format: uri
        title:
          type: string
        status:
          type: integer
          minimum: 400
          maximum: 599
        detail:
          type: string
        instance:
          type: string
          format: uri-reference
        code:
          type: string
        request_id:
          type: string
          format: uuid
        invalid_params:
          type: array
          items:
            $ref: '#/components/schemas/InvalidParameter'
    StoreSourceIds:
      type: object
      additionalProperties: false
      required:
        - inventory_store_code
        - directory_id
      properties:
        inventory_store_code:
          oneOf:
            - $ref: '#/components/schemas/StoreInventoryCode'
            - type: 'null'
        directory_id:
          type:
            - string
            - 'null'
    PostalAddress:
      type: object
      additionalProperties: false
      required:
        - line1
        - line2
        - city
        - region
        - postal_code
        - country
      properties:
        line1:
          type: string
        line2:
          type:
            - string
            - 'null'
        city:
          type: string
        region:
          type: string
          examples:
            - UT
        postal_code:
          type: string
        country:
          type: string
          const: US
    ContactLinks:
      type: object
      additionalProperties: false
      required:
        - telephone_uri
        - geo_uri
      properties:
        telephone_uri:
          type:
            - string
            - 'null'
          description: Neutral `tel:` URI, present only when the phone was normalized.
        geo_uri:
          type:
            - string
            - 'null'
          description: Neutral RFC 5870 `geo:` URI derived from published coordinates.
    GeoPoint:
      type: object
      additionalProperties: false
      required:
        - latitude
        - longitude
      properties:
        latitude:
          type: number
          format: double
          minimum: -90
          maximum: 90
        longitude:
          type: number
          format: double
          minimum: -180
          maximum: 180
    StoreAccessType:
      type: string
      enum:
        - consumer_state_store
        - licensee_only
        - package_agency
        - unknown
    RegularStoreHours:
      type: object
      additionalProperties: false
      description: >-
        Regular weekly source hours. Holidays and temporary closures are not
        known.
      required:
        - time_zone
        - normalization_state
        - weekly
        - exceptions_known
        - times
      properties:
        time_zone:
          type: string
          const: America/Denver
        normalization_state:
          type: string
          const: normalized
        weekly:
          type: array
          minItems: 7
          maxItems: 7
          items:
            $ref: '#/components/schemas/StoreHoursDay'
        exceptions_known:
          type: boolean
          const: false
        times:
          $ref: '#/components/schemas/ObservationTimes'
    SourcePresence:
      type: object
      additionalProperties: false
      description: >-
        Presence in complete validated source snapshots. A missing state
        preserves last-known-good data and never implies zero inventory.
        Retirement is review-only.
      required:
        - state
        - reported_in_latest_complete_snapshot
        - consecutive_missing_complete_snapshots
        - last_seen_at
        - first_missing_at
        - last_missing_at
        - reviewed_at
        - missing_does_not_imply_zero_inventory
      properties:
        state:
          type: string
          enum:
            - present
            - suspect_missing
            - retirement_review_required
            - reviewed_retired
        reported_in_latest_complete_snapshot:
          type: boolean
        consecutive_missing_complete_snapshots:
          type: integer
          minimum: 0
        last_seen_at:
          type:
            - string
            - 'null'
          format: date-time
        first_missing_at:
          type:
            - string
            - 'null'
          format: date-time
        last_missing_at:
          type:
            - string
            - 'null'
          format: date-time
        reviewed_at:
          type:
            - string
            - 'null'
          format: date-time
        missing_does_not_imply_zero_inventory:
          type: boolean
          const: true
    ObservationTimes:
      type: object
      additionalProperties: false
      required:
        - source_updated_at
        - retrieved_at
        - published_at
      properties:
        source_updated_at:
          type:
            - string
            - 'null'
          format: date-time
          description: Null when the source supplies no update timestamp.
        retrieved_at:
          type: string
          format: date-time
        published_at:
          type: string
          format: date-time
    StoreSourceFields:
      type: object
      additionalProperties: false
      properties:
        utah_dabs_directory:
          oneOf:
            - $ref: '#/components/schemas/DabsStoreSourceFields'
            - type: 'null'
        utah_dabs_inventory:
          oneOf:
            - $ref: '#/components/schemas/DabsStoreSourceFields'
            - type: 'null'
    Warning:
      type: object
      additionalProperties: false
      description: >-
        Machine-readable data qualification. Current codes include FIXTURE_DATA,
        INVENTORY_COVERAGE_PARTIAL, SOURCE_REFRESH_DELAYED,
        UPSTREAM_PRODUCT_UNAVAILABLE, SOURCE_SCHEMA_QUARANTINED, and
        CATALOG_BATCH_OLD.
      required:
        - code
      properties:
        code:
          type: string
          examples:
            - INVENTORY_COVERAGE_PARTIAL
    InvalidParameter:
      type: object
      additionalProperties: false
      required:
        - name
        - reason
      properties:
        name:
          type: string
        reason:
          type: string
    StoreInventoryCode:
      type: string
      pattern: ^[0-9]{4}$
      examples:
        - '0002'
    StoreHoursDay:
      type: object
      additionalProperties: false
      required:
        - day
        - state
        - intervals
      properties:
        day:
          type: string
          enum:
            - monday
            - tuesday
            - wednesday
            - thursday
            - friday
            - saturday
            - sunday
        state:
          type: string
          enum:
            - open
            - closed
            - unknown
        intervals:
          type: array
          items:
            $ref: '#/components/schemas/StoreHoursInterval'
    DabsStoreSourceFields:
      type: object
      additionalProperties: true
      description: >-
        Raw source strings; keys are stable in v1 but additional source fields
        may be added.
      properties:
        name_raw:
          type:
            - string
            - 'null'
        address1_raw:
          type:
            - string
            - 'null'
        address2_raw:
          type:
            - string
            - 'null'
        city_raw:
          type:
            - string
            - 'null'
        state_raw:
          type:
            - string
            - 'null'
        postal_code_raw:
          type:
            - string
            - 'null'
        phone_raw:
          type:
            - string
            - 'null'
        latitude_raw:
          type:
            - string
            - 'null'
        longitude_raw:
          type:
            - string
            - 'null'
    StoreHoursInterval:
      type: object
      additionalProperties: false
      required:
        - opens
        - closes
      properties:
        opens:
          type: string
          pattern: ^([01][0-9]|2[0-3]):[0-5][0-9]$
        closes:
          type: string
          pattern: ^([01][0-9]|2[0-3]):[0-5][0-9]$
  responses:
    NotModified:
      description: Representation has not changed for the supplied validator.
      headers:
        ETag:
          $ref: '#/components/headers/ETag'
        Cache-Control:
          description: Cache policy for the validated representation.
          schema:
            type: string
        X-Publication-Revision:
          $ref: '#/components/headers/PublicationRevision'
    BadRequest:
      description: Invalid parameters, incompatible scope, or cursor/query mismatch.
      headers:
        Cache-Control:
          schema:
            type: string
          example: no-store
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/Problem'
    NotFound:
      description: Published resource or source mapping not found.
      headers:
        Cache-Control:
          schema:
            type: string
          example: no-store
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/Problem'
    RateLimited:
      description: Public read-rate limit exceeded.
      headers:
        Cache-Control:
          schema:
            type: string
          example: no-store
        Retry-After:
          $ref: '#/components/headers/RetryAfter'
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/Problem'
    InternalError:
      description: >-
        An unexpected server failure. Details are withheld; report the response
        request identifier.
      headers:
        Cache-Control:
          schema:
            type: string
          example: no-store
        X-Request-ID:
          $ref: '#/components/headers/RequestId'
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/Problem'
    Unavailable:
      description: No safe published database revision is currently readable.
      headers:
        Cache-Control:
          schema:
            type: string
          example: no-store
        Retry-After:
          $ref: '#/components/headers/RetryAfter'
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/Problem'

````