@crvouga/mockingbird-service-posthog 0.2.0 → 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +14 -1
- package/README.md +5 -5
- package/dist/{chunk-KO6LMI55.js → chunk-DME2EREJ.js} +29 -12
- package/dist/chunk-DME2EREJ.js.map +7 -0
- package/dist/{chunk-A34UTVQR.js → chunk-HDWIEPZT.js} +8 -6
- package/dist/chunk-HDWIEPZT.js.map +7 -0
- package/dist/cli.js +2 -2
- package/dist/index.d.ts +132 -104
- package/dist/index.js +3 -3
- package/dist/server.d.ts +233 -177
- package/dist/server.js +2 -2
- package/package.json +7 -2
- package/dist/chunk-A34UTVQR.js.map +0 -7
- package/dist/chunk-KO6LMI55.js.map +0 -7
package/CHANGELOG.md
CHANGED
|
@@ -1,6 +1,19 @@
|
|
|
1
1
|
# Changelog — @crvouga/mockingbird-service-posthog
|
|
2
2
|
|
|
3
|
-
## 0.
|
|
3
|
+
## 1.0.1 (2026-09-26)
|
|
4
|
+
|
|
5
|
+
### Fixes and improvements
|
|
6
|
+
|
|
7
|
+
- take the rejected-request byte count from content-length, never by reading the body ([a0e5fb2](https://github.com/crvouga/mockingbird/commit/a0e5fb2fc80ab725c3552b612f3f091fd6c857fb))
|
|
8
|
+
- reject a present body by media type, and log what a rejected request sent ([12e351a](https://github.com/crvouga/mockingbird/commit/12e351aba53cfb7b41e31a7809419455fc2902eb))
|
|
9
|
+
|
|
10
|
+
## 1.0.0 (2026-09-24)
|
|
11
|
+
|
|
12
|
+
### ⚠️ Breaking changes
|
|
13
|
+
|
|
14
|
+
- vendor branding for every service; purge internal mocks and consumer names ([f689534](https://github.com/crvouga/mockingbird/commit/f6895343543550dafcb7d76b426cae7635e03226))
|
|
15
|
+
|
|
16
|
+
## 0.2.0 (2026-09-23)
|
|
4
17
|
|
|
5
18
|
### Features
|
|
6
19
|
|
package/README.md
CHANGED
|
@@ -33,7 +33,7 @@ Point the app's PostHog host at the mock (port 8795 by default):
|
|
|
33
33
|
| EMR backend | `POSTHOG_HOST`, `POSTHOG_API_KEY` |
|
|
34
34
|
| EMR frontend (browser posthog-js and the server raw fetch) | `NEXT_PUBLIC_POSTHOG_HOST`, `NEXT_PUBLIC_POSTHOG_KEY` |
|
|
35
35
|
| member app | `public-config.json[stage]` host, or `?POSTHOG_HOST=&POSTHOG_API_KEY=` on web (G-P1) |
|
|
36
|
-
|
|
|
36
|
+
| Python supplement-management service | `POSTHOG_HOST` |
|
|
37
37
|
|
|
38
38
|
```bash
|
|
39
39
|
npx mockingbird-posthog serve --port 8795 --import-flags dev
|
|
@@ -68,7 +68,7 @@ await admin("/flags/mobile-smart-links?namespace=w1", undefined, "DELETE") // ab
|
|
|
68
68
|
| --- | --- |
|
|
69
69
|
| `POST /flags/?v=2` (`&config=true`) | posthog-node, posthog-react-native, posthog-js. Body `{token, distinct_id, person_properties?, groups?, flag_keys_to_evaluate?, …}`. Answers `{flags: {<key>: {key, enabled, variant, reason, metadata: {id, version, description, payload?}}}, errorsWhileComputingFlags, requestId, evaluatedAt}`; `payload` is the JSON **string** and only accompanies an enabled flag. `config=true` adds the remote-config fields. |
|
|
70
70
|
| `POST /flags?v=2` | Same route without the trailing slash: the EMR frontend's raw fetch, body `{api_key, distinct_id, person_properties?}`. |
|
|
71
|
-
| `POST /flags/` (no `v`, or `v=1`), `POST /decide/?v=3` | The legacy shape `{featureFlags: {k: bool \| variant}, featureFlagPayloads: {k: "<json>"}, errorsWhileComputingFlags, config, …}` (
|
|
71
|
+
| `POST /flags/` (no `v`, or `v=1`), `POST /decide/?v=3` | The legacy shape `{featureFlags: {k: bool \| variant}, featureFlagPayloads: {k: "<json>"}, errorsWhileComputingFlags, config, …}` (the Python client). `/decide/?v=4` answers the v2 shape. |
|
|
72
72
|
| `GET /array/{token}/config`, `…/config.js` | Remote config: `{supportedCompression: ["gzip","gzip-js"], hasFeatureFlags: true, analytics: {endpoint: "/i/v0/e/"}, sessionRecording: false \| {endpoint: "/s/"}, surveys: false, …}`; the `.js` form sets `window._POSTHOG_REMOTE_CONFIG[token]`. `hasFeatureFlags` is always true (false makes posthog-react-native skip flag loading). |
|
|
73
73
|
| `POST /batch/` | `{api_key, batch: [{event, distinct_id, properties, timestamp, uuid}], sent_at}`, usually `Content-Encoding: gzip`. |
|
|
74
74
|
| `POST /e/`, `POST /i/v0/e/` | One event, an array of events, or `{api_key, batch}`; bodies may be raw gzip (`gzip-js`), base64 `data=` forms (`compression=base64`), or JSON. Events with a known `uuid` are deduplicated. |
|
|
@@ -91,7 +91,7 @@ Every route answers with and without its trailing slash. Errors use PostHog's
|
|
|
91
91
|
- **Targeting:** overrides in order, by exact `distinct_id` or by `person_properties.email`
|
|
92
92
|
(case-insensitive), then the default.
|
|
93
93
|
- **Variants:** a string value is a variant (`enabled: true, variant: "<key>"`); our backend,
|
|
94
|
-
EMR and
|
|
94
|
+
EMR and Python clients all read it as `true`.
|
|
95
95
|
- **Payloads:** any JSON; stored and sent as the JSON string PostHog uses. The backend's
|
|
96
96
|
`getConfig` only accepts object payloads.
|
|
97
97
|
- **Management `filters` → model:** `distinct_id` / `email` property groups become overrides;
|
|
@@ -108,7 +108,7 @@ Every route answers with and without its trailing slash. Errors use PostHog's
|
|
|
108
108
|
| `PUT /__admin/flags` | Bulk: `{flags: {<key>: spec}, replace?: true}` or `[{key, …spec}]`. |
|
|
109
109
|
| `GET /__admin/flags`, `GET /__admin/flags/:key` | The namespace's flags. |
|
|
110
110
|
| `GET /__admin/flags/evaluate?distinct_id=&email=` | What `/flags` answers for that subject, as `{flags: {key: value}}`. |
|
|
111
|
-
| `POST /__admin/flags/import` | `{from: "state.json", env: "dev" \| "prod", project?: "member-app" \| "emr", replace?}` seeds from the bundled copy of
|
|
111
|
+
| `POST /__admin/flags/import` | `{from: "state.json", env: "dev" \| "prod", project?: "member-app" \| "emr", replace?}` seeds from the bundled copy of the consumer app's `docs/feature-flags/state.json` (or pass `state: {flags: […]}` inline). `live` → `true` (or the largest variant), `rollout 0` / `targeted` / `ramping` → `false`, `inactive` / `missing` → absent. |
|
|
112
112
|
| `POST /__admin/flags/bump` | Changes nothing server-side; returns a `generation` counter. The documented moment to clear the app's flag caches (backend `getAllFlagsAndPayloads` 60 s per user; EMR frontend server 60 s / 10 s). |
|
|
113
113
|
| `GET /__admin/events?distinct_id=&event=&since=` | Captured events, oldest first (`since`: epoch ms or ISO, mock clock). `$exception` keeps only `$lib`, `$lib_version`, `$exception_level`, `$session_id`; properties named like message/body/text/content/prompt/stack/trace/html/comment/note are dropped from every event (and from `$set`). |
|
|
114
114
|
| `GET /__admin/recordings` | `{count}` of `/s/` posts. |
|
|
@@ -160,7 +160,7 @@ through it with a credential-mapped personal key instead.
|
|
|
160
160
|
| `parseFlagSpec` | function | Validate an admin flag body into a `FlagSpec`. |
|
|
161
161
|
| `payloadString` | function | A payload as PostHog stores it (JSON string, or `null`). |
|
|
162
162
|
| `specsFromState`, `valueForState` | functions | Map a `state.json` file (or one flag state) to flag specs. |
|
|
163
|
-
| `
|
|
163
|
+
| `ACME_FLAG_STATE` | object | The bundled, trimmed copy of the consumer app's `docs/feature-flags/state.json`. |
|
|
164
164
|
| `decodePostHogBody`, `tokenFromBody` | functions | Undo PostHog body envelopes (gzip, gzip-js, base64 `data=`); find the project token in a body. |
|
|
165
165
|
| `scrubProperties` | function | The event-property scrubbing applied before storage. |
|
|
166
166
|
| `document`, `operationIds`, `supportedOperationIds` | values | The vendored OpenAPI contract and its operation ids. |
|
|
@@ -1183,6 +1183,16 @@ var operationMetadata = (operation) => {
|
|
|
1183
1183
|
|
|
1184
1184
|
// ../core/dist/service.js
|
|
1185
1185
|
import { Hono } from "hono";
|
|
1186
|
+
|
|
1187
|
+
// ../core/dist/validation.js
|
|
1188
|
+
var recorded = /* @__PURE__ */ new WeakMap();
|
|
1189
|
+
var recordedIssues = (request) => recorded.get(request);
|
|
1190
|
+
|
|
1191
|
+
// ../core/dist/service.js
|
|
1192
|
+
var withIssues = (request, response) => {
|
|
1193
|
+
const issues = response.status >= 400 ? recordedIssues(request) : void 0;
|
|
1194
|
+
return issues && issues.length > 0 ? annotateResponse(response, { issues }) : response;
|
|
1195
|
+
};
|
|
1186
1196
|
var defineOperations = (handlers) => handlers;
|
|
1187
1197
|
var OperationRegistryError = class extends Error {
|
|
1188
1198
|
problems;
|
|
@@ -1268,9 +1278,7 @@ var createService = (options) => {
|
|
|
1268
1278
|
now
|
|
1269
1279
|
};
|
|
1270
1280
|
const short = await options.before?.(context);
|
|
1271
|
-
|
|
1272
|
-
return short;
|
|
1273
|
-
return handler(context);
|
|
1281
|
+
return withIssues(request, short ?? await handler(context));
|
|
1274
1282
|
};
|
|
1275
1283
|
app.on(operation.method.toUpperCase(), honoPath(operation.path), route);
|
|
1276
1284
|
}
|
|
@@ -1307,7 +1315,7 @@ var restoreNamespace = (sqlite, namespace, snapshot) => {
|
|
|
1307
1315
|
};
|
|
1308
1316
|
|
|
1309
1317
|
// ../core/dist/version.js
|
|
1310
|
-
var PACKAGE_VERSION = true ? "0.
|
|
1318
|
+
var PACKAGE_VERSION = true ? "1.0.1" : UNRELEASED_VERSION;
|
|
1311
1319
|
|
|
1312
1320
|
// ../core/dist/signing.js
|
|
1313
1321
|
var encoder = new TextEncoder();
|
|
@@ -1750,8 +1758,15 @@ var createRuntime = (options) => {
|
|
|
1750
1758
|
const started = monotonicNow();
|
|
1751
1759
|
const url = new URL(request.url);
|
|
1752
1760
|
const operationId = operationIdFor(request, url.pathname);
|
|
1761
|
+
const contentLength = request.headers.get("content-length");
|
|
1762
|
+
const received = {
|
|
1763
|
+
contentType: request.headers.get("content-type"),
|
|
1764
|
+
bodyBytes: contentLength !== null && /^\d+$/.test(contentLength) ? Number(contentLength) : null,
|
|
1765
|
+
transferEncoding: request.headers.get("transfer-encoding")
|
|
1766
|
+
};
|
|
1753
1767
|
const log = (status, faultId, response2) => {
|
|
1754
1768
|
const noted = response2 ? responseNotes(response2) : void 0;
|
|
1769
|
+
const rejected = status >= 400 && faultId === void 0;
|
|
1755
1770
|
const entry = {
|
|
1756
1771
|
service: options.name,
|
|
1757
1772
|
namespace,
|
|
@@ -1763,7 +1778,9 @@ var createRuntime = (options) => {
|
|
|
1763
1778
|
unmatched: options.document !== void 0 && operationId === void 0,
|
|
1764
1779
|
...faultId !== void 0 ? { faultId } : {},
|
|
1765
1780
|
...noted?.ids && Object.keys(noted.ids).length > 0 ? { ids: noted.ids } : {},
|
|
1766
|
-
...noted?.adopted ? { adopted: true } : {}
|
|
1781
|
+
...noted?.adopted ? { adopted: true } : {},
|
|
1782
|
+
...rejected ? { request: { ...received } } : {},
|
|
1783
|
+
...rejected && noted?.issues && noted.issues.length > 0 ? { issues: noted.issues.map((issue) => ({ ...issue })) } : {}
|
|
1767
1784
|
};
|
|
1768
1785
|
metrics.record(entry);
|
|
1769
1786
|
journal.record({ ...entry, at: new Date(clock.now()).toISOString() });
|
|
@@ -2270,7 +2287,7 @@ var fromFilters = (filters) => {
|
|
|
2270
2287
|
};
|
|
2271
2288
|
|
|
2272
2289
|
// src/generated/openapi.ts
|
|
2273
|
-
var document = JSON.parse(`{"openapi":"3.1.0","info":{"title":"PostHog feature flags, capture and management API (Mockingbird subset)","description":"Stateful mock subset of PostHog: remote flag evaluation (\`/flags\` v2 and the legacy\\n\`/decide\` shape), remote config, event capture (\`/batch/\`, \`/e/\`, \`/i/v0/e/\`), session\\nrecording intake, the posthog-js asset and survey endpoints, and the slice of the\\nmanagement API our tooling and crons call (feature-flag list/create/patch, HogQL query).\\nHand-authored from the wire shapes of posthog-node 5.52.2 / @posthog/core 1.54.0,\\nposthog-js 1.433.2 and our own raw fetches.\\n\\nPaths are written without the trailing slash PostHog uses; the mock answers both\\n(\`/flags/?v=2\` from the SDKs and \`/flags?v=2\` from the EMR frontend's raw fetch).\\nCapture and flag bodies may arrive gzip-compressed (\`Content-Encoding: gzip\`, or raw gzip\\nbytes from posthog-js), base64 (\`data=\` form bodies), or as plain JSON; the contract\\ndeclares the decoded JSON.\\n","version":"1","x-mockingbird-upstream":{"note":"Hand-authored from @posthog/core posthog-core-stateless (getFlags, sendBatch, getRemoteConfig, getSurveysStateless), posthog-js request.ts / posthog-featureflags.ts, and the consumer's posthog-server.adapter.ts, posthog-server.ts (EMR frontend), website-posthog-purchase.sink.ts, posthog-hogql.client.ts and feature-flags-cli."}},"servers":[{"url":"https://us.i.posthog.com"}],"paths":{"/flags":{"post":{"operationId":"EvaluateFlags","description":"Remote flag evaluation. \`v=2\` (what every current SDK sends) answers the \`flags\` detail\\nmap; no \`v\` or \`v=1\` answers the legacy \`featureFlags\`/\`featureFlagPayloads\` maps.\\n\`config=true\` adds the remote-config fields. The project key is \`token\` (SDKs) or\\n\`api_key\` (the EMR frontend's raw fetch).\\n","security":[],"x-mockingbird":{"supported":true,"parity":{"enabled":true,"safe":true}},"parameters":[{"$ref":"#/components/parameters/Version"},{"$ref":"#/components/parameters/Config"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FlagsRequest"}}}},"responses":{"200":{"description":"Evaluated flags","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FlagsResponse"}}}},"400":{"description":"Malformed body or missing distinct_id","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"401":{"description":"No project API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"429":{"description":"Rate limited (fault preset flags_429)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"500":{"description":"Server error (fault preset flags_5xx)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}}}}},"/decide":{"post":{"operationId":"Decide","description":"The legacy endpoint (makor's Python client sends \`POST /decide/?v=3\` with\\n\`{api_key, distinct_id}\`). \`v\` < 4 answers the legacy maps; \`v=4\` the \`flags\` map.\\n","security":[],"x-mockingbird":{"supported":true,"parity":{"enabled":true,"safe":true}},"parameters":[{"$ref":"#/components/parameters/Version"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FlagsRequest"}}}},"responses":{"200":{"description":"Evaluated flags (legacy shape)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FlagsResponse"}}}},"400":{"description":"Malformed body or missing distinct_id","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"401":{"description":"No project API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"429":{"description":"Rate limited (fault preset flags_429)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"500":{"description":"Server error (fault preset flags_5xx)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}}}}},"/array/{token}/config":{"parameters":[{"$ref":"#/components/parameters/TokenPath"}],"get":{"operationId":"GetRemoteConfig","security":[],"x-mockingbird":{"supported":true,"parity":{"enabled":true,"safe":true}},"responses":{"200":{"description":"Remote config (posthog-react-native, @posthog/core)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteConfig"}}}}}}},"/array/{token}/config.js":{"parameters":[{"$ref":"#/components/parameters/TokenPath"}],"get":{"operationId":"GetRemoteConfigScript","security":[],"x-mockingbird":{"supported":true,"parity":{"enabled":true,"safe":true}},"responses":{"200":{"description":"Remote config as a script that sets \`window._POSTHOG_REMOTE_CONFIG[token]\` (posthog-js)","content":{"application/javascript":{"schema":{"type":"string"}}}}}}},"/batch":{"post":{"operationId":"CaptureBatch","description":"posthog-node and posthog-react-native flushes (Content-Encoding: gzip).","security":[],"x-mockingbird":{"supported":true,"parity":{"enabled":true,"safe":false}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchRequest"}}}},"responses":{"200":{"description":"Accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CaptureResponse"}}}},"400":{"description":"Malformed body","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"401":{"description":"No project API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"500":{"description":"Server error (fault)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}}}}},"/e":{"post":{"operationId":"CaptureEvent","description":"One event, an array of events, or \`{api_key, batch}\` (posthog-js).","security":[],"x-mockingbird":{"supported":true,"parity":{"enabled":true,"safe":false}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CaptureRequest"}}}},"responses":{"200":{"description":"Accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CaptureResponse"}}}},"400":{"description":"Malformed body","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"401":{"description":"No project API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"500":{"description":"Server error (fault)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}}}}},"/i/v0/e":{"post":{"operationId":"CaptureEventV0","description":"The capture endpoint remote config advertises (\`analytics.endpoint\`); also our backend's website purchase sink (\`{api_key, event, distinct_id, timestamp, uuid, properties}\`).","security":[],"x-mockingbird":{"supported":true,"parity":{"enabled":true,"safe":false}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CaptureRequest"}}}},"responses":{"200":{"description":"Accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CaptureResponse"}}}},"400":{"description":"Malformed body","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"401":{"description":"No project API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"500":{"description":"Server error (fault)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}}}}},"/s":{"post":{"operationId":"CaptureRecording","description":"Session-recording snapshots; counted, never stored.","security":[],"x-mockingbird":{"supported":true,"parity":{"enabled":true,"safe":false}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CaptureRequest"}}}},"responses":{"200":{"description":"Accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CaptureResponse"}}}}}}},"/static/recorder.js":{"get":{"operationId":"GetRecorderScript","security":[],"x-mockingbird":{"supported":true,"parity":{"enabled":true,"safe":true}},"responses":{"200":{"description":"The session recorder bundle (an inert script here)","content":{"application/javascript":{"schema":{"type":"string"}}}}}}},"/static/{version}/recorder.js":{"parameters":[{"name":"version","in":"path","required":true,"schema":{"type":"string","pattern":"^[0-9]+\\\\.[0-9]+\\\\.[0-9]+$"}}],"get":{"operationId":"GetVersionedRecorderScript","security":[],"x-mockingbird":{"supported":true,"parity":{"enabled":true,"safe":true}},"responses":{"200":{"description":"The versioned session recorder bundle (an inert script here)","content":{"application/javascript":{"schema":{"type":"string"}}}}}}},"/api/surveys":{"get":{"operationId":"ListSurveys","security":[],"x-mockingbird":{"supported":true,"parity":{"enabled":true,"safe":true}},"parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"No surveys","content":{"application/json":{"schema":{"type":"object","required":["surveys"],"properties":{"surveys":{"type":"array","maxItems":0}}}}}},"401":{"description":"No project API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}}}}},"/api/web_experiments":{"get":{"operationId":"ListWebExperiments","security":[],"x-mockingbird":{"supported":true,"parity":{"enabled":true,"safe":true}},"parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"No web experiments","content":{"application/json":{"schema":{"type":"object","required":["experiments"],"properties":{"experiments":{"type":"array","maxItems":0}}}}}},"401":{"description":"No project API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}}}}},"/api/projects/{projectId}/feature_flags":{"parameters":[{"$ref":"#/components/parameters/ProjectId"}],"get":{"operationId":"ListFeatureFlags","security":[{"bearerAuth":[]}],"x-mockingbird":{"supported":true,"parity":{"enabled":true,"safe":true}},"parameters":[{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100}},{"name":"offset","in":"query","schema":{"type":"integer","minimum":0,"maximum":1000}}],"responses":{"200":{"description":"One page of flags (feature-flags-cli follows \`next\`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeatureFlagPage"}}}},"401":{"description":"No personal API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}}}},"post":{"operationId":"CreateFeatureFlag","security":[{"bearerAuth":[]}],"x-mockingbird":{"supported":true,"parity":{"enabled":true,"safe":false}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateFeatureFlagBody"}}}},"responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeatureFlag"}}}},"400":{"description":"Invalid, or the key already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"401":{"description":"No personal API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}}}}},"/api/projects/{projectId}/feature_flags/{flagId}":{"parameters":[{"$ref":"#/components/parameters/ProjectId"},{"name":"flagId","in":"path","required":true,"description":"The flag's numeric id. The mock also accepts the flag key (how self-parity walks reference flags they created, since resource identities are strings).","schema":{"type":"string","x-mockingbird-resource-ref":{"type":"feature_flag","missing":"999999"}}}],"patch":{"operationId":"UpdateFeatureFlag","security":[{"bearerAuth":[]}],"x-mockingbird":{"supported":true,"parity":{"enabled":true,"safe":false}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateFeatureFlagBody"}}}},"responses":{"200":{"description":"Updated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeatureFlag"}}}},"400":{"description":"Invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"401":{"description":"No personal API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"404":{"description":"No such flag","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}}}}},"/api/projects/{projectId}/query":{"parameters":[{"$ref":"#/components/parameters/ProjectId"}],"post":{"operationId":"RunQuery","description":"HogQL (the marketing-metrics crons). Answers canned results set with \`PUT /__admin/settings {\\"queryResults\\": [...]}\`; \`{results: []}\` otherwise.","security":[{"bearerAuth":[]}],"x-mockingbird":{"supported":true,"parity":{"enabled":true,"safe":true}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/QueryRequest"}}}},"responses":{"200":{"description":"Query results","content":{"application/json":{"schema":{"$ref":"#/components/schemas/QueryResponse"}}}},"400":{"description":"Not a HogQL query","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"401":{"description":"No personal API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}}}}}},"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer"}},"parameters":{"Version":{"name":"v","in":"query","schema":{"type":"integer","minimum":1,"maximum":4}},"Config":{"name":"config","in":"query","schema":{"type":"string","enum":["true","false"]}},"TokenPath":{"name":"token","in":"path","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,64}$"}},"TokenQuery":{"name":"token","in":"query","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,64}$"}},"ProjectId":{"name":"projectId","in":"path","required":true,"schema":{"type":"integer","minimum":1,"maximum":999999999}}},"schemas":{"ErrorBody":{"type":"object","required":["type","code","detail"],"properties":{"type":{"type":"string"},"code":{"type":"string"},"detail":{"type":"string"},"attr":{"type":["string","null"]}}},"FlagsRequest":{"type":"object","required":["distinct_id"],"properties":{"token":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,64}$"},"api_key":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,64}$"},"distinct_id":{"type":"string","minLength":1,"maxLength":64},"groups":{"type":"object"},"person_properties":{"type":"object","properties":{"email":{"type":"string","maxLength":120}}},"group_properties":{"type":"object"},"$device_id":{"type":"string","maxLength":64},"$anon_distinct_id":{"type":"string","maxLength":64},"evaluation_contexts":{"type":"array","maxItems":5,"items":{"type":"string","maxLength":40}},"evaluation_runtime":{"type":"string","enum":["server","client","all"]},"flag_keys_to_evaluate":{"type":"array","maxItems":10,"items":{"type":"string","maxLength":64}},"geoip_disable":{"type":"boolean"},"disable_flags":{"type":"boolean"}}},"FlagDetail":{"type":"object","required":["key","enabled","variant","reason","metadata"],"properties":{"key":{"type":"string"},"enabled":{"type":"boolean"},"variant":{"type":["string","null"]},"failed":{"type":"boolean"},"reason":{"type":"object","required":["code","description"],"properties":{"code":{"type":"string"},"condition_index":{"type":["integer","null"]},"description":{"type":"string"}}},"metadata":{"type":"object","required":["id","version"],"properties":{"id":{"type":"integer"},"version":{"type":"integer"},"description":{"type":["string","null"]},"payload":{"type":"string","description":"The payload as a JSON string."}}}}},"FlagsResponse":{"type":"object","required":["errorsWhileComputingFlags"],"properties":{"flags":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/FlagDetail"}},"featureFlags":{"type":"object","additionalProperties":{"type":["boolean","string"]}},"featureFlagPayloads":{"type":"object","additionalProperties":{"type":"string"}},"errorsWhileComputingFlags":{"type":"boolean"},"quotaLimited":{"type":"array","items":{"type":"string"}},"requestId":{"type":"string","x-mockingbird-volatile":{"kind":"id"}},"evaluatedAt":{"type":"integer","x-mockingbird-volatile":{"kind":"timestamp"}},"config":{"type":"object"},"supportedCompression":{"type":"array","items":{"type":"string"}},"sessionRecording":{"oneOf":[{"type":"boolean"},{"type":"object"}]}}},"RemoteConfig":{"type":"object","required":["token","supportedCompression","hasFeatureFlags","analytics","sessionRecording"],"properties":{"token":{"type":"string"},"supportedCompression":{"type":"array","items":{"type":"string"}},"hasFeatureFlags":{"type":"boolean"},"analytics":{"type":"object","required":["endpoint"],"properties":{"endpoint":{"type":"string"}}},"sessionRecording":{"oneOf":[{"type":"boolean"},{"type":"object","required":["endpoint"],"properties":{"endpoint":{"type":"string"}}}]},"surveys":{"type":"boolean"},"heatmaps":{"type":"boolean"},"siteApps":{"type":"array"}}},"CapturedEventBody":{"type":"object","required":["event"],"properties":{"event":{"type":"string","minLength":1,"maxLength":64},"distinct_id":{"type":"string","minLength":1,"maxLength":64},"properties":{"type":"object"},"timestamp":{"type":"string","format":"date-time"},"uuid":{"type":"string","format":"uuid"}}},"BatchRequest":{"type":"object","required":["api_key","batch"],"properties":{"api_key":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,64}$"},"batch":{"type":"array","maxItems":5,"items":{"$ref":"#/components/schemas/CapturedEventBody"}},"sent_at":{"type":"string","format":"date-time"}}},"CaptureRequest":{"type":"object","required":["api_key","event"],"properties":{"api_key":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,64}$"},"event":{"type":"string","minLength":1,"maxLength":64},"distinct_id":{"type":"string","minLength":1,"maxLength":64},"properties":{"type":"object"},"timestamp":{"type":"string","format":"date-time"},"uuid":{"type":"string","format":"uuid"}}},"CaptureResponse":{"type":"object","required":["status"],"properties":{"status":{"oneOf":[{"type":"string"},{"type":"integer"}]}}},"FeatureFlag":{"type":"object","required":["id","key","name","active","filters"],"properties":{"id":{"type":"integer"},"key":{"type":"string","x-mockingbird-resource":{"type":"feature_flag","identity":true}},"name":{"type":"string"},"active":{"type":"boolean"},"deleted":{"type":"boolean"},"created_at":{"type":"string","x-mockingbird-volatile":{"kind":"timestamp"}},"updated_at":{"type":"string","x-mockingbird-volatile":{"kind":"timestamp"}},"version":{"type":"integer"},"filters":{"type":"object","required":["groups"],"properties":{"groups":{"type":"array","items":{"type":"object"}},"multivariate":{"oneOf":[{"type":"null"},{"type":"object"}]},"payloads":{"type":"object"}}}}},"FeatureFlagPage":{"type":"object","required":["count","next","previous","results"],"properties":{"count":{"type":"integer"},"next":{"type":["string","null"],"x-mockingbird-volatile":{"kind":"url"}},"previous":{"type":["string","null"],"x-mockingbird-volatile":{"kind":"url"}},"results":{"type":"array","items":{"$ref":"#/components/schemas/FeatureFlag"}}}},"FlagGroup":{"type":"object","properties":{"properties":{"type":"array","maxItems":2,"items":{"type":"object","required":["key","value"],"properties":{"key":{"type":"string","enum":["distinct_id","email"]},"type":{"type":"string","enum":["person"]},"operator":{"type":"string","enum":["exact"]},"value":{"type":"array","maxItems":3,"items":{"type":"string","minLength":1,"maxLength":40}}}}},"rollout_percentage":{"type":"integer","minimum":0,"maximum":100},"variant":{"type":["string","null"],"maxLength":20}}},"FlagFilters":{"type":"object","properties":{"groups":{"type":"array","maxItems":3,"items":{"$ref":"#/components/schemas/FlagGroup"}},"payloads":{"type":"object","properties":{"true":{"type":"string","maxLength":200}}}}},"CreateFeatureFlagBody":{"type":"object","required":["key"],"properties":{"key":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,64}$"},"name":{"type":"string","maxLength":120},"active":{"type":"boolean"},"filters":{"$ref":"#/components/schemas/FlagFilters"}}},"UpdateFeatureFlagBody":{"type":"object","properties":{"name":{"type":"string","maxLength":120},"active":{"type":"boolean"},"deleted":{"type":"boolean"},"filters":{"$ref":"#/components/schemas/FlagFilters"}}},"QueryRequest":{"type":"object","required":["query"],"properties":{"query":{"type":"object","required":["kind","query"],"properties":{"kind":{"type":"string","enum":["HogQLQuery"]},"query":{"type":"string","minLength":1,"maxLength":500}}}}},"QueryResponse":{"type":"object","required":["results"],"properties":{"results":{"type":"array","items":{"type":"array"}},"columns":{"type":"array","items":{"type":"string"}},"is_cached":{"type":"boolean"}}}}}}`);
|
|
2290
|
+
var document = JSON.parse(`{"openapi":"3.1.0","info":{"title":"PostHog feature flags, capture and management API (Mockingbird subset)","description":"Stateful mock subset of PostHog: remote flag evaluation (\`/flags\` v2 and the legacy\\n\`/decide\` shape), remote config, event capture (\`/batch/\`, \`/e/\`, \`/i/v0/e/\`), session\\nrecording intake, the posthog-js asset and survey endpoints, and the slice of the\\nmanagement API our tooling and crons call (feature-flag list/create/patch, HogQL query).\\nHand-authored from the wire shapes of posthog-node 5.52.2 / @posthog/core 1.54.0,\\nposthog-js 1.433.2 and our own raw fetches.\\n\\nPaths are written without the trailing slash PostHog uses; the mock answers both\\n(\`/flags/?v=2\` from the SDKs and \`/flags?v=2\` from the EMR frontend's raw fetch).\\nCapture and flag bodies may arrive gzip-compressed (\`Content-Encoding: gzip\`, or raw gzip\\nbytes from posthog-js), base64 (\`data=\` form bodies), or as plain JSON; the contract\\ndeclares the decoded JSON.\\n","version":"1","x-mockingbird-upstream":{"note":"Hand-authored from @posthog/core posthog-core-stateless (getFlags, sendBatch, getRemoteConfig, getSurveysStateless), posthog-js request.ts / posthog-featureflags.ts, and the consumer's posthog-server.adapter.ts, posthog-server.ts (EMR frontend), website-posthog-purchase.sink.ts, posthog-hogql.client.ts and feature-flags-cli."}},"servers":[{"url":"https://us.i.posthog.com"}],"paths":{"/flags":{"post":{"operationId":"EvaluateFlags","description":"Remote flag evaluation. \`v=2\` (what every current SDK sends) answers the \`flags\` detail\\nmap; no \`v\` or \`v=1\` answers the legacy \`featureFlags\`/\`featureFlagPayloads\` maps.\\n\`config=true\` adds the remote-config fields. The project key is \`token\` (SDKs) or\\n\`api_key\` (the EMR frontend's raw fetch).\\n","security":[],"x-mockingbird":{"supported":true,"parity":{"enabled":true,"safe":true}},"parameters":[{"$ref":"#/components/parameters/Version"},{"$ref":"#/components/parameters/Config"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FlagsRequest"}}}},"responses":{"200":{"description":"Evaluated flags","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FlagsResponse"}}}},"400":{"description":"Malformed body or missing distinct_id","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"401":{"description":"No project API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"429":{"description":"Rate limited (fault preset flags_429)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"500":{"description":"Server error (fault preset flags_5xx)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}}}}},"/decide":{"post":{"operationId":"Decide","description":"The legacy endpoint (the Python client sends \`POST /decide/?v=3\` with\\n\`{api_key, distinct_id}\`). \`v\` < 4 answers the legacy maps; \`v=4\` the \`flags\` map.\\n","security":[],"x-mockingbird":{"supported":true,"parity":{"enabled":true,"safe":true}},"parameters":[{"$ref":"#/components/parameters/Version"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FlagsRequest"}}}},"responses":{"200":{"description":"Evaluated flags (legacy shape)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FlagsResponse"}}}},"400":{"description":"Malformed body or missing distinct_id","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"401":{"description":"No project API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"429":{"description":"Rate limited (fault preset flags_429)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"500":{"description":"Server error (fault preset flags_5xx)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}}}}},"/array/{token}/config":{"parameters":[{"$ref":"#/components/parameters/TokenPath"}],"get":{"operationId":"GetRemoteConfig","security":[],"x-mockingbird":{"supported":true,"parity":{"enabled":true,"safe":true}},"responses":{"200":{"description":"Remote config (posthog-react-native, @posthog/core)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteConfig"}}}}}}},"/array/{token}/config.js":{"parameters":[{"$ref":"#/components/parameters/TokenPath"}],"get":{"operationId":"GetRemoteConfigScript","security":[],"x-mockingbird":{"supported":true,"parity":{"enabled":true,"safe":true}},"responses":{"200":{"description":"Remote config as a script that sets \`window._POSTHOG_REMOTE_CONFIG[token]\` (posthog-js)","content":{"application/javascript":{"schema":{"type":"string"}}}}}}},"/batch":{"post":{"operationId":"CaptureBatch","description":"posthog-node and posthog-react-native flushes (Content-Encoding: gzip).","security":[],"x-mockingbird":{"supported":true,"parity":{"enabled":true,"safe":false}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchRequest"}}}},"responses":{"200":{"description":"Accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CaptureResponse"}}}},"400":{"description":"Malformed body","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"401":{"description":"No project API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"500":{"description":"Server error (fault)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}}}}},"/e":{"post":{"operationId":"CaptureEvent","description":"One event, an array of events, or \`{api_key, batch}\` (posthog-js).","security":[],"x-mockingbird":{"supported":true,"parity":{"enabled":true,"safe":false}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CaptureRequest"}}}},"responses":{"200":{"description":"Accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CaptureResponse"}}}},"400":{"description":"Malformed body","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"401":{"description":"No project API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"500":{"description":"Server error (fault)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}}}}},"/i/v0/e":{"post":{"operationId":"CaptureEventV0","description":"The capture endpoint remote config advertises (\`analytics.endpoint\`); also our backend's website purchase sink (\`{api_key, event, distinct_id, timestamp, uuid, properties}\`).","security":[],"x-mockingbird":{"supported":true,"parity":{"enabled":true,"safe":false}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CaptureRequest"}}}},"responses":{"200":{"description":"Accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CaptureResponse"}}}},"400":{"description":"Malformed body","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"401":{"description":"No project API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"500":{"description":"Server error (fault)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}}}}},"/s":{"post":{"operationId":"CaptureRecording","description":"Session-recording snapshots; counted, never stored.","security":[],"x-mockingbird":{"supported":true,"parity":{"enabled":true,"safe":false}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CaptureRequest"}}}},"responses":{"200":{"description":"Accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CaptureResponse"}}}}}}},"/static/recorder.js":{"get":{"operationId":"GetRecorderScript","security":[],"x-mockingbird":{"supported":true,"parity":{"enabled":true,"safe":true}},"responses":{"200":{"description":"The session recorder bundle (an inert script here)","content":{"application/javascript":{"schema":{"type":"string"}}}}}}},"/static/{version}/recorder.js":{"parameters":[{"name":"version","in":"path","required":true,"schema":{"type":"string","pattern":"^[0-9]+\\\\.[0-9]+\\\\.[0-9]+$"}}],"get":{"operationId":"GetVersionedRecorderScript","security":[],"x-mockingbird":{"supported":true,"parity":{"enabled":true,"safe":true}},"responses":{"200":{"description":"The versioned session recorder bundle (an inert script here)","content":{"application/javascript":{"schema":{"type":"string"}}}}}}},"/api/surveys":{"get":{"operationId":"ListSurveys","security":[],"x-mockingbird":{"supported":true,"parity":{"enabled":true,"safe":true}},"parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"No surveys","content":{"application/json":{"schema":{"type":"object","required":["surveys"],"properties":{"surveys":{"type":"array","maxItems":0}}}}}},"401":{"description":"No project API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}}}}},"/api/web_experiments":{"get":{"operationId":"ListWebExperiments","security":[],"x-mockingbird":{"supported":true,"parity":{"enabled":true,"safe":true}},"parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"No web experiments","content":{"application/json":{"schema":{"type":"object","required":["experiments"],"properties":{"experiments":{"type":"array","maxItems":0}}}}}},"401":{"description":"No project API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}}}}},"/api/projects/{projectId}/feature_flags":{"parameters":[{"$ref":"#/components/parameters/ProjectId"}],"get":{"operationId":"ListFeatureFlags","security":[{"bearerAuth":[]}],"x-mockingbird":{"supported":true,"parity":{"enabled":true,"safe":true}},"parameters":[{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100}},{"name":"offset","in":"query","schema":{"type":"integer","minimum":0,"maximum":1000}}],"responses":{"200":{"description":"One page of flags (feature-flags-cli follows \`next\`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeatureFlagPage"}}}},"401":{"description":"No personal API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}}}},"post":{"operationId":"CreateFeatureFlag","security":[{"bearerAuth":[]}],"x-mockingbird":{"supported":true,"parity":{"enabled":true,"safe":false}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateFeatureFlagBody"}}}},"responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeatureFlag"}}}},"400":{"description":"Invalid, or the key already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"401":{"description":"No personal API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}}}}},"/api/projects/{projectId}/feature_flags/{flagId}":{"parameters":[{"$ref":"#/components/parameters/ProjectId"},{"name":"flagId","in":"path","required":true,"description":"The flag's numeric id. The mock also accepts the flag key (how self-parity walks reference flags they created, since resource identities are strings).","schema":{"type":"string","x-mockingbird-resource-ref":{"type":"feature_flag","missing":"999999"}}}],"patch":{"operationId":"UpdateFeatureFlag","security":[{"bearerAuth":[]}],"x-mockingbird":{"supported":true,"parity":{"enabled":true,"safe":false}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateFeatureFlagBody"}}}},"responses":{"200":{"description":"Updated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeatureFlag"}}}},"400":{"description":"Invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"401":{"description":"No personal API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"404":{"description":"No such flag","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}}}}},"/api/projects/{projectId}/query":{"parameters":[{"$ref":"#/components/parameters/ProjectId"}],"post":{"operationId":"RunQuery","description":"HogQL (the marketing-metrics crons). Answers canned results set with \`PUT /__admin/settings {\\"queryResults\\": [...]}\`; \`{results: []}\` otherwise.","security":[{"bearerAuth":[]}],"x-mockingbird":{"supported":true,"parity":{"enabled":true,"safe":true}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/QueryRequest"}}}},"responses":{"200":{"description":"Query results","content":{"application/json":{"schema":{"$ref":"#/components/schemas/QueryResponse"}}}},"400":{"description":"Not a HogQL query","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}},"401":{"description":"No personal API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}}}}}}},"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer"}},"parameters":{"Version":{"name":"v","in":"query","schema":{"type":"integer","minimum":1,"maximum":4}},"Config":{"name":"config","in":"query","schema":{"type":"string","enum":["true","false"]}},"TokenPath":{"name":"token","in":"path","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,64}$"}},"TokenQuery":{"name":"token","in":"query","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,64}$"}},"ProjectId":{"name":"projectId","in":"path","required":true,"schema":{"type":"integer","minimum":1,"maximum":999999999}}},"schemas":{"ErrorBody":{"type":"object","required":["type","code","detail"],"properties":{"type":{"type":"string"},"code":{"type":"string"},"detail":{"type":"string"},"attr":{"type":["string","null"]}}},"FlagsRequest":{"type":"object","required":["distinct_id"],"properties":{"token":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,64}$"},"api_key":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,64}$"},"distinct_id":{"type":"string","minLength":1,"maxLength":64},"groups":{"type":"object"},"person_properties":{"type":"object","properties":{"email":{"type":"string","maxLength":120}}},"group_properties":{"type":"object"},"$device_id":{"type":"string","maxLength":64},"$anon_distinct_id":{"type":"string","maxLength":64},"evaluation_contexts":{"type":"array","maxItems":5,"items":{"type":"string","maxLength":40}},"evaluation_runtime":{"type":"string","enum":["server","client","all"]},"flag_keys_to_evaluate":{"type":"array","maxItems":10,"items":{"type":"string","maxLength":64}},"geoip_disable":{"type":"boolean"},"disable_flags":{"type":"boolean"}}},"FlagDetail":{"type":"object","required":["key","enabled","variant","reason","metadata"],"properties":{"key":{"type":"string"},"enabled":{"type":"boolean"},"variant":{"type":["string","null"]},"failed":{"type":"boolean"},"reason":{"type":"object","required":["code","description"],"properties":{"code":{"type":"string"},"condition_index":{"type":["integer","null"]},"description":{"type":"string"}}},"metadata":{"type":"object","required":["id","version"],"properties":{"id":{"type":"integer"},"version":{"type":"integer"},"description":{"type":["string","null"]},"payload":{"type":"string","description":"The payload as a JSON string."}}}}},"FlagsResponse":{"type":"object","required":["errorsWhileComputingFlags"],"properties":{"flags":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/FlagDetail"}},"featureFlags":{"type":"object","additionalProperties":{"type":["boolean","string"]}},"featureFlagPayloads":{"type":"object","additionalProperties":{"type":"string"}},"errorsWhileComputingFlags":{"type":"boolean"},"quotaLimited":{"type":"array","items":{"type":"string"}},"requestId":{"type":"string","x-mockingbird-volatile":{"kind":"id"}},"evaluatedAt":{"type":"integer","x-mockingbird-volatile":{"kind":"timestamp"}},"config":{"type":"object"},"supportedCompression":{"type":"array","items":{"type":"string"}},"sessionRecording":{"oneOf":[{"type":"boolean"},{"type":"object"}]}}},"RemoteConfig":{"type":"object","required":["token","supportedCompression","hasFeatureFlags","analytics","sessionRecording"],"properties":{"token":{"type":"string"},"supportedCompression":{"type":"array","items":{"type":"string"}},"hasFeatureFlags":{"type":"boolean"},"analytics":{"type":"object","required":["endpoint"],"properties":{"endpoint":{"type":"string"}}},"sessionRecording":{"oneOf":[{"type":"boolean"},{"type":"object","required":["endpoint"],"properties":{"endpoint":{"type":"string"}}}]},"surveys":{"type":"boolean"},"heatmaps":{"type":"boolean"},"siteApps":{"type":"array"}}},"CapturedEventBody":{"type":"object","required":["event"],"properties":{"event":{"type":"string","minLength":1,"maxLength":64},"distinct_id":{"type":"string","minLength":1,"maxLength":64},"properties":{"type":"object"},"timestamp":{"type":"string","format":"date-time"},"uuid":{"type":"string","format":"uuid"}}},"BatchRequest":{"type":"object","required":["api_key","batch"],"properties":{"api_key":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,64}$"},"batch":{"type":"array","maxItems":5,"items":{"$ref":"#/components/schemas/CapturedEventBody"}},"sent_at":{"type":"string","format":"date-time"}}},"CaptureRequest":{"type":"object","required":["api_key","event"],"properties":{"api_key":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,64}$"},"event":{"type":"string","minLength":1,"maxLength":64},"distinct_id":{"type":"string","minLength":1,"maxLength":64},"properties":{"type":"object"},"timestamp":{"type":"string","format":"date-time"},"uuid":{"type":"string","format":"uuid"}}},"CaptureResponse":{"type":"object","required":["status"],"properties":{"status":{"oneOf":[{"type":"string"},{"type":"integer"}]}}},"FeatureFlag":{"type":"object","required":["id","key","name","active","filters"],"properties":{"id":{"type":"integer"},"key":{"type":"string","x-mockingbird-resource":{"type":"feature_flag","identity":true}},"name":{"type":"string"},"active":{"type":"boolean"},"deleted":{"type":"boolean"},"created_at":{"type":"string","x-mockingbird-volatile":{"kind":"timestamp"}},"updated_at":{"type":"string","x-mockingbird-volatile":{"kind":"timestamp"}},"version":{"type":"integer"},"filters":{"type":"object","required":["groups"],"properties":{"groups":{"type":"array","items":{"type":"object"}},"multivariate":{"oneOf":[{"type":"null"},{"type":"object"}]},"payloads":{"type":"object"}}}}},"FeatureFlagPage":{"type":"object","required":["count","next","previous","results"],"properties":{"count":{"type":"integer"},"next":{"type":["string","null"],"x-mockingbird-volatile":{"kind":"url"}},"previous":{"type":["string","null"],"x-mockingbird-volatile":{"kind":"url"}},"results":{"type":"array","items":{"$ref":"#/components/schemas/FeatureFlag"}}}},"FlagGroup":{"type":"object","properties":{"properties":{"type":"array","maxItems":2,"items":{"type":"object","required":["key","value"],"properties":{"key":{"type":"string","enum":["distinct_id","email"]},"type":{"type":"string","enum":["person"]},"operator":{"type":"string","enum":["exact"]},"value":{"type":"array","maxItems":3,"items":{"type":"string","minLength":1,"maxLength":40}}}}},"rollout_percentage":{"type":"integer","minimum":0,"maximum":100},"variant":{"type":["string","null"],"maxLength":20}}},"FlagFilters":{"type":"object","properties":{"groups":{"type":"array","maxItems":3,"items":{"$ref":"#/components/schemas/FlagGroup"}},"payloads":{"type":"object","properties":{"true":{"type":"string","maxLength":200}}}}},"CreateFeatureFlagBody":{"type":"object","required":["key"],"properties":{"key":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,64}$"},"name":{"type":"string","maxLength":120},"active":{"type":"boolean"},"filters":{"$ref":"#/components/schemas/FlagFilters"}}},"UpdateFeatureFlagBody":{"type":"object","properties":{"name":{"type":"string","maxLength":120},"active":{"type":"boolean"},"deleted":{"type":"boolean"},"filters":{"$ref":"#/components/schemas/FlagFilters"}}},"QueryRequest":{"type":"object","required":["query"],"properties":{"query":{"type":"object","required":["kind","query"],"properties":{"kind":{"type":"string","enum":["HogQLQuery"]},"query":{"type":"string","minLength":1,"maxLength":500}}}}},"QueryResponse":{"type":"object","required":["results"],"properties":{"results":{"type":"array","items":{"type":"array"}},"columns":{"type":"array","items":{"type":"string"}},"is_cached":{"type":"boolean"}}}}}}`);
|
|
2274
2291
|
var operationIds = ["EvaluateFlags", "Decide", "GetRemoteConfig", "GetRemoteConfigScript", "CaptureBatch", "CaptureEvent", "CaptureEventV0", "CaptureRecording", "GetRecorderScript", "GetVersionedRecorderScript", "ListSurveys", "ListWebExperiments", "ListFeatureFlags", "CreateFeatureFlag", "UpdateFeatureFlag", "RunQuery"];
|
|
2275
2292
|
var supportedOperationIds = ["EvaluateFlags", "Decide", "GetRemoteConfig", "GetRemoteConfigScript", "CaptureBatch", "CaptureEvent", "CaptureEventV0", "CaptureRecording", "GetRecorderScript", "GetVersionedRecorderScript", "ListSurveys", "ListWebExperiments", "ListFeatureFlags", "CreateFeatureFlag", "UpdateFeatureFlag", "RunQuery"];
|
|
2276
2293
|
|
|
@@ -2360,8 +2377,8 @@ var PostHogState = class {
|
|
|
2360
2377
|
};
|
|
2361
2378
|
|
|
2362
2379
|
// src/flag-state-fixture.ts
|
|
2363
|
-
var
|
|
2364
|
-
`{"generatedAt":"2026-09-14T22:32:06.078Z","flags":[{"flag":"advanced-hormone-pdfs","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"rollout 0","variants":[]}]}},{"flag":"ai-chat-bloodwork-scheduling","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"targeted","variants":[]}]}},{"flag":"ai-chat-books-mp-visits","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"rollout 0","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"rollout 0","variants":[]}]}},{"flag":"ai-chat-care-thread-writes","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"targeted","variants":[]}]}},{"flag":"ai-chat-expanded-reads","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"targeted","variants":[]}]}},{"flag":"ai-chat-genetics","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"live","variants":[]}]}},{"flag":"ai-chat-meal-planner","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"inactive","variants":[]}]}},{"flag":"ai-chat-model-sonnet-4-6","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"live","variants":[]}]}},{"flag":"ai-chat-proactive","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"targeted","variants":[]}]}},{"flag":"ai-chat-rx-prescreen","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"targeted","variants":[]}]}},{"flag":"ai-chat-supplement-writes","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"targeted","variants":[]}]}},{"flag":"ai-chat-tracker-writes","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"inactive","variants":[]}]}},{"flag":"ai-chat-voice","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"inactive","variants":[]}]}},{"flag":"ai-chat-wearable-actions","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"targeted","variants":[]}]}},{"flag":"ai-chatbot","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"live","variants":[]}]}},{"flag":"app-intro-walkthrough","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"live","variants":[]}]}},{"flag":"b2b-member-tagging","posthog":{"dev":[{"project":"emr","projectId":495610,"state":"live","variants":[]},{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"emr","projectId":495618,"state":"live","variants":[]},{"project":"member-app","projectId":339666,"state":"live","variants":[]}]}},{"flag":"backend-analytics","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"live","variants":[]}]}},{"flag":"billing-renewal-reminders-enabled","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"inactive","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"inactive","variants":[]}]}},{"flag":"bloodwork-duplicate-draw-enabled","posthog":{"dev":[],"prod":[{"project":"member-app","projectId":339666,"state":"inactive","variants":[]}]}},{"flag":"blueprint-modify-v2","posthog":{"dev":[],"prod":[{"project":"emr","projectId":495618,"state":"live","variants":[]},{"project":"member-app","projectId":339666,"state":"live","variants":[]}]}},{"flag":"blueprint-tab","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[]}},{"flag":"body-scan-native-capture","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"inactive","variants":[]}]}},{"flag":"body-scan-setup-redesign","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"inactive","variants":[]}]}},{"flag":"body-scanning","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"inactive","variants":[]}]}},{"flag":"cancellation-adverse-reaction-note","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"inactive","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"inactive","variants":[]}]}},{"flag":"care-hub-bug-tracking","posthog":{"dev":[{"project":"emr","projectId":495610,"state":"live","variants":[]}],"prod":[]}},{"flag":"care-hub-multi-channel-send","posthog":{"dev":[{"project":"emr","projectId":495610,"state":"live","variants":[]}],"prod":[]}},{"flag":"chat-auto-approve","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[]}},{"flag":"chat-ui-refresh","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[]}},{"flag":"chat-voice-auto-listen","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[]}},{"flag":"chat-web-fab","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"targeted","variants":[]}]}},{"flag":"checkout-addon-upsell","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[{"variant":"bump","rolloutPercentage":25},{"variant":"control","rolloutPercentage":25},{"variant":"post","rolloutPercentage":25},{"variant":"step","rolloutPercentage":25}]}],"prod":[]}},{"flag":"checkout-summary-refresh","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[]}},{"flag":"cio-blood-draw-date-sync-enabled","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"inactive","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"inactive","variants":[]}]}},{"flag":"cio-first-delivery-signals-enabled","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"inactive","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"inactive","variants":[]}]}},{"flag":"cio-lifecycle-sync-enabled","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"targeted","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"live","variants":[]}]}},{"flag":"cio-p2-events-enabled","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"live","variants":[]}]}},{"flag":"cultureapothecary-checkout","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[{"variant":"checkout","rolloutPercentage":0},{"variant":"control","rolloutPercentage":100}]}],"prod":[]}},{"flag":"customer-io-enabled","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"targeted","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"live","variants":[]}]}},{"flag":"customer-io-notifications","posthog":{"dev":[],"prod":[{"project":"member-app","projectId":339666,"state":"targeted","variants":[]}]}},{"flag":"customerio-p0-events","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"live","variants":[]}]}},{"flag":"cycle-tracking","posthog":{"dev":[],"prod":[{"project":"member-app","projectId":339666,"state":"targeted","variants":[]}]}},{"flag":"daily-check-in-home-screen-card","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"live","variants":[]}]}},{"flag":"daily-rings","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"targeted","variants":[]}]}},{"flag":"daily-tracker-bundle","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"ramping","variants":[]}]}},{"flag":"developer-ui","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"targeted","variants":[]}]}},{"flag":"document-preview-proxy","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"targeted","variants":[]}]}},{"flag":"dynamic-banner-legacy-member-app","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"live","variants":[]}]}},{"flag":"dynamic-banner-member-app","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"inactive","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"inactive","variants":[]}]}},{"flag":"emr-lifefile-credentials","posthog":{"dev":[],"prod":[{"project":"emr","projectId":495618,"state":"live","variants":[]}]}},{"flag":"emr-lifefile-draft-tasks","posthog":{"dev":[],"prod":[{"project":"emr","projectId":495618,"state":"live","variants":[]}]}},{"flag":"emr-live-notifications","posthog":{"dev":[{"project":"emr","projectId":495610,"state":"live","variants":[]}],"prod":[{"project":"emr","projectId":495618,"state":"targeted","variants":[]}]}},{"flag":"emr-order-itemized-invoices","posthog":{"dev":[{"project":"emr","projectId":495610,"state":"live","variants":[]}],"prod":[{"project":"emr","projectId":495618,"state":"live","variants":[]}]}},{"flag":"emr-request-intake","posthog":{"dev":[{"project":"emr","projectId":495610,"state":"live","variants":[]}],"prod":[{"project":"emr","projectId":495618,"state":"inactive","variants":[]}]}},{"flag":"emr-vpi-credentials","posthog":{"dev":[],"prod":[{"project":"emr","projectId":495618,"state":"live","variants":[]}]}},{"flag":"emr-wearables","posthog":{"dev":[{"project":"emr","projectId":495610,"state":"live","variants":[]}],"prod":[{"project":"emr","projectId":495618,"state":"live","variants":[]}]}},{"flag":"ensure-order-failure-visibility","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"live","variants":[]}]}},{"flag":"erx-portal-agent-fulfillment-enabled","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"inactive","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"live","variants":[]}]}},{"flag":"family-at-checkout","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"inactive","variants":[]}]}},{"flag":"family-plans","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[]}},{"flag":"family-plans-adults","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"targeted","variants":[]}]}},{"flag":"family-plans-kids","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[]}},{"flag":"flex-hsa-fsa-payments","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"targeted","variants":[]}]}},{"flag":"flex-membership-switch","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"inactive","variants":[]}]}},{"flag":"force-update","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"inactive","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"live","variants":[]}]}},{"flag":"formbricks-contract-fail-open","posthog":{"dev":[],"prod":[{"project":"member-app","projectId":339666,"state":"live","variants":[]}]}},{"flag":"forms-answer-reuse","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"inactive","variants":[]}],"prod":[]}},{"flag":"forms-profile-ingestion","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"inactive","variants":[]}],"prod":[]}},{"flag":"fullscript-labs","posthog":{"dev":[{"project":"emr","projectId":495610,"state":"live","variants":[]}],"prod":[{"project":"emr","projectId":495618,"state":"inactive","variants":[]}]}},{"flag":"fullscript-labs-erx","posthog":{"dev":[{"project":"emr","projectId":495610,"state":"live","variants":[]}],"prod":[{"project":"emr","projectId":495618,"state":"inactive","variants":[]}]}},{"flag":"gamification-legacy-member-app","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"inactive","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"inactive","variants":[]}]}},{"flag":"gamification-v2-circle-stats","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"targeted","variants":[]}]}},{"flag":"gamification-v2-circles","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"targeted","variants":[]}]}},{"flag":"gamification-v2-core","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"targeted","variants":[]}]}},{"flag":"gamification-v2-leagues","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"inactive","variants":[]}],"prod":[]}},{"flag":"genetic-report-pdf-download-button","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"live","variants":[]}]}},{"flag":"genetic-report-results","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"live","variants":[]}]}},{"flag":"genetic-test-view-results","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"live","variants":[]}]}},{"flag":"genomics-order-attention-modal","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"live","variants":[]}]}},{"flag":"genomics-preorder","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"live","variants":[]}]}},{"flag":"geviti-pdf-actions","posthog":{"dev":[{"project":"emr","projectId":495610,"state":"live","variants":[]}],"prod":[{"project":"emr","projectId":495618,"state":"live","variants":[]}]}},{"flag":"geviti-pdf-enabled","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"live","variants":[]}]}},{"flag":"geviti-pdf-shadow","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"rollout 0","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"rollout 0","variants":[]}]}},{"flag":"health-checkin-dead-end","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"live","variants":[]}]}},{"flag":"health-learning","posthog":{"dev":[{"project":"emr","projectId":495610,"state":"live","variants":[]}],"prod":[{"project":"emr","projectId":495618,"state":"inactive","variants":[]}]}},{"flag":"healthkit-steps-sync","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"targeted","variants":[]}]}},{"flag":"home-marketing-banner","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"targeted","variants":[]}]}},{"flag":"hormone-staging-control","posthog":{"dev":[{"project":"emr","projectId":495610,"state":"live","variants":[]}],"prod":[{"project":"emr","projectId":495618,"state":"rollout 0","variants":[]}]}},{"flag":"in-house-chat","posthog":{"dev":[{"project":"emr","projectId":495610,"state":"live","variants":[]},{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"emr","projectId":495618,"state":"targeted","variants":[]},{"project":"member-app","projectId":339666,"state":"targeted","variants":[]}]}},{"flag":"in-page-checkout","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"live","variants":[]}]}},{"flag":"inhouse-forms-assignments","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[]}},{"flag":"inhouse-forms-shim","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"inactive","variants":[]}]}},{"flag":"inhouse-forms-store","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"inactive","variants":[]}]}},{"flag":"kids-care-plans","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[]}},{"flag":"kids-waitlist","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"live","variants":[]}]}},{"flag":"kids-waitlist-joined","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"targeted","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"targeted","variants":[]}]}},{"flag":"kill-bill-enabled","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"inactive","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"targeted","variants":[]}]}},{"flag":"kill-bill-flex-memberships","posthog":{"dev":[],"prod":[{"project":"member-app","projectId":339666,"state":"targeted","variants":[]}]}},{"flag":"lifecycle-events-enabled","posthog":{"dev":[],"prod":[{"project":"member-app","projectId":339666,"state":"live","variants":[]}]}},{"flag":"living-profile-blueprint-source","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"inactive","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"inactive","variants":[]}]}},{"flag":"living-profile-chat-updates","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"inactive","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"inactive","variants":[]}]}},{"flag":"living-profile-checkins","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"inactive","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"inactive","variants":[]}]}},{"flag":"living-profile-classic-submit","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"inactive","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"inactive","variants":[]}]}},{"flag":"living-profile-store","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"targeted","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"live","variants":[]}]}},{"flag":"maintenance-mode","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"inactive","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"inactive","variants":[]}]}},{"flag":"makor-intro-walkthrough","posthog":{"dev":[],"prod":[{"project":"member-app","projectId":339666,"state":"targeted","variants":[]}]}},{"flag":"meal-planner","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"inactive","variants":[]}]}},{"flag":"member-item-hiding","posthog":{"dev":[],"prod":[{"project":"member-app","projectId":339666,"state":"targeted","variants":[]}]}},{"flag":"member-rx-peptides","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"inactive","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"targeted","variants":[]}]}},{"flag":"member-success-polish","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"live","variants":[]}]}},{"flag":"mobile-smart-links","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"targeted","variants":[]}]}},{"flag":"mobile-ui-rework","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"targeted","variants":[]}]}},{"flag":"new-member-app-rollout","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"inactive","variants":[]}]}},{"flag":"notif-bloodwork-review-nudges-enabled","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"inactive","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"inactive","variants":[]}]}},{"flag":"notif-progress-onboarding-triggers-enabled","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"inactive","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"inactive","variants":[]}]}},{"flag":"notif-rx-last-day-reminder-enabled","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"inactive","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"inactive","variants":[]}]}},{"flag":"notif-shipping-billing-triggers-enabled","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"inactive","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"inactive","variants":[]}]}},{"flag":"nova-sonic-health-intake","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"targeted","variants":[]}]}},{"flag":"nutrition-analysis-ranking","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"inactive","variants":[]}]}},{"flag":"nutrition-food-search","posthog":{"dev":[],"prod":[{"project":"member-app","projectId":339666,"state":"targeted","variants":[]}]}},{"flag":"nutrition-history-nav","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"targeted","variants":[]}]}},{"flag":"nutrition-logging","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"targeted","variants":[]}]}},{"flag":"nutrition-ui-polish","posthog":{"dev":[],"prod":[{"project":"member-app","projectId":339666,"state":"targeted","variants":[]}]}},{"flag":"odx-pdf-hidden","posthog":{"dev":[{"project":"emr","projectId":495610,"state":"live","variants":[]}],"prod":[{"project":"emr","projectId":495618,"state":"live","variants":[]}]}},{"flag":"paid-tier-intro-walkthrough","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"inactive","variants":[{"variant":"control","rolloutPercentage":50},{"variant":"test","rolloutPercentage":50}]}],"prod":[{"project":"member-app","projectId":339666,"state":"inactive","variants":[{"variant":"control","rolloutPercentage":50},{"variant":"test","rolloutPercentage":50}]}]}},{"flag":"patient-details-genomics-tab","posthog":{"dev":[{"project":"emr","projectId":495610,"state":"live","variants":[]}],"prod":[{"project":"emr","projectId":495618,"state":"targeted","variants":[]}]}},{"flag":"payment-history-v2","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"live","variants":[]}]}},{"flag":"pdf-multi-draw-comparative","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"live","variants":[]}]}},{"flag":"prepaid-checkout","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"inactive","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"rollout 0","variants":[]}]}},{"flag":"prescription-management","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"live","variants":[]}]}},{"flag":"protocol-tracking","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"targeted","variants":[]}]}},{"flag":"reconcile-by-user-polling","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"live","variants":[]}]}},{"flag":"referral-link-unavailable-guard","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"live","variants":[]}]}},{"flag":"rings-v2","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"targeted","variants":[]}]}},{"flag":"rx-coupons","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"inactive","variants":[]}]}},{"flag":"rx-education-videos","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"targeted","variants":[]}]}},{"flag":"rx-failed-payment-retry","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"live","variants":[]}]}},{"flag":"rx-followup-labs","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"live","variants":[]}]}},{"flag":"rx-protocol-tab","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"live","variants":[]}]}},{"flag":"rx-provider-editing","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"emr","projectId":495618,"state":"live","variants":[]},{"project":"member-app","projectId":339666,"state":"live","variants":[]}]}},{"flag":"screen-time-shielding","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"targeted","variants":[]}]}},{"flag":"session-replay","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"live","variants":[]}]}},{"flag":"shop-coupons","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"inactive","variants":[]}]}},{"flag":"shop-gi-360-free","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"rollout 0","variants":[]}]}},{"flag":"shop-walk-in-serviceability-gate","posthog":{"dev":[],"prod":[{"project":"member-app","projectId":339666,"state":"inactive","variants":[]}]}},{"flag":"signup-analytics-enqueue-enabled","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"rollout 0","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"live","variants":[]}]}},{"flag":"smart-link-click-reporting","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"targeted","variants":[]}]}},{"flag":"supplement-lock-timeout-alerts","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"live","variants":[]}]}},{"flag":"test-url-2-checkout","posthog":{"dev":[],"prod":[{"project":"member-app","projectId":339666,"state":"live","variants":[{"variant":"bump","rolloutPercentage":0},{"variant":"control","rolloutPercentage":100},{"variant":"no_addons","rolloutPercentage":0},{"variant":"post","rolloutPercentage":0},{"variant":"step","rolloutPercentage":0}]}]}},{"flag":"ui-polish","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"targeted","variants":[]}]}},{"flag":"unified-upload-flow","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"targeted","variants":[]}]}},{"flag":"visit-reason-tree","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"targeted","variants":[]}]}},{"flag":"walk-in-setup-flow","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"inactive","variants":[]}]}},{"flag":"wellness-primary-routing","posthog":{"dev":[],"prod":[{"project":"emr","projectId":495618,"state":"live","variants":[]}]}}]}`
|
|
2380
|
+
var ACME_FLAG_STATE = JSON.parse(
|
|
2381
|
+
`{"generatedAt":"2026-09-14T22:32:06.078Z","flags":[{"flag":"advanced-hormone-pdfs","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"rollout 0","variants":[]}]}},{"flag":"ai-chat-bloodwork-scheduling","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"targeted","variants":[]}]}},{"flag":"ai-chat-books-mp-visits","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"rollout 0","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"rollout 0","variants":[]}]}},{"flag":"ai-chat-care-thread-writes","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"targeted","variants":[]}]}},{"flag":"ai-chat-expanded-reads","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"targeted","variants":[]}]}},{"flag":"ai-chat-genetics","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"live","variants":[]}]}},{"flag":"ai-chat-meal-planner","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"inactive","variants":[]}]}},{"flag":"ai-chat-model-sonnet-4-6","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"live","variants":[]}]}},{"flag":"ai-chat-proactive","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"targeted","variants":[]}]}},{"flag":"ai-chat-rx-prescreen","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"targeted","variants":[]}]}},{"flag":"ai-chat-supplement-writes","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"targeted","variants":[]}]}},{"flag":"ai-chat-tracker-writes","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"inactive","variants":[]}]}},{"flag":"ai-chat-voice","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"inactive","variants":[]}]}},{"flag":"ai-chat-wearable-actions","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"targeted","variants":[]}]}},{"flag":"ai-chatbot","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"live","variants":[]}]}},{"flag":"app-intro-walkthrough","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"live","variants":[]}]}},{"flag":"b2b-member-tagging","posthog":{"dev":[{"project":"emr","projectId":495610,"state":"live","variants":[]},{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"emr","projectId":495618,"state":"live","variants":[]},{"project":"member-app","projectId":339666,"state":"live","variants":[]}]}},{"flag":"backend-analytics","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"live","variants":[]}]}},{"flag":"billing-renewal-reminders-enabled","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"inactive","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"inactive","variants":[]}]}},{"flag":"bloodwork-duplicate-draw-enabled","posthog":{"dev":[],"prod":[{"project":"member-app","projectId":339666,"state":"inactive","variants":[]}]}},{"flag":"blueprint-modify-v2","posthog":{"dev":[],"prod":[{"project":"emr","projectId":495618,"state":"live","variants":[]},{"project":"member-app","projectId":339666,"state":"live","variants":[]}]}},{"flag":"blueprint-tab","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[]}},{"flag":"body-scan-native-capture","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"inactive","variants":[]}]}},{"flag":"body-scan-setup-redesign","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"inactive","variants":[]}]}},{"flag":"body-scanning","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"inactive","variants":[]}]}},{"flag":"cancellation-adverse-reaction-note","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"inactive","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"inactive","variants":[]}]}},{"flag":"care-hub-bug-tracking","posthog":{"dev":[{"project":"emr","projectId":495610,"state":"live","variants":[]}],"prod":[]}},{"flag":"care-hub-multi-channel-send","posthog":{"dev":[{"project":"emr","projectId":495610,"state":"live","variants":[]}],"prod":[]}},{"flag":"chat-auto-approve","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[]}},{"flag":"chat-ui-refresh","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[]}},{"flag":"chat-voice-auto-listen","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[]}},{"flag":"chat-web-fab","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"targeted","variants":[]}]}},{"flag":"checkout-addon-upsell","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[{"variant":"bump","rolloutPercentage":25},{"variant":"control","rolloutPercentage":25},{"variant":"post","rolloutPercentage":25},{"variant":"step","rolloutPercentage":25}]}],"prod":[]}},{"flag":"checkout-summary-refresh","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[]}},{"flag":"cio-blood-draw-date-sync-enabled","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"inactive","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"inactive","variants":[]}]}},{"flag":"cio-first-delivery-signals-enabled","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"inactive","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"inactive","variants":[]}]}},{"flag":"cio-lifecycle-sync-enabled","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"targeted","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"live","variants":[]}]}},{"flag":"cio-p2-events-enabled","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"live","variants":[]}]}},{"flag":"cultureapothecary-checkout","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[{"variant":"checkout","rolloutPercentage":0},{"variant":"control","rolloutPercentage":100}]}],"prod":[]}},{"flag":"customer-io-enabled","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"targeted","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"live","variants":[]}]}},{"flag":"customer-io-notifications","posthog":{"dev":[],"prod":[{"project":"member-app","projectId":339666,"state":"targeted","variants":[]}]}},{"flag":"customerio-p0-events","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"live","variants":[]}]}},{"flag":"cycle-tracking","posthog":{"dev":[],"prod":[{"project":"member-app","projectId":339666,"state":"targeted","variants":[]}]}},{"flag":"daily-check-in-home-screen-card","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"live","variants":[]}]}},{"flag":"daily-rings","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"targeted","variants":[]}]}},{"flag":"daily-tracker-bundle","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"ramping","variants":[]}]}},{"flag":"developer-ui","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"targeted","variants":[]}]}},{"flag":"document-preview-proxy","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"targeted","variants":[]}]}},{"flag":"dynamic-banner-legacy-member-app","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"live","variants":[]}]}},{"flag":"dynamic-banner-member-app","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"inactive","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"inactive","variants":[]}]}},{"flag":"emr-lifefile-credentials","posthog":{"dev":[],"prod":[{"project":"emr","projectId":495618,"state":"live","variants":[]}]}},{"flag":"emr-lifefile-draft-tasks","posthog":{"dev":[],"prod":[{"project":"emr","projectId":495618,"state":"live","variants":[]}]}},{"flag":"emr-live-notifications","posthog":{"dev":[{"project":"emr","projectId":495610,"state":"live","variants":[]}],"prod":[{"project":"emr","projectId":495618,"state":"targeted","variants":[]}]}},{"flag":"emr-order-itemized-invoices","posthog":{"dev":[{"project":"emr","projectId":495610,"state":"live","variants":[]}],"prod":[{"project":"emr","projectId":495618,"state":"live","variants":[]}]}},{"flag":"emr-request-intake","posthog":{"dev":[{"project":"emr","projectId":495610,"state":"live","variants":[]}],"prod":[{"project":"emr","projectId":495618,"state":"inactive","variants":[]}]}},{"flag":"emr-vpi-credentials","posthog":{"dev":[],"prod":[{"project":"emr","projectId":495618,"state":"live","variants":[]}]}},{"flag":"emr-wearables","posthog":{"dev":[{"project":"emr","projectId":495610,"state":"live","variants":[]}],"prod":[{"project":"emr","projectId":495618,"state":"live","variants":[]}]}},{"flag":"ensure-order-failure-visibility","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"live","variants":[]}]}},{"flag":"erx-auto-fulfillment-enabled","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"inactive","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"live","variants":[]}]}},{"flag":"family-at-checkout","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"inactive","variants":[]}]}},{"flag":"family-plans","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[]}},{"flag":"family-plans-adults","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"targeted","variants":[]}]}},{"flag":"family-plans-kids","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[]}},{"flag":"flex-hsa-fsa-payments","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"targeted","variants":[]}]}},{"flag":"flex-membership-switch","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"inactive","variants":[]}]}},{"flag":"force-update","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"inactive","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"live","variants":[]}]}},{"flag":"formbricks-contract-fail-open","posthog":{"dev":[],"prod":[{"project":"member-app","projectId":339666,"state":"live","variants":[]}]}},{"flag":"forms-answer-reuse","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"inactive","variants":[]}],"prod":[]}},{"flag":"forms-profile-ingestion","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"inactive","variants":[]}],"prod":[]}},{"flag":"fullscript-labs","posthog":{"dev":[{"project":"emr","projectId":495610,"state":"live","variants":[]}],"prod":[{"project":"emr","projectId":495618,"state":"inactive","variants":[]}]}},{"flag":"fullscript-labs-erx","posthog":{"dev":[{"project":"emr","projectId":495610,"state":"live","variants":[]}],"prod":[{"project":"emr","projectId":495618,"state":"inactive","variants":[]}]}},{"flag":"gamification-legacy-member-app","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"inactive","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"inactive","variants":[]}]}},{"flag":"gamification-v2-circle-stats","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"targeted","variants":[]}]}},{"flag":"gamification-v2-circles","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"targeted","variants":[]}]}},{"flag":"gamification-v2-core","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"targeted","variants":[]}]}},{"flag":"gamification-v2-leagues","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"inactive","variants":[]}],"prod":[]}},{"flag":"genetic-report-pdf-download-button","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"live","variants":[]}]}},{"flag":"genetic-report-results","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"live","variants":[]}]}},{"flag":"genetic-test-view-results","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"live","variants":[]}]}},{"flag":"genomics-order-attention-modal","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"live","variants":[]}]}},{"flag":"genomics-preorder","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"live","variants":[]}]}},{"flag":"acme-pdf-actions","posthog":{"dev":[{"project":"emr","projectId":495610,"state":"live","variants":[]}],"prod":[{"project":"emr","projectId":495618,"state":"live","variants":[]}]}},{"flag":"acme-pdf-enabled","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"live","variants":[]}]}},{"flag":"acme-pdf-shadow","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"rollout 0","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"rollout 0","variants":[]}]}},{"flag":"health-checkin-dead-end","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"live","variants":[]}]}},{"flag":"health-learning","posthog":{"dev":[{"project":"emr","projectId":495610,"state":"live","variants":[]}],"prod":[{"project":"emr","projectId":495618,"state":"inactive","variants":[]}]}},{"flag":"healthkit-steps-sync","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"targeted","variants":[]}]}},{"flag":"home-marketing-banner","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"targeted","variants":[]}]}},{"flag":"hormone-staging-control","posthog":{"dev":[{"project":"emr","projectId":495610,"state":"live","variants":[]}],"prod":[{"project":"emr","projectId":495618,"state":"rollout 0","variants":[]}]}},{"flag":"in-house-chat","posthog":{"dev":[{"project":"emr","projectId":495610,"state":"live","variants":[]},{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"emr","projectId":495618,"state":"targeted","variants":[]},{"project":"member-app","projectId":339666,"state":"targeted","variants":[]}]}},{"flag":"in-page-checkout","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"live","variants":[]}]}},{"flag":"inhouse-forms-assignments","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[]}},{"flag":"inhouse-forms-shim","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"inactive","variants":[]}]}},{"flag":"inhouse-forms-store","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"inactive","variants":[]}]}},{"flag":"kids-care-plans","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[]}},{"flag":"kids-waitlist","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"live","variants":[]}]}},{"flag":"kids-waitlist-joined","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"targeted","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"targeted","variants":[]}]}},{"flag":"kill-bill-enabled","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"inactive","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"targeted","variants":[]}]}},{"flag":"kill-bill-flex-memberships","posthog":{"dev":[],"prod":[{"project":"member-app","projectId":339666,"state":"targeted","variants":[]}]}},{"flag":"lifecycle-events-enabled","posthog":{"dev":[],"prod":[{"project":"member-app","projectId":339666,"state":"live","variants":[]}]}},{"flag":"living-profile-blueprint-source","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"inactive","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"inactive","variants":[]}]}},{"flag":"living-profile-chat-updates","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"inactive","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"inactive","variants":[]}]}},{"flag":"living-profile-checkins","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"inactive","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"inactive","variants":[]}]}},{"flag":"living-profile-classic-submit","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"inactive","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"inactive","variants":[]}]}},{"flag":"living-profile-store","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"targeted","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"live","variants":[]}]}},{"flag":"maintenance-mode","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"inactive","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"inactive","variants":[]}]}},{"flag":"assistant-intro-walkthrough","posthog":{"dev":[],"prod":[{"project":"member-app","projectId":339666,"state":"targeted","variants":[]}]}},{"flag":"meal-planner","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"inactive","variants":[]}]}},{"flag":"member-item-hiding","posthog":{"dev":[],"prod":[{"project":"member-app","projectId":339666,"state":"targeted","variants":[]}]}},{"flag":"member-rx-peptides","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"inactive","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"targeted","variants":[]}]}},{"flag":"member-success-polish","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"live","variants":[]}]}},{"flag":"mobile-smart-links","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"targeted","variants":[]}]}},{"flag":"mobile-ui-rework","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"targeted","variants":[]}]}},{"flag":"new-member-app-rollout","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"inactive","variants":[]}]}},{"flag":"notif-bloodwork-review-nudges-enabled","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"inactive","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"inactive","variants":[]}]}},{"flag":"notif-progress-onboarding-triggers-enabled","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"inactive","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"inactive","variants":[]}]}},{"flag":"notif-rx-last-day-reminder-enabled","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"inactive","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"inactive","variants":[]}]}},{"flag":"notif-shipping-billing-triggers-enabled","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"inactive","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"inactive","variants":[]}]}},{"flag":"nova-sonic-health-intake","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"targeted","variants":[]}]}},{"flag":"nutrition-analysis-ranking","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"inactive","variants":[]}]}},{"flag":"nutrition-food-search","posthog":{"dev":[],"prod":[{"project":"member-app","projectId":339666,"state":"targeted","variants":[]}]}},{"flag":"nutrition-history-nav","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"targeted","variants":[]}]}},{"flag":"nutrition-logging","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"targeted","variants":[]}]}},{"flag":"nutrition-ui-polish","posthog":{"dev":[],"prod":[{"project":"member-app","projectId":339666,"state":"targeted","variants":[]}]}},{"flag":"odx-pdf-hidden","posthog":{"dev":[{"project":"emr","projectId":495610,"state":"live","variants":[]}],"prod":[{"project":"emr","projectId":495618,"state":"live","variants":[]}]}},{"flag":"paid-tier-intro-walkthrough","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"inactive","variants":[{"variant":"control","rolloutPercentage":50},{"variant":"test","rolloutPercentage":50}]}],"prod":[{"project":"member-app","projectId":339666,"state":"inactive","variants":[{"variant":"control","rolloutPercentage":50},{"variant":"test","rolloutPercentage":50}]}]}},{"flag":"patient-details-genomics-tab","posthog":{"dev":[{"project":"emr","projectId":495610,"state":"live","variants":[]}],"prod":[{"project":"emr","projectId":495618,"state":"targeted","variants":[]}]}},{"flag":"payment-history-v2","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"live","variants":[]}]}},{"flag":"pdf-multi-draw-comparative","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"live","variants":[]}]}},{"flag":"prepaid-checkout","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"inactive","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"rollout 0","variants":[]}]}},{"flag":"prescription-management","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"live","variants":[]}]}},{"flag":"protocol-tracking","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"targeted","variants":[]}]}},{"flag":"reconcile-by-user-polling","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"live","variants":[]}]}},{"flag":"referral-link-unavailable-guard","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"live","variants":[]}]}},{"flag":"rings-v2","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"targeted","variants":[]}]}},{"flag":"rx-coupons","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"inactive","variants":[]}]}},{"flag":"rx-education-videos","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"targeted","variants":[]}]}},{"flag":"rx-failed-payment-retry","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"live","variants":[]}]}},{"flag":"rx-followup-labs","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"live","variants":[]}]}},{"flag":"rx-protocol-tab","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"live","variants":[]}]}},{"flag":"rx-provider-editing","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"emr","projectId":495618,"state":"live","variants":[]},{"project":"member-app","projectId":339666,"state":"live","variants":[]}]}},{"flag":"screen-time-shielding","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"targeted","variants":[]}]}},{"flag":"session-replay","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"live","variants":[]}]}},{"flag":"shop-coupons","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"inactive","variants":[]}]}},{"flag":"shop-gi-360-free","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"rollout 0","variants":[]}]}},{"flag":"shop-walk-in-serviceability-gate","posthog":{"dev":[],"prod":[{"project":"member-app","projectId":339666,"state":"inactive","variants":[]}]}},{"flag":"signup-analytics-enqueue-enabled","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"rollout 0","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"live","variants":[]}]}},{"flag":"smart-link-click-reporting","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"targeted","variants":[]}]}},{"flag":"supplement-lock-timeout-alerts","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"live","variants":[]}]}},{"flag":"test-url-2-checkout","posthog":{"dev":[],"prod":[{"project":"member-app","projectId":339666,"state":"live","variants":[{"variant":"bump","rolloutPercentage":0},{"variant":"control","rolloutPercentage":100},{"variant":"no_addons","rolloutPercentage":0},{"variant":"post","rolloutPercentage":0},{"variant":"step","rolloutPercentage":0}]}]}},{"flag":"ui-polish","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"targeted","variants":[]}]}},{"flag":"unified-upload-flow","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"targeted","variants":[]}]}},{"flag":"visit-reason-tree","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"targeted","variants":[]}]}},{"flag":"walk-in-setup-flow","posthog":{"dev":[{"project":"member-app","projectId":338122,"state":"live","variants":[]}],"prod":[{"project":"member-app","projectId":339666,"state":"inactive","variants":[]}]}},{"flag":"wellness-primary-routing","posthog":{"dev":[],"prod":[{"project":"emr","projectId":495618,"state":"live","variants":[]}]}}]}`
|
|
2365
2382
|
);
|
|
2366
2383
|
|
|
2367
2384
|
// src/import.ts
|
|
@@ -2512,7 +2529,7 @@ var adminRoutes = (runtime) => {
|
|
|
2512
2529
|
if (isRecord6(input.state) && Array.isArray(input.state.flags)) {
|
|
2513
2530
|
file = input.state;
|
|
2514
2531
|
} else if (from === "state.json") {
|
|
2515
|
-
file =
|
|
2532
|
+
file = ACME_FLAG_STATE;
|
|
2516
2533
|
} else {
|
|
2517
2534
|
return adminError3(400, 'from must be "state.json" (the bundled copy) or pass "state"');
|
|
2518
2535
|
}
|
|
@@ -2588,7 +2605,7 @@ var createRuntime2 = (options = {}) => {
|
|
|
2588
2605
|
...options.flags ? { flags: options.flags } : {},
|
|
2589
2606
|
...options.settings ? { settings: options.settings } : {}
|
|
2590
2607
|
}),
|
|
2591
|
-
describe: () => ({ flagsImportedFrom:
|
|
2608
|
+
describe: () => ({ flagsImportedFrom: ACME_FLAG_STATE.generatedAt ?? null }),
|
|
2592
2609
|
admin: adminRoutes
|
|
2593
2610
|
});
|
|
2594
2611
|
const inner = runtime.fetch;
|
|
@@ -2933,7 +2950,7 @@ export {
|
|
|
2933
2950
|
document,
|
|
2934
2951
|
operationIds,
|
|
2935
2952
|
supportedOperationIds,
|
|
2936
|
-
|
|
2953
|
+
ACME_FLAG_STATE,
|
|
2937
2954
|
valueForState,
|
|
2938
2955
|
specsFromState,
|
|
2939
2956
|
POSTHOG_PRESETS,
|
|
@@ -2942,4 +2959,4 @@ export {
|
|
|
2942
2959
|
scrubProperties,
|
|
2943
2960
|
PostHogAPI
|
|
2944
2961
|
};
|
|
2945
|
-
//# sourceMappingURL=chunk-
|
|
2962
|
+
//# sourceMappingURL=chunk-DME2EREJ.js.map
|