Skip to content

Getting started with the SQL Passthrough API

This page assumes you have already read the Halo Cloud overview and SQL Passthrough API overview.

Prerequisites

To get started with the SQL Passthrough API, you will need:

  • Your Halo Connect subscription key, as supplied by Halo Connect
  • A test environment on which you have installed:
    • A PMS database, as supplied by the PMS
    • Halo Link, as supplied by Halo Connect and installed according to the Halo Link installation instructions for the correct environment for your use case

Using the SQL Passthrough

Staging vs Production

  • Staging is recommended for development and testing, both before and after your integration via Halo Connect goes live on real practices. PMS databases connected to the staging environment should not be in use by real practices.
  • Production should only be used for connecting with real practices using well-tested software.

Halo Link installs in Production by default. See the Halo Link installation documentation for how to install Halo Link in staging.

Base API URL

This is the base API for connecting with the SQL Passthrough API. All endpoints start with this URL.

For example: The full URL for the Get Site Status endpoint is https://api.haloconnect.io/integrator/sites/{siteID}.

API reference

The Halo Connect API has been documented using the OpenAPI Specification.

Query examples

Send a basic immediate query

POST sites/{HaloGUID}/queries/immediate

Request example
{
    "command": {
        "text": "SELECT 1",
        "executionMode": "reader",
        "type": "text",
        "parameters": []
    }
}
Response example
{
    "id": "{queryID}",
    "integratorId": "{integratorID}",
    "siteId": "{haloGUID}",
    "mode": "immediate",
    "status": "successful",
    "maxTimeInQueue": 15000,
    "sqlQuerySize": 46,
    "commandSize": 98,
    "createdAt": "2022-08-24T14:15:22Z",
    "updatedAt": "2022-08-24T14:15:22Z",
    "statusTiming": {
        "initialising": {
        "startTime": "2022-08-24T14:15:22Z",
        "endTime": "2022-08-24T14:15:22Z"
        },
        "executing": {
        "startTime": "2022-08-24T14:15:22Z",
        "endTime": "2022-08-24T14:15:22Z"
        }
    },
    "metrics": {
        "sqlExecutionDuration": 1000
    },
    "result": {
        "rows": 30,
        "size": 25,
        "data": "{resultData}",
        "parameters": [
            {
                "name": "@siteId",
                "direction": "output",
                "type": "BigInt",
                "value": "66",
                "size": 43
            }
        ]
    }
}

Queue a basic async query

POST sites/{HaloGUID}/queries/async

Request example
{
    "command": {
        "text": "SELECT 1",
        "executionMode": "reader",
        "type": "text",
        "parameters": []
    }
}
Response example
{
    "id": "{queryID}",
    "integratorId": "{integratorID}",
    "siteId": "{haloGUID}",
    "mode": "async",
    "status": "initialising",
    "maxTimeInQueue": 900000,
    "sqlQuerySize": 46,
    "commandSize": 98,
    "createdAt": "2019-08-24T14:15:22Z",
    "updatedAt": "2019-08-24T14:15:22Z",
    "statusTiming": {
        "initialising": {
            "startTime": "2019-08-24T14:15:22Z"
        }
    }
}

Check the status of an async query

GET sites/{HaloGUID}/queries/{queryID}

Response example
  • ... indicates nested data that has been left out for clarity. More details can be found in the API reference.
  • The results object currently only appears when status is successful, and contains pagination information for use with the Get Query Results endpoint (used in the next example).
{
    "id": "{queryID}",
    "integratorId": "{integratorID}",
    "siteId": "{haloGUID}",
    "mode": "async",
    "status": "successful",
    "maxTimeInQueue": 900000,
    "sqlQuerySize": 46,
    "commandSize": 98,
    "createdAt": "2019-08-24T14:15:22Z",
    "updatedAt": "2019-08-24T14:15:22Z",
    "statusTiming": { ... },
    "metrics": { ... }
    "result": {
        "rows": 30,
        "size": 25,
        "pages": [ ... ]
    }
}

Retrieve async query results once the query is complete

GET sites/{HaloGUID}/queries/{queryID}/results/{pageNumber}

Response example
{
    "data": "{resultData}",
    "parameters": [
        {
        "name": "@siteId",
        "direction": "output",
        "type": "BigInt",
        "value": "66",
        "size": 43
        }
    ]
}

Prev: SQL Passthrough API overview