UpdateFamily
curl --request PATCH \
--url https://api.siftstack.com/api/v1/families/client_key/{clientKey} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"family": {
"family": {
"isArchived": true,
"clientKey": "<string>"
},
"familyVersion": {
"name": "<string>",
"description": "<string>",
"runQuery": "<string>",
"userNotes": "<string>",
"metadata": [
{
"key": {
"name": "<string>",
"type": "METADATA_KEY_TYPE_UNSPECIFIED",
"archivedDate": "2023-11-07T05:31:56Z",
"isArchived": true
},
"stringValue": "<string>",
"numberValue": 123,
"booleanValue": true,
"archivedDate": "2023-11-07T05:31:56Z",
"isArchived": true
}
],
"sigmaDefaultValues": [
123
]
},
"familyRuns": [
{
"runId": "<string>",
"isExclusion": true,
"rationale": "<string>"
}
],
"familyAlignments": [
{
"familyAlignmentId": "<string>",
"name": "<string>",
"familyAlignmentPoints": [
{
"familyAlignmentPointId": "<string>",
"runId": "<string>"
}
],
"description": "<string>"
}
],
"familyStats": [
{
"familyStat": {
"name": "<string>",
"sampleRate": 123,
"defaultChannelNames": [
"<string>"
],
"description": "<string>"
},
"familyStatExpressions": [
{
"avg": {},
"median": {},
"min": {},
"max": {},
"stdev": {},
"sum": {},
"inputCount": {}
}
],
"familyStatRanges": [
{
"familyAlignmentId": "<string>",
"windowStart": {
"familyAlignmentId": "<string>",
"duration": "<string>"
},
"windowEnd": {
"familyAlignmentId": "<string>",
"duration": "<string>"
}
}
],
"familyStatChannels": [
{
"channelId": "<string>",
"alignmentPointId": "<string>"
}
]
}
]
},
"updateMask": "<string>",
"familyId": "<string>"
}
'import requests
url = "https://api.siftstack.com/api/v1/families/client_key/{clientKey}"
payload = {
"family": {
"family": {
"isArchived": True,
"clientKey": "<string>"
},
"familyVersion": {
"name": "<string>",
"description": "<string>",
"runQuery": "<string>",
"userNotes": "<string>",
"metadata": [
{
"key": {
"name": "<string>",
"type": "METADATA_KEY_TYPE_UNSPECIFIED",
"archivedDate": "2023-11-07T05:31:56Z",
"isArchived": True
},
"stringValue": "<string>",
"numberValue": 123,
"booleanValue": True,
"archivedDate": "2023-11-07T05:31:56Z",
"isArchived": True
}
],
"sigmaDefaultValues": [123]
},
"familyRuns": [
{
"runId": "<string>",
"isExclusion": True,
"rationale": "<string>"
}
],
"familyAlignments": [
{
"familyAlignmentId": "<string>",
"name": "<string>",
"familyAlignmentPoints": [
{
"familyAlignmentPointId": "<string>",
"runId": "<string>"
}
],
"description": "<string>"
}
],
"familyStats": [
{
"familyStat": {
"name": "<string>",
"sampleRate": 123,
"defaultChannelNames": ["<string>"],
"description": "<string>"
},
"familyStatExpressions": [
{
"avg": {},
"median": {},
"min": {},
"max": {},
"stdev": {},
"sum": {},
"inputCount": {}
}
],
"familyStatRanges": [
{
"familyAlignmentId": "<string>",
"windowStart": {
"familyAlignmentId": "<string>",
"duration": "<string>"
},
"windowEnd": {
"familyAlignmentId": "<string>",
"duration": "<string>"
}
}
],
"familyStatChannels": [
{
"channelId": "<string>",
"alignmentPointId": "<string>"
}
]
}
]
},
"updateMask": "<string>",
"familyId": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.siftstack.com/api/v1/families/client_key/{clientKey}"
payload := strings.NewReader("{\n \"family\": {\n \"family\": {\n \"isArchived\": true,\n \"clientKey\": \"<string>\"\n },\n \"familyVersion\": {\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"runQuery\": \"<string>\",\n \"userNotes\": \"<string>\",\n \"metadata\": [\n {\n \"key\": {\n \"name\": \"<string>\",\n \"type\": \"METADATA_KEY_TYPE_UNSPECIFIED\",\n \"archivedDate\": \"2023-11-07T05:31:56Z\",\n \"isArchived\": true\n },\n \"stringValue\": \"<string>\",\n \"numberValue\": 123,\n \"booleanValue\": true,\n \"archivedDate\": \"2023-11-07T05:31:56Z\",\n \"isArchived\": true\n }\n ],\n \"sigmaDefaultValues\": [\n 123\n ]\n },\n \"familyRuns\": [\n {\n \"runId\": \"<string>\",\n \"isExclusion\": true,\n \"rationale\": \"<string>\"\n }\n ],\n \"familyAlignments\": [\n {\n \"familyAlignmentId\": \"<string>\",\n \"name\": \"<string>\",\n \"familyAlignmentPoints\": [\n {\n \"familyAlignmentPointId\": \"<string>\",\n \"runId\": \"<string>\"\n }\n ],\n \"description\": \"<string>\"\n }\n ],\n \"familyStats\": [\n {\n \"familyStat\": {\n \"name\": \"<string>\",\n \"sampleRate\": 123,\n \"defaultChannelNames\": [\n \"<string>\"\n ],\n \"description\": \"<string>\"\n },\n \"familyStatExpressions\": [\n {\n \"avg\": {},\n \"median\": {},\n \"min\": {},\n \"max\": {},\n \"stdev\": {},\n \"sum\": {},\n \"inputCount\": {}\n }\n ],\n \"familyStatRanges\": [\n {\n \"familyAlignmentId\": \"<string>\",\n \"windowStart\": {\n \"familyAlignmentId\": \"<string>\",\n \"duration\": \"<string>\"\n },\n \"windowEnd\": {\n \"familyAlignmentId\": \"<string>\",\n \"duration\": \"<string>\"\n }\n }\n ],\n \"familyStatChannels\": [\n {\n \"channelId\": \"<string>\",\n \"alignmentPointId\": \"<string>\"\n }\n ]\n }\n ]\n },\n \"updateMask\": \"<string>\",\n \"familyId\": \"<string>\"\n}")
req, _ := http.NewRequest("PATCH", url, payload)
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))
}{
"familyVersionId": "<string>",
"family": {
"family": {
"familyId": "<string>",
"currentVersionId": "<string>",
"isArchived": true,
"createdDate": "2023-11-07T05:31:56Z",
"modifiedDate": "2023-11-07T05:31:56Z",
"createdByUserId": "<string>",
"modifiedByUserId": "<string>",
"organizationId": "<string>",
"clientKey": "<string>",
"archivedDate": "2023-11-07T05:31:56Z"
},
"familyVersion": {
"familyVersionId": "<string>",
"familyId": "<string>",
"version": 123,
"name": "<string>",
"changeMessage": "<string>",
"createdDate": "2023-11-07T05:31:56Z",
"modifiedDate": "2023-11-07T05:31:56Z",
"createdByUserId": "<string>",
"modifiedByUserId": "<string>",
"organizationId": "<string>",
"description": "<string>",
"runQuery": "<string>",
"userNotes": "<string>",
"metadata": [
{
"key": {
"name": "<string>",
"type": "METADATA_KEY_TYPE_UNSPECIFIED",
"archivedDate": "2023-11-07T05:31:56Z",
"isArchived": true
},
"stringValue": "<string>",
"numberValue": 123,
"booleanValue": true,
"relationValue": {
"resourceType": "<string>",
"resourceId": "<string>"
},
"archivedDate": "2023-11-07T05:31:56Z",
"isArchived": true
}
],
"sigmaDefaultValues": [
123
]
},
"familyRuns": [
{
"familyRunId": "<string>",
"familyVersionId": "<string>",
"runId": "<string>",
"addedDate": "2023-11-07T05:31:56Z",
"addedByUserId": "<string>",
"addedInVersionId": "<string>",
"isExclusion": true,
"rationale": "<string>"
}
],
"familyAlignments": [
{
"familyAlignmentId": "<string>",
"familyVersionId": "<string>",
"name": "<string>",
"familyAlignmentPoints": [
{
"familyAlignmentPointId": "<string>",
"familyRunId": "<string>",
"runId": "<string>",
"familyAlignmentId": "<string>",
"run": {
"bound": "TIME_RANGE_BOUND_UNSPECIFIED"
},
"annotation": {
"annotationId": "<string>",
"bound": "TIME_RANGE_BOUND_UNSPECIFIED"
},
"timestamp": {
"timestamp": "2023-11-07T05:31:56Z"
}
}
],
"description": "<string>",
"run": {
"bound": "TIME_RANGE_BOUND_UNSPECIFIED"
},
"annotation": {
"annotationName": "<string>",
"bound": "TIME_RANGE_BOUND_UNSPECIFIED",
"occurrence": "ANNOTATION_OCCURRENCE_UNSPECIFIED",
"occurrenceIndex": 123
},
"timestamp": {
"timestamp": "2023-11-07T05:31:56Z"
}
}
],
"familyStats": [
{
"familyStat": {
"familyStatId": "<string>",
"familyVersionId": "<string>",
"name": "<string>",
"sampleRate": 123,
"defaultChannelNames": [
"<string>"
],
"createdDate": "2023-11-07T05:31:56Z",
"modifiedDate": "2023-11-07T05:31:56Z",
"createdByUserId": "<string>",
"modifiedByUserId": "<string>",
"organizationId": "<string>",
"description": "<string>"
},
"familyStatExpressions": [
{
"familyStatExpressionId": "<string>",
"familyStatId": "<string>",
"avg": {},
"median": {},
"min": {},
"max": {},
"stdev": {},
"sum": {},
"inputCount": {},
"sigma": {}
}
],
"familyStatRanges": [
{
"familyStatRangeId": "<string>",
"familyStatId": "<string>",
"familyAlignmentId": "<string>",
"name": "<string>",
"windowStart": {
"familyAlignmentId": "<string>",
"duration": "<string>"
},
"windowEnd": {
"familyAlignmentId": "<string>",
"duration": "<string>"
}
}
],
"familyStatChannels": [
{
"familyStatChannelId": "<string>",
"familyStatId": "<string>",
"channelId": "<string>",
"alignmentPointId": "<string>"
}
]
}
]
},
"familyStats": [
{
"familyStat": {
"familyStatId": "<string>",
"familyVersionId": "<string>",
"name": "<string>",
"sampleRate": 123,
"defaultChannelNames": [
"<string>"
],
"createdDate": "2023-11-07T05:31:56Z",
"modifiedDate": "2023-11-07T05:31:56Z",
"createdByUserId": "<string>",
"modifiedByUserId": "<string>",
"organizationId": "<string>",
"description": "<string>"
},
"familyStatExpressions": [
{
"familyStatExpressionId": "<string>",
"familyStatId": "<string>",
"avg": {},
"median": {},
"min": {},
"max": {},
"stdev": {},
"sum": {},
"inputCount": {},
"sigma": {}
}
],
"familyStatRanges": [
{
"familyStatRangeId": "<string>",
"familyStatId": "<string>",
"familyAlignmentId": "<string>",
"name": "<string>",
"windowStart": {
"familyAlignmentId": "<string>",
"duration": "<string>"
},
"windowEnd": {
"familyAlignmentId": "<string>",
"duration": "<string>"
}
}
],
"familyStatChannels": [
{
"familyStatChannelId": "<string>",
"familyStatId": "<string>",
"channelId": "<string>",
"alignmentPointId": "<string>"
}
]
}
]
}{
"code": 123,
"message": "<string>",
"details": [
{
"@type": "<string>"
}
]
}FamilyService
UpdateFamily
Updates an existing family using the list of fields specified in update_mask.
PATCH
/
api
/
v1
/
families
/
client_key
/
{clientKey}
UpdateFamily
curl --request PATCH \
--url https://api.siftstack.com/api/v1/families/client_key/{clientKey} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"family": {
"family": {
"isArchived": true,
"clientKey": "<string>"
},
"familyVersion": {
"name": "<string>",
"description": "<string>",
"runQuery": "<string>",
"userNotes": "<string>",
"metadata": [
{
"key": {
"name": "<string>",
"type": "METADATA_KEY_TYPE_UNSPECIFIED",
"archivedDate": "2023-11-07T05:31:56Z",
"isArchived": true
},
"stringValue": "<string>",
"numberValue": 123,
"booleanValue": true,
"archivedDate": "2023-11-07T05:31:56Z",
"isArchived": true
}
],
"sigmaDefaultValues": [
123
]
},
"familyRuns": [
{
"runId": "<string>",
"isExclusion": true,
"rationale": "<string>"
}
],
"familyAlignments": [
{
"familyAlignmentId": "<string>",
"name": "<string>",
"familyAlignmentPoints": [
{
"familyAlignmentPointId": "<string>",
"runId": "<string>"
}
],
"description": "<string>"
}
],
"familyStats": [
{
"familyStat": {
"name": "<string>",
"sampleRate": 123,
"defaultChannelNames": [
"<string>"
],
"description": "<string>"
},
"familyStatExpressions": [
{
"avg": {},
"median": {},
"min": {},
"max": {},
"stdev": {},
"sum": {},
"inputCount": {}
}
],
"familyStatRanges": [
{
"familyAlignmentId": "<string>",
"windowStart": {
"familyAlignmentId": "<string>",
"duration": "<string>"
},
"windowEnd": {
"familyAlignmentId": "<string>",
"duration": "<string>"
}
}
],
"familyStatChannels": [
{
"channelId": "<string>",
"alignmentPointId": "<string>"
}
]
}
]
},
"updateMask": "<string>",
"familyId": "<string>"
}
'import requests
url = "https://api.siftstack.com/api/v1/families/client_key/{clientKey}"
payload = {
"family": {
"family": {
"isArchived": True,
"clientKey": "<string>"
},
"familyVersion": {
"name": "<string>",
"description": "<string>",
"runQuery": "<string>",
"userNotes": "<string>",
"metadata": [
{
"key": {
"name": "<string>",
"type": "METADATA_KEY_TYPE_UNSPECIFIED",
"archivedDate": "2023-11-07T05:31:56Z",
"isArchived": True
},
"stringValue": "<string>",
"numberValue": 123,
"booleanValue": True,
"archivedDate": "2023-11-07T05:31:56Z",
"isArchived": True
}
],
"sigmaDefaultValues": [123]
},
"familyRuns": [
{
"runId": "<string>",
"isExclusion": True,
"rationale": "<string>"
}
],
"familyAlignments": [
{
"familyAlignmentId": "<string>",
"name": "<string>",
"familyAlignmentPoints": [
{
"familyAlignmentPointId": "<string>",
"runId": "<string>"
}
],
"description": "<string>"
}
],
"familyStats": [
{
"familyStat": {
"name": "<string>",
"sampleRate": 123,
"defaultChannelNames": ["<string>"],
"description": "<string>"
},
"familyStatExpressions": [
{
"avg": {},
"median": {},
"min": {},
"max": {},
"stdev": {},
"sum": {},
"inputCount": {}
}
],
"familyStatRanges": [
{
"familyAlignmentId": "<string>",
"windowStart": {
"familyAlignmentId": "<string>",
"duration": "<string>"
},
"windowEnd": {
"familyAlignmentId": "<string>",
"duration": "<string>"
}
}
],
"familyStatChannels": [
{
"channelId": "<string>",
"alignmentPointId": "<string>"
}
]
}
]
},
"updateMask": "<string>",
"familyId": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.siftstack.com/api/v1/families/client_key/{clientKey}"
payload := strings.NewReader("{\n \"family\": {\n \"family\": {\n \"isArchived\": true,\n \"clientKey\": \"<string>\"\n },\n \"familyVersion\": {\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"runQuery\": \"<string>\",\n \"userNotes\": \"<string>\",\n \"metadata\": [\n {\n \"key\": {\n \"name\": \"<string>\",\n \"type\": \"METADATA_KEY_TYPE_UNSPECIFIED\",\n \"archivedDate\": \"2023-11-07T05:31:56Z\",\n \"isArchived\": true\n },\n \"stringValue\": \"<string>\",\n \"numberValue\": 123,\n \"booleanValue\": true,\n \"archivedDate\": \"2023-11-07T05:31:56Z\",\n \"isArchived\": true\n }\n ],\n \"sigmaDefaultValues\": [\n 123\n ]\n },\n \"familyRuns\": [\n {\n \"runId\": \"<string>\",\n \"isExclusion\": true,\n \"rationale\": \"<string>\"\n }\n ],\n \"familyAlignments\": [\n {\n \"familyAlignmentId\": \"<string>\",\n \"name\": \"<string>\",\n \"familyAlignmentPoints\": [\n {\n \"familyAlignmentPointId\": \"<string>\",\n \"runId\": \"<string>\"\n }\n ],\n \"description\": \"<string>\"\n }\n ],\n \"familyStats\": [\n {\n \"familyStat\": {\n \"name\": \"<string>\",\n \"sampleRate\": 123,\n \"defaultChannelNames\": [\n \"<string>\"\n ],\n \"description\": \"<string>\"\n },\n \"familyStatExpressions\": [\n {\n \"avg\": {},\n \"median\": {},\n \"min\": {},\n \"max\": {},\n \"stdev\": {},\n \"sum\": {},\n \"inputCount\": {}\n }\n ],\n \"familyStatRanges\": [\n {\n \"familyAlignmentId\": \"<string>\",\n \"windowStart\": {\n \"familyAlignmentId\": \"<string>\",\n \"duration\": \"<string>\"\n },\n \"windowEnd\": {\n \"familyAlignmentId\": \"<string>\",\n \"duration\": \"<string>\"\n }\n }\n ],\n \"familyStatChannels\": [\n {\n \"channelId\": \"<string>\",\n \"alignmentPointId\": \"<string>\"\n }\n ]\n }\n ]\n },\n \"updateMask\": \"<string>\",\n \"familyId\": \"<string>\"\n}")
req, _ := http.NewRequest("PATCH", url, payload)
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))
}{
"familyVersionId": "<string>",
"family": {
"family": {
"familyId": "<string>",
"currentVersionId": "<string>",
"isArchived": true,
"createdDate": "2023-11-07T05:31:56Z",
"modifiedDate": "2023-11-07T05:31:56Z",
"createdByUserId": "<string>",
"modifiedByUserId": "<string>",
"organizationId": "<string>",
"clientKey": "<string>",
"archivedDate": "2023-11-07T05:31:56Z"
},
"familyVersion": {
"familyVersionId": "<string>",
"familyId": "<string>",
"version": 123,
"name": "<string>",
"changeMessage": "<string>",
"createdDate": "2023-11-07T05:31:56Z",
"modifiedDate": "2023-11-07T05:31:56Z",
"createdByUserId": "<string>",
"modifiedByUserId": "<string>",
"organizationId": "<string>",
"description": "<string>",
"runQuery": "<string>",
"userNotes": "<string>",
"metadata": [
{
"key": {
"name": "<string>",
"type": "METADATA_KEY_TYPE_UNSPECIFIED",
"archivedDate": "2023-11-07T05:31:56Z",
"isArchived": true
},
"stringValue": "<string>",
"numberValue": 123,
"booleanValue": true,
"relationValue": {
"resourceType": "<string>",
"resourceId": "<string>"
},
"archivedDate": "2023-11-07T05:31:56Z",
"isArchived": true
}
],
"sigmaDefaultValues": [
123
]
},
"familyRuns": [
{
"familyRunId": "<string>",
"familyVersionId": "<string>",
"runId": "<string>",
"addedDate": "2023-11-07T05:31:56Z",
"addedByUserId": "<string>",
"addedInVersionId": "<string>",
"isExclusion": true,
"rationale": "<string>"
}
],
"familyAlignments": [
{
"familyAlignmentId": "<string>",
"familyVersionId": "<string>",
"name": "<string>",
"familyAlignmentPoints": [
{
"familyAlignmentPointId": "<string>",
"familyRunId": "<string>",
"runId": "<string>",
"familyAlignmentId": "<string>",
"run": {
"bound": "TIME_RANGE_BOUND_UNSPECIFIED"
},
"annotation": {
"annotationId": "<string>",
"bound": "TIME_RANGE_BOUND_UNSPECIFIED"
},
"timestamp": {
"timestamp": "2023-11-07T05:31:56Z"
}
}
],
"description": "<string>",
"run": {
"bound": "TIME_RANGE_BOUND_UNSPECIFIED"
},
"annotation": {
"annotationName": "<string>",
"bound": "TIME_RANGE_BOUND_UNSPECIFIED",
"occurrence": "ANNOTATION_OCCURRENCE_UNSPECIFIED",
"occurrenceIndex": 123
},
"timestamp": {
"timestamp": "2023-11-07T05:31:56Z"
}
}
],
"familyStats": [
{
"familyStat": {
"familyStatId": "<string>",
"familyVersionId": "<string>",
"name": "<string>",
"sampleRate": 123,
"defaultChannelNames": [
"<string>"
],
"createdDate": "2023-11-07T05:31:56Z",
"modifiedDate": "2023-11-07T05:31:56Z",
"createdByUserId": "<string>",
"modifiedByUserId": "<string>",
"organizationId": "<string>",
"description": "<string>"
},
"familyStatExpressions": [
{
"familyStatExpressionId": "<string>",
"familyStatId": "<string>",
"avg": {},
"median": {},
"min": {},
"max": {},
"stdev": {},
"sum": {},
"inputCount": {},
"sigma": {}
}
],
"familyStatRanges": [
{
"familyStatRangeId": "<string>",
"familyStatId": "<string>",
"familyAlignmentId": "<string>",
"name": "<string>",
"windowStart": {
"familyAlignmentId": "<string>",
"duration": "<string>"
},
"windowEnd": {
"familyAlignmentId": "<string>",
"duration": "<string>"
}
}
],
"familyStatChannels": [
{
"familyStatChannelId": "<string>",
"familyStatId": "<string>",
"channelId": "<string>",
"alignmentPointId": "<string>"
}
]
}
]
},
"familyStats": [
{
"familyStat": {
"familyStatId": "<string>",
"familyVersionId": "<string>",
"name": "<string>",
"sampleRate": 123,
"defaultChannelNames": [
"<string>"
],
"createdDate": "2023-11-07T05:31:56Z",
"modifiedDate": "2023-11-07T05:31:56Z",
"createdByUserId": "<string>",
"modifiedByUserId": "<string>",
"organizationId": "<string>",
"description": "<string>"
},
"familyStatExpressions": [
{
"familyStatExpressionId": "<string>",
"familyStatId": "<string>",
"avg": {},
"median": {},
"min": {},
"max": {},
"stdev": {},
"sum": {},
"inputCount": {},
"sigma": {}
}
],
"familyStatRanges": [
{
"familyStatRangeId": "<string>",
"familyStatId": "<string>",
"familyAlignmentId": "<string>",
"name": "<string>",
"windowStart": {
"familyAlignmentId": "<string>",
"duration": "<string>"
},
"windowEnd": {
"familyAlignmentId": "<string>",
"duration": "<string>"
}
}
],
"familyStatChannels": [
{
"familyStatChannelId": "<string>",
"familyStatId": "<string>",
"channelId": "<string>",
"alignmentPointId": "<string>"
}
]
}
]
}{
"code": 123,
"message": "<string>",
"details": [
{
"@type": "<string>"
}
]
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
Body
application/json
Show child attributes
Show child attributes
Note: Whenever the family is updated, the family stats are also updated to point to the new family version to ensure the family stats are always up to date. client_key can only be updated if it is not already set. It must be passed in via the family request and cannot be used as identifier.
Was this page helpful?
⌘I