@fabricorg/experiments-api-protocol 0.1.5 → 0.1.6

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/dist/index.cjs CHANGED
@@ -306,6 +306,15 @@ var TestRunListInput = zod.z.object({
306
306
  var TestRunListResponse = zod.z.object({
307
307
  runs: zod.z.array(TestRun.omit({ cases: true }))
308
308
  });
309
+ var HarnessOperatorDefinition = zod.z.object({
310
+ name: zod.z.enum(["quality-status", "srm-watcher", "analyst"]),
311
+ kind: zod.z.literal("job"),
312
+ description: zod.z.string(),
313
+ mutates: zod.z.boolean()
314
+ });
315
+ var HarnessOperatorListResponse = zod.z.array(HarnessOperatorDefinition);
316
+ var HarnessJobInput = zod.z.record(zod.z.unknown()).default({});
317
+ var HarnessJobResponse = zod.z.record(zod.z.unknown());
309
318
  var endpoints = {
310
319
  "tenants.me": {
311
320
  method: "GET",
@@ -618,6 +627,22 @@ var endpoints = {
618
627
  response: TestRun,
619
628
  mutates: false,
620
629
  requiresRole: "viewer"
630
+ },
631
+ "harness.definitions": {
632
+ method: "GET",
633
+ path: "/v1/orgs/:orgId/harness/admin/agents",
634
+ params: Empty,
635
+ response: HarnessOperatorListResponse,
636
+ mutates: false,
637
+ requiresRole: "viewer"
638
+ },
639
+ "harness.invokeJob": {
640
+ method: "POST",
641
+ path: "/v1/orgs/:orgId/harness/jobs/:jobName",
642
+ params: HarnessJobInput,
643
+ response: HarnessJobResponse,
644
+ mutates: true,
645
+ requiresRole: "experimenter"
621
646
  }
622
647
  };
623
648
  function buildPath(template, pathParams) {
@@ -665,6 +690,10 @@ exports.FeatureListResponse = FeatureListResponse;
665
690
  exports.FeatureRuleListResponse = FeatureRuleListResponse;
666
691
  exports.GovernanceSettings = GovernanceSettings;
667
692
  exports.GovernanceStatusResponse = GovernanceStatusResponse;
693
+ exports.HarnessJobInput = HarnessJobInput;
694
+ exports.HarnessJobResponse = HarnessJobResponse;
695
+ exports.HarnessOperatorDefinition = HarnessOperatorDefinition;
696
+ exports.HarnessOperatorListResponse = HarnessOperatorListResponse;
668
697
  exports.InvokeActionInput = InvokeActionInput;
669
698
  exports.InvokeActionResponse = InvokeActionResponse;
670
699
  exports.ManifestKey = ManifestKey;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/endpoints.ts","../src/errors.ts"],"names":["z","Project","Property","Environment","Feature","FeatureRule","EnvironmentPublication","Experiment","ExperimentState","ExperimentSpecBase","ExperimentId","ActionId","CreateProjectInput","CreatePropertyInput","CreateEnvironmentInput","CreateFeatureInput","CreateFeatureRuleInput"],"mappings":"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","file":"index.cjs","sourcesContent":["import {\n ActionId,\n CreateEnvironmentInput,\n CreateFeatureInput,\n CreateFeatureRuleInput,\n CreateProjectInput,\n CreatePropertyInput,\n Environment,\n EnvironmentPublication,\n Experiment,\n ExperimentId,\n ExperimentSpec,\n ExperimentSpecBase,\n ExperimentState,\n Feature,\n FeatureRule,\n Project,\n Property,\n} from '@fabricorg/experiments-domain';\nimport { z } from 'zod';\n\n/**\n * Each endpoint declares method, path template, request schema, and response\n * schema. The server registers handlers against this table; the api-client\n * derives its method signatures from it. Drift between client and server is\n * impossible by construction.\n */\n\nexport interface EndpointDef<\n TParams extends z.ZodTypeAny = z.ZodTypeAny,\n TResponse extends z.ZodTypeAny = z.ZodTypeAny,\n> {\n method: 'GET' | 'POST' | 'DELETE';\n /** Path with `:param` placeholders, e.g. `/v1/orgs/:orgId/experiments`. */\n path: string;\n /** Request schema. For GET, used to validate query params; otherwise body. */\n params: TParams;\n response: TResponse;\n /** True if this endpoint mutates state — server applies idempotency cache. */\n mutates: boolean;\n /** Required role on the active org. `null` = any authenticated session. */\n requiresRole: 'owner' | 'admin' | 'experimenter' | 'viewer' | null;\n}\n\nconst Empty = z.object({});\n\n// ---- tenants ----------------------------------------------------------------\n\nexport const TenantSelf = z.object({\n organization: z.object({\n id: z.string(),\n name: z.string(),\n slug: z.string(),\n createdAt: z.string().datetime(),\n }),\n member: z.object({\n role: z.enum(['owner', 'admin', 'experimenter', 'viewer']),\n }),\n user: z.object({\n id: z.string(),\n email: z.string().email(),\n name: z.string().nullable(),\n }),\n});\nexport type TenantSelf = z.infer<typeof TenantSelf>;\n\n// ---- workspace hierarchy ---------------------------------------------------\n\nexport const ProjectListResponse = z.object({ projects: z.array(Project) });\nexport const PropertyListResponse = z.object({ properties: z.array(Property) });\nexport const EnvironmentListResponse = z.object({ environments: z.array(Environment) });\nexport const FeatureListResponse = z.object({ features: z.array(Feature) });\nexport const FeatureRuleListResponse = z.object({ rules: z.array(FeatureRule) });\nexport const PublicationListResponse = z.object({ publications: z.array(EnvironmentPublication) });\nexport const PromoteEnvironmentInput = z.object({ sourceEnvironmentId: z.string().uuid() });\nexport const PromoteEnvironmentResponse = z.object({\n sourceEnvironmentId: z.string().uuid(),\n sourceVersion: z.number().int().positive(),\n targetEnvironmentId: z.string().uuid(),\n promotedRuleCount: z.number().int().nonnegative(),\n});\n\n// ---- experiments ------------------------------------------------------------\n\nexport const ExperimentSummary = z.object({\n id: Experiment.shape.id,\n name: Experiment.shape.name,\n state: ExperimentState,\n updatedAt: z.string().datetime(),\n});\nexport type ExperimentSummary = z.infer<typeof ExperimentSummary>;\n\nexport const ExperimentListResponse = z.object({\n experiments: z.array(ExperimentSummary),\n});\nexport type ExperimentListResponse = z.infer<typeof ExperimentListResponse>;\n\nexport const CreateExperimentInput = ExperimentSpecBase;\nexport type CreateExperimentInput = z.infer<typeof CreateExperimentInput>;\n\nexport const CreateExperimentResponse = z.object({\n experimentId: ExperimentId,\n idempotent: z.boolean().optional(),\n});\nexport type CreateExperimentResponse = z.infer<typeof CreateExperimentResponse>;\n\n/**\n * Aggregate row per variant for a given metric over an optional time window.\n * Sourced from the warehouse adapter (Databricks in prod, Local in dev).\n */\nexport const AggregateRow = z.object({\n variantKey: z.string(),\n exposureCount: z.number().int().nonnegative(),\n conversionCount: z.number().int().nonnegative(),\n conversionSum: z.number(),\n failureCount: z.number().int().nonnegative().default(0),\n});\nexport type AggregateRow = z.infer<typeof AggregateRow>;\n\nexport const AggregateInput = z.object({\n metric: z.string().min(1).max(120),\n fromIso: z.string().datetime().optional(),\n untilIso: z.string().datetime().optional(),\n segmentKey: z\n .string()\n .min(1)\n .max(80)\n .regex(/^[A-Za-z0-9_.-]+$/)\n .optional(),\n prePeriodDays: z.coerce.number().int().min(1).max(365).optional(),\n});\nexport type AggregateInput = z.infer<typeof AggregateInput>;\n\nexport const AggregateResponse = z.object({\n experimentId: ExperimentId,\n metric: z.string(),\n rows: z.array(AggregateRow),\n /** ISO datetime — when this aggregate was computed. SDKs may cache by this. */\n computedAt: z.string().datetime(),\n analytics: z\n .object({\n variants: z.array(\n z.object({\n variantKey: z.string(),\n exposedSubjects: z.number().int().nonnegative(),\n convertedSubjects: z.number().int().nonnegative(),\n meanTimeToConvertMs: z.number().nonnegative().nullable(),\n medianTimeToConvertMs: z.number().nonnegative().nullable(),\n p90TimeToConvertMs: z.number().nonnegative().nullable(),\n meanConversionDepth: z.number().nonnegative(),\n conversionDepth: z.object({\n oneOrMore: z.number().int().nonnegative(),\n twoOrMore: z.number().int().nonnegative(),\n threeOrMore: z.number().int().nonnegative(),\n }),\n cupedAdjustedRate: z.number().nullable(),\n cupedLift: z.number().nullable(),\n }),\n ),\n segments: z.array(\n z.object({\n segmentValue: z.string(),\n variantKey: z.string(),\n exposureCount: z.number().int().nonnegative(),\n conversionCount: z.number().int().nonnegative(),\n conversionRate: z.number().min(0).max(1),\n }),\n ),\n segmentKey: z.string().optional(),\n cuped: z.object({\n available: z.boolean(),\n prePeriodDays: z.number().int().positive(),\n theta: z.number().nullable(),\n varianceReduction: z.number().nullable(),\n }),\n })\n .optional(),\n});\nexport type AggregateResponse = z.infer<typeof AggregateResponse>;\n\nexport const InvokeActionInput = z.object({\n actionId: ActionId,\n params: z.record(z.unknown()),\n /** Optional client-supplied idempotency key. */\n idempotencyKey: z.string().min(8).max(128).optional(),\n});\nexport type InvokeActionInput = z.infer<typeof InvokeActionInput>;\n\nexport const InvokeActionResponse = z.object({\n success: z.boolean(),\n data: z.record(z.unknown()).optional(),\n error: z.string().optional(),\n});\nexport type InvokeActionResponse = z.infer<typeof InvokeActionResponse>;\n\n// ---- manifests --------------------------------------------------------------\n\n/** Result of pushing the signed manifest to the Cloudflare manifest-worker. */\nexport const EdgePushResult = z.object({\n pushed: z.boolean(),\n reason: z.string().optional(),\n status: z.number().int().optional(),\n});\nexport type EdgePushResult = z.infer<typeof EdgePushResult>;\n\nexport const PublishManifestResponse = z.object({\n manifestVersion: z.number().int().nonnegative(),\n contentHash: z.string().regex(/^[0-9a-f]{64}$/),\n experimentCount: z.number().int().nonnegative(),\n /** Edge push status. `pushed: false` with `reason: 'unconfigured'` is normal in local dev. */\n edgePush: EdgePushResult,\n});\nexport type PublishManifestResponse = z.infer<typeof PublishManifestResponse>;\n\nexport const ManifestKey = z.object({\n keyId: z.string(),\n publicKeyHex: z.string().regex(/^[0-9a-f]+$/),\n status: z.enum(['active', 'retiring', 'retired']),\n createdAt: z.string().datetime(),\n retiredAt: z.string().datetime().nullable(),\n});\nexport type ManifestKey = z.infer<typeof ManifestKey>;\n\nexport const ManifestKeysResponse = z.object({ keys: z.array(ManifestKey) });\nexport type ManifestKeysResponse = z.infer<typeof ManifestKeysResponse>;\n\n// ---- preview tokens ---------------------------------------------------------\n\nexport const PreviewSignInput = z.object({\n experimentId: ExperimentId,\n variantKey: z.string().min(1).max(32),\n /** Token TTL in seconds. Clamped server-side to [60, 3600]; default 900. */\n ttlSeconds: z.number().int().min(60).max(3600).optional(),\n});\nexport type PreviewSignInput = z.infer<typeof PreviewSignInput>;\n\nexport const PreviewSignResponse = z.object({\n token: z.string(),\n /** ISO datetime when the token expires. */\n expiresAt: z.string().datetime(),\n /** ID of the public JWKS key used to sign — exposed for debugging only. */\n keyId: z.string(),\n /** Unique JWT id for audit/debugging and future replay controls. */\n jti: z.string(),\n});\nexport type PreviewSignResponse = z.infer<typeof PreviewSignResponse>;\n\n// ---- audit ------------------------------------------------------------------\n\nexport const AuditEvent = z.object({\n id: z.string(),\n type: z.string(),\n experimentId: z.string(),\n actorId: z.string(),\n at: z.string().datetime(),\n payload: z.record(z.unknown()),\n});\nexport type AuditEvent = z.infer<typeof AuditEvent>;\n\nexport const AuditListResponse = z.object({ events: z.array(AuditEvent) });\nexport type AuditListResponse = z.infer<typeof AuditListResponse>;\n\n// ---- enterprise governance -------------------------------------------------\n\nexport const GovernanceSettings = z.object({\n requireQualityForProduction: z.boolean(),\n requiredQualitySuites: z.array(z.string().min(1).max(240)).max(50),\n qualityMaxAgeHours: z.number().int().min(1).max(8760),\n retentionDays: z.number().int().min(30).max(3650),\n legalHold: z.boolean(),\n updatedBy: z.string().nullable(),\n updatedAt: z.string().datetime().nullable(),\n});\nexport type GovernanceSettings = z.infer<typeof GovernanceSettings>;\n\nexport const UpdateGovernanceSettingsInput = GovernanceSettings.pick({\n requireQualityForProduction: true,\n requiredQualitySuites: true,\n qualityMaxAgeHours: true,\n retentionDays: true,\n legalHold: true,\n});\nexport type UpdateGovernanceSettingsInput = z.infer<typeof UpdateGovernanceSettingsInput>;\n\nexport const QualityGateResult = z.object({\n enabled: z.boolean(),\n passed: z.boolean(),\n checks: z.array(\n z.object({\n suite: z.string(),\n passed: z.boolean(),\n reason: z.string(),\n runId: z.string().nullable(),\n finishedAt: z.string().datetime().nullable(),\n }),\n ),\n});\nexport type QualityGateResult = z.infer<typeof QualityGateResult>;\n\nexport const GovernanceStatusResponse = z.object({\n settings: GovernanceSettings,\n qualityGate: QualityGateResult,\n});\n\nexport const AuditExport = z.object({\n id: z.string(),\n destinationKind: z.enum(['s3', 'r2', 'splunk-hec']),\n status: z.enum(['active', 'paused', 'failed']),\n lastCursorAt: z.string().datetime().nullable(),\n});\nexport const AuditExportListResponse = z.object({ exports: z.array(AuditExport) });\n\nexport const CreateAuditExportInput = z.object({\n destinationKind: z.enum(['s3', 'r2', 'splunk-hec']),\n /** Free-form config; encrypted at rest. Schema enforced by destination kind. */\n config: z.record(z.unknown()),\n});\n\n// ---- api keys ---------------------------------------------------------------\n\nexport const ApiKeySummary = z.object({\n id: z.string(),\n name: z.string(),\n prefix: z.string(),\n role: z.enum(['owner', 'admin', 'experimenter', 'viewer']),\n scopes: z.array(z.enum(['read', 'write', 'admin'])),\n createdAt: z.string().datetime(),\n lastUsedAt: z.string().datetime().nullable(),\n expiresAt: z.string().datetime().nullable(),\n});\nexport const ApiKeyListResponse = z.object({ keys: z.array(ApiKeySummary) });\n\nexport const CreateApiKeyInput = z.object({\n name: z.string().min(1).max(120),\n /** ISO datetime of expiry; null for non-expiring (not recommended in prod). */\n expiresAt: z.string().datetime().nullable(),\n /** Role assigned to the key. Defaults to the creator's role. */\n role: z.enum(['owner', 'admin', 'experimenter', 'viewer']).optional(),\n /** Permission scopes assigned to the key. Defaults are derived from role. */\n scopes: z.array(z.enum(['read', 'write', 'admin'])).optional(),\n});\nexport type CreateApiKeyInput = z.infer<typeof CreateApiKeyInput>;\n\nexport const CreateApiKeyResponse = ApiKeySummary.extend({\n /** Plaintext key, returned exactly once at creation time. */\n key: z.string(),\n});\nexport type CreateApiKeyResponse = z.infer<typeof CreateApiKeyResponse>;\n\n// ---- SAML / SSO --------------------------------------------------------------\n\nexport const SamlConfig = z\n .object({\n enabled: z.boolean(),\n connectionId: z.string().min(1).max(200).nullable(),\n issuer: z.string().min(1).max(500).nullable(),\n ssoUrl: z.string().url().nullable(),\n certificate: z.string().min(1).max(10000).nullable(),\n })\n .refine(\n (value) =>\n !value.enabled ||\n Boolean(value.connectionId && value.issuer && value.ssoUrl && value.certificate),\n {\n message: 'connectionId, issuer, ssoUrl, certificate required when SAML is enabled',\n },\n );\nexport type SamlConfig = z.infer<typeof SamlConfig>;\n\n// ---- quality / test evidence ------------------------------------------------\n\nexport const TestRunStatus = z.enum(['running', 'passed', 'failed', 'skipped', 'canceled']);\nexport type TestRunStatus = z.infer<typeof TestRunStatus>;\n\nexport const TestCaseStatus = z.enum([\n 'passed',\n 'failed',\n 'skipped',\n 'pending',\n 'undefined',\n 'unknown',\n]);\n\nexport const TestCaseResult = z.object({\n id: z.string().max(240).optional(),\n name: z.string().min(1).max(500),\n uri: z.string().max(1000).optional(),\n status: TestCaseStatus,\n durationMs: z.number().int().nonnegative().max(86_400_000),\n tags: z.array(z.string().max(120)).max(100).default([]),\n error: z.string().max(65_536).optional(),\n statementId: z.string().max(240).optional(),\n resourceUrl: z.string().url().max(4000).optional(),\n details: z.record(z.unknown()).optional(),\n});\nexport type TestCaseResult = z.infer<typeof TestCaseResult>;\n\nexport const TestRunSummary = z.object({\n total: z.number().int().nonnegative(),\n passed: z.number().int().nonnegative(),\n failed: z.number().int().nonnegative(),\n skipped: z.number().int().nonnegative(),\n pending: z.number().int().nonnegative().default(0),\n});\n\nexport const TestRunArtifact = z.object({\n name: z.string().min(1).max(240),\n url: z.string().url().max(4000),\n mediaType: z.string().max(240).optional(),\n});\n\nexport const CreateTestRunInput = z.object({\n externalId: z.string().min(1).max(300).optional(),\n source: z.enum(['bdd', 'live-suite', 'junit', 'cli', 'other']),\n suite: z.string().min(1).max(240),\n status: TestRunStatus,\n startedAt: z.string().datetime().nullable().optional(),\n finishedAt: z.string().datetime().nullable().optional(),\n durationMs: z.number().int().nonnegative().max(604_800_000).default(0),\n summary: TestRunSummary,\n environment: z.record(z.unknown()).default({}),\n revision: z.record(z.unknown()).default({}),\n cases: z.array(TestCaseResult).max(2000).default([]),\n artifacts: z.array(TestRunArtifact).max(100).default([]),\n});\nexport type CreateTestRunInput = z.infer<typeof CreateTestRunInput>;\n\nexport const TestRun = CreateTestRunInput.extend({\n id: z.string().uuid(),\n orgId: z.string(),\n createdBy: z.string(),\n createdAt: z.string().datetime(),\n updatedAt: z.string().datetime(),\n});\nexport type TestRun = z.infer<typeof TestRun>;\n\nexport const TestRunListInput = z.object({\n status: TestRunStatus.optional(),\n source: CreateTestRunInput.shape.source.optional(),\n suite: z.string().min(1).max(240).optional(),\n targetPack: z\n .string()\n .min(1)\n .max(120)\n .regex(/^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$/)\n .optional(),\n limit: z.coerce.number().int().min(1).max(200).optional(),\n offset: z.coerce.number().int().min(0).max(100_000).optional(),\n});\nexport const TestRunListResponse = z.object({\n runs: z.array(TestRun.omit({ cases: true })),\n});\n\n// ---- the registry ----------------------------------------------------------\n\nexport const endpoints = {\n 'tenants.me': {\n method: 'GET',\n path: '/v1/tenants/me',\n params: Empty,\n response: TenantSelf,\n mutates: false,\n requiresRole: null,\n },\n\n 'experiments.list': {\n method: 'GET',\n path: '/v1/orgs/:orgId/experiments',\n params: Empty,\n response: ExperimentListResponse,\n mutates: false,\n requiresRole: 'viewer',\n },\n 'experiments.create': {\n method: 'POST',\n path: '/v1/orgs/:orgId/experiments',\n params: CreateExperimentInput,\n response: CreateExperimentResponse,\n mutates: true,\n requiresRole: 'experimenter',\n },\n 'experiments.get': {\n method: 'GET',\n path: '/v1/orgs/:orgId/experiments/:experimentId',\n params: Empty,\n response: Experiment,\n mutates: false,\n requiresRole: 'viewer',\n },\n 'experiments.invokeAction': {\n method: 'POST',\n path: '/v1/orgs/:orgId/experiments/actions',\n params: InvokeActionInput,\n response: InvokeActionResponse,\n mutates: true,\n requiresRole: 'experimenter',\n },\n 'experiments.aggregate': {\n method: 'GET',\n path: '/v1/orgs/:orgId/experiments/:experimentId/aggregate',\n params: AggregateInput,\n response: AggregateResponse,\n mutates: false,\n requiresRole: 'viewer',\n },\n\n 'projects.list': {\n method: 'GET',\n path: '/v1/orgs/:orgId/projects',\n params: Empty,\n response: ProjectListResponse,\n mutates: false,\n requiresRole: 'viewer',\n },\n 'projects.create': {\n method: 'POST',\n path: '/v1/orgs/:orgId/projects',\n params: CreateProjectInput,\n response: Project,\n mutates: true,\n requiresRole: 'experimenter',\n },\n 'properties.list': {\n method: 'GET',\n path: '/v1/orgs/:orgId/projects/:projectId/properties',\n params: Empty,\n response: PropertyListResponse,\n mutates: false,\n requiresRole: 'viewer',\n },\n 'properties.create': {\n method: 'POST',\n path: '/v1/orgs/:orgId/projects/:projectId/properties',\n params: CreatePropertyInput,\n response: Property,\n mutates: true,\n requiresRole: 'experimenter',\n },\n 'environments.list': {\n method: 'GET',\n path: '/v1/orgs/:orgId/projects/:projectId/environments',\n params: Empty,\n response: EnvironmentListResponse,\n mutates: false,\n requiresRole: 'viewer',\n },\n 'environments.create': {\n method: 'POST',\n path: '/v1/orgs/:orgId/projects/:projectId/environments',\n params: CreateEnvironmentInput,\n response: Environment,\n mutates: true,\n requiresRole: 'experimenter',\n },\n 'features.list': {\n method: 'GET',\n path: '/v1/orgs/:orgId/projects/:projectId/features',\n params: Empty,\n response: FeatureListResponse,\n mutates: false,\n requiresRole: 'viewer',\n },\n 'features.create': {\n method: 'POST',\n path: '/v1/orgs/:orgId/projects/:projectId/features',\n params: CreateFeatureInput,\n response: Feature,\n mutates: true,\n requiresRole: 'experimenter',\n },\n 'rules.list': {\n method: 'GET',\n path: '/v1/orgs/:orgId/features/:featureId/rules',\n params: Empty,\n response: FeatureRuleListResponse,\n mutates: false,\n requiresRole: 'viewer',\n },\n 'rules.create': {\n method: 'POST',\n path: '/v1/orgs/:orgId/features/:featureId/rules',\n params: CreateFeatureRuleInput,\n response: FeatureRule,\n mutates: true,\n requiresRole: 'experimenter',\n },\n 'environments.publish': {\n method: 'POST',\n path: '/v1/orgs/:orgId/environments/:environmentId/publish',\n params: Empty,\n response: EnvironmentPublication,\n mutates: true,\n requiresRole: 'experimenter',\n },\n 'environments.publications': {\n method: 'GET',\n path: '/v1/orgs/:orgId/environments/:environmentId/publications',\n params: Empty,\n response: PublicationListResponse,\n mutates: false,\n requiresRole: 'viewer',\n },\n 'environments.promote': {\n method: 'POST',\n path: '/v1/orgs/:orgId/environments/:environmentId/promote',\n params: PromoteEnvironmentInput,\n response: PromoteEnvironmentResponse,\n mutates: true,\n requiresRole: 'experimenter',\n },\n 'configuration.getPublished': {\n method: 'GET',\n path: '/v1/orgs/:orgId/environments/:environmentId/configuration',\n params: Empty,\n response: EnvironmentPublication,\n mutates: false,\n requiresRole: 'viewer',\n },\n\n 'manifests.publish': {\n method: 'POST',\n path: '/v1/orgs/:orgId/manifests/publish',\n params: Empty,\n response: PublishManifestResponse,\n mutates: true,\n requiresRole: 'experimenter',\n },\n 'manifests.getKeys': {\n method: 'GET',\n path: '/v1/orgs/:orgId/manifests/keys',\n params: Empty,\n response: ManifestKeysResponse,\n mutates: false,\n requiresRole: 'admin',\n },\n 'manifests.rotateKey': {\n method: 'POST',\n path: '/v1/orgs/:orgId/manifests/keys/rotate',\n params: z.object({ keyId: z.string().min(1).max(128) }),\n response: ManifestKey,\n mutates: true,\n requiresRole: 'admin',\n },\n 'manifests.retireKey': {\n method: 'POST',\n path: '/v1/orgs/:orgId/manifests/keys/retire',\n params: z.object({ keyId: z.string() }),\n response: ManifestKey,\n mutates: true,\n requiresRole: 'admin',\n },\n\n 'preview.sign': {\n method: 'POST',\n path: '/v1/orgs/:orgId/preview/sign',\n params: PreviewSignInput,\n response: PreviewSignResponse,\n mutates: true,\n requiresRole: 'experimenter',\n },\n\n 'audit.list': {\n method: 'GET',\n path: '/v1/orgs/:orgId/audit',\n params: Empty,\n response: AuditListResponse,\n mutates: false,\n requiresRole: 'viewer',\n },\n 'governance.get': {\n method: 'GET',\n path: '/v1/orgs/:orgId/governance',\n params: Empty,\n response: GovernanceStatusResponse,\n mutates: false,\n requiresRole: 'viewer',\n },\n 'governance.update': {\n method: 'POST',\n path: '/v1/orgs/:orgId/governance',\n params: UpdateGovernanceSettingsInput,\n response: GovernanceStatusResponse,\n mutates: true,\n requiresRole: 'admin',\n },\n 'audit.exports.list': {\n method: 'GET',\n path: '/v1/orgs/:orgId/audit/exports',\n params: Empty,\n response: AuditExportListResponse,\n mutates: false,\n requiresRole: 'admin',\n },\n 'audit.exports.create': {\n method: 'POST',\n path: '/v1/orgs/:orgId/audit/exports',\n params: CreateAuditExportInput,\n response: AuditExport,\n mutates: true,\n requiresRole: 'admin',\n },\n 'audit.exports.delete': {\n method: 'DELETE',\n path: '/v1/orgs/:orgId/audit/exports/:exportId',\n params: Empty,\n response: z.object({ ok: z.literal(true) }),\n mutates: true,\n requiresRole: 'admin',\n },\n\n 'apiKeys.list': {\n method: 'GET',\n path: '/v1/orgs/:orgId/api-keys',\n params: Empty,\n response: ApiKeyListResponse,\n mutates: false,\n requiresRole: 'admin',\n },\n 'apiKeys.create': {\n method: 'POST',\n path: '/v1/orgs/:orgId/api-keys',\n params: CreateApiKeyInput,\n response: CreateApiKeyResponse,\n mutates: true,\n requiresRole: 'admin',\n },\n 'apiKeys.revoke': {\n method: 'DELETE',\n path: '/v1/orgs/:orgId/api-keys/:keyId',\n params: Empty,\n response: z.object({ ok: z.literal(true) }),\n mutates: true,\n requiresRole: 'admin',\n },\n\n 'saml.get': {\n method: 'GET',\n path: '/v1/orgs/:orgId/saml',\n params: Empty,\n response: SamlConfig,\n mutates: false,\n requiresRole: 'owner',\n },\n 'saml.update': {\n method: 'POST',\n path: '/v1/orgs/:orgId/saml',\n params: SamlConfig,\n response: SamlConfig,\n mutates: true,\n requiresRole: 'owner',\n },\n\n 'testRuns.list': {\n method: 'GET',\n path: '/v1/orgs/:orgId/test-runs',\n params: TestRunListInput,\n response: TestRunListResponse,\n mutates: false,\n requiresRole: 'viewer',\n },\n 'testRuns.create': {\n method: 'POST',\n path: '/v1/orgs/:orgId/test-runs',\n params: CreateTestRunInput,\n response: TestRun,\n mutates: true,\n requiresRole: 'experimenter',\n },\n 'testRuns.get': {\n method: 'GET',\n path: '/v1/orgs/:orgId/test-runs/:runId',\n params: Empty,\n response: TestRun,\n mutates: false,\n requiresRole: 'viewer',\n },\n} satisfies Record<string, EndpointDef>;\n\nexport type EndpointName = keyof typeof endpoints;\nexport type EndpointParams<E extends EndpointName> = z.infer<(typeof endpoints)[E]['params']>;\nexport type EndpointResponse<E extends EndpointName> = z.infer<(typeof endpoints)[E]['response']>;\n\n/** Substitute path parameters in a path template. */\nexport function buildPath(template: string, pathParams: Record<string, string>): string {\n return template.replace(/:([a-zA-Z][a-zA-Z0-9_]*)/g, (_, name) => {\n const v = pathParams[name];\n if (v == null) throw new Error(`Missing path parameter: ${name}`);\n return encodeURIComponent(v);\n });\n}\n","import { z } from 'zod';\n\nexport const ApiError = z.object({\n code: z.enum([\n 'UNAUTHENTICATED',\n 'FORBIDDEN',\n 'NOT_FOUND',\n 'VALIDATION_FAILED',\n 'CONFLICT',\n 'RATE_LIMITED',\n 'INTERNAL',\n ]),\n message: z.string(),\n details: z.record(z.unknown()).optional(),\n});\nexport type ApiError = z.infer<typeof ApiError>;\n"]}
1
+ {"version":3,"sources":["../src/endpoints.ts","../src/errors.ts"],"names":["z","Project","Property","Environment","Feature","FeatureRule","EnvironmentPublication","Experiment","ExperimentState","ExperimentSpecBase","ExperimentId","ActionId","CreateProjectInput","CreatePropertyInput","CreateEnvironmentInput","CreateFeatureInput","CreateFeatureRuleInput"],"mappings":"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","file":"index.cjs","sourcesContent":["import {\n ActionId,\n CreateEnvironmentInput,\n CreateFeatureInput,\n CreateFeatureRuleInput,\n CreateProjectInput,\n CreatePropertyInput,\n Environment,\n EnvironmentPublication,\n Experiment,\n ExperimentId,\n ExperimentSpec,\n ExperimentSpecBase,\n ExperimentState,\n Feature,\n FeatureRule,\n Project,\n Property,\n} from '@fabricorg/experiments-domain';\nimport { z } from 'zod';\n\n/**\n * Each endpoint declares method, path template, request schema, and response\n * schema. The server registers handlers against this table; the api-client\n * derives its method signatures from it. Drift between client and server is\n * impossible by construction.\n */\n\nexport interface EndpointDef<\n TParams extends z.ZodTypeAny = z.ZodTypeAny,\n TResponse extends z.ZodTypeAny = z.ZodTypeAny,\n> {\n method: 'GET' | 'POST' | 'DELETE';\n /** Path with `:param` placeholders, e.g. `/v1/orgs/:orgId/experiments`. */\n path: string;\n /** Request schema. For GET, used to validate query params; otherwise body. */\n params: TParams;\n response: TResponse;\n /** True if this endpoint mutates state — server applies idempotency cache. */\n mutates: boolean;\n /** Required role on the active org. `null` = any authenticated session. */\n requiresRole: 'owner' | 'admin' | 'experimenter' | 'viewer' | null;\n}\n\nconst Empty = z.object({});\n\n// ---- tenants ----------------------------------------------------------------\n\nexport const TenantSelf = z.object({\n organization: z.object({\n id: z.string(),\n name: z.string(),\n slug: z.string(),\n createdAt: z.string().datetime(),\n }),\n member: z.object({\n role: z.enum(['owner', 'admin', 'experimenter', 'viewer']),\n }),\n user: z.object({\n id: z.string(),\n email: z.string().email(),\n name: z.string().nullable(),\n }),\n});\nexport type TenantSelf = z.infer<typeof TenantSelf>;\n\n// ---- workspace hierarchy ---------------------------------------------------\n\nexport const ProjectListResponse = z.object({ projects: z.array(Project) });\nexport const PropertyListResponse = z.object({ properties: z.array(Property) });\nexport const EnvironmentListResponse = z.object({ environments: z.array(Environment) });\nexport const FeatureListResponse = z.object({ features: z.array(Feature) });\nexport const FeatureRuleListResponse = z.object({ rules: z.array(FeatureRule) });\nexport const PublicationListResponse = z.object({ publications: z.array(EnvironmentPublication) });\nexport const PromoteEnvironmentInput = z.object({ sourceEnvironmentId: z.string().uuid() });\nexport const PromoteEnvironmentResponse = z.object({\n sourceEnvironmentId: z.string().uuid(),\n sourceVersion: z.number().int().positive(),\n targetEnvironmentId: z.string().uuid(),\n promotedRuleCount: z.number().int().nonnegative(),\n});\n\n// ---- experiments ------------------------------------------------------------\n\nexport const ExperimentSummary = z.object({\n id: Experiment.shape.id,\n name: Experiment.shape.name,\n state: ExperimentState,\n updatedAt: z.string().datetime(),\n});\nexport type ExperimentSummary = z.infer<typeof ExperimentSummary>;\n\nexport const ExperimentListResponse = z.object({\n experiments: z.array(ExperimentSummary),\n});\nexport type ExperimentListResponse = z.infer<typeof ExperimentListResponse>;\n\nexport const CreateExperimentInput = ExperimentSpecBase;\nexport type CreateExperimentInput = z.infer<typeof CreateExperimentInput>;\n\nexport const CreateExperimentResponse = z.object({\n experimentId: ExperimentId,\n idempotent: z.boolean().optional(),\n});\nexport type CreateExperimentResponse = z.infer<typeof CreateExperimentResponse>;\n\n/**\n * Aggregate row per variant for a given metric over an optional time window.\n * Sourced from the warehouse adapter (Databricks in prod, Local in dev).\n */\nexport const AggregateRow = z.object({\n variantKey: z.string(),\n exposureCount: z.number().int().nonnegative(),\n conversionCount: z.number().int().nonnegative(),\n conversionSum: z.number(),\n failureCount: z.number().int().nonnegative().default(0),\n});\nexport type AggregateRow = z.infer<typeof AggregateRow>;\n\nexport const AggregateInput = z.object({\n metric: z.string().min(1).max(120),\n fromIso: z.string().datetime().optional(),\n untilIso: z.string().datetime().optional(),\n segmentKey: z\n .string()\n .min(1)\n .max(80)\n .regex(/^[A-Za-z0-9_.-]+$/)\n .optional(),\n prePeriodDays: z.coerce.number().int().min(1).max(365).optional(),\n});\nexport type AggregateInput = z.infer<typeof AggregateInput>;\n\nexport const AggregateResponse = z.object({\n experimentId: ExperimentId,\n metric: z.string(),\n rows: z.array(AggregateRow),\n /** ISO datetime — when this aggregate was computed. SDKs may cache by this. */\n computedAt: z.string().datetime(),\n analytics: z\n .object({\n variants: z.array(\n z.object({\n variantKey: z.string(),\n exposedSubjects: z.number().int().nonnegative(),\n convertedSubjects: z.number().int().nonnegative(),\n meanTimeToConvertMs: z.number().nonnegative().nullable(),\n medianTimeToConvertMs: z.number().nonnegative().nullable(),\n p90TimeToConvertMs: z.number().nonnegative().nullable(),\n meanConversionDepth: z.number().nonnegative(),\n conversionDepth: z.object({\n oneOrMore: z.number().int().nonnegative(),\n twoOrMore: z.number().int().nonnegative(),\n threeOrMore: z.number().int().nonnegative(),\n }),\n cupedAdjustedRate: z.number().nullable(),\n cupedLift: z.number().nullable(),\n }),\n ),\n segments: z.array(\n z.object({\n segmentValue: z.string(),\n variantKey: z.string(),\n exposureCount: z.number().int().nonnegative(),\n conversionCount: z.number().int().nonnegative(),\n conversionRate: z.number().min(0).max(1),\n }),\n ),\n segmentKey: z.string().optional(),\n cuped: z.object({\n available: z.boolean(),\n prePeriodDays: z.number().int().positive(),\n theta: z.number().nullable(),\n varianceReduction: z.number().nullable(),\n }),\n })\n .optional(),\n});\nexport type AggregateResponse = z.infer<typeof AggregateResponse>;\n\nexport const InvokeActionInput = z.object({\n actionId: ActionId,\n params: z.record(z.unknown()),\n /** Optional client-supplied idempotency key. */\n idempotencyKey: z.string().min(8).max(128).optional(),\n});\nexport type InvokeActionInput = z.infer<typeof InvokeActionInput>;\n\nexport const InvokeActionResponse = z.object({\n success: z.boolean(),\n data: z.record(z.unknown()).optional(),\n error: z.string().optional(),\n});\nexport type InvokeActionResponse = z.infer<typeof InvokeActionResponse>;\n\n// ---- manifests --------------------------------------------------------------\n\n/** Result of pushing the signed manifest to the Cloudflare manifest-worker. */\nexport const EdgePushResult = z.object({\n pushed: z.boolean(),\n reason: z.string().optional(),\n status: z.number().int().optional(),\n});\nexport type EdgePushResult = z.infer<typeof EdgePushResult>;\n\nexport const PublishManifestResponse = z.object({\n manifestVersion: z.number().int().nonnegative(),\n contentHash: z.string().regex(/^[0-9a-f]{64}$/),\n experimentCount: z.number().int().nonnegative(),\n /** Edge push status. `pushed: false` with `reason: 'unconfigured'` is normal in local dev. */\n edgePush: EdgePushResult,\n});\nexport type PublishManifestResponse = z.infer<typeof PublishManifestResponse>;\n\nexport const ManifestKey = z.object({\n keyId: z.string(),\n publicKeyHex: z.string().regex(/^[0-9a-f]+$/),\n status: z.enum(['active', 'retiring', 'retired']),\n createdAt: z.string().datetime(),\n retiredAt: z.string().datetime().nullable(),\n});\nexport type ManifestKey = z.infer<typeof ManifestKey>;\n\nexport const ManifestKeysResponse = z.object({ keys: z.array(ManifestKey) });\nexport type ManifestKeysResponse = z.infer<typeof ManifestKeysResponse>;\n\n// ---- preview tokens ---------------------------------------------------------\n\nexport const PreviewSignInput = z.object({\n experimentId: ExperimentId,\n variantKey: z.string().min(1).max(32),\n /** Token TTL in seconds. Clamped server-side to [60, 3600]; default 900. */\n ttlSeconds: z.number().int().min(60).max(3600).optional(),\n});\nexport type PreviewSignInput = z.infer<typeof PreviewSignInput>;\n\nexport const PreviewSignResponse = z.object({\n token: z.string(),\n /** ISO datetime when the token expires. */\n expiresAt: z.string().datetime(),\n /** ID of the public JWKS key used to sign — exposed for debugging only. */\n keyId: z.string(),\n /** Unique JWT id for audit/debugging and future replay controls. */\n jti: z.string(),\n});\nexport type PreviewSignResponse = z.infer<typeof PreviewSignResponse>;\n\n// ---- audit ------------------------------------------------------------------\n\nexport const AuditEvent = z.object({\n id: z.string(),\n type: z.string(),\n experimentId: z.string(),\n actorId: z.string(),\n at: z.string().datetime(),\n payload: z.record(z.unknown()),\n});\nexport type AuditEvent = z.infer<typeof AuditEvent>;\n\nexport const AuditListResponse = z.object({ events: z.array(AuditEvent) });\nexport type AuditListResponse = z.infer<typeof AuditListResponse>;\n\n// ---- enterprise governance -------------------------------------------------\n\nexport const GovernanceSettings = z.object({\n requireQualityForProduction: z.boolean(),\n requiredQualitySuites: z.array(z.string().min(1).max(240)).max(50),\n qualityMaxAgeHours: z.number().int().min(1).max(8760),\n retentionDays: z.number().int().min(30).max(3650),\n legalHold: z.boolean(),\n updatedBy: z.string().nullable(),\n updatedAt: z.string().datetime().nullable(),\n});\nexport type GovernanceSettings = z.infer<typeof GovernanceSettings>;\n\nexport const UpdateGovernanceSettingsInput = GovernanceSettings.pick({\n requireQualityForProduction: true,\n requiredQualitySuites: true,\n qualityMaxAgeHours: true,\n retentionDays: true,\n legalHold: true,\n});\nexport type UpdateGovernanceSettingsInput = z.infer<typeof UpdateGovernanceSettingsInput>;\n\nexport const QualityGateResult = z.object({\n enabled: z.boolean(),\n passed: z.boolean(),\n checks: z.array(\n z.object({\n suite: z.string(),\n passed: z.boolean(),\n reason: z.string(),\n runId: z.string().nullable(),\n finishedAt: z.string().datetime().nullable(),\n }),\n ),\n});\nexport type QualityGateResult = z.infer<typeof QualityGateResult>;\n\nexport const GovernanceStatusResponse = z.object({\n settings: GovernanceSettings,\n qualityGate: QualityGateResult,\n});\n\nexport const AuditExport = z.object({\n id: z.string(),\n destinationKind: z.enum(['s3', 'r2', 'splunk-hec']),\n status: z.enum(['active', 'paused', 'failed']),\n lastCursorAt: z.string().datetime().nullable(),\n});\nexport const AuditExportListResponse = z.object({ exports: z.array(AuditExport) });\n\nexport const CreateAuditExportInput = z.object({\n destinationKind: z.enum(['s3', 'r2', 'splunk-hec']),\n /** Free-form config; encrypted at rest. Schema enforced by destination kind. */\n config: z.record(z.unknown()),\n});\n\n// ---- api keys ---------------------------------------------------------------\n\nexport const ApiKeySummary = z.object({\n id: z.string(),\n name: z.string(),\n prefix: z.string(),\n role: z.enum(['owner', 'admin', 'experimenter', 'viewer']),\n scopes: z.array(z.enum(['read', 'write', 'admin'])),\n createdAt: z.string().datetime(),\n lastUsedAt: z.string().datetime().nullable(),\n expiresAt: z.string().datetime().nullable(),\n});\nexport const ApiKeyListResponse = z.object({ keys: z.array(ApiKeySummary) });\n\nexport const CreateApiKeyInput = z.object({\n name: z.string().min(1).max(120),\n /** ISO datetime of expiry; null for non-expiring (not recommended in prod). */\n expiresAt: z.string().datetime().nullable(),\n /** Role assigned to the key. Defaults to the creator's role. */\n role: z.enum(['owner', 'admin', 'experimenter', 'viewer']).optional(),\n /** Permission scopes assigned to the key. Defaults are derived from role. */\n scopes: z.array(z.enum(['read', 'write', 'admin'])).optional(),\n});\nexport type CreateApiKeyInput = z.infer<typeof CreateApiKeyInput>;\n\nexport const CreateApiKeyResponse = ApiKeySummary.extend({\n /** Plaintext key, returned exactly once at creation time. */\n key: z.string(),\n});\nexport type CreateApiKeyResponse = z.infer<typeof CreateApiKeyResponse>;\n\n// ---- SAML / SSO --------------------------------------------------------------\n\nexport const SamlConfig = z\n .object({\n enabled: z.boolean(),\n connectionId: z.string().min(1).max(200).nullable(),\n issuer: z.string().min(1).max(500).nullable(),\n ssoUrl: z.string().url().nullable(),\n certificate: z.string().min(1).max(10000).nullable(),\n })\n .refine(\n (value) =>\n !value.enabled ||\n Boolean(value.connectionId && value.issuer && value.ssoUrl && value.certificate),\n {\n message: 'connectionId, issuer, ssoUrl, certificate required when SAML is enabled',\n },\n );\nexport type SamlConfig = z.infer<typeof SamlConfig>;\n\n// ---- quality / test evidence ------------------------------------------------\n\nexport const TestRunStatus = z.enum(['running', 'passed', 'failed', 'skipped', 'canceled']);\nexport type TestRunStatus = z.infer<typeof TestRunStatus>;\n\nexport const TestCaseStatus = z.enum([\n 'passed',\n 'failed',\n 'skipped',\n 'pending',\n 'undefined',\n 'unknown',\n]);\n\nexport const TestCaseResult = z.object({\n id: z.string().max(240).optional(),\n name: z.string().min(1).max(500),\n uri: z.string().max(1000).optional(),\n status: TestCaseStatus,\n durationMs: z.number().int().nonnegative().max(86_400_000),\n tags: z.array(z.string().max(120)).max(100).default([]),\n error: z.string().max(65_536).optional(),\n statementId: z.string().max(240).optional(),\n resourceUrl: z.string().url().max(4000).optional(),\n details: z.record(z.unknown()).optional(),\n});\nexport type TestCaseResult = z.infer<typeof TestCaseResult>;\n\nexport const TestRunSummary = z.object({\n total: z.number().int().nonnegative(),\n passed: z.number().int().nonnegative(),\n failed: z.number().int().nonnegative(),\n skipped: z.number().int().nonnegative(),\n pending: z.number().int().nonnegative().default(0),\n});\n\nexport const TestRunArtifact = z.object({\n name: z.string().min(1).max(240),\n url: z.string().url().max(4000),\n mediaType: z.string().max(240).optional(),\n});\n\nexport const CreateTestRunInput = z.object({\n externalId: z.string().min(1).max(300).optional(),\n source: z.enum(['bdd', 'live-suite', 'junit', 'cli', 'other']),\n suite: z.string().min(1).max(240),\n status: TestRunStatus,\n startedAt: z.string().datetime().nullable().optional(),\n finishedAt: z.string().datetime().nullable().optional(),\n durationMs: z.number().int().nonnegative().max(604_800_000).default(0),\n summary: TestRunSummary,\n environment: z.record(z.unknown()).default({}),\n revision: z.record(z.unknown()).default({}),\n cases: z.array(TestCaseResult).max(2000).default([]),\n artifacts: z.array(TestRunArtifact).max(100).default([]),\n});\nexport type CreateTestRunInput = z.infer<typeof CreateTestRunInput>;\n\nexport const TestRun = CreateTestRunInput.extend({\n id: z.string().uuid(),\n orgId: z.string(),\n createdBy: z.string(),\n createdAt: z.string().datetime(),\n updatedAt: z.string().datetime(),\n});\nexport type TestRun = z.infer<typeof TestRun>;\n\nexport const TestRunListInput = z.object({\n status: TestRunStatus.optional(),\n source: CreateTestRunInput.shape.source.optional(),\n suite: z.string().min(1).max(240).optional(),\n targetPack: z\n .string()\n .min(1)\n .max(120)\n .regex(/^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$/)\n .optional(),\n limit: z.coerce.number().int().min(1).max(200).optional(),\n offset: z.coerce.number().int().min(0).max(100_000).optional(),\n});\nexport const TestRunListResponse = z.object({\n runs: z.array(TestRun.omit({ cases: true })),\n});\n\n// ---- Harness operator surface ---------------------------------------------\n\nexport const HarnessOperatorDefinition = z.object({\n name: z.enum(['quality-status', 'srm-watcher', 'analyst']),\n kind: z.literal('job'),\n description: z.string(),\n mutates: z.boolean(),\n});\nexport type HarnessOperatorDefinition = z.infer<typeof HarnessOperatorDefinition>;\n\nexport const HarnessOperatorListResponse = z.array(HarnessOperatorDefinition);\nexport const HarnessJobInput = z.record(z.unknown()).default({});\nexport const HarnessJobResponse = z.record(z.unknown());\n\n// ---- the registry ----------------------------------------------------------\n\nexport const endpoints = {\n 'tenants.me': {\n method: 'GET',\n path: '/v1/tenants/me',\n params: Empty,\n response: TenantSelf,\n mutates: false,\n requiresRole: null,\n },\n\n 'experiments.list': {\n method: 'GET',\n path: '/v1/orgs/:orgId/experiments',\n params: Empty,\n response: ExperimentListResponse,\n mutates: false,\n requiresRole: 'viewer',\n },\n 'experiments.create': {\n method: 'POST',\n path: '/v1/orgs/:orgId/experiments',\n params: CreateExperimentInput,\n response: CreateExperimentResponse,\n mutates: true,\n requiresRole: 'experimenter',\n },\n 'experiments.get': {\n method: 'GET',\n path: '/v1/orgs/:orgId/experiments/:experimentId',\n params: Empty,\n response: Experiment,\n mutates: false,\n requiresRole: 'viewer',\n },\n 'experiments.invokeAction': {\n method: 'POST',\n path: '/v1/orgs/:orgId/experiments/actions',\n params: InvokeActionInput,\n response: InvokeActionResponse,\n mutates: true,\n requiresRole: 'experimenter',\n },\n 'experiments.aggregate': {\n method: 'GET',\n path: '/v1/orgs/:orgId/experiments/:experimentId/aggregate',\n params: AggregateInput,\n response: AggregateResponse,\n mutates: false,\n requiresRole: 'viewer',\n },\n\n 'projects.list': {\n method: 'GET',\n path: '/v1/orgs/:orgId/projects',\n params: Empty,\n response: ProjectListResponse,\n mutates: false,\n requiresRole: 'viewer',\n },\n 'projects.create': {\n method: 'POST',\n path: '/v1/orgs/:orgId/projects',\n params: CreateProjectInput,\n response: Project,\n mutates: true,\n requiresRole: 'experimenter',\n },\n 'properties.list': {\n method: 'GET',\n path: '/v1/orgs/:orgId/projects/:projectId/properties',\n params: Empty,\n response: PropertyListResponse,\n mutates: false,\n requiresRole: 'viewer',\n },\n 'properties.create': {\n method: 'POST',\n path: '/v1/orgs/:orgId/projects/:projectId/properties',\n params: CreatePropertyInput,\n response: Property,\n mutates: true,\n requiresRole: 'experimenter',\n },\n 'environments.list': {\n method: 'GET',\n path: '/v1/orgs/:orgId/projects/:projectId/environments',\n params: Empty,\n response: EnvironmentListResponse,\n mutates: false,\n requiresRole: 'viewer',\n },\n 'environments.create': {\n method: 'POST',\n path: '/v1/orgs/:orgId/projects/:projectId/environments',\n params: CreateEnvironmentInput,\n response: Environment,\n mutates: true,\n requiresRole: 'experimenter',\n },\n 'features.list': {\n method: 'GET',\n path: '/v1/orgs/:orgId/projects/:projectId/features',\n params: Empty,\n response: FeatureListResponse,\n mutates: false,\n requiresRole: 'viewer',\n },\n 'features.create': {\n method: 'POST',\n path: '/v1/orgs/:orgId/projects/:projectId/features',\n params: CreateFeatureInput,\n response: Feature,\n mutates: true,\n requiresRole: 'experimenter',\n },\n 'rules.list': {\n method: 'GET',\n path: '/v1/orgs/:orgId/features/:featureId/rules',\n params: Empty,\n response: FeatureRuleListResponse,\n mutates: false,\n requiresRole: 'viewer',\n },\n 'rules.create': {\n method: 'POST',\n path: '/v1/orgs/:orgId/features/:featureId/rules',\n params: CreateFeatureRuleInput,\n response: FeatureRule,\n mutates: true,\n requiresRole: 'experimenter',\n },\n 'environments.publish': {\n method: 'POST',\n path: '/v1/orgs/:orgId/environments/:environmentId/publish',\n params: Empty,\n response: EnvironmentPublication,\n mutates: true,\n requiresRole: 'experimenter',\n },\n 'environments.publications': {\n method: 'GET',\n path: '/v1/orgs/:orgId/environments/:environmentId/publications',\n params: Empty,\n response: PublicationListResponse,\n mutates: false,\n requiresRole: 'viewer',\n },\n 'environments.promote': {\n method: 'POST',\n path: '/v1/orgs/:orgId/environments/:environmentId/promote',\n params: PromoteEnvironmentInput,\n response: PromoteEnvironmentResponse,\n mutates: true,\n requiresRole: 'experimenter',\n },\n 'configuration.getPublished': {\n method: 'GET',\n path: '/v1/orgs/:orgId/environments/:environmentId/configuration',\n params: Empty,\n response: EnvironmentPublication,\n mutates: false,\n requiresRole: 'viewer',\n },\n\n 'manifests.publish': {\n method: 'POST',\n path: '/v1/orgs/:orgId/manifests/publish',\n params: Empty,\n response: PublishManifestResponse,\n mutates: true,\n requiresRole: 'experimenter',\n },\n 'manifests.getKeys': {\n method: 'GET',\n path: '/v1/orgs/:orgId/manifests/keys',\n params: Empty,\n response: ManifestKeysResponse,\n mutates: false,\n requiresRole: 'admin',\n },\n 'manifests.rotateKey': {\n method: 'POST',\n path: '/v1/orgs/:orgId/manifests/keys/rotate',\n params: z.object({ keyId: z.string().min(1).max(128) }),\n response: ManifestKey,\n mutates: true,\n requiresRole: 'admin',\n },\n 'manifests.retireKey': {\n method: 'POST',\n path: '/v1/orgs/:orgId/manifests/keys/retire',\n params: z.object({ keyId: z.string() }),\n response: ManifestKey,\n mutates: true,\n requiresRole: 'admin',\n },\n\n 'preview.sign': {\n method: 'POST',\n path: '/v1/orgs/:orgId/preview/sign',\n params: PreviewSignInput,\n response: PreviewSignResponse,\n mutates: true,\n requiresRole: 'experimenter',\n },\n\n 'audit.list': {\n method: 'GET',\n path: '/v1/orgs/:orgId/audit',\n params: Empty,\n response: AuditListResponse,\n mutates: false,\n requiresRole: 'viewer',\n },\n 'governance.get': {\n method: 'GET',\n path: '/v1/orgs/:orgId/governance',\n params: Empty,\n response: GovernanceStatusResponse,\n mutates: false,\n requiresRole: 'viewer',\n },\n 'governance.update': {\n method: 'POST',\n path: '/v1/orgs/:orgId/governance',\n params: UpdateGovernanceSettingsInput,\n response: GovernanceStatusResponse,\n mutates: true,\n requiresRole: 'admin',\n },\n 'audit.exports.list': {\n method: 'GET',\n path: '/v1/orgs/:orgId/audit/exports',\n params: Empty,\n response: AuditExportListResponse,\n mutates: false,\n requiresRole: 'admin',\n },\n 'audit.exports.create': {\n method: 'POST',\n path: '/v1/orgs/:orgId/audit/exports',\n params: CreateAuditExportInput,\n response: AuditExport,\n mutates: true,\n requiresRole: 'admin',\n },\n 'audit.exports.delete': {\n method: 'DELETE',\n path: '/v1/orgs/:orgId/audit/exports/:exportId',\n params: Empty,\n response: z.object({ ok: z.literal(true) }),\n mutates: true,\n requiresRole: 'admin',\n },\n\n 'apiKeys.list': {\n method: 'GET',\n path: '/v1/orgs/:orgId/api-keys',\n params: Empty,\n response: ApiKeyListResponse,\n mutates: false,\n requiresRole: 'admin',\n },\n 'apiKeys.create': {\n method: 'POST',\n path: '/v1/orgs/:orgId/api-keys',\n params: CreateApiKeyInput,\n response: CreateApiKeyResponse,\n mutates: true,\n requiresRole: 'admin',\n },\n 'apiKeys.revoke': {\n method: 'DELETE',\n path: '/v1/orgs/:orgId/api-keys/:keyId',\n params: Empty,\n response: z.object({ ok: z.literal(true) }),\n mutates: true,\n requiresRole: 'admin',\n },\n\n 'saml.get': {\n method: 'GET',\n path: '/v1/orgs/:orgId/saml',\n params: Empty,\n response: SamlConfig,\n mutates: false,\n requiresRole: 'owner',\n },\n 'saml.update': {\n method: 'POST',\n path: '/v1/orgs/:orgId/saml',\n params: SamlConfig,\n response: SamlConfig,\n mutates: true,\n requiresRole: 'owner',\n },\n\n 'testRuns.list': {\n method: 'GET',\n path: '/v1/orgs/:orgId/test-runs',\n params: TestRunListInput,\n response: TestRunListResponse,\n mutates: false,\n requiresRole: 'viewer',\n },\n 'testRuns.create': {\n method: 'POST',\n path: '/v1/orgs/:orgId/test-runs',\n params: CreateTestRunInput,\n response: TestRun,\n mutates: true,\n requiresRole: 'experimenter',\n },\n 'testRuns.get': {\n method: 'GET',\n path: '/v1/orgs/:orgId/test-runs/:runId',\n params: Empty,\n response: TestRun,\n mutates: false,\n requiresRole: 'viewer',\n },\n\n 'harness.definitions': {\n method: 'GET',\n path: '/v1/orgs/:orgId/harness/admin/agents',\n params: Empty,\n response: HarnessOperatorListResponse,\n mutates: false,\n requiresRole: 'viewer',\n },\n 'harness.invokeJob': {\n method: 'POST',\n path: '/v1/orgs/:orgId/harness/jobs/:jobName',\n params: HarnessJobInput,\n response: HarnessJobResponse,\n mutates: true,\n requiresRole: 'experimenter',\n },\n} satisfies Record<string, EndpointDef>;\n\nexport type EndpointName = keyof typeof endpoints;\nexport type EndpointParams<E extends EndpointName> = z.infer<(typeof endpoints)[E]['params']>;\nexport type EndpointResponse<E extends EndpointName> = z.infer<(typeof endpoints)[E]['response']>;\n\n/** Substitute path parameters in a path template. */\nexport function buildPath(template: string, pathParams: Record<string, string>): string {\n return template.replace(/:([a-zA-Z][a-zA-Z0-9_]*)/g, (_, name) => {\n const v = pathParams[name];\n if (v == null) throw new Error(`Missing path parameter: ${name}`);\n return encodeURIComponent(v);\n });\n}\n","import { z } from 'zod';\n\nexport const ApiError = z.object({\n code: z.enum([\n 'UNAUTHENTICATED',\n 'FORBIDDEN',\n 'NOT_FOUND',\n 'VALIDATION_FAILED',\n 'CONFLICT',\n 'RATE_LIMITED',\n 'INTERNAL',\n ]),\n message: z.string(),\n details: z.record(z.unknown()).optional(),\n});\nexport type ApiError = z.infer<typeof ApiError>;\n"]}
package/dist/index.d.cts CHANGED
@@ -4203,6 +4203,41 @@ declare const TestRunListResponse: z.ZodObject<{
4203
4203
  }[] | undefined;
4204
4204
  }[];
4205
4205
  }>;
4206
+ declare const HarnessOperatorDefinition: z.ZodObject<{
4207
+ name: z.ZodEnum<["quality-status", "srm-watcher", "analyst"]>;
4208
+ kind: z.ZodLiteral<"job">;
4209
+ description: z.ZodString;
4210
+ mutates: z.ZodBoolean;
4211
+ }, "strip", z.ZodTypeAny, {
4212
+ name: "quality-status" | "srm-watcher" | "analyst";
4213
+ kind: "job";
4214
+ description: string;
4215
+ mutates: boolean;
4216
+ }, {
4217
+ name: "quality-status" | "srm-watcher" | "analyst";
4218
+ kind: "job";
4219
+ description: string;
4220
+ mutates: boolean;
4221
+ }>;
4222
+ type HarnessOperatorDefinition = z.infer<typeof HarnessOperatorDefinition>;
4223
+ declare const HarnessOperatorListResponse: z.ZodArray<z.ZodObject<{
4224
+ name: z.ZodEnum<["quality-status", "srm-watcher", "analyst"]>;
4225
+ kind: z.ZodLiteral<"job">;
4226
+ description: z.ZodString;
4227
+ mutates: z.ZodBoolean;
4228
+ }, "strip", z.ZodTypeAny, {
4229
+ name: "quality-status" | "srm-watcher" | "analyst";
4230
+ kind: "job";
4231
+ description: string;
4232
+ mutates: boolean;
4233
+ }, {
4234
+ name: "quality-status" | "srm-watcher" | "analyst";
4235
+ kind: "job";
4236
+ description: string;
4237
+ mutates: boolean;
4238
+ }>, "many">;
4239
+ declare const HarnessJobInput: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
4240
+ declare const HarnessJobResponse: z.ZodRecord<z.ZodString, z.ZodUnknown>;
4206
4241
  declare const endpoints: {
4207
4242
  'tenants.me': {
4208
4243
  method: "GET";
@@ -12124,6 +12159,37 @@ declare const endpoints: {
12124
12159
  mutates: false;
12125
12160
  requiresRole: "viewer";
12126
12161
  };
12162
+ 'harness.definitions': {
12163
+ method: "GET";
12164
+ path: string;
12165
+ params: z.ZodObject<{}, "strip", z.ZodTypeAny, {}, {}>;
12166
+ response: z.ZodArray<z.ZodObject<{
12167
+ name: z.ZodEnum<["quality-status", "srm-watcher", "analyst"]>;
12168
+ kind: z.ZodLiteral<"job">;
12169
+ description: z.ZodString;
12170
+ mutates: z.ZodBoolean;
12171
+ }, "strip", z.ZodTypeAny, {
12172
+ name: "quality-status" | "srm-watcher" | "analyst";
12173
+ kind: "job";
12174
+ description: string;
12175
+ mutates: boolean;
12176
+ }, {
12177
+ name: "quality-status" | "srm-watcher" | "analyst";
12178
+ kind: "job";
12179
+ description: string;
12180
+ mutates: boolean;
12181
+ }>, "many">;
12182
+ mutates: false;
12183
+ requiresRole: "viewer";
12184
+ };
12185
+ 'harness.invokeJob': {
12186
+ method: "POST";
12187
+ path: string;
12188
+ params: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
12189
+ response: z.ZodRecord<z.ZodString, z.ZodUnknown>;
12190
+ mutates: true;
12191
+ requiresRole: "experimenter";
12192
+ };
12127
12193
  };
12128
12194
  type EndpointName = keyof typeof endpoints;
12129
12195
  type EndpointParams<E extends EndpointName> = z.infer<(typeof endpoints)[E]['params']>;
@@ -12146,4 +12212,4 @@ declare const ApiError: z.ZodObject<{
12146
12212
  }>;
12147
12213
  type ApiError = z.infer<typeof ApiError>;
12148
12214
 
12149
- export { AggregateInput, AggregateResponse, AggregateRow, ApiError, ApiKeyListResponse, ApiKeySummary, AuditEvent, AuditExport, AuditExportListResponse, AuditListResponse, CreateApiKeyInput, CreateApiKeyResponse, CreateAuditExportInput, CreateExperimentInput, CreateExperimentResponse, CreateTestRunInput, EdgePushResult, type EndpointDef, type EndpointName, type EndpointParams, type EndpointResponse, EnvironmentListResponse, ExperimentListResponse, ExperimentSummary, FeatureListResponse, FeatureRuleListResponse, GovernanceSettings, GovernanceStatusResponse, InvokeActionInput, InvokeActionResponse, ManifestKey, ManifestKeysResponse, PreviewSignInput, PreviewSignResponse, ProjectListResponse, PromoteEnvironmentInput, PromoteEnvironmentResponse, PropertyListResponse, PublicationListResponse, PublishManifestResponse, QualityGateResult, SamlConfig, TenantSelf, TestCaseResult, TestCaseStatus, TestRun, TestRunArtifact, TestRunListInput, TestRunListResponse, TestRunStatus, TestRunSummary, UpdateGovernanceSettingsInput, buildPath, endpoints };
12215
+ export { AggregateInput, AggregateResponse, AggregateRow, ApiError, ApiKeyListResponse, ApiKeySummary, AuditEvent, AuditExport, AuditExportListResponse, AuditListResponse, CreateApiKeyInput, CreateApiKeyResponse, CreateAuditExportInput, CreateExperimentInput, CreateExperimentResponse, CreateTestRunInput, EdgePushResult, type EndpointDef, type EndpointName, type EndpointParams, type EndpointResponse, EnvironmentListResponse, ExperimentListResponse, ExperimentSummary, FeatureListResponse, FeatureRuleListResponse, GovernanceSettings, GovernanceStatusResponse, HarnessJobInput, HarnessJobResponse, HarnessOperatorDefinition, HarnessOperatorListResponse, InvokeActionInput, InvokeActionResponse, ManifestKey, ManifestKeysResponse, PreviewSignInput, PreviewSignResponse, ProjectListResponse, PromoteEnvironmentInput, PromoteEnvironmentResponse, PropertyListResponse, PublicationListResponse, PublishManifestResponse, QualityGateResult, SamlConfig, TenantSelf, TestCaseResult, TestCaseStatus, TestRun, TestRunArtifact, TestRunListInput, TestRunListResponse, TestRunStatus, TestRunSummary, UpdateGovernanceSettingsInput, buildPath, endpoints };
package/dist/index.d.ts CHANGED
@@ -4203,6 +4203,41 @@ declare const TestRunListResponse: z.ZodObject<{
4203
4203
  }[] | undefined;
4204
4204
  }[];
4205
4205
  }>;
4206
+ declare const HarnessOperatorDefinition: z.ZodObject<{
4207
+ name: z.ZodEnum<["quality-status", "srm-watcher", "analyst"]>;
4208
+ kind: z.ZodLiteral<"job">;
4209
+ description: z.ZodString;
4210
+ mutates: z.ZodBoolean;
4211
+ }, "strip", z.ZodTypeAny, {
4212
+ name: "quality-status" | "srm-watcher" | "analyst";
4213
+ kind: "job";
4214
+ description: string;
4215
+ mutates: boolean;
4216
+ }, {
4217
+ name: "quality-status" | "srm-watcher" | "analyst";
4218
+ kind: "job";
4219
+ description: string;
4220
+ mutates: boolean;
4221
+ }>;
4222
+ type HarnessOperatorDefinition = z.infer<typeof HarnessOperatorDefinition>;
4223
+ declare const HarnessOperatorListResponse: z.ZodArray<z.ZodObject<{
4224
+ name: z.ZodEnum<["quality-status", "srm-watcher", "analyst"]>;
4225
+ kind: z.ZodLiteral<"job">;
4226
+ description: z.ZodString;
4227
+ mutates: z.ZodBoolean;
4228
+ }, "strip", z.ZodTypeAny, {
4229
+ name: "quality-status" | "srm-watcher" | "analyst";
4230
+ kind: "job";
4231
+ description: string;
4232
+ mutates: boolean;
4233
+ }, {
4234
+ name: "quality-status" | "srm-watcher" | "analyst";
4235
+ kind: "job";
4236
+ description: string;
4237
+ mutates: boolean;
4238
+ }>, "many">;
4239
+ declare const HarnessJobInput: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
4240
+ declare const HarnessJobResponse: z.ZodRecord<z.ZodString, z.ZodUnknown>;
4206
4241
  declare const endpoints: {
4207
4242
  'tenants.me': {
4208
4243
  method: "GET";
@@ -12124,6 +12159,37 @@ declare const endpoints: {
12124
12159
  mutates: false;
12125
12160
  requiresRole: "viewer";
12126
12161
  };
12162
+ 'harness.definitions': {
12163
+ method: "GET";
12164
+ path: string;
12165
+ params: z.ZodObject<{}, "strip", z.ZodTypeAny, {}, {}>;
12166
+ response: z.ZodArray<z.ZodObject<{
12167
+ name: z.ZodEnum<["quality-status", "srm-watcher", "analyst"]>;
12168
+ kind: z.ZodLiteral<"job">;
12169
+ description: z.ZodString;
12170
+ mutates: z.ZodBoolean;
12171
+ }, "strip", z.ZodTypeAny, {
12172
+ name: "quality-status" | "srm-watcher" | "analyst";
12173
+ kind: "job";
12174
+ description: string;
12175
+ mutates: boolean;
12176
+ }, {
12177
+ name: "quality-status" | "srm-watcher" | "analyst";
12178
+ kind: "job";
12179
+ description: string;
12180
+ mutates: boolean;
12181
+ }>, "many">;
12182
+ mutates: false;
12183
+ requiresRole: "viewer";
12184
+ };
12185
+ 'harness.invokeJob': {
12186
+ method: "POST";
12187
+ path: string;
12188
+ params: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
12189
+ response: z.ZodRecord<z.ZodString, z.ZodUnknown>;
12190
+ mutates: true;
12191
+ requiresRole: "experimenter";
12192
+ };
12127
12193
  };
12128
12194
  type EndpointName = keyof typeof endpoints;
12129
12195
  type EndpointParams<E extends EndpointName> = z.infer<(typeof endpoints)[E]['params']>;
@@ -12146,4 +12212,4 @@ declare const ApiError: z.ZodObject<{
12146
12212
  }>;
12147
12213
  type ApiError = z.infer<typeof ApiError>;
12148
12214
 
12149
- export { AggregateInput, AggregateResponse, AggregateRow, ApiError, ApiKeyListResponse, ApiKeySummary, AuditEvent, AuditExport, AuditExportListResponse, AuditListResponse, CreateApiKeyInput, CreateApiKeyResponse, CreateAuditExportInput, CreateExperimentInput, CreateExperimentResponse, CreateTestRunInput, EdgePushResult, type EndpointDef, type EndpointName, type EndpointParams, type EndpointResponse, EnvironmentListResponse, ExperimentListResponse, ExperimentSummary, FeatureListResponse, FeatureRuleListResponse, GovernanceSettings, GovernanceStatusResponse, InvokeActionInput, InvokeActionResponse, ManifestKey, ManifestKeysResponse, PreviewSignInput, PreviewSignResponse, ProjectListResponse, PromoteEnvironmentInput, PromoteEnvironmentResponse, PropertyListResponse, PublicationListResponse, PublishManifestResponse, QualityGateResult, SamlConfig, TenantSelf, TestCaseResult, TestCaseStatus, TestRun, TestRunArtifact, TestRunListInput, TestRunListResponse, TestRunStatus, TestRunSummary, UpdateGovernanceSettingsInput, buildPath, endpoints };
12215
+ export { AggregateInput, AggregateResponse, AggregateRow, ApiError, ApiKeyListResponse, ApiKeySummary, AuditEvent, AuditExport, AuditExportListResponse, AuditListResponse, CreateApiKeyInput, CreateApiKeyResponse, CreateAuditExportInput, CreateExperimentInput, CreateExperimentResponse, CreateTestRunInput, EdgePushResult, type EndpointDef, type EndpointName, type EndpointParams, type EndpointResponse, EnvironmentListResponse, ExperimentListResponse, ExperimentSummary, FeatureListResponse, FeatureRuleListResponse, GovernanceSettings, GovernanceStatusResponse, HarnessJobInput, HarnessJobResponse, HarnessOperatorDefinition, HarnessOperatorListResponse, InvokeActionInput, InvokeActionResponse, ManifestKey, ManifestKeysResponse, PreviewSignInput, PreviewSignResponse, ProjectListResponse, PromoteEnvironmentInput, PromoteEnvironmentResponse, PropertyListResponse, PublicationListResponse, PublishManifestResponse, QualityGateResult, SamlConfig, TenantSelf, TestCaseResult, TestCaseStatus, TestRun, TestRunArtifact, TestRunListInput, TestRunListResponse, TestRunStatus, TestRunSummary, UpdateGovernanceSettingsInput, buildPath, endpoints };
package/dist/index.js CHANGED
@@ -304,6 +304,15 @@ var TestRunListInput = z.object({
304
304
  var TestRunListResponse = z.object({
305
305
  runs: z.array(TestRun.omit({ cases: true }))
306
306
  });
307
+ var HarnessOperatorDefinition = z.object({
308
+ name: z.enum(["quality-status", "srm-watcher", "analyst"]),
309
+ kind: z.literal("job"),
310
+ description: z.string(),
311
+ mutates: z.boolean()
312
+ });
313
+ var HarnessOperatorListResponse = z.array(HarnessOperatorDefinition);
314
+ var HarnessJobInput = z.record(z.unknown()).default({});
315
+ var HarnessJobResponse = z.record(z.unknown());
307
316
  var endpoints = {
308
317
  "tenants.me": {
309
318
  method: "GET",
@@ -616,6 +625,22 @@ var endpoints = {
616
625
  response: TestRun,
617
626
  mutates: false,
618
627
  requiresRole: "viewer"
628
+ },
629
+ "harness.definitions": {
630
+ method: "GET",
631
+ path: "/v1/orgs/:orgId/harness/admin/agents",
632
+ params: Empty,
633
+ response: HarnessOperatorListResponse,
634
+ mutates: false,
635
+ requiresRole: "viewer"
636
+ },
637
+ "harness.invokeJob": {
638
+ method: "POST",
639
+ path: "/v1/orgs/:orgId/harness/jobs/:jobName",
640
+ params: HarnessJobInput,
641
+ response: HarnessJobResponse,
642
+ mutates: true,
643
+ requiresRole: "experimenter"
619
644
  }
620
645
  };
621
646
  function buildPath(template, pathParams) {
@@ -639,6 +664,6 @@ var ApiError = z.object({
639
664
  details: z.record(z.unknown()).optional()
640
665
  });
641
666
 
642
- export { AggregateInput, AggregateResponse, AggregateRow, ApiError, ApiKeyListResponse, ApiKeySummary, AuditEvent, AuditExport, AuditExportListResponse, AuditListResponse, CreateApiKeyInput, CreateApiKeyResponse, CreateAuditExportInput, CreateExperimentInput, CreateExperimentResponse, CreateTestRunInput, EdgePushResult, EnvironmentListResponse, ExperimentListResponse, ExperimentSummary, FeatureListResponse, FeatureRuleListResponse, GovernanceSettings, GovernanceStatusResponse, InvokeActionInput, InvokeActionResponse, ManifestKey, ManifestKeysResponse, PreviewSignInput, PreviewSignResponse, ProjectListResponse, PromoteEnvironmentInput, PromoteEnvironmentResponse, PropertyListResponse, PublicationListResponse, PublishManifestResponse, QualityGateResult, SamlConfig, TenantSelf, TestCaseResult, TestCaseStatus, TestRun, TestRunArtifact, TestRunListInput, TestRunListResponse, TestRunStatus, TestRunSummary, UpdateGovernanceSettingsInput, buildPath, endpoints };
667
+ export { AggregateInput, AggregateResponse, AggregateRow, ApiError, ApiKeyListResponse, ApiKeySummary, AuditEvent, AuditExport, AuditExportListResponse, AuditListResponse, CreateApiKeyInput, CreateApiKeyResponse, CreateAuditExportInput, CreateExperimentInput, CreateExperimentResponse, CreateTestRunInput, EdgePushResult, EnvironmentListResponse, ExperimentListResponse, ExperimentSummary, FeatureListResponse, FeatureRuleListResponse, GovernanceSettings, GovernanceStatusResponse, HarnessJobInput, HarnessJobResponse, HarnessOperatorDefinition, HarnessOperatorListResponse, InvokeActionInput, InvokeActionResponse, ManifestKey, ManifestKeysResponse, PreviewSignInput, PreviewSignResponse, ProjectListResponse, PromoteEnvironmentInput, PromoteEnvironmentResponse, PropertyListResponse, PublicationListResponse, PublishManifestResponse, QualityGateResult, SamlConfig, TenantSelf, TestCaseResult, TestCaseStatus, TestRun, TestRunArtifact, TestRunListInput, TestRunListResponse, TestRunStatus, TestRunSummary, UpdateGovernanceSettingsInput, buildPath, endpoints };
643
668
  //# sourceMappingURL=index.js.map
644
669
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/endpoints.ts","../src/errors.ts"],"names":["z"],"mappings":"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","file":"index.js","sourcesContent":["import {\n ActionId,\n CreateEnvironmentInput,\n CreateFeatureInput,\n CreateFeatureRuleInput,\n CreateProjectInput,\n CreatePropertyInput,\n Environment,\n EnvironmentPublication,\n Experiment,\n ExperimentId,\n ExperimentSpec,\n ExperimentSpecBase,\n ExperimentState,\n Feature,\n FeatureRule,\n Project,\n Property,\n} from '@fabricorg/experiments-domain';\nimport { z } from 'zod';\n\n/**\n * Each endpoint declares method, path template, request schema, and response\n * schema. The server registers handlers against this table; the api-client\n * derives its method signatures from it. Drift between client and server is\n * impossible by construction.\n */\n\nexport interface EndpointDef<\n TParams extends z.ZodTypeAny = z.ZodTypeAny,\n TResponse extends z.ZodTypeAny = z.ZodTypeAny,\n> {\n method: 'GET' | 'POST' | 'DELETE';\n /** Path with `:param` placeholders, e.g. `/v1/orgs/:orgId/experiments`. */\n path: string;\n /** Request schema. For GET, used to validate query params; otherwise body. */\n params: TParams;\n response: TResponse;\n /** True if this endpoint mutates state — server applies idempotency cache. */\n mutates: boolean;\n /** Required role on the active org. `null` = any authenticated session. */\n requiresRole: 'owner' | 'admin' | 'experimenter' | 'viewer' | null;\n}\n\nconst Empty = z.object({});\n\n// ---- tenants ----------------------------------------------------------------\n\nexport const TenantSelf = z.object({\n organization: z.object({\n id: z.string(),\n name: z.string(),\n slug: z.string(),\n createdAt: z.string().datetime(),\n }),\n member: z.object({\n role: z.enum(['owner', 'admin', 'experimenter', 'viewer']),\n }),\n user: z.object({\n id: z.string(),\n email: z.string().email(),\n name: z.string().nullable(),\n }),\n});\nexport type TenantSelf = z.infer<typeof TenantSelf>;\n\n// ---- workspace hierarchy ---------------------------------------------------\n\nexport const ProjectListResponse = z.object({ projects: z.array(Project) });\nexport const PropertyListResponse = z.object({ properties: z.array(Property) });\nexport const EnvironmentListResponse = z.object({ environments: z.array(Environment) });\nexport const FeatureListResponse = z.object({ features: z.array(Feature) });\nexport const FeatureRuleListResponse = z.object({ rules: z.array(FeatureRule) });\nexport const PublicationListResponse = z.object({ publications: z.array(EnvironmentPublication) });\nexport const PromoteEnvironmentInput = z.object({ sourceEnvironmentId: z.string().uuid() });\nexport const PromoteEnvironmentResponse = z.object({\n sourceEnvironmentId: z.string().uuid(),\n sourceVersion: z.number().int().positive(),\n targetEnvironmentId: z.string().uuid(),\n promotedRuleCount: z.number().int().nonnegative(),\n});\n\n// ---- experiments ------------------------------------------------------------\n\nexport const ExperimentSummary = z.object({\n id: Experiment.shape.id,\n name: Experiment.shape.name,\n state: ExperimentState,\n updatedAt: z.string().datetime(),\n});\nexport type ExperimentSummary = z.infer<typeof ExperimentSummary>;\n\nexport const ExperimentListResponse = z.object({\n experiments: z.array(ExperimentSummary),\n});\nexport type ExperimentListResponse = z.infer<typeof ExperimentListResponse>;\n\nexport const CreateExperimentInput = ExperimentSpecBase;\nexport type CreateExperimentInput = z.infer<typeof CreateExperimentInput>;\n\nexport const CreateExperimentResponse = z.object({\n experimentId: ExperimentId,\n idempotent: z.boolean().optional(),\n});\nexport type CreateExperimentResponse = z.infer<typeof CreateExperimentResponse>;\n\n/**\n * Aggregate row per variant for a given metric over an optional time window.\n * Sourced from the warehouse adapter (Databricks in prod, Local in dev).\n */\nexport const AggregateRow = z.object({\n variantKey: z.string(),\n exposureCount: z.number().int().nonnegative(),\n conversionCount: z.number().int().nonnegative(),\n conversionSum: z.number(),\n failureCount: z.number().int().nonnegative().default(0),\n});\nexport type AggregateRow = z.infer<typeof AggregateRow>;\n\nexport const AggregateInput = z.object({\n metric: z.string().min(1).max(120),\n fromIso: z.string().datetime().optional(),\n untilIso: z.string().datetime().optional(),\n segmentKey: z\n .string()\n .min(1)\n .max(80)\n .regex(/^[A-Za-z0-9_.-]+$/)\n .optional(),\n prePeriodDays: z.coerce.number().int().min(1).max(365).optional(),\n});\nexport type AggregateInput = z.infer<typeof AggregateInput>;\n\nexport const AggregateResponse = z.object({\n experimentId: ExperimentId,\n metric: z.string(),\n rows: z.array(AggregateRow),\n /** ISO datetime — when this aggregate was computed. SDKs may cache by this. */\n computedAt: z.string().datetime(),\n analytics: z\n .object({\n variants: z.array(\n z.object({\n variantKey: z.string(),\n exposedSubjects: z.number().int().nonnegative(),\n convertedSubjects: z.number().int().nonnegative(),\n meanTimeToConvertMs: z.number().nonnegative().nullable(),\n medianTimeToConvertMs: z.number().nonnegative().nullable(),\n p90TimeToConvertMs: z.number().nonnegative().nullable(),\n meanConversionDepth: z.number().nonnegative(),\n conversionDepth: z.object({\n oneOrMore: z.number().int().nonnegative(),\n twoOrMore: z.number().int().nonnegative(),\n threeOrMore: z.number().int().nonnegative(),\n }),\n cupedAdjustedRate: z.number().nullable(),\n cupedLift: z.number().nullable(),\n }),\n ),\n segments: z.array(\n z.object({\n segmentValue: z.string(),\n variantKey: z.string(),\n exposureCount: z.number().int().nonnegative(),\n conversionCount: z.number().int().nonnegative(),\n conversionRate: z.number().min(0).max(1),\n }),\n ),\n segmentKey: z.string().optional(),\n cuped: z.object({\n available: z.boolean(),\n prePeriodDays: z.number().int().positive(),\n theta: z.number().nullable(),\n varianceReduction: z.number().nullable(),\n }),\n })\n .optional(),\n});\nexport type AggregateResponse = z.infer<typeof AggregateResponse>;\n\nexport const InvokeActionInput = z.object({\n actionId: ActionId,\n params: z.record(z.unknown()),\n /** Optional client-supplied idempotency key. */\n idempotencyKey: z.string().min(8).max(128).optional(),\n});\nexport type InvokeActionInput = z.infer<typeof InvokeActionInput>;\n\nexport const InvokeActionResponse = z.object({\n success: z.boolean(),\n data: z.record(z.unknown()).optional(),\n error: z.string().optional(),\n});\nexport type InvokeActionResponse = z.infer<typeof InvokeActionResponse>;\n\n// ---- manifests --------------------------------------------------------------\n\n/** Result of pushing the signed manifest to the Cloudflare manifest-worker. */\nexport const EdgePushResult = z.object({\n pushed: z.boolean(),\n reason: z.string().optional(),\n status: z.number().int().optional(),\n});\nexport type EdgePushResult = z.infer<typeof EdgePushResult>;\n\nexport const PublishManifestResponse = z.object({\n manifestVersion: z.number().int().nonnegative(),\n contentHash: z.string().regex(/^[0-9a-f]{64}$/),\n experimentCount: z.number().int().nonnegative(),\n /** Edge push status. `pushed: false` with `reason: 'unconfigured'` is normal in local dev. */\n edgePush: EdgePushResult,\n});\nexport type PublishManifestResponse = z.infer<typeof PublishManifestResponse>;\n\nexport const ManifestKey = z.object({\n keyId: z.string(),\n publicKeyHex: z.string().regex(/^[0-9a-f]+$/),\n status: z.enum(['active', 'retiring', 'retired']),\n createdAt: z.string().datetime(),\n retiredAt: z.string().datetime().nullable(),\n});\nexport type ManifestKey = z.infer<typeof ManifestKey>;\n\nexport const ManifestKeysResponse = z.object({ keys: z.array(ManifestKey) });\nexport type ManifestKeysResponse = z.infer<typeof ManifestKeysResponse>;\n\n// ---- preview tokens ---------------------------------------------------------\n\nexport const PreviewSignInput = z.object({\n experimentId: ExperimentId,\n variantKey: z.string().min(1).max(32),\n /** Token TTL in seconds. Clamped server-side to [60, 3600]; default 900. */\n ttlSeconds: z.number().int().min(60).max(3600).optional(),\n});\nexport type PreviewSignInput = z.infer<typeof PreviewSignInput>;\n\nexport const PreviewSignResponse = z.object({\n token: z.string(),\n /** ISO datetime when the token expires. */\n expiresAt: z.string().datetime(),\n /** ID of the public JWKS key used to sign — exposed for debugging only. */\n keyId: z.string(),\n /** Unique JWT id for audit/debugging and future replay controls. */\n jti: z.string(),\n});\nexport type PreviewSignResponse = z.infer<typeof PreviewSignResponse>;\n\n// ---- audit ------------------------------------------------------------------\n\nexport const AuditEvent = z.object({\n id: z.string(),\n type: z.string(),\n experimentId: z.string(),\n actorId: z.string(),\n at: z.string().datetime(),\n payload: z.record(z.unknown()),\n});\nexport type AuditEvent = z.infer<typeof AuditEvent>;\n\nexport const AuditListResponse = z.object({ events: z.array(AuditEvent) });\nexport type AuditListResponse = z.infer<typeof AuditListResponse>;\n\n// ---- enterprise governance -------------------------------------------------\n\nexport const GovernanceSettings = z.object({\n requireQualityForProduction: z.boolean(),\n requiredQualitySuites: z.array(z.string().min(1).max(240)).max(50),\n qualityMaxAgeHours: z.number().int().min(1).max(8760),\n retentionDays: z.number().int().min(30).max(3650),\n legalHold: z.boolean(),\n updatedBy: z.string().nullable(),\n updatedAt: z.string().datetime().nullable(),\n});\nexport type GovernanceSettings = z.infer<typeof GovernanceSettings>;\n\nexport const UpdateGovernanceSettingsInput = GovernanceSettings.pick({\n requireQualityForProduction: true,\n requiredQualitySuites: true,\n qualityMaxAgeHours: true,\n retentionDays: true,\n legalHold: true,\n});\nexport type UpdateGovernanceSettingsInput = z.infer<typeof UpdateGovernanceSettingsInput>;\n\nexport const QualityGateResult = z.object({\n enabled: z.boolean(),\n passed: z.boolean(),\n checks: z.array(\n z.object({\n suite: z.string(),\n passed: z.boolean(),\n reason: z.string(),\n runId: z.string().nullable(),\n finishedAt: z.string().datetime().nullable(),\n }),\n ),\n});\nexport type QualityGateResult = z.infer<typeof QualityGateResult>;\n\nexport const GovernanceStatusResponse = z.object({\n settings: GovernanceSettings,\n qualityGate: QualityGateResult,\n});\n\nexport const AuditExport = z.object({\n id: z.string(),\n destinationKind: z.enum(['s3', 'r2', 'splunk-hec']),\n status: z.enum(['active', 'paused', 'failed']),\n lastCursorAt: z.string().datetime().nullable(),\n});\nexport const AuditExportListResponse = z.object({ exports: z.array(AuditExport) });\n\nexport const CreateAuditExportInput = z.object({\n destinationKind: z.enum(['s3', 'r2', 'splunk-hec']),\n /** Free-form config; encrypted at rest. Schema enforced by destination kind. */\n config: z.record(z.unknown()),\n});\n\n// ---- api keys ---------------------------------------------------------------\n\nexport const ApiKeySummary = z.object({\n id: z.string(),\n name: z.string(),\n prefix: z.string(),\n role: z.enum(['owner', 'admin', 'experimenter', 'viewer']),\n scopes: z.array(z.enum(['read', 'write', 'admin'])),\n createdAt: z.string().datetime(),\n lastUsedAt: z.string().datetime().nullable(),\n expiresAt: z.string().datetime().nullable(),\n});\nexport const ApiKeyListResponse = z.object({ keys: z.array(ApiKeySummary) });\n\nexport const CreateApiKeyInput = z.object({\n name: z.string().min(1).max(120),\n /** ISO datetime of expiry; null for non-expiring (not recommended in prod). */\n expiresAt: z.string().datetime().nullable(),\n /** Role assigned to the key. Defaults to the creator's role. */\n role: z.enum(['owner', 'admin', 'experimenter', 'viewer']).optional(),\n /** Permission scopes assigned to the key. Defaults are derived from role. */\n scopes: z.array(z.enum(['read', 'write', 'admin'])).optional(),\n});\nexport type CreateApiKeyInput = z.infer<typeof CreateApiKeyInput>;\n\nexport const CreateApiKeyResponse = ApiKeySummary.extend({\n /** Plaintext key, returned exactly once at creation time. */\n key: z.string(),\n});\nexport type CreateApiKeyResponse = z.infer<typeof CreateApiKeyResponse>;\n\n// ---- SAML / SSO --------------------------------------------------------------\n\nexport const SamlConfig = z\n .object({\n enabled: z.boolean(),\n connectionId: z.string().min(1).max(200).nullable(),\n issuer: z.string().min(1).max(500).nullable(),\n ssoUrl: z.string().url().nullable(),\n certificate: z.string().min(1).max(10000).nullable(),\n })\n .refine(\n (value) =>\n !value.enabled ||\n Boolean(value.connectionId && value.issuer && value.ssoUrl && value.certificate),\n {\n message: 'connectionId, issuer, ssoUrl, certificate required when SAML is enabled',\n },\n );\nexport type SamlConfig = z.infer<typeof SamlConfig>;\n\n// ---- quality / test evidence ------------------------------------------------\n\nexport const TestRunStatus = z.enum(['running', 'passed', 'failed', 'skipped', 'canceled']);\nexport type TestRunStatus = z.infer<typeof TestRunStatus>;\n\nexport const TestCaseStatus = z.enum([\n 'passed',\n 'failed',\n 'skipped',\n 'pending',\n 'undefined',\n 'unknown',\n]);\n\nexport const TestCaseResult = z.object({\n id: z.string().max(240).optional(),\n name: z.string().min(1).max(500),\n uri: z.string().max(1000).optional(),\n status: TestCaseStatus,\n durationMs: z.number().int().nonnegative().max(86_400_000),\n tags: z.array(z.string().max(120)).max(100).default([]),\n error: z.string().max(65_536).optional(),\n statementId: z.string().max(240).optional(),\n resourceUrl: z.string().url().max(4000).optional(),\n details: z.record(z.unknown()).optional(),\n});\nexport type TestCaseResult = z.infer<typeof TestCaseResult>;\n\nexport const TestRunSummary = z.object({\n total: z.number().int().nonnegative(),\n passed: z.number().int().nonnegative(),\n failed: z.number().int().nonnegative(),\n skipped: z.number().int().nonnegative(),\n pending: z.number().int().nonnegative().default(0),\n});\n\nexport const TestRunArtifact = z.object({\n name: z.string().min(1).max(240),\n url: z.string().url().max(4000),\n mediaType: z.string().max(240).optional(),\n});\n\nexport const CreateTestRunInput = z.object({\n externalId: z.string().min(1).max(300).optional(),\n source: z.enum(['bdd', 'live-suite', 'junit', 'cli', 'other']),\n suite: z.string().min(1).max(240),\n status: TestRunStatus,\n startedAt: z.string().datetime().nullable().optional(),\n finishedAt: z.string().datetime().nullable().optional(),\n durationMs: z.number().int().nonnegative().max(604_800_000).default(0),\n summary: TestRunSummary,\n environment: z.record(z.unknown()).default({}),\n revision: z.record(z.unknown()).default({}),\n cases: z.array(TestCaseResult).max(2000).default([]),\n artifacts: z.array(TestRunArtifact).max(100).default([]),\n});\nexport type CreateTestRunInput = z.infer<typeof CreateTestRunInput>;\n\nexport const TestRun = CreateTestRunInput.extend({\n id: z.string().uuid(),\n orgId: z.string(),\n createdBy: z.string(),\n createdAt: z.string().datetime(),\n updatedAt: z.string().datetime(),\n});\nexport type TestRun = z.infer<typeof TestRun>;\n\nexport const TestRunListInput = z.object({\n status: TestRunStatus.optional(),\n source: CreateTestRunInput.shape.source.optional(),\n suite: z.string().min(1).max(240).optional(),\n targetPack: z\n .string()\n .min(1)\n .max(120)\n .regex(/^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$/)\n .optional(),\n limit: z.coerce.number().int().min(1).max(200).optional(),\n offset: z.coerce.number().int().min(0).max(100_000).optional(),\n});\nexport const TestRunListResponse = z.object({\n runs: z.array(TestRun.omit({ cases: true })),\n});\n\n// ---- the registry ----------------------------------------------------------\n\nexport const endpoints = {\n 'tenants.me': {\n method: 'GET',\n path: '/v1/tenants/me',\n params: Empty,\n response: TenantSelf,\n mutates: false,\n requiresRole: null,\n },\n\n 'experiments.list': {\n method: 'GET',\n path: '/v1/orgs/:orgId/experiments',\n params: Empty,\n response: ExperimentListResponse,\n mutates: false,\n requiresRole: 'viewer',\n },\n 'experiments.create': {\n method: 'POST',\n path: '/v1/orgs/:orgId/experiments',\n params: CreateExperimentInput,\n response: CreateExperimentResponse,\n mutates: true,\n requiresRole: 'experimenter',\n },\n 'experiments.get': {\n method: 'GET',\n path: '/v1/orgs/:orgId/experiments/:experimentId',\n params: Empty,\n response: Experiment,\n mutates: false,\n requiresRole: 'viewer',\n },\n 'experiments.invokeAction': {\n method: 'POST',\n path: '/v1/orgs/:orgId/experiments/actions',\n params: InvokeActionInput,\n response: InvokeActionResponse,\n mutates: true,\n requiresRole: 'experimenter',\n },\n 'experiments.aggregate': {\n method: 'GET',\n path: '/v1/orgs/:orgId/experiments/:experimentId/aggregate',\n params: AggregateInput,\n response: AggregateResponse,\n mutates: false,\n requiresRole: 'viewer',\n },\n\n 'projects.list': {\n method: 'GET',\n path: '/v1/orgs/:orgId/projects',\n params: Empty,\n response: ProjectListResponse,\n mutates: false,\n requiresRole: 'viewer',\n },\n 'projects.create': {\n method: 'POST',\n path: '/v1/orgs/:orgId/projects',\n params: CreateProjectInput,\n response: Project,\n mutates: true,\n requiresRole: 'experimenter',\n },\n 'properties.list': {\n method: 'GET',\n path: '/v1/orgs/:orgId/projects/:projectId/properties',\n params: Empty,\n response: PropertyListResponse,\n mutates: false,\n requiresRole: 'viewer',\n },\n 'properties.create': {\n method: 'POST',\n path: '/v1/orgs/:orgId/projects/:projectId/properties',\n params: CreatePropertyInput,\n response: Property,\n mutates: true,\n requiresRole: 'experimenter',\n },\n 'environments.list': {\n method: 'GET',\n path: '/v1/orgs/:orgId/projects/:projectId/environments',\n params: Empty,\n response: EnvironmentListResponse,\n mutates: false,\n requiresRole: 'viewer',\n },\n 'environments.create': {\n method: 'POST',\n path: '/v1/orgs/:orgId/projects/:projectId/environments',\n params: CreateEnvironmentInput,\n response: Environment,\n mutates: true,\n requiresRole: 'experimenter',\n },\n 'features.list': {\n method: 'GET',\n path: '/v1/orgs/:orgId/projects/:projectId/features',\n params: Empty,\n response: FeatureListResponse,\n mutates: false,\n requiresRole: 'viewer',\n },\n 'features.create': {\n method: 'POST',\n path: '/v1/orgs/:orgId/projects/:projectId/features',\n params: CreateFeatureInput,\n response: Feature,\n mutates: true,\n requiresRole: 'experimenter',\n },\n 'rules.list': {\n method: 'GET',\n path: '/v1/orgs/:orgId/features/:featureId/rules',\n params: Empty,\n response: FeatureRuleListResponse,\n mutates: false,\n requiresRole: 'viewer',\n },\n 'rules.create': {\n method: 'POST',\n path: '/v1/orgs/:orgId/features/:featureId/rules',\n params: CreateFeatureRuleInput,\n response: FeatureRule,\n mutates: true,\n requiresRole: 'experimenter',\n },\n 'environments.publish': {\n method: 'POST',\n path: '/v1/orgs/:orgId/environments/:environmentId/publish',\n params: Empty,\n response: EnvironmentPublication,\n mutates: true,\n requiresRole: 'experimenter',\n },\n 'environments.publications': {\n method: 'GET',\n path: '/v1/orgs/:orgId/environments/:environmentId/publications',\n params: Empty,\n response: PublicationListResponse,\n mutates: false,\n requiresRole: 'viewer',\n },\n 'environments.promote': {\n method: 'POST',\n path: '/v1/orgs/:orgId/environments/:environmentId/promote',\n params: PromoteEnvironmentInput,\n response: PromoteEnvironmentResponse,\n mutates: true,\n requiresRole: 'experimenter',\n },\n 'configuration.getPublished': {\n method: 'GET',\n path: '/v1/orgs/:orgId/environments/:environmentId/configuration',\n params: Empty,\n response: EnvironmentPublication,\n mutates: false,\n requiresRole: 'viewer',\n },\n\n 'manifests.publish': {\n method: 'POST',\n path: '/v1/orgs/:orgId/manifests/publish',\n params: Empty,\n response: PublishManifestResponse,\n mutates: true,\n requiresRole: 'experimenter',\n },\n 'manifests.getKeys': {\n method: 'GET',\n path: '/v1/orgs/:orgId/manifests/keys',\n params: Empty,\n response: ManifestKeysResponse,\n mutates: false,\n requiresRole: 'admin',\n },\n 'manifests.rotateKey': {\n method: 'POST',\n path: '/v1/orgs/:orgId/manifests/keys/rotate',\n params: z.object({ keyId: z.string().min(1).max(128) }),\n response: ManifestKey,\n mutates: true,\n requiresRole: 'admin',\n },\n 'manifests.retireKey': {\n method: 'POST',\n path: '/v1/orgs/:orgId/manifests/keys/retire',\n params: z.object({ keyId: z.string() }),\n response: ManifestKey,\n mutates: true,\n requiresRole: 'admin',\n },\n\n 'preview.sign': {\n method: 'POST',\n path: '/v1/orgs/:orgId/preview/sign',\n params: PreviewSignInput,\n response: PreviewSignResponse,\n mutates: true,\n requiresRole: 'experimenter',\n },\n\n 'audit.list': {\n method: 'GET',\n path: '/v1/orgs/:orgId/audit',\n params: Empty,\n response: AuditListResponse,\n mutates: false,\n requiresRole: 'viewer',\n },\n 'governance.get': {\n method: 'GET',\n path: '/v1/orgs/:orgId/governance',\n params: Empty,\n response: GovernanceStatusResponse,\n mutates: false,\n requiresRole: 'viewer',\n },\n 'governance.update': {\n method: 'POST',\n path: '/v1/orgs/:orgId/governance',\n params: UpdateGovernanceSettingsInput,\n response: GovernanceStatusResponse,\n mutates: true,\n requiresRole: 'admin',\n },\n 'audit.exports.list': {\n method: 'GET',\n path: '/v1/orgs/:orgId/audit/exports',\n params: Empty,\n response: AuditExportListResponse,\n mutates: false,\n requiresRole: 'admin',\n },\n 'audit.exports.create': {\n method: 'POST',\n path: '/v1/orgs/:orgId/audit/exports',\n params: CreateAuditExportInput,\n response: AuditExport,\n mutates: true,\n requiresRole: 'admin',\n },\n 'audit.exports.delete': {\n method: 'DELETE',\n path: '/v1/orgs/:orgId/audit/exports/:exportId',\n params: Empty,\n response: z.object({ ok: z.literal(true) }),\n mutates: true,\n requiresRole: 'admin',\n },\n\n 'apiKeys.list': {\n method: 'GET',\n path: '/v1/orgs/:orgId/api-keys',\n params: Empty,\n response: ApiKeyListResponse,\n mutates: false,\n requiresRole: 'admin',\n },\n 'apiKeys.create': {\n method: 'POST',\n path: '/v1/orgs/:orgId/api-keys',\n params: CreateApiKeyInput,\n response: CreateApiKeyResponse,\n mutates: true,\n requiresRole: 'admin',\n },\n 'apiKeys.revoke': {\n method: 'DELETE',\n path: '/v1/orgs/:orgId/api-keys/:keyId',\n params: Empty,\n response: z.object({ ok: z.literal(true) }),\n mutates: true,\n requiresRole: 'admin',\n },\n\n 'saml.get': {\n method: 'GET',\n path: '/v1/orgs/:orgId/saml',\n params: Empty,\n response: SamlConfig,\n mutates: false,\n requiresRole: 'owner',\n },\n 'saml.update': {\n method: 'POST',\n path: '/v1/orgs/:orgId/saml',\n params: SamlConfig,\n response: SamlConfig,\n mutates: true,\n requiresRole: 'owner',\n },\n\n 'testRuns.list': {\n method: 'GET',\n path: '/v1/orgs/:orgId/test-runs',\n params: TestRunListInput,\n response: TestRunListResponse,\n mutates: false,\n requiresRole: 'viewer',\n },\n 'testRuns.create': {\n method: 'POST',\n path: '/v1/orgs/:orgId/test-runs',\n params: CreateTestRunInput,\n response: TestRun,\n mutates: true,\n requiresRole: 'experimenter',\n },\n 'testRuns.get': {\n method: 'GET',\n path: '/v1/orgs/:orgId/test-runs/:runId',\n params: Empty,\n response: TestRun,\n mutates: false,\n requiresRole: 'viewer',\n },\n} satisfies Record<string, EndpointDef>;\n\nexport type EndpointName = keyof typeof endpoints;\nexport type EndpointParams<E extends EndpointName> = z.infer<(typeof endpoints)[E]['params']>;\nexport type EndpointResponse<E extends EndpointName> = z.infer<(typeof endpoints)[E]['response']>;\n\n/** Substitute path parameters in a path template. */\nexport function buildPath(template: string, pathParams: Record<string, string>): string {\n return template.replace(/:([a-zA-Z][a-zA-Z0-9_]*)/g, (_, name) => {\n const v = pathParams[name];\n if (v == null) throw new Error(`Missing path parameter: ${name}`);\n return encodeURIComponent(v);\n });\n}\n","import { z } from 'zod';\n\nexport const ApiError = z.object({\n code: z.enum([\n 'UNAUTHENTICATED',\n 'FORBIDDEN',\n 'NOT_FOUND',\n 'VALIDATION_FAILED',\n 'CONFLICT',\n 'RATE_LIMITED',\n 'INTERNAL',\n ]),\n message: z.string(),\n details: z.record(z.unknown()).optional(),\n});\nexport type ApiError = z.infer<typeof ApiError>;\n"]}
1
+ {"version":3,"sources":["../src/endpoints.ts","../src/errors.ts"],"names":["z"],"mappings":"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","file":"index.js","sourcesContent":["import {\n ActionId,\n CreateEnvironmentInput,\n CreateFeatureInput,\n CreateFeatureRuleInput,\n CreateProjectInput,\n CreatePropertyInput,\n Environment,\n EnvironmentPublication,\n Experiment,\n ExperimentId,\n ExperimentSpec,\n ExperimentSpecBase,\n ExperimentState,\n Feature,\n FeatureRule,\n Project,\n Property,\n} from '@fabricorg/experiments-domain';\nimport { z } from 'zod';\n\n/**\n * Each endpoint declares method, path template, request schema, and response\n * schema. The server registers handlers against this table; the api-client\n * derives its method signatures from it. Drift between client and server is\n * impossible by construction.\n */\n\nexport interface EndpointDef<\n TParams extends z.ZodTypeAny = z.ZodTypeAny,\n TResponse extends z.ZodTypeAny = z.ZodTypeAny,\n> {\n method: 'GET' | 'POST' | 'DELETE';\n /** Path with `:param` placeholders, e.g. `/v1/orgs/:orgId/experiments`. */\n path: string;\n /** Request schema. For GET, used to validate query params; otherwise body. */\n params: TParams;\n response: TResponse;\n /** True if this endpoint mutates state — server applies idempotency cache. */\n mutates: boolean;\n /** Required role on the active org. `null` = any authenticated session. */\n requiresRole: 'owner' | 'admin' | 'experimenter' | 'viewer' | null;\n}\n\nconst Empty = z.object({});\n\n// ---- tenants ----------------------------------------------------------------\n\nexport const TenantSelf = z.object({\n organization: z.object({\n id: z.string(),\n name: z.string(),\n slug: z.string(),\n createdAt: z.string().datetime(),\n }),\n member: z.object({\n role: z.enum(['owner', 'admin', 'experimenter', 'viewer']),\n }),\n user: z.object({\n id: z.string(),\n email: z.string().email(),\n name: z.string().nullable(),\n }),\n});\nexport type TenantSelf = z.infer<typeof TenantSelf>;\n\n// ---- workspace hierarchy ---------------------------------------------------\n\nexport const ProjectListResponse = z.object({ projects: z.array(Project) });\nexport const PropertyListResponse = z.object({ properties: z.array(Property) });\nexport const EnvironmentListResponse = z.object({ environments: z.array(Environment) });\nexport const FeatureListResponse = z.object({ features: z.array(Feature) });\nexport const FeatureRuleListResponse = z.object({ rules: z.array(FeatureRule) });\nexport const PublicationListResponse = z.object({ publications: z.array(EnvironmentPublication) });\nexport const PromoteEnvironmentInput = z.object({ sourceEnvironmentId: z.string().uuid() });\nexport const PromoteEnvironmentResponse = z.object({\n sourceEnvironmentId: z.string().uuid(),\n sourceVersion: z.number().int().positive(),\n targetEnvironmentId: z.string().uuid(),\n promotedRuleCount: z.number().int().nonnegative(),\n});\n\n// ---- experiments ------------------------------------------------------------\n\nexport const ExperimentSummary = z.object({\n id: Experiment.shape.id,\n name: Experiment.shape.name,\n state: ExperimentState,\n updatedAt: z.string().datetime(),\n});\nexport type ExperimentSummary = z.infer<typeof ExperimentSummary>;\n\nexport const ExperimentListResponse = z.object({\n experiments: z.array(ExperimentSummary),\n});\nexport type ExperimentListResponse = z.infer<typeof ExperimentListResponse>;\n\nexport const CreateExperimentInput = ExperimentSpecBase;\nexport type CreateExperimentInput = z.infer<typeof CreateExperimentInput>;\n\nexport const CreateExperimentResponse = z.object({\n experimentId: ExperimentId,\n idempotent: z.boolean().optional(),\n});\nexport type CreateExperimentResponse = z.infer<typeof CreateExperimentResponse>;\n\n/**\n * Aggregate row per variant for a given metric over an optional time window.\n * Sourced from the warehouse adapter (Databricks in prod, Local in dev).\n */\nexport const AggregateRow = z.object({\n variantKey: z.string(),\n exposureCount: z.number().int().nonnegative(),\n conversionCount: z.number().int().nonnegative(),\n conversionSum: z.number(),\n failureCount: z.number().int().nonnegative().default(0),\n});\nexport type AggregateRow = z.infer<typeof AggregateRow>;\n\nexport const AggregateInput = z.object({\n metric: z.string().min(1).max(120),\n fromIso: z.string().datetime().optional(),\n untilIso: z.string().datetime().optional(),\n segmentKey: z\n .string()\n .min(1)\n .max(80)\n .regex(/^[A-Za-z0-9_.-]+$/)\n .optional(),\n prePeriodDays: z.coerce.number().int().min(1).max(365).optional(),\n});\nexport type AggregateInput = z.infer<typeof AggregateInput>;\n\nexport const AggregateResponse = z.object({\n experimentId: ExperimentId,\n metric: z.string(),\n rows: z.array(AggregateRow),\n /** ISO datetime — when this aggregate was computed. SDKs may cache by this. */\n computedAt: z.string().datetime(),\n analytics: z\n .object({\n variants: z.array(\n z.object({\n variantKey: z.string(),\n exposedSubjects: z.number().int().nonnegative(),\n convertedSubjects: z.number().int().nonnegative(),\n meanTimeToConvertMs: z.number().nonnegative().nullable(),\n medianTimeToConvertMs: z.number().nonnegative().nullable(),\n p90TimeToConvertMs: z.number().nonnegative().nullable(),\n meanConversionDepth: z.number().nonnegative(),\n conversionDepth: z.object({\n oneOrMore: z.number().int().nonnegative(),\n twoOrMore: z.number().int().nonnegative(),\n threeOrMore: z.number().int().nonnegative(),\n }),\n cupedAdjustedRate: z.number().nullable(),\n cupedLift: z.number().nullable(),\n }),\n ),\n segments: z.array(\n z.object({\n segmentValue: z.string(),\n variantKey: z.string(),\n exposureCount: z.number().int().nonnegative(),\n conversionCount: z.number().int().nonnegative(),\n conversionRate: z.number().min(0).max(1),\n }),\n ),\n segmentKey: z.string().optional(),\n cuped: z.object({\n available: z.boolean(),\n prePeriodDays: z.number().int().positive(),\n theta: z.number().nullable(),\n varianceReduction: z.number().nullable(),\n }),\n })\n .optional(),\n});\nexport type AggregateResponse = z.infer<typeof AggregateResponse>;\n\nexport const InvokeActionInput = z.object({\n actionId: ActionId,\n params: z.record(z.unknown()),\n /** Optional client-supplied idempotency key. */\n idempotencyKey: z.string().min(8).max(128).optional(),\n});\nexport type InvokeActionInput = z.infer<typeof InvokeActionInput>;\n\nexport const InvokeActionResponse = z.object({\n success: z.boolean(),\n data: z.record(z.unknown()).optional(),\n error: z.string().optional(),\n});\nexport type InvokeActionResponse = z.infer<typeof InvokeActionResponse>;\n\n// ---- manifests --------------------------------------------------------------\n\n/** Result of pushing the signed manifest to the Cloudflare manifest-worker. */\nexport const EdgePushResult = z.object({\n pushed: z.boolean(),\n reason: z.string().optional(),\n status: z.number().int().optional(),\n});\nexport type EdgePushResult = z.infer<typeof EdgePushResult>;\n\nexport const PublishManifestResponse = z.object({\n manifestVersion: z.number().int().nonnegative(),\n contentHash: z.string().regex(/^[0-9a-f]{64}$/),\n experimentCount: z.number().int().nonnegative(),\n /** Edge push status. `pushed: false` with `reason: 'unconfigured'` is normal in local dev. */\n edgePush: EdgePushResult,\n});\nexport type PublishManifestResponse = z.infer<typeof PublishManifestResponse>;\n\nexport const ManifestKey = z.object({\n keyId: z.string(),\n publicKeyHex: z.string().regex(/^[0-9a-f]+$/),\n status: z.enum(['active', 'retiring', 'retired']),\n createdAt: z.string().datetime(),\n retiredAt: z.string().datetime().nullable(),\n});\nexport type ManifestKey = z.infer<typeof ManifestKey>;\n\nexport const ManifestKeysResponse = z.object({ keys: z.array(ManifestKey) });\nexport type ManifestKeysResponse = z.infer<typeof ManifestKeysResponse>;\n\n// ---- preview tokens ---------------------------------------------------------\n\nexport const PreviewSignInput = z.object({\n experimentId: ExperimentId,\n variantKey: z.string().min(1).max(32),\n /** Token TTL in seconds. Clamped server-side to [60, 3600]; default 900. */\n ttlSeconds: z.number().int().min(60).max(3600).optional(),\n});\nexport type PreviewSignInput = z.infer<typeof PreviewSignInput>;\n\nexport const PreviewSignResponse = z.object({\n token: z.string(),\n /** ISO datetime when the token expires. */\n expiresAt: z.string().datetime(),\n /** ID of the public JWKS key used to sign — exposed for debugging only. */\n keyId: z.string(),\n /** Unique JWT id for audit/debugging and future replay controls. */\n jti: z.string(),\n});\nexport type PreviewSignResponse = z.infer<typeof PreviewSignResponse>;\n\n// ---- audit ------------------------------------------------------------------\n\nexport const AuditEvent = z.object({\n id: z.string(),\n type: z.string(),\n experimentId: z.string(),\n actorId: z.string(),\n at: z.string().datetime(),\n payload: z.record(z.unknown()),\n});\nexport type AuditEvent = z.infer<typeof AuditEvent>;\n\nexport const AuditListResponse = z.object({ events: z.array(AuditEvent) });\nexport type AuditListResponse = z.infer<typeof AuditListResponse>;\n\n// ---- enterprise governance -------------------------------------------------\n\nexport const GovernanceSettings = z.object({\n requireQualityForProduction: z.boolean(),\n requiredQualitySuites: z.array(z.string().min(1).max(240)).max(50),\n qualityMaxAgeHours: z.number().int().min(1).max(8760),\n retentionDays: z.number().int().min(30).max(3650),\n legalHold: z.boolean(),\n updatedBy: z.string().nullable(),\n updatedAt: z.string().datetime().nullable(),\n});\nexport type GovernanceSettings = z.infer<typeof GovernanceSettings>;\n\nexport const UpdateGovernanceSettingsInput = GovernanceSettings.pick({\n requireQualityForProduction: true,\n requiredQualitySuites: true,\n qualityMaxAgeHours: true,\n retentionDays: true,\n legalHold: true,\n});\nexport type UpdateGovernanceSettingsInput = z.infer<typeof UpdateGovernanceSettingsInput>;\n\nexport const QualityGateResult = z.object({\n enabled: z.boolean(),\n passed: z.boolean(),\n checks: z.array(\n z.object({\n suite: z.string(),\n passed: z.boolean(),\n reason: z.string(),\n runId: z.string().nullable(),\n finishedAt: z.string().datetime().nullable(),\n }),\n ),\n});\nexport type QualityGateResult = z.infer<typeof QualityGateResult>;\n\nexport const GovernanceStatusResponse = z.object({\n settings: GovernanceSettings,\n qualityGate: QualityGateResult,\n});\n\nexport const AuditExport = z.object({\n id: z.string(),\n destinationKind: z.enum(['s3', 'r2', 'splunk-hec']),\n status: z.enum(['active', 'paused', 'failed']),\n lastCursorAt: z.string().datetime().nullable(),\n});\nexport const AuditExportListResponse = z.object({ exports: z.array(AuditExport) });\n\nexport const CreateAuditExportInput = z.object({\n destinationKind: z.enum(['s3', 'r2', 'splunk-hec']),\n /** Free-form config; encrypted at rest. Schema enforced by destination kind. */\n config: z.record(z.unknown()),\n});\n\n// ---- api keys ---------------------------------------------------------------\n\nexport const ApiKeySummary = z.object({\n id: z.string(),\n name: z.string(),\n prefix: z.string(),\n role: z.enum(['owner', 'admin', 'experimenter', 'viewer']),\n scopes: z.array(z.enum(['read', 'write', 'admin'])),\n createdAt: z.string().datetime(),\n lastUsedAt: z.string().datetime().nullable(),\n expiresAt: z.string().datetime().nullable(),\n});\nexport const ApiKeyListResponse = z.object({ keys: z.array(ApiKeySummary) });\n\nexport const CreateApiKeyInput = z.object({\n name: z.string().min(1).max(120),\n /** ISO datetime of expiry; null for non-expiring (not recommended in prod). */\n expiresAt: z.string().datetime().nullable(),\n /** Role assigned to the key. Defaults to the creator's role. */\n role: z.enum(['owner', 'admin', 'experimenter', 'viewer']).optional(),\n /** Permission scopes assigned to the key. Defaults are derived from role. */\n scopes: z.array(z.enum(['read', 'write', 'admin'])).optional(),\n});\nexport type CreateApiKeyInput = z.infer<typeof CreateApiKeyInput>;\n\nexport const CreateApiKeyResponse = ApiKeySummary.extend({\n /** Plaintext key, returned exactly once at creation time. */\n key: z.string(),\n});\nexport type CreateApiKeyResponse = z.infer<typeof CreateApiKeyResponse>;\n\n// ---- SAML / SSO --------------------------------------------------------------\n\nexport const SamlConfig = z\n .object({\n enabled: z.boolean(),\n connectionId: z.string().min(1).max(200).nullable(),\n issuer: z.string().min(1).max(500).nullable(),\n ssoUrl: z.string().url().nullable(),\n certificate: z.string().min(1).max(10000).nullable(),\n })\n .refine(\n (value) =>\n !value.enabled ||\n Boolean(value.connectionId && value.issuer && value.ssoUrl && value.certificate),\n {\n message: 'connectionId, issuer, ssoUrl, certificate required when SAML is enabled',\n },\n );\nexport type SamlConfig = z.infer<typeof SamlConfig>;\n\n// ---- quality / test evidence ------------------------------------------------\n\nexport const TestRunStatus = z.enum(['running', 'passed', 'failed', 'skipped', 'canceled']);\nexport type TestRunStatus = z.infer<typeof TestRunStatus>;\n\nexport const TestCaseStatus = z.enum([\n 'passed',\n 'failed',\n 'skipped',\n 'pending',\n 'undefined',\n 'unknown',\n]);\n\nexport const TestCaseResult = z.object({\n id: z.string().max(240).optional(),\n name: z.string().min(1).max(500),\n uri: z.string().max(1000).optional(),\n status: TestCaseStatus,\n durationMs: z.number().int().nonnegative().max(86_400_000),\n tags: z.array(z.string().max(120)).max(100).default([]),\n error: z.string().max(65_536).optional(),\n statementId: z.string().max(240).optional(),\n resourceUrl: z.string().url().max(4000).optional(),\n details: z.record(z.unknown()).optional(),\n});\nexport type TestCaseResult = z.infer<typeof TestCaseResult>;\n\nexport const TestRunSummary = z.object({\n total: z.number().int().nonnegative(),\n passed: z.number().int().nonnegative(),\n failed: z.number().int().nonnegative(),\n skipped: z.number().int().nonnegative(),\n pending: z.number().int().nonnegative().default(0),\n});\n\nexport const TestRunArtifact = z.object({\n name: z.string().min(1).max(240),\n url: z.string().url().max(4000),\n mediaType: z.string().max(240).optional(),\n});\n\nexport const CreateTestRunInput = z.object({\n externalId: z.string().min(1).max(300).optional(),\n source: z.enum(['bdd', 'live-suite', 'junit', 'cli', 'other']),\n suite: z.string().min(1).max(240),\n status: TestRunStatus,\n startedAt: z.string().datetime().nullable().optional(),\n finishedAt: z.string().datetime().nullable().optional(),\n durationMs: z.number().int().nonnegative().max(604_800_000).default(0),\n summary: TestRunSummary,\n environment: z.record(z.unknown()).default({}),\n revision: z.record(z.unknown()).default({}),\n cases: z.array(TestCaseResult).max(2000).default([]),\n artifacts: z.array(TestRunArtifact).max(100).default([]),\n});\nexport type CreateTestRunInput = z.infer<typeof CreateTestRunInput>;\n\nexport const TestRun = CreateTestRunInput.extend({\n id: z.string().uuid(),\n orgId: z.string(),\n createdBy: z.string(),\n createdAt: z.string().datetime(),\n updatedAt: z.string().datetime(),\n});\nexport type TestRun = z.infer<typeof TestRun>;\n\nexport const TestRunListInput = z.object({\n status: TestRunStatus.optional(),\n source: CreateTestRunInput.shape.source.optional(),\n suite: z.string().min(1).max(240).optional(),\n targetPack: z\n .string()\n .min(1)\n .max(120)\n .regex(/^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$/)\n .optional(),\n limit: z.coerce.number().int().min(1).max(200).optional(),\n offset: z.coerce.number().int().min(0).max(100_000).optional(),\n});\nexport const TestRunListResponse = z.object({\n runs: z.array(TestRun.omit({ cases: true })),\n});\n\n// ---- Harness operator surface ---------------------------------------------\n\nexport const HarnessOperatorDefinition = z.object({\n name: z.enum(['quality-status', 'srm-watcher', 'analyst']),\n kind: z.literal('job'),\n description: z.string(),\n mutates: z.boolean(),\n});\nexport type HarnessOperatorDefinition = z.infer<typeof HarnessOperatorDefinition>;\n\nexport const HarnessOperatorListResponse = z.array(HarnessOperatorDefinition);\nexport const HarnessJobInput = z.record(z.unknown()).default({});\nexport const HarnessJobResponse = z.record(z.unknown());\n\n// ---- the registry ----------------------------------------------------------\n\nexport const endpoints = {\n 'tenants.me': {\n method: 'GET',\n path: '/v1/tenants/me',\n params: Empty,\n response: TenantSelf,\n mutates: false,\n requiresRole: null,\n },\n\n 'experiments.list': {\n method: 'GET',\n path: '/v1/orgs/:orgId/experiments',\n params: Empty,\n response: ExperimentListResponse,\n mutates: false,\n requiresRole: 'viewer',\n },\n 'experiments.create': {\n method: 'POST',\n path: '/v1/orgs/:orgId/experiments',\n params: CreateExperimentInput,\n response: CreateExperimentResponse,\n mutates: true,\n requiresRole: 'experimenter',\n },\n 'experiments.get': {\n method: 'GET',\n path: '/v1/orgs/:orgId/experiments/:experimentId',\n params: Empty,\n response: Experiment,\n mutates: false,\n requiresRole: 'viewer',\n },\n 'experiments.invokeAction': {\n method: 'POST',\n path: '/v1/orgs/:orgId/experiments/actions',\n params: InvokeActionInput,\n response: InvokeActionResponse,\n mutates: true,\n requiresRole: 'experimenter',\n },\n 'experiments.aggregate': {\n method: 'GET',\n path: '/v1/orgs/:orgId/experiments/:experimentId/aggregate',\n params: AggregateInput,\n response: AggregateResponse,\n mutates: false,\n requiresRole: 'viewer',\n },\n\n 'projects.list': {\n method: 'GET',\n path: '/v1/orgs/:orgId/projects',\n params: Empty,\n response: ProjectListResponse,\n mutates: false,\n requiresRole: 'viewer',\n },\n 'projects.create': {\n method: 'POST',\n path: '/v1/orgs/:orgId/projects',\n params: CreateProjectInput,\n response: Project,\n mutates: true,\n requiresRole: 'experimenter',\n },\n 'properties.list': {\n method: 'GET',\n path: '/v1/orgs/:orgId/projects/:projectId/properties',\n params: Empty,\n response: PropertyListResponse,\n mutates: false,\n requiresRole: 'viewer',\n },\n 'properties.create': {\n method: 'POST',\n path: '/v1/orgs/:orgId/projects/:projectId/properties',\n params: CreatePropertyInput,\n response: Property,\n mutates: true,\n requiresRole: 'experimenter',\n },\n 'environments.list': {\n method: 'GET',\n path: '/v1/orgs/:orgId/projects/:projectId/environments',\n params: Empty,\n response: EnvironmentListResponse,\n mutates: false,\n requiresRole: 'viewer',\n },\n 'environments.create': {\n method: 'POST',\n path: '/v1/orgs/:orgId/projects/:projectId/environments',\n params: CreateEnvironmentInput,\n response: Environment,\n mutates: true,\n requiresRole: 'experimenter',\n },\n 'features.list': {\n method: 'GET',\n path: '/v1/orgs/:orgId/projects/:projectId/features',\n params: Empty,\n response: FeatureListResponse,\n mutates: false,\n requiresRole: 'viewer',\n },\n 'features.create': {\n method: 'POST',\n path: '/v1/orgs/:orgId/projects/:projectId/features',\n params: CreateFeatureInput,\n response: Feature,\n mutates: true,\n requiresRole: 'experimenter',\n },\n 'rules.list': {\n method: 'GET',\n path: '/v1/orgs/:orgId/features/:featureId/rules',\n params: Empty,\n response: FeatureRuleListResponse,\n mutates: false,\n requiresRole: 'viewer',\n },\n 'rules.create': {\n method: 'POST',\n path: '/v1/orgs/:orgId/features/:featureId/rules',\n params: CreateFeatureRuleInput,\n response: FeatureRule,\n mutates: true,\n requiresRole: 'experimenter',\n },\n 'environments.publish': {\n method: 'POST',\n path: '/v1/orgs/:orgId/environments/:environmentId/publish',\n params: Empty,\n response: EnvironmentPublication,\n mutates: true,\n requiresRole: 'experimenter',\n },\n 'environments.publications': {\n method: 'GET',\n path: '/v1/orgs/:orgId/environments/:environmentId/publications',\n params: Empty,\n response: PublicationListResponse,\n mutates: false,\n requiresRole: 'viewer',\n },\n 'environments.promote': {\n method: 'POST',\n path: '/v1/orgs/:orgId/environments/:environmentId/promote',\n params: PromoteEnvironmentInput,\n response: PromoteEnvironmentResponse,\n mutates: true,\n requiresRole: 'experimenter',\n },\n 'configuration.getPublished': {\n method: 'GET',\n path: '/v1/orgs/:orgId/environments/:environmentId/configuration',\n params: Empty,\n response: EnvironmentPublication,\n mutates: false,\n requiresRole: 'viewer',\n },\n\n 'manifests.publish': {\n method: 'POST',\n path: '/v1/orgs/:orgId/manifests/publish',\n params: Empty,\n response: PublishManifestResponse,\n mutates: true,\n requiresRole: 'experimenter',\n },\n 'manifests.getKeys': {\n method: 'GET',\n path: '/v1/orgs/:orgId/manifests/keys',\n params: Empty,\n response: ManifestKeysResponse,\n mutates: false,\n requiresRole: 'admin',\n },\n 'manifests.rotateKey': {\n method: 'POST',\n path: '/v1/orgs/:orgId/manifests/keys/rotate',\n params: z.object({ keyId: z.string().min(1).max(128) }),\n response: ManifestKey,\n mutates: true,\n requiresRole: 'admin',\n },\n 'manifests.retireKey': {\n method: 'POST',\n path: '/v1/orgs/:orgId/manifests/keys/retire',\n params: z.object({ keyId: z.string() }),\n response: ManifestKey,\n mutates: true,\n requiresRole: 'admin',\n },\n\n 'preview.sign': {\n method: 'POST',\n path: '/v1/orgs/:orgId/preview/sign',\n params: PreviewSignInput,\n response: PreviewSignResponse,\n mutates: true,\n requiresRole: 'experimenter',\n },\n\n 'audit.list': {\n method: 'GET',\n path: '/v1/orgs/:orgId/audit',\n params: Empty,\n response: AuditListResponse,\n mutates: false,\n requiresRole: 'viewer',\n },\n 'governance.get': {\n method: 'GET',\n path: '/v1/orgs/:orgId/governance',\n params: Empty,\n response: GovernanceStatusResponse,\n mutates: false,\n requiresRole: 'viewer',\n },\n 'governance.update': {\n method: 'POST',\n path: '/v1/orgs/:orgId/governance',\n params: UpdateGovernanceSettingsInput,\n response: GovernanceStatusResponse,\n mutates: true,\n requiresRole: 'admin',\n },\n 'audit.exports.list': {\n method: 'GET',\n path: '/v1/orgs/:orgId/audit/exports',\n params: Empty,\n response: AuditExportListResponse,\n mutates: false,\n requiresRole: 'admin',\n },\n 'audit.exports.create': {\n method: 'POST',\n path: '/v1/orgs/:orgId/audit/exports',\n params: CreateAuditExportInput,\n response: AuditExport,\n mutates: true,\n requiresRole: 'admin',\n },\n 'audit.exports.delete': {\n method: 'DELETE',\n path: '/v1/orgs/:orgId/audit/exports/:exportId',\n params: Empty,\n response: z.object({ ok: z.literal(true) }),\n mutates: true,\n requiresRole: 'admin',\n },\n\n 'apiKeys.list': {\n method: 'GET',\n path: '/v1/orgs/:orgId/api-keys',\n params: Empty,\n response: ApiKeyListResponse,\n mutates: false,\n requiresRole: 'admin',\n },\n 'apiKeys.create': {\n method: 'POST',\n path: '/v1/orgs/:orgId/api-keys',\n params: CreateApiKeyInput,\n response: CreateApiKeyResponse,\n mutates: true,\n requiresRole: 'admin',\n },\n 'apiKeys.revoke': {\n method: 'DELETE',\n path: '/v1/orgs/:orgId/api-keys/:keyId',\n params: Empty,\n response: z.object({ ok: z.literal(true) }),\n mutates: true,\n requiresRole: 'admin',\n },\n\n 'saml.get': {\n method: 'GET',\n path: '/v1/orgs/:orgId/saml',\n params: Empty,\n response: SamlConfig,\n mutates: false,\n requiresRole: 'owner',\n },\n 'saml.update': {\n method: 'POST',\n path: '/v1/orgs/:orgId/saml',\n params: SamlConfig,\n response: SamlConfig,\n mutates: true,\n requiresRole: 'owner',\n },\n\n 'testRuns.list': {\n method: 'GET',\n path: '/v1/orgs/:orgId/test-runs',\n params: TestRunListInput,\n response: TestRunListResponse,\n mutates: false,\n requiresRole: 'viewer',\n },\n 'testRuns.create': {\n method: 'POST',\n path: '/v1/orgs/:orgId/test-runs',\n params: CreateTestRunInput,\n response: TestRun,\n mutates: true,\n requiresRole: 'experimenter',\n },\n 'testRuns.get': {\n method: 'GET',\n path: '/v1/orgs/:orgId/test-runs/:runId',\n params: Empty,\n response: TestRun,\n mutates: false,\n requiresRole: 'viewer',\n },\n\n 'harness.definitions': {\n method: 'GET',\n path: '/v1/orgs/:orgId/harness/admin/agents',\n params: Empty,\n response: HarnessOperatorListResponse,\n mutates: false,\n requiresRole: 'viewer',\n },\n 'harness.invokeJob': {\n method: 'POST',\n path: '/v1/orgs/:orgId/harness/jobs/:jobName',\n params: HarnessJobInput,\n response: HarnessJobResponse,\n mutates: true,\n requiresRole: 'experimenter',\n },\n} satisfies Record<string, EndpointDef>;\n\nexport type EndpointName = keyof typeof endpoints;\nexport type EndpointParams<E extends EndpointName> = z.infer<(typeof endpoints)[E]['params']>;\nexport type EndpointResponse<E extends EndpointName> = z.infer<(typeof endpoints)[E]['response']>;\n\n/** Substitute path parameters in a path template. */\nexport function buildPath(template: string, pathParams: Record<string, string>): string {\n return template.replace(/:([a-zA-Z][a-zA-Z0-9_]*)/g, (_, name) => {\n const v = pathParams[name];\n if (v == null) throw new Error(`Missing path parameter: ${name}`);\n return encodeURIComponent(v);\n });\n}\n","import { z } from 'zod';\n\nexport const ApiError = z.object({\n code: z.enum([\n 'UNAUTHENTICATED',\n 'FORBIDDEN',\n 'NOT_FOUND',\n 'VALIDATION_FAILED',\n 'CONFLICT',\n 'RATE_LIMITED',\n 'INTERNAL',\n ]),\n message: z.string(),\n details: z.record(z.unknown()).optional(),\n});\nexport type ApiError = z.infer<typeof ApiError>;\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fabricorg/experiments-api-protocol",
3
- "version": "0.1.5",
3
+ "version": "0.1.6",
4
4
  "description": "Zod endpoint registry shared by the hosted API server and api-client.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -34,6 +34,6 @@
34
34
  "devDependencies": {
35
35
  "tsup": "^8.3.5",
36
36
  "typescript": "^5.8.3",
37
- "vitest": "^2.1.8"
37
+ "vitest": "^3.2.7"
38
38
  }
39
39
  }