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

# List store records

> Lists a store's records as resolved views, newest cursor page first. Filter with repeated `filter=field=value` params on any field the store declares; `total` always describes the same filtered population as the page beside it. Sort with `sort_by`/`order`. Paging is cursor-based (`next_cursor`) because the store is browsed while syncs write to it, and an offset page silently repeats or drops rows under concurrent writes. Layers are not included on the list — read a single record with `include=layers` for provenance.



## OpenAPI

````yaml /openapi.json get /data/stores/{store}/records
openapi: 3.1.0
info:
  title: GetDialed API
  version: 0.1.0
servers:
  - url: https://api.getdialed.ai/v1
    description: Production
security: []
paths:
  /data/stores/{store}/records:
    get:
      tags:
        - data-stores
      summary: List store records
      description: >-
        Lists a store's records as resolved views, newest cursor page first.
        Filter with repeated `filter=field=value` params on any field the store
        declares; `total` always describes the same filtered population as the
        page beside it. Sort with `sort_by`/`order`. Paging is cursor-based
        (`next_cursor`) because the store is browsed while syncs write to it,
        and an offset page silently repeats or drops rows under concurrent
        writes. Layers are not included on the list — read a single record with
        `include=layers` for provenance.
      operationId: list_store_records_data_stores__store__records_get
      parameters:
        - name: store
          in: path
          required: true
          schema:
            type: string
            title: Store
        - name: cursor
          in: query
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            title: Cursor
        - name: limit
          in: query
          required: false
          schema:
            type: integer
            maximum: 200
            minimum: 1
            default: 50
            title: Limit
        - name: filter
          in: query
          required: false
          schema:
            anyOf:
              - items:
                  type: string
                type: array
              - type: 'null'
            title: Filter
        - name: sort_by
          in: query
          required: false
          schema:
            $ref: '#/components/schemas/StoreRecordSortBy'
            default: key
        - name: order
          in: query
          required: false
          schema:
            $ref: '#/components/schemas/Order'
            default: asc
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Page_StoreRecordResponse_'
        '400':
          description: Malformed pagination cursor
          content:
            application/json:
              example:
                detail: Invalid cursor
        '401':
          description: Missing or invalid authentication
          content:
            application/json:
              example:
                detail: Authentication required
        '404':
          description: Not found — also returned on cross-tenant access (never 403)
          content:
            application/json:
              example:
                detail: Store not found
        '422':
          description: Validation error (see body for field details)
          content:
            application/json:
              example:
                detail: Validation error
        '429':
          description: Rate limit exceeded — retry after the Retry-After header
          content:
            application/json:
              example:
                detail: Rate limit exceeded
      security:
        - APIKeyHeader: []
        - HTTPBearer: []
components:
  schemas:
    StoreRecordSortBy:
      type: string
      enum:
        - key
        - updated_at
      title: StoreRecordSortBy
      description: >-
        Allowed `sort_by` fields for the records list.


        `key` browses in the store's natural key order; `updated_at` surfaces

        recently-touched records first. An out-of-enum value is rejected 422
        before

        it can reach `.sort()`.
    Order:
      type: string
      enum:
        - asc
        - desc
      title: Order
      description: Sort direction for list endpoints that accept a `sort_by` field.
    Page_StoreRecordResponse_:
      properties:
        items:
          items:
            $ref: '#/components/schemas/StoreRecordResponse'
          type: array
          title: Items
        total:
          anyOf:
            - type: integer
            - type: 'null'
          title: Total
        limit:
          type: integer
          title: Limit
        skip:
          type: integer
          title: Skip
        next_cursor:
          anyOf:
            - type: string
            - type: 'null'
          title: Next Cursor
      type: object
      required:
        - items
        - limit
        - skip
      title: Page[StoreRecordResponse]
    StoreRecordResponse:
      properties:
        key:
          type: string
          title: Key
          description: The record's key, in the store's canonical key format.
        resolved:
          additionalProperties: true
          type: object
          title: Resolved
          description: >-
            The resolved view — one value per field, taken from the
            highest-precedence source asserting it. A field no source asserts is
            absent rather than null.
        layers:
          anyOf:
            - additionalProperties:
                $ref: '#/components/schemas/StoreLayerResponse'
              type: object
            - type: 'null'
          title: Layers
          description: >-
            Each source's own assertions, keyed by source name. Present only
            when `include=layers` was requested.
        resolved_config_version:
          type: integer
          title: Resolved Config Version
          description: >-
            Which precedence version produced this resolved view. A value behind
            the store's current `config_version` means the view is awaiting
            recompute.
        created_at:
          type: string
          format: date-time
          title: Created At
          description: When the record was first written by any source.
        updated_at:
          type: string
          format: date-time
          title: Updated At
          description: When any source last wrote to the record.
      type: object
      required:
        - key
        - resolved
        - resolved_config_version
        - created_at
        - updated_at
      title: StoreRecordResponse
      description: |-
        One record of a store: its resolved view, and optionally its layers.

        `resolved` is the single view computed from the record's layers by your
        precedence. Request `include=layers` to also see each source's own
        assertions and provenance.
      example:
        created_at: '2026-08-01T09:00:00Z'
        key: '+15551234567'
        resolved:
          campaign: Inbound Main
          e164: '+15551234567'
          friendly_name: West Region Main
          status: active
        resolved_config_version: 1
        updated_at: '2026-08-20T12:00:00Z'
    StoreLayerResponse:
      properties:
        data:
          additionalProperties: true
          type: object
          title: Data
          description: >-
            The values this source asserts. A field present here is an assertion
            — including one whose value is null. A field absent is not an
            assertion, and resolution moves on to the next source.
        written_at:
          type: string
          format: date-time
          title: Written At
          description: >-
            When this source last wrote the layer, whether or not the values
            changed. Use it to tell a stale source from a quiet one.
        written_by:
          $ref: '#/components/schemas/LayerWrittenBy'
      type: object
      required:
        - data
        - written_at
        - written_by
      title: StoreLayerResponse
      description: >-
        One source's assertions about one record, with its own provenance.


        Layers are kept side by side rather than overwriting each other, so this
        is

        where the answer to "why is the resolved value what it is" lives:
        whichever

        layer wins a field under your precedence supplied that value.
    LayerWrittenBy:
      properties:
        kind:
          type: string
          enum:
            - flow
            - csv_upload
            - user
            - seed
          title: Kind
        execution_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Execution Id
        definition_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Definition Id
        trigger_type:
          anyOf:
            - type: string
            - type: 'null'
          title: Trigger Type
        record_set_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Record Set Id
        filename:
          anyOf:
            - type: string
            - type: 'null'
          title: Filename
        user_id:
          anyOf:
            - type: string
            - type: 'null'
          title: User Id
        report_folder:
          anyOf:
            - type: string
            - type: 'null'
          title: Report Folder
        report_name:
          anyOf:
            - type: string
            - type: 'null'
          title: Report Name
      additionalProperties: false
      type: object
      required:
        - kind
      title: LayerWrittenBy
      description: >-
        Who or what wrote a layer, and from where.


        `kind` says which door the write came through; the remaining fields are
        the

        detail that door can supply — the flow execution and definition behind a

        scheduled sync, the file and record set behind an upload, the user
        behind a

        manual edit. Unknown keys are refused so provenance never quietly loses
        a

        field it was meant to carry.
  securitySchemes:
    APIKeyHeader:
      type: apiKey
      in: header
      name: X-API-Key
    HTTPBearer:
      type: http
      scheme: bearer
      bearerFormat: JWT

````