@platform/sdk-analytics
Typed TypeScript client for services/analytics. The page is generated from the SDK package source plus its generated OpenAPI types.
Installation
npm install @platform/sdk-analyticsYou’ll also need the shared auth/client helpers:
npm install @platform/hosts @platform/sdkQuick start
import { LoopClient } from "@platform/sdk";
import { platformHost, SERVICE_NAMES } from "@platform/hosts";
import { createAnalyticsClient } from "@platform/sdk-analytics";
const loop = new LoopClient({
clientId: process.env.LOOP_CLIENT_ID!,
clientSecret: process.env.LOOP_CLIENT_SECRET!,
redirectUri: "https://your-app.example.com/auth/loop/callback",
});
const analytics = createAnalyticsClient({
baseUrl: platformHost({ service: SERVICE_NAMES.ANALYTICS }),
accessToken: tokens.access_token,
});Use the convenience helpers below when the SDK exposes them, or call the typed endpoint methods directly with GET / POST / PATCH / DELETE.
Convenience helpers
This SDK does not add convenience helpers beyond the typed endpoint calls below.
Endpoint calls
POST /cohort/changepoint
Underlying REST endpoint: POST /cohort/changepoint
Parameters
body: paths["/cohort/changepoint"]["post"]["requestBody"]["content"]["application/json"]
Return type
Promise<{
data?: paths["/cohort/changepoint"]["post"]["responses"]["200"]["content"]["application/json"];
error?: unknown;
response: Response;
}>Example
const result = await analytics.POST("/cohort/changepoint", {
body: {
/* paths["/cohort/changepoint"]["post"]["requestBody"]["content"]["application/json"] */
},
});POST /cohort/regression
Underlying REST endpoint: POST /cohort/regression
Parameters
body: paths["/cohort/regression"]["post"]["requestBody"]["content"]["application/json"]
Return type
Promise<{
data?: paths["/cohort/regression"]["post"]["responses"]["200"]["content"]["application/json"];
error?: unknown;
response: Response;
}>Example
const result = await analytics.POST("/cohort/regression", {
body: {
/* paths["/cohort/regression"]["post"]["requestBody"]["content"]["application/json"] */
},
});POST /cohort/trend
Underlying REST endpoint: POST /cohort/trend
Parameters
body: paths["/cohort/trend"]["post"]["requestBody"]["content"]["application/json"]
Return type
Promise<{
data?: paths["/cohort/trend"]["post"]["responses"]["200"]["content"]["application/json"];
error?: unknown;
response: Response;
}>Example
const result = await analytics.POST("/cohort/trend", {
body: {
/* paths["/cohort/trend"]["post"]["requestBody"]["content"]["application/json"] */
},
});POST /patterns/cluster
Underlying REST endpoint: POST /patterns/cluster
Parameters
body: paths["/patterns/cluster"]["post"]["requestBody"]["content"]["application/json"]
Return type
Promise<{
data?: paths["/patterns/cluster"]["post"]["responses"]["200"]["content"]["application/json"];
error?: unknown;
response: Response;
}>Example
const result = await analytics.POST("/patterns/cluster", {
body: {
/* paths["/patterns/cluster"]["post"]["requestBody"]["content"]["application/json"] */
},
});POST /patterns/correct-pvalues
Underlying REST endpoint: POST /patterns/correct-pvalues
Parameters
body: paths["/patterns/correct-pvalues"]["post"]["requestBody"]["content"]["application/json"]
Return type
Promise<{
data?: paths["/patterns/correct-pvalues"]["post"]["responses"]["200"]["content"]["application/json"];
error?: unknown;
response: Response;
}>Example
const result = await analytics.POST("/patterns/correct-pvalues", {
body: {
/* paths["/patterns/correct-pvalues"]["post"]["requestBody"]["content"]["application/json"] */
},
});POST /patterns/correlate
Underlying REST endpoint: POST /patterns/correlate
Parameters
body: paths["/patterns/correlate"]["post"]["requestBody"]["content"]["application/json"]
Return type
Promise<{
data?: paths["/patterns/correlate"]["post"]["responses"]["200"]["content"]["application/json"];
error?: unknown;
response: Response;
}>Example
const result = await analytics.POST("/patterns/correlate", {
body: {
/* paths["/patterns/correlate"]["post"]["requestBody"]["content"]["application/json"] */
},
});POST /patterns/pairwise-correlations
Underlying REST endpoint: POST /patterns/pairwise-correlations
Parameters
body: paths["/patterns/pairwise-correlations"]["post"]["requestBody"]["content"]["application/json"]
Return type
Promise<{
data?: paths["/patterns/pairwise-correlations"]["post"]["responses"]["200"]["content"]["application/json"];
error?: unknown;
response: Response;
}>Example
const result = await analytics.POST("/patterns/pairwise-correlations", {
body: {
/* paths["/patterns/pairwise-correlations"]["post"]["requestBody"]["content"]["application/json"] */
},
});GET /readyz
Underlying REST endpoint: GET /readyz
Parameters
None
Return type
Promise<{
data?: paths["/readyz"]["get"]["responses"]["200"]["content"]["application/json"];
error?: unknown;
response: Response;
}>Example
const result = await analytics.GET("/readyz");POST /v1/admin/ai-spend/digest
Underlying REST endpoint: POST /v1/admin/ai-spend/digest
Parameters
None
Return type
Promise<{
data?: paths["/v1/admin/ai-spend/digest"]["post"]["responses"]["200"]["content"]["application/json"];
error?: unknown;
response: Response;
}>Example
const result = await analytics.POST("/v1/admin/ai-spend/digest");POST /v1/admin/clustering/run-monthly
Underlying REST endpoint: POST /v1/admin/clustering/run-monthly
Parameters
None
Return type
Promise<{
data?: paths["/v1/admin/clustering/run-monthly"]["post"]["responses"]["200"]["content"]["application/json"];
error?: unknown;
response: Response;
}>Example
const result = await analytics.POST("/v1/admin/clustering/run-monthly");POST /v1/admin/cohorts/ml-analysis
Underlying REST endpoint: POST /v1/admin/cohorts/ml-analysis
Parameters
None
Return type
Promise<{
data?: paths["/v1/admin/cohorts/ml-analysis"]["post"]["responses"]["200"]["content"]["application/json"];
error?: unknown;
response: Response;
}>Example
const result = await analytics.POST("/v1/admin/cohorts/ml-analysis");POST /v1/admin/digests/telehealth-mrr
Underlying REST endpoint: POST /v1/admin/digests/telehealth-mrr
Parameters
None
Return type
Promise<{
data?: paths["/v1/admin/digests/telehealth-mrr"]["post"]["responses"]["200"]["content"]["application/json"];
error?: unknown;
response: Response;
}>Example
const result = await analytics.POST("/v1/admin/digests/telehealth-mrr");POST /v1/admin/events/rollup
Underlying REST endpoint: POST /v1/admin/events/rollup
Parameters
None
Return type
Promise<{
data?: paths["/v1/admin/events/rollup"]["post"]["responses"]["200"]["content"]["application/json"];
error?: unknown;
response: Response;
}>Example
const result = await analytics.POST("/v1/admin/events/rollup");POST /v1/admin/features/refresh
Underlying REST endpoint: POST /v1/admin/features/refresh
Parameters
body: paths["/v1/admin/features/refresh"]["post"]["requestBody"]["content"]["application/json"]
Return type
Promise<{
data?: paths["/v1/admin/features/refresh"]["post"]["responses"]["200"]["content"]["application/json"];
error?: unknown;
response: Response;
}>Example
const result = await analytics.POST("/v1/admin/features/refresh", {
body: {
/* paths["/v1/admin/features/refresh"]["post"]["requestBody"]["content"]["application/json"] */
},
});GET /v1/admin/features/stale
Underlying REST endpoint: GET /v1/admin/features/stale
Parameters
query?: paths["/v1/admin/features/stale"]["get"]["parameters"]["query"]
Return type
Promise<{
data?: paths["/v1/admin/features/stale"]["get"]["responses"]["200"]["content"]["application/json"];
error?: unknown;
response: Response;
}>Example
const result = await analytics.GET("/v1/admin/features/stale", {
params: {
query: {
/* paths["/v1/admin/features/stale"]["get"]["parameters"]["query"] */
},
},
});GET /v1/ai-spend
Underlying REST endpoint: GET /v1/ai-spend
Parameters
query: paths["/v1/ai-spend"]["get"]["parameters"]["query"]
Return type
Promise<{
data?: paths["/v1/ai-spend"]["get"]["responses"]["200"]["content"]["application/json"];
error?: unknown;
response: Response;
}>Example
const result = await analytics.GET("/v1/ai-spend", {
params: {
query: {
/* paths["/v1/ai-spend"]["get"]["parameters"]["query"] */
},
},
});GET /v1/ai-spend/forecast
Underlying REST endpoint: GET /v1/ai-spend/forecast
Parameters
query?: paths["/v1/ai-spend/forecast"]["get"]["parameters"]["query"]
Return type
Promise<{
data?: paths["/v1/ai-spend/forecast"]["get"]["responses"]["200"]["content"]["application/json"];
error?: unknown;
response: Response;
}>Example
const result = await analytics.GET("/v1/ai-spend/forecast", {
params: {
query: {
/* paths["/v1/ai-spend/forecast"]["get"]["parameters"]["query"] */
},
},
});POST /v1/attribution/resolve
Underlying REST endpoint: POST /v1/attribution/resolve
Parameters
body: paths["/v1/attribution/resolve"]["post"]["requestBody"]["content"]["application/json"]
Return type
Promise<{
data?: paths["/v1/attribution/resolve"]["post"]["responses"]["200"]["content"]["application/json"];
error?: unknown;
response: Response;
}>Example
const result = await analytics.POST("/v1/attribution/resolve", {
body: {
/* paths["/v1/attribution/resolve"]["post"]["requestBody"]["content"]["application/json"] */
},
});GET /v1/cohorts/{id}/members
Underlying REST endpoint: GET /v1/cohorts/\{id\}/members
Parameters
path: paths["/v1/cohorts/{id}/members"]["get"]["parameters"]["path"]query?: paths["/v1/cohorts/{id}/members"]["get"]["parameters"]["query"]
Return type
Promise<{
data?: paths["/v1/cohorts/{id}/members"]["get"]["responses"]["200"]["content"]["application/json"];
error?: unknown;
response: Response;
}>Example
const result = await analytics.GET("/v1/cohorts/{id}/members", {
params: {
path: {
id: "<id>",
},
query: {
/* paths["/v1/cohorts/{id}/members"]["get"]["parameters"]["query"] */
},
},
});POST /v1/correlations/compute
Underlying REST endpoint: POST /v1/correlations/compute
Parameters
body: paths["/v1/correlations/compute"]["post"]["requestBody"]["content"]["application/json"]
Return type
Promise<{
data?: paths["/v1/correlations/compute"]["post"]["responses"]["200"]["content"]["application/json"];
error?: unknown;
response: Response;
}>Example
const result = await analytics.POST("/v1/correlations/compute", {
body: {
/* paths["/v1/correlations/compute"]["post"]["requestBody"]["content"]["application/json"] */
},
});POST /v1/events/track
Underlying REST endpoint: POST /v1/events/track
Parameters
body: paths["/v1/events/track"]["post"]["requestBody"]["content"]["application/json"]
Return type
Promise<{
data?: paths["/v1/events/track"]["post"]["responses"]["200"]["content"]["application/json"];
error?: unknown;
response: Response;
}>Example
const result = await analytics.POST("/v1/events/track", {
body: {
/* paths["/v1/events/track"]["post"]["requestBody"]["content"]["application/json"] */
},
});GET /v1/features/{userId}
Underlying REST endpoint: GET /v1/features/\{userId\}
Parameters
path: paths["/v1/features/{userId}"]["get"]["parameters"]["path"]query: paths["/v1/features/{userId}"]["get"]["parameters"]["query"]
Return type
Promise<{
data?: paths["/v1/features/{userId}"]["get"]["responses"]["200"]["content"]["application/json"];
error?: unknown;
response: Response;
}>Example
const result = await analytics.GET("/v1/features/{userId}", {
params: {
path: {
userId: "<userId>",
},
query: {
/* paths["/v1/features/{userId}"]["get"]["parameters"]["query"] */
},
},
});GET /v1/outcomes
Underlying REST endpoint: GET /v1/outcomes
Parameters
query: paths["/v1/outcomes"]["get"]["parameters"]["query"]
Return type
Promise<{
data?: paths["/v1/outcomes"]["get"]["responses"]["200"]["content"]["application/json"];
error?: unknown;
response: Response;
}>Example
const result = await analytics.GET("/v1/outcomes", {
params: {
query: {
/* paths["/v1/outcomes"]["get"]["parameters"]["query"] */
},
},
});POST /v1/outcomes
Underlying REST endpoint: POST /v1/outcomes
Parameters
body: paths["/v1/outcomes"]["post"]["requestBody"]["content"]["application/json"]
Return type
Promise<{
data?: paths["/v1/outcomes"]["post"]["responses"]["201"]["content"]["application/json"];
error?: unknown;
response: Response;
}>Example
const result = await analytics.POST("/v1/outcomes", {
body: {
/* paths["/v1/outcomes"]["post"]["requestBody"]["content"]["application/json"] */
},
});GET /v1/outcomes/{id}
Underlying REST endpoint: GET /v1/outcomes/\{id\}
Parameters
path: paths["/v1/outcomes/{id}"]["get"]["parameters"]["path"]query: paths["/v1/outcomes/{id}"]["get"]["parameters"]["query"]
Return type
Promise<{
data?: paths["/v1/outcomes/{id}"]["get"]["responses"]["200"]["content"]["application/json"];
error?: unknown;
response: Response;
}>Example
const result = await analytics.GET("/v1/outcomes/{id}", {
params: {
path: {
id: "<id>",
},
query: {
/* paths["/v1/outcomes/{id}"]["get"]["parameters"]["query"] */
},
},
});GET /v1/outcomes/{id}/entries
Underlying REST endpoint: GET /v1/outcomes/\{id\}/entries
Parameters
path: paths["/v1/outcomes/{id}/entries"]["get"]["parameters"]["path"]query: paths["/v1/outcomes/{id}/entries"]["get"]["parameters"]["query"]
Return type
Promise<{
data?: paths["/v1/outcomes/{id}/entries"]["get"]["responses"]["200"]["content"]["application/json"];
error?: unknown;
response: Response;
}>Example
const result = await analytics.GET("/v1/outcomes/{id}/entries", {
params: {
path: {
id: "<id>",
},
query: {
/* paths["/v1/outcomes/{id}/entries"]["get"]["parameters"]["query"] */
},
},
});POST /v1/outcomes/{id}/entries
Underlying REST endpoint: POST /v1/outcomes/\{id\}/entries
Parameters
path: paths["/v1/outcomes/{id}/entries"]["post"]["parameters"]["path"]body: paths["/v1/outcomes/{id}/entries"]["post"]["requestBody"]["content"]["application/json"]
Return type
Promise<{
data?: paths["/v1/outcomes/{id}/entries"]["post"]["responses"]["201"]["content"]["application/json"];
error?: unknown;
response: Response;
}>Example
const result = await analytics.POST("/v1/outcomes/{id}/entries", {
params: {
path: {
id: "<id>",
},
},
body: {
/* paths["/v1/outcomes/{id}/entries"]["post"]["requestBody"]["content"]["application/json"] */
},
});POST /v1/token-usage
Underlying REST endpoint: POST /v1/token-usage
Parameters
body: paths["/v1/token-usage"]["post"]["requestBody"]["content"]["application/json"]
Return type
Promise<{
data?: paths["/v1/token-usage"]["post"]["responses"]["201"]["content"]["application/json"];
error?: unknown;
response: Response;
}>Example
const result = await analytics.POST("/v1/token-usage", {
body: {
/* paths["/v1/token-usage"]["post"]["requestBody"]["content"]["application/json"] */
},
});