Create a query
curl --request POST \
--url https://app.chatobserver.com/api/v2/metrics/client/queries \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: <idempotency-key>' \
--header 'x-metrics-client-audience: <x-metrics-client-audience>' \
--header 'x-metrics-document-reference: <x-metrics-document-reference>' \
--data '
{
"name": "<string>",
"definition": {
"sort": [
{
"fieldId": "<string>"
}
],
"filter": {
"kind": "condition",
"fieldId": "<string>",
"value": "<string>"
},
"connectorKey": "<string>",
"schemaVersion": 2,
"currency": "<string>",
"fields": [
{
"alias": "<string>",
"fieldId": "<string>",
"aggregation": "minimum",
"outputPosition": 1
}
],
"comparison": {
"enabled": false,
"customRange": {
"kind": "absolute",
"start": "<string>",
"end": "<string>"
}
},
"pivot": {
"rowFieldIds": [
"<string>"
],
"columnFieldIds": [
"<string>"
],
"valueFieldIds": [
"<string>"
],
"includeRowTotals": false,
"includeColumnTotals": false
},
"queryType": "<string>",
"timeZone": "<string>",
"pagination": {
"pageSize": 123,
"maximumPages": 123
},
"locale": "<string>",
"accountSelector": {
"kind": "accounts",
"sourceAccountIds": [
"<string>"
]
},
"customFieldVersionIds": [
"<string>"
],
"dateRange": {
"kind": "absolute",
"start": "<string>",
"end": "<string>"
},
"rowLimit": 123,
"sample": {
"enabled": false,
"maximumRows": 123
},
"connectorOptions": {},
"requiredCapabilities": [
"<string>"
],
"parameters": [],
"includeSourceAccount": true
},
"catalogSnapshotIds": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"description": "<string>",
"visibility": "private",
"publish": false
}
'const options = {
method: 'POST',
headers: {
'x-metrics-client-audience': '<x-metrics-client-audience>',
'x-metrics-document-reference': '<x-metrics-document-reference>',
'Idempotency-Key': '<idempotency-key>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
name: '<string>',
definition: {
sort: [{fieldId: '<string>'}],
filter: {kind: 'condition', fieldId: '<string>', value: '<string>'},
connectorKey: '<string>',
schemaVersion: 2,
currency: '<string>',
fields: [
{
alias: '<string>',
fieldId: '<string>',
aggregation: 'minimum',
outputPosition: 1
}
],
comparison: {
enabled: false,
customRange: {kind: 'absolute', start: '<string>', end: '<string>'}
},
pivot: {
rowFieldIds: ['<string>'],
columnFieldIds: ['<string>'],
valueFieldIds: ['<string>'],
includeRowTotals: false,
includeColumnTotals: false
},
queryType: '<string>',
timeZone: '<string>',
pagination: {pageSize: 123, maximumPages: 123},
locale: '<string>',
accountSelector: {kind: 'accounts', sourceAccountIds: ['<string>']},
customFieldVersionIds: ['<string>'],
dateRange: {kind: 'absolute', start: '<string>', end: '<string>'},
rowLimit: 123,
sample: {enabled: false, maximumRows: 123},
connectorOptions: {},
requiredCapabilities: ['<string>'],
parameters: [],
includeSourceAccount: true
},
catalogSnapshotIds: ['3c90c3cc-0d44-4b50-8888-8dd25736052a'],
description: '<string>',
visibility: 'private',
publish: false
})
};
fetch('https://app.chatobserver.com/api/v2/metrics/client/queries', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://app.chatobserver.com/api/v2/metrics/client/queries"
payload = {
"name": "<string>",
"definition": {
"sort": [{ "fieldId": "<string>" }],
"filter": {
"kind": "condition",
"fieldId": "<string>",
"value": "<string>"
},
"connectorKey": "<string>",
"schemaVersion": 2,
"currency": "<string>",
"fields": [
{
"alias": "<string>",
"fieldId": "<string>",
"aggregation": "minimum",
"outputPosition": 1
}
],
"comparison": {
"enabled": False,
"customRange": {
"kind": "absolute",
"start": "<string>",
"end": "<string>"
}
},
"pivot": {
"rowFieldIds": ["<string>"],
"columnFieldIds": ["<string>"],
"valueFieldIds": ["<string>"],
"includeRowTotals": False,
"includeColumnTotals": False
},
"queryType": "<string>",
"timeZone": "<string>",
"pagination": {
"pageSize": 123,
"maximumPages": 123
},
"locale": "<string>",
"accountSelector": {
"kind": "accounts",
"sourceAccountIds": ["<string>"]
},
"customFieldVersionIds": ["<string>"],
"dateRange": {
"kind": "absolute",
"start": "<string>",
"end": "<string>"
},
"rowLimit": 123,
"sample": {
"enabled": False,
"maximumRows": 123
},
"connectorOptions": {},
"requiredCapabilities": ["<string>"],
"parameters": [],
"includeSourceAccount": True
},
"catalogSnapshotIds": ["3c90c3cc-0d44-4b50-8888-8dd25736052a"],
"description": "<string>",
"visibility": "private",
"publish": False
}
headers = {
"x-metrics-client-audience": "<x-metrics-client-audience>",
"x-metrics-document-reference": "<x-metrics-document-reference>",
"Idempotency-Key": "<idempotency-key>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"data": {
"actorId": "<string>",
"canonicalHash": "<string>",
"queryId": "<string>",
"versionId": "<string>",
"versionNumber": 123,
"versionStatus": "draft"
},
"replayed": false
}{
"data": {
"actorId": "<string>",
"canonicalHash": "<string>",
"queryId": "<string>",
"versionId": "<string>",
"versionNumber": 123,
"versionStatus": "draft"
},
"replayed": false
}{
"error": {
"code": "internal",
"fieldPath": [
"<string>"
],
"parameters": {},
"repairActions": [
"<string>"
],
"requestId": "<string>",
"retryable": false,
"retryAfterSeconds": 1
}
}Spreadsheet clients
Create a query
Access document-bound client sessions, queries, schedules, bindings and write claims.
POST
/
api
/
v2
/
metrics
/
client
/
queries
Create a query
curl --request POST \
--url https://app.chatobserver.com/api/v2/metrics/client/queries \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: <idempotency-key>' \
--header 'x-metrics-client-audience: <x-metrics-client-audience>' \
--header 'x-metrics-document-reference: <x-metrics-document-reference>' \
--data '
{
"name": "<string>",
"definition": {
"sort": [
{
"fieldId": "<string>"
}
],
"filter": {
"kind": "condition",
"fieldId": "<string>",
"value": "<string>"
},
"connectorKey": "<string>",
"schemaVersion": 2,
"currency": "<string>",
"fields": [
{
"alias": "<string>",
"fieldId": "<string>",
"aggregation": "minimum",
"outputPosition": 1
}
],
"comparison": {
"enabled": false,
"customRange": {
"kind": "absolute",
"start": "<string>",
"end": "<string>"
}
},
"pivot": {
"rowFieldIds": [
"<string>"
],
"columnFieldIds": [
"<string>"
],
"valueFieldIds": [
"<string>"
],
"includeRowTotals": false,
"includeColumnTotals": false
},
"queryType": "<string>",
"timeZone": "<string>",
"pagination": {
"pageSize": 123,
"maximumPages": 123
},
"locale": "<string>",
"accountSelector": {
"kind": "accounts",
"sourceAccountIds": [
"<string>"
]
},
"customFieldVersionIds": [
"<string>"
],
"dateRange": {
"kind": "absolute",
"start": "<string>",
"end": "<string>"
},
"rowLimit": 123,
"sample": {
"enabled": false,
"maximumRows": 123
},
"connectorOptions": {},
"requiredCapabilities": [
"<string>"
],
"parameters": [],
"includeSourceAccount": true
},
"catalogSnapshotIds": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"description": "<string>",
"visibility": "private",
"publish": false
}
'const options = {
method: 'POST',
headers: {
'x-metrics-client-audience': '<x-metrics-client-audience>',
'x-metrics-document-reference': '<x-metrics-document-reference>',
'Idempotency-Key': '<idempotency-key>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
name: '<string>',
definition: {
sort: [{fieldId: '<string>'}],
filter: {kind: 'condition', fieldId: '<string>', value: '<string>'},
connectorKey: '<string>',
schemaVersion: 2,
currency: '<string>',
fields: [
{
alias: '<string>',
fieldId: '<string>',
aggregation: 'minimum',
outputPosition: 1
}
],
comparison: {
enabled: false,
customRange: {kind: 'absolute', start: '<string>', end: '<string>'}
},
pivot: {
rowFieldIds: ['<string>'],
columnFieldIds: ['<string>'],
valueFieldIds: ['<string>'],
includeRowTotals: false,
includeColumnTotals: false
},
queryType: '<string>',
timeZone: '<string>',
pagination: {pageSize: 123, maximumPages: 123},
locale: '<string>',
accountSelector: {kind: 'accounts', sourceAccountIds: ['<string>']},
customFieldVersionIds: ['<string>'],
dateRange: {kind: 'absolute', start: '<string>', end: '<string>'},
rowLimit: 123,
sample: {enabled: false, maximumRows: 123},
connectorOptions: {},
requiredCapabilities: ['<string>'],
parameters: [],
includeSourceAccount: true
},
catalogSnapshotIds: ['3c90c3cc-0d44-4b50-8888-8dd25736052a'],
description: '<string>',
visibility: 'private',
publish: false
})
};
fetch('https://app.chatobserver.com/api/v2/metrics/client/queries', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://app.chatobserver.com/api/v2/metrics/client/queries"
payload = {
"name": "<string>",
"definition": {
"sort": [{ "fieldId": "<string>" }],
"filter": {
"kind": "condition",
"fieldId": "<string>",
"value": "<string>"
},
"connectorKey": "<string>",
"schemaVersion": 2,
"currency": "<string>",
"fields": [
{
"alias": "<string>",
"fieldId": "<string>",
"aggregation": "minimum",
"outputPosition": 1
}
],
"comparison": {
"enabled": False,
"customRange": {
"kind": "absolute",
"start": "<string>",
"end": "<string>"
}
},
"pivot": {
"rowFieldIds": ["<string>"],
"columnFieldIds": ["<string>"],
"valueFieldIds": ["<string>"],
"includeRowTotals": False,
"includeColumnTotals": False
},
"queryType": "<string>",
"timeZone": "<string>",
"pagination": {
"pageSize": 123,
"maximumPages": 123
},
"locale": "<string>",
"accountSelector": {
"kind": "accounts",
"sourceAccountIds": ["<string>"]
},
"customFieldVersionIds": ["<string>"],
"dateRange": {
"kind": "absolute",
"start": "<string>",
"end": "<string>"
},
"rowLimit": 123,
"sample": {
"enabled": False,
"maximumRows": 123
},
"connectorOptions": {},
"requiredCapabilities": ["<string>"],
"parameters": [],
"includeSourceAccount": True
},
"catalogSnapshotIds": ["3c90c3cc-0d44-4b50-8888-8dd25736052a"],
"description": "<string>",
"visibility": "private",
"publish": False
}
headers = {
"x-metrics-client-audience": "<x-metrics-client-audience>",
"x-metrics-document-reference": "<x-metrics-document-reference>",
"Idempotency-Key": "<idempotency-key>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"data": {
"actorId": "<string>",
"canonicalHash": "<string>",
"queryId": "<string>",
"versionId": "<string>",
"versionNumber": 123,
"versionStatus": "draft"
},
"replayed": false
}{
"data": {
"actorId": "<string>",
"canonicalHash": "<string>",
"queryId": "<string>",
"versionId": "<string>",
"versionNumber": 123,
"versionStatus": "draft"
},
"replayed": false
}{
"error": {
"code": "internal",
"fieldPath": [
"<string>"
],
"parameters": {},
"repairActions": [
"<string>"
],
"requestId": "<string>",
"retryable": false,
"retryAfterSeconds": 1
}
}Required scopes:
client:write.Authorizations
A client session token obtained through the client authorisation challenge flow.
Headers
The audience bound to the authorised client session.
Available options:
chatobserver-metrics-sheets, chatobserver-metrics-excel The document reference hash bound to the client session.
Pattern:
^[a-f0-9]{64}$Unique key for one logical command. Reuse it only when retrying the same request and payload.
Required string length:
16 - 160Pattern:
^[A-Za-z0-9:_-]+$Body
application/json
Required string length:
1 - 150Show child attributes
Show child attributes
Required array length:
1 - 500 elementsMaximum string length:
4000Available options:
private, workspace, restricted