Record one opted-in anonymous aggregate Coach telemetry bucket
POST
/v1/mobile/coach/telemetry
const url = 'https://api.vocapable.com/v1/mobile/coach/telemetry';const options = { method: 'POST', headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'}, body: '{"action":"opened","duration_bucket":"not_applicable","app_version":"example","role":"admin","window_class":"fresh_foreground"}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://api.vocapable.com/v1/mobile/coach/telemetry \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "action": "opened", "duration_bucket": "not_applicable", "app_version": "example", "role": "admin", "window_class": "fresh_foreground" }'Increment no bucket unless this current device explicitly opted in.
The repository function receives the five finite aggregate dimensions only. In particular, it is never passed the tenant, membership, device, recommendation key, request id, customer/call resource, or a raw duration.
Authorizations
Section titled “Authorizations”Request Bodyrequired
Section titled “Request Bodyrequired”Media typeapplication/json
MobileCoachTelemetryEventRequest
One anonymous, finite aggregate-measurement increment.
There is intentionally no recommendation key, tenant/device/member id, target id, caller/contact data, timestamp, token, free text, or raw duration. The server verifies the submitted role against the authenticated mobile session before incrementing.
object
action
required
Action
string
duration_bucket
required
Duration Bucket
string
app_version
required
App Version
string
role
required
Role
string
window_class
required
Window Class
string
Responses
Section titled “Responses”Successful Response
Media typeapplication/json
MobileCoachTelemetryReceipt
A no-detail acknowledgement that preserves an opt-out’s privacy boundary.
object
recorded
required
Recorded
boolean
Examplegenerated
{ "recorded": true}Validation Error
Media typeapplication/json
HTTPValidationError
object
detail
Detail
Array<object>
ValidationErrorobject
loc
required
Location
Array
msg
required
Message
string
type
required
Error Type
string
input
Input
ctx
Context
object
Examplegenerated
{ "detail": [ { "loc": [ "example" ], "msg": "example", "type": "example", "input": "example", "ctx": {} } ]}