---
title: "Create a query"
method: POST
path: "/datastore/{connection_id}/query"
tags: ["datastore", "query"]
---

# Create a query

`POST /datastore/{connection_id}/query`

## Request

- Base URL: `http://api.unified.to`
- URL: `http://api.unified.to/datastore/{connection_id}/query`
- Auth: API key in header `authorization`

Creates a DatastoreQuery. Provide the unified DatastoreQuery fields in the request body; they are mapped to the provider's API. Returns the created DatastoreQuery.

## Path parameters

- `connection_id` string, required

## Query parameters

- `fields` string[]
- `raw` string

## Request body

- DatastoreQuery
  - `table_id` string
  - `database_id` string
  - `query` DatastoreQueryQuery: What to run: a raw `sql` statement, or a structured query (select, filter, sort, limit/offset, aggregate)
    - `sql` string: Raw SQL – when set, executed directly (table_id optional)
    - `select` string[]
    - `expand` DatastoreQueryQueryExpand
    - `filter` DatastoreQueryQueryFilter
      - `type` 'FILTER' | 'AND' | 'OR', required
      - `filters` DatastoreFilter[]
        - `field` string, required
        - `condition` DatastoreFilterCondition, required
          - `eq` DatastoreFilterConditionEq
            - `string` string
            - `number` number
            - `boolean` boolean
            - `date` string
            - `selection` string[]
            - `is_null` boolean
          - `neq` DatastoreFilterConditionNeq
            - `string` string
            - `number` number
            - `boolean` boolean
            - `date` string
            - `selection` string[]
            - `is_null` boolean
          - `gt` DatastoreFilterConditionGt
            - `string` string
            - `number` number
            - `boolean` boolean
            - `date` string
            - `selection` string[]
            - `is_null` boolean
          - `gte` DatastoreFilterConditionGte
            - `string` string
            - `number` number
            - `boolean` boolean
            - `date` string
            - `selection` string[]
            - `is_null` boolean
          - `lt` DatastoreFilterConditionLt
            - `string` string
            - `number` number
            - `boolean` boolean
            - `date` string
            - `selection` string[]
            - `is_null` boolean
          - `lte` DatastoreFilterConditionLte
            - `string` string
            - `number` number
            - `boolean` boolean
            - `date` string
            - `selection` string[]
            - `is_null` boolean
          - `like` DatastoreFilterConditionLike
            - `string` string
            - `number` number
            - `boolean` boolean
            - `date` string
            - `selection` string[]
            - `is_null` boolean
          - `ilike` DatastoreFilterConditionIlike
            - `string` string
            - `number` number
            - `boolean` boolean
            - `date` string
            - `selection` string[]
            - `is_null` boolean
          - `in` DatastoreFieldValue[]
            - `string` string
            - `number` number
            - `boolean` boolean
            - `date` string
            - `selection` string[]
            - `is_null` boolean
          - `contains` DatastoreFilterConditionContains
            - `string` string
            - `number` number
            - `boolean` boolean
            - `date` string
            - `selection` string[]
            - `is_null` boolean
          - `not_contains` DatastoreFilterConditionNotContains
            - `string` string
            - `number` number
            - `boolean` boolean
            - `date` string
            - `selection` string[]
            - `is_null` boolean
          - `is_null` boolean
          - `is_not_null` boolean
      - `and` DatastoreQueryQueryFilterAnd (unresolved $ref)
      - `or` DatastoreQueryQueryFilterOr (unresolved $ref)
    - `sort_fields` string[]
    - `sort_order` 'asc' | 'desc'
    - `limit` number
    - `offset` number
    - `aggregate` DatastoreQueryQueryAggregate
      - `count` boolean
      - `sum` DatastoreQueryQueryAggregateSum
        - `field` string, required
        - `alias` string
      - `avg` DatastoreQueryQueryAggregateAvg
        - `field` string, required
        - `alias` string
      - `min` DatastoreQueryQueryAggregateMin
        - `field` string, required
        - `alias` string
      - `max` DatastoreQueryQueryAggregateMax
        - `field` string, required
        - `alias` string
      - `group_by` string[]
    - `is_count_only` boolean
  - `response` DatastoreQueryResponse
    - `items` DatastoreRecord[]
      - `id` string
      - `created_at` string, date-time: (ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)
      - `updated_at` string, date-time: (ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)
      - `database_id` string: source Database ID
      - `table_id` string: source Database Table ID
      - `fields` DatastoreRecordFields, required: The record's values, keyed by the table's field (column) names; each value is a typed value object (e.g. { "string": "Acme" } or { "number": 3 })
      - `row_number` number
      - `metadata` DatastoreMetadata[]
        - `id` string: The ID of the custom field definition (from the metadata/metadata endpoint).
        - `slug` string: The integration's API name (key) of an existing custom field. List valid slugs for this object with the metadata/metadata endpoint; unknown slugs are rejected by the integration.
        - `value` unknown
        - `namespace` string
        - `format` 'TEXT' | 'NUMBER' | 'DATE' | 'BOOLEAN' | 'FILE' | 'TEXTAREA' | 'SINGLE_SELECT' | 'MULTIPLE_SELECT' | 'MEASUREMENT' | 'PRICE' | 'YES_NO' | 'CURRENCY' | 'URL': The data type of the custom field, which determines how `value` is formatted.
        - `extra_data` unknown
      - `raw` unknown
    - `aggregates` DatastoreQueryResponseAggregates
      - `count` number
      - `sum` DatastoreQueryResponseAggregatesSum
      - `avg` DatastoreQueryResponseAggregatesAvg
      - `min` DatastoreQueryResponseAggregatesMin
      - `max` DatastoreQueryResponseAggregatesMax
      - `groups` DatastoreQueryResponseAggregatesGroups (unresolved $ref)
    - `total_count` number
  - `metadata` DatastoreMetadata[]
    - `id` string: The ID of the custom field definition (from the metadata/metadata endpoint).
    - `slug` string: The integration's API name (key) of an existing custom field. List valid slugs for this object with the metadata/metadata endpoint; unknown slugs are rejected by the integration.
    - `value` unknown
    - `namespace` string
    - `format` 'TEXT' | 'NUMBER' | 'DATE' | 'BOOLEAN' | 'FILE' | 'TEXTAREA' | 'SINGLE_SELECT' | 'MULTIPLE_SELECT' | 'MEASUREMENT' | 'PRICE' | 'YES_NO' | 'CURRENCY' | 'URL': The data type of the custom field, which determines how `value` is formatted.
    - `extra_data` unknown
  - `raw` unknown

## Response `200`

Successful

- DatastoreQuery
  - `table_id` string
  - `database_id` string
  - `query` DatastoreQueryQuery: What to run: a raw `sql` statement, or a structured query (select, filter, sort, limit/offset, aggregate)
    - `sql` string: Raw SQL – when set, executed directly (table_id optional)
    - `select` string[]
    - `expand` DatastoreQueryQueryExpand
    - `filter` DatastoreQueryQueryFilter
      - `type` 'FILTER' | 'AND' | 'OR', required
      - `filters` DatastoreFilter[]
        - `field` string, required
        - `condition` DatastoreFilterCondition, required
          - `eq` DatastoreFilterConditionEq
            - `string` string
            - `number` number
            - `boolean` boolean
            - `date` string
            - `selection` string[]
            - `is_null` boolean
          - `neq` DatastoreFilterConditionNeq
            - `string` string
            - `number` number
            - `boolean` boolean
            - `date` string
            - `selection` string[]
            - `is_null` boolean
          - `gt` DatastoreFilterConditionGt
            - `string` string
            - `number` number
            - `boolean` boolean
            - `date` string
            - `selection` string[]
            - `is_null` boolean
          - `gte` DatastoreFilterConditionGte
            - `string` string
            - `number` number
            - `boolean` boolean
            - `date` string
            - `selection` string[]
            - `is_null` boolean
          - `lt` DatastoreFilterConditionLt
            - `string` string
            - `number` number
            - `boolean` boolean
            - `date` string
            - `selection` string[]
            - `is_null` boolean
          - `lte` DatastoreFilterConditionLte
            - `string` string
            - `number` number
            - `boolean` boolean
            - `date` string
            - `selection` string[]
            - `is_null` boolean
          - `like` DatastoreFilterConditionLike
            - `string` string
            - `number` number
            - `boolean` boolean
            - `date` string
            - `selection` string[]
            - `is_null` boolean
          - `ilike` DatastoreFilterConditionIlike
            - `string` string
            - `number` number
            - `boolean` boolean
            - `date` string
            - `selection` string[]
            - `is_null` boolean
          - `in` DatastoreFieldValue[]
            - `string` string
            - `number` number
            - `boolean` boolean
            - `date` string
            - `selection` string[]
            - `is_null` boolean
          - `contains` DatastoreFilterConditionContains
            - `string` string
            - `number` number
            - `boolean` boolean
            - `date` string
            - `selection` string[]
            - `is_null` boolean
          - `not_contains` DatastoreFilterConditionNotContains
            - `string` string
            - `number` number
            - `boolean` boolean
            - `date` string
            - `selection` string[]
            - `is_null` boolean
          - `is_null` boolean
          - `is_not_null` boolean
      - `and` DatastoreQueryQueryFilterAnd (unresolved $ref)
      - `or` DatastoreQueryQueryFilterOr (unresolved $ref)
    - `sort_fields` string[]
    - `sort_order` 'asc' | 'desc'
    - `limit` number
    - `offset` number
    - `aggregate` DatastoreQueryQueryAggregate
      - `count` boolean
      - `sum` DatastoreQueryQueryAggregateSum
        - `field` string, required
        - `alias` string
      - `avg` DatastoreQueryQueryAggregateAvg
        - `field` string, required
        - `alias` string
      - `min` DatastoreQueryQueryAggregateMin
        - `field` string, required
        - `alias` string
      - `max` DatastoreQueryQueryAggregateMax
        - `field` string, required
        - `alias` string
      - `group_by` string[]
    - `is_count_only` boolean
  - `response` DatastoreQueryResponse
    - `items` DatastoreRecord[]
      - `id` string
      - `created_at` string, date-time: (ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)
      - `updated_at` string, date-time: (ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)
      - `database_id` string: source Database ID
      - `table_id` string: source Database Table ID
      - `fields` DatastoreRecordFields, required: The record's values, keyed by the table's field (column) names; each value is a typed value object (e.g. { "string": "Acme" } or { "number": 3 })
      - `row_number` number
      - `metadata` DatastoreMetadata[]
        - `id` string: The ID of the custom field definition (from the metadata/metadata endpoint).
        - `slug` string: The integration's API name (key) of an existing custom field. List valid slugs for this object with the metadata/metadata endpoint; unknown slugs are rejected by the integration.
        - `value` unknown
        - `namespace` string
        - `format` 'TEXT' | 'NUMBER' | 'DATE' | 'BOOLEAN' | 'FILE' | 'TEXTAREA' | 'SINGLE_SELECT' | 'MULTIPLE_SELECT' | 'MEASUREMENT' | 'PRICE' | 'YES_NO' | 'CURRENCY' | 'URL': The data type of the custom field, which determines how `value` is formatted.
        - `extra_data` unknown
      - `raw` unknown
    - `aggregates` DatastoreQueryResponseAggregates
      - `count` number
      - `sum` DatastoreQueryResponseAggregatesSum
      - `avg` DatastoreQueryResponseAggregatesAvg
      - `min` DatastoreQueryResponseAggregatesMin
      - `max` DatastoreQueryResponseAggregatesMax
      - `groups` DatastoreQueryResponseAggregatesGroups (unresolved $ref)
    - `total_count` number
  - `metadata` DatastoreMetadata[]
    - `id` string: The ID of the custom field definition (from the metadata/metadata endpoint).
    - `slug` string: The integration's API name (key) of an existing custom field. List valid slugs for this object with the metadata/metadata endpoint; unknown slugs are rejected by the integration.
    - `value` unknown
    - `namespace` string
    - `format` 'TEXT' | 'NUMBER' | 'DATE' | 'BOOLEAN' | 'FILE' | 'TEXTAREA' | 'SINGLE_SELECT' | 'MULTIPLE_SELECT' | 'MEASUREMENT' | 'PRICE' | 'YES_NO' | 'CURRENCY' | 'URL': The data type of the custom field, which determines how `value` is formatted.
    - `extra_data` unknown
  - `raw` unknown

---

[API](https://skmtc.dev/unified/apis/unified-to-api-2.md) · [All operations](https://skmtc.dev/unified/apis/unified-to-api-2/llms.txt) · [OpenAPI document](https://skmtc.dev/unified/apis/unified-to-api-2/revisions/5b7d146e844e?raw)
