curl --request POST \
--url https://api.select.dev/v2/bigquery-connections/{bigquery_connection_id}/actions/update-stream \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'x-tenant-id: <x-tenant-id>' \
--data '
{
"name": "<string>",
"gcp_project_id": "<string>",
"bigquery_dataset_id": "<string>",
"billing_account_id": "<string>",
"service_account": "<string>",
"sync_enabled": true,
"query_sanitization_enabled": true
}
'import requests
url = "https://api.select.dev/v2/bigquery-connections/{bigquery_connection_id}/actions/update-stream"
payload = {
"name": "<string>",
"gcp_project_id": "<string>",
"bigquery_dataset_id": "<string>",
"billing_account_id": "<string>",
"service_account": "<string>",
"sync_enabled": True,
"query_sanitization_enabled": True
}
headers = {
"x-tenant-id": "<x-tenant-id>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'x-tenant-id': '<x-tenant-id>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
name: '<string>',
gcp_project_id: '<string>',
bigquery_dataset_id: '<string>',
billing_account_id: '<string>',
service_account: '<string>',
sync_enabled: true,
query_sanitization_enabled: true
})
};
fetch('https://api.select.dev/v2/bigquery-connections/{bigquery_connection_id}/actions/update-stream', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.select.dev/v2/bigquery-connections/{bigquery_connection_id}/actions/update-stream",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'name' => '<string>',
'gcp_project_id' => '<string>',
'bigquery_dataset_id' => '<string>',
'billing_account_id' => '<string>',
'service_account' => '<string>',
'sync_enabled' => true,
'query_sanitization_enabled' => true
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json",
"x-tenant-id: <x-tenant-id>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.select.dev/v2/bigquery-connections/{bigquery_connection_id}/actions/update-stream"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"gcp_project_id\": \"<string>\",\n \"bigquery_dataset_id\": \"<string>\",\n \"billing_account_id\": \"<string>\",\n \"service_account\": \"<string>\",\n \"sync_enabled\": true,\n \"query_sanitization_enabled\": true\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-tenant-id", "<x-tenant-id>")
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.select.dev/v2/bigquery-connections/{bigquery_connection_id}/actions/update-stream")
.header("x-tenant-id", "<x-tenant-id>")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"gcp_project_id\": \"<string>\",\n \"bigquery_dataset_id\": \"<string>\",\n \"billing_account_id\": \"<string>\",\n \"service_account\": \"<string>\",\n \"sync_enabled\": true,\n \"query_sanitization_enabled\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.select.dev/v2/bigquery-connections/{bigquery_connection_id}/actions/update-stream")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-tenant-id"] = '<x-tenant-id>'
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"<string>\",\n \"gcp_project_id\": \"<string>\",\n \"bigquery_dataset_id\": \"<string>\",\n \"billing_account_id\": \"<string>\",\n \"service_account\": \"<string>\",\n \"sync_enabled\": true,\n \"query_sanitization_enabled\": true\n}"
response = http.request(request)
puts response.read_body{
"id": "connectivity",
"label": "<string>",
"status": "running",
"event": "check",
"message": "<string>",
"docs_link": "<string>"
}{
"title": "<string>",
"status": 123,
"detail": "<string>",
"code": "<string>",
"retryable": true,
"type": "about:blank",
"details": [
{}
]
}{
"title": "<string>",
"status": 123,
"detail": "<string>",
"code": "<string>",
"retryable": true,
"type": "about:blank",
"details": [
{}
]
}{
"title": "<string>",
"status": 123,
"detail": "<string>",
"code": "<string>",
"retryable": true,
"type": "about:blank",
"details": [
{}
]
}{
"title": "<string>",
"status": 123,
"detail": "<string>",
"code": "<string>",
"retryable": true,
"type": "about:blank",
"details": [
{}
]
}{
"title": "<string>",
"status": 123,
"detail": "<string>",
"code": "<string>",
"retryable": true,
"type": "about:blank",
"details": [
{}
]
}{
"title": "<string>",
"status": 123,
"detail": "<string>",
"code": "<string>",
"retryable": true,
"type": "about:blank",
"details": [
{}
]
}{
"title": "<string>",
"status": 123,
"detail": "<string>",
"code": "<string>",
"retryable": true,
"type": "about:blank",
"details": [
{}
]
}{
"title": "<string>",
"status": 123,
"detail": "<string>",
"code": "<string>",
"retryable": true,
"type": "about:blank",
"details": [
{}
]
}{
"title": "<string>",
"status": 123,
"detail": "<string>",
"code": "<string>",
"retryable": true,
"type": "about:blank",
"details": [
{}
]
}{
"title": "<string>",
"status": 123,
"detail": "<string>",
"code": "<string>",
"retryable": true,
"type": "about:blank",
"details": [
{}
]
}{
"title": "<string>",
"status": 123,
"detail": "<string>",
"code": "<string>",
"retryable": true,
"type": "about:blank",
"details": [
{}
]
}{
"title": "<string>",
"status": 123,
"detail": "<string>",
"code": "<string>",
"retryable": true,
"type": "about:blank",
"details": [
{}
]
}{
"title": "<string>",
"status": 123,
"detail": "<string>",
"code": "<string>",
"retryable": true,
"type": "about:blank",
"details": [
{}
]
}Update a BigQuery connection, streamed
curl --request POST \
--url https://api.select.dev/v2/bigquery-connections/{bigquery_connection_id}/actions/update-stream \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'x-tenant-id: <x-tenant-id>' \
--data '
{
"name": "<string>",
"gcp_project_id": "<string>",
"bigquery_dataset_id": "<string>",
"billing_account_id": "<string>",
"service_account": "<string>",
"sync_enabled": true,
"query_sanitization_enabled": true
}
'import requests
url = "https://api.select.dev/v2/bigquery-connections/{bigquery_connection_id}/actions/update-stream"
payload = {
"name": "<string>",
"gcp_project_id": "<string>",
"bigquery_dataset_id": "<string>",
"billing_account_id": "<string>",
"service_account": "<string>",
"sync_enabled": True,
"query_sanitization_enabled": True
}
headers = {
"x-tenant-id": "<x-tenant-id>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'x-tenant-id': '<x-tenant-id>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
name: '<string>',
gcp_project_id: '<string>',
bigquery_dataset_id: '<string>',
billing_account_id: '<string>',
service_account: '<string>',
sync_enabled: true,
query_sanitization_enabled: true
})
};
fetch('https://api.select.dev/v2/bigquery-connections/{bigquery_connection_id}/actions/update-stream', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.select.dev/v2/bigquery-connections/{bigquery_connection_id}/actions/update-stream",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'name' => '<string>',
'gcp_project_id' => '<string>',
'bigquery_dataset_id' => '<string>',
'billing_account_id' => '<string>',
'service_account' => '<string>',
'sync_enabled' => true,
'query_sanitization_enabled' => true
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json",
"x-tenant-id: <x-tenant-id>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.select.dev/v2/bigquery-connections/{bigquery_connection_id}/actions/update-stream"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"gcp_project_id\": \"<string>\",\n \"bigquery_dataset_id\": \"<string>\",\n \"billing_account_id\": \"<string>\",\n \"service_account\": \"<string>\",\n \"sync_enabled\": true,\n \"query_sanitization_enabled\": true\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-tenant-id", "<x-tenant-id>")
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.select.dev/v2/bigquery-connections/{bigquery_connection_id}/actions/update-stream")
.header("x-tenant-id", "<x-tenant-id>")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"gcp_project_id\": \"<string>\",\n \"bigquery_dataset_id\": \"<string>\",\n \"billing_account_id\": \"<string>\",\n \"service_account\": \"<string>\",\n \"sync_enabled\": true,\n \"query_sanitization_enabled\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.select.dev/v2/bigquery-connections/{bigquery_connection_id}/actions/update-stream")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-tenant-id"] = '<x-tenant-id>'
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"<string>\",\n \"gcp_project_id\": \"<string>\",\n \"bigquery_dataset_id\": \"<string>\",\n \"billing_account_id\": \"<string>\",\n \"service_account\": \"<string>\",\n \"sync_enabled\": true,\n \"query_sanitization_enabled\": true\n}"
response = http.request(request)
puts response.read_body{
"id": "connectivity",
"label": "<string>",
"status": "running",
"event": "check",
"message": "<string>",
"docs_link": "<string>"
}{
"title": "<string>",
"status": 123,
"detail": "<string>",
"code": "<string>",
"retryable": true,
"type": "about:blank",
"details": [
{}
]
}{
"title": "<string>",
"status": 123,
"detail": "<string>",
"code": "<string>",
"retryable": true,
"type": "about:blank",
"details": [
{}
]
}{
"title": "<string>",
"status": 123,
"detail": "<string>",
"code": "<string>",
"retryable": true,
"type": "about:blank",
"details": [
{}
]
}{
"title": "<string>",
"status": 123,
"detail": "<string>",
"code": "<string>",
"retryable": true,
"type": "about:blank",
"details": [
{}
]
}{
"title": "<string>",
"status": 123,
"detail": "<string>",
"code": "<string>",
"retryable": true,
"type": "about:blank",
"details": [
{}
]
}{
"title": "<string>",
"status": 123,
"detail": "<string>",
"code": "<string>",
"retryable": true,
"type": "about:blank",
"details": [
{}
]
}{
"title": "<string>",
"status": 123,
"detail": "<string>",
"code": "<string>",
"retryable": true,
"type": "about:blank",
"details": [
{}
]
}{
"title": "<string>",
"status": 123,
"detail": "<string>",
"code": "<string>",
"retryable": true,
"type": "about:blank",
"details": [
{}
]
}{
"title": "<string>",
"status": 123,
"detail": "<string>",
"code": "<string>",
"retryable": true,
"type": "about:blank",
"details": [
{}
]
}{
"title": "<string>",
"status": 123,
"detail": "<string>",
"code": "<string>",
"retryable": true,
"type": "about:blank",
"details": [
{}
]
}{
"title": "<string>",
"status": 123,
"detail": "<string>",
"code": "<string>",
"retryable": true,
"type": "about:blank",
"details": [
{}
]
}{
"title": "<string>",
"status": 123,
"detail": "<string>",
"code": "<string>",
"retryable": true,
"type": "about:blank",
"details": [
{}
]
}{
"title": "<string>",
"status": 123,
"detail": "<string>",
"code": "<string>",
"retryable": true,
"type": "about:blank",
"details": [
{}
]
}Authorizations
Organization API key (sl_…).
Headers
The organization ID the request is scoped to.
Path Parameters
Body
A merge-patch update to an existing BigQuery connection: an omitted
field is left unchanged, and null clears it.
Every field mirrors its BigQueryConnectionCreate counterpart. is_doit
cannot be changed once the connection is added, so it has no counterpart
here.
Display name for the connection, as shown throughout SELECT.
The GCP project to read BigQuery usage and spend from. 6-30 characters, starting with a lowercase letter, made up of lowercase letters, digits and hyphens, and not ending in a hyphen.
^[a-z][a-z0-9-]{4,28}[a-z0-9]$The BigQuery dataset holding the project's billing and pricing exports. Letters, digits and underscores only. Must be omitted on a DoiT-managed connection, and cannot be cleared with null on any other.
^[a-zA-Z0-9_]{1,1024}$The Cloud Billing account the exports belong to, in XXXXXX-XXXXXX-XXXXXX form, case-insensitive. Must be omitted on a DoiT-managed connection, and cannot be cleared with null on any other.
^[0-9A-Fa-f]{6}-[0-9A-Fa-f]{6}-[0-9A-Fa-f]{6}$The GCP service account SELECT impersonates to reach the project, in [email protected] form.
^[a-z][a-z0-9-]{4,28}[a-z0-9]@[a-z][a-z0-9-]{4,28}[a-z0-9]\.iam\.gserviceaccount\.com$Whether SELECT syncs data for this connection.
Whether query text is sanitized before SELECT stores it.
Response
A stream of Server-Sent Events.
- BigQueryConnectionCheckEvent
- DoneEvent[BigQueryConnection]
One check transitioning through its lifecycle, as it happens.
Identifies which check this is.
connectivity, project_access, regions, jobs, billing_export, pricing_export, bucket_write, organization Short human-readable name for the check.
The check's current state.
running, passed, failed, skipped "check"What to change if the check has failed, or why it was skipped. Null otherwise.
Link to the setup documentation covering what the check found. Null when no page addresses it specifically.

