openapi: 3.1.0
info:
title: API Reference subpackage_bulkSync subpackage_queryRunner API
version: 1.0.0
servers:
- url: https://app.polytomic.com
tags:
- name: subpackage_queryRunner
paths:
/api/connections/{connection_id}/query:
post:
operationId: run-query
summary: Run Query
description: 'Submits a query for asynchronous execution against the connection.
This endpoint returns immediately with a query task ID. It does not wait for
the query to finish. Poll [`GET /api/queries/{id}`](../../../../api-reference/query-runner/get-query) until `status`
reaches `done` or `failed`.
Only the user who created the query can fetch its results later. Query results
are stored temporarily and may expire; use the `expires` field from the result
endpoint to understand how long they will remain available.'
tags:
- subpackage_queryRunner
parameters:
- name: connection_id
in: path
description: Unique identifier of the connection to run the query against.
required: true
schema:
type: string
format: uuid
- name: query
in: query
description: The query to execute against the connection.
required: false
schema:
type: string
- name: Authorization
in: header
description: Bearer user API key
required: true
schema:
type: string
- name: X-Polytomic-Version
in: header
required: false
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/RunQueryEnvelope'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/RunQueryRequest'
/api/queries/{id}:
get:
operationId: get-query
summary: Get Query Results
description: 'Fetches the latest status for a submitted query and, once complete, returns fields and paginated results.
This endpoint is the second step of the query-runner flow. First call
[`POST /api/connections/{connection_id}/query`](../../../api-reference/query-runner/run-query),
then poll this endpoint with the returned ID.
Results may be paginated across multiple blobs. When that happens, use the
opaque `links.next` and `links.previous` URLs exactly as returned. Do not try to
construct the `page` token yourself.
If the query is still running, the response may include only status metadata.
If the task is complete but the caller is not the same user that created it,
the endpoint returns `404`.'
tags:
- subpackage_queryRunner
parameters:
- name: id
in: path
description: Unique identifier of the query task, as returned by POST /api/connections/{connection_id}/query.
required: true
schema:
type: string
format: uuid
- name: page
in: query
description: Opaque pagination token returned in the links.next or links.previous URL of the previous response.
required: false
schema:
type: string
- name: Authorization
in: header
description: Bearer user API key
required: true
schema:
type: string
- name: X-Polytomic-Version
in: header
required: false
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/QueryResultsEnvelope'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
components:
schemas:
ApiError:
type: object
properties:
key:
type: string
message:
type: string
metadata:
type: object
additionalProperties:
description: Any type
status:
type: integer
title: ApiError
WorkTaskStatus:
type: string
enum:
- created
- running
- done
- failed
title: WorkTaskStatus
QueryResultsEnvelope:
type: object
properties:
data:
$ref: '#/components/schemas/RunQueryResult'
links:
$ref: '#/components/schemas/RunQueryPagination'
title: QueryResultsEnvelope
RunQueryPagination:
type: object
properties:
next:
type: string
description: URL to the next page of results, if available. This may be returned as a host relative path.
previous:
type: string
description: URL to the previous page of results, if available. This may be returned as a host relative path.
title: RunQueryPagination
RunQueryRequest:
type: object
properties: {}
title: RunQueryRequest
RunQueryEnvelope:
type: object
properties:
data:
$ref: '#/components/schemas/RunQueryResult'
title: RunQueryEnvelope
RunQueryResult:
type: object
properties:
count:
type: integer
format: int64
description: The number of rows returned by the query. This will not be returned until the query completes.
error:
type: string
description: Error message if the query failed.
expires:
type: string
description: The time at which the query will expire and be deleted. This will not be returned until the query completes.
fields:
type: array
items:
type: string
description: The names of the fields returned by the query. This will not be returned until the query completes.
id:
type: string
format: uuid
description: The ID of the query task. Poll GET /api/queries/{id} until the task reaches done or failed to retrieve results.
results:
type: array
items:
type: object
additionalProperties:
description: Any type
description: The query results, returned as an array of objects.
status:
$ref: '#/components/schemas/WorkTaskStatus'
title: RunQueryResult
securitySchemes:
bearerUserAPIKey:
type: http
scheme: bearer
description: Bearer user API key
orgScopedAPIKey:
type: http
scheme: basic
description: Basic organization-scoped API key
bearerPartnerKey:
type: http
scheme: bearer
description: Bearer partner API key