mirror of
https://github.com/MBombeck/HealthLog.git
synced 2026-11-15 06:52:04 +00:00
Merge branch 'release/v1.46.0' into feat/v146-ui
This commit is contained in:
commit
551fbbbdec
445 files changed
+164623
-24087
No files matched your search
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
@@ -350,6 +350,13 @@ describe("a large account under the production heap", () => {
|
||||
const YEARS = 2;
|
||||
/** The production container's heap ceiling. */
|
||||
const PROD_HEAP_MB = 524;
|
||||
/**
|
||||
* The seed's transactions run past Prisma's 5 s default under a loaded
|
||||
* host: a month took at most 0.55 s on a quiet machine and 9.9 s at a load
|
||||
* average near 95, which expired the transaction. The bound is the
|
||||
* fixture's, not the code's under test.
|
||||
*/
|
||||
const SEED_TRANSACTION = { maxWait: 30_000, timeout: 120_000 };
|
||||
|
||||
beforeAll(async () => {
|
||||
await prisma.user.create({
|
||||
@@ -359,9 +366,10 @@ describe("a large account under the production heap", () => {
|
||||
// seventh hour holding a single reading so the two methods disagree.
|
||||
//
|
||||
// Written a month at a time, each month in its own transaction with the
|
||||
// statement timeout lifted for that transaction only: as one statement
|
||||
// statement timeout lifted for that transaction only and a transaction
|
||||
// timeout sized for a loaded host (`SEED_TRANSACTION`): as one statement
|
||||
// the million-row insert outran the timeout on CI's shared Postgres, and
|
||||
// the timeout guards the code under test, not this fixture.
|
||||
// both timeouts guard the code under test, not this fixture.
|
||||
const end = new Date();
|
||||
end.setUTCHours(0, 0, 0, 0);
|
||||
const start = new Date(end.getTime() - YEARS * 365 * DAY);
|
||||
@@ -369,9 +377,9 @@ describe("a large account under the production heap", () => {
|
||||
for (let from = start.getTime(); from < end.getTime(); from += CHUNK) {
|
||||
const chunkFrom = new Date(from);
|
||||
const chunkTo = new Date(Math.min(from + CHUNK, end.getTime()));
|
||||
await prisma.$transaction([
|
||||
prisma.$executeRaw`SET LOCAL statement_timeout = 0`,
|
||||
prisma.$executeRaw`
|
||||
await prisma.$transaction(async (tx) => {
|
||||
await tx.$executeRaw`SET LOCAL statement_timeout = 0`;
|
||||
await tx.$executeRaw`
|
||||
INSERT INTO measurements (id, user_id, type, unit, source, value, measured_at, created_at, updated_at)
|
||||
SELECT 'big-' || (extract(epoch FROM ts)::bigint / 60)::text, ${BIG}, 'PULSE', 'bpm', 'APPLE_HEALTH',
|
||||
60 + ((extract(epoch FROM ts)::bigint / 60) % 40),
|
||||
@@ -382,13 +390,13 @@ describe("a large account under the production heap", () => {
|
||||
interval '1 minute'
|
||||
) AS s(ts)
|
||||
WHERE extract(hour FROM ts)::int % 7 <> 3 OR extract(minute FROM ts)::int = 0
|
||||
`,
|
||||
]);
|
||||
`;
|
||||
}, SEED_TRANSACTION);
|
||||
}
|
||||
await prisma.$transaction([
|
||||
prisma.$executeRaw`SET LOCAL statement_timeout = 0`,
|
||||
prisma.$executeRaw`ANALYZE measurements`,
|
||||
]);
|
||||
await prisma.$transaction(async (tx) => {
|
||||
await tx.$executeRaw`SET LOCAL statement_timeout = 0`;
|
||||
await tx.$executeRaw`ANALYZE measurements`;
|
||||
}, SEED_TRANSACTION);
|
||||
}, 600_000);
|
||||
|
||||
async function peakHeapMb(work: () => Promise<unknown>) {
|
||||
|
||||
@@ -12,7 +12,12 @@ import { describe, expect, it } from "vitest";
|
||||
|
||||
import { apiHandler } from "@/lib/api-handler";
|
||||
|
||||
import { ContractViolation, anonymous, callRoute } from "../../kit/call-route";
|
||||
import {
|
||||
ContractViolation,
|
||||
anonymous,
|
||||
callRoute,
|
||||
sealedFieldPaths,
|
||||
} from "../../kit/call-route";
|
||||
|
||||
const token = {
|
||||
id: "tok-1",
|
||||
@@ -28,6 +33,31 @@ function answering(status: number, body: unknown) {
|
||||
return apiHandler(async () => NextResponse.json(body, { status }));
|
||||
}
|
||||
|
||||
describe("callRoute's sealed-field check", () => {
|
||||
it("finds a sealed key and serialised bytes at any depth, and nothing else", () => {
|
||||
const bytes = Object.fromEntries(
|
||||
Array.from({ length: 32 }, (_, i) => [String(i), (i * 7) % 256]),
|
||||
);
|
||||
expect(
|
||||
sealedFieldPaths({
|
||||
data: {
|
||||
rows: [{ notes: "a", notesEncrypted: null }],
|
||||
track: { geometry: bytes },
|
||||
raw: { type: "Buffer", data: [1, 2, 3] },
|
||||
hours: { "0": 3, "1": 4, "2": 5 },
|
||||
},
|
||||
}),
|
||||
).toEqual([
|
||||
"data.rows[0].notesEncrypted",
|
||||
"data.track.geometry",
|
||||
"data.raw",
|
||||
]);
|
||||
expect(sealedFieldPaths({ data: { notes: "plain", count: 3 } })).toEqual(
|
||||
[],
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
describe("callRoute's contract check", () => {
|
||||
it("accepts a body the registered schema describes", async () => {
|
||||
const res = await callRoute(
|
||||
|
||||
@@ -0,0 +1,108 @@
|
||||
/**
|
||||
* No measurement read sends a sealed column to the client.
|
||||
*
|
||||
* A measurement's note is stored sealed in `notesEncrypted` and answered
|
||||
* decrypted on `notes`. The `dayKey` drill-down of `GET /api/measurements`
|
||||
* once answered the stored rows as they were, ciphertext included. Every
|
||||
* read below runs over rows that carry a sealed note, and each must answer
|
||||
* the readable note and no `*Encrypted` field or raw bytes. `callRoute`
|
||||
* refuses sealed fields on every route it drives; the explicit checks here
|
||||
* say which reads were looked at.
|
||||
*/
|
||||
import { beforeEach, describe, expect, it } from "vitest";
|
||||
|
||||
import { GET as listMeasurements } from "@/app/api/measurements/route";
|
||||
import { GET as readMeasurement } from "@/app/api/measurements/[id]/route";
|
||||
import { encryptNote } from "@/lib/crypto/note-cipher";
|
||||
|
||||
import { callRoute, sealedFieldPaths } from "../../kit/call-route";
|
||||
import {
|
||||
makeMeasurement,
|
||||
makeSession,
|
||||
makeUser,
|
||||
type SessionFixture,
|
||||
} from "../../kit/factories";
|
||||
import { getPrismaClient, truncateAllTables } from "../setup";
|
||||
|
||||
const NOTE = "felt dizzy after standing up";
|
||||
|
||||
let session: SessionFixture;
|
||||
let weightId: string;
|
||||
|
||||
beforeEach(async () => {
|
||||
await truncateAllTables(getPrismaClient());
|
||||
const user = await makeUser({ timezone: "UTC" });
|
||||
session = await makeSession(user);
|
||||
const weight = await makeMeasurement(user, {
|
||||
notes: null,
|
||||
notesEncrypted: encryptNote(NOTE),
|
||||
});
|
||||
weightId = weight.id;
|
||||
await makeMeasurement(user, {
|
||||
type: "ACTIVITY_STEPS",
|
||||
value: 420,
|
||||
unit: "steps",
|
||||
source: "APPLE_HEALTH",
|
||||
measuredAt: new Date("2026-03-02T09:00:00Z"),
|
||||
externalId: "uuid-steps-1",
|
||||
notes: null,
|
||||
notesEncrypted: encryptNote(NOTE),
|
||||
});
|
||||
});
|
||||
|
||||
type Row = { notes?: string | null };
|
||||
|
||||
async function list(query: Record<string, string | number>) {
|
||||
return callRoute<{ measurements: Row[] }>(listMeasurements, {
|
||||
method: "GET",
|
||||
route: "/api/measurements",
|
||||
query,
|
||||
auth: session,
|
||||
});
|
||||
}
|
||||
|
||||
describe("measurement reads answer the note, never its ciphertext", () => {
|
||||
it("the plain page", async () => {
|
||||
const res = await list({ limit: 10 });
|
||||
expect(res.status).toBe(200);
|
||||
expect(sealedFieldPaths(res.body)).toEqual([]);
|
||||
expect(res.data.measurements.map((m) => m.notes)).toEqual([NOTE, NOTE]);
|
||||
});
|
||||
|
||||
it("the cumulative day drill-down", async () => {
|
||||
const res = await list({ type: "ACTIVITY_STEPS", dayKey: "2026-03-02" });
|
||||
expect(res.status).toBe(200);
|
||||
expect(sealedFieldPaths(res.body)).toEqual([]);
|
||||
expect(res.data.measurements).toHaveLength(1);
|
||||
expect(res.data.measurements[0].notes).toBe(NOTE);
|
||||
});
|
||||
|
||||
it("the day-grouped list and an aggregate", async () => {
|
||||
const queries: Array<Record<string, string>> = [
|
||||
{ type: "ACTIVITY_STEPS", groupBy: "day" },
|
||||
{
|
||||
type: "WEIGHT",
|
||||
aggregate: "daily",
|
||||
from: "2026-03-01T00:00:00.000Z",
|
||||
to: "2026-03-03T00:00:00.000Z",
|
||||
},
|
||||
];
|
||||
for (const query of queries) {
|
||||
const res = await list(query);
|
||||
expect(res.status).toBe(200);
|
||||
expect(sealedFieldPaths(res.body)).toEqual([]);
|
||||
}
|
||||
});
|
||||
|
||||
it("the detail read", async () => {
|
||||
const res = await callRoute<Row>(readMeasurement, {
|
||||
method: "GET",
|
||||
route: "/api/measurements/{id}",
|
||||
params: { id: weightId },
|
||||
auth: session,
|
||||
});
|
||||
expect(res.status).toBe(200);
|
||||
expect(sealedFieldPaths(res.body)).toEqual([]);
|
||||
expect(res.data.notes).toBe(NOTE);
|
||||
});
|
||||
});
|
||||
@@ -0,0 +1,39 @@
|
||||
{
|
||||
"status": 422,
|
||||
"cacheControl": null,
|
||||
"body": {
|
||||
"data": null,
|
||||
"error": "Validation failed",
|
||||
"details": {
|
||||
"issues": [
|
||||
{
|
||||
"path": "slice",
|
||||
"code": "invalid_value",
|
||||
"message": "Invalid input: expected \"summaries\""
|
||||
}
|
||||
]
|
||||
},
|
||||
"meta": {
|
||||
"errorCode": "analytics.invalid_query",
|
||||
"requestId": "<requestId>"
|
||||
}
|
||||
},
|
||||
"events": [
|
||||
{
|
||||
"status": 422,
|
||||
"action": {
|
||||
"name": "analytics.get"
|
||||
},
|
||||
"meta": {
|
||||
"outcome": "invalid_query"
|
||||
},
|
||||
"warnings": null,
|
||||
"error": null
|
||||
}
|
||||
],
|
||||
"effects": [],
|
||||
"stored": {
|
||||
"healthScores": [],
|
||||
"patterns": []
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
+1299
File diff suppressed because it is too large.
Load diff
+2169
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,51 @@
|
||||
{
|
||||
"status": 401,
|
||||
"cacheControl": null,
|
||||
"body": {
|
||||
"data": null,
|
||||
"error": "Not authenticated",
|
||||
"meta": {
|
||||
"errorCode": "auth.missing",
|
||||
"requestId": "<requestId>"
|
||||
}
|
||||
},
|
||||
"events": [
|
||||
{
|
||||
"status": 401,
|
||||
"action": null,
|
||||
"meta": null,
|
||||
"warnings": null,
|
||||
"error": {
|
||||
"type": "HttpError",
|
||||
"message": "Not authenticated"
|
||||
}
|
||||
}
|
||||
],
|
||||
"effects": [],
|
||||
"stored": {
|
||||
"healthScores": [
|
||||
{
|
||||
"dayKey": "day+0",
|
||||
"timezone": "UTC",
|
||||
"composite": 86,
|
||||
"band": "green",
|
||||
"scoreVersion": 4,
|
||||
"composition": [
|
||||
"BLOOD_PRESSURE",
|
||||
"GLYCAEMIA",
|
||||
"ACTIVITY",
|
||||
"SLEEP"
|
||||
],
|
||||
"pillarScores": {
|
||||
"SLEEP": 92,
|
||||
"ACTIVITY": 78,
|
||||
"GLYCAEMIA": 100,
|
||||
"BLOOD_PRESSURE": 73
|
||||
},
|
||||
"inputFingerprint": "5653cd8c051404182d6c6f813a48b1c2ebc3abe1116901466ab7cc1ab70cb276",
|
||||
"computedAt": "anchor+0d+12:00:00"
|
||||
}
|
||||
],
|
||||
"patterns": []
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,383 @@
|
||||
{
|
||||
"status": 200,
|
||||
"body": {
|
||||
"data": {
|
||||
"greeting": {
|
||||
"salutation": "Hi, Sam",
|
||||
"date": "anchor+0d+12:00:00"
|
||||
},
|
||||
"streak": {
|
||||
"currentDays": 120,
|
||||
"longest": 120,
|
||||
"label": "days in a row"
|
||||
},
|
||||
"compliance": {
|
||||
"scheduledToday": 2,
|
||||
"takenToday": 0
|
||||
},
|
||||
"highlightInsight": null,
|
||||
"metrics": [
|
||||
{
|
||||
"id": "weight",
|
||||
"kind": "weight",
|
||||
"titleKey": "dashboard.metric.title.weight",
|
||||
"latestValue": 82,
|
||||
"secondaryValue": null,
|
||||
"unitKey": "dashboard.metric.unit.weight",
|
||||
"unit": null,
|
||||
"sleepStages": null,
|
||||
"sleepSourceDiscrepancy": null,
|
||||
"trend": "flat",
|
||||
"sparkline": [
|
||||
82.2,
|
||||
82.2,
|
||||
82.2,
|
||||
82.1,
|
||||
82.1,
|
||||
82,
|
||||
82
|
||||
],
|
||||
"updatedAt": "<updatedAt>",
|
||||
"allTimeCount": 60,
|
||||
"lastSeenAt": "anchor+0d+06:30:00",
|
||||
"direction": {
|
||||
"direction": "up-bad",
|
||||
"targetPosition": null,
|
||||
"basis": "metric_default"
|
||||
},
|
||||
"trendSentiment": "neutral"
|
||||
},
|
||||
{
|
||||
"id": "bp",
|
||||
"kind": "bloodPressure",
|
||||
"titleKey": "dashboard.metric.title.bloodPressure",
|
||||
"latestValue": 123,
|
||||
"secondaryValue": 78,
|
||||
"unitKey": "dashboard.metric.unit.bloodPressure",
|
||||
"unit": null,
|
||||
"sleepStages": null,
|
||||
"sleepSourceDiscrepancy": null,
|
||||
"trend": "down",
|
||||
"sparkline": [
|
||||
135,
|
||||
128,
|
||||
136,
|
||||
129,
|
||||
137,
|
||||
130,
|
||||
123
|
||||
],
|
||||
"updatedAt": "<updatedAt>",
|
||||
"allTimeCount": 182,
|
||||
"lastSeenAt": "anchor+0d+07:00:00",
|
||||
"direction": {
|
||||
"direction": "up-bad",
|
||||
"targetPosition": "above",
|
||||
"basis": "profile_default"
|
||||
},
|
||||
"trendSentiment": "positive"
|
||||
},
|
||||
{
|
||||
"id": "pulse",
|
||||
"kind": "pulse",
|
||||
"titleKey": "dashboard.metric.title.pulse",
|
||||
"latestValue": 64,
|
||||
"secondaryValue": null,
|
||||
"unitKey": "dashboard.metric.unit.pulse",
|
||||
"unit": null,
|
||||
"sleepStages": null,
|
||||
"sleepSourceDiscrepancy": null,
|
||||
"trend": "flat",
|
||||
"sparkline": [
|
||||
64,
|
||||
69,
|
||||
68,
|
||||
67,
|
||||
66,
|
||||
65,
|
||||
64
|
||||
],
|
||||
"updatedAt": "<updatedAt>",
|
||||
"allTimeCount": 60,
|
||||
"lastSeenAt": "anchor+0d+07:01:00",
|
||||
"direction": {
|
||||
"direction": "hold",
|
||||
"targetPosition": "inside",
|
||||
"basis": "profile_default"
|
||||
},
|
||||
"trendSentiment": "positive"
|
||||
},
|
||||
{
|
||||
"id": "bodyFat",
|
||||
"kind": "bodyFat",
|
||||
"titleKey": "dashboard.metric.title.bodyFat",
|
||||
"latestValue": 24,
|
||||
"secondaryValue": null,
|
||||
"unitKey": "dashboard.metric.unit.bodyFat",
|
||||
"unit": null,
|
||||
"sleepStages": null,
|
||||
"sleepSourceDiscrepancy": null,
|
||||
"trend": "flat",
|
||||
"sparkline": [
|
||||
24.8,
|
||||
24.7,
|
||||
24.6,
|
||||
24.4,
|
||||
24.3,
|
||||
24.1,
|
||||
24
|
||||
],
|
||||
"updatedAt": "<updatedAt>",
|
||||
"allTimeCount": 9,
|
||||
"lastSeenAt": "anchor+0d+06:31:00",
|
||||
"direction": {
|
||||
"direction": "up-bad",
|
||||
"targetPosition": null,
|
||||
"basis": "metric_default"
|
||||
},
|
||||
"trendSentiment": "neutral"
|
||||
},
|
||||
{
|
||||
"id": "glucose",
|
||||
"kind": "glucose",
|
||||
"titleKey": "dashboard.metric.title.glucose",
|
||||
"latestValue": 128,
|
||||
"secondaryValue": null,
|
||||
"unitKey": "dashboard.metric.unit.glucose",
|
||||
"unit": null,
|
||||
"sleepStages": null,
|
||||
"sleepSourceDiscrepancy": null,
|
||||
"trend": "down",
|
||||
"sparkline": [
|
||||
117,
|
||||
115.33333333333333,
|
||||
113.66666666666667,
|
||||
113.33333333333333,
|
||||
111.66666666666667,
|
||||
110,
|
||||
108.33333333333333
|
||||
],
|
||||
"updatedAt": "<updatedAt>",
|
||||
"allTimeCount": 60,
|
||||
"lastSeenAt": "anchor+0d+11:00:00",
|
||||
"direction": {
|
||||
"direction": "up-bad",
|
||||
"targetPosition": null,
|
||||
"basis": "metric_default"
|
||||
},
|
||||
"trendSentiment": "positive"
|
||||
},
|
||||
{
|
||||
"id": "sleep",
|
||||
"kind": "sleep",
|
||||
"titleKey": "dashboard.metric.title.sleep",
|
||||
"latestValue": 5.92,
|
||||
"secondaryValue": null,
|
||||
"unitKey": "dashboard.metric.unit.sleep",
|
||||
"unit": "h",
|
||||
"sleepStages": {
|
||||
"CORE": 3.33,
|
||||
"DEEP": 1.17,
|
||||
"REM": 1.42,
|
||||
"AWAKE": 0.2
|
||||
},
|
||||
"sleepSourceDiscrepancy": null,
|
||||
"trend": "flat",
|
||||
"sparkline": [
|
||||
6.25,
|
||||
6.17,
|
||||
6.67,
|
||||
6.67,
|
||||
7.17,
|
||||
6.25,
|
||||
5.92
|
||||
],
|
||||
"updatedAt": "<updatedAt>",
|
||||
"allTimeCount": 85,
|
||||
"lastSeenAt": "anchor+0d+04:15:00",
|
||||
"direction": {
|
||||
"direction": "up-good",
|
||||
"targetPosition": null,
|
||||
"basis": "metric_default"
|
||||
},
|
||||
"trendSentiment": "neutral"
|
||||
},
|
||||
{
|
||||
"id": "steps",
|
||||
"kind": "steps",
|
||||
"titleKey": "dashboard.metric.title.steps",
|
||||
"latestValue": 6000,
|
||||
"secondaryValue": null,
|
||||
"unitKey": "dashboard.metric.unit.steps",
|
||||
"unit": null,
|
||||
"sleepStages": null,
|
||||
"sleepSourceDiscrepancy": null,
|
||||
"trend": "down",
|
||||
"sparkline": [
|
||||
8238,
|
||||
7865,
|
||||
7492,
|
||||
7119,
|
||||
6746,
|
||||
6373,
|
||||
6000
|
||||
],
|
||||
"updatedAt": "<updatedAt>",
|
||||
"allTimeCount": 30,
|
||||
"lastSeenAt": "anchor+0d+09:00:00",
|
||||
"direction": {
|
||||
"direction": "up-good",
|
||||
"targetPosition": null,
|
||||
"basis": "metric_default"
|
||||
},
|
||||
"trendSentiment": "negative"
|
||||
},
|
||||
{
|
||||
"id": "oxygenSaturation",
|
||||
"kind": "oxygenSaturation",
|
||||
"titleKey": "dashboard.metric.title.oxygenSaturation",
|
||||
"latestValue": 96,
|
||||
"secondaryValue": null,
|
||||
"unitKey": "dashboard.metric.unit.oxygenSaturation",
|
||||
"unit": null,
|
||||
"sleepStages": null,
|
||||
"sleepSourceDiscrepancy": null,
|
||||
"trend": "flat",
|
||||
"sparkline": [
|
||||
96,
|
||||
98,
|
||||
97,
|
||||
96,
|
||||
98,
|
||||
97,
|
||||
96
|
||||
],
|
||||
"updatedAt": "<updatedAt>",
|
||||
"allTimeCount": 10,
|
||||
"lastSeenAt": "anchor+0d+04:40:00",
|
||||
"direction": {
|
||||
"direction": "up-good",
|
||||
"targetPosition": null,
|
||||
"basis": "metric_default"
|
||||
},
|
||||
"trendSentiment": "neutral"
|
||||
},
|
||||
{
|
||||
"id": "mood",
|
||||
"kind": "mood",
|
||||
"titleKey": "dashboard.metric.title.mood",
|
||||
"latestValue": 1,
|
||||
"secondaryValue": null,
|
||||
"unitKey": "dashboard.metric.unit.mood",
|
||||
"unit": null,
|
||||
"sleepStages": null,
|
||||
"sleepSourceDiscrepancy": null,
|
||||
"trend": "down",
|
||||
"sparkline": [
|
||||
4,
|
||||
1,
|
||||
3,
|
||||
5,
|
||||
2,
|
||||
4,
|
||||
1
|
||||
],
|
||||
"updatedAt": "<updatedAt>",
|
||||
"allTimeCount": 45,
|
||||
"lastSeenAt": "anchor+0d+00:00:00",
|
||||
"direction": {
|
||||
"direction": "up-good",
|
||||
"targetPosition": null,
|
||||
"basis": "metric_default"
|
||||
},
|
||||
"trendSentiment": "negative"
|
||||
},
|
||||
{
|
||||
"id": "bmi",
|
||||
"kind": "bmi",
|
||||
"titleKey": "dashboard.metric.title.bmi",
|
||||
"latestValue": 25.9,
|
||||
"secondaryValue": null,
|
||||
"unitKey": "dashboard.metric.unit.bmi",
|
||||
"unit": null,
|
||||
"sleepStages": null,
|
||||
"sleepSourceDiscrepancy": null,
|
||||
"trend": "flat",
|
||||
"sparkline": [
|
||||
25.9,
|
||||
25.9,
|
||||
25.9,
|
||||
25.9,
|
||||
25.9,
|
||||
25.9,
|
||||
25.9
|
||||
],
|
||||
"updatedAt": "<updatedAt>",
|
||||
"allTimeCount": 60,
|
||||
"lastSeenAt": "anchor+0d+06:30:00",
|
||||
"direction": {
|
||||
"direction": "up-bad",
|
||||
"targetPosition": null,
|
||||
"basis": "metric_default"
|
||||
},
|
||||
"trendSentiment": "neutral"
|
||||
}
|
||||
],
|
||||
"sleepRhythm": {
|
||||
"sleepDebt": {
|
||||
"state": "ready",
|
||||
"debtMinutes": 145,
|
||||
"needMinutes": 420,
|
||||
"nightsCounted": 5,
|
||||
"windowNights": 5,
|
||||
"nightsUntilReady": 0,
|
||||
"source": "COMPUTED"
|
||||
},
|
||||
"chronotype": {
|
||||
"state": "ready",
|
||||
"msfMinutes": 63.33521977432794,
|
||||
"msfScMinutes": 63.335219774327925,
|
||||
"band": "extreme_early",
|
||||
"socialJetlagMinutes": 2.402527629787599,
|
||||
"freeNightsCounted": 6,
|
||||
"workNightsCounted": 15,
|
||||
"freeNightsUntilReady": 0
|
||||
},
|
||||
"averagePerNight": {
|
||||
"state": "ready",
|
||||
"averageMinutes": 388,
|
||||
"nightsCounted": 21,
|
||||
"nightsUntilReady": 0
|
||||
}
|
||||
},
|
||||
"lastUpdated": "anchor+0d+12:00:00"
|
||||
},
|
||||
"error": null
|
||||
},
|
||||
"events": [
|
||||
{
|
||||
"status": 200,
|
||||
"action": {
|
||||
"name": "dashboard.summary"
|
||||
},
|
||||
"meta": {
|
||||
"cache.analytics.key_hash": 3272136333,
|
||||
"cache.analytics.outcome": "miss",
|
||||
"dashboard.sub_allTime_ms": 0,
|
||||
"dashboard.sub_bmi_ms": 0,
|
||||
"dashboard.sub_latestEver_ms": 0,
|
||||
"dashboard.sub_medsToday_ms": 0,
|
||||
"dashboard.sub_moodSeries_ms": 0,
|
||||
"dashboard.sub_sleepNights_ms": 0,
|
||||
"dashboard.sub_sparkline_ms": 0,
|
||||
"dashboard.sub_streakDays_ms": 0,
|
||||
"dashboard.sub_streakIntakes_ms": 0,
|
||||
"metrics_emitted": 10,
|
||||
"metrics_gated": 0
|
||||
},
|
||||
"warnings": null,
|
||||
"error": null
|
||||
}
|
||||
],
|
||||
"effects": []
|
||||
}
|
||||
@@ -0,0 +1,374 @@
|
||||
{
|
||||
"status": 200,
|
||||
"body": {
|
||||
"data": {
|
||||
"greeting": {
|
||||
"salutation": "Hi, Sam",
|
||||
"date": "anchor+0d+12:00:00"
|
||||
},
|
||||
"streak": {
|
||||
"currentDays": 120,
|
||||
"longest": 120,
|
||||
"label": "days in a row"
|
||||
},
|
||||
"compliance": {
|
||||
"scheduledToday": 2,
|
||||
"takenToday": 0
|
||||
},
|
||||
"highlightInsight": null,
|
||||
"metrics": [
|
||||
{
|
||||
"id": "weight",
|
||||
"kind": "weight",
|
||||
"titleKey": "dashboard.metric.title.weight",
|
||||
"latestValue": 82,
|
||||
"secondaryValue": null,
|
||||
"unitKey": "dashboard.metric.unit.weight",
|
||||
"unit": null,
|
||||
"sleepStages": null,
|
||||
"sleepSourceDiscrepancy": null,
|
||||
"trend": "flat",
|
||||
"sparkline": [
|
||||
82.2,
|
||||
82.2,
|
||||
82.2,
|
||||
82.1,
|
||||
82.1,
|
||||
82,
|
||||
82
|
||||
],
|
||||
"updatedAt": "<updatedAt>",
|
||||
"allTimeCount": 60,
|
||||
"lastSeenAt": "anchor+0d+06:30:00",
|
||||
"direction": {
|
||||
"direction": "up-bad",
|
||||
"targetPosition": null,
|
||||
"basis": "metric_default"
|
||||
},
|
||||
"trendSentiment": "neutral"
|
||||
},
|
||||
{
|
||||
"id": "bp",
|
||||
"kind": "bloodPressure",
|
||||
"titleKey": "dashboard.metric.title.bloodPressure",
|
||||
"latestValue": 123,
|
||||
"secondaryValue": 78,
|
||||
"unitKey": "dashboard.metric.unit.bloodPressure",
|
||||
"unit": null,
|
||||
"sleepStages": null,
|
||||
"sleepSourceDiscrepancy": null,
|
||||
"trend": "down",
|
||||
"sparkline": [
|
||||
135,
|
||||
128,
|
||||
136,
|
||||
129,
|
||||
137,
|
||||
130,
|
||||
123
|
||||
],
|
||||
"updatedAt": "<updatedAt>",
|
||||
"allTimeCount": 182,
|
||||
"lastSeenAt": "anchor+0d+07:00:00",
|
||||
"direction": {
|
||||
"direction": "up-bad",
|
||||
"targetPosition": "above",
|
||||
"basis": "profile_default"
|
||||
},
|
||||
"trendSentiment": "positive"
|
||||
},
|
||||
{
|
||||
"id": "pulse",
|
||||
"kind": "pulse",
|
||||
"titleKey": "dashboard.metric.title.pulse",
|
||||
"latestValue": 64,
|
||||
"secondaryValue": null,
|
||||
"unitKey": "dashboard.metric.unit.pulse",
|
||||
"unit": null,
|
||||
"sleepStages": null,
|
||||
"sleepSourceDiscrepancy": null,
|
||||
"trend": "flat",
|
||||
"sparkline": [
|
||||
64,
|
||||
69,
|
||||
68,
|
||||
67,
|
||||
66,
|
||||
65,
|
||||
64
|
||||
],
|
||||
"updatedAt": "<updatedAt>",
|
||||
"allTimeCount": 60,
|
||||
"lastSeenAt": "anchor+0d+07:01:00",
|
||||
"direction": {
|
||||
"direction": "hold",
|
||||
"targetPosition": "inside",
|
||||
"basis": "profile_default"
|
||||
},
|
||||
"trendSentiment": "positive"
|
||||
},
|
||||
{
|
||||
"id": "bodyFat",
|
||||
"kind": "bodyFat",
|
||||
"titleKey": "dashboard.metric.title.bodyFat",
|
||||
"latestValue": 24,
|
||||
"secondaryValue": null,
|
||||
"unitKey": "dashboard.metric.unit.bodyFat",
|
||||
"unit": null,
|
||||
"sleepStages": null,
|
||||
"sleepSourceDiscrepancy": null,
|
||||
"trend": "flat",
|
||||
"sparkline": [
|
||||
24.8,
|
||||
24.7,
|
||||
24.6,
|
||||
24.4,
|
||||
24.3,
|
||||
24.1,
|
||||
24
|
||||
],
|
||||
"updatedAt": "<updatedAt>",
|
||||
"allTimeCount": 9,
|
||||
"lastSeenAt": "anchor+0d+06:31:00",
|
||||
"direction": {
|
||||
"direction": "up-bad",
|
||||
"targetPosition": null,
|
||||
"basis": "metric_default"
|
||||
},
|
||||
"trendSentiment": "neutral"
|
||||
},
|
||||
{
|
||||
"id": "glucose",
|
||||
"kind": "glucose",
|
||||
"titleKey": "dashboard.metric.title.glucose",
|
||||
"latestValue": 128,
|
||||
"secondaryValue": null,
|
||||
"unitKey": "dashboard.metric.unit.glucose",
|
||||
"unit": null,
|
||||
"sleepStages": null,
|
||||
"sleepSourceDiscrepancy": null,
|
||||
"trend": "down",
|
||||
"sparkline": [
|
||||
117,
|
||||
115.33333333333333,
|
||||
113.66666666666667,
|
||||
113.33333333333333,
|
||||
111.66666666666667,
|
||||
110,
|
||||
108.33333333333333
|
||||
],
|
||||
"updatedAt": "<updatedAt>",
|
||||
"allTimeCount": 60,
|
||||
"lastSeenAt": "anchor+0d+11:00:00",
|
||||
"direction": {
|
||||
"direction": "up-bad",
|
||||
"targetPosition": null,
|
||||
"basis": "metric_default"
|
||||
},
|
||||
"trendSentiment": "positive"
|
||||
},
|
||||
{
|
||||
"id": "sleep",
|
||||
"kind": "sleep",
|
||||
"titleKey": "dashboard.metric.title.sleep",
|
||||
"latestValue": 5.92,
|
||||
"secondaryValue": null,
|
||||
"unitKey": "dashboard.metric.unit.sleep",
|
||||
"unit": "h",
|
||||
"sleepStages": {
|
||||
"CORE": 3.33,
|
||||
"DEEP": 1.17,
|
||||
"REM": 1.42,
|
||||
"AWAKE": 0.2
|
||||
},
|
||||
"sleepSourceDiscrepancy": null,
|
||||
"trend": "flat",
|
||||
"sparkline": [
|
||||
6.25,
|
||||
6.17,
|
||||
6.67,
|
||||
6.67,
|
||||
7.17,
|
||||
6.25,
|
||||
5.92
|
||||
],
|
||||
"updatedAt": "<updatedAt>",
|
||||
"allTimeCount": 85,
|
||||
"lastSeenAt": "anchor+0d+04:15:00",
|
||||
"direction": {
|
||||
"direction": "up-good",
|
||||
"targetPosition": null,
|
||||
"basis": "metric_default"
|
||||
},
|
||||
"trendSentiment": "neutral"
|
||||
},
|
||||
{
|
||||
"id": "steps",
|
||||
"kind": "steps",
|
||||
"titleKey": "dashboard.metric.title.steps",
|
||||
"latestValue": 6000,
|
||||
"secondaryValue": null,
|
||||
"unitKey": "dashboard.metric.unit.steps",
|
||||
"unit": null,
|
||||
"sleepStages": null,
|
||||
"sleepSourceDiscrepancy": null,
|
||||
"trend": "down",
|
||||
"sparkline": [
|
||||
8238,
|
||||
7865,
|
||||
7492,
|
||||
7119,
|
||||
6746,
|
||||
6373,
|
||||
6000
|
||||
],
|
||||
"updatedAt": "<updatedAt>",
|
||||
"allTimeCount": 30,
|
||||
"lastSeenAt": "anchor+0d+09:00:00",
|
||||
"direction": {
|
||||
"direction": "up-good",
|
||||
"targetPosition": null,
|
||||
"basis": "metric_default"
|
||||
},
|
||||
"trendSentiment": "negative"
|
||||
},
|
||||
{
|
||||
"id": "oxygenSaturation",
|
||||
"kind": "oxygenSaturation",
|
||||
"titleKey": "dashboard.metric.title.oxygenSaturation",
|
||||
"latestValue": 96,
|
||||
"secondaryValue": null,
|
||||
"unitKey": "dashboard.metric.unit.oxygenSaturation",
|
||||
"unit": null,
|
||||
"sleepStages": null,
|
||||
"sleepSourceDiscrepancy": null,
|
||||
"trend": "flat",
|
||||
"sparkline": [
|
||||
96,
|
||||
98,
|
||||
97,
|
||||
96,
|
||||
98,
|
||||
97,
|
||||
96
|
||||
],
|
||||
"updatedAt": "<updatedAt>",
|
||||
"allTimeCount": 10,
|
||||
"lastSeenAt": "anchor+0d+04:40:00",
|
||||
"direction": {
|
||||
"direction": "up-good",
|
||||
"targetPosition": null,
|
||||
"basis": "metric_default"
|
||||
},
|
||||
"trendSentiment": "neutral"
|
||||
},
|
||||
{
|
||||
"id": "mood",
|
||||
"kind": "mood",
|
||||
"titleKey": "dashboard.metric.title.mood",
|
||||
"latestValue": 1,
|
||||
"secondaryValue": null,
|
||||
"unitKey": "dashboard.metric.unit.mood",
|
||||
"unit": null,
|
||||
"sleepStages": null,
|
||||
"sleepSourceDiscrepancy": null,
|
||||
"trend": "down",
|
||||
"sparkline": [
|
||||
4,
|
||||
1,
|
||||
3,
|
||||
5,
|
||||
2,
|
||||
4,
|
||||
1
|
||||
],
|
||||
"updatedAt": "<updatedAt>",
|
||||
"allTimeCount": 45,
|
||||
"lastSeenAt": "anchor+0d+00:00:00",
|
||||
"direction": {
|
||||
"direction": "up-good",
|
||||
"targetPosition": null,
|
||||
"basis": "metric_default"
|
||||
},
|
||||
"trendSentiment": "negative"
|
||||
},
|
||||
{
|
||||
"id": "bmi",
|
||||
"kind": "bmi",
|
||||
"titleKey": "dashboard.metric.title.bmi",
|
||||
"latestValue": 25.9,
|
||||
"secondaryValue": null,
|
||||
"unitKey": "dashboard.metric.unit.bmi",
|
||||
"unit": null,
|
||||
"sleepStages": null,
|
||||
"sleepSourceDiscrepancy": null,
|
||||
"trend": "flat",
|
||||
"sparkline": [
|
||||
25.9,
|
||||
25.9,
|
||||
25.9,
|
||||
25.9,
|
||||
25.9,
|
||||
25.9,
|
||||
25.9
|
||||
],
|
||||
"updatedAt": "<updatedAt>",
|
||||
"allTimeCount": 60,
|
||||
"lastSeenAt": "anchor+0d+06:30:00",
|
||||
"direction": {
|
||||
"direction": "up-bad",
|
||||
"targetPosition": null,
|
||||
"basis": "metric_default"
|
||||
},
|
||||
"trendSentiment": "neutral"
|
||||
}
|
||||
],
|
||||
"sleepRhythm": {
|
||||
"sleepDebt": {
|
||||
"state": "ready",
|
||||
"debtMinutes": 145,
|
||||
"needMinutes": 420,
|
||||
"nightsCounted": 5,
|
||||
"windowNights": 5,
|
||||
"nightsUntilReady": 0,
|
||||
"source": "COMPUTED"
|
||||
},
|
||||
"chronotype": {
|
||||
"state": "ready",
|
||||
"msfMinutes": 63.33521977432794,
|
||||
"msfScMinutes": 63.335219774327925,
|
||||
"band": "extreme_early",
|
||||
"socialJetlagMinutes": 2.402527629787599,
|
||||
"freeNightsCounted": 6,
|
||||
"workNightsCounted": 15,
|
||||
"freeNightsUntilReady": 0
|
||||
},
|
||||
"averagePerNight": {
|
||||
"state": "ready",
|
||||
"averageMinutes": 388,
|
||||
"nightsCounted": 21,
|
||||
"nightsUntilReady": 0
|
||||
}
|
||||
},
|
||||
"lastUpdated": "anchor+0d+12:00:00"
|
||||
},
|
||||
"error": null
|
||||
},
|
||||
"events": [
|
||||
{
|
||||
"status": 200,
|
||||
"action": {
|
||||
"name": "dashboard.summary"
|
||||
},
|
||||
"meta": {
|
||||
"cache.analytics.key_hash": 3272136333,
|
||||
"cache.analytics.outcome": "hit",
|
||||
"metrics_emitted": 10,
|
||||
"metrics_gated": 0
|
||||
},
|
||||
"warnings": null,
|
||||
"error": null
|
||||
}
|
||||
],
|
||||
"effects": []
|
||||
}
|
||||
+279
@@ -0,0 +1,279 @@
|
||||
{
|
||||
"status": 200,
|
||||
"body": {
|
||||
"data": {
|
||||
"greeting": {
|
||||
"salutation": "Hi, Sam",
|
||||
"date": "anchor+0d+12:00:00"
|
||||
},
|
||||
"streak": {
|
||||
"currentDays": 120,
|
||||
"longest": 120,
|
||||
"label": "days in a row"
|
||||
},
|
||||
"compliance": {
|
||||
"scheduledToday": 2,
|
||||
"takenToday": 0
|
||||
},
|
||||
"highlightInsight": null,
|
||||
"metrics": [
|
||||
{
|
||||
"id": "weight",
|
||||
"kind": "weight",
|
||||
"titleKey": "dashboard.metric.title.weight",
|
||||
"latestValue": 82,
|
||||
"secondaryValue": null,
|
||||
"unitKey": "dashboard.metric.unit.weight",
|
||||
"unit": null,
|
||||
"sleepStages": null,
|
||||
"sleepSourceDiscrepancy": null,
|
||||
"trend": "flat",
|
||||
"sparkline": [
|
||||
82.2,
|
||||
82.2,
|
||||
82.2,
|
||||
82.1,
|
||||
82.1,
|
||||
82,
|
||||
82
|
||||
],
|
||||
"updatedAt": "<updatedAt>",
|
||||
"allTimeCount": 60,
|
||||
"lastSeenAt": "anchor+0d+06:30:00",
|
||||
"direction": {
|
||||
"direction": "up-bad",
|
||||
"targetPosition": null,
|
||||
"basis": "metric_default"
|
||||
},
|
||||
"trendSentiment": "neutral"
|
||||
},
|
||||
{
|
||||
"id": "bp",
|
||||
"kind": "bloodPressure",
|
||||
"titleKey": "dashboard.metric.title.bloodPressure",
|
||||
"latestValue": 123,
|
||||
"secondaryValue": 78,
|
||||
"unitKey": "dashboard.metric.unit.bloodPressure",
|
||||
"unit": null,
|
||||
"sleepStages": null,
|
||||
"sleepSourceDiscrepancy": null,
|
||||
"trend": "down",
|
||||
"sparkline": [
|
||||
135,
|
||||
128,
|
||||
136,
|
||||
129,
|
||||
137,
|
||||
130,
|
||||
123
|
||||
],
|
||||
"updatedAt": "<updatedAt>",
|
||||
"allTimeCount": 182,
|
||||
"lastSeenAt": "anchor+0d+07:00:00",
|
||||
"direction": {
|
||||
"direction": "up-bad",
|
||||
"targetPosition": "above",
|
||||
"basis": "profile_default"
|
||||
},
|
||||
"trendSentiment": "positive"
|
||||
},
|
||||
{
|
||||
"id": "pulse",
|
||||
"kind": "pulse",
|
||||
"titleKey": "dashboard.metric.title.pulse",
|
||||
"latestValue": 64,
|
||||
"secondaryValue": null,
|
||||
"unitKey": "dashboard.metric.unit.pulse",
|
||||
"unit": null,
|
||||
"sleepStages": null,
|
||||
"sleepSourceDiscrepancy": null,
|
||||
"trend": "flat",
|
||||
"sparkline": [
|
||||
64,
|
||||
69,
|
||||
68,
|
||||
67,
|
||||
66,
|
||||
65,
|
||||
64
|
||||
],
|
||||
"updatedAt": "<updatedAt>",
|
||||
"allTimeCount": 60,
|
||||
"lastSeenAt": "anchor+0d+07:01:00",
|
||||
"direction": {
|
||||
"direction": "hold",
|
||||
"targetPosition": "inside",
|
||||
"basis": "profile_default"
|
||||
},
|
||||
"trendSentiment": "positive"
|
||||
},
|
||||
{
|
||||
"id": "bodyFat",
|
||||
"kind": "bodyFat",
|
||||
"titleKey": "dashboard.metric.title.bodyFat",
|
||||
"latestValue": 24,
|
||||
"secondaryValue": null,
|
||||
"unitKey": "dashboard.metric.unit.bodyFat",
|
||||
"unit": null,
|
||||
"sleepStages": null,
|
||||
"sleepSourceDiscrepancy": null,
|
||||
"trend": "flat",
|
||||
"sparkline": [
|
||||
24.8,
|
||||
24.7,
|
||||
24.6,
|
||||
24.4,
|
||||
24.3,
|
||||
24.1,
|
||||
24
|
||||
],
|
||||
"updatedAt": "<updatedAt>",
|
||||
"allTimeCount": 9,
|
||||
"lastSeenAt": "anchor+0d+06:31:00",
|
||||
"direction": {
|
||||
"direction": "up-bad",
|
||||
"targetPosition": null,
|
||||
"basis": "metric_default"
|
||||
},
|
||||
"trendSentiment": "neutral"
|
||||
},
|
||||
{
|
||||
"id": "steps",
|
||||
"kind": "steps",
|
||||
"titleKey": "dashboard.metric.title.steps",
|
||||
"latestValue": 6000,
|
||||
"secondaryValue": null,
|
||||
"unitKey": "dashboard.metric.unit.steps",
|
||||
"unit": null,
|
||||
"sleepStages": null,
|
||||
"sleepSourceDiscrepancy": null,
|
||||
"trend": "down",
|
||||
"sparkline": [
|
||||
8238,
|
||||
7865,
|
||||
7492,
|
||||
7119,
|
||||
6746,
|
||||
6373,
|
||||
6000
|
||||
],
|
||||
"updatedAt": "<updatedAt>",
|
||||
"allTimeCount": 30,
|
||||
"lastSeenAt": "anchor+0d+09:00:00",
|
||||
"direction": {
|
||||
"direction": "up-good",
|
||||
"targetPosition": null,
|
||||
"basis": "metric_default"
|
||||
},
|
||||
"trendSentiment": "negative"
|
||||
},
|
||||
{
|
||||
"id": "oxygenSaturation",
|
||||
"kind": "oxygenSaturation",
|
||||
"titleKey": "dashboard.metric.title.oxygenSaturation",
|
||||
"latestValue": 96,
|
||||
"secondaryValue": null,
|
||||
"unitKey": "dashboard.metric.unit.oxygenSaturation",
|
||||
"unit": null,
|
||||
"sleepStages": null,
|
||||
"sleepSourceDiscrepancy": null,
|
||||
"trend": "flat",
|
||||
"sparkline": [
|
||||
96,
|
||||
98,
|
||||
97,
|
||||
96,
|
||||
98,
|
||||
97,
|
||||
96
|
||||
],
|
||||
"updatedAt": "<updatedAt>",
|
||||
"allTimeCount": 10,
|
||||
"lastSeenAt": "anchor+0d+04:40:00",
|
||||
"direction": {
|
||||
"direction": "up-good",
|
||||
"targetPosition": null,
|
||||
"basis": "metric_default"
|
||||
},
|
||||
"trendSentiment": "neutral"
|
||||
},
|
||||
{
|
||||
"id": "bmi",
|
||||
"kind": "bmi",
|
||||
"titleKey": "dashboard.metric.title.bmi",
|
||||
"latestValue": 25.9,
|
||||
"secondaryValue": null,
|
||||
"unitKey": "dashboard.metric.unit.bmi",
|
||||
"unit": null,
|
||||
"sleepStages": null,
|
||||
"sleepSourceDiscrepancy": null,
|
||||
"trend": "flat",
|
||||
"sparkline": [
|
||||
25.9,
|
||||
25.9,
|
||||
25.9,
|
||||
25.9,
|
||||
25.9,
|
||||
25.9,
|
||||
25.9
|
||||
],
|
||||
"updatedAt": "<updatedAt>",
|
||||
"allTimeCount": 60,
|
||||
"lastSeenAt": "anchor+0d+06:30:00",
|
||||
"direction": {
|
||||
"direction": "up-bad",
|
||||
"targetPosition": null,
|
||||
"basis": "metric_default"
|
||||
},
|
||||
"trendSentiment": "neutral"
|
||||
}
|
||||
],
|
||||
"sleepRhythm": {
|
||||
"sleepDebt": {
|
||||
"state": "ready",
|
||||
"debtMinutes": 145,
|
||||
"needMinutes": 420,
|
||||
"nightsCounted": 5,
|
||||
"windowNights": 5,
|
||||
"nightsUntilReady": 0,
|
||||
"source": "COMPUTED"
|
||||
},
|
||||
"chronotype": {
|
||||
"state": "ready",
|
||||
"msfMinutes": 63.33521977432794,
|
||||
"msfScMinutes": 63.335219774327925,
|
||||
"band": "extreme_early",
|
||||
"socialJetlagMinutes": 2.402527629787599,
|
||||
"freeNightsCounted": 6,
|
||||
"workNightsCounted": 15,
|
||||
"freeNightsUntilReady": 0
|
||||
},
|
||||
"averagePerNight": {
|
||||
"state": "ready",
|
||||
"averageMinutes": 388,
|
||||
"nightsCounted": 21,
|
||||
"nightsUntilReady": 0
|
||||
}
|
||||
},
|
||||
"lastUpdated": "anchor+0d+12:00:00"
|
||||
},
|
||||
"error": null
|
||||
},
|
||||
"events": [
|
||||
{
|
||||
"status": 200,
|
||||
"action": {
|
||||
"name": "dashboard.summary"
|
||||
},
|
||||
"meta": {
|
||||
"cache.analytics.key_hash": 3272136333,
|
||||
"cache.analytics.outcome": "hit",
|
||||
"metrics_emitted": 7,
|
||||
"metrics_gated": 3
|
||||
},
|
||||
"warnings": null,
|
||||
"error": null
|
||||
}
|
||||
],
|
||||
"effects": []
|
||||
}
|
||||
+374
@@ -0,0 +1,374 @@
|
||||
{
|
||||
"status": 200,
|
||||
"body": {
|
||||
"data": {
|
||||
"greeting": {
|
||||
"salutation": "Hi, Sam",
|
||||
"date": "anchor+0d+12:00:00"
|
||||
},
|
||||
"streak": {
|
||||
"currentDays": 120,
|
||||
"longest": 120,
|
||||
"label": "days in a row"
|
||||
},
|
||||
"compliance": {
|
||||
"scheduledToday": 2,
|
||||
"takenToday": 0
|
||||
},
|
||||
"highlightInsight": null,
|
||||
"metrics": [
|
||||
{
|
||||
"id": "weight",
|
||||
"kind": "weight",
|
||||
"titleKey": "dashboard.metric.title.weight",
|
||||
"latestValue": 82,
|
||||
"secondaryValue": null,
|
||||
"unitKey": "dashboard.metric.unit.weight",
|
||||
"unit": null,
|
||||
"sleepStages": null,
|
||||
"sleepSourceDiscrepancy": null,
|
||||
"trend": "flat",
|
||||
"sparkline": [
|
||||
82.2,
|
||||
82.2,
|
||||
82.2,
|
||||
82.1,
|
||||
82.1,
|
||||
82,
|
||||
82
|
||||
],
|
||||
"updatedAt": "<updatedAt>",
|
||||
"allTimeCount": 60,
|
||||
"lastSeenAt": "anchor+0d+06:30:00",
|
||||
"direction": {
|
||||
"direction": "up-bad",
|
||||
"targetPosition": null,
|
||||
"basis": "metric_default"
|
||||
},
|
||||
"trendSentiment": "neutral"
|
||||
},
|
||||
{
|
||||
"id": "bp",
|
||||
"kind": "bloodPressure",
|
||||
"titleKey": "dashboard.metric.title.bloodPressure",
|
||||
"latestValue": 123,
|
||||
"secondaryValue": 78,
|
||||
"unitKey": "dashboard.metric.unit.bloodPressure",
|
||||
"unit": null,
|
||||
"sleepStages": null,
|
||||
"sleepSourceDiscrepancy": null,
|
||||
"trend": "down",
|
||||
"sparkline": [
|
||||
135,
|
||||
128,
|
||||
136,
|
||||
129,
|
||||
137,
|
||||
130,
|
||||
123
|
||||
],
|
||||
"updatedAt": "<updatedAt>",
|
||||
"allTimeCount": 182,
|
||||
"lastSeenAt": "anchor+0d+07:00:00",
|
||||
"direction": {
|
||||
"direction": "up-bad",
|
||||
"targetPosition": "above",
|
||||
"basis": "profile_default"
|
||||
},
|
||||
"trendSentiment": "positive"
|
||||
},
|
||||
{
|
||||
"id": "pulse",
|
||||
"kind": "pulse",
|
||||
"titleKey": "dashboard.metric.title.pulse",
|
||||
"latestValue": 64,
|
||||
"secondaryValue": null,
|
||||
"unitKey": "dashboard.metric.unit.pulse",
|
||||
"unit": null,
|
||||
"sleepStages": null,
|
||||
"sleepSourceDiscrepancy": null,
|
||||
"trend": "flat",
|
||||
"sparkline": [
|
||||
64,
|
||||
69,
|
||||
68,
|
||||
67,
|
||||
66,
|
||||
65,
|
||||
64
|
||||
],
|
||||
"updatedAt": "<updatedAt>",
|
||||
"allTimeCount": 60,
|
||||
"lastSeenAt": "anchor+0d+07:01:00",
|
||||
"direction": {
|
||||
"direction": "hold",
|
||||
"targetPosition": "inside",
|
||||
"basis": "profile_default"
|
||||
},
|
||||
"trendSentiment": "positive"
|
||||
},
|
||||
{
|
||||
"id": "bodyFat",
|
||||
"kind": "bodyFat",
|
||||
"titleKey": "dashboard.metric.title.bodyFat",
|
||||
"latestValue": 24,
|
||||
"secondaryValue": null,
|
||||
"unitKey": "dashboard.metric.unit.bodyFat",
|
||||
"unit": null,
|
||||
"sleepStages": null,
|
||||
"sleepSourceDiscrepancy": null,
|
||||
"trend": "flat",
|
||||
"sparkline": [
|
||||
24.8,
|
||||
24.7,
|
||||
24.6,
|
||||
24.4,
|
||||
24.3,
|
||||
24.1,
|
||||
24
|
||||
],
|
||||
"updatedAt": "<updatedAt>",
|
||||
"allTimeCount": 9,
|
||||
"lastSeenAt": "anchor+0d+06:31:00",
|
||||
"direction": {
|
||||
"direction": "up-bad",
|
||||
"targetPosition": null,
|
||||
"basis": "metric_default"
|
||||
},
|
||||
"trendSentiment": "neutral"
|
||||
},
|
||||
{
|
||||
"id": "glucose",
|
||||
"kind": "glucose",
|
||||
"titleKey": "dashboard.metric.title.glucose",
|
||||
"latestValue": 128,
|
||||
"secondaryValue": null,
|
||||
"unitKey": "dashboard.metric.unit.glucose",
|
||||
"unit": null,
|
||||
"sleepStages": null,
|
||||
"sleepSourceDiscrepancy": null,
|
||||
"trend": "down",
|
||||
"sparkline": [
|
||||
117,
|
||||
115.33333333333333,
|
||||
113.66666666666667,
|
||||
113.33333333333333,
|
||||
111.66666666666667,
|
||||
110,
|
||||
108.33333333333333
|
||||
],
|
||||
"updatedAt": "<updatedAt>",
|
||||
"allTimeCount": 60,
|
||||
"lastSeenAt": "anchor+0d+11:00:00",
|
||||
"direction": {
|
||||
"direction": "up-bad",
|
||||
"targetPosition": null,
|
||||
"basis": "metric_default"
|
||||
},
|
||||
"trendSentiment": "positive"
|
||||
},
|
||||
{
|
||||
"id": "sleep",
|
||||
"kind": "sleep",
|
||||
"titleKey": "dashboard.metric.title.sleep",
|
||||
"latestValue": 5.92,
|
||||
"secondaryValue": null,
|
||||
"unitKey": "dashboard.metric.unit.sleep",
|
||||
"unit": "h",
|
||||
"sleepStages": {
|
||||
"CORE": 3.33,
|
||||
"DEEP": 1.17,
|
||||
"REM": 1.42,
|
||||
"AWAKE": 0.2
|
||||
},
|
||||
"sleepSourceDiscrepancy": null,
|
||||
"trend": "flat",
|
||||
"sparkline": [
|
||||
6.25,
|
||||
6.17,
|
||||
6.67,
|
||||
6.67,
|
||||
7.17,
|
||||
6.25,
|
||||
5.92
|
||||
],
|
||||
"updatedAt": "<updatedAt>",
|
||||
"allTimeCount": 85,
|
||||
"lastSeenAt": "anchor+0d+04:15:00",
|
||||
"direction": {
|
||||
"direction": "up-good",
|
||||
"targetPosition": null,
|
||||
"basis": "metric_default"
|
||||
},
|
||||
"trendSentiment": "neutral"
|
||||
},
|
||||
{
|
||||
"id": "steps",
|
||||
"kind": "steps",
|
||||
"titleKey": "dashboard.metric.title.steps",
|
||||
"latestValue": 6000,
|
||||
"secondaryValue": null,
|
||||
"unitKey": "dashboard.metric.unit.steps",
|
||||
"unit": null,
|
||||
"sleepStages": null,
|
||||
"sleepSourceDiscrepancy": null,
|
||||
"trend": "down",
|
||||
"sparkline": [
|
||||
8238,
|
||||
7865,
|
||||
7492,
|
||||
7119,
|
||||
6746,
|
||||
6373,
|
||||
6000
|
||||
],
|
||||
"updatedAt": "<updatedAt>",
|
||||
"allTimeCount": 30,
|
||||
"lastSeenAt": "anchor+0d+09:00:00",
|
||||
"direction": {
|
||||
"direction": "up-good",
|
||||
"targetPosition": null,
|
||||
"basis": "metric_default"
|
||||
},
|
||||
"trendSentiment": "negative"
|
||||
},
|
||||
{
|
||||
"id": "oxygenSaturation",
|
||||
"kind": "oxygenSaturation",
|
||||
"titleKey": "dashboard.metric.title.oxygenSaturation",
|
||||
"latestValue": 96,
|
||||
"secondaryValue": null,
|
||||
"unitKey": "dashboard.metric.unit.oxygenSaturation",
|
||||
"unit": null,
|
||||
"sleepStages": null,
|
||||
"sleepSourceDiscrepancy": null,
|
||||
"trend": "flat",
|
||||
"sparkline": [
|
||||
96,
|
||||
98,
|
||||
97,
|
||||
96,
|
||||
98,
|
||||
97,
|
||||
96
|
||||
],
|
||||
"updatedAt": "<updatedAt>",
|
||||
"allTimeCount": 10,
|
||||
"lastSeenAt": "anchor+0d+04:40:00",
|
||||
"direction": {
|
||||
"direction": "up-good",
|
||||
"targetPosition": null,
|
||||
"basis": "metric_default"
|
||||
},
|
||||
"trendSentiment": "neutral"
|
||||
},
|
||||
{
|
||||
"id": "mood",
|
||||
"kind": "mood",
|
||||
"titleKey": "dashboard.metric.title.mood",
|
||||
"latestValue": 1,
|
||||
"secondaryValue": null,
|
||||
"unitKey": "dashboard.metric.unit.mood",
|
||||
"unit": null,
|
||||
"sleepStages": null,
|
||||
"sleepSourceDiscrepancy": null,
|
||||
"trend": "down",
|
||||
"sparkline": [
|
||||
4,
|
||||
1,
|
||||
3,
|
||||
5,
|
||||
2,
|
||||
4,
|
||||
1
|
||||
],
|
||||
"updatedAt": "<updatedAt>",
|
||||
"allTimeCount": 45,
|
||||
"lastSeenAt": "anchor+0d+00:00:00",
|
||||
"direction": {
|
||||
"direction": "up-good",
|
||||
"targetPosition": null,
|
||||
"basis": "metric_default"
|
||||
},
|
||||
"trendSentiment": "negative"
|
||||
},
|
||||
{
|
||||
"id": "bmi",
|
||||
"kind": "bmi",
|
||||
"titleKey": "dashboard.metric.title.bmi",
|
||||
"latestValue": 25.9,
|
||||
"secondaryValue": null,
|
||||
"unitKey": "dashboard.metric.unit.bmi",
|
||||
"unit": null,
|
||||
"sleepStages": null,
|
||||
"sleepSourceDiscrepancy": null,
|
||||
"trend": "flat",
|
||||
"sparkline": [
|
||||
25.9,
|
||||
25.9,
|
||||
25.9,
|
||||
25.9,
|
||||
25.9,
|
||||
25.9,
|
||||
25.9
|
||||
],
|
||||
"updatedAt": "<updatedAt>",
|
||||
"allTimeCount": 60,
|
||||
"lastSeenAt": "anchor+0d+06:30:00",
|
||||
"direction": {
|
||||
"direction": "up-bad",
|
||||
"targetPosition": null,
|
||||
"basis": "metric_default"
|
||||
},
|
||||
"trendSentiment": "neutral"
|
||||
}
|
||||
],
|
||||
"sleepRhythm": {
|
||||
"sleepDebt": {
|
||||
"state": "ready",
|
||||
"debtMinutes": 145,
|
||||
"needMinutes": 420,
|
||||
"nightsCounted": 5,
|
||||
"windowNights": 5,
|
||||
"nightsUntilReady": 0,
|
||||
"source": "COMPUTED"
|
||||
},
|
||||
"chronotype": {
|
||||
"state": "ready",
|
||||
"msfMinutes": 63.33521977432794,
|
||||
"msfScMinutes": 63.335219774327925,
|
||||
"band": "extreme_early",
|
||||
"socialJetlagMinutes": 2.402527629787599,
|
||||
"freeNightsCounted": 6,
|
||||
"workNightsCounted": 15,
|
||||
"freeNightsUntilReady": 0
|
||||
},
|
||||
"averagePerNight": {
|
||||
"state": "ready",
|
||||
"averageMinutes": 388,
|
||||
"nightsCounted": 21,
|
||||
"nightsUntilReady": 0
|
||||
}
|
||||
},
|
||||
"lastUpdated": "anchor+0d+12:00:00"
|
||||
},
|
||||
"error": null
|
||||
},
|
||||
"events": [
|
||||
{
|
||||
"status": 200,
|
||||
"action": {
|
||||
"name": "dashboard.summary"
|
||||
},
|
||||
"meta": {
|
||||
"cache.analytics.key_hash": 3272136333,
|
||||
"cache.analytics.outcome": "hit",
|
||||
"metrics_emitted": 10,
|
||||
"metrics_gated": 0
|
||||
},
|
||||
"warnings": null,
|
||||
"error": null
|
||||
}
|
||||
],
|
||||
"effects": []
|
||||
}
|
||||
@@ -0,0 +1,374 @@
|
||||
{
|
||||
"status": 200,
|
||||
"body": {
|
||||
"data": {
|
||||
"greeting": {
|
||||
"salutation": "Hi, Sam",
|
||||
"date": "anchor+0d+12:00:00"
|
||||
},
|
||||
"streak": {
|
||||
"currentDays": 120,
|
||||
"longest": 120,
|
||||
"label": "days in a row"
|
||||
},
|
||||
"compliance": {
|
||||
"scheduledToday": 2,
|
||||
"takenToday": 0
|
||||
},
|
||||
"highlightInsight": null,
|
||||
"metrics": [
|
||||
{
|
||||
"id": "weight",
|
||||
"kind": "weight",
|
||||
"titleKey": "dashboard.metric.title.weight",
|
||||
"latestValue": 82,
|
||||
"secondaryValue": null,
|
||||
"unitKey": "dashboard.metric.unit.weight",
|
||||
"unit": null,
|
||||
"sleepStages": null,
|
||||
"sleepSourceDiscrepancy": null,
|
||||
"trend": "flat",
|
||||
"sparkline": [
|
||||
82.2,
|
||||
82.2,
|
||||
82.2,
|
||||
82.1,
|
||||
82.1,
|
||||
82,
|
||||
82
|
||||
],
|
||||
"updatedAt": "<updatedAt>",
|
||||
"allTimeCount": 60,
|
||||
"lastSeenAt": "anchor+0d+06:30:00",
|
||||
"direction": {
|
||||
"direction": "up-bad",
|
||||
"targetPosition": null,
|
||||
"basis": "metric_default"
|
||||
},
|
||||
"trendSentiment": "neutral"
|
||||
},
|
||||
{
|
||||
"id": "bp",
|
||||
"kind": "bloodPressure",
|
||||
"titleKey": "dashboard.metric.title.bloodPressure",
|
||||
"latestValue": 123,
|
||||
"secondaryValue": 78,
|
||||
"unitKey": "dashboard.metric.unit.bloodPressure",
|
||||
"unit": null,
|
||||
"sleepStages": null,
|
||||
"sleepSourceDiscrepancy": null,
|
||||
"trend": "down",
|
||||
"sparkline": [
|
||||
135,
|
||||
128,
|
||||
136,
|
||||
129,
|
||||
137,
|
||||
130,
|
||||
123
|
||||
],
|
||||
"updatedAt": "<updatedAt>",
|
||||
"allTimeCount": 182,
|
||||
"lastSeenAt": "anchor+0d+07:00:00",
|
||||
"direction": {
|
||||
"direction": "up-bad",
|
||||
"targetPosition": "above",
|
||||
"basis": "profile_default"
|
||||
},
|
||||
"trendSentiment": "positive"
|
||||
},
|
||||
{
|
||||
"id": "pulse",
|
||||
"kind": "pulse",
|
||||
"titleKey": "dashboard.metric.title.pulse",
|
||||
"latestValue": 64,
|
||||
"secondaryValue": null,
|
||||
"unitKey": "dashboard.metric.unit.pulse",
|
||||
"unit": null,
|
||||
"sleepStages": null,
|
||||
"sleepSourceDiscrepancy": null,
|
||||
"trend": "flat",
|
||||
"sparkline": [
|
||||
64,
|
||||
69,
|
||||
68,
|
||||
67,
|
||||
66,
|
||||
65,
|
||||
64
|
||||
],
|
||||
"updatedAt": "<updatedAt>",
|
||||
"allTimeCount": 60,
|
||||
"lastSeenAt": "anchor+0d+07:01:00",
|
||||
"direction": {
|
||||
"direction": "hold",
|
||||
"targetPosition": "inside",
|
||||
"basis": "profile_default"
|
||||
},
|
||||
"trendSentiment": "positive"
|
||||
},
|
||||
{
|
||||
"id": "bodyFat",
|
||||
"kind": "bodyFat",
|
||||
"titleKey": "dashboard.metric.title.bodyFat",
|
||||
"latestValue": 24,
|
||||
"secondaryValue": null,
|
||||
"unitKey": "dashboard.metric.unit.bodyFat",
|
||||
"unit": null,
|
||||
"sleepStages": null,
|
||||
"sleepSourceDiscrepancy": null,
|
||||
"trend": "flat",
|
||||
"sparkline": [
|
||||
24.8,
|
||||
24.7,
|
||||
24.6,
|
||||
24.4,
|
||||
24.3,
|
||||
24.1,
|
||||
24
|
||||
],
|
||||
"updatedAt": "<updatedAt>",
|
||||
"allTimeCount": 9,
|
||||
"lastSeenAt": "anchor+0d+06:31:00",
|
||||
"direction": {
|
||||
"direction": "up-bad",
|
||||
"targetPosition": null,
|
||||
"basis": "metric_default"
|
||||
},
|
||||
"trendSentiment": "neutral"
|
||||
},
|
||||
{
|
||||
"id": "glucose",
|
||||
"kind": "glucose",
|
||||
"titleKey": "dashboard.metric.title.glucose",
|
||||
"latestValue": 128,
|
||||
"secondaryValue": null,
|
||||
"unitKey": "dashboard.metric.unit.glucose",
|
||||
"unit": null,
|
||||
"sleepStages": null,
|
||||
"sleepSourceDiscrepancy": null,
|
||||
"trend": "down",
|
||||
"sparkline": [
|
||||
117,
|
||||
115.33333333333333,
|
||||
113.66666666666667,
|
||||
113.33333333333333,
|
||||
111.66666666666667,
|
||||
110,
|
||||
108.33333333333333
|
||||
],
|
||||
"updatedAt": "<updatedAt>",
|
||||
"allTimeCount": 60,
|
||||
"lastSeenAt": "anchor+0d+11:00:00",
|
||||
"direction": {
|
||||
"direction": "up-bad",
|
||||
"targetPosition": null,
|
||||
"basis": "metric_default"
|
||||
},
|
||||
"trendSentiment": "positive"
|
||||
},
|
||||
{
|
||||
"id": "sleep",
|
||||
"kind": "sleep",
|
||||
"titleKey": "dashboard.metric.title.sleep",
|
||||
"latestValue": 5.92,
|
||||
"secondaryValue": null,
|
||||
"unitKey": "dashboard.metric.unit.sleep",
|
||||
"unit": "h",
|
||||
"sleepStages": {
|
||||
"CORE": 3.33,
|
||||
"DEEP": 1.17,
|
||||
"REM": 1.42,
|
||||
"AWAKE": 0.2
|
||||
},
|
||||
"sleepSourceDiscrepancy": null,
|
||||
"trend": "flat",
|
||||
"sparkline": [
|
||||
6.25,
|
||||
6.17,
|
||||
6.67,
|
||||
6.67,
|
||||
7.17,
|
||||
6.25,
|
||||
5.92
|
||||
],
|
||||
"updatedAt": "<updatedAt>",
|
||||
"allTimeCount": 85,
|
||||
"lastSeenAt": "anchor+0d+04:15:00",
|
||||
"direction": {
|
||||
"direction": "up-good",
|
||||
"targetPosition": null,
|
||||
"basis": "metric_default"
|
||||
},
|
||||
"trendSentiment": "neutral"
|
||||
},
|
||||
{
|
||||
"id": "steps",
|
||||
"kind": "steps",
|
||||
"titleKey": "dashboard.metric.title.steps",
|
||||
"latestValue": 6000,
|
||||
"secondaryValue": null,
|
||||
"unitKey": "dashboard.metric.unit.steps",
|
||||
"unit": null,
|
||||
"sleepStages": null,
|
||||
"sleepSourceDiscrepancy": null,
|
||||
"trend": "down",
|
||||
"sparkline": [
|
||||
8238,
|
||||
7865,
|
||||
7492,
|
||||
7119,
|
||||
6746,
|
||||
6373,
|
||||
6000
|
||||
],
|
||||
"updatedAt": "<updatedAt>",
|
||||
"allTimeCount": 30,
|
||||
"lastSeenAt": "anchor+0d+09:00:00",
|
||||
"direction": {
|
||||
"direction": "up-good",
|
||||
"targetPosition": null,
|
||||
"basis": "metric_default"
|
||||
},
|
||||
"trendSentiment": "negative"
|
||||
},
|
||||
{
|
||||
"id": "oxygenSaturation",
|
||||
"kind": "oxygenSaturation",
|
||||
"titleKey": "dashboard.metric.title.oxygenSaturation",
|
||||
"latestValue": 96,
|
||||
"secondaryValue": null,
|
||||
"unitKey": "dashboard.metric.unit.oxygenSaturation",
|
||||
"unit": null,
|
||||
"sleepStages": null,
|
||||
"sleepSourceDiscrepancy": null,
|
||||
"trend": "flat",
|
||||
"sparkline": [
|
||||
96,
|
||||
98,
|
||||
97,
|
||||
96,
|
||||
98,
|
||||
97,
|
||||
96
|
||||
],
|
||||
"updatedAt": "<updatedAt>",
|
||||
"allTimeCount": 10,
|
||||
"lastSeenAt": "anchor+0d+04:40:00",
|
||||
"direction": {
|
||||
"direction": "up-good",
|
||||
"targetPosition": null,
|
||||
"basis": "metric_default"
|
||||
},
|
||||
"trendSentiment": "neutral"
|
||||
},
|
||||
{
|
||||
"id": "mood",
|
||||
"kind": "mood",
|
||||
"titleKey": "dashboard.metric.title.mood",
|
||||
"latestValue": 1,
|
||||
"secondaryValue": null,
|
||||
"unitKey": "dashboard.metric.unit.mood",
|
||||
"unit": null,
|
||||
"sleepStages": null,
|
||||
"sleepSourceDiscrepancy": null,
|
||||
"trend": "down",
|
||||
"sparkline": [
|
||||
4,
|
||||
1,
|
||||
3,
|
||||
5,
|
||||
2,
|
||||
4,
|
||||
1
|
||||
],
|
||||
"updatedAt": "<updatedAt>",
|
||||
"allTimeCount": 45,
|
||||
"lastSeenAt": "anchor+0d+00:00:00",
|
||||
"direction": {
|
||||
"direction": "up-good",
|
||||
"targetPosition": null,
|
||||
"basis": "metric_default"
|
||||
},
|
||||
"trendSentiment": "negative"
|
||||
},
|
||||
{
|
||||
"id": "bmi",
|
||||
"kind": "bmi",
|
||||
"titleKey": "dashboard.metric.title.bmi",
|
||||
"latestValue": 25.9,
|
||||
"secondaryValue": null,
|
||||
"unitKey": "dashboard.metric.unit.bmi",
|
||||
"unit": null,
|
||||
"sleepStages": null,
|
||||
"sleepSourceDiscrepancy": null,
|
||||
"trend": "flat",
|
||||
"sparkline": [
|
||||
25.9,
|
||||
25.9,
|
||||
25.9,
|
||||
25.9,
|
||||
25.9,
|
||||
25.9,
|
||||
25.9
|
||||
],
|
||||
"updatedAt": "<updatedAt>",
|
||||
"allTimeCount": 60,
|
||||
"lastSeenAt": "anchor+0d+06:30:00",
|
||||
"direction": {
|
||||
"direction": "up-bad",
|
||||
"targetPosition": null,
|
||||
"basis": "metric_default"
|
||||
},
|
||||
"trendSentiment": "neutral"
|
||||
}
|
||||
],
|
||||
"sleepRhythm": {
|
||||
"sleepDebt": {
|
||||
"state": "ready",
|
||||
"debtMinutes": 145,
|
||||
"needMinutes": 420,
|
||||
"nightsCounted": 5,
|
||||
"windowNights": 5,
|
||||
"nightsUntilReady": 0,
|
||||
"source": "COMPUTED"
|
||||
},
|
||||
"chronotype": {
|
||||
"state": "ready",
|
||||
"msfMinutes": 63.33521977432794,
|
||||
"msfScMinutes": 63.335219774327925,
|
||||
"band": "extreme_early",
|
||||
"socialJetlagMinutes": 2.402527629787599,
|
||||
"freeNightsCounted": 6,
|
||||
"workNightsCounted": 15,
|
||||
"freeNightsUntilReady": 0
|
||||
},
|
||||
"averagePerNight": {
|
||||
"state": "ready",
|
||||
"averageMinutes": 388,
|
||||
"nightsCounted": 21,
|
||||
"nightsUntilReady": 0
|
||||
}
|
||||
},
|
||||
"lastUpdated": "anchor+0d+12:00:00"
|
||||
},
|
||||
"error": null
|
||||
},
|
||||
"events": [
|
||||
{
|
||||
"status": 200,
|
||||
"action": {
|
||||
"name": "dashboard.summary"
|
||||
},
|
||||
"meta": {
|
||||
"cache.analytics.key_hash": 3272136333,
|
||||
"cache.analytics.outcome": "hit",
|
||||
"metrics_emitted": 10,
|
||||
"metrics_gated": 0
|
||||
},
|
||||
"warnings": null,
|
||||
"error": null
|
||||
}
|
||||
],
|
||||
"effects": []
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
{
|
||||
"status": 403,
|
||||
"body": {
|
||||
"data": null,
|
||||
"error": "Account access denied",
|
||||
"meta": {
|
||||
"errorCode": "sharing.access.denied",
|
||||
"requestId": "<requestId>"
|
||||
}
|
||||
},
|
||||
"events": [
|
||||
{
|
||||
"status": 403,
|
||||
"action": null,
|
||||
"meta": {
|
||||
"sharing_refusal": "insufficient_access"
|
||||
},
|
||||
"warnings": null,
|
||||
"error": {
|
||||
"type": "SharingAccessDeniedError",
|
||||
"message": "Account access denied"
|
||||
}
|
||||
}
|
||||
],
|
||||
"effects": []
|
||||
}
|
||||
+24
@@ -0,0 +1,24 @@
|
||||
{
|
||||
"status": 401,
|
||||
"body": {
|
||||
"data": null,
|
||||
"error": "Not authenticated",
|
||||
"meta": {
|
||||
"errorCode": "auth.missing",
|
||||
"requestId": "<requestId>"
|
||||
}
|
||||
},
|
||||
"events": [
|
||||
{
|
||||
"status": 401,
|
||||
"action": null,
|
||||
"meta": null,
|
||||
"warnings": null,
|
||||
"error": {
|
||||
"type": "HttpError",
|
||||
"message": "Not authenticated"
|
||||
}
|
||||
}
|
||||
],
|
||||
"effects": []
|
||||
}
|
||||
+100
@@ -0,0 +1,100 @@
|
||||
{
|
||||
"status": 200,
|
||||
"body": {
|
||||
"data": {
|
||||
"greeting": {
|
||||
"salutation": "Hi, empty-account",
|
||||
"date": "anchor+0d+12:00:00"
|
||||
},
|
||||
"streak": {
|
||||
"currentDays": 0,
|
||||
"longest": 0,
|
||||
"label": "days in a row"
|
||||
},
|
||||
"compliance": {
|
||||
"scheduledToday": 0,
|
||||
"takenToday": 0
|
||||
},
|
||||
"highlightInsight": null,
|
||||
"metrics": [
|
||||
{
|
||||
"id": "weight",
|
||||
"kind": "weight",
|
||||
"titleKey": "dashboard.metric.title.weight",
|
||||
"latestValue": null,
|
||||
"secondaryValue": null,
|
||||
"unitKey": "dashboard.metric.unit.weight",
|
||||
"unit": null,
|
||||
"sleepStages": null,
|
||||
"sleepSourceDiscrepancy": null,
|
||||
"trend": "unknown",
|
||||
"sparkline": [],
|
||||
"updatedAt": null,
|
||||
"allTimeCount": 0,
|
||||
"lastSeenAt": null,
|
||||
"direction": {
|
||||
"direction": "up-bad",
|
||||
"targetPosition": null,
|
||||
"basis": "metric_default"
|
||||
},
|
||||
"trendSentiment": "neutral"
|
||||
}
|
||||
],
|
||||
"sleepRhythm": {
|
||||
"sleepDebt": {
|
||||
"state": "partial",
|
||||
"debtMinutes": 0,
|
||||
"needMinutes": 420,
|
||||
"nightsCounted": 0,
|
||||
"windowNights": 5,
|
||||
"nightsUntilReady": 4,
|
||||
"source": "COMPUTED"
|
||||
},
|
||||
"chronotype": {
|
||||
"state": "learning",
|
||||
"msfMinutes": null,
|
||||
"msfScMinutes": null,
|
||||
"band": null,
|
||||
"socialJetlagMinutes": null,
|
||||
"freeNightsCounted": 0,
|
||||
"workNightsCounted": 0,
|
||||
"freeNightsUntilReady": 3
|
||||
},
|
||||
"averagePerNight": {
|
||||
"state": "partial",
|
||||
"averageMinutes": 0,
|
||||
"nightsCounted": 0,
|
||||
"nightsUntilReady": 4
|
||||
}
|
||||
},
|
||||
"lastUpdated": "anchor+0d+12:00:00"
|
||||
},
|
||||
"error": null
|
||||
},
|
||||
"events": [
|
||||
{
|
||||
"status": 200,
|
||||
"action": {
|
||||
"name": "dashboard.summary"
|
||||
},
|
||||
"meta": {
|
||||
"cache.analytics.key_hash": 1944272078,
|
||||
"cache.analytics.outcome": "miss",
|
||||
"dashboard.sub_allTime_ms": 0,
|
||||
"dashboard.sub_bmi_ms": 0,
|
||||
"dashboard.sub_latestEver_ms": 0,
|
||||
"dashboard.sub_medsToday_ms": 0,
|
||||
"dashboard.sub_moodSeries_ms": 0,
|
||||
"dashboard.sub_sleepNights_ms": 0,
|
||||
"dashboard.sub_sparkline_ms": 0,
|
||||
"dashboard.sub_streakDays_ms": 0,
|
||||
"dashboard.sub_streakIntakes_ms": 0,
|
||||
"metrics_emitted": 1,
|
||||
"metrics_gated": 0
|
||||
},
|
||||
"warnings": null,
|
||||
"error": null
|
||||
}
|
||||
],
|
||||
"effects": []
|
||||
}
|
||||
+86
@@ -0,0 +1,86 @@
|
||||
{
|
||||
"status": 200,
|
||||
"body": {
|
||||
"data": {
|
||||
"documents": [
|
||||
{
|
||||
"id": "<id:1>",
|
||||
"kind": "DISCHARGE_LETTER",
|
||||
"title": "Discharge letter",
|
||||
"filename": "discharge.pdf",
|
||||
"mimeType": "application/pdf",
|
||||
"byteSize": 47,
|
||||
"status": "STORED",
|
||||
"providerType": null,
|
||||
"reportDate": null,
|
||||
"documentDate": "2026-10-02",
|
||||
"errorReason": null,
|
||||
"factCount": 0,
|
||||
"pendingCount": 0,
|
||||
"conditionLinks": [
|
||||
{
|
||||
"episodeId": "<id:2>",
|
||||
"name": "Knee"
|
||||
}
|
||||
],
|
||||
"encounterLinks": [],
|
||||
"servingClass": "inline",
|
||||
"hasContentIndex": false,
|
||||
"contentIndexSource": null,
|
||||
"lastIndexAttemptAt": null,
|
||||
"lastIndexOutcome": null,
|
||||
"hasThumbnail": false,
|
||||
"sourceSystem": null,
|
||||
"sourceId": null,
|
||||
"createdAt": "<createdAt>",
|
||||
"updatedAt": "<updatedAt>"
|
||||
},
|
||||
{
|
||||
"id": "<id:3>",
|
||||
"kind": "LAB_RESULT",
|
||||
"title": "Blood test",
|
||||
"filename": "labs.pdf",
|
||||
"mimeType": "application/pdf",
|
||||
"byteSize": 42,
|
||||
"status": "STORED",
|
||||
"providerType": null,
|
||||
"reportDate": null,
|
||||
"documentDate": "2025-03-04",
|
||||
"errorReason": null,
|
||||
"factCount": 0,
|
||||
"pendingCount": 0,
|
||||
"conditionLinks": [],
|
||||
"encounterLinks": [],
|
||||
"servingClass": "inline",
|
||||
"hasContentIndex": false,
|
||||
"contentIndexSource": null,
|
||||
"lastIndexAttemptAt": null,
|
||||
"lastIndexOutcome": null,
|
||||
"hasThumbnail": false,
|
||||
"sourceSystem": null,
|
||||
"sourceId": null,
|
||||
"createdAt": "<createdAt>",
|
||||
"updatedAt": "<updatedAt>"
|
||||
}
|
||||
],
|
||||
"nextCursor": null
|
||||
},
|
||||
"error": null
|
||||
},
|
||||
"events": [
|
||||
{
|
||||
"status": 200,
|
||||
"action": {
|
||||
"name": "documents.inbound.list"
|
||||
},
|
||||
"meta": {
|
||||
"count": 2,
|
||||
"sort": "documentDate",
|
||||
"order": "desc",
|
||||
"filtered": false
|
||||
},
|
||||
"warnings": null,
|
||||
"error": null
|
||||
}
|
||||
]
|
||||
}
|
||||
+54
@@ -0,0 +1,54 @@
|
||||
{
|
||||
"status": 200,
|
||||
"body": {
|
||||
"data": {
|
||||
"documents": [
|
||||
{
|
||||
"id": "<id:1>",
|
||||
"kind": "LAB_RESULT",
|
||||
"title": "Blood test",
|
||||
"filename": "labs.pdf",
|
||||
"mimeType": "application/pdf",
|
||||
"byteSize": 42,
|
||||
"status": "STORED",
|
||||
"providerType": null,
|
||||
"reportDate": null,
|
||||
"documentDate": "2025-03-04",
|
||||
"errorReason": null,
|
||||
"factCount": 0,
|
||||
"pendingCount": 0,
|
||||
"conditionLinks": [],
|
||||
"encounterLinks": [],
|
||||
"servingClass": "inline",
|
||||
"hasContentIndex": false,
|
||||
"contentIndexSource": null,
|
||||
"lastIndexAttemptAt": null,
|
||||
"lastIndexOutcome": null,
|
||||
"hasThumbnail": false,
|
||||
"sourceSystem": null,
|
||||
"sourceId": null,
|
||||
"createdAt": "<createdAt>",
|
||||
"updatedAt": "<updatedAt>"
|
||||
}
|
||||
],
|
||||
"nextCursor": null
|
||||
},
|
||||
"error": null
|
||||
},
|
||||
"events": [
|
||||
{
|
||||
"status": 200,
|
||||
"action": {
|
||||
"name": "documents.inbound.list"
|
||||
},
|
||||
"meta": {
|
||||
"count": 1,
|
||||
"sort": "documentDate",
|
||||
"order": "desc",
|
||||
"filtered": true
|
||||
},
|
||||
"warnings": null,
|
||||
"error": null
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,86 @@
|
||||
{
|
||||
"status": 200,
|
||||
"body": {
|
||||
"data": {
|
||||
"documents": [
|
||||
{
|
||||
"id": "<id:1>",
|
||||
"kind": "DISCHARGE_LETTER",
|
||||
"title": "Discharge letter",
|
||||
"filename": "discharge.pdf",
|
||||
"mimeType": "application/pdf",
|
||||
"byteSize": 47,
|
||||
"status": "STORED",
|
||||
"providerType": null,
|
||||
"reportDate": null,
|
||||
"documentDate": "2026-10-02",
|
||||
"errorReason": null,
|
||||
"factCount": 0,
|
||||
"pendingCount": 0,
|
||||
"conditionLinks": [
|
||||
{
|
||||
"episodeId": "<id:2>",
|
||||
"name": "Knee"
|
||||
}
|
||||
],
|
||||
"encounterLinks": [],
|
||||
"servingClass": "inline",
|
||||
"hasContentIndex": false,
|
||||
"contentIndexSource": null,
|
||||
"lastIndexAttemptAt": null,
|
||||
"lastIndexOutcome": null,
|
||||
"hasThumbnail": false,
|
||||
"sourceSystem": null,
|
||||
"sourceId": null,
|
||||
"createdAt": "<createdAt>",
|
||||
"updatedAt": "<updatedAt>"
|
||||
},
|
||||
{
|
||||
"id": "<id:3>",
|
||||
"kind": "LAB_RESULT",
|
||||
"title": "Blood test",
|
||||
"filename": "labs.pdf",
|
||||
"mimeType": "application/pdf",
|
||||
"byteSize": 42,
|
||||
"status": "STORED",
|
||||
"providerType": null,
|
||||
"reportDate": null,
|
||||
"documentDate": "2025-03-04",
|
||||
"errorReason": null,
|
||||
"factCount": 0,
|
||||
"pendingCount": 0,
|
||||
"conditionLinks": [],
|
||||
"encounterLinks": [],
|
||||
"servingClass": "inline",
|
||||
"hasContentIndex": false,
|
||||
"contentIndexSource": null,
|
||||
"lastIndexAttemptAt": null,
|
||||
"lastIndexOutcome": null,
|
||||
"hasThumbnail": false,
|
||||
"sourceSystem": null,
|
||||
"sourceId": null,
|
||||
"createdAt": "<createdAt>",
|
||||
"updatedAt": "<updatedAt>"
|
||||
}
|
||||
],
|
||||
"nextCursor": null
|
||||
},
|
||||
"error": null
|
||||
},
|
||||
"events": [
|
||||
{
|
||||
"status": 200,
|
||||
"action": {
|
||||
"name": "documents.inbound.list"
|
||||
},
|
||||
"meta": {
|
||||
"count": 2,
|
||||
"sort": "documentDate",
|
||||
"order": "desc",
|
||||
"filtered": true
|
||||
},
|
||||
"warnings": null,
|
||||
"error": null
|
||||
}
|
||||
]
|
||||
}
|
||||
+59
@@ -0,0 +1,59 @@
|
||||
{
|
||||
"status": 200,
|
||||
"body": {
|
||||
"data": {
|
||||
"documents": [
|
||||
{
|
||||
"id": "<id:1>",
|
||||
"kind": "DISCHARGE_LETTER",
|
||||
"title": "Discharge letter",
|
||||
"filename": "discharge.pdf",
|
||||
"mimeType": "application/pdf",
|
||||
"byteSize": 47,
|
||||
"status": "STORED",
|
||||
"providerType": null,
|
||||
"reportDate": null,
|
||||
"documentDate": "2026-10-02",
|
||||
"errorReason": null,
|
||||
"factCount": 0,
|
||||
"pendingCount": 0,
|
||||
"conditionLinks": [
|
||||
{
|
||||
"episodeId": "<id:2>",
|
||||
"name": "Knee"
|
||||
}
|
||||
],
|
||||
"encounterLinks": [],
|
||||
"servingClass": "inline",
|
||||
"hasContentIndex": false,
|
||||
"contentIndexSource": null,
|
||||
"lastIndexAttemptAt": null,
|
||||
"lastIndexOutcome": null,
|
||||
"hasThumbnail": false,
|
||||
"sourceSystem": null,
|
||||
"sourceId": null,
|
||||
"createdAt": "<createdAt>",
|
||||
"updatedAt": "<updatedAt>"
|
||||
}
|
||||
],
|
||||
"nextCursor": null
|
||||
},
|
||||
"error": null
|
||||
},
|
||||
"events": [
|
||||
{
|
||||
"status": 200,
|
||||
"action": {
|
||||
"name": "documents.inbound.list"
|
||||
},
|
||||
"meta": {
|
||||
"count": 1,
|
||||
"sort": "documentDate",
|
||||
"order": "desc",
|
||||
"filtered": true
|
||||
},
|
||||
"warnings": null,
|
||||
"error": null
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,54 @@
|
||||
{
|
||||
"status": 200,
|
||||
"body": {
|
||||
"data": {
|
||||
"documents": [
|
||||
{
|
||||
"id": "<id:1>",
|
||||
"kind": "LAB_RESULT",
|
||||
"title": "Blood test",
|
||||
"filename": "labs.pdf",
|
||||
"mimeType": "application/pdf",
|
||||
"byteSize": 42,
|
||||
"status": "STORED",
|
||||
"providerType": null,
|
||||
"reportDate": null,
|
||||
"documentDate": "2025-03-04",
|
||||
"errorReason": null,
|
||||
"factCount": 0,
|
||||
"pendingCount": 0,
|
||||
"conditionLinks": [],
|
||||
"encounterLinks": [],
|
||||
"servingClass": "inline",
|
||||
"hasContentIndex": false,
|
||||
"contentIndexSource": null,
|
||||
"lastIndexAttemptAt": null,
|
||||
"lastIndexOutcome": null,
|
||||
"hasThumbnail": false,
|
||||
"sourceSystem": null,
|
||||
"sourceId": null,
|
||||
"createdAt": "<createdAt>",
|
||||
"updatedAt": "<updatedAt>"
|
||||
}
|
||||
],
|
||||
"nextCursor": null
|
||||
},
|
||||
"error": null
|
||||
},
|
||||
"events": [
|
||||
{
|
||||
"status": 200,
|
||||
"action": {
|
||||
"name": "documents.inbound.list"
|
||||
},
|
||||
"meta": {
|
||||
"count": 1,
|
||||
"sort": "documentDate",
|
||||
"order": "desc",
|
||||
"filtered": true
|
||||
},
|
||||
"warnings": null,
|
||||
"error": null
|
||||
}
|
||||
]
|
||||
}
|
||||
+59
@@ -0,0 +1,59 @@
|
||||
{
|
||||
"status": 200,
|
||||
"body": {
|
||||
"data": {
|
||||
"documents": [
|
||||
{
|
||||
"id": "<id:1>",
|
||||
"kind": "DISCHARGE_LETTER",
|
||||
"title": "Discharge letter",
|
||||
"filename": "discharge.pdf",
|
||||
"mimeType": "application/pdf",
|
||||
"byteSize": 47,
|
||||
"status": "STORED",
|
||||
"providerType": null,
|
||||
"reportDate": null,
|
||||
"documentDate": "2026-10-02",
|
||||
"errorReason": null,
|
||||
"factCount": 0,
|
||||
"pendingCount": 0,
|
||||
"conditionLinks": [
|
||||
{
|
||||
"episodeId": "<id:2>",
|
||||
"name": "Knee"
|
||||
}
|
||||
],
|
||||
"encounterLinks": [],
|
||||
"servingClass": "inline",
|
||||
"hasContentIndex": false,
|
||||
"contentIndexSource": null,
|
||||
"lastIndexAttemptAt": null,
|
||||
"lastIndexOutcome": null,
|
||||
"hasThumbnail": false,
|
||||
"sourceSystem": null,
|
||||
"sourceId": null,
|
||||
"createdAt": "<createdAt>",
|
||||
"updatedAt": "<updatedAt>"
|
||||
}
|
||||
],
|
||||
"nextCursor": null
|
||||
},
|
||||
"error": null
|
||||
},
|
||||
"events": [
|
||||
{
|
||||
"status": 200,
|
||||
"action": {
|
||||
"name": "documents.inbound.list"
|
||||
},
|
||||
"meta": {
|
||||
"count": 1,
|
||||
"sort": "documentDate",
|
||||
"order": "desc",
|
||||
"filtered": false
|
||||
},
|
||||
"warnings": null,
|
||||
"error": null
|
||||
}
|
||||
]
|
||||
}
|
||||
+54
@@ -0,0 +1,54 @@
|
||||
{
|
||||
"status": 200,
|
||||
"body": {
|
||||
"data": {
|
||||
"documents": [
|
||||
{
|
||||
"id": "<id:1>",
|
||||
"kind": "LAB_RESULT",
|
||||
"title": "Blood test",
|
||||
"filename": "labs.pdf",
|
||||
"mimeType": "application/pdf",
|
||||
"byteSize": 42,
|
||||
"status": "STORED",
|
||||
"providerType": null,
|
||||
"reportDate": null,
|
||||
"documentDate": "2025-03-04",
|
||||
"errorReason": null,
|
||||
"factCount": 0,
|
||||
"pendingCount": 0,
|
||||
"conditionLinks": [],
|
||||
"encounterLinks": [],
|
||||
"servingClass": "inline",
|
||||
"hasContentIndex": false,
|
||||
"contentIndexSource": null,
|
||||
"lastIndexAttemptAt": null,
|
||||
"lastIndexOutcome": null,
|
||||
"hasThumbnail": false,
|
||||
"sourceSystem": null,
|
||||
"sourceId": null,
|
||||
"createdAt": "<createdAt>",
|
||||
"updatedAt": "<updatedAt>"
|
||||
}
|
||||
],
|
||||
"nextCursor": "<id:1>"
|
||||
},
|
||||
"error": null
|
||||
},
|
||||
"events": [
|
||||
{
|
||||
"status": 200,
|
||||
"action": {
|
||||
"name": "documents.inbound.list"
|
||||
},
|
||||
"meta": {
|
||||
"count": 1,
|
||||
"sort": "title",
|
||||
"order": "asc",
|
||||
"filtered": false
|
||||
},
|
||||
"warnings": null,
|
||||
"error": null
|
||||
}
|
||||
]
|
||||
}
|
||||
+59
@@ -0,0 +1,59 @@
|
||||
{
|
||||
"status": 200,
|
||||
"body": {
|
||||
"data": {
|
||||
"documents": [
|
||||
{
|
||||
"id": "<id:1>",
|
||||
"kind": "DISCHARGE_LETTER",
|
||||
"title": "Discharge letter",
|
||||
"filename": "discharge.pdf",
|
||||
"mimeType": "application/pdf",
|
||||
"byteSize": 47,
|
||||
"status": "STORED",
|
||||
"providerType": null,
|
||||
"reportDate": null,
|
||||
"documentDate": "2026-10-02",
|
||||
"errorReason": null,
|
||||
"factCount": 0,
|
||||
"pendingCount": 0,
|
||||
"conditionLinks": [
|
||||
{
|
||||
"episodeId": "<id:2>",
|
||||
"name": "Knee"
|
||||
}
|
||||
],
|
||||
"encounterLinks": [],
|
||||
"servingClass": "inline",
|
||||
"hasContentIndex": false,
|
||||
"contentIndexSource": null,
|
||||
"lastIndexAttemptAt": null,
|
||||
"lastIndexOutcome": null,
|
||||
"hasThumbnail": false,
|
||||
"sourceSystem": null,
|
||||
"sourceId": null,
|
||||
"createdAt": "<createdAt>",
|
||||
"updatedAt": "<updatedAt>"
|
||||
}
|
||||
],
|
||||
"nextCursor": null
|
||||
},
|
||||
"error": null
|
||||
},
|
||||
"events": [
|
||||
{
|
||||
"status": 200,
|
||||
"action": {
|
||||
"name": "documents.inbound.list"
|
||||
},
|
||||
"meta": {
|
||||
"count": 1,
|
||||
"sort": "title",
|
||||
"order": "asc",
|
||||
"filtered": false
|
||||
},
|
||||
"warnings": null,
|
||||
"error": null
|
||||
}
|
||||
]
|
||||
}
|
||||
+29
@@ -0,0 +1,29 @@
|
||||
{
|
||||
"status": 422,
|
||||
"body": {
|
||||
"data": null,
|
||||
"error": "Invalid list query",
|
||||
"details": {
|
||||
"issues": [
|
||||
{
|
||||
"path": "sort",
|
||||
"code": "invalid_value",
|
||||
"message": "Invalid option: expected one of \"documentDate\"|\"createdAt\"|\"title\""
|
||||
}
|
||||
]
|
||||
},
|
||||
"meta": {
|
||||
"errorCode": "documents.inbound.invalidQuery",
|
||||
"requestId": "<requestId>"
|
||||
}
|
||||
},
|
||||
"events": [
|
||||
{
|
||||
"status": 422,
|
||||
"action": null,
|
||||
"meta": null,
|
||||
"warnings": null,
|
||||
"error": null
|
||||
}
|
||||
]
|
||||
}
|
||||
+86
@@ -0,0 +1,86 @@
|
||||
{
|
||||
"status": 200,
|
||||
"body": {
|
||||
"data": {
|
||||
"documents": [
|
||||
{
|
||||
"id": "<id:1>",
|
||||
"kind": "DISCHARGE_LETTER",
|
||||
"title": "Discharge letter",
|
||||
"filename": "discharge.pdf",
|
||||
"mimeType": "application/pdf",
|
||||
"byteSize": 47,
|
||||
"status": "STORED",
|
||||
"providerType": null,
|
||||
"reportDate": null,
|
||||
"documentDate": "2026-10-02",
|
||||
"errorReason": null,
|
||||
"factCount": 0,
|
||||
"pendingCount": 0,
|
||||
"conditionLinks": [
|
||||
{
|
||||
"episodeId": "<id:2>",
|
||||
"name": "Knee"
|
||||
}
|
||||
],
|
||||
"encounterLinks": [],
|
||||
"servingClass": "inline",
|
||||
"hasContentIndex": false,
|
||||
"contentIndexSource": null,
|
||||
"lastIndexAttemptAt": null,
|
||||
"lastIndexOutcome": null,
|
||||
"hasThumbnail": false,
|
||||
"sourceSystem": null,
|
||||
"sourceId": null,
|
||||
"createdAt": "<createdAt>",
|
||||
"updatedAt": "<updatedAt>"
|
||||
},
|
||||
{
|
||||
"id": "<id:3>",
|
||||
"kind": "LAB_RESULT",
|
||||
"title": "Blood test",
|
||||
"filename": "labs.pdf",
|
||||
"mimeType": "application/pdf",
|
||||
"byteSize": 42,
|
||||
"status": "STORED",
|
||||
"providerType": null,
|
||||
"reportDate": null,
|
||||
"documentDate": "2025-03-04",
|
||||
"errorReason": null,
|
||||
"factCount": 0,
|
||||
"pendingCount": 0,
|
||||
"conditionLinks": [],
|
||||
"encounterLinks": [],
|
||||
"servingClass": "inline",
|
||||
"hasContentIndex": false,
|
||||
"contentIndexSource": null,
|
||||
"lastIndexAttemptAt": null,
|
||||
"lastIndexOutcome": null,
|
||||
"hasThumbnail": false,
|
||||
"sourceSystem": null,
|
||||
"sourceId": null,
|
||||
"createdAt": "<createdAt>",
|
||||
"updatedAt": "<updatedAt>"
|
||||
}
|
||||
],
|
||||
"nextCursor": null
|
||||
},
|
||||
"error": null
|
||||
},
|
||||
"events": [
|
||||
{
|
||||
"status": 200,
|
||||
"action": {
|
||||
"name": "documents.inbound.list"
|
||||
},
|
||||
"meta": {
|
||||
"count": 2,
|
||||
"sort": "documentDate",
|
||||
"order": "desc",
|
||||
"filtered": false
|
||||
},
|
||||
"warnings": null,
|
||||
"error": null
|
||||
}
|
||||
]
|
||||
}
|
||||
+95
@@ -0,0 +1,95 @@
|
||||
{
|
||||
"status": 201,
|
||||
"body": {
|
||||
"data": {
|
||||
"id": "<id:1>",
|
||||
"kind": "DISCHARGE_LETTER",
|
||||
"title": "Discharge letter",
|
||||
"filename": "discharge.pdf",
|
||||
"mimeType": "application/pdf",
|
||||
"byteSize": 47,
|
||||
"status": "STORED",
|
||||
"providerType": null,
|
||||
"reportDate": null,
|
||||
"documentDate": "2026-10-02",
|
||||
"errorReason": null,
|
||||
"factCount": 0,
|
||||
"pendingCount": 0,
|
||||
"conditionLinks": [
|
||||
{
|
||||
"episodeId": "<id:2>",
|
||||
"name": "Knee"
|
||||
}
|
||||
],
|
||||
"encounterLinks": [],
|
||||
"servingClass": "inline",
|
||||
"hasContentIndex": false,
|
||||
"contentIndexSource": null,
|
||||
"lastIndexAttemptAt": null,
|
||||
"lastIndexOutcome": null,
|
||||
"hasThumbnail": false,
|
||||
"sourceSystem": null,
|
||||
"sourceId": null,
|
||||
"createdAt": "<createdAt>",
|
||||
"updatedAt": "<updatedAt>"
|
||||
},
|
||||
"error": null
|
||||
},
|
||||
"events": [
|
||||
{
|
||||
"status": 201,
|
||||
"action": {
|
||||
"name": "documents.summary.enqueueSkipped"
|
||||
},
|
||||
"meta": {
|
||||
"documentId": "<id:1>",
|
||||
"byteSize": 47,
|
||||
"servingClass": "inline",
|
||||
"linked": 1,
|
||||
"linkedVisits": 0,
|
||||
"scoped": false,
|
||||
"sourceSystem": null,
|
||||
"aiDeferred": false,
|
||||
"reason": "no_provider"
|
||||
},
|
||||
"warnings": null,
|
||||
"error": null
|
||||
}
|
||||
],
|
||||
"effects": [
|
||||
{
|
||||
"effect": "enqueueDocumentIndex",
|
||||
"args": [
|
||||
"<id:3>",
|
||||
"<id:1>"
|
||||
]
|
||||
},
|
||||
{
|
||||
"effect": "enqueueDocumentThumbnail",
|
||||
"args": [
|
||||
"<id:3>",
|
||||
"<id:1>"
|
||||
]
|
||||
}
|
||||
],
|
||||
"stored": [
|
||||
{
|
||||
"id": "<id:1>",
|
||||
"kind": "DISCHARGE_LETTER",
|
||||
"title": "Discharge letter",
|
||||
"filename": "discharge.pdf",
|
||||
"mimeType": "application/pdf",
|
||||
"byteSize": 47,
|
||||
"status": "STORED",
|
||||
"documentDate": "2026-10-02T12:00:00.000Z",
|
||||
"sourceSystem": null,
|
||||
"sourceId": null,
|
||||
"deletedAt": null,
|
||||
"conditionLinks": [
|
||||
{
|
||||
"episodeId": "<id:2>"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
+79
@@ -0,0 +1,79 @@
|
||||
{
|
||||
"status": 200,
|
||||
"body": {
|
||||
"data": {
|
||||
"id": "<id:1>",
|
||||
"kind": "DISCHARGE_LETTER",
|
||||
"title": "Discharge letter",
|
||||
"filename": "discharge.pdf",
|
||||
"mimeType": "application/pdf",
|
||||
"byteSize": 47,
|
||||
"status": "STORED",
|
||||
"providerType": null,
|
||||
"reportDate": null,
|
||||
"documentDate": "2026-10-02",
|
||||
"errorReason": null,
|
||||
"factCount": 0,
|
||||
"pendingCount": 0,
|
||||
"conditionLinks": [
|
||||
{
|
||||
"episodeId": "<id:2>",
|
||||
"name": "Knee"
|
||||
}
|
||||
],
|
||||
"encounterLinks": [],
|
||||
"servingClass": "inline",
|
||||
"hasContentIndex": false,
|
||||
"contentIndexSource": null,
|
||||
"lastIndexAttemptAt": null,
|
||||
"lastIndexOutcome": null,
|
||||
"hasThumbnail": false,
|
||||
"sourceSystem": null,
|
||||
"sourceId": null,
|
||||
"createdAt": "<createdAt>",
|
||||
"updatedAt": "<updatedAt>"
|
||||
},
|
||||
"error": null,
|
||||
"meta": {
|
||||
"duplicate": true
|
||||
}
|
||||
},
|
||||
"events": [
|
||||
{
|
||||
"status": 200,
|
||||
"action": {
|
||||
"name": "documents.vault.upload"
|
||||
},
|
||||
"meta": {
|
||||
"documentId": "<id:1>",
|
||||
"duplicate": true,
|
||||
"scoped": false,
|
||||
"sourceSystem": null,
|
||||
"aiDeferred": false
|
||||
},
|
||||
"warnings": null,
|
||||
"error": null
|
||||
}
|
||||
],
|
||||
"effects": [],
|
||||
"stored": [
|
||||
{
|
||||
"id": "<id:1>",
|
||||
"kind": "DISCHARGE_LETTER",
|
||||
"title": "Discharge letter",
|
||||
"filename": "discharge.pdf",
|
||||
"mimeType": "application/pdf",
|
||||
"byteSize": 47,
|
||||
"status": "STORED",
|
||||
"documentDate": "2026-10-02T12:00:00.000Z",
|
||||
"sourceSystem": null,
|
||||
"sourceId": null,
|
||||
"deletedAt": null,
|
||||
"conditionLinks": [
|
||||
{
|
||||
"episodeId": "<id:2>"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
+104
@@ -0,0 +1,104 @@
|
||||
{
|
||||
"status": 201,
|
||||
"body": {
|
||||
"data": {
|
||||
"id": "<id:1>",
|
||||
"kind": "LAB_RESULT",
|
||||
"title": "Blood test",
|
||||
"filename": "labs.pdf",
|
||||
"mimeType": "application/pdf",
|
||||
"byteSize": 42,
|
||||
"status": "STORED",
|
||||
"providerType": null,
|
||||
"reportDate": null,
|
||||
"documentDate": "2025-03-04",
|
||||
"errorReason": null,
|
||||
"factCount": 0,
|
||||
"pendingCount": 0,
|
||||
"conditionLinks": [],
|
||||
"encounterLinks": [],
|
||||
"servingClass": "inline",
|
||||
"hasContentIndex": false,
|
||||
"contentIndexSource": null,
|
||||
"lastIndexAttemptAt": null,
|
||||
"lastIndexOutcome": null,
|
||||
"hasThumbnail": false,
|
||||
"sourceSystem": null,
|
||||
"sourceId": null,
|
||||
"createdAt": "<createdAt>",
|
||||
"updatedAt": "<updatedAt>"
|
||||
},
|
||||
"error": null
|
||||
},
|
||||
"events": [
|
||||
{
|
||||
"status": 201,
|
||||
"action": {
|
||||
"name": "documents.summary.enqueueSkipped"
|
||||
},
|
||||
"meta": {
|
||||
"documentId": "<id:1>",
|
||||
"byteSize": 42,
|
||||
"servingClass": "inline",
|
||||
"linked": 0,
|
||||
"linkedVisits": 0,
|
||||
"scoped": false,
|
||||
"sourceSystem": null,
|
||||
"aiDeferred": false,
|
||||
"reason": "no_provider"
|
||||
},
|
||||
"warnings": null,
|
||||
"error": null
|
||||
}
|
||||
],
|
||||
"effects": [
|
||||
{
|
||||
"effect": "enqueueDocumentIndex",
|
||||
"args": [
|
||||
"<id:2>",
|
||||
"<id:1>"
|
||||
]
|
||||
},
|
||||
{
|
||||
"effect": "enqueueDocumentThumbnail",
|
||||
"args": [
|
||||
"<id:2>",
|
||||
"<id:1>"
|
||||
]
|
||||
}
|
||||
],
|
||||
"stored": [
|
||||
{
|
||||
"id": "<id:3>",
|
||||
"kind": "DISCHARGE_LETTER",
|
||||
"title": "Discharge letter",
|
||||
"filename": "discharge.pdf",
|
||||
"mimeType": "application/pdf",
|
||||
"byteSize": 47,
|
||||
"status": "STORED",
|
||||
"documentDate": "2026-10-02T12:00:00.000Z",
|
||||
"sourceSystem": null,
|
||||
"sourceId": null,
|
||||
"deletedAt": null,
|
||||
"conditionLinks": [
|
||||
{
|
||||
"episodeId": "<id:4>"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "<id:1>",
|
||||
"kind": "LAB_RESULT",
|
||||
"title": "Blood test",
|
||||
"filename": "labs.pdf",
|
||||
"mimeType": "application/pdf",
|
||||
"byteSize": 42,
|
||||
"status": "STORED",
|
||||
"documentDate": "2025-03-04T12:00:00.000Z",
|
||||
"sourceSystem": null,
|
||||
"sourceId": null,
|
||||
"deletedAt": null,
|
||||
"conditionLinks": []
|
||||
}
|
||||
]
|
||||
}
|
||||
+55
@@ -0,0 +1,55 @@
|
||||
{
|
||||
"status": 422,
|
||||
"body": {
|
||||
"data": null,
|
||||
"error": "Field 'file' must be a file",
|
||||
"meta": {
|
||||
"errorCode": "http.invalid",
|
||||
"requestId": "<requestId>"
|
||||
}
|
||||
},
|
||||
"events": [
|
||||
{
|
||||
"status": 422,
|
||||
"action": null,
|
||||
"meta": null,
|
||||
"warnings": null,
|
||||
"error": null
|
||||
}
|
||||
],
|
||||
"effects": [],
|
||||
"stored": [
|
||||
{
|
||||
"id": "<id:1>",
|
||||
"kind": "DISCHARGE_LETTER",
|
||||
"title": "Discharge letter",
|
||||
"filename": "discharge.pdf",
|
||||
"mimeType": "application/pdf",
|
||||
"byteSize": 47,
|
||||
"status": "STORED",
|
||||
"documentDate": "2026-10-02T12:00:00.000Z",
|
||||
"sourceSystem": null,
|
||||
"sourceId": null,
|
||||
"deletedAt": null,
|
||||
"conditionLinks": [
|
||||
{
|
||||
"episodeId": "<id:2>"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "<id:3>",
|
||||
"kind": "LAB_RESULT",
|
||||
"title": "Blood test",
|
||||
"filename": "labs.pdf",
|
||||
"mimeType": "application/pdf",
|
||||
"byteSize": 42,
|
||||
"status": "STORED",
|
||||
"documentDate": "2025-03-04T12:00:00.000Z",
|
||||
"sourceSystem": null,
|
||||
"sourceId": null,
|
||||
"deletedAt": null,
|
||||
"conditionLinks": []
|
||||
}
|
||||
]
|
||||
}
|
||||
+64
@@ -0,0 +1,64 @@
|
||||
{
|
||||
"status": 422,
|
||||
"body": {
|
||||
"data": null,
|
||||
"error": "Invalid document metadata",
|
||||
"details": {
|
||||
"issues": [
|
||||
{
|
||||
"path": "kind",
|
||||
"code": "invalid_value",
|
||||
"message": "Invalid option: expected one of \"DOCTOR_REPORT\"|\"DISCHARGE_LETTER\"|\"LAB_RESULT\"|\"IMAGING\"|\"PRESCRIPTION\"|\"REFERRAL\"|\"INSURANCE\"|\"VACCINATION\"|\"SICK_NOTE\"|\"OTHER\""
|
||||
}
|
||||
]
|
||||
},
|
||||
"meta": {
|
||||
"errorCode": "documents.inbound.invalidMetadata",
|
||||
"requestId": "<requestId>"
|
||||
}
|
||||
},
|
||||
"events": [
|
||||
{
|
||||
"status": 422,
|
||||
"action": null,
|
||||
"meta": null,
|
||||
"warnings": null,
|
||||
"error": null
|
||||
}
|
||||
],
|
||||
"effects": [],
|
||||
"stored": [
|
||||
{
|
||||
"id": "<id:1>",
|
||||
"kind": "DISCHARGE_LETTER",
|
||||
"title": "Discharge letter",
|
||||
"filename": "discharge.pdf",
|
||||
"mimeType": "application/pdf",
|
||||
"byteSize": 47,
|
||||
"status": "STORED",
|
||||
"documentDate": "2026-10-02T12:00:00.000Z",
|
||||
"sourceSystem": null,
|
||||
"sourceId": null,
|
||||
"deletedAt": null,
|
||||
"conditionLinks": [
|
||||
{
|
||||
"episodeId": "<id:2>"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "<id:3>",
|
||||
"kind": "LAB_RESULT",
|
||||
"title": "Blood test",
|
||||
"filename": "labs.pdf",
|
||||
"mimeType": "application/pdf",
|
||||
"byteSize": 42,
|
||||
"status": "STORED",
|
||||
"documentDate": "2025-03-04T12:00:00.000Z",
|
||||
"sourceSystem": null,
|
||||
"sourceId": null,
|
||||
"deletedAt": null,
|
||||
"conditionLinks": []
|
||||
}
|
||||
]
|
||||
}
|
||||
+55
@@ -0,0 +1,55 @@
|
||||
{
|
||||
"status": 422,
|
||||
"body": {
|
||||
"data": null,
|
||||
"error": "Uploaded file is empty",
|
||||
"meta": {
|
||||
"errorCode": "documents.inbound.invalidMetadata",
|
||||
"requestId": "<requestId>"
|
||||
}
|
||||
},
|
||||
"events": [
|
||||
{
|
||||
"status": 422,
|
||||
"action": null,
|
||||
"meta": null,
|
||||
"warnings": null,
|
||||
"error": null
|
||||
}
|
||||
],
|
||||
"effects": [],
|
||||
"stored": [
|
||||
{
|
||||
"id": "<id:1>",
|
||||
"kind": "DISCHARGE_LETTER",
|
||||
"title": "Discharge letter",
|
||||
"filename": "discharge.pdf",
|
||||
"mimeType": "application/pdf",
|
||||
"byteSize": 47,
|
||||
"status": "STORED",
|
||||
"documentDate": "2026-10-02T12:00:00.000Z",
|
||||
"sourceSystem": null,
|
||||
"sourceId": null,
|
||||
"deletedAt": null,
|
||||
"conditionLinks": [
|
||||
{
|
||||
"episodeId": "<id:2>"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "<id:3>",
|
||||
"kind": "LAB_RESULT",
|
||||
"title": "Blood test",
|
||||
"filename": "labs.pdf",
|
||||
"mimeType": "application/pdf",
|
||||
"byteSize": 42,
|
||||
"status": "STORED",
|
||||
"documentDate": "2025-03-04T12:00:00.000Z",
|
||||
"sourceSystem": null,
|
||||
"sourceId": null,
|
||||
"deletedAt": null,
|
||||
"conditionLinks": []
|
||||
}
|
||||
]
|
||||
}
|
||||
+56
@@ -0,0 +1,56 @@
|
||||
{
|
||||
"status": 415,
|
||||
"body": {
|
||||
"data": null,
|
||||
"error": "This file type is not supported.",
|
||||
"meta": {
|
||||
"errorCode": "documents.inbound.fileType",
|
||||
"reason": "unsupportedType",
|
||||
"requestId": "<requestId>"
|
||||
}
|
||||
},
|
||||
"events": [
|
||||
{
|
||||
"status": 415,
|
||||
"action": null,
|
||||
"meta": null,
|
||||
"warnings": null,
|
||||
"error": null
|
||||
}
|
||||
],
|
||||
"effects": [],
|
||||
"stored": [
|
||||
{
|
||||
"id": "<id:1>",
|
||||
"kind": "DISCHARGE_LETTER",
|
||||
"title": "Discharge letter",
|
||||
"filename": "discharge.pdf",
|
||||
"mimeType": "application/pdf",
|
||||
"byteSize": 47,
|
||||
"status": "STORED",
|
||||
"documentDate": "2026-10-02T12:00:00.000Z",
|
||||
"sourceSystem": null,
|
||||
"sourceId": null,
|
||||
"deletedAt": null,
|
||||
"conditionLinks": [
|
||||
{
|
||||
"episodeId": "<id:2>"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "<id:3>",
|
||||
"kind": "LAB_RESULT",
|
||||
"title": "Blood test",
|
||||
"filename": "labs.pdf",
|
||||
"mimeType": "application/pdf",
|
||||
"byteSize": 42,
|
||||
"status": "STORED",
|
||||
"documentDate": "2025-03-04T12:00:00.000Z",
|
||||
"sourceSystem": null,
|
||||
"sourceId": null,
|
||||
"deletedAt": null,
|
||||
"conditionLinks": []
|
||||
}
|
||||
]
|
||||
}
|
||||
+55
@@ -0,0 +1,55 @@
|
||||
{
|
||||
"status": 404,
|
||||
"body": {
|
||||
"data": null,
|
||||
"error": "Episode not found",
|
||||
"meta": {
|
||||
"errorCode": "documents.inbound.episodeNotFound",
|
||||
"requestId": "<requestId>"
|
||||
}
|
||||
},
|
||||
"events": [
|
||||
{
|
||||
"status": 404,
|
||||
"action": null,
|
||||
"meta": null,
|
||||
"warnings": null,
|
||||
"error": null
|
||||
}
|
||||
],
|
||||
"effects": [],
|
||||
"stored": [
|
||||
{
|
||||
"id": "<id:1>",
|
||||
"kind": "DISCHARGE_LETTER",
|
||||
"title": "Discharge letter",
|
||||
"filename": "discharge.pdf",
|
||||
"mimeType": "application/pdf",
|
||||
"byteSize": 47,
|
||||
"status": "STORED",
|
||||
"documentDate": "2026-10-02T12:00:00.000Z",
|
||||
"sourceSystem": null,
|
||||
"sourceId": null,
|
||||
"deletedAt": null,
|
||||
"conditionLinks": [
|
||||
{
|
||||
"episodeId": "<id:2>"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "<id:3>",
|
||||
"kind": "LAB_RESULT",
|
||||
"title": "Blood test",
|
||||
"filename": "labs.pdf",
|
||||
"mimeType": "application/pdf",
|
||||
"byteSize": 42,
|
||||
"status": "STORED",
|
||||
"documentDate": "2025-03-04T12:00:00.000Z",
|
||||
"sourceSystem": null,
|
||||
"sourceId": null,
|
||||
"deletedAt": null,
|
||||
"conditionLinks": []
|
||||
}
|
||||
]
|
||||
}
|
||||
+64
@@ -0,0 +1,64 @@
|
||||
{
|
||||
"status": 422,
|
||||
"body": {
|
||||
"data": null,
|
||||
"error": "Invalid source key",
|
||||
"details": {
|
||||
"issues": [
|
||||
{
|
||||
"path": "sourceId",
|
||||
"code": "invalid_type",
|
||||
"message": "Invalid input: expected string, received undefined"
|
||||
}
|
||||
]
|
||||
},
|
||||
"meta": {
|
||||
"errorCode": "documents.inbound.invalidMetadata",
|
||||
"requestId": "<requestId>"
|
||||
}
|
||||
},
|
||||
"events": [
|
||||
{
|
||||
"status": 422,
|
||||
"action": null,
|
||||
"meta": null,
|
||||
"warnings": null,
|
||||
"error": null
|
||||
}
|
||||
],
|
||||
"effects": [],
|
||||
"stored": [
|
||||
{
|
||||
"id": "<id:1>",
|
||||
"kind": "DISCHARGE_LETTER",
|
||||
"title": "Discharge letter",
|
||||
"filename": "discharge.pdf",
|
||||
"mimeType": "application/pdf",
|
||||
"byteSize": 47,
|
||||
"status": "STORED",
|
||||
"documentDate": "2026-10-02T12:00:00.000Z",
|
||||
"sourceSystem": null,
|
||||
"sourceId": null,
|
||||
"deletedAt": null,
|
||||
"conditionLinks": [
|
||||
{
|
||||
"episodeId": "<id:2>"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "<id:3>",
|
||||
"kind": "LAB_RESULT",
|
||||
"title": "Blood test",
|
||||
"filename": "labs.pdf",
|
||||
"mimeType": "application/pdf",
|
||||
"byteSize": 42,
|
||||
"status": "STORED",
|
||||
"documentDate": "2025-03-04T12:00:00.000Z",
|
||||
"sourceSystem": null,
|
||||
"sourceId": null,
|
||||
"deletedAt": null,
|
||||
"conditionLinks": []
|
||||
}
|
||||
]
|
||||
}
|
||||
+55
@@ -0,0 +1,55 @@
|
||||
{
|
||||
"status": 422,
|
||||
"body": {
|
||||
"data": null,
|
||||
"error": "The source key in the address and in the form differ.",
|
||||
"meta": {
|
||||
"errorCode": "documents.inbound.invalidMetadata",
|
||||
"requestId": "<requestId>"
|
||||
}
|
||||
},
|
||||
"events": [
|
||||
{
|
||||
"status": 422,
|
||||
"action": null,
|
||||
"meta": null,
|
||||
"warnings": null,
|
||||
"error": null
|
||||
}
|
||||
],
|
||||
"effects": [],
|
||||
"stored": [
|
||||
{
|
||||
"id": "<id:1>",
|
||||
"kind": "DISCHARGE_LETTER",
|
||||
"title": "Discharge letter",
|
||||
"filename": "discharge.pdf",
|
||||
"mimeType": "application/pdf",
|
||||
"byteSize": 47,
|
||||
"status": "STORED",
|
||||
"documentDate": "2026-10-02T12:00:00.000Z",
|
||||
"sourceSystem": null,
|
||||
"sourceId": null,
|
||||
"deletedAt": null,
|
||||
"conditionLinks": [
|
||||
{
|
||||
"episodeId": "<id:2>"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "<id:3>",
|
||||
"kind": "LAB_RESULT",
|
||||
"title": "Blood test",
|
||||
"filename": "labs.pdf",
|
||||
"mimeType": "application/pdf",
|
||||
"byteSize": 42,
|
||||
"status": "STORED",
|
||||
"documentDate": "2025-03-04T12:00:00.000Z",
|
||||
"sourceSystem": null,
|
||||
"sourceId": null,
|
||||
"deletedAt": null,
|
||||
"conditionLinks": []
|
||||
}
|
||||
]
|
||||
}
|
||||
+98
@@ -0,0 +1,98 @@
|
||||
{
|
||||
"status": 201,
|
||||
"body": {
|
||||
"data": {
|
||||
"id": "<id:1>",
|
||||
"duplicate": false
|
||||
},
|
||||
"error": null
|
||||
},
|
||||
"events": [
|
||||
{
|
||||
"status": 201,
|
||||
"action": {
|
||||
"name": "documents.summary.enqueueSkipped"
|
||||
},
|
||||
"meta": {
|
||||
"documentId": "<id:1>",
|
||||
"byteSize": 46,
|
||||
"servingClass": "inline",
|
||||
"linked": 0,
|
||||
"linkedVisits": 0,
|
||||
"scoped": true,
|
||||
"sourceSystem": "PAPERLESS",
|
||||
"aiDeferred": true,
|
||||
"reason": "deferred"
|
||||
},
|
||||
"warnings": null,
|
||||
"error": null
|
||||
}
|
||||
],
|
||||
"effects": [
|
||||
{
|
||||
"effect": "enqueueDocumentIndex",
|
||||
"args": [
|
||||
"<id:2>",
|
||||
"<id:1>",
|
||||
{
|
||||
"localOnly": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"effect": "enqueueDocumentThumbnail",
|
||||
"args": [
|
||||
"<id:2>",
|
||||
"<id:1>"
|
||||
]
|
||||
}
|
||||
],
|
||||
"stored": [
|
||||
{
|
||||
"id": "<id:3>",
|
||||
"kind": "DISCHARGE_LETTER",
|
||||
"title": "Discharge letter",
|
||||
"filename": "discharge.pdf",
|
||||
"mimeType": "application/pdf",
|
||||
"byteSize": 47,
|
||||
"status": "STORED",
|
||||
"documentDate": "2026-10-02T12:00:00.000Z",
|
||||
"sourceSystem": null,
|
||||
"sourceId": null,
|
||||
"deletedAt": null,
|
||||
"conditionLinks": [
|
||||
{
|
||||
"episodeId": "<id:4>"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "<id:1>",
|
||||
"kind": "OTHER",
|
||||
"title": null,
|
||||
"filename": "imported.pdf",
|
||||
"mimeType": "application/pdf",
|
||||
"byteSize": 46,
|
||||
"status": "STORED",
|
||||
"documentDate": "<now>",
|
||||
"sourceSystem": "PAPERLESS",
|
||||
"sourceId": "41",
|
||||
"deletedAt": null,
|
||||
"conditionLinks": []
|
||||
},
|
||||
{
|
||||
"id": "<id:5>",
|
||||
"kind": "LAB_RESULT",
|
||||
"title": "Blood test",
|
||||
"filename": "labs.pdf",
|
||||
"mimeType": "application/pdf",
|
||||
"byteSize": 42,
|
||||
"status": "STORED",
|
||||
"documentDate": "2025-03-04T12:00:00.000Z",
|
||||
"sourceSystem": null,
|
||||
"sourceId": null,
|
||||
"deletedAt": null,
|
||||
"conditionLinks": []
|
||||
}
|
||||
]
|
||||
}
|
||||
+79
@@ -0,0 +1,79 @@
|
||||
{
|
||||
"status": 200,
|
||||
"body": {
|
||||
"data": {
|
||||
"id": "<id:1>",
|
||||
"duplicate": true
|
||||
},
|
||||
"error": null,
|
||||
"meta": {
|
||||
"duplicate": true
|
||||
}
|
||||
},
|
||||
"events": [
|
||||
{
|
||||
"status": 200,
|
||||
"action": {
|
||||
"name": "documents.vault.upload"
|
||||
},
|
||||
"meta": {
|
||||
"documentId": "<id:1>",
|
||||
"duplicate": true,
|
||||
"scoped": true,
|
||||
"sourceSystem": "PAPERLESS",
|
||||
"aiDeferred": false
|
||||
},
|
||||
"warnings": null,
|
||||
"error": null
|
||||
}
|
||||
],
|
||||
"effects": [],
|
||||
"stored": [
|
||||
{
|
||||
"id": "<id:2>",
|
||||
"kind": "DISCHARGE_LETTER",
|
||||
"title": "Discharge letter",
|
||||
"filename": "discharge.pdf",
|
||||
"mimeType": "application/pdf",
|
||||
"byteSize": 47,
|
||||
"status": "STORED",
|
||||
"documentDate": "2026-10-02T12:00:00.000Z",
|
||||
"sourceSystem": null,
|
||||
"sourceId": null,
|
||||
"deletedAt": null,
|
||||
"conditionLinks": [
|
||||
{
|
||||
"episodeId": "<id:3>"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "<id:1>",
|
||||
"kind": "OTHER",
|
||||
"title": null,
|
||||
"filename": "imported.pdf",
|
||||
"mimeType": "application/pdf",
|
||||
"byteSize": 46,
|
||||
"status": "STORED",
|
||||
"documentDate": "<now>",
|
||||
"sourceSystem": "PAPERLESS",
|
||||
"sourceId": "41",
|
||||
"deletedAt": null,
|
||||
"conditionLinks": []
|
||||
},
|
||||
{
|
||||
"id": "<id:4>",
|
||||
"kind": "LAB_RESULT",
|
||||
"title": "Blood test",
|
||||
"filename": "labs.pdf",
|
||||
"mimeType": "application/pdf",
|
||||
"byteSize": 42,
|
||||
"status": "STORED",
|
||||
"documentDate": "2025-03-04T12:00:00.000Z",
|
||||
"sourceSystem": null,
|
||||
"sourceId": null,
|
||||
"deletedAt": null,
|
||||
"conditionLinks": []
|
||||
}
|
||||
]
|
||||
}
|
||||
+82
@@ -0,0 +1,82 @@
|
||||
{
|
||||
"status": 200,
|
||||
"body": {
|
||||
"data": {
|
||||
"id": "<id:1>",
|
||||
"duplicate": true,
|
||||
"deleted": true
|
||||
},
|
||||
"error": null,
|
||||
"meta": {
|
||||
"duplicate": true,
|
||||
"deleted": true
|
||||
}
|
||||
},
|
||||
"events": [
|
||||
{
|
||||
"status": 200,
|
||||
"action": {
|
||||
"name": "documents.vault.upload"
|
||||
},
|
||||
"meta": {
|
||||
"documentId": "<id:1>",
|
||||
"duplicate": true,
|
||||
"deleted": true,
|
||||
"scoped": true,
|
||||
"sourceSystem": "PAPERLESS",
|
||||
"aiDeferred": false
|
||||
},
|
||||
"warnings": null,
|
||||
"error": null
|
||||
}
|
||||
],
|
||||
"effects": [],
|
||||
"stored": [
|
||||
{
|
||||
"id": "<id:2>",
|
||||
"kind": "DISCHARGE_LETTER",
|
||||
"title": "Discharge letter",
|
||||
"filename": "discharge.pdf",
|
||||
"mimeType": "application/pdf",
|
||||
"byteSize": 47,
|
||||
"status": "STORED",
|
||||
"documentDate": "2026-10-02T12:00:00.000Z",
|
||||
"sourceSystem": null,
|
||||
"sourceId": null,
|
||||
"deletedAt": null,
|
||||
"conditionLinks": [
|
||||
{
|
||||
"episodeId": "<id:3>"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "<id:1>",
|
||||
"kind": "OTHER",
|
||||
"title": null,
|
||||
"filename": "imported.pdf",
|
||||
"mimeType": "application/pdf",
|
||||
"byteSize": 46,
|
||||
"status": "STORED",
|
||||
"documentDate": "<now>",
|
||||
"sourceSystem": "PAPERLESS",
|
||||
"sourceId": "41",
|
||||
"deletedAt": "2026-10-14T09:00:00.000Z",
|
||||
"conditionLinks": []
|
||||
},
|
||||
{
|
||||
"id": "<id:4>",
|
||||
"kind": "LAB_RESULT",
|
||||
"title": "Blood test",
|
||||
"filename": "labs.pdf",
|
||||
"mimeType": "application/pdf",
|
||||
"byteSize": 42,
|
||||
"status": "STORED",
|
||||
"documentDate": "2025-03-04T12:00:00.000Z",
|
||||
"sourceSystem": null,
|
||||
"sourceId": null,
|
||||
"deletedAt": null,
|
||||
"conditionLinks": []
|
||||
}
|
||||
]
|
||||
}
|
||||
+70
@@ -0,0 +1,70 @@
|
||||
{
|
||||
"status": 403,
|
||||
"body": {
|
||||
"data": null,
|
||||
"error": "Module \"inboundDocuments\" is not enabled",
|
||||
"meta": {
|
||||
"errorCode": "module.disabled",
|
||||
"module": "inboundDocuments",
|
||||
"requestId": "<requestId>"
|
||||
}
|
||||
},
|
||||
"events": [
|
||||
{
|
||||
"status": 403,
|
||||
"action": null,
|
||||
"meta": null,
|
||||
"warnings": null,
|
||||
"error": null
|
||||
}
|
||||
],
|
||||
"effects": [],
|
||||
"stored": [
|
||||
{
|
||||
"id": "<id:1>",
|
||||
"kind": "DISCHARGE_LETTER",
|
||||
"title": "Discharge letter",
|
||||
"filename": "discharge.pdf",
|
||||
"mimeType": "application/pdf",
|
||||
"byteSize": 47,
|
||||
"status": "STORED",
|
||||
"documentDate": "2026-10-02T12:00:00.000Z",
|
||||
"sourceSystem": null,
|
||||
"sourceId": null,
|
||||
"deletedAt": null,
|
||||
"conditionLinks": [
|
||||
{
|
||||
"episodeId": "<id:2>"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "<id:3>",
|
||||
"kind": "OTHER",
|
||||
"title": null,
|
||||
"filename": "imported.pdf",
|
||||
"mimeType": "application/pdf",
|
||||
"byteSize": 46,
|
||||
"status": "STORED",
|
||||
"documentDate": "<now>",
|
||||
"sourceSystem": "PAPERLESS",
|
||||
"sourceId": "41",
|
||||
"deletedAt": "2026-10-14T09:00:00.000Z",
|
||||
"conditionLinks": []
|
||||
},
|
||||
{
|
||||
"id": "<id:4>",
|
||||
"kind": "LAB_RESULT",
|
||||
"title": "Blood test",
|
||||
"filename": "labs.pdf",
|
||||
"mimeType": "application/pdf",
|
||||
"byteSize": 42,
|
||||
"status": "STORED",
|
||||
"documentDate": "2025-03-04T12:00:00.000Z",
|
||||
"sourceSystem": null,
|
||||
"sourceId": null,
|
||||
"deletedAt": null,
|
||||
"conditionLinks": []
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,70 @@
|
||||
{
|
||||
"status": 200,
|
||||
"body": {
|
||||
"data": {
|
||||
"inserted": 7,
|
||||
"updated": 0,
|
||||
"skipped": 1,
|
||||
"total": 8,
|
||||
"dryRun": true,
|
||||
"rows": [
|
||||
{
|
||||
"line": 2,
|
||||
"status": "inserted"
|
||||
},
|
||||
{
|
||||
"line": 3,
|
||||
"status": "inserted"
|
||||
},
|
||||
{
|
||||
"line": 4,
|
||||
"status": "inserted"
|
||||
},
|
||||
{
|
||||
"line": 5,
|
||||
"status": "inserted"
|
||||
},
|
||||
{
|
||||
"line": 6,
|
||||
"status": "inserted"
|
||||
},
|
||||
{
|
||||
"line": 7,
|
||||
"status": "inserted"
|
||||
},
|
||||
{
|
||||
"line": 8,
|
||||
"status": "inserted"
|
||||
},
|
||||
{
|
||||
"line": 9,
|
||||
"status": "skipped",
|
||||
"reason": "invalid_value"
|
||||
}
|
||||
]
|
||||
},
|
||||
"error": null
|
||||
},
|
||||
"events": [
|
||||
{
|
||||
"status": 200,
|
||||
"action": {
|
||||
"name": "import.csv.upload"
|
||||
},
|
||||
"meta": {
|
||||
"import_csv_inserted": 7,
|
||||
"import_csv_updated": 0,
|
||||
"import_csv_skipped": 1,
|
||||
"import_csv_dry_run": true
|
||||
},
|
||||
"warnings": null,
|
||||
"error": null
|
||||
}
|
||||
],
|
||||
"effects": [],
|
||||
"stored": {
|
||||
"measurements": [],
|
||||
"rollups": [],
|
||||
"audit": []
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,206 @@
|
||||
{
|
||||
"status": 200,
|
||||
"body": {
|
||||
"data": {
|
||||
"inserted": 5,
|
||||
"updated": 1,
|
||||
"skipped": 2,
|
||||
"total": 8,
|
||||
"dryRun": false,
|
||||
"rows": [
|
||||
{
|
||||
"line": 2,
|
||||
"status": "inserted"
|
||||
},
|
||||
{
|
||||
"line": 3,
|
||||
"status": "inserted"
|
||||
},
|
||||
{
|
||||
"line": 4,
|
||||
"status": "updated"
|
||||
},
|
||||
{
|
||||
"line": 5,
|
||||
"status": "inserted"
|
||||
},
|
||||
{
|
||||
"line": 6,
|
||||
"status": "skipped",
|
||||
"reason": "duplicate"
|
||||
},
|
||||
{
|
||||
"line": 7,
|
||||
"status": "inserted"
|
||||
},
|
||||
{
|
||||
"line": 8,
|
||||
"status": "inserted"
|
||||
},
|
||||
{
|
||||
"line": 9,
|
||||
"status": "skipped",
|
||||
"reason": "invalid_value"
|
||||
}
|
||||
]
|
||||
},
|
||||
"error": null
|
||||
},
|
||||
"events": [
|
||||
{
|
||||
"status": 200,
|
||||
"action": {
|
||||
"name": "import.csv.upload"
|
||||
},
|
||||
"meta": {
|
||||
"import_csv_inserted": 5,
|
||||
"import_csv_updated": 1,
|
||||
"import_csv_skipped": 2,
|
||||
"import_csv_dry_run": false
|
||||
},
|
||||
"warnings": null,
|
||||
"error": null
|
||||
}
|
||||
],
|
||||
"effects": [
|
||||
{
|
||||
"effect": "emitDataArrival",
|
||||
"args": [
|
||||
{
|
||||
"userId": "<id:1>",
|
||||
"kind": "weight",
|
||||
"newestSampleAt": "2026-10-11T06:30:00.000Z",
|
||||
"insertedCount": 2,
|
||||
"refId": "<id:2>",
|
||||
"source": "csv_import"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"effect": "maybeEnqueueMorningRefresh",
|
||||
"args": [
|
||||
"<id:1>",
|
||||
[
|
||||
"2026-10-12T06:00:00.000Z"
|
||||
]
|
||||
]
|
||||
},
|
||||
{
|
||||
"effect": "invalidateStatusInsightsForTypes",
|
||||
"args": [
|
||||
"<id:1>",
|
||||
[
|
||||
"WEIGHT",
|
||||
"SLEEP_DURATION",
|
||||
"BLOOD_GLUCOSE",
|
||||
"PULSE"
|
||||
],
|
||||
{
|
||||
"source": "manual"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"stored": {
|
||||
"measurements": [
|
||||
{
|
||||
"type": "WEIGHT",
|
||||
"value": 81.4,
|
||||
"unit": "kg",
|
||||
"source": "IMPORT",
|
||||
"externalId": "exp-w-1",
|
||||
"measuredAt": "2026-10-10T06:30:00.000Z",
|
||||
"notes": null,
|
||||
"notesEncrypted": "<bytes:59>",
|
||||
"glucoseContext": null,
|
||||
"deletedAt": null
|
||||
},
|
||||
{
|
||||
"type": "WEIGHT",
|
||||
"value": 82,
|
||||
"unit": "kg",
|
||||
"source": "IMPORT",
|
||||
"externalId": "exp-w-2",
|
||||
"measuredAt": "2026-10-11T06:30:00.000Z",
|
||||
"notes": null,
|
||||
"notesEncrypted": null,
|
||||
"glucoseContext": null,
|
||||
"deletedAt": null
|
||||
},
|
||||
{
|
||||
"type": "PULSE",
|
||||
"value": 64,
|
||||
"unit": "bpm",
|
||||
"source": "IMPORT",
|
||||
"externalId": null,
|
||||
"measuredAt": "2026-10-12T07:00:00.000Z",
|
||||
"notes": null,
|
||||
"notesEncrypted": null,
|
||||
"glucoseContext": null,
|
||||
"deletedAt": null
|
||||
},
|
||||
{
|
||||
"type": "SLEEP_DURATION",
|
||||
"value": 412,
|
||||
"unit": "minutes",
|
||||
"source": "IMPORT",
|
||||
"externalId": "exp-s-1",
|
||||
"measuredAt": "2026-10-12T06:00:00.000Z",
|
||||
"notes": null,
|
||||
"notesEncrypted": null,
|
||||
"glucoseContext": null,
|
||||
"deletedAt": null
|
||||
},
|
||||
{
|
||||
"type": "BLOOD_GLUCOSE",
|
||||
"value": 104,
|
||||
"unit": "mg/dL",
|
||||
"source": "IMPORT",
|
||||
"externalId": null,
|
||||
"measuredAt": "2026-10-11T08:00:00.000Z",
|
||||
"notes": null,
|
||||
"notesEncrypted": null,
|
||||
"glucoseContext": "FASTING",
|
||||
"deletedAt": null
|
||||
}
|
||||
],
|
||||
"rollups": [
|
||||
{
|
||||
"type": "WEIGHT",
|
||||
"bucketStart": "2026-10-10T00:00:00.000Z",
|
||||
"count": 1,
|
||||
"mean": 81.4
|
||||
},
|
||||
{
|
||||
"type": "WEIGHT",
|
||||
"bucketStart": "2026-10-11T00:00:00.000Z",
|
||||
"count": 1,
|
||||
"mean": 82
|
||||
},
|
||||
{
|
||||
"type": "PULSE",
|
||||
"bucketStart": "2026-10-12T00:00:00.000Z",
|
||||
"count": 1,
|
||||
"mean": 64
|
||||
},
|
||||
{
|
||||
"type": "SLEEP_DURATION",
|
||||
"bucketStart": "2026-10-12T00:00:00.000Z",
|
||||
"count": 1,
|
||||
"mean": 412
|
||||
},
|
||||
{
|
||||
"type": "BLOOD_GLUCOSE",
|
||||
"bucketStart": "2026-10-11T00:00:00.000Z",
|
||||
"count": 1,
|
||||
"mean": 104
|
||||
}
|
||||
],
|
||||
"audit": [
|
||||
{
|
||||
"action": "import.csv.upload",
|
||||
"details": "{\"inserted\":5,\"updated\":1,\"skipped\":2}"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,196 @@
|
||||
{
|
||||
"status": 200,
|
||||
"body": {
|
||||
"data": {
|
||||
"inserted": 0,
|
||||
"updated": 2,
|
||||
"skipped": 6,
|
||||
"total": 8,
|
||||
"dryRun": false,
|
||||
"rows": [
|
||||
{
|
||||
"line": 2,
|
||||
"status": "skipped",
|
||||
"reason": "duplicate"
|
||||
},
|
||||
{
|
||||
"line": 3,
|
||||
"status": "updated"
|
||||
},
|
||||
{
|
||||
"line": 4,
|
||||
"status": "updated"
|
||||
},
|
||||
{
|
||||
"line": 5,
|
||||
"status": "skipped",
|
||||
"reason": "duplicate"
|
||||
},
|
||||
{
|
||||
"line": 6,
|
||||
"status": "skipped",
|
||||
"reason": "duplicate"
|
||||
},
|
||||
{
|
||||
"line": 7,
|
||||
"status": "skipped",
|
||||
"reason": "duplicate"
|
||||
},
|
||||
{
|
||||
"line": 8,
|
||||
"status": "skipped",
|
||||
"reason": "duplicate"
|
||||
},
|
||||
{
|
||||
"line": 9,
|
||||
"status": "skipped",
|
||||
"reason": "invalid_value"
|
||||
}
|
||||
]
|
||||
},
|
||||
"error": null
|
||||
},
|
||||
"events": [
|
||||
{
|
||||
"status": 200,
|
||||
"action": {
|
||||
"name": "import.csv.upload"
|
||||
},
|
||||
"meta": {
|
||||
"import_csv_inserted": 0,
|
||||
"import_csv_updated": 2,
|
||||
"import_csv_skipped": 6,
|
||||
"import_csv_dry_run": false
|
||||
},
|
||||
"warnings": null,
|
||||
"error": null
|
||||
}
|
||||
],
|
||||
"effects": [
|
||||
{
|
||||
"effect": "maybeEnqueueMorningRefresh",
|
||||
"args": [
|
||||
"<id:1>",
|
||||
[]
|
||||
]
|
||||
},
|
||||
{
|
||||
"effect": "invalidateStatusInsightsForTypes",
|
||||
"args": [
|
||||
"<id:1>",
|
||||
[
|
||||
"WEIGHT"
|
||||
],
|
||||
{
|
||||
"source": "manual"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"stored": {
|
||||
"measurements": [
|
||||
{
|
||||
"type": "WEIGHT",
|
||||
"value": 81.4,
|
||||
"unit": "kg",
|
||||
"source": "IMPORT",
|
||||
"externalId": "exp-w-1",
|
||||
"measuredAt": "2026-10-10T06:30:00.000Z",
|
||||
"notes": null,
|
||||
"notesEncrypted": "<bytes:59>",
|
||||
"glucoseContext": null,
|
||||
"deletedAt": null
|
||||
},
|
||||
{
|
||||
"type": "WEIGHT",
|
||||
"value": 82,
|
||||
"unit": "kg",
|
||||
"source": "IMPORT",
|
||||
"externalId": "exp-w-2",
|
||||
"measuredAt": "2026-10-11T06:30:00.000Z",
|
||||
"notes": null,
|
||||
"notesEncrypted": null,
|
||||
"glucoseContext": null,
|
||||
"deletedAt": null
|
||||
},
|
||||
{
|
||||
"type": "PULSE",
|
||||
"value": 64,
|
||||
"unit": "bpm",
|
||||
"source": "IMPORT",
|
||||
"externalId": null,
|
||||
"measuredAt": "2026-10-12T07:00:00.000Z",
|
||||
"notes": null,
|
||||
"notesEncrypted": null,
|
||||
"glucoseContext": null,
|
||||
"deletedAt": null
|
||||
},
|
||||
{
|
||||
"type": "SLEEP_DURATION",
|
||||
"value": 412,
|
||||
"unit": "minutes",
|
||||
"source": "IMPORT",
|
||||
"externalId": "exp-s-1",
|
||||
"measuredAt": "2026-10-12T06:00:00.000Z",
|
||||
"notes": null,
|
||||
"notesEncrypted": null,
|
||||
"glucoseContext": null,
|
||||
"deletedAt": null
|
||||
},
|
||||
{
|
||||
"type": "BLOOD_GLUCOSE",
|
||||
"value": 104,
|
||||
"unit": "mg/dL",
|
||||
"source": "IMPORT",
|
||||
"externalId": null,
|
||||
"measuredAt": "2026-10-11T08:00:00.000Z",
|
||||
"notes": null,
|
||||
"notesEncrypted": null,
|
||||
"glucoseContext": "FASTING",
|
||||
"deletedAt": null
|
||||
}
|
||||
],
|
||||
"rollups": [
|
||||
{
|
||||
"type": "WEIGHT",
|
||||
"bucketStart": "2026-10-10T00:00:00.000Z",
|
||||
"count": 1,
|
||||
"mean": 81.4
|
||||
},
|
||||
{
|
||||
"type": "WEIGHT",
|
||||
"bucketStart": "2026-10-11T00:00:00.000Z",
|
||||
"count": 1,
|
||||
"mean": 82
|
||||
},
|
||||
{
|
||||
"type": "PULSE",
|
||||
"bucketStart": "2026-10-12T00:00:00.000Z",
|
||||
"count": 1,
|
||||
"mean": 64
|
||||
},
|
||||
{
|
||||
"type": "SLEEP_DURATION",
|
||||
"bucketStart": "2026-10-12T00:00:00.000Z",
|
||||
"count": 1,
|
||||
"mean": 412
|
||||
},
|
||||
{
|
||||
"type": "BLOOD_GLUCOSE",
|
||||
"bucketStart": "2026-10-11T00:00:00.000Z",
|
||||
"count": 1,
|
||||
"mean": 104
|
||||
}
|
||||
],
|
||||
"audit": [
|
||||
{
|
||||
"action": "import.csv.upload",
|
||||
"details": "{\"inserted\":5,\"updated\":1,\"skipped\":2}"
|
||||
},
|
||||
{
|
||||
"action": "import.csv.upload",
|
||||
"details": "{\"inserted\":0,\"updated\":2,\"skipped\":6}"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,199 @@
|
||||
{
|
||||
"status": 200,
|
||||
"body": {
|
||||
"data": {
|
||||
"inserted": 1,
|
||||
"updated": 2,
|
||||
"skipped": 1,
|
||||
"total": 4,
|
||||
"dryRun": false,
|
||||
"rows": [
|
||||
{
|
||||
"line": 2,
|
||||
"status": "skipped",
|
||||
"reason": "duplicate"
|
||||
},
|
||||
{
|
||||
"line": 3,
|
||||
"status": "updated"
|
||||
},
|
||||
{
|
||||
"line": 4,
|
||||
"status": "updated"
|
||||
},
|
||||
{
|
||||
"line": 5,
|
||||
"status": "inserted"
|
||||
}
|
||||
]
|
||||
},
|
||||
"error": null
|
||||
},
|
||||
"events": [
|
||||
{
|
||||
"status": 200,
|
||||
"action": {
|
||||
"name": "import.csv.upload"
|
||||
},
|
||||
"meta": {
|
||||
"import_csv_inserted": 1,
|
||||
"import_csv_updated": 2,
|
||||
"import_csv_skipped": 1,
|
||||
"import_csv_dry_run": false
|
||||
},
|
||||
"warnings": null,
|
||||
"error": null
|
||||
}
|
||||
],
|
||||
"effects": [
|
||||
{
|
||||
"effect": "maybeEnqueueMorningRefresh",
|
||||
"args": [
|
||||
"<id:1>",
|
||||
[]
|
||||
]
|
||||
},
|
||||
{
|
||||
"effect": "invalidateStatusInsightsForTypes",
|
||||
"args": [
|
||||
"<id:1>",
|
||||
[
|
||||
"WEIGHT",
|
||||
"SLEEP_DURATION",
|
||||
"PULSE"
|
||||
],
|
||||
{
|
||||
"source": "manual"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"stored": {
|
||||
"measurements": [
|
||||
{
|
||||
"type": "WEIGHT",
|
||||
"value": 82,
|
||||
"unit": "kg",
|
||||
"source": "IMPORT",
|
||||
"externalId": "exp-w-2",
|
||||
"measuredAt": "2026-10-09T06:30:00.000Z",
|
||||
"notes": null,
|
||||
"notesEncrypted": null,
|
||||
"glucoseContext": null,
|
||||
"deletedAt": null
|
||||
},
|
||||
{
|
||||
"type": "WEIGHT",
|
||||
"value": 81.4,
|
||||
"unit": "kg",
|
||||
"source": "IMPORT",
|
||||
"externalId": "exp-w-1",
|
||||
"measuredAt": "2026-10-10T06:30:00.000Z",
|
||||
"notes": null,
|
||||
"notesEncrypted": "<bytes:59>",
|
||||
"glucoseContext": null,
|
||||
"deletedAt": null
|
||||
},
|
||||
{
|
||||
"type": "PULSE",
|
||||
"value": 64,
|
||||
"unit": "bpm",
|
||||
"source": "IMPORT",
|
||||
"externalId": null,
|
||||
"measuredAt": "2026-10-12T07:00:00.000Z",
|
||||
"notes": null,
|
||||
"notesEncrypted": null,
|
||||
"glucoseContext": null,
|
||||
"deletedAt": null
|
||||
},
|
||||
{
|
||||
"type": "PULSE",
|
||||
"value": 66,
|
||||
"unit": "bpm",
|
||||
"source": "IMPORT",
|
||||
"externalId": null,
|
||||
"measuredAt": "2026-10-13T07:00:00.000Z",
|
||||
"notes": null,
|
||||
"notesEncrypted": null,
|
||||
"glucoseContext": null,
|
||||
"deletedAt": null
|
||||
},
|
||||
{
|
||||
"type": "SLEEP_DURATION",
|
||||
"value": 430,
|
||||
"unit": "minutes",
|
||||
"source": "IMPORT",
|
||||
"externalId": "exp-s-1",
|
||||
"measuredAt": "2026-10-12T06:00:00.000Z",
|
||||
"notes": null,
|
||||
"notesEncrypted": null,
|
||||
"glucoseContext": null,
|
||||
"deletedAt": null
|
||||
},
|
||||
{
|
||||
"type": "BLOOD_GLUCOSE",
|
||||
"value": 104,
|
||||
"unit": "mg/dL",
|
||||
"source": "IMPORT",
|
||||
"externalId": null,
|
||||
"measuredAt": "2026-10-11T08:00:00.000Z",
|
||||
"notes": null,
|
||||
"notesEncrypted": null,
|
||||
"glucoseContext": "FASTING",
|
||||
"deletedAt": null
|
||||
}
|
||||
],
|
||||
"rollups": [
|
||||
{
|
||||
"type": "WEIGHT",
|
||||
"bucketStart": "2026-10-09T00:00:00.000Z",
|
||||
"count": 1,
|
||||
"mean": 82
|
||||
},
|
||||
{
|
||||
"type": "WEIGHT",
|
||||
"bucketStart": "2026-10-10T00:00:00.000Z",
|
||||
"count": 1,
|
||||
"mean": 81.4
|
||||
},
|
||||
{
|
||||
"type": "PULSE",
|
||||
"bucketStart": "2026-10-12T00:00:00.000Z",
|
||||
"count": 1,
|
||||
"mean": 64
|
||||
},
|
||||
{
|
||||
"type": "PULSE",
|
||||
"bucketStart": "2026-10-13T00:00:00.000Z",
|
||||
"count": 1,
|
||||
"mean": 66
|
||||
},
|
||||
{
|
||||
"type": "SLEEP_DURATION",
|
||||
"bucketStart": "2026-10-12T00:00:00.000Z",
|
||||
"count": 1,
|
||||
"mean": 430
|
||||
},
|
||||
{
|
||||
"type": "BLOOD_GLUCOSE",
|
||||
"bucketStart": "2026-10-11T00:00:00.000Z",
|
||||
"count": 1,
|
||||
"mean": 104
|
||||
}
|
||||
],
|
||||
"audit": [
|
||||
{
|
||||
"action": "import.csv.upload",
|
||||
"details": "{\"inserted\":5,\"updated\":1,\"skipped\":2}"
|
||||
},
|
||||
{
|
||||
"action": "import.csv.upload",
|
||||
"details": "{\"inserted\":0,\"updated\":2,\"skipped\":6}"
|
||||
},
|
||||
{
|
||||
"action": "import.csv.upload",
|
||||
"details": "{\"inserted\":1,\"updated\":2,\"skipped\":1}"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
+163
@@ -0,0 +1,163 @@
|
||||
{
|
||||
"status": 422,
|
||||
"body": {
|
||||
"data": null,
|
||||
"error": "Validation failed",
|
||||
"details": {
|
||||
"issues": [
|
||||
{
|
||||
"path": "",
|
||||
"code": "unrecognized_keys",
|
||||
"message": "Unrecognized key: \"dryrun\"",
|
||||
"keys": [
|
||||
"dryrun"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"meta": {
|
||||
"errorCode": "http.invalid",
|
||||
"requestId": "<requestId>"
|
||||
}
|
||||
},
|
||||
"events": [
|
||||
{
|
||||
"status": 422,
|
||||
"action": {
|
||||
"name": "import.csv.upload"
|
||||
},
|
||||
"meta": null,
|
||||
"warnings": null,
|
||||
"error": null
|
||||
}
|
||||
],
|
||||
"effects": [],
|
||||
"stored": {
|
||||
"measurements": [
|
||||
{
|
||||
"type": "WEIGHT",
|
||||
"value": 82,
|
||||
"unit": "kg",
|
||||
"source": "IMPORT",
|
||||
"externalId": "exp-w-2",
|
||||
"measuredAt": "2026-10-09T06:30:00.000Z",
|
||||
"notes": null,
|
||||
"notesEncrypted": null,
|
||||
"glucoseContext": null,
|
||||
"deletedAt": null
|
||||
},
|
||||
{
|
||||
"type": "WEIGHT",
|
||||
"value": 81.4,
|
||||
"unit": "kg",
|
||||
"source": "IMPORT",
|
||||
"externalId": "exp-w-1",
|
||||
"measuredAt": "2026-10-10T06:30:00.000Z",
|
||||
"notes": null,
|
||||
"notesEncrypted": "<bytes:59>",
|
||||
"glucoseContext": null,
|
||||
"deletedAt": null
|
||||
},
|
||||
{
|
||||
"type": "PULSE",
|
||||
"value": 64,
|
||||
"unit": "bpm",
|
||||
"source": "IMPORT",
|
||||
"externalId": null,
|
||||
"measuredAt": "2026-10-12T07:00:00.000Z",
|
||||
"notes": null,
|
||||
"notesEncrypted": null,
|
||||
"glucoseContext": null,
|
||||
"deletedAt": null
|
||||
},
|
||||
{
|
||||
"type": "PULSE",
|
||||
"value": 66,
|
||||
"unit": "bpm",
|
||||
"source": "IMPORT",
|
||||
"externalId": null,
|
||||
"measuredAt": "2026-10-13T07:00:00.000Z",
|
||||
"notes": null,
|
||||
"notesEncrypted": null,
|
||||
"glucoseContext": null,
|
||||
"deletedAt": null
|
||||
},
|
||||
{
|
||||
"type": "SLEEP_DURATION",
|
||||
"value": 430,
|
||||
"unit": "minutes",
|
||||
"source": "IMPORT",
|
||||
"externalId": "exp-s-1",
|
||||
"measuredAt": "2026-10-12T06:00:00.000Z",
|
||||
"notes": null,
|
||||
"notesEncrypted": null,
|
||||
"glucoseContext": null,
|
||||
"deletedAt": null
|
||||
},
|
||||
{
|
||||
"type": "BLOOD_GLUCOSE",
|
||||
"value": 104,
|
||||
"unit": "mg/dL",
|
||||
"source": "IMPORT",
|
||||
"externalId": null,
|
||||
"measuredAt": "2026-10-11T08:00:00.000Z",
|
||||
"notes": null,
|
||||
"notesEncrypted": null,
|
||||
"glucoseContext": "FASTING",
|
||||
"deletedAt": null
|
||||
}
|
||||
],
|
||||
"rollups": [
|
||||
{
|
||||
"type": "WEIGHT",
|
||||
"bucketStart": "2026-10-09T00:00:00.000Z",
|
||||
"count": 1,
|
||||
"mean": 82
|
||||
},
|
||||
{
|
||||
"type": "WEIGHT",
|
||||
"bucketStart": "2026-10-10T00:00:00.000Z",
|
||||
"count": 1,
|
||||
"mean": 81.4
|
||||
},
|
||||
{
|
||||
"type": "PULSE",
|
||||
"bucketStart": "2026-10-12T00:00:00.000Z",
|
||||
"count": 1,
|
||||
"mean": 64
|
||||
},
|
||||
{
|
||||
"type": "PULSE",
|
||||
"bucketStart": "2026-10-13T00:00:00.000Z",
|
||||
"count": 1,
|
||||
"mean": 66
|
||||
},
|
||||
{
|
||||
"type": "SLEEP_DURATION",
|
||||
"bucketStart": "2026-10-12T00:00:00.000Z",
|
||||
"count": 1,
|
||||
"mean": 430
|
||||
},
|
||||
{
|
||||
"type": "BLOOD_GLUCOSE",
|
||||
"bucketStart": "2026-10-11T00:00:00.000Z",
|
||||
"count": 1,
|
||||
"mean": 104
|
||||
}
|
||||
],
|
||||
"audit": [
|
||||
{
|
||||
"action": "import.csv.upload",
|
||||
"details": "{\"inserted\":5,\"updated\":1,\"skipped\":2}"
|
||||
},
|
||||
{
|
||||
"action": "import.csv.upload",
|
||||
"details": "{\"inserted\":0,\"updated\":2,\"skipped\":6}"
|
||||
},
|
||||
{
|
||||
"action": "import.csv.upload",
|
||||
"details": "{\"inserted\":1,\"updated\":2,\"skipped\":1}"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,151 @@
|
||||
{
|
||||
"status": 422,
|
||||
"body": {
|
||||
"data": null,
|
||||
"error": "Missing required column(s): type, value, unit, measuredat. Required header: type,value,unit,measuredat[,glucosecontext,notes,externalid].",
|
||||
"meta": {
|
||||
"errorCode": "http.invalid",
|
||||
"requestId": "<requestId>"
|
||||
}
|
||||
},
|
||||
"events": [
|
||||
{
|
||||
"status": 422,
|
||||
"action": {
|
||||
"name": "import.csv.upload"
|
||||
},
|
||||
"meta": null,
|
||||
"warnings": null,
|
||||
"error": null
|
||||
}
|
||||
],
|
||||
"effects": [],
|
||||
"stored": {
|
||||
"measurements": [
|
||||
{
|
||||
"type": "WEIGHT",
|
||||
"value": 82,
|
||||
"unit": "kg",
|
||||
"source": "IMPORT",
|
||||
"externalId": "exp-w-2",
|
||||
"measuredAt": "2026-10-09T06:30:00.000Z",
|
||||
"notes": null,
|
||||
"notesEncrypted": null,
|
||||
"glucoseContext": null,
|
||||
"deletedAt": null
|
||||
},
|
||||
{
|
||||
"type": "WEIGHT",
|
||||
"value": 81.4,
|
||||
"unit": "kg",
|
||||
"source": "IMPORT",
|
||||
"externalId": "exp-w-1",
|
||||
"measuredAt": "2026-10-10T06:30:00.000Z",
|
||||
"notes": null,
|
||||
"notesEncrypted": "<bytes:59>",
|
||||
"glucoseContext": null,
|
||||
"deletedAt": null
|
||||
},
|
||||
{
|
||||
"type": "PULSE",
|
||||
"value": 64,
|
||||
"unit": "bpm",
|
||||
"source": "IMPORT",
|
||||
"externalId": null,
|
||||
"measuredAt": "2026-10-12T07:00:00.000Z",
|
||||
"notes": null,
|
||||
"notesEncrypted": null,
|
||||
"glucoseContext": null,
|
||||
"deletedAt": null
|
||||
},
|
||||
{
|
||||
"type": "PULSE",
|
||||
"value": 66,
|
||||
"unit": "bpm",
|
||||
"source": "IMPORT",
|
||||
"externalId": null,
|
||||
"measuredAt": "2026-10-13T07:00:00.000Z",
|
||||
"notes": null,
|
||||
"notesEncrypted": null,
|
||||
"glucoseContext": null,
|
||||
"deletedAt": null
|
||||
},
|
||||
{
|
||||
"type": "SLEEP_DURATION",
|
||||
"value": 430,
|
||||
"unit": "minutes",
|
||||
"source": "IMPORT",
|
||||
"externalId": "exp-s-1",
|
||||
"measuredAt": "2026-10-12T06:00:00.000Z",
|
||||
"notes": null,
|
||||
"notesEncrypted": null,
|
||||
"glucoseContext": null,
|
||||
"deletedAt": null
|
||||
},
|
||||
{
|
||||
"type": "BLOOD_GLUCOSE",
|
||||
"value": 104,
|
||||
"unit": "mg/dL",
|
||||
"source": "IMPORT",
|
||||
"externalId": null,
|
||||
"measuredAt": "2026-10-11T08:00:00.000Z",
|
||||
"notes": null,
|
||||
"notesEncrypted": null,
|
||||
"glucoseContext": "FASTING",
|
||||
"deletedAt": null
|
||||
}
|
||||
],
|
||||
"rollups": [
|
||||
{
|
||||
"type": "WEIGHT",
|
||||
"bucketStart": "2026-10-09T00:00:00.000Z",
|
||||
"count": 1,
|
||||
"mean": 82
|
||||
},
|
||||
{
|
||||
"type": "WEIGHT",
|
||||
"bucketStart": "2026-10-10T00:00:00.000Z",
|
||||
"count": 1,
|
||||
"mean": 81.4
|
||||
},
|
||||
{
|
||||
"type": "PULSE",
|
||||
"bucketStart": "2026-10-12T00:00:00.000Z",
|
||||
"count": 1,
|
||||
"mean": 64
|
||||
},
|
||||
{
|
||||
"type": "PULSE",
|
||||
"bucketStart": "2026-10-13T00:00:00.000Z",
|
||||
"count": 1,
|
||||
"mean": 66
|
||||
},
|
||||
{
|
||||
"type": "SLEEP_DURATION",
|
||||
"bucketStart": "2026-10-12T00:00:00.000Z",
|
||||
"count": 1,
|
||||
"mean": 430
|
||||
},
|
||||
{
|
||||
"type": "BLOOD_GLUCOSE",
|
||||
"bucketStart": "2026-10-11T00:00:00.000Z",
|
||||
"count": 1,
|
||||
"mean": 104
|
||||
}
|
||||
],
|
||||
"audit": [
|
||||
{
|
||||
"action": "import.csv.upload",
|
||||
"details": "{\"inserted\":5,\"updated\":1,\"skipped\":2}"
|
||||
},
|
||||
{
|
||||
"action": "import.csv.upload",
|
||||
"details": "{\"inserted\":0,\"updated\":2,\"skipped\":6}"
|
||||
},
|
||||
{
|
||||
"action": "import.csv.upload",
|
||||
"details": "{\"inserted\":1,\"updated\":2,\"skipped\":1}"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,219 @@
|
||||
{
|
||||
"status": 200,
|
||||
"body": {
|
||||
"data": {
|
||||
"measurements": 4,
|
||||
"moodEntries": 4,
|
||||
"skipped": 2
|
||||
},
|
||||
"error": null
|
||||
},
|
||||
"events": [
|
||||
{
|
||||
"status": 200,
|
||||
"action": {
|
||||
"name": "import.upload"
|
||||
},
|
||||
"meta": {
|
||||
"import_stats": {
|
||||
"measurements": 4,
|
||||
"moodEntries": 4,
|
||||
"skipped": 2
|
||||
},
|
||||
"external_id_rejected": 2,
|
||||
"external_id_shapes": "object_description",
|
||||
"external_id_surface": "import.json"
|
||||
},
|
||||
"warnings": null,
|
||||
"error": null
|
||||
}
|
||||
],
|
||||
"effects": [
|
||||
{
|
||||
"effect": "emitDataArrival",
|
||||
"args": [
|
||||
{
|
||||
"userId": "<id:1>",
|
||||
"kind": "weight",
|
||||
"newestSampleAt": "2026-10-11T06:30:00.000Z",
|
||||
"insertedCount": 2,
|
||||
"refId": "<id:2>",
|
||||
"source": "json_import"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"effect": "maybeEnqueueMorningRefresh",
|
||||
"args": [
|
||||
"<id:1>",
|
||||
[
|
||||
"2026-10-12T06:00:00.000Z"
|
||||
]
|
||||
]
|
||||
},
|
||||
{
|
||||
"effect": "invalidateStatusInsightsForTypes",
|
||||
"args": [
|
||||
"<id:1>",
|
||||
[
|
||||
"WEIGHT",
|
||||
"BLOOD_GLUCOSE",
|
||||
"SLEEP_DURATION"
|
||||
],
|
||||
{
|
||||
"source": "manual"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"stored": {
|
||||
"measurements": [
|
||||
{
|
||||
"type": "WEIGHT",
|
||||
"value": 81.4,
|
||||
"unit": "kg",
|
||||
"source": "IMPORT",
|
||||
"externalId": "exp-w-1",
|
||||
"measuredAt": "2026-10-10T06:30:00.000Z",
|
||||
"notes": null,
|
||||
"notesEncrypted": "<bytes:59>",
|
||||
"glucoseContext": null
|
||||
},
|
||||
{
|
||||
"type": "WEIGHT",
|
||||
"value": 81.9,
|
||||
"unit": "kg",
|
||||
"source": "IMPORT",
|
||||
"externalId": null,
|
||||
"measuredAt": "2026-10-11T06:30:00.000Z",
|
||||
"notes": null,
|
||||
"notesEncrypted": null,
|
||||
"glucoseContext": null
|
||||
},
|
||||
{
|
||||
"type": "BLOOD_GLUCOSE",
|
||||
"value": 104,
|
||||
"unit": "mg/dL",
|
||||
"source": "IMPORT",
|
||||
"externalId": "exp-g-1",
|
||||
"measuredAt": "2026-10-11T08:00:00.000Z",
|
||||
"notes": null,
|
||||
"notesEncrypted": null,
|
||||
"glucoseContext": "FASTING"
|
||||
},
|
||||
{
|
||||
"type": "SLEEP_DURATION",
|
||||
"value": 412,
|
||||
"unit": "min",
|
||||
"source": "IMPORT",
|
||||
"externalId": "exp-s-1",
|
||||
"measuredAt": "2026-10-12T06:00:00.000Z",
|
||||
"notes": null,
|
||||
"notesEncrypted": null,
|
||||
"glucoseContext": null
|
||||
}
|
||||
],
|
||||
"mood": [
|
||||
{
|
||||
"date": "2026-10-10",
|
||||
"mood": "GUT",
|
||||
"score": 4,
|
||||
"moodA1": 7,
|
||||
"tags": "slept well",
|
||||
"source": "IMPORT",
|
||||
"externalId": "daylio-1",
|
||||
"moodLoggedAt": "2026-10-10T07:00:00.000Z"
|
||||
},
|
||||
{
|
||||
"date": "2026-10-11",
|
||||
"mood": "OKAY",
|
||||
"score": 3,
|
||||
"moodA1": 5,
|
||||
"tags": null,
|
||||
"source": "IMPORT",
|
||||
"externalId": null,
|
||||
"moodLoggedAt": "2026-10-10T22:02:08.803Z"
|
||||
},
|
||||
{
|
||||
"date": "2026-10-11",
|
||||
"mood": "OKAY",
|
||||
"score": 3,
|
||||
"moodA1": 5,
|
||||
"tags": null,
|
||||
"source": "IMPORT",
|
||||
"externalId": null,
|
||||
"moodLoggedAt": "2026-10-10T22:02:32.701Z"
|
||||
},
|
||||
{
|
||||
"date": "2026-10-12",
|
||||
"mood": "SCHLECHT",
|
||||
"score": 2,
|
||||
"moodA1": 3,
|
||||
"tags": null,
|
||||
"source": "IMPORT",
|
||||
"externalId": null,
|
||||
"moodLoggedAt": "2026-10-12T20:00:00.000Z"
|
||||
}
|
||||
],
|
||||
"measurementRollups": [
|
||||
{
|
||||
"type": "WEIGHT",
|
||||
"granularity": "DAY",
|
||||
"bucketStart": "2026-10-10T00:00:00.000Z",
|
||||
"source": "IMPORT",
|
||||
"count": 1,
|
||||
"mean": 81.4
|
||||
},
|
||||
{
|
||||
"type": "WEIGHT",
|
||||
"granularity": "DAY",
|
||||
"bucketStart": "2026-10-11T00:00:00.000Z",
|
||||
"source": "IMPORT",
|
||||
"count": 1,
|
||||
"mean": 81.9
|
||||
},
|
||||
{
|
||||
"type": "SLEEP_DURATION",
|
||||
"granularity": "DAY",
|
||||
"bucketStart": "2026-10-12T00:00:00.000Z",
|
||||
"source": "IMPORT",
|
||||
"count": 1,
|
||||
"mean": 412
|
||||
},
|
||||
{
|
||||
"type": "BLOOD_GLUCOSE",
|
||||
"granularity": "DAY",
|
||||
"bucketStart": "2026-10-11T00:00:00.000Z",
|
||||
"source": "IMPORT",
|
||||
"count": 1,
|
||||
"mean": 104
|
||||
}
|
||||
],
|
||||
"moodRollups": [
|
||||
{
|
||||
"granularity": "DAY",
|
||||
"bucketStart": "2026-10-10T00:00:00.000Z",
|
||||
"count": 1,
|
||||
"mean": 4
|
||||
},
|
||||
{
|
||||
"granularity": "DAY",
|
||||
"bucketStart": "2026-10-11T00:00:00.000Z",
|
||||
"count": 2,
|
||||
"mean": 3
|
||||
},
|
||||
{
|
||||
"granularity": "DAY",
|
||||
"bucketStart": "2026-10-12T00:00:00.000Z",
|
||||
"count": 1,
|
||||
"mean": 2
|
||||
}
|
||||
],
|
||||
"audit": [
|
||||
{
|
||||
"action": "import.upload",
|
||||
"details": "{\"measurements\":4,\"moodEntries\":4,\"skipped\":2}"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,208 @@
|
||||
{
|
||||
"status": 200,
|
||||
"body": {
|
||||
"data": {
|
||||
"measurements": 3,
|
||||
"moodEntries": 1,
|
||||
"skipped": 6
|
||||
},
|
||||
"error": null
|
||||
},
|
||||
"events": [
|
||||
{
|
||||
"status": 200,
|
||||
"action": {
|
||||
"name": "import.upload"
|
||||
},
|
||||
"meta": {
|
||||
"import_stats": {
|
||||
"measurements": 3,
|
||||
"moodEntries": 1,
|
||||
"skipped": 6
|
||||
},
|
||||
"external_id_rejected": 2,
|
||||
"external_id_shapes": "object_description",
|
||||
"external_id_surface": "import.json"
|
||||
},
|
||||
"warnings": null,
|
||||
"error": null
|
||||
}
|
||||
],
|
||||
"effects": [
|
||||
{
|
||||
"effect": "maybeEnqueueMorningRefresh",
|
||||
"args": [
|
||||
"<id:1>",
|
||||
[]
|
||||
]
|
||||
},
|
||||
{
|
||||
"effect": "invalidateStatusInsightsForTypes",
|
||||
"args": [
|
||||
"<id:1>",
|
||||
[
|
||||
"WEIGHT",
|
||||
"BLOOD_GLUCOSE",
|
||||
"SLEEP_DURATION"
|
||||
],
|
||||
{
|
||||
"source": "manual"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"stored": {
|
||||
"measurements": [
|
||||
{
|
||||
"type": "WEIGHT",
|
||||
"value": 81.4,
|
||||
"unit": "kg",
|
||||
"source": "IMPORT",
|
||||
"externalId": "exp-w-1",
|
||||
"measuredAt": "2026-10-10T06:30:00.000Z",
|
||||
"notes": null,
|
||||
"notesEncrypted": "<bytes:59>",
|
||||
"glucoseContext": null
|
||||
},
|
||||
{
|
||||
"type": "WEIGHT",
|
||||
"value": 81.9,
|
||||
"unit": "kg",
|
||||
"source": "IMPORT",
|
||||
"externalId": null,
|
||||
"measuredAt": "2026-10-11T06:30:00.000Z",
|
||||
"notes": null,
|
||||
"notesEncrypted": null,
|
||||
"glucoseContext": null
|
||||
},
|
||||
{
|
||||
"type": "BLOOD_GLUCOSE",
|
||||
"value": 104,
|
||||
"unit": "mg/dL",
|
||||
"source": "IMPORT",
|
||||
"externalId": "exp-g-1",
|
||||
"measuredAt": "2026-10-11T08:00:00.000Z",
|
||||
"notes": null,
|
||||
"notesEncrypted": null,
|
||||
"glucoseContext": "FASTING"
|
||||
},
|
||||
{
|
||||
"type": "SLEEP_DURATION",
|
||||
"value": 412,
|
||||
"unit": "min",
|
||||
"source": "IMPORT",
|
||||
"externalId": "exp-s-1",
|
||||
"measuredAt": "2026-10-12T06:00:00.000Z",
|
||||
"notes": null,
|
||||
"notesEncrypted": null,
|
||||
"glucoseContext": null
|
||||
}
|
||||
],
|
||||
"mood": [
|
||||
{
|
||||
"date": "2026-10-10",
|
||||
"mood": "GUT",
|
||||
"score": 4,
|
||||
"moodA1": 7,
|
||||
"tags": "slept well",
|
||||
"source": "IMPORT",
|
||||
"externalId": "daylio-1",
|
||||
"moodLoggedAt": "2026-10-10T07:00:00.000Z"
|
||||
},
|
||||
{
|
||||
"date": "2026-10-11",
|
||||
"mood": "OKAY",
|
||||
"score": 3,
|
||||
"moodA1": 5,
|
||||
"tags": null,
|
||||
"source": "IMPORT",
|
||||
"externalId": null,
|
||||
"moodLoggedAt": "2026-10-10T22:02:08.803Z"
|
||||
},
|
||||
{
|
||||
"date": "2026-10-11",
|
||||
"mood": "OKAY",
|
||||
"score": 3,
|
||||
"moodA1": 5,
|
||||
"tags": null,
|
||||
"source": "IMPORT",
|
||||
"externalId": null,
|
||||
"moodLoggedAt": "2026-10-10T22:02:32.701Z"
|
||||
},
|
||||
{
|
||||
"date": "2026-10-12",
|
||||
"mood": "SCHLECHT",
|
||||
"score": 2,
|
||||
"moodA1": 3,
|
||||
"tags": null,
|
||||
"source": "IMPORT",
|
||||
"externalId": null,
|
||||
"moodLoggedAt": "2026-10-12T20:00:00.000Z"
|
||||
}
|
||||
],
|
||||
"measurementRollups": [
|
||||
{
|
||||
"type": "WEIGHT",
|
||||
"granularity": "DAY",
|
||||
"bucketStart": "2026-10-10T00:00:00.000Z",
|
||||
"source": "IMPORT",
|
||||
"count": 1,
|
||||
"mean": 81.4
|
||||
},
|
||||
{
|
||||
"type": "WEIGHT",
|
||||
"granularity": "DAY",
|
||||
"bucketStart": "2026-10-11T00:00:00.000Z",
|
||||
"source": "IMPORT",
|
||||
"count": 1,
|
||||
"mean": 81.9
|
||||
},
|
||||
{
|
||||
"type": "SLEEP_DURATION",
|
||||
"granularity": "DAY",
|
||||
"bucketStart": "2026-10-12T00:00:00.000Z",
|
||||
"source": "IMPORT",
|
||||
"count": 1,
|
||||
"mean": 412
|
||||
},
|
||||
{
|
||||
"type": "BLOOD_GLUCOSE",
|
||||
"granularity": "DAY",
|
||||
"bucketStart": "2026-10-11T00:00:00.000Z",
|
||||
"source": "IMPORT",
|
||||
"count": 1,
|
||||
"mean": 104
|
||||
}
|
||||
],
|
||||
"moodRollups": [
|
||||
{
|
||||
"granularity": "DAY",
|
||||
"bucketStart": "2026-10-10T00:00:00.000Z",
|
||||
"count": 1,
|
||||
"mean": 4
|
||||
},
|
||||
{
|
||||
"granularity": "DAY",
|
||||
"bucketStart": "2026-10-11T00:00:00.000Z",
|
||||
"count": 2,
|
||||
"mean": 3
|
||||
},
|
||||
{
|
||||
"granularity": "DAY",
|
||||
"bucketStart": "2026-10-12T00:00:00.000Z",
|
||||
"count": 1,
|
||||
"mean": 2
|
||||
}
|
||||
],
|
||||
"audit": [
|
||||
{
|
||||
"action": "import.upload",
|
||||
"details": "{\"measurements\":4,\"moodEntries\":4,\"skipped\":2}"
|
||||
},
|
||||
{
|
||||
"action": "import.upload",
|
||||
"details": "{\"measurements\":3,\"moodEntries\":1,\"skipped\":6}"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,186 @@
|
||||
{
|
||||
"status": 422,
|
||||
"body": {
|
||||
"data": null,
|
||||
"error": "Wert ausserhalb des plausiblen Bereichs",
|
||||
"details": {
|
||||
"issues": [
|
||||
{
|
||||
"path": "measurements.0",
|
||||
"code": "custom",
|
||||
"message": "Wert ausserhalb des plausiblen Bereichs"
|
||||
}
|
||||
]
|
||||
},
|
||||
"meta": {
|
||||
"errorCode": "http.invalid",
|
||||
"requestId": "<requestId>"
|
||||
}
|
||||
},
|
||||
"events": [
|
||||
{
|
||||
"status": 422,
|
||||
"action": {
|
||||
"name": "import.upload"
|
||||
},
|
||||
"meta": null,
|
||||
"warnings": null,
|
||||
"error": null
|
||||
}
|
||||
],
|
||||
"effects": [],
|
||||
"stored": {
|
||||
"measurements": [
|
||||
{
|
||||
"type": "WEIGHT",
|
||||
"value": 81.4,
|
||||
"unit": "kg",
|
||||
"source": "IMPORT",
|
||||
"externalId": "exp-w-1",
|
||||
"measuredAt": "2026-10-10T06:30:00.000Z",
|
||||
"notes": null,
|
||||
"notesEncrypted": "<bytes:59>",
|
||||
"glucoseContext": null
|
||||
},
|
||||
{
|
||||
"type": "WEIGHT",
|
||||
"value": 81.9,
|
||||
"unit": "kg",
|
||||
"source": "IMPORT",
|
||||
"externalId": null,
|
||||
"measuredAt": "2026-10-11T06:30:00.000Z",
|
||||
"notes": null,
|
||||
"notesEncrypted": null,
|
||||
"glucoseContext": null
|
||||
},
|
||||
{
|
||||
"type": "BLOOD_GLUCOSE",
|
||||
"value": 104,
|
||||
"unit": "mg/dL",
|
||||
"source": "IMPORT",
|
||||
"externalId": "exp-g-1",
|
||||
"measuredAt": "2026-10-11T08:00:00.000Z",
|
||||
"notes": null,
|
||||
"notesEncrypted": null,
|
||||
"glucoseContext": "FASTING"
|
||||
},
|
||||
{
|
||||
"type": "SLEEP_DURATION",
|
||||
"value": 412,
|
||||
"unit": "min",
|
||||
"source": "IMPORT",
|
||||
"externalId": "exp-s-1",
|
||||
"measuredAt": "2026-10-12T06:00:00.000Z",
|
||||
"notes": null,
|
||||
"notesEncrypted": null,
|
||||
"glucoseContext": null
|
||||
}
|
||||
],
|
||||
"mood": [
|
||||
{
|
||||
"date": "2026-10-10",
|
||||
"mood": "GUT",
|
||||
"score": 4,
|
||||
"moodA1": 7,
|
||||
"tags": "slept well",
|
||||
"source": "IMPORT",
|
||||
"externalId": "daylio-1",
|
||||
"moodLoggedAt": "2026-10-10T07:00:00.000Z"
|
||||
},
|
||||
{
|
||||
"date": "2026-10-11",
|
||||
"mood": "OKAY",
|
||||
"score": 3,
|
||||
"moodA1": 5,
|
||||
"tags": null,
|
||||
"source": "IMPORT",
|
||||
"externalId": null,
|
||||
"moodLoggedAt": "2026-10-10T22:02:08.803Z"
|
||||
},
|
||||
{
|
||||
"date": "2026-10-11",
|
||||
"mood": "OKAY",
|
||||
"score": 3,
|
||||
"moodA1": 5,
|
||||
"tags": null,
|
||||
"source": "IMPORT",
|
||||
"externalId": null,
|
||||
"moodLoggedAt": "2026-10-10T22:02:32.701Z"
|
||||
},
|
||||
{
|
||||
"date": "2026-10-12",
|
||||
"mood": "SCHLECHT",
|
||||
"score": 2,
|
||||
"moodA1": 3,
|
||||
"tags": null,
|
||||
"source": "IMPORT",
|
||||
"externalId": null,
|
||||
"moodLoggedAt": "2026-10-12T20:00:00.000Z"
|
||||
}
|
||||
],
|
||||
"measurementRollups": [
|
||||
{
|
||||
"type": "WEIGHT",
|
||||
"granularity": "DAY",
|
||||
"bucketStart": "2026-10-10T00:00:00.000Z",
|
||||
"source": "IMPORT",
|
||||
"count": 1,
|
||||
"mean": 81.4
|
||||
},
|
||||
{
|
||||
"type": "WEIGHT",
|
||||
"granularity": "DAY",
|
||||
"bucketStart": "2026-10-11T00:00:00.000Z",
|
||||
"source": "IMPORT",
|
||||
"count": 1,
|
||||
"mean": 81.9
|
||||
},
|
||||
{
|
||||
"type": "SLEEP_DURATION",
|
||||
"granularity": "DAY",
|
||||
"bucketStart": "2026-10-12T00:00:00.000Z",
|
||||
"source": "IMPORT",
|
||||
"count": 1,
|
||||
"mean": 412
|
||||
},
|
||||
{
|
||||
"type": "BLOOD_GLUCOSE",
|
||||
"granularity": "DAY",
|
||||
"bucketStart": "2026-10-11T00:00:00.000Z",
|
||||
"source": "IMPORT",
|
||||
"count": 1,
|
||||
"mean": 104
|
||||
}
|
||||
],
|
||||
"moodRollups": [
|
||||
{
|
||||
"granularity": "DAY",
|
||||
"bucketStart": "2026-10-10T00:00:00.000Z",
|
||||
"count": 1,
|
||||
"mean": 4
|
||||
},
|
||||
{
|
||||
"granularity": "DAY",
|
||||
"bucketStart": "2026-10-11T00:00:00.000Z",
|
||||
"count": 2,
|
||||
"mean": 3
|
||||
},
|
||||
{
|
||||
"granularity": "DAY",
|
||||
"bucketStart": "2026-10-12T00:00:00.000Z",
|
||||
"count": 1,
|
||||
"mean": 2
|
||||
}
|
||||
],
|
||||
"audit": [
|
||||
{
|
||||
"action": "import.upload",
|
||||
"details": "{\"measurements\":4,\"moodEntries\":4,\"skipped\":2}"
|
||||
},
|
||||
{
|
||||
"action": "import.upload",
|
||||
"details": "{\"measurements\":3,\"moodEntries\":1,\"skipped\":6}"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,186 @@
|
||||
{
|
||||
"status": 422,
|
||||
"body": {
|
||||
"data": null,
|
||||
"error": "Timestamp must not be in the future",
|
||||
"details": {
|
||||
"issues": [
|
||||
{
|
||||
"path": "moodEntries.0.loggedAt",
|
||||
"code": "custom",
|
||||
"message": "Timestamp must not be in the future"
|
||||
}
|
||||
]
|
||||
},
|
||||
"meta": {
|
||||
"errorCode": "http.invalid",
|
||||
"requestId": "<requestId>"
|
||||
}
|
||||
},
|
||||
"events": [
|
||||
{
|
||||
"status": 422,
|
||||
"action": {
|
||||
"name": "import.upload"
|
||||
},
|
||||
"meta": null,
|
||||
"warnings": null,
|
||||
"error": null
|
||||
}
|
||||
],
|
||||
"effects": [],
|
||||
"stored": {
|
||||
"measurements": [
|
||||
{
|
||||
"type": "WEIGHT",
|
||||
"value": 81.4,
|
||||
"unit": "kg",
|
||||
"source": "IMPORT",
|
||||
"externalId": "exp-w-1",
|
||||
"measuredAt": "2026-10-10T06:30:00.000Z",
|
||||
"notes": null,
|
||||
"notesEncrypted": "<bytes:59>",
|
||||
"glucoseContext": null
|
||||
},
|
||||
{
|
||||
"type": "WEIGHT",
|
||||
"value": 81.9,
|
||||
"unit": "kg",
|
||||
"source": "IMPORT",
|
||||
"externalId": null,
|
||||
"measuredAt": "2026-10-11T06:30:00.000Z",
|
||||
"notes": null,
|
||||
"notesEncrypted": null,
|
||||
"glucoseContext": null
|
||||
},
|
||||
{
|
||||
"type": "BLOOD_GLUCOSE",
|
||||
"value": 104,
|
||||
"unit": "mg/dL",
|
||||
"source": "IMPORT",
|
||||
"externalId": "exp-g-1",
|
||||
"measuredAt": "2026-10-11T08:00:00.000Z",
|
||||
"notes": null,
|
||||
"notesEncrypted": null,
|
||||
"glucoseContext": "FASTING"
|
||||
},
|
||||
{
|
||||
"type": "SLEEP_DURATION",
|
||||
"value": 412,
|
||||
"unit": "min",
|
||||
"source": "IMPORT",
|
||||
"externalId": "exp-s-1",
|
||||
"measuredAt": "2026-10-12T06:00:00.000Z",
|
||||
"notes": null,
|
||||
"notesEncrypted": null,
|
||||
"glucoseContext": null
|
||||
}
|
||||
],
|
||||
"mood": [
|
||||
{
|
||||
"date": "2026-10-10",
|
||||
"mood": "GUT",
|
||||
"score": 4,
|
||||
"moodA1": 7,
|
||||
"tags": "slept well",
|
||||
"source": "IMPORT",
|
||||
"externalId": "daylio-1",
|
||||
"moodLoggedAt": "2026-10-10T07:00:00.000Z"
|
||||
},
|
||||
{
|
||||
"date": "2026-10-11",
|
||||
"mood": "OKAY",
|
||||
"score": 3,
|
||||
"moodA1": 5,
|
||||
"tags": null,
|
||||
"source": "IMPORT",
|
||||
"externalId": null,
|
||||
"moodLoggedAt": "2026-10-10T22:02:08.803Z"
|
||||
},
|
||||
{
|
||||
"date": "2026-10-11",
|
||||
"mood": "OKAY",
|
||||
"score": 3,
|
||||
"moodA1": 5,
|
||||
"tags": null,
|
||||
"source": "IMPORT",
|
||||
"externalId": null,
|
||||
"moodLoggedAt": "2026-10-10T22:02:32.701Z"
|
||||
},
|
||||
{
|
||||
"date": "2026-10-12",
|
||||
"mood": "SCHLECHT",
|
||||
"score": 2,
|
||||
"moodA1": 3,
|
||||
"tags": null,
|
||||
"source": "IMPORT",
|
||||
"externalId": null,
|
||||
"moodLoggedAt": "2026-10-12T20:00:00.000Z"
|
||||
}
|
||||
],
|
||||
"measurementRollups": [
|
||||
{
|
||||
"type": "WEIGHT",
|
||||
"granularity": "DAY",
|
||||
"bucketStart": "2026-10-10T00:00:00.000Z",
|
||||
"source": "IMPORT",
|
||||
"count": 1,
|
||||
"mean": 81.4
|
||||
},
|
||||
{
|
||||
"type": "WEIGHT",
|
||||
"granularity": "DAY",
|
||||
"bucketStart": "2026-10-11T00:00:00.000Z",
|
||||
"source": "IMPORT",
|
||||
"count": 1,
|
||||
"mean": 81.9
|
||||
},
|
||||
{
|
||||
"type": "SLEEP_DURATION",
|
||||
"granularity": "DAY",
|
||||
"bucketStart": "2026-10-12T00:00:00.000Z",
|
||||
"source": "IMPORT",
|
||||
"count": 1,
|
||||
"mean": 412
|
||||
},
|
||||
{
|
||||
"type": "BLOOD_GLUCOSE",
|
||||
"granularity": "DAY",
|
||||
"bucketStart": "2026-10-11T00:00:00.000Z",
|
||||
"source": "IMPORT",
|
||||
"count": 1,
|
||||
"mean": 104
|
||||
}
|
||||
],
|
||||
"moodRollups": [
|
||||
{
|
||||
"granularity": "DAY",
|
||||
"bucketStart": "2026-10-10T00:00:00.000Z",
|
||||
"count": 1,
|
||||
"mean": 4
|
||||
},
|
||||
{
|
||||
"granularity": "DAY",
|
||||
"bucketStart": "2026-10-11T00:00:00.000Z",
|
||||
"count": 2,
|
||||
"mean": 3
|
||||
},
|
||||
{
|
||||
"granularity": "DAY",
|
||||
"bucketStart": "2026-10-12T00:00:00.000Z",
|
||||
"count": 1,
|
||||
"mean": 2
|
||||
}
|
||||
],
|
||||
"audit": [
|
||||
{
|
||||
"action": "import.upload",
|
||||
"details": "{\"measurements\":4,\"moodEntries\":4,\"skipped\":2}"
|
||||
},
|
||||
{
|
||||
"action": "import.upload",
|
||||
"details": "{\"measurements\":3,\"moodEntries\":1,\"skipped\":6}"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
+24
@@ -0,0 +1,24 @@
|
||||
{
|
||||
"status": 401,
|
||||
"body": {
|
||||
"data": null,
|
||||
"error": "Not authenticated",
|
||||
"meta": {
|
||||
"errorCode": "auth.missing",
|
||||
"requestId": "<requestId>"
|
||||
}
|
||||
},
|
||||
"events": [
|
||||
{
|
||||
"status": 401,
|
||||
"action": null,
|
||||
"meta": null,
|
||||
"warnings": null,
|
||||
"error": {
|
||||
"type": "HttpError",
|
||||
"message": "Not authenticated"
|
||||
}
|
||||
}
|
||||
],
|
||||
"effects": []
|
||||
}
|
||||
+1303
File diff suppressed because it is too large.
Load diff
+1274
File diff suppressed because it is too large.
Load diff
+1287
File diff suppressed because it is too large.
Load diff
+1274
File diff suppressed because it is too large.
Load diff
+1274
File diff suppressed because it is too large.
Load diff
+1303
File diff suppressed because it is too large.
Load diff
+26
@@ -0,0 +1,26 @@
|
||||
{
|
||||
"status": 403,
|
||||
"body": {
|
||||
"data": null,
|
||||
"error": "Account access denied",
|
||||
"meta": {
|
||||
"errorCode": "sharing.access.denied",
|
||||
"requestId": "<requestId>"
|
||||
}
|
||||
},
|
||||
"events": [
|
||||
{
|
||||
"status": 403,
|
||||
"action": null,
|
||||
"meta": {
|
||||
"sharing_refusal": "insufficient_access"
|
||||
},
|
||||
"warnings": null,
|
||||
"error": {
|
||||
"type": "SharingAccessDeniedError",
|
||||
"message": "Account access denied"
|
||||
}
|
||||
}
|
||||
],
|
||||
"effects": []
|
||||
}
|
||||
+21
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"status": 429,
|
||||
"body": {
|
||||
"data": null,
|
||||
"error": "Too many analytics requests. Please retry later.",
|
||||
"meta": {
|
||||
"errorCode": "http.rate_limited",
|
||||
"requestId": "<requestId>"
|
||||
}
|
||||
},
|
||||
"events": [
|
||||
{
|
||||
"status": 429,
|
||||
"action": null,
|
||||
"meta": null,
|
||||
"warnings": null,
|
||||
"error": null
|
||||
}
|
||||
],
|
||||
"effects": []
|
||||
}
|
||||
+884
@@ -0,0 +1,884 @@
|
||||
{
|
||||
"status": 200,
|
||||
"body": {
|
||||
"data": {
|
||||
"summaries": {
|
||||
"WEIGHT": {
|
||||
"count": 47,
|
||||
"latest": 70.3,
|
||||
"min": 70,
|
||||
"max": 71.2,
|
||||
"mean": 70.63,
|
||||
"median": null,
|
||||
"avg7": 70.55,
|
||||
"avg30": 70.62,
|
||||
"slope7": {
|
||||
"slope": 0.043,
|
||||
"direction": "up",
|
||||
"confidence": 0.03
|
||||
},
|
||||
"slope30": {
|
||||
"slope": -0.004,
|
||||
"direction": "stable",
|
||||
"confidence": 0.01
|
||||
},
|
||||
"anomalyCount": 0,
|
||||
"avg30LastMonth": 70.63,
|
||||
"avg30LastYear": null
|
||||
},
|
||||
"BLOOD_PRESSURE_SYS": {
|
||||
"count": 47,
|
||||
"latest": 134,
|
||||
"min": 131,
|
||||
"max": 163,
|
||||
"mean": 139.66,
|
||||
"median": null,
|
||||
"avg7": 139.67,
|
||||
"avg30": 139.93,
|
||||
"slope7": {
|
||||
"slope": -2.057,
|
||||
"direction": "down",
|
||||
"confidence": 0.18
|
||||
},
|
||||
"slope30": {
|
||||
"slope": -0.03,
|
||||
"direction": "down",
|
||||
"confidence": 0
|
||||
},
|
||||
"anomalyCount": 4,
|
||||
"avg30LastMonth": 139.26,
|
||||
"avg30LastYear": null
|
||||
},
|
||||
"BLOOD_PRESSURE_DIA": {
|
||||
"count": 47,
|
||||
"latest": 86,
|
||||
"min": 84,
|
||||
"max": 90,
|
||||
"mean": 87.04,
|
||||
"median": null,
|
||||
"avg7": 87.5,
|
||||
"avg30": 87.07,
|
||||
"slope7": {
|
||||
"slope": -0.2,
|
||||
"direction": "down",
|
||||
"confidence": 0.04
|
||||
},
|
||||
"slope30": {
|
||||
"slope": 0.034,
|
||||
"direction": "up",
|
||||
"confidence": 0.02
|
||||
},
|
||||
"anomalyCount": 0,
|
||||
"avg30LastMonth": 87,
|
||||
"avg30LastYear": null
|
||||
},
|
||||
"PULSE": {
|
||||
"count": 141,
|
||||
"latest": 93,
|
||||
"min": 66,
|
||||
"max": 96,
|
||||
"mean": 81.67,
|
||||
"median": null,
|
||||
"avg7": 81.61,
|
||||
"avg30": 81.61,
|
||||
"slope7": {
|
||||
"slope": 0.186,
|
||||
"direction": "up",
|
||||
"confidence": 0
|
||||
},
|
||||
"slope30": {
|
||||
"slope": 0.027,
|
||||
"direction": "up",
|
||||
"confidence": 0
|
||||
},
|
||||
"anomalyCount": 0,
|
||||
"avg30LastMonth": 81.75,
|
||||
"avg30LastYear": null
|
||||
}
|
||||
},
|
||||
"bmi": null,
|
||||
"bmiClassification": null,
|
||||
"bpClassification": {
|
||||
"category": "High-normal",
|
||||
"color": "var(--dracula-yellow)",
|
||||
"severity": "elevated"
|
||||
},
|
||||
"bpPctInTarget": 0,
|
||||
"bpTargets": {
|
||||
"sysLow": 130,
|
||||
"sysHigh": 139,
|
||||
"diaLow": 70,
|
||||
"diaHigh": 79
|
||||
},
|
||||
"weightBpCorrelation": {
|
||||
"r": -0.631,
|
||||
"strength": "moderat",
|
||||
"n": 47
|
||||
},
|
||||
"scatterData": [
|
||||
{
|
||||
"weight": 71.2,
|
||||
"sysBP": 135
|
||||
},
|
||||
{
|
||||
"weight": 70.9,
|
||||
"sysBP": 132
|
||||
},
|
||||
{
|
||||
"weight": 70.6,
|
||||
"sysBP": 140
|
||||
},
|
||||
{
|
||||
"weight": 70.3,
|
||||
"sysBP": 137
|
||||
},
|
||||
{
|
||||
"weight": 70,
|
||||
"sysBP": 156
|
||||
},
|
||||
{
|
||||
"weight": 71.2,
|
||||
"sysBP": 131
|
||||
},
|
||||
{
|
||||
"weight": 70.9,
|
||||
"sysBP": 139
|
||||
},
|
||||
{
|
||||
"weight": 70.6,
|
||||
"sysBP": 136
|
||||
},
|
||||
{
|
||||
"weight": 70.3,
|
||||
"sysBP": 133
|
||||
},
|
||||
{
|
||||
"weight": 70,
|
||||
"sysBP": 163
|
||||
},
|
||||
{
|
||||
"weight": 71.2,
|
||||
"sysBP": 138
|
||||
},
|
||||
{
|
||||
"weight": 70.9,
|
||||
"sysBP": 135
|
||||
},
|
||||
{
|
||||
"weight": 70.6,
|
||||
"sysBP": 132
|
||||
},
|
||||
{
|
||||
"weight": 70.3,
|
||||
"sysBP": 140
|
||||
},
|
||||
{
|
||||
"weight": 70,
|
||||
"sysBP": 159
|
||||
},
|
||||
{
|
||||
"weight": 71.2,
|
||||
"sysBP": 134
|
||||
},
|
||||
{
|
||||
"weight": 70.9,
|
||||
"sysBP": 131
|
||||
},
|
||||
{
|
||||
"weight": 70.6,
|
||||
"sysBP": 139
|
||||
},
|
||||
{
|
||||
"weight": 70.3,
|
||||
"sysBP": 136
|
||||
},
|
||||
{
|
||||
"weight": 71.2,
|
||||
"sysBP": 141
|
||||
},
|
||||
{
|
||||
"weight": 70.9,
|
||||
"sysBP": 138
|
||||
},
|
||||
{
|
||||
"weight": 70.6,
|
||||
"sysBP": 135
|
||||
},
|
||||
{
|
||||
"weight": 70.3,
|
||||
"sysBP": 132
|
||||
},
|
||||
{
|
||||
"weight": 70,
|
||||
"sysBP": 162
|
||||
},
|
||||
{
|
||||
"weight": 71.2,
|
||||
"sysBP": 137
|
||||
},
|
||||
{
|
||||
"weight": 70.9,
|
||||
"sysBP": 134
|
||||
},
|
||||
{
|
||||
"weight": 70.6,
|
||||
"sysBP": 131
|
||||
},
|
||||
{
|
||||
"weight": 70.3,
|
||||
"sysBP": 139
|
||||
},
|
||||
{
|
||||
"weight": 70,
|
||||
"sysBP": 158
|
||||
},
|
||||
{
|
||||
"weight": 71.2,
|
||||
"sysBP": 133
|
||||
},
|
||||
{
|
||||
"weight": 70.9,
|
||||
"sysBP": 141
|
||||
},
|
||||
{
|
||||
"weight": 70.6,
|
||||
"sysBP": 138
|
||||
},
|
||||
{
|
||||
"weight": 70.3,
|
||||
"sysBP": 135
|
||||
},
|
||||
{
|
||||
"weight": 70,
|
||||
"sysBP": 154
|
||||
},
|
||||
{
|
||||
"weight": 71.2,
|
||||
"sysBP": 140
|
||||
},
|
||||
{
|
||||
"weight": 70.9,
|
||||
"sysBP": 137
|
||||
},
|
||||
{
|
||||
"weight": 70.6,
|
||||
"sysBP": 134
|
||||
},
|
||||
{
|
||||
"weight": 70.3,
|
||||
"sysBP": 131
|
||||
},
|
||||
{
|
||||
"weight": 70,
|
||||
"sysBP": 161
|
||||
},
|
||||
{
|
||||
"weight": 71.2,
|
||||
"sysBP": 136
|
||||
},
|
||||
{
|
||||
"weight": 70.9,
|
||||
"sysBP": 133
|
||||
},
|
||||
{
|
||||
"weight": 70.3,
|
||||
"sysBP": 138
|
||||
},
|
||||
{
|
||||
"weight": 70,
|
||||
"sysBP": 157
|
||||
},
|
||||
{
|
||||
"weight": 71.2,
|
||||
"sysBP": 132
|
||||
},
|
||||
{
|
||||
"weight": 70.9,
|
||||
"sysBP": 140
|
||||
},
|
||||
{
|
||||
"weight": 70.6,
|
||||
"sysBP": 137
|
||||
},
|
||||
{
|
||||
"weight": 70.3,
|
||||
"sysBP": 134
|
||||
}
|
||||
],
|
||||
"bpMedicationCorrelation": {
|
||||
"r": -0.941,
|
||||
"strength": "stark",
|
||||
"n": 28,
|
||||
"medicationCount": 1
|
||||
},
|
||||
"bpMedicationScatterData": [
|
||||
{
|
||||
"continuityPct": 100,
|
||||
"sysBP": 138
|
||||
},
|
||||
{
|
||||
"continuityPct": 100,
|
||||
"sysBP": 135
|
||||
},
|
||||
{
|
||||
"continuityPct": 100,
|
||||
"sysBP": 132
|
||||
},
|
||||
{
|
||||
"continuityPct": 0,
|
||||
"sysBP": 159
|
||||
},
|
||||
{
|
||||
"continuityPct": 100,
|
||||
"sysBP": 134
|
||||
},
|
||||
{
|
||||
"continuityPct": 100,
|
||||
"sysBP": 131
|
||||
},
|
||||
{
|
||||
"continuityPct": 100,
|
||||
"sysBP": 136
|
||||
},
|
||||
{
|
||||
"continuityPct": 100,
|
||||
"sysBP": 141
|
||||
},
|
||||
{
|
||||
"continuityPct": 100,
|
||||
"sysBP": 135
|
||||
},
|
||||
{
|
||||
"continuityPct": 100,
|
||||
"sysBP": 132
|
||||
},
|
||||
{
|
||||
"continuityPct": 0,
|
||||
"sysBP": 162
|
||||
},
|
||||
{
|
||||
"continuityPct": 100,
|
||||
"sysBP": 134
|
||||
},
|
||||
{
|
||||
"continuityPct": 100,
|
||||
"sysBP": 131
|
||||
},
|
||||
{
|
||||
"continuityPct": 100,
|
||||
"sysBP": 139
|
||||
},
|
||||
{
|
||||
"continuityPct": 100,
|
||||
"sysBP": 133
|
||||
},
|
||||
{
|
||||
"continuityPct": 100,
|
||||
"sysBP": 141
|
||||
},
|
||||
{
|
||||
"continuityPct": 100,
|
||||
"sysBP": 138
|
||||
},
|
||||
{
|
||||
"continuityPct": 0,
|
||||
"sysBP": 154
|
||||
},
|
||||
{
|
||||
"continuityPct": 100,
|
||||
"sysBP": 140
|
||||
},
|
||||
{
|
||||
"continuityPct": 100,
|
||||
"sysBP": 137
|
||||
},
|
||||
{
|
||||
"continuityPct": 100,
|
||||
"sysBP": 131
|
||||
},
|
||||
{
|
||||
"continuityPct": 0,
|
||||
"sysBP": 161
|
||||
},
|
||||
{
|
||||
"continuityPct": 100,
|
||||
"sysBP": 136
|
||||
},
|
||||
{
|
||||
"continuityPct": 100,
|
||||
"sysBP": 138
|
||||
},
|
||||
{
|
||||
"continuityPct": 0,
|
||||
"sysBP": 157
|
||||
},
|
||||
{
|
||||
"continuityPct": 100,
|
||||
"sysBP": 140
|
||||
},
|
||||
{
|
||||
"continuityPct": 100,
|
||||
"sysBP": 137
|
||||
},
|
||||
{
|
||||
"continuityPct": 100,
|
||||
"sysBP": 134
|
||||
}
|
||||
],
|
||||
"moodSummary": {
|
||||
"count": 29,
|
||||
"latest": 3,
|
||||
"min": 1,
|
||||
"max": 5,
|
||||
"mean": 3.07,
|
||||
"median": 3,
|
||||
"avg7": 3,
|
||||
"avg30": 3.04,
|
||||
"slope7": {
|
||||
"slope": 0.286,
|
||||
"direction": "up",
|
||||
"confidence": 0.14
|
||||
},
|
||||
"slope30": {
|
||||
"slope": 0,
|
||||
"direction": "stable",
|
||||
"confidence": 0
|
||||
},
|
||||
"anomalyCount": 0,
|
||||
"avg30LastMonth": 4,
|
||||
"avg30LastYear": null
|
||||
},
|
||||
"moodBpCorrelation": {
|
||||
"r": -0.683,
|
||||
"strength": "moderat",
|
||||
"n": 28
|
||||
},
|
||||
"moodBpScatterData": [
|
||||
{
|
||||
"mood": 4,
|
||||
"sysBP": 141
|
||||
},
|
||||
{
|
||||
"mood": 2,
|
||||
"sysBP": 138
|
||||
},
|
||||
{
|
||||
"mood": 5,
|
||||
"sysBP": 135
|
||||
},
|
||||
{
|
||||
"mood": 3,
|
||||
"sysBP": 132
|
||||
},
|
||||
{
|
||||
"mood": 1,
|
||||
"sysBP": 162
|
||||
},
|
||||
{
|
||||
"mood": 4,
|
||||
"sysBP": 137
|
||||
},
|
||||
{
|
||||
"mood": 2,
|
||||
"sysBP": 134
|
||||
},
|
||||
{
|
||||
"mood": 5,
|
||||
"sysBP": 131
|
||||
},
|
||||
{
|
||||
"mood": 3,
|
||||
"sysBP": 139
|
||||
},
|
||||
{
|
||||
"mood": 1,
|
||||
"sysBP": 158
|
||||
},
|
||||
{
|
||||
"mood": 4,
|
||||
"sysBP": 133
|
||||
},
|
||||
{
|
||||
"mood": 2,
|
||||
"sysBP": 141
|
||||
},
|
||||
{
|
||||
"mood": 5,
|
||||
"sysBP": 138
|
||||
},
|
||||
{
|
||||
"mood": 3,
|
||||
"sysBP": 135
|
||||
},
|
||||
{
|
||||
"mood": 1,
|
||||
"sysBP": 154
|
||||
},
|
||||
{
|
||||
"mood": 4,
|
||||
"sysBP": 140
|
||||
},
|
||||
{
|
||||
"mood": 2,
|
||||
"sysBP": 137
|
||||
},
|
||||
{
|
||||
"mood": 5,
|
||||
"sysBP": 134
|
||||
},
|
||||
{
|
||||
"mood": 3,
|
||||
"sysBP": 131
|
||||
},
|
||||
{
|
||||
"mood": 1,
|
||||
"sysBP": 161
|
||||
},
|
||||
{
|
||||
"mood": 4,
|
||||
"sysBP": 136
|
||||
},
|
||||
{
|
||||
"mood": 2,
|
||||
"sysBP": 133
|
||||
},
|
||||
{
|
||||
"mood": 3,
|
||||
"sysBP": 138
|
||||
},
|
||||
{
|
||||
"mood": 1,
|
||||
"sysBP": 157
|
||||
},
|
||||
{
|
||||
"mood": 4,
|
||||
"sysBP": 132
|
||||
},
|
||||
{
|
||||
"mood": 2,
|
||||
"sysBP": 140
|
||||
},
|
||||
{
|
||||
"mood": 5,
|
||||
"sysBP": 137
|
||||
},
|
||||
{
|
||||
"mood": 3,
|
||||
"sysBP": 134
|
||||
}
|
||||
],
|
||||
"moodWeightCorrelation": {
|
||||
"r": 0.482,
|
||||
"strength": "moderat",
|
||||
"n": 28
|
||||
},
|
||||
"moodWeightScatterData": [
|
||||
{
|
||||
"mood": 4,
|
||||
"weight": 71.2
|
||||
},
|
||||
{
|
||||
"mood": 2,
|
||||
"weight": 70.9
|
||||
},
|
||||
{
|
||||
"mood": 5,
|
||||
"weight": 70.6
|
||||
},
|
||||
{
|
||||
"mood": 3,
|
||||
"weight": 70.3
|
||||
},
|
||||
{
|
||||
"mood": 1,
|
||||
"weight": 70
|
||||
},
|
||||
{
|
||||
"mood": 4,
|
||||
"weight": 71.2
|
||||
},
|
||||
{
|
||||
"mood": 2,
|
||||
"weight": 70.9
|
||||
},
|
||||
{
|
||||
"mood": 5,
|
||||
"weight": 70.6
|
||||
},
|
||||
{
|
||||
"mood": 3,
|
||||
"weight": 70.3
|
||||
},
|
||||
{
|
||||
"mood": 1,
|
||||
"weight": 70
|
||||
},
|
||||
{
|
||||
"mood": 4,
|
||||
"weight": 71.2
|
||||
},
|
||||
{
|
||||
"mood": 2,
|
||||
"weight": 70.9
|
||||
},
|
||||
{
|
||||
"mood": 5,
|
||||
"weight": 70.6
|
||||
},
|
||||
{
|
||||
"mood": 3,
|
||||
"weight": 70.3
|
||||
},
|
||||
{
|
||||
"mood": 1,
|
||||
"weight": 70
|
||||
},
|
||||
{
|
||||
"mood": 4,
|
||||
"weight": 71.2
|
||||
},
|
||||
{
|
||||
"mood": 2,
|
||||
"weight": 70.9
|
||||
},
|
||||
{
|
||||
"mood": 5,
|
||||
"weight": 70.6
|
||||
},
|
||||
{
|
||||
"mood": 3,
|
||||
"weight": 70.3
|
||||
},
|
||||
{
|
||||
"mood": 1,
|
||||
"weight": 70
|
||||
},
|
||||
{
|
||||
"mood": 4,
|
||||
"weight": 71.2
|
||||
},
|
||||
{
|
||||
"mood": 2,
|
||||
"weight": 70.9
|
||||
},
|
||||
{
|
||||
"mood": 3,
|
||||
"weight": 70.3
|
||||
},
|
||||
{
|
||||
"mood": 1,
|
||||
"weight": 70
|
||||
},
|
||||
{
|
||||
"mood": 4,
|
||||
"weight": 71.2
|
||||
},
|
||||
{
|
||||
"mood": 2,
|
||||
"weight": 70.9
|
||||
},
|
||||
{
|
||||
"mood": 5,
|
||||
"weight": 70.6
|
||||
},
|
||||
{
|
||||
"mood": 3,
|
||||
"weight": 70.3
|
||||
}
|
||||
],
|
||||
"moodPulseCorrelation": null,
|
||||
"moodPulseScatterData": [
|
||||
{
|
||||
"mood": 2,
|
||||
"pulse": 72
|
||||
},
|
||||
{
|
||||
"mood": 5,
|
||||
"pulse": 71
|
||||
},
|
||||
{
|
||||
"mood": 3,
|
||||
"pulse": 78
|
||||
},
|
||||
{
|
||||
"mood": 1,
|
||||
"pulse": 77
|
||||
},
|
||||
{
|
||||
"mood": 4,
|
||||
"pulse": 76
|
||||
},
|
||||
{
|
||||
"mood": 2,
|
||||
"pulse": 75
|
||||
},
|
||||
{
|
||||
"mood": 5,
|
||||
"pulse": 74
|
||||
},
|
||||
{
|
||||
"mood": 3,
|
||||
"pulse": 73
|
||||
},
|
||||
{
|
||||
"mood": 1,
|
||||
"pulse": 72
|
||||
},
|
||||
{
|
||||
"mood": 4,
|
||||
"pulse": 74
|
||||
},
|
||||
{
|
||||
"mood": 2,
|
||||
"pulse": 73
|
||||
},
|
||||
{
|
||||
"mood": 5,
|
||||
"pulse": 77
|
||||
},
|
||||
{
|
||||
"mood": 3,
|
||||
"pulse": 76
|
||||
},
|
||||
{
|
||||
"mood": 1,
|
||||
"pulse": 75
|
||||
},
|
||||
{
|
||||
"mood": 4,
|
||||
"pulse": 74
|
||||
},
|
||||
{
|
||||
"mood": 2,
|
||||
"pulse": 73
|
||||
},
|
||||
{
|
||||
"mood": 5,
|
||||
"pulse": 75
|
||||
},
|
||||
{
|
||||
"mood": 3,
|
||||
"pulse": 74
|
||||
},
|
||||
{
|
||||
"mood": 1,
|
||||
"pulse": 73
|
||||
},
|
||||
{
|
||||
"mood": 4,
|
||||
"pulse": 72
|
||||
},
|
||||
{
|
||||
"mood": 2,
|
||||
"pulse": 76
|
||||
},
|
||||
{
|
||||
"mood": 1,
|
||||
"pulse": 76
|
||||
},
|
||||
{
|
||||
"mood": 4,
|
||||
"pulse": 75
|
||||
},
|
||||
{
|
||||
"mood": 2,
|
||||
"pulse": 74
|
||||
},
|
||||
{
|
||||
"mood": 5,
|
||||
"pulse": 73
|
||||
},
|
||||
{
|
||||
"mood": 3,
|
||||
"pulse": 72
|
||||
}
|
||||
],
|
||||
"medications": [
|
||||
{
|
||||
"id": "<id:1>",
|
||||
"name": "Amlodipine",
|
||||
"dose": "5mg",
|
||||
"category": "BLOOD_PRESSURE",
|
||||
"categoryLabel": null,
|
||||
"compliance7": 67,
|
||||
"compliance30": 65,
|
||||
"streak": 4,
|
||||
"taken7": 4,
|
||||
"skipped7": 1,
|
||||
"missed7": 2
|
||||
}
|
||||
],
|
||||
"alerts": [
|
||||
{
|
||||
"level": "warning",
|
||||
"title": "Blood pressure often outside target range",
|
||||
"message": "Only 0% of your readings are within the target range."
|
||||
},
|
||||
{
|
||||
"level": "warning",
|
||||
"title": "Low compliance: Amlodipine",
|
||||
"message": "Your 7-day compliance for Amlodipine is only 67%. Regular intake is important."
|
||||
}
|
||||
],
|
||||
"hasProvider": false,
|
||||
"dataSpanDays": 50,
|
||||
"totalMeasurements": 282,
|
||||
"revalidating": false,
|
||||
"ai": {
|
||||
"briefing": {
|
||||
"available": false,
|
||||
"reason": "no_provider",
|
||||
"onDeviceAllowed": true
|
||||
},
|
||||
"statusText": {
|
||||
"available": false,
|
||||
"reason": "no_provider",
|
||||
"onDeviceAllowed": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"error": null
|
||||
},
|
||||
"events": [
|
||||
{
|
||||
"status": 200,
|
||||
"action": {
|
||||
"name": "insights.comprehensive"
|
||||
},
|
||||
"meta": {
|
||||
"cache.analytics.key_hash": 2016842294,
|
||||
"cache.analytics.outcome": "miss",
|
||||
"insights": {
|
||||
"slope_source": "rollup",
|
||||
"anomaly_source": "live",
|
||||
"regression_source": "rollup"
|
||||
},
|
||||
"insights.sub_bpRaw_ms": "<insights.sub_bpRaw_ms>",
|
||||
"insights.sub_buckets_ms": "<insights.sub_buckets_ms>",
|
||||
"insights.sub_coverage_ms": "<insights.sub_coverage_ms>",
|
||||
"insights.sub_firstAt_ms": "<insights.sub_firstAt_ms>",
|
||||
"insights.sub_latests_ms": "<insights.sub_latests_ms>",
|
||||
"insights.sub_narrow_ms": "<insights.sub_narrow_ms>",
|
||||
"medications": 1,
|
||||
"moodEntries": 29,
|
||||
"totalMeasurements": 282
|
||||
},
|
||||
"warnings": null,
|
||||
"error": null
|
||||
}
|
||||
],
|
||||
"effects": [
|
||||
{
|
||||
"effect": "ensureUserRollupsFresh",
|
||||
"args": [
|
||||
"<id:2>"
|
||||
]
|
||||
},
|
||||
{
|
||||
"effect": "ensureUserMoodRollupsFresh",
|
||||
"args": [
|
||||
"<id:2>"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
+79
@@ -0,0 +1,79 @@
|
||||
{
|
||||
"status": 200,
|
||||
"body": {
|
||||
"data": {
|
||||
"summaries": {},
|
||||
"bmi": null,
|
||||
"bmiClassification": null,
|
||||
"bpClassification": null,
|
||||
"bpPctInTarget": null,
|
||||
"bpTargets": null,
|
||||
"weightBpCorrelation": null,
|
||||
"scatterData": [],
|
||||
"bpMedicationCorrelation": null,
|
||||
"bpMedicationScatterData": [],
|
||||
"moodSummary": null,
|
||||
"moodBpCorrelation": null,
|
||||
"moodBpScatterData": [],
|
||||
"moodWeightCorrelation": null,
|
||||
"moodWeightScatterData": [],
|
||||
"moodPulseCorrelation": null,
|
||||
"moodPulseScatterData": [],
|
||||
"medications": [],
|
||||
"alerts": [],
|
||||
"hasProvider": false,
|
||||
"dataSpanDays": 0,
|
||||
"totalMeasurements": 0,
|
||||
"revalidating": false,
|
||||
"ai": {
|
||||
"briefing": {
|
||||
"available": false,
|
||||
"reason": "no_provider",
|
||||
"onDeviceAllowed": true
|
||||
},
|
||||
"statusText": {
|
||||
"available": false,
|
||||
"reason": "no_provider",
|
||||
"onDeviceAllowed": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"error": null
|
||||
},
|
||||
"events": [
|
||||
{
|
||||
"status": 200,
|
||||
"action": {
|
||||
"name": "insights.comprehensive"
|
||||
},
|
||||
"meta": {
|
||||
"cache.analytics.key_hash": 461242359,
|
||||
"cache.analytics.outcome": "miss",
|
||||
"insights.sub_bpRaw_ms": "<insights.sub_bpRaw_ms>",
|
||||
"insights.sub_buckets_ms": "<insights.sub_buckets_ms>",
|
||||
"insights.sub_coverage_ms": "<insights.sub_coverage_ms>",
|
||||
"insights.sub_heavy_ms": "<insights.sub_heavy_ms>",
|
||||
"insights.sub_latests_ms": "<insights.sub_latests_ms>",
|
||||
"medications": 0,
|
||||
"moodEntries": 0,
|
||||
"totalMeasurements": 0
|
||||
},
|
||||
"warnings": null,
|
||||
"error": null
|
||||
}
|
||||
],
|
||||
"effects": [
|
||||
{
|
||||
"effect": "ensureUserRollupsFresh",
|
||||
"args": [
|
||||
"<id:1>"
|
||||
]
|
||||
},
|
||||
{
|
||||
"effect": "ensureUserMoodRollupsFresh",
|
||||
"args": [
|
||||
"<id:1>"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
+32
@@ -0,0 +1,32 @@
|
||||
{
|
||||
"status": 401,
|
||||
"body": {
|
||||
"data": null,
|
||||
"error": "Not authenticated",
|
||||
"meta": {
|
||||
"errorCode": "auth.missing",
|
||||
"requestId": "<requestId>"
|
||||
}
|
||||
},
|
||||
"events": [
|
||||
{
|
||||
"status": 401,
|
||||
"action": null,
|
||||
"meta": null,
|
||||
"warnings": null,
|
||||
"error": {
|
||||
"type": "HttpError",
|
||||
"message": "Not authenticated"
|
||||
}
|
||||
}
|
||||
],
|
||||
"effects": [],
|
||||
"stored": {
|
||||
"insightsCachedAt": null,
|
||||
"insightsCachedLocale": null,
|
||||
"cachedPayload": null,
|
||||
"snapshotHash": null,
|
||||
"audit": [],
|
||||
"usage": []
|
||||
}
|
||||
}
|
||||
+35
@@ -0,0 +1,35 @@
|
||||
{
|
||||
"status": 403,
|
||||
"body": {
|
||||
"data": null,
|
||||
"error": "This AI feature is turned off in your settings",
|
||||
"meta": {
|
||||
"capability": "briefing",
|
||||
"reason": "user_disabled",
|
||||
"errorCode": "module.disabled",
|
||||
"module": "insights",
|
||||
"requestId": "<requestId>"
|
||||
}
|
||||
},
|
||||
"events": [
|
||||
{
|
||||
"status": 403,
|
||||
"action": null,
|
||||
"meta": null,
|
||||
"warnings": null,
|
||||
"error": {
|
||||
"type": "AiUnavailableError",
|
||||
"message": "This AI feature is turned off in your settings"
|
||||
}
|
||||
}
|
||||
],
|
||||
"effects": [],
|
||||
"stored": {
|
||||
"insightsCachedAt": null,
|
||||
"insightsCachedLocale": null,
|
||||
"cachedPayload": null,
|
||||
"snapshotHash": null,
|
||||
"audit": [],
|
||||
"usage": []
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,52 @@
|
||||
{
|
||||
"status": 200,
|
||||
"body": {
|
||||
"data": {
|
||||
"insights": null,
|
||||
"cached": false,
|
||||
"legacyPayload": false,
|
||||
"revalidating": true,
|
||||
"hasProvider": true,
|
||||
"generationFailed": false,
|
||||
"generationFailureClass": null,
|
||||
"briefingOmittedReason": null
|
||||
},
|
||||
"error": null
|
||||
},
|
||||
"events": [
|
||||
{
|
||||
"status": 200,
|
||||
"action": {
|
||||
"name": "insights.generate.read"
|
||||
},
|
||||
"meta": {
|
||||
"cached": false,
|
||||
"hasProvider": true,
|
||||
"languageMismatch": false,
|
||||
"readerLocale": "en",
|
||||
"revalidating": true
|
||||
},
|
||||
"warnings": null,
|
||||
"error": null
|
||||
}
|
||||
],
|
||||
"effects": [
|
||||
{
|
||||
"effect": "enqueueForceWarm",
|
||||
"args": [
|
||||
{
|
||||
"userId": "<id:1>",
|
||||
"locale": "en"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"stored": {
|
||||
"insightsCachedAt": null,
|
||||
"insightsCachedLocale": null,
|
||||
"cachedPayload": null,
|
||||
"snapshotHash": null,
|
||||
"audit": [],
|
||||
"usage": []
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,92 @@
|
||||
{
|
||||
"status": 200,
|
||||
"body": {
|
||||
"data": {
|
||||
"insights": {
|
||||
"summary": "Cached summary.",
|
||||
"classification": "gut",
|
||||
"findings": [],
|
||||
"correlations": [],
|
||||
"recommendations": [],
|
||||
"dataQuality": {
|
||||
"coverage": "good",
|
||||
"gaps": [],
|
||||
"confidence": "hoch"
|
||||
},
|
||||
"dailyBriefing": {
|
||||
"paragraph": "Your readings held steady this week, with no surprises.",
|
||||
"signalsOfDay": [
|
||||
{
|
||||
"sourceMetric": "weight",
|
||||
"tone": "info",
|
||||
"headline": "Weight is steady",
|
||||
"nudge": "Keep weighing in at the same time each morning.",
|
||||
"delta": null
|
||||
}
|
||||
],
|
||||
"keyFindings": []
|
||||
},
|
||||
"briefingGeneratedAt": "anchor+0d+11:00:00"
|
||||
},
|
||||
"cached": true,
|
||||
"cachedAt": "anchor+0d+11:00:00",
|
||||
"legacyPayload": false,
|
||||
"revalidating": false,
|
||||
"hasProvider": true,
|
||||
"generationFailed": false,
|
||||
"generationFailureClass": null,
|
||||
"briefingOmittedReason": null
|
||||
},
|
||||
"error": null
|
||||
},
|
||||
"events": [
|
||||
{
|
||||
"status": 200,
|
||||
"action": {
|
||||
"name": "insights.generate.read"
|
||||
},
|
||||
"meta": {
|
||||
"cached": true,
|
||||
"hasProvider": true,
|
||||
"legacyPayload": false,
|
||||
"revalidating": false
|
||||
},
|
||||
"warnings": null,
|
||||
"error": null
|
||||
}
|
||||
],
|
||||
"effects": [],
|
||||
"stored": {
|
||||
"insightsCachedAt": "anchor+0d+11:00:00",
|
||||
"insightsCachedLocale": "en",
|
||||
"cachedPayload": {
|
||||
"summary": "Cached summary.",
|
||||
"classification": "gut",
|
||||
"findings": [],
|
||||
"correlations": [],
|
||||
"recommendations": [],
|
||||
"dataQuality": {
|
||||
"coverage": "good",
|
||||
"gaps": [],
|
||||
"confidence": "hoch"
|
||||
},
|
||||
"dailyBriefing": {
|
||||
"paragraph": "Your readings held steady this week, with no surprises.",
|
||||
"signalsOfDay": [
|
||||
{
|
||||
"sourceMetric": "weight",
|
||||
"tone": "info",
|
||||
"headline": "Weight is steady",
|
||||
"nudge": "Keep weighing in at the same time each morning.",
|
||||
"delta": null
|
||||
}
|
||||
],
|
||||
"keyFindings": []
|
||||
},
|
||||
"briefingGeneratedAt": "anchor+0d+11:00:00"
|
||||
},
|
||||
"snapshotHash": null,
|
||||
"audit": [],
|
||||
"usage": []
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,90 @@
|
||||
{
|
||||
"status": 200,
|
||||
"body": {
|
||||
"data": {
|
||||
"insights": {
|
||||
"summary": "Cached summary.",
|
||||
"classification": "gut",
|
||||
"findings": [],
|
||||
"correlations": [],
|
||||
"recommendations": [],
|
||||
"dataQuality": {
|
||||
"coverage": "good",
|
||||
"gaps": [],
|
||||
"confidence": "hoch"
|
||||
},
|
||||
"dailyBriefing": null,
|
||||
"briefingGeneratedAt": "anchor-1d+16:00:00"
|
||||
},
|
||||
"cached": true,
|
||||
"cachedAt": "anchor+0d+10:00:00",
|
||||
"legacyPayload": false,
|
||||
"revalidating": true,
|
||||
"hasProvider": true,
|
||||
"generationFailed": false,
|
||||
"generationFailureClass": null,
|
||||
"briefingOmittedReason": null
|
||||
},
|
||||
"error": null
|
||||
},
|
||||
"events": [
|
||||
{
|
||||
"status": 200,
|
||||
"action": {
|
||||
"name": "insights.generate.read"
|
||||
},
|
||||
"meta": {
|
||||
"cached": true,
|
||||
"hasProvider": true,
|
||||
"legacyPayload": false,
|
||||
"revalidating": true
|
||||
},
|
||||
"warnings": null,
|
||||
"error": null
|
||||
}
|
||||
],
|
||||
"effects": [
|
||||
{
|
||||
"effect": "enqueueForceWarm",
|
||||
"args": [
|
||||
{
|
||||
"userId": "<id:1>",
|
||||
"locale": "en"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"stored": {
|
||||
"insightsCachedAt": "anchor+0d+10:00:00",
|
||||
"insightsCachedLocale": "en",
|
||||
"cachedPayload": {
|
||||
"summary": "Cached summary.",
|
||||
"classification": "gut",
|
||||
"findings": [],
|
||||
"correlations": [],
|
||||
"recommendations": [],
|
||||
"dataQuality": {
|
||||
"coverage": "good",
|
||||
"gaps": [],
|
||||
"confidence": "hoch"
|
||||
},
|
||||
"dailyBriefing": {
|
||||
"paragraph": "Your readings held steady this week, with no surprises.",
|
||||
"signalsOfDay": [
|
||||
{
|
||||
"sourceMetric": "weight",
|
||||
"tone": "info",
|
||||
"headline": "Weight is steady",
|
||||
"nudge": "Keep weighing in at the same time each morning.",
|
||||
"delta": null
|
||||
}
|
||||
],
|
||||
"keyFindings": []
|
||||
},
|
||||
"briefingGeneratedAt": "anchor-1d+16:00:00"
|
||||
},
|
||||
"snapshotHash": null,
|
||||
"audit": [],
|
||||
"usage": []
|
||||
}
|
||||
}
|
||||
+77
@@ -0,0 +1,77 @@
|
||||
{
|
||||
"status": 200,
|
||||
"body": {
|
||||
"data": {
|
||||
"insights": null,
|
||||
"cached": false,
|
||||
"legacyPayload": false,
|
||||
"revalidating": true,
|
||||
"hasProvider": true,
|
||||
"generationFailed": false,
|
||||
"generationFailureClass": null,
|
||||
"briefingOmittedReason": null
|
||||
},
|
||||
"error": null
|
||||
},
|
||||
"events": [
|
||||
{
|
||||
"status": 200,
|
||||
"action": {
|
||||
"name": "insights.generate.read"
|
||||
},
|
||||
"meta": {
|
||||
"cached": false,
|
||||
"hasProvider": true,
|
||||
"languageMismatch": true,
|
||||
"readerLocale": "en",
|
||||
"revalidating": true
|
||||
},
|
||||
"warnings": null,
|
||||
"error": null
|
||||
}
|
||||
],
|
||||
"effects": [
|
||||
{
|
||||
"effect": "enqueueForceWarm",
|
||||
"args": [
|
||||
{
|
||||
"userId": "<id:1>",
|
||||
"locale": "en"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"stored": {
|
||||
"insightsCachedAt": "anchor+0d+11:00:00",
|
||||
"insightsCachedLocale": "de",
|
||||
"cachedPayload": {
|
||||
"summary": "Cached summary.",
|
||||
"classification": "gut",
|
||||
"findings": [],
|
||||
"correlations": [],
|
||||
"recommendations": [],
|
||||
"dataQuality": {
|
||||
"coverage": "good",
|
||||
"gaps": [],
|
||||
"confidence": "hoch"
|
||||
},
|
||||
"dailyBriefing": {
|
||||
"paragraph": "Your readings held steady this week, with no surprises.",
|
||||
"signalsOfDay": [
|
||||
{
|
||||
"sourceMetric": "weight",
|
||||
"tone": "info",
|
||||
"headline": "Weight is steady",
|
||||
"nudge": "Keep weighing in at the same time each morning.",
|
||||
"delta": null
|
||||
}
|
||||
],
|
||||
"keyFindings": []
|
||||
},
|
||||
"briefingGeneratedAt": "anchor+0d+11:00:00"
|
||||
},
|
||||
"snapshotHash": null,
|
||||
"audit": [],
|
||||
"usage": []
|
||||
}
|
||||
}
|
||||
+52
@@ -0,0 +1,52 @@
|
||||
{
|
||||
"status": 200,
|
||||
"body": {
|
||||
"data": {
|
||||
"insights": null,
|
||||
"cached": false,
|
||||
"legacyPayload": false,
|
||||
"revalidating": true,
|
||||
"hasProvider": true,
|
||||
"generationFailed": false,
|
||||
"generationFailureClass": null,
|
||||
"briefingOmittedReason": null
|
||||
},
|
||||
"error": null
|
||||
},
|
||||
"events": [
|
||||
{
|
||||
"status": 200,
|
||||
"action": {
|
||||
"name": "insights.generate.read"
|
||||
},
|
||||
"meta": {
|
||||
"cached": false,
|
||||
"hasProvider": true,
|
||||
"languageMismatch": false,
|
||||
"readerLocale": "en",
|
||||
"revalidating": true
|
||||
},
|
||||
"warnings": null,
|
||||
"error": null
|
||||
}
|
||||
],
|
||||
"effects": [
|
||||
{
|
||||
"effect": "enqueueForceWarm",
|
||||
"args": [
|
||||
{
|
||||
"userId": "<id:1>",
|
||||
"locale": "en"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"stored": {
|
||||
"insightsCachedAt": "anchor+0d+11:00:00",
|
||||
"insightsCachedLocale": null,
|
||||
"cachedPayload": "{not json",
|
||||
"snapshotHash": null,
|
||||
"audit": [],
|
||||
"usage": []
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,62 @@
|
||||
{
|
||||
"status": 200,
|
||||
"body": {
|
||||
"data": {
|
||||
"insights": {
|
||||
"summary": "Legacy",
|
||||
"recommendations": [
|
||||
"Drink water."
|
||||
]
|
||||
},
|
||||
"cached": true,
|
||||
"cachedAt": "anchor+0d+11:00:00",
|
||||
"legacyPayload": true,
|
||||
"revalidating": true,
|
||||
"hasProvider": true,
|
||||
"generationFailed": false,
|
||||
"generationFailureClass": null,
|
||||
"briefingOmittedReason": null
|
||||
},
|
||||
"error": null
|
||||
},
|
||||
"events": [
|
||||
{
|
||||
"status": 200,
|
||||
"action": {
|
||||
"name": "insights.generate.read"
|
||||
},
|
||||
"meta": {
|
||||
"cached": true,
|
||||
"hasProvider": true,
|
||||
"legacyPayload": true,
|
||||
"revalidating": true
|
||||
},
|
||||
"warnings": null,
|
||||
"error": null
|
||||
}
|
||||
],
|
||||
"effects": [
|
||||
{
|
||||
"effect": "enqueueForceWarm",
|
||||
"args": [
|
||||
{
|
||||
"userId": "<id:1>",
|
||||
"locale": "en"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"stored": {
|
||||
"insightsCachedAt": "anchor+0d+11:00:00",
|
||||
"insightsCachedLocale": null,
|
||||
"cachedPayload": {
|
||||
"summary": "Legacy",
|
||||
"recommendations": [
|
||||
"Drink water."
|
||||
]
|
||||
},
|
||||
"snapshotHash": null,
|
||||
"audit": [],
|
||||
"usage": []
|
||||
}
|
||||
}
|
||||
+102
@@ -0,0 +1,102 @@
|
||||
{
|
||||
"status": 200,
|
||||
"body": {
|
||||
"data": {
|
||||
"insights": {
|
||||
"summary": "Cached summary.",
|
||||
"classification": "gut",
|
||||
"findings": [],
|
||||
"correlations": [],
|
||||
"recommendations": [],
|
||||
"dataQuality": {
|
||||
"coverage": "good",
|
||||
"gaps": [],
|
||||
"confidence": "hoch"
|
||||
},
|
||||
"dailyBriefing": {
|
||||
"paragraph": "Your readings held steady this week, with no surprises.",
|
||||
"signalsOfDay": [
|
||||
{
|
||||
"sourceMetric": "weight",
|
||||
"tone": "info",
|
||||
"headline": "Weight is steady",
|
||||
"nudge": "Keep weighing in at the same time each morning.",
|
||||
"delta": null
|
||||
}
|
||||
],
|
||||
"keyFindings": []
|
||||
},
|
||||
"briefingGeneratedAt": "anchor+0d+09:00:00"
|
||||
},
|
||||
"cached": true,
|
||||
"cachedAt": "anchor+0d+09:00:00",
|
||||
"legacyPayload": false,
|
||||
"revalidating": false,
|
||||
"hasProvider": true,
|
||||
"generationFailed": true,
|
||||
"generationFailureClass": "rate-limit",
|
||||
"briefingOmittedReason": null
|
||||
},
|
||||
"error": null
|
||||
},
|
||||
"events": [
|
||||
{
|
||||
"status": 200,
|
||||
"action": {
|
||||
"name": "insights.generate.read"
|
||||
},
|
||||
"meta": {
|
||||
"cached": true,
|
||||
"hasProvider": true,
|
||||
"legacyPayload": false,
|
||||
"revalidating": false
|
||||
},
|
||||
"warnings": null,
|
||||
"error": null
|
||||
}
|
||||
],
|
||||
"effects": [],
|
||||
"stored": {
|
||||
"insightsCachedAt": "anchor+0d+09:00:00",
|
||||
"insightsCachedLocale": "en",
|
||||
"cachedPayload": {
|
||||
"summary": "Cached summary.",
|
||||
"classification": "gut",
|
||||
"findings": [],
|
||||
"correlations": [],
|
||||
"recommendations": [],
|
||||
"dataQuality": {
|
||||
"coverage": "good",
|
||||
"gaps": [],
|
||||
"confidence": "hoch"
|
||||
},
|
||||
"dailyBriefing": {
|
||||
"paragraph": "Your readings held steady this week, with no surprises.",
|
||||
"signalsOfDay": [
|
||||
{
|
||||
"sourceMetric": "weight",
|
||||
"tone": "info",
|
||||
"headline": "Weight is steady",
|
||||
"nudge": "Keep weighing in at the same time each morning.",
|
||||
"delta": null
|
||||
}
|
||||
],
|
||||
"keyFindings": []
|
||||
},
|
||||
"briefingGeneratedAt": "anchor+0d+09:00:00"
|
||||
},
|
||||
"snapshotHash": null,
|
||||
"audit": [
|
||||
{
|
||||
"action": "insights.briefing-failure",
|
||||
"details": {
|
||||
"reason": "all-providers-failed",
|
||||
"httpStatus": 429,
|
||||
"failureKind": null
|
||||
},
|
||||
"ipAddress": null
|
||||
}
|
||||
],
|
||||
"usage": []
|
||||
}
|
||||
}
|
||||
+71
@@ -0,0 +1,71 @@
|
||||
{
|
||||
"status": 200,
|
||||
"body": {
|
||||
"data": {
|
||||
"insights": null,
|
||||
"cached": false,
|
||||
"legacyPayload": false,
|
||||
"revalidating": true,
|
||||
"hasProvider": true,
|
||||
"generationFailed": true,
|
||||
"generationFailureClass": "format",
|
||||
"briefingOmittedReason": null
|
||||
},
|
||||
"error": null
|
||||
},
|
||||
"events": [
|
||||
{
|
||||
"status": 200,
|
||||
"action": {
|
||||
"name": "insights.generate.read"
|
||||
},
|
||||
"meta": {
|
||||
"cached": false,
|
||||
"hasProvider": true,
|
||||
"languageMismatch": false,
|
||||
"readerLocale": "en",
|
||||
"revalidating": true
|
||||
},
|
||||
"warnings": null,
|
||||
"error": null
|
||||
}
|
||||
],
|
||||
"effects": [
|
||||
{
|
||||
"effect": "enqueueForceWarm",
|
||||
"args": [
|
||||
{
|
||||
"userId": "<id:1>",
|
||||
"locale": "en"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"stored": {
|
||||
"insightsCachedAt": null,
|
||||
"insightsCachedLocale": null,
|
||||
"cachedPayload": null,
|
||||
"snapshotHash": null,
|
||||
"audit": [
|
||||
{
|
||||
"action": "insights.briefing-failure",
|
||||
"details": {
|
||||
"reason": "provider-error",
|
||||
"httpStatus": null,
|
||||
"failureKind": null
|
||||
},
|
||||
"ipAddress": null
|
||||
},
|
||||
{
|
||||
"action": "insights.briefing-failure",
|
||||
"details": {
|
||||
"reason": "invalid-json",
|
||||
"httpStatus": null,
|
||||
"failureKind": null
|
||||
},
|
||||
"ipAddress": null
|
||||
}
|
||||
],
|
||||
"usage": []
|
||||
}
|
||||
}
|
||||
+78
@@ -0,0 +1,78 @@
|
||||
{
|
||||
"status": 200,
|
||||
"body": {
|
||||
"data": {
|
||||
"insights": {
|
||||
"summary": "Cached summary.",
|
||||
"classification": "gut",
|
||||
"findings": [],
|
||||
"correlations": [],
|
||||
"recommendations": [],
|
||||
"dataQuality": {
|
||||
"coverage": "good",
|
||||
"gaps": [],
|
||||
"confidence": "hoch"
|
||||
},
|
||||
"dailyBriefing": null,
|
||||
"briefingGeneratedAt": "anchor+0d+10:00:00"
|
||||
},
|
||||
"cached": true,
|
||||
"cachedAt": "anchor+0d+10:00:00",
|
||||
"legacyPayload": false,
|
||||
"revalidating": false,
|
||||
"hasProvider": true,
|
||||
"generationFailed": false,
|
||||
"generationFailureClass": null,
|
||||
"briefingOmittedReason": "ungrounded"
|
||||
},
|
||||
"error": null
|
||||
},
|
||||
"events": [
|
||||
{
|
||||
"status": 200,
|
||||
"action": {
|
||||
"name": "insights.generate.read"
|
||||
},
|
||||
"meta": {
|
||||
"cached": true,
|
||||
"hasProvider": true,
|
||||
"legacyPayload": false,
|
||||
"revalidating": false
|
||||
},
|
||||
"warnings": null,
|
||||
"error": null
|
||||
}
|
||||
],
|
||||
"effects": [],
|
||||
"stored": {
|
||||
"insightsCachedAt": "anchor+0d+10:00:00",
|
||||
"insightsCachedLocale": "en",
|
||||
"cachedPayload": {
|
||||
"summary": "Cached summary.",
|
||||
"classification": "gut",
|
||||
"findings": [],
|
||||
"correlations": [],
|
||||
"recommendations": [],
|
||||
"dataQuality": {
|
||||
"coverage": "good",
|
||||
"gaps": [],
|
||||
"confidence": "hoch"
|
||||
},
|
||||
"dailyBriefing": null,
|
||||
"briefingGeneratedAt": "anchor+0d+10:00:00"
|
||||
},
|
||||
"snapshotHash": null,
|
||||
"audit": [
|
||||
{
|
||||
"action": "insights.briefing-failure",
|
||||
"details": {
|
||||
"reason": "briefing-ungrounded",
|
||||
"httpStatus": null,
|
||||
"failureKind": null
|
||||
},
|
||||
"ipAddress": null
|
||||
}
|
||||
],
|
||||
"usage": []
|
||||
}
|
||||
}
|
||||
+55
@@ -0,0 +1,55 @@
|
||||
{
|
||||
"status": 401,
|
||||
"body": {
|
||||
"data": null,
|
||||
"error": "Not authenticated",
|
||||
"meta": {
|
||||
"errorCode": "auth.missing",
|
||||
"requestId": "<requestId>"
|
||||
}
|
||||
},
|
||||
"events": [
|
||||
{
|
||||
"status": 401,
|
||||
"action": null,
|
||||
"meta": null,
|
||||
"warnings": null,
|
||||
"error": {
|
||||
"type": "HttpError",
|
||||
"message": "Not authenticated"
|
||||
}
|
||||
}
|
||||
],
|
||||
"effects": [],
|
||||
"stored": {
|
||||
"insightsCachedAt": "anchor+0d+10:00:00",
|
||||
"insightsCachedLocale": "en",
|
||||
"cachedPayload": {
|
||||
"summary": "Cached summary.",
|
||||
"classification": "gut",
|
||||
"findings": [],
|
||||
"correlations": [],
|
||||
"recommendations": [],
|
||||
"dataQuality": {
|
||||
"coverage": "good",
|
||||
"gaps": [],
|
||||
"confidence": "hoch"
|
||||
},
|
||||
"dailyBriefing": null,
|
||||
"briefingGeneratedAt": "anchor+0d+10:00:00"
|
||||
},
|
||||
"snapshotHash": null,
|
||||
"audit": [
|
||||
{
|
||||
"action": "insights.briefing-failure",
|
||||
"details": {
|
||||
"reason": "briefing-ungrounded",
|
||||
"httpStatus": null,
|
||||
"failureKind": null
|
||||
},
|
||||
"ipAddress": null
|
||||
}
|
||||
],
|
||||
"usage": []
|
||||
}
|
||||
}
|
||||
+35
@@ -0,0 +1,35 @@
|
||||
{
|
||||
"status": 403,
|
||||
"body": {
|
||||
"data": null,
|
||||
"error": "This AI feature is turned off in your settings",
|
||||
"meta": {
|
||||
"capability": "briefing",
|
||||
"reason": "user_disabled",
|
||||
"errorCode": "module.disabled",
|
||||
"module": "insights",
|
||||
"requestId": "<requestId>"
|
||||
}
|
||||
},
|
||||
"events": [
|
||||
{
|
||||
"status": 403,
|
||||
"action": null,
|
||||
"meta": null,
|
||||
"warnings": null,
|
||||
"error": {
|
||||
"type": "AiUnavailableError",
|
||||
"message": "This AI feature is turned off in your settings"
|
||||
}
|
||||
}
|
||||
],
|
||||
"effects": [],
|
||||
"stored": {
|
||||
"insightsCachedAt": null,
|
||||
"insightsCachedLocale": null,
|
||||
"cachedPayload": null,
|
||||
"snapshotHash": null,
|
||||
"audit": [],
|
||||
"usage": []
|
||||
}
|
||||
}
|
||||
+29
@@ -0,0 +1,29 @@
|
||||
{
|
||||
"status": 413,
|
||||
"body": {
|
||||
"data": null,
|
||||
"error": "Request body exceeds 16384 bytes",
|
||||
"meta": {
|
||||
"errorCode": "http.payload_too_large",
|
||||
"requestId": "<requestId>"
|
||||
}
|
||||
},
|
||||
"events": [
|
||||
{
|
||||
"status": 413,
|
||||
"action": null,
|
||||
"meta": null,
|
||||
"warnings": null,
|
||||
"error": null
|
||||
}
|
||||
],
|
||||
"effects": [],
|
||||
"stored": {
|
||||
"insightsCachedAt": null,
|
||||
"insightsCachedLocale": null,
|
||||
"cachedPayload": null,
|
||||
"snapshotHash": null,
|
||||
"audit": [],
|
||||
"usage": []
|
||||
}
|
||||
}
|
||||
+86
@@ -0,0 +1,86 @@
|
||||
{
|
||||
"status": 200,
|
||||
"body": {
|
||||
"data": {
|
||||
"insights": {
|
||||
"summary": "Cached summary.",
|
||||
"classification": "gut",
|
||||
"findings": [],
|
||||
"correlations": [],
|
||||
"recommendations": [],
|
||||
"dataQuality": {
|
||||
"coverage": "good",
|
||||
"gaps": [],
|
||||
"confidence": "hoch"
|
||||
},
|
||||
"dailyBriefing": {
|
||||
"paragraph": "Your readings held steady this week, with no surprises.",
|
||||
"signalsOfDay": [
|
||||
{
|
||||
"sourceMetric": "weight",
|
||||
"tone": "info",
|
||||
"headline": "Weight is steady",
|
||||
"nudge": "Keep weighing in at the same time each morning.",
|
||||
"delta": null
|
||||
}
|
||||
],
|
||||
"keyFindings": []
|
||||
},
|
||||
"briefingGeneratedAt": "anchor+0d+11:00:00"
|
||||
},
|
||||
"cached": true,
|
||||
"cachedAt": "anchor+0d+11:00:00",
|
||||
"legacyPayload": false
|
||||
},
|
||||
"error": null
|
||||
},
|
||||
"events": [
|
||||
{
|
||||
"status": 200,
|
||||
"action": {
|
||||
"name": "insights.generate"
|
||||
},
|
||||
"meta": {
|
||||
"briefingless": false,
|
||||
"cached": true,
|
||||
"legacyPayload": false
|
||||
},
|
||||
"warnings": null,
|
||||
"error": null
|
||||
}
|
||||
],
|
||||
"effects": [],
|
||||
"stored": {
|
||||
"insightsCachedAt": "anchor+0d+11:00:00",
|
||||
"insightsCachedLocale": "en",
|
||||
"cachedPayload": {
|
||||
"summary": "Cached summary.",
|
||||
"classification": "gut",
|
||||
"findings": [],
|
||||
"correlations": [],
|
||||
"recommendations": [],
|
||||
"dataQuality": {
|
||||
"coverage": "good",
|
||||
"gaps": [],
|
||||
"confidence": "hoch"
|
||||
},
|
||||
"dailyBriefing": {
|
||||
"paragraph": "Your readings held steady this week, with no surprises.",
|
||||
"signalsOfDay": [
|
||||
{
|
||||
"sourceMetric": "weight",
|
||||
"tone": "info",
|
||||
"headline": "Weight is steady",
|
||||
"nudge": "Keep weighing in at the same time each morning.",
|
||||
"delta": null
|
||||
}
|
||||
],
|
||||
"keyFindings": []
|
||||
},
|
||||
"briefingGeneratedAt": "anchor+0d+11:00:00"
|
||||
},
|
||||
"snapshotHash": null,
|
||||
"audit": [],
|
||||
"usage": []
|
||||
}
|
||||
}
|
||||
+276
@@ -0,0 +1,276 @@
|
||||
{
|
||||
"status": 200,
|
||||
"body": {
|
||||
"data": {
|
||||
"insights": {
|
||||
"summary": "Your tracked metrics held steady over the last 30 days.",
|
||||
"classification": "gut",
|
||||
"findings": [],
|
||||
"correlations": [],
|
||||
"recommendations": [],
|
||||
"dataQuality": {
|
||||
"coverage": "good",
|
||||
"gaps": [],
|
||||
"confidence": "hoch"
|
||||
},
|
||||
"dailyBriefing": {
|
||||
"paragraph": "Your readings held steady this week, with no surprises.",
|
||||
"signalsOfDay": [
|
||||
{
|
||||
"sourceMetric": "weight",
|
||||
"tone": "info",
|
||||
"headline": "Weight is steady",
|
||||
"nudge": "Keep weighing in at the same time each morning.",
|
||||
"delta": null
|
||||
}
|
||||
],
|
||||
"keyFindings": []
|
||||
},
|
||||
"briefingGeneratedAt": "anchor+0d+12:00:00"
|
||||
},
|
||||
"cached": false,
|
||||
"legacyPayload": false,
|
||||
"briefingOmittedReason": null
|
||||
},
|
||||
"error": null
|
||||
},
|
||||
"events": [
|
||||
{
|
||||
"status": 200,
|
||||
"action": {
|
||||
"name": "insights.generate"
|
||||
},
|
||||
"meta": {
|
||||
"ai_reasoning_effort": "medium",
|
||||
"ai_reasoning_job": "daily_briefing",
|
||||
"ai_reasoning_source": "job",
|
||||
"cached": false,
|
||||
"chainProviderType": "anthropic",
|
||||
"fallbackHopCount": 0,
|
||||
"include_raw": false,
|
||||
"locale": "en",
|
||||
"model": "claude-parity",
|
||||
"providerType": "anthropic",
|
||||
"scopes": 13,
|
||||
"since_days": 400,
|
||||
"tokensUsed": 1200
|
||||
},
|
||||
"warnings": null,
|
||||
"error": null
|
||||
}
|
||||
],
|
||||
"effects": [
|
||||
{
|
||||
"effect": "ensureUserMoodRollupsFresh",
|
||||
"args": [
|
||||
"<id:1>"
|
||||
]
|
||||
},
|
||||
{
|
||||
"effect": "provider",
|
||||
"args": [
|
||||
{
|
||||
"surface": "job",
|
||||
"chain": [
|
||||
"anthropic"
|
||||
],
|
||||
"params": {
|
||||
"temperature": 0.3,
|
||||
"maxTokens": 2500,
|
||||
"responseFormat": "json",
|
||||
"timeoutMs": 180000,
|
||||
"reasoning": {
|
||||
"effort": "medium",
|
||||
"summaries": false
|
||||
}
|
||||
},
|
||||
"promptChars": 34773,
|
||||
"promptSha256": "2197bdec8af3ff7034e7b533788ac94d36b64d4edf8d211bbacfac7e2298ad72"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"effect": "enqueueStatusGeneration",
|
||||
"args": [
|
||||
{
|
||||
"userId": "<id:1>",
|
||||
"metric": "blood-pressure",
|
||||
"locale": "en"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"effect": "enqueueStatusGeneration",
|
||||
"args": [
|
||||
{
|
||||
"userId": "<id:1>",
|
||||
"metric": "pulse",
|
||||
"locale": "en"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"effect": "enqueueStatusGeneration",
|
||||
"args": [
|
||||
{
|
||||
"userId": "<id:1>",
|
||||
"metric": "weight",
|
||||
"locale": "en"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"effect": "enqueueStatusGeneration",
|
||||
"args": [
|
||||
{
|
||||
"userId": "<id:1>",
|
||||
"metric": "bmi",
|
||||
"locale": "en"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"effect": "enqueueStatusGeneration",
|
||||
"args": [
|
||||
{
|
||||
"userId": "<id:1>",
|
||||
"metric": "mood",
|
||||
"locale": "en"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"effect": "enqueueStatusGeneration",
|
||||
"args": [
|
||||
{
|
||||
"userId": "<id:1>",
|
||||
"metric": "medication-compliance",
|
||||
"locale": "en"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"effect": "enqueueStatusGeneration",
|
||||
"args": [
|
||||
{
|
||||
"userId": "<id:1>",
|
||||
"metric": "general",
|
||||
"locale": "en"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"effect": "enqueueStatusGeneration",
|
||||
"args": [
|
||||
{
|
||||
"userId": "<id:1>",
|
||||
"metric": "metric:SLEEP_DURATION",
|
||||
"locale": "en"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"effect": "enqueueStatusGeneration",
|
||||
"args": [
|
||||
{
|
||||
"userId": "<id:1>",
|
||||
"metric": "metric:STEPS",
|
||||
"locale": "en"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"effect": "enqueueStatusGeneration",
|
||||
"args": [
|
||||
{
|
||||
"userId": "<id:1>",
|
||||
"metric": "metric:BLOOD_GLUCOSE",
|
||||
"locale": "en"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"effect": "enqueueStatusGeneration",
|
||||
"args": [
|
||||
{
|
||||
"userId": "<id:1>",
|
||||
"metric": "metric:OXYGEN_SATURATION",
|
||||
"locale": "en"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"effect": "enqueueStatusGeneration",
|
||||
"args": [
|
||||
{
|
||||
"userId": "<id:1>",
|
||||
"metric": "metric:HEART_RATE_VARIABILITY",
|
||||
"locale": "en"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"effect": "enqueueStatusGeneration",
|
||||
"args": [
|
||||
{
|
||||
"userId": "<id:1>",
|
||||
"metric": "metric:RESTING_HEART_RATE",
|
||||
"locale": "en"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"stored": {
|
||||
"insightsCachedAt": "anchor+0d+12:00:00",
|
||||
"insightsCachedLocale": "en",
|
||||
"cachedPayload": {
|
||||
"summary": "Your tracked metrics held steady over the last 30 days.",
|
||||
"classification": "gut",
|
||||
"findings": [],
|
||||
"correlations": [],
|
||||
"recommendations": [],
|
||||
"dataQuality": {
|
||||
"coverage": "good",
|
||||
"gaps": [],
|
||||
"confidence": "hoch"
|
||||
},
|
||||
"dailyBriefing": {
|
||||
"paragraph": "Your readings held steady this week, with no surprises.",
|
||||
"signalsOfDay": [
|
||||
{
|
||||
"sourceMetric": "weight",
|
||||
"tone": "info",
|
||||
"headline": "Weight is steady",
|
||||
"nudge": "Keep weighing in at the same time each morning.",
|
||||
"delta": null
|
||||
}
|
||||
],
|
||||
"keyFindings": []
|
||||
},
|
||||
"briefingGeneratedAt": "anchor+0d+12:00:00"
|
||||
},
|
||||
"snapshotHash": "4ac15bc271309c63b3b5d1e43a3367f7abdf952d3f4351bb1b22aa364bcb630a",
|
||||
"audit": [
|
||||
{
|
||||
"action": "insights.generate",
|
||||
"details": {
|
||||
"privacyMode": "aggregated",
|
||||
"tokensUsed": 1200,
|
||||
"providerType": "anthropic",
|
||||
"chainProviderType": "anthropic",
|
||||
"fallbackHopCount": 0,
|
||||
"model": "claude-parity"
|
||||
},
|
||||
"ipAddress": null
|
||||
}
|
||||
],
|
||||
"usage": [
|
||||
{
|
||||
"dateKey": "day+0",
|
||||
"totalTokens": 1200,
|
||||
"operatorTokens": 0,
|
||||
"messageCount": 1
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
+275
@@ -0,0 +1,275 @@
|
||||
{
|
||||
"status": 200,
|
||||
"body": {
|
||||
"data": {
|
||||
"insights": {
|
||||
"summary": "Your tracked metrics held steady over the last 30 days.",
|
||||
"classification": "gut",
|
||||
"findings": [],
|
||||
"correlations": [],
|
||||
"recommendations": [],
|
||||
"dataQuality": {
|
||||
"coverage": "good",
|
||||
"gaps": [],
|
||||
"confidence": "hoch"
|
||||
},
|
||||
"dailyBriefing": {
|
||||
"paragraph": "Your readings held steady this week, with no surprises.",
|
||||
"signalsOfDay": [
|
||||
{
|
||||
"sourceMetric": "weight",
|
||||
"tone": "info",
|
||||
"headline": "Weight is steady",
|
||||
"nudge": "Keep weighing in at the same time each morning.",
|
||||
"delta": null
|
||||
}
|
||||
],
|
||||
"keyFindings": []
|
||||
},
|
||||
"briefingGeneratedAt": "anchor+0d+12:00:00"
|
||||
},
|
||||
"cached": false,
|
||||
"legacyPayload": false,
|
||||
"briefingOmittedReason": null
|
||||
},
|
||||
"error": null
|
||||
},
|
||||
"events": [
|
||||
{
|
||||
"status": 200,
|
||||
"action": {
|
||||
"name": "insights.generate"
|
||||
},
|
||||
"meta": {
|
||||
"ai_reasoning_effort": "medium",
|
||||
"ai_reasoning_job": "daily_briefing",
|
||||
"ai_reasoning_source": "job",
|
||||
"cached": false,
|
||||
"chainProviderType": "anthropic",
|
||||
"fallbackHopCount": 0,
|
||||
"include_raw": false,
|
||||
"model": "claude-parity",
|
||||
"providerType": "anthropic",
|
||||
"scopes": 13,
|
||||
"since_days": 400,
|
||||
"tokensUsed": 1200
|
||||
},
|
||||
"warnings": null,
|
||||
"error": null
|
||||
}
|
||||
],
|
||||
"effects": [
|
||||
{
|
||||
"effect": "ensureUserMoodRollupsFresh",
|
||||
"args": [
|
||||
"<id:1>"
|
||||
]
|
||||
},
|
||||
{
|
||||
"effect": "provider",
|
||||
"args": [
|
||||
{
|
||||
"surface": "job",
|
||||
"chain": [
|
||||
"anthropic"
|
||||
],
|
||||
"params": {
|
||||
"temperature": 0.3,
|
||||
"maxTokens": 2500,
|
||||
"responseFormat": "json",
|
||||
"timeoutMs": 180000,
|
||||
"reasoning": {
|
||||
"effort": "medium",
|
||||
"summaries": false
|
||||
}
|
||||
},
|
||||
"promptChars": 34773,
|
||||
"promptSha256": "2197bdec8af3ff7034e7b533788ac94d36b64d4edf8d211bbacfac7e2298ad72"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"effect": "enqueueStatusGeneration",
|
||||
"args": [
|
||||
{
|
||||
"userId": "<id:1>",
|
||||
"metric": "blood-pressure",
|
||||
"locale": "en"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"effect": "enqueueStatusGeneration",
|
||||
"args": [
|
||||
{
|
||||
"userId": "<id:1>",
|
||||
"metric": "pulse",
|
||||
"locale": "en"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"effect": "enqueueStatusGeneration",
|
||||
"args": [
|
||||
{
|
||||
"userId": "<id:1>",
|
||||
"metric": "weight",
|
||||
"locale": "en"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"effect": "enqueueStatusGeneration",
|
||||
"args": [
|
||||
{
|
||||
"userId": "<id:1>",
|
||||
"metric": "bmi",
|
||||
"locale": "en"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"effect": "enqueueStatusGeneration",
|
||||
"args": [
|
||||
{
|
||||
"userId": "<id:1>",
|
||||
"metric": "mood",
|
||||
"locale": "en"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"effect": "enqueueStatusGeneration",
|
||||
"args": [
|
||||
{
|
||||
"userId": "<id:1>",
|
||||
"metric": "medication-compliance",
|
||||
"locale": "en"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"effect": "enqueueStatusGeneration",
|
||||
"args": [
|
||||
{
|
||||
"userId": "<id:1>",
|
||||
"metric": "general",
|
||||
"locale": "en"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"effect": "enqueueStatusGeneration",
|
||||
"args": [
|
||||
{
|
||||
"userId": "<id:1>",
|
||||
"metric": "metric:SLEEP_DURATION",
|
||||
"locale": "en"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"effect": "enqueueStatusGeneration",
|
||||
"args": [
|
||||
{
|
||||
"userId": "<id:1>",
|
||||
"metric": "metric:STEPS",
|
||||
"locale": "en"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"effect": "enqueueStatusGeneration",
|
||||
"args": [
|
||||
{
|
||||
"userId": "<id:1>",
|
||||
"metric": "metric:BLOOD_GLUCOSE",
|
||||
"locale": "en"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"effect": "enqueueStatusGeneration",
|
||||
"args": [
|
||||
{
|
||||
"userId": "<id:1>",
|
||||
"metric": "metric:OXYGEN_SATURATION",
|
||||
"locale": "en"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"effect": "enqueueStatusGeneration",
|
||||
"args": [
|
||||
{
|
||||
"userId": "<id:1>",
|
||||
"metric": "metric:HEART_RATE_VARIABILITY",
|
||||
"locale": "en"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"effect": "enqueueStatusGeneration",
|
||||
"args": [
|
||||
{
|
||||
"userId": "<id:1>",
|
||||
"metric": "metric:RESTING_HEART_RATE",
|
||||
"locale": "en"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"stored": {
|
||||
"insightsCachedAt": "anchor+0d+12:00:00",
|
||||
"insightsCachedLocale": "en",
|
||||
"cachedPayload": {
|
||||
"summary": "Your tracked metrics held steady over the last 30 days.",
|
||||
"classification": "gut",
|
||||
"findings": [],
|
||||
"correlations": [],
|
||||
"recommendations": [],
|
||||
"dataQuality": {
|
||||
"coverage": "good",
|
||||
"gaps": [],
|
||||
"confidence": "hoch"
|
||||
},
|
||||
"dailyBriefing": {
|
||||
"paragraph": "Your readings held steady this week, with no surprises.",
|
||||
"signalsOfDay": [
|
||||
{
|
||||
"sourceMetric": "weight",
|
||||
"tone": "info",
|
||||
"headline": "Weight is steady",
|
||||
"nudge": "Keep weighing in at the same time each morning.",
|
||||
"delta": null
|
||||
}
|
||||
],
|
||||
"keyFindings": []
|
||||
},
|
||||
"briefingGeneratedAt": "anchor+0d+12:00:00"
|
||||
},
|
||||
"snapshotHash": "4ac15bc271309c63b3b5d1e43a3367f7abdf952d3f4351bb1b22aa364bcb630a",
|
||||
"audit": [
|
||||
{
|
||||
"action": "insights.generate",
|
||||
"details": {
|
||||
"privacyMode": "aggregated",
|
||||
"tokensUsed": 1200,
|
||||
"providerType": "anthropic",
|
||||
"chainProviderType": "anthropic",
|
||||
"fallbackHopCount": 0,
|
||||
"model": "claude-parity"
|
||||
},
|
||||
"ipAddress": null
|
||||
}
|
||||
],
|
||||
"usage": [
|
||||
{
|
||||
"dateKey": "day+0",
|
||||
"totalTokens": 1200,
|
||||
"operatorTokens": 0,
|
||||
"messageCount": 1
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
+62
@@ -0,0 +1,62 @@
|
||||
{
|
||||
"status": 200,
|
||||
"body": {
|
||||
"data": {
|
||||
"insights": {
|
||||
"summary": "Cached summary.",
|
||||
"classification": "gut",
|
||||
"findings": [],
|
||||
"correlations": [],
|
||||
"recommendations": [],
|
||||
"dataQuality": {
|
||||
"coverage": "good",
|
||||
"gaps": [],
|
||||
"confidence": "hoch"
|
||||
},
|
||||
"dailyBriefing": null,
|
||||
"briefingGeneratedAt": "anchor+0d+11:00:00"
|
||||
},
|
||||
"cached": true,
|
||||
"cachedAt": "anchor+0d+11:00:00",
|
||||
"legacyPayload": false
|
||||
},
|
||||
"error": null
|
||||
},
|
||||
"events": [
|
||||
{
|
||||
"status": 200,
|
||||
"action": {
|
||||
"name": "insights.generate"
|
||||
},
|
||||
"meta": {
|
||||
"cached": true,
|
||||
"locale": "en",
|
||||
"rate_limited_fallback": true
|
||||
},
|
||||
"warnings": null,
|
||||
"error": null
|
||||
}
|
||||
],
|
||||
"effects": [],
|
||||
"stored": {
|
||||
"insightsCachedAt": "anchor+0d+11:00:00",
|
||||
"insightsCachedLocale": "en",
|
||||
"cachedPayload": {
|
||||
"summary": "Cached summary.",
|
||||
"classification": "gut",
|
||||
"findings": [],
|
||||
"correlations": [],
|
||||
"recommendations": [],
|
||||
"dataQuality": {
|
||||
"coverage": "good",
|
||||
"gaps": [],
|
||||
"confidence": "hoch"
|
||||
},
|
||||
"dailyBriefing": null,
|
||||
"briefingGeneratedAt": "anchor+0d+11:00:00"
|
||||
},
|
||||
"snapshotHash": null,
|
||||
"audit": [],
|
||||
"usage": []
|
||||
}
|
||||
}
|
||||
+29
@@ -0,0 +1,29 @@
|
||||
{
|
||||
"status": 429,
|
||||
"body": {
|
||||
"data": null,
|
||||
"error": "Maximum 10 insight generations per hour.",
|
||||
"meta": {
|
||||
"errorCode": "http.rate_limited",
|
||||
"requestId": "<requestId>"
|
||||
}
|
||||
},
|
||||
"events": [
|
||||
{
|
||||
"status": 429,
|
||||
"action": null,
|
||||
"meta": null,
|
||||
"warnings": null,
|
||||
"error": null
|
||||
}
|
||||
],
|
||||
"effects": [],
|
||||
"stored": {
|
||||
"insightsCachedAt": null,
|
||||
"insightsCachedLocale": null,
|
||||
"cachedPayload": null,
|
||||
"snapshotHash": null,
|
||||
"audit": [],
|
||||
"usage": []
|
||||
}
|
||||
}
|
||||
+32
@@ -0,0 +1,32 @@
|
||||
{
|
||||
"status": 500,
|
||||
"body": {
|
||||
"data": null,
|
||||
"error": "Interner Serverfehler",
|
||||
"meta": {
|
||||
"errorCode": "http.internal",
|
||||
"requestId": "<requestId>"
|
||||
}
|
||||
},
|
||||
"events": [
|
||||
{
|
||||
"status": 500,
|
||||
"action": null,
|
||||
"meta": null,
|
||||
"warnings": null,
|
||||
"error": {
|
||||
"type": "TypeError",
|
||||
"message": "Invalid authentication tag length: 0"
|
||||
}
|
||||
}
|
||||
],
|
||||
"effects": [],
|
||||
"stored": {
|
||||
"insightsCachedAt": null,
|
||||
"insightsCachedLocale": null,
|
||||
"cachedPayload": null,
|
||||
"snapshotHash": null,
|
||||
"audit": [],
|
||||
"usage": []
|
||||
}
|
||||
}
|
||||
+275
@@ -0,0 +1,275 @@
|
||||
{
|
||||
"status": 200,
|
||||
"body": {
|
||||
"data": {
|
||||
"insights": {
|
||||
"summary": "Your tracked metrics held steady over the last 30 days.",
|
||||
"classification": "gut",
|
||||
"findings": [],
|
||||
"correlations": [],
|
||||
"recommendations": [],
|
||||
"dataQuality": {
|
||||
"coverage": "good",
|
||||
"gaps": [],
|
||||
"confidence": "hoch"
|
||||
},
|
||||
"dailyBriefing": {
|
||||
"paragraph": "Your readings held steady this week, with no surprises.",
|
||||
"signalsOfDay": [
|
||||
{
|
||||
"sourceMetric": "weight",
|
||||
"tone": "info",
|
||||
"headline": "Weight is steady",
|
||||
"nudge": "Keep weighing in at the same time each morning.",
|
||||
"delta": null
|
||||
}
|
||||
],
|
||||
"keyFindings": []
|
||||
},
|
||||
"briefingGeneratedAt": "anchor+0d+12:00:00"
|
||||
},
|
||||
"cached": false,
|
||||
"legacyPayload": false,
|
||||
"briefingOmittedReason": null
|
||||
},
|
||||
"error": null
|
||||
},
|
||||
"events": [
|
||||
{
|
||||
"status": 200,
|
||||
"action": {
|
||||
"name": "insights.generate"
|
||||
},
|
||||
"meta": {
|
||||
"ai_reasoning_effort": "medium",
|
||||
"ai_reasoning_job": "daily_briefing",
|
||||
"ai_reasoning_source": "job",
|
||||
"cached": false,
|
||||
"chainProviderType": "anthropic",
|
||||
"fallbackHopCount": 0,
|
||||
"include_raw": false,
|
||||
"model": "claude-parity",
|
||||
"providerType": "anthropic",
|
||||
"scopes": 13,
|
||||
"since_days": 400,
|
||||
"tokensUsed": 2100
|
||||
},
|
||||
"warnings": null,
|
||||
"error": null
|
||||
}
|
||||
],
|
||||
"effects": [
|
||||
{
|
||||
"effect": "ensureUserMoodRollupsFresh",
|
||||
"args": [
|
||||
"<id:1>"
|
||||
]
|
||||
},
|
||||
{
|
||||
"effect": "provider",
|
||||
"args": [
|
||||
{
|
||||
"surface": "job",
|
||||
"chain": [
|
||||
"anthropic"
|
||||
],
|
||||
"params": {
|
||||
"temperature": 0.3,
|
||||
"maxTokens": 2500,
|
||||
"responseFormat": "json",
|
||||
"timeoutMs": 180000,
|
||||
"reasoning": {
|
||||
"effort": "medium",
|
||||
"summaries": false
|
||||
}
|
||||
},
|
||||
"promptChars": 34773,
|
||||
"promptSha256": "2197bdec8af3ff7034e7b533788ac94d36b64d4edf8d211bbacfac7e2298ad72"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"effect": "enqueueStatusGeneration",
|
||||
"args": [
|
||||
{
|
||||
"userId": "<id:1>",
|
||||
"metric": "blood-pressure",
|
||||
"locale": "en"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"effect": "enqueueStatusGeneration",
|
||||
"args": [
|
||||
{
|
||||
"userId": "<id:1>",
|
||||
"metric": "pulse",
|
||||
"locale": "en"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"effect": "enqueueStatusGeneration",
|
||||
"args": [
|
||||
{
|
||||
"userId": "<id:1>",
|
||||
"metric": "weight",
|
||||
"locale": "en"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"effect": "enqueueStatusGeneration",
|
||||
"args": [
|
||||
{
|
||||
"userId": "<id:1>",
|
||||
"metric": "bmi",
|
||||
"locale": "en"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"effect": "enqueueStatusGeneration",
|
||||
"args": [
|
||||
{
|
||||
"userId": "<id:1>",
|
||||
"metric": "mood",
|
||||
"locale": "en"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"effect": "enqueueStatusGeneration",
|
||||
"args": [
|
||||
{
|
||||
"userId": "<id:1>",
|
||||
"metric": "medication-compliance",
|
||||
"locale": "en"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"effect": "enqueueStatusGeneration",
|
||||
"args": [
|
||||
{
|
||||
"userId": "<id:1>",
|
||||
"metric": "general",
|
||||
"locale": "en"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"effect": "enqueueStatusGeneration",
|
||||
"args": [
|
||||
{
|
||||
"userId": "<id:1>",
|
||||
"metric": "metric:SLEEP_DURATION",
|
||||
"locale": "en"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"effect": "enqueueStatusGeneration",
|
||||
"args": [
|
||||
{
|
||||
"userId": "<id:1>",
|
||||
"metric": "metric:STEPS",
|
||||
"locale": "en"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"effect": "enqueueStatusGeneration",
|
||||
"args": [
|
||||
{
|
||||
"userId": "<id:1>",
|
||||
"metric": "metric:BLOOD_GLUCOSE",
|
||||
"locale": "en"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"effect": "enqueueStatusGeneration",
|
||||
"args": [
|
||||
{
|
||||
"userId": "<id:1>",
|
||||
"metric": "metric:OXYGEN_SATURATION",
|
||||
"locale": "en"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"effect": "enqueueStatusGeneration",
|
||||
"args": [
|
||||
{
|
||||
"userId": "<id:1>",
|
||||
"metric": "metric:HEART_RATE_VARIABILITY",
|
||||
"locale": "en"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"effect": "enqueueStatusGeneration",
|
||||
"args": [
|
||||
{
|
||||
"userId": "<id:1>",
|
||||
"metric": "metric:RESTING_HEART_RATE",
|
||||
"locale": "en"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"stored": {
|
||||
"insightsCachedAt": "anchor+0d+12:00:00",
|
||||
"insightsCachedLocale": "en",
|
||||
"cachedPayload": {
|
||||
"summary": "Your tracked metrics held steady over the last 30 days.",
|
||||
"classification": "gut",
|
||||
"findings": [],
|
||||
"correlations": [],
|
||||
"recommendations": [],
|
||||
"dataQuality": {
|
||||
"coverage": "good",
|
||||
"gaps": [],
|
||||
"confidence": "hoch"
|
||||
},
|
||||
"dailyBriefing": {
|
||||
"paragraph": "Your readings held steady this week, with no surprises.",
|
||||
"signalsOfDay": [
|
||||
{
|
||||
"sourceMetric": "weight",
|
||||
"tone": "info",
|
||||
"headline": "Weight is steady",
|
||||
"nudge": "Keep weighing in at the same time each morning.",
|
||||
"delta": null
|
||||
}
|
||||
],
|
||||
"keyFindings": []
|
||||
},
|
||||
"briefingGeneratedAt": "anchor+0d+12:00:00"
|
||||
},
|
||||
"snapshotHash": "4ac15bc271309c63b3b5d1e43a3367f7abdf952d3f4351bb1b22aa364bcb630a",
|
||||
"audit": [
|
||||
{
|
||||
"action": "insights.generate",
|
||||
"details": {
|
||||
"privacyMode": "aggregated",
|
||||
"tokensUsed": 2100,
|
||||
"providerType": "anthropic",
|
||||
"chainProviderType": "anthropic",
|
||||
"fallbackHopCount": 0,
|
||||
"model": "claude-parity"
|
||||
},
|
||||
"ipAddress": null
|
||||
}
|
||||
],
|
||||
"usage": [
|
||||
{
|
||||
"dateKey": "day+0",
|
||||
"totalTokens": 2100,
|
||||
"operatorTokens": 0,
|
||||
"messageCount": 1
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
+251
@@ -0,0 +1,251 @@
|
||||
{
|
||||
"status": 200,
|
||||
"body": {
|
||||
"data": {
|
||||
"insights": {
|
||||
"summary": "Your tracked metrics held steady over the last 30 days.",
|
||||
"classification": "gut",
|
||||
"findings": [],
|
||||
"correlations": [],
|
||||
"recommendations": [],
|
||||
"dataQuality": {
|
||||
"coverage": "good",
|
||||
"gaps": [],
|
||||
"confidence": "hoch"
|
||||
},
|
||||
"disclaimer": "Consult your doctor.",
|
||||
"briefingGeneratedAt": "anchor+0d+12:00:00"
|
||||
},
|
||||
"cached": false,
|
||||
"legacyPayload": false,
|
||||
"briefingOmittedReason": null
|
||||
},
|
||||
"error": null
|
||||
},
|
||||
"events": [
|
||||
{
|
||||
"status": 200,
|
||||
"action": {
|
||||
"name": "insights.generate"
|
||||
},
|
||||
"meta": {
|
||||
"ai_reasoning_effort": "medium",
|
||||
"ai_reasoning_job": "daily_briefing",
|
||||
"ai_reasoning_source": "job",
|
||||
"cached": false,
|
||||
"chainProviderType": "anthropic",
|
||||
"fallbackHopCount": 0,
|
||||
"include_raw": false,
|
||||
"model": "claude-parity",
|
||||
"providerType": "anthropic",
|
||||
"scopes": 13,
|
||||
"since_days": 400,
|
||||
"tokensUsed": 1200
|
||||
},
|
||||
"warnings": null,
|
||||
"error": null
|
||||
}
|
||||
],
|
||||
"effects": [
|
||||
{
|
||||
"effect": "ensureUserMoodRollupsFresh",
|
||||
"args": [
|
||||
"<id:1>"
|
||||
]
|
||||
},
|
||||
{
|
||||
"effect": "provider",
|
||||
"args": [
|
||||
{
|
||||
"surface": "job",
|
||||
"chain": [
|
||||
"anthropic"
|
||||
],
|
||||
"params": {
|
||||
"temperature": 0.3,
|
||||
"maxTokens": 2500,
|
||||
"responseFormat": "json",
|
||||
"timeoutMs": 180000,
|
||||
"reasoning": {
|
||||
"effort": "medium",
|
||||
"summaries": false
|
||||
}
|
||||
},
|
||||
"promptChars": 34773,
|
||||
"promptSha256": "2197bdec8af3ff7034e7b533788ac94d36b64d4edf8d211bbacfac7e2298ad72"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"effect": "enqueueStatusGeneration",
|
||||
"args": [
|
||||
{
|
||||
"userId": "<id:1>",
|
||||
"metric": "blood-pressure",
|
||||
"locale": "en"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"effect": "enqueueStatusGeneration",
|
||||
"args": [
|
||||
{
|
||||
"userId": "<id:1>",
|
||||
"metric": "pulse",
|
||||
"locale": "en"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"effect": "enqueueStatusGeneration",
|
||||
"args": [
|
||||
{
|
||||
"userId": "<id:1>",
|
||||
"metric": "weight",
|
||||
"locale": "en"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"effect": "enqueueStatusGeneration",
|
||||
"args": [
|
||||
{
|
||||
"userId": "<id:1>",
|
||||
"metric": "bmi",
|
||||
"locale": "en"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"effect": "enqueueStatusGeneration",
|
||||
"args": [
|
||||
{
|
||||
"userId": "<id:1>",
|
||||
"metric": "mood",
|
||||
"locale": "en"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"effect": "enqueueStatusGeneration",
|
||||
"args": [
|
||||
{
|
||||
"userId": "<id:1>",
|
||||
"metric": "medication-compliance",
|
||||
"locale": "en"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"effect": "enqueueStatusGeneration",
|
||||
"args": [
|
||||
{
|
||||
"userId": "<id:1>",
|
||||
"metric": "general",
|
||||
"locale": "en"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"effect": "enqueueStatusGeneration",
|
||||
"args": [
|
||||
{
|
||||
"userId": "<id:1>",
|
||||
"metric": "metric:SLEEP_DURATION",
|
||||
"locale": "en"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"effect": "enqueueStatusGeneration",
|
||||
"args": [
|
||||
{
|
||||
"userId": "<id:1>",
|
||||
"metric": "metric:STEPS",
|
||||
"locale": "en"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"effect": "enqueueStatusGeneration",
|
||||
"args": [
|
||||
{
|
||||
"userId": "<id:1>",
|
||||
"metric": "metric:BLOOD_GLUCOSE",
|
||||
"locale": "en"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"effect": "enqueueStatusGeneration",
|
||||
"args": [
|
||||
{
|
||||
"userId": "<id:1>",
|
||||
"metric": "metric:OXYGEN_SATURATION",
|
||||
"locale": "en"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"effect": "enqueueStatusGeneration",
|
||||
"args": [
|
||||
{
|
||||
"userId": "<id:1>",
|
||||
"metric": "metric:HEART_RATE_VARIABILITY",
|
||||
"locale": "en"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"effect": "enqueueStatusGeneration",
|
||||
"args": [
|
||||
{
|
||||
"userId": "<id:1>",
|
||||
"metric": "metric:RESTING_HEART_RATE",
|
||||
"locale": "en"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"stored": {
|
||||
"insightsCachedAt": "anchor+0d+12:00:00",
|
||||
"insightsCachedLocale": "en",
|
||||
"cachedPayload": {
|
||||
"summary": "Your tracked metrics held steady over the last 30 days.",
|
||||
"classification": "gut",
|
||||
"findings": [],
|
||||
"correlations": [],
|
||||
"recommendations": [],
|
||||
"dataQuality": {
|
||||
"coverage": "good",
|
||||
"gaps": [],
|
||||
"confidence": "hoch"
|
||||
},
|
||||
"disclaimer": "Consult your doctor.",
|
||||
"briefingGeneratedAt": "anchor+0d+12:00:00"
|
||||
},
|
||||
"snapshotHash": "4ac15bc271309c63b3b5d1e43a3367f7abdf952d3f4351bb1b22aa364bcb630a",
|
||||
"audit": [
|
||||
{
|
||||
"action": "insights.generate",
|
||||
"details": {
|
||||
"privacyMode": "aggregated",
|
||||
"tokensUsed": 1200,
|
||||
"providerType": "anthropic",
|
||||
"chainProviderType": "anthropic",
|
||||
"fallbackHopCount": 0,
|
||||
"model": "claude-parity"
|
||||
},
|
||||
"ipAddress": null
|
||||
}
|
||||
],
|
||||
"usage": [
|
||||
{
|
||||
"dateKey": "day+0",
|
||||
"totalTokens": 1200,
|
||||
"operatorTokens": 0,
|
||||
"messageCount": 1
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
+271
@@ -0,0 +1,271 @@
|
||||
{
|
||||
"status": 200,
|
||||
"body": {
|
||||
"data": {
|
||||
"insights": {
|
||||
"summary": "Your tracked metrics held steady over the last 30 days.",
|
||||
"classification": "gut",
|
||||
"findings": [],
|
||||
"correlations": [],
|
||||
"recommendations": [],
|
||||
"dataQuality": {
|
||||
"coverage": "good",
|
||||
"gaps": [],
|
||||
"confidence": "hoch"
|
||||
},
|
||||
"dailyBriefing": {
|
||||
"paragraph": "Your readings held steady this week, with no surprises.",
|
||||
"signalsOfDay": [
|
||||
{
|
||||
"sourceMetric": "weight",
|
||||
"tone": "info",
|
||||
"headline": "Weight is steady",
|
||||
"nudge": "Keep weighing in at the same time each morning.",
|
||||
"delta": null
|
||||
}
|
||||
],
|
||||
"keyFindings": []
|
||||
},
|
||||
"briefingGeneratedAt": "anchor+0d+12:00:00"
|
||||
},
|
||||
"cached": false,
|
||||
"legacyPayload": false,
|
||||
"briefingOmittedReason": null
|
||||
},
|
||||
"error": null
|
||||
},
|
||||
"events": [
|
||||
{
|
||||
"status": 200,
|
||||
"action": {
|
||||
"name": "insights.generate"
|
||||
},
|
||||
"meta": {
|
||||
"ai_reasoning_effort": "off",
|
||||
"ai_reasoning_job": "daily_briefing",
|
||||
"ai_reasoning_usage_level": "frugal",
|
||||
"cached": false,
|
||||
"chainProviderType": "anthropic",
|
||||
"fallbackHopCount": 0,
|
||||
"include_raw": false,
|
||||
"model": "claude-parity",
|
||||
"providerType": "anthropic",
|
||||
"scopes": 13,
|
||||
"since_days": 400,
|
||||
"tokensUsed": 1200
|
||||
},
|
||||
"warnings": null,
|
||||
"error": null
|
||||
}
|
||||
],
|
||||
"effects": [
|
||||
{
|
||||
"effect": "ensureUserMoodRollupsFresh",
|
||||
"args": [
|
||||
"<id:1>"
|
||||
]
|
||||
},
|
||||
{
|
||||
"effect": "provider",
|
||||
"args": [
|
||||
{
|
||||
"surface": "job",
|
||||
"chain": [
|
||||
"anthropic"
|
||||
],
|
||||
"params": {
|
||||
"temperature": 0.3,
|
||||
"maxTokens": 2500,
|
||||
"responseFormat": "json",
|
||||
"timeoutMs": 180000
|
||||
},
|
||||
"promptChars": 39012,
|
||||
"promptSha256": "9b74ece939faf8f6643d894cc718bd3e0925133e2c6c12d98dfb3f9d68c82d61"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"effect": "enqueueStatusGeneration",
|
||||
"args": [
|
||||
{
|
||||
"userId": "<id:1>",
|
||||
"metric": "blood-pressure",
|
||||
"locale": "de"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"effect": "enqueueStatusGeneration",
|
||||
"args": [
|
||||
{
|
||||
"userId": "<id:1>",
|
||||
"metric": "pulse",
|
||||
"locale": "de"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"effect": "enqueueStatusGeneration",
|
||||
"args": [
|
||||
{
|
||||
"userId": "<id:1>",
|
||||
"metric": "weight",
|
||||
"locale": "de"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"effect": "enqueueStatusGeneration",
|
||||
"args": [
|
||||
{
|
||||
"userId": "<id:1>",
|
||||
"metric": "bmi",
|
||||
"locale": "de"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"effect": "enqueueStatusGeneration",
|
||||
"args": [
|
||||
{
|
||||
"userId": "<id:1>",
|
||||
"metric": "mood",
|
||||
"locale": "de"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"effect": "enqueueStatusGeneration",
|
||||
"args": [
|
||||
{
|
||||
"userId": "<id:1>",
|
||||
"metric": "medication-compliance",
|
||||
"locale": "de"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"effect": "enqueueStatusGeneration",
|
||||
"args": [
|
||||
{
|
||||
"userId": "<id:1>",
|
||||
"metric": "general",
|
||||
"locale": "de"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"effect": "enqueueStatusGeneration",
|
||||
"args": [
|
||||
{
|
||||
"userId": "<id:1>",
|
||||
"metric": "metric:SLEEP_DURATION",
|
||||
"locale": "de"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"effect": "enqueueStatusGeneration",
|
||||
"args": [
|
||||
{
|
||||
"userId": "<id:1>",
|
||||
"metric": "metric:STEPS",
|
||||
"locale": "de"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"effect": "enqueueStatusGeneration",
|
||||
"args": [
|
||||
{
|
||||
"userId": "<id:1>",
|
||||
"metric": "metric:BLOOD_GLUCOSE",
|
||||
"locale": "de"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"effect": "enqueueStatusGeneration",
|
||||
"args": [
|
||||
{
|
||||
"userId": "<id:1>",
|
||||
"metric": "metric:OXYGEN_SATURATION",
|
||||
"locale": "de"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"effect": "enqueueStatusGeneration",
|
||||
"args": [
|
||||
{
|
||||
"userId": "<id:1>",
|
||||
"metric": "metric:HEART_RATE_VARIABILITY",
|
||||
"locale": "de"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"effect": "enqueueStatusGeneration",
|
||||
"args": [
|
||||
{
|
||||
"userId": "<id:1>",
|
||||
"metric": "metric:RESTING_HEART_RATE",
|
||||
"locale": "de"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"stored": {
|
||||
"insightsCachedAt": "anchor+0d+12:00:00",
|
||||
"insightsCachedLocale": "de",
|
||||
"cachedPayload": {
|
||||
"summary": "Your tracked metrics held steady over the last 30 days.",
|
||||
"classification": "gut",
|
||||
"findings": [],
|
||||
"correlations": [],
|
||||
"recommendations": [],
|
||||
"dataQuality": {
|
||||
"coverage": "good",
|
||||
"gaps": [],
|
||||
"confidence": "hoch"
|
||||
},
|
||||
"dailyBriefing": {
|
||||
"paragraph": "Your readings held steady this week, with no surprises.",
|
||||
"signalsOfDay": [
|
||||
{
|
||||
"sourceMetric": "weight",
|
||||
"tone": "info",
|
||||
"headline": "Weight is steady",
|
||||
"nudge": "Keep weighing in at the same time each morning.",
|
||||
"delta": null
|
||||
}
|
||||
],
|
||||
"keyFindings": []
|
||||
},
|
||||
"briefingGeneratedAt": "anchor+0d+12:00:00"
|
||||
},
|
||||
"snapshotHash": "c98e2d8e9f112318293af870eaa7c15d342f7f37a12047b0fd4e2a7f66d84676",
|
||||
"audit": [
|
||||
{
|
||||
"action": "insights.generate",
|
||||
"details": {
|
||||
"privacyMode": "aggregated",
|
||||
"tokensUsed": 1200,
|
||||
"providerType": "anthropic",
|
||||
"chainProviderType": "anthropic",
|
||||
"fallbackHopCount": 0,
|
||||
"model": "claude-parity"
|
||||
},
|
||||
"ipAddress": null
|
||||
}
|
||||
],
|
||||
"usage": [
|
||||
{
|
||||
"dateKey": "day+0",
|
||||
"totalTokens": 1200,
|
||||
"operatorTokens": 0,
|
||||
"messageCount": 1
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
+278
@@ -0,0 +1,278 @@
|
||||
{
|
||||
"status": 200,
|
||||
"body": {
|
||||
"data": {
|
||||
"insights": {
|
||||
"summary": "Your tracked metrics held steady over the last 30 days.",
|
||||
"classification": "gut",
|
||||
"findings": [],
|
||||
"correlations": [],
|
||||
"recommendations": [],
|
||||
"dataQuality": {
|
||||
"coverage": "good",
|
||||
"gaps": [],
|
||||
"confidence": "hoch"
|
||||
},
|
||||
"dailyBriefing": {
|
||||
"paragraph": "Your readings held steady this week, with no surprises.",
|
||||
"signalsOfDay": [
|
||||
{
|
||||
"sourceMetric": "weight",
|
||||
"tone": "info",
|
||||
"headline": "Weight is steady",
|
||||
"nudge": "Keep weighing in at the same time each morning.",
|
||||
"delta": null
|
||||
}
|
||||
],
|
||||
"keyFindings": []
|
||||
},
|
||||
"briefingGeneratedAt": "anchor+0d+12:00:00"
|
||||
},
|
||||
"cached": false,
|
||||
"legacyPayload": false,
|
||||
"briefingOmittedReason": null
|
||||
},
|
||||
"error": null
|
||||
},
|
||||
"events": [
|
||||
{
|
||||
"status": 200,
|
||||
"action": {
|
||||
"name": "insights.generate"
|
||||
},
|
||||
"meta": {
|
||||
"ai_reasoning_effort": "medium",
|
||||
"ai_reasoning_job": "daily_briefing",
|
||||
"ai_reasoning_source": "job",
|
||||
"cached": false,
|
||||
"chainProviderType": "anthropic",
|
||||
"fallbackHopCount": 0,
|
||||
"include_raw": false,
|
||||
"insights_features_downgraded": true,
|
||||
"insights_features_hard_downgraded": false,
|
||||
"insights_features_oversize_bytes": 6100000,
|
||||
"model": "claude-parity",
|
||||
"providerType": "anthropic",
|
||||
"scopes": 13,
|
||||
"since_days": 400,
|
||||
"tokensUsed": 1200
|
||||
},
|
||||
"warnings": null,
|
||||
"error": null
|
||||
}
|
||||
],
|
||||
"effects": [
|
||||
{
|
||||
"effect": "ensureUserMoodRollupsFresh",
|
||||
"args": [
|
||||
"<id:1>"
|
||||
]
|
||||
},
|
||||
{
|
||||
"effect": "provider",
|
||||
"args": [
|
||||
{
|
||||
"surface": "job",
|
||||
"chain": [
|
||||
"anthropic"
|
||||
],
|
||||
"params": {
|
||||
"temperature": 0.3,
|
||||
"maxTokens": 2500,
|
||||
"responseFormat": "json",
|
||||
"timeoutMs": 180000,
|
||||
"reasoning": {
|
||||
"effort": "medium",
|
||||
"summaries": false
|
||||
}
|
||||
},
|
||||
"promptChars": 34783,
|
||||
"promptSha256": "2aeca4de2fc6397815465ac4de27a2267fdfc69cd4a607b2e19d7b06502bc040"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"effect": "enqueueStatusGeneration",
|
||||
"args": [
|
||||
{
|
||||
"userId": "<id:1>",
|
||||
"metric": "blood-pressure",
|
||||
"locale": "en"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"effect": "enqueueStatusGeneration",
|
||||
"args": [
|
||||
{
|
||||
"userId": "<id:1>",
|
||||
"metric": "pulse",
|
||||
"locale": "en"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"effect": "enqueueStatusGeneration",
|
||||
"args": [
|
||||
{
|
||||
"userId": "<id:1>",
|
||||
"metric": "weight",
|
||||
"locale": "en"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"effect": "enqueueStatusGeneration",
|
||||
"args": [
|
||||
{
|
||||
"userId": "<id:1>",
|
||||
"metric": "bmi",
|
||||
"locale": "en"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"effect": "enqueueStatusGeneration",
|
||||
"args": [
|
||||
{
|
||||
"userId": "<id:1>",
|
||||
"metric": "mood",
|
||||
"locale": "en"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"effect": "enqueueStatusGeneration",
|
||||
"args": [
|
||||
{
|
||||
"userId": "<id:1>",
|
||||
"metric": "medication-compliance",
|
||||
"locale": "en"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"effect": "enqueueStatusGeneration",
|
||||
"args": [
|
||||
{
|
||||
"userId": "<id:1>",
|
||||
"metric": "general",
|
||||
"locale": "en"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"effect": "enqueueStatusGeneration",
|
||||
"args": [
|
||||
{
|
||||
"userId": "<id:1>",
|
||||
"metric": "metric:SLEEP_DURATION",
|
||||
"locale": "en"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"effect": "enqueueStatusGeneration",
|
||||
"args": [
|
||||
{
|
||||
"userId": "<id:1>",
|
||||
"metric": "metric:STEPS",
|
||||
"locale": "en"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"effect": "enqueueStatusGeneration",
|
||||
"args": [
|
||||
{
|
||||
"userId": "<id:1>",
|
||||
"metric": "metric:BLOOD_GLUCOSE",
|
||||
"locale": "en"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"effect": "enqueueStatusGeneration",
|
||||
"args": [
|
||||
{
|
||||
"userId": "<id:1>",
|
||||
"metric": "metric:OXYGEN_SATURATION",
|
||||
"locale": "en"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"effect": "enqueueStatusGeneration",
|
||||
"args": [
|
||||
{
|
||||
"userId": "<id:1>",
|
||||
"metric": "metric:HEART_RATE_VARIABILITY",
|
||||
"locale": "en"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"effect": "enqueueStatusGeneration",
|
||||
"args": [
|
||||
{
|
||||
"userId": "<id:1>",
|
||||
"metric": "metric:RESTING_HEART_RATE",
|
||||
"locale": "en"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"stored": {
|
||||
"insightsCachedAt": "anchor+0d+12:00:00",
|
||||
"insightsCachedLocale": "en",
|
||||
"cachedPayload": {
|
||||
"summary": "Your tracked metrics held steady over the last 30 days.",
|
||||
"classification": "gut",
|
||||
"findings": [],
|
||||
"correlations": [],
|
||||
"recommendations": [],
|
||||
"dataQuality": {
|
||||
"coverage": "good",
|
||||
"gaps": [],
|
||||
"confidence": "hoch"
|
||||
},
|
||||
"dailyBriefing": {
|
||||
"paragraph": "Your readings held steady this week, with no surprises.",
|
||||
"signalsOfDay": [
|
||||
{
|
||||
"sourceMetric": "weight",
|
||||
"tone": "info",
|
||||
"headline": "Weight is steady",
|
||||
"nudge": "Keep weighing in at the same time each morning.",
|
||||
"delta": null
|
||||
}
|
||||
],
|
||||
"keyFindings": []
|
||||
},
|
||||
"briefingGeneratedAt": "anchor+0d+12:00:00"
|
||||
},
|
||||
"snapshotHash": "4ac15bc271309c63b3b5d1e43a3367f7abdf952d3f4351bb1b22aa364bcb630a",
|
||||
"audit": [
|
||||
{
|
||||
"action": "insights.generate",
|
||||
"details": {
|
||||
"privacyMode": "raw",
|
||||
"tokensUsed": 1200,
|
||||
"providerType": "anthropic",
|
||||
"chainProviderType": "anthropic",
|
||||
"fallbackHopCount": 0,
|
||||
"model": "claude-parity"
|
||||
},
|
||||
"ipAddress": null
|
||||
}
|
||||
],
|
||||
"usage": [
|
||||
{
|
||||
"dateKey": "day+0",
|
||||
"totalTokens": 1200,
|
||||
"operatorTokens": 0,
|
||||
"messageCount": 1
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
+278
@@ -0,0 +1,278 @@
|
||||
{
|
||||
"status": 200,
|
||||
"body": {
|
||||
"data": {
|
||||
"insights": {
|
||||
"summary": "Your tracked metrics held steady over the last 30 days.",
|
||||
"classification": "gut",
|
||||
"findings": [],
|
||||
"correlations": [],
|
||||
"recommendations": [],
|
||||
"dataQuality": {
|
||||
"coverage": "good",
|
||||
"gaps": [],
|
||||
"confidence": "hoch"
|
||||
},
|
||||
"dailyBriefing": {
|
||||
"paragraph": "Your readings held steady this week, with no surprises.",
|
||||
"signalsOfDay": [
|
||||
{
|
||||
"sourceMetric": "weight",
|
||||
"tone": "info",
|
||||
"headline": "Weight is steady",
|
||||
"nudge": "Keep weighing in at the same time each morning.",
|
||||
"delta": null
|
||||
}
|
||||
],
|
||||
"keyFindings": []
|
||||
},
|
||||
"briefingGeneratedAt": "anchor+0d+12:00:00"
|
||||
},
|
||||
"cached": false,
|
||||
"legacyPayload": false,
|
||||
"briefingOmittedReason": null
|
||||
},
|
||||
"error": null
|
||||
},
|
||||
"events": [
|
||||
{
|
||||
"status": 200,
|
||||
"action": {
|
||||
"name": "insights.generate"
|
||||
},
|
||||
"meta": {
|
||||
"ai_reasoning_effort": "medium",
|
||||
"ai_reasoning_job": "daily_briefing",
|
||||
"ai_reasoning_source": "job",
|
||||
"cached": false,
|
||||
"chainProviderType": "anthropic",
|
||||
"fallbackHopCount": 0,
|
||||
"include_raw": false,
|
||||
"insights_features_downgraded": true,
|
||||
"insights_features_hard_downgraded": true,
|
||||
"insights_features_oversize_bytes": 5400000,
|
||||
"model": "claude-parity",
|
||||
"providerType": "anthropic",
|
||||
"scopes": 13,
|
||||
"since_days": 400,
|
||||
"tokensUsed": 1200
|
||||
},
|
||||
"warnings": null,
|
||||
"error": null
|
||||
}
|
||||
],
|
||||
"effects": [
|
||||
{
|
||||
"effect": "ensureUserMoodRollupsFresh",
|
||||
"args": [
|
||||
"<id:1>"
|
||||
]
|
||||
},
|
||||
{
|
||||
"effect": "provider",
|
||||
"args": [
|
||||
{
|
||||
"surface": "job",
|
||||
"chain": [
|
||||
"anthropic"
|
||||
],
|
||||
"params": {
|
||||
"temperature": 0.3,
|
||||
"maxTokens": 2500,
|
||||
"responseFormat": "json",
|
||||
"timeoutMs": 180000,
|
||||
"reasoning": {
|
||||
"effort": "medium",
|
||||
"summaries": false
|
||||
}
|
||||
},
|
||||
"promptChars": 34193,
|
||||
"promptSha256": "f11bae5de41f1344113977970c832df38427bcdf4b24a6f7fb8b05cef899c5af"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"effect": "enqueueStatusGeneration",
|
||||
"args": [
|
||||
{
|
||||
"userId": "<id:1>",
|
||||
"metric": "blood-pressure",
|
||||
"locale": "en"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"effect": "enqueueStatusGeneration",
|
||||
"args": [
|
||||
{
|
||||
"userId": "<id:1>",
|
||||
"metric": "pulse",
|
||||
"locale": "en"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"effect": "enqueueStatusGeneration",
|
||||
"args": [
|
||||
{
|
||||
"userId": "<id:1>",
|
||||
"metric": "weight",
|
||||
"locale": "en"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"effect": "enqueueStatusGeneration",
|
||||
"args": [
|
||||
{
|
||||
"userId": "<id:1>",
|
||||
"metric": "bmi",
|
||||
"locale": "en"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"effect": "enqueueStatusGeneration",
|
||||
"args": [
|
||||
{
|
||||
"userId": "<id:1>",
|
||||
"metric": "mood",
|
||||
"locale": "en"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"effect": "enqueueStatusGeneration",
|
||||
"args": [
|
||||
{
|
||||
"userId": "<id:1>",
|
||||
"metric": "medication-compliance",
|
||||
"locale": "en"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"effect": "enqueueStatusGeneration",
|
||||
"args": [
|
||||
{
|
||||
"userId": "<id:1>",
|
||||
"metric": "general",
|
||||
"locale": "en"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"effect": "enqueueStatusGeneration",
|
||||
"args": [
|
||||
{
|
||||
"userId": "<id:1>",
|
||||
"metric": "metric:SLEEP_DURATION",
|
||||
"locale": "en"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"effect": "enqueueStatusGeneration",
|
||||
"args": [
|
||||
{
|
||||
"userId": "<id:1>",
|
||||
"metric": "metric:STEPS",
|
||||
"locale": "en"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"effect": "enqueueStatusGeneration",
|
||||
"args": [
|
||||
{
|
||||
"userId": "<id:1>",
|
||||
"metric": "metric:BLOOD_GLUCOSE",
|
||||
"locale": "en"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"effect": "enqueueStatusGeneration",
|
||||
"args": [
|
||||
{
|
||||
"userId": "<id:1>",
|
||||
"metric": "metric:OXYGEN_SATURATION",
|
||||
"locale": "en"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"effect": "enqueueStatusGeneration",
|
||||
"args": [
|
||||
{
|
||||
"userId": "<id:1>",
|
||||
"metric": "metric:HEART_RATE_VARIABILITY",
|
||||
"locale": "en"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"effect": "enqueueStatusGeneration",
|
||||
"args": [
|
||||
{
|
||||
"userId": "<id:1>",
|
||||
"metric": "metric:RESTING_HEART_RATE",
|
||||
"locale": "en"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"stored": {
|
||||
"insightsCachedAt": "anchor+0d+12:00:00",
|
||||
"insightsCachedLocale": "en",
|
||||
"cachedPayload": {
|
||||
"summary": "Your tracked metrics held steady over the last 30 days.",
|
||||
"classification": "gut",
|
||||
"findings": [],
|
||||
"correlations": [],
|
||||
"recommendations": [],
|
||||
"dataQuality": {
|
||||
"coverage": "good",
|
||||
"gaps": [],
|
||||
"confidence": "hoch"
|
||||
},
|
||||
"dailyBriefing": {
|
||||
"paragraph": "Your readings held steady this week, with no surprises.",
|
||||
"signalsOfDay": [
|
||||
{
|
||||
"sourceMetric": "weight",
|
||||
"tone": "info",
|
||||
"headline": "Weight is steady",
|
||||
"nudge": "Keep weighing in at the same time each morning.",
|
||||
"delta": null
|
||||
}
|
||||
],
|
||||
"keyFindings": []
|
||||
},
|
||||
"briefingGeneratedAt": "anchor+0d+12:00:00"
|
||||
},
|
||||
"snapshotHash": "11a4fb0ae0188e5a95cbe69124afaccdb326b76ea8e8ad73affbc819255a01cc",
|
||||
"audit": [
|
||||
{
|
||||
"action": "insights.generate",
|
||||
"details": {
|
||||
"privacyMode": "raw",
|
||||
"tokensUsed": 1200,
|
||||
"providerType": "anthropic",
|
||||
"chainProviderType": "anthropic",
|
||||
"fallbackHopCount": 0,
|
||||
"model": "claude-parity"
|
||||
},
|
||||
"ipAddress": null
|
||||
}
|
||||
],
|
||||
"usage": [
|
||||
{
|
||||
"dateKey": "day+0",
|
||||
"totalTokens": 1200,
|
||||
"operatorTokens": 0,
|
||||
"messageCount": 1
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
Loaded 100 of 445 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user