deployments
📄️ Dismiss a proposed operations action, recording the dismissing user and reason. Only actions in `proposed` status can be
Dismiss a proposed operations action, recording the dismissing user and reason. Only actions in `proposed` status can be dismissed. Dismissal is an acknowledgement that the operator has reviewed the action and chosen not to execute it; it does not alter deployment state.
📄️ Execute a proposed operations action on behalf of the authenticated user. The server applies the action's effect immedia
Execute a proposed operations action on behalf of the authenticated user. The server applies the action's effect immediately and synchronously, then marks the action as `manually_executed`. Only `proposed` actions with an `action_type` in the server's executable set can be executed via this endpoint.
📄️ List proposed and historical operations actions for a deployment. The automator engine creates `proposed` actions when i
List proposed and historical operations actions for a deployment. The automator engine creates `proposed` actions when it detects conditions that warrant operator intervention (e.g. high error rate triggering a suggested pause). This endpoint is the primary feed for the dashboard's 'Recommended Actions' panel.
📄️ Manually advance the active rollout by one step. Used when auto_advance is off, OR when an operator wants to step past a
Manually advance the active rollout by one step. Used when auto_advance is off, OR when an operator wants to step past a soak interval the automator is still waiting on.
📄️ Approve a deployment that's pending review. The approving user must have the approval role (org admin / governance revie
Approve a deployment that's pending review. The approving user must have the approval role (org admin / governance reviewer) and must not be the same user who created or requested approval (separation-of-duties enforced server-side).
📄️ Create a new deployment. Validates that the model_variant_id exists in the catalog (visible to the caller's org) and the
Create a new deployment. Validates that the model_variant_id exists in the catalog (visible to the caller's org) and the optional desired/active version ids belong to that variant.
📄️ List deployments in the caller's org. Offset-paginated.
List deployments in the caller's org. Offset-paginated.
📄️ Manually pin a device to a deployment cohort. Used to force a specific device into the canary cohort for QA, OR to keep
Manually pin a device to a deployment cohort. Used to force a specific device into the canary cohort for QA, OR to keep a device on a previous version when a rollout shouldn't touch it. Manual assignments survive materializer re-runs.
📄️ List the DeviceAssignment rows for a deployment. Powers the assignments-table view + the deployment health computations.
List the DeviceAssignment rows for a deployment. Powers the assignments-table view + the deployment health computations.
📄️ Partially updates variant traffic allocations for a running or paused experiment. Returns the updated Experiment. Alloca
Partially updates variant traffic allocations for a running or paused experiment. Returns the updated Experiment. Allocation changes take effect immediately on the server — traffic routing updates on the next device sync cycle.
📄️ Returns a full analytics summary for the experiment: per-variant sample counts, confidence intervals, the Welch t-test s
Returns a full analytics summary for the experiment: per-variant sample counts, confidence intervals, the Welch t-test significance result, and observed statistical power. The significance_result and statistical_power fields are null when either variant has fewer than 2 observations.
📄️ Evaluates each supplied metric against a configurable threshold. Returns pass/violation status per metric and an aggrega
Evaluates each supplied metric against a configurable threshold. Returns pass/violation status per metric and an aggregate any_violation flag. Does not mutate experiment state.
📄️ Runs a Mann-Whitney U test on the experiment's metric values and tests each variant for normality. The recommended_test
Runs a Mann-Whitney U test on the experiment's metric values and tests each variant for normality. The recommended_test field signals whether a parametric (t-test) or nonparametric test is more appropriate given the data distribution.
📄️ Computes the required sample size for the experiment's primary metric given the current baseline mean and standard devia
Computes the required sample size for the experiment's primary metric given the current baseline mean and standard deviation observed in the control group. Also returns enrollment progress toward the required total.
📄️ Partitions experiment events by a device metadata key and runs per-segment significance analysis to detect heterogeneity
Partitions experiment events by a device metadata key and runs per-segment significance analysis to detect heterogeneity of treatment effect across device cohorts (e.g. platform, OS version).
📄️ Performs a group-sequential test against the experiment's metric data using the chosen alpha-spending function. The resp
Performs a group-sequential test against the experiment's metric data using the chosen alpha-spending function. The response shape is returned verbatim from StatisticalAnalyzer.sequential_test().
📄️ Returns per-variant time-bucketed metric means for charting experiment progression over time. Each data point holds the
Returns per-variant time-bucketed metric means for charting experiment progression over time. Each data point holds the mean metric value and event count for the bucket window.
📄️ Cancel an experiment. Stamps `ended_at`, terminates variant traffic allocation, and locks the experiment from further st
Cancel an experiment. Stamps `ended_at`, terminates variant traffic allocation, and locks the experiment from further state transitions. Use this when the experiment must be aborted (bug, safety issue, business decision) rather than completing naturally.
📄️ Mark an experiment as completed. Stamps `ended_at`, terminates variant traffic allocation, and locks the experiment from
Mark an experiment as completed. Stamps `ended_at`, terminates variant traffic allocation, and locks the experiment from further state transitions. Use this when the experiment has reached its statistical-significance threshold or planned duration.
📄️ Create an experiment under a deployment. The experiment starts in `draft` status — no traffic flows until `deployments.e
Create an experiment under a deployment. The experiment starts in `draft` status — no traffic flows until `deployments.experiments.start` is called. Returns the full Experiment object (with default values populated server-side).
📄️ List all experiments belonging to a deployment, regardless of status. Returns the full experiment objects (including var
List all experiments belonging to a deployment, regardless of status. Returns the full experiment objects (including variants and target groups) so the dashboard's experiments panel doesn't need per-row fetches.
📄️ Pause a running experiment. Stops variant traffic allocation without ending the experiment — callers can resume later wi
Pause a running experiment. Stops variant traffic allocation without ending the experiment — callers can resume later with `deployments.experiments.resume`.
📄️ Resume a paused experiment. Restores variant traffic allocation using the same configuration that was active when paused
Resume a paused experiment. Restores variant traffic allocation using the same configuration that was active when paused.
📄️ Start a `draft` experiment. Transitions status `draft → running`, stamps `started_at`. Returns the updated Experiment.
Start a `draft` experiment. Transitions status `draft → running`, stamps `started_at`. Returns the updated Experiment.
📄️ Returns the device groups currently targeted by the experiment. target_groups is an empty array when no groups have been
Returns the device groups currently targeted by the experiment. target_groups is an empty array when no groups have been configured.
📄️ Replaces the experiment's target group list with the supplied group_ids. This is a full replacement (PUT semantics) — gr
Replaces the experiment's target group list with the supplied group_ids. This is a full replacement (PUT semantics) — groups not in the list are removed. Returns the updated target groups list.
📄️ Fetch a single deployment by id. Powers the deployment detail page.
Fetch a single deployment by id. Powers the deployment detail page.
📄️ Partial update of a deployment. Used by the dashboard for both label-level edits (name / description / settings) and sub
Partial update of a deployment. Used by the dashboard for both label-level edits (name / description / settings) and substantive changes (target_version / targeting / rollout_policy). Mutating a rollout-affecting field while a rollout is active returns 409 — operators must pause first.
📄️ Aggregate device health metrics for a deployment. Drives the dashboard's HealthSummaryPanel 'Device Health' section and
Aggregate device health metrics for a deployment. Drives the dashboard's HealthSummaryPanel 'Device Health' section and the auto-pause flow's secondary signals (a deployment with high download_failures is unhealthy even if inference is succeeding elsewhere).
📄️ Return current health for a deployment. Drives the dashboard's HealthSummaryPanel; the auto-pause flow polls this at the
Return current health for a deployment. Drives the dashboard's HealthSummaryPanel; the auto-pause flow polls this at the automator's tick interval to make its gate decision.
📄️ List the latest camera frame metadata for every device assigned to a deployment. Backs the deployment detail page's 'Lat
List the latest camera frame metadata for every device assigned to a deployment. Backs the deployment detail page's 'Latest frames' grid. Returned entries are stable per device_id so client-side rendering can use device_id as a stable React key.
📄️ List the rollout history for a deployment.
List the rollout history for a deployment.
📄️ Force the assignment materializer to (re)run for this deployment. Normally the materializer runs automatically after dep
Force the assignment materializer to (re)run for this deployment. Normally the materializer runs automatically after deployment create / targeting change / start; this route is for the 'something is off and I want to recompute now' case.
📄️ Pause the active rollout. Devices that have already been bumped to the new version stay there; remaining devices keep th
Pause the active rollout. Devices that have already been bumped to the new version stay there; remaining devices keep the previous version. No teardown — resume picks up where pause left off.
📄️ Promote a deployment from one environment to another (typically staging → production). Creates a new Deployment row in t
Promote a deployment from one environment to another (typically staging → production). Creates a new Deployment row in the target environment cloning the source's configuration, with promoted_from_id linking back.
📄️ Reject a pending deployment approval request. Reason is required for the audit trail.
Reject a pending deployment approval request. Reason is required for the audit trail.
📄️ Open a governance approval flow for a deployment that requires reviewer sign-off before starting. Used when org policy m
Open a governance approval flow for a deployment that requires reviewer sign-off before starting. Used when org policy mandates approval for production deploys.
📄️ Resume a paused rollout. Picks up at the current_percentage where pause left off; the automator's next_advance_at is re-
Resume a paused rollout. Picks up at the current_percentage where pause left off; the automator's next_advance_at is re-armed using the configured step_interval_minutes from now.
📄️ Roll a deployment back to its from_model_version. All devices that were bumped to the new version are immediately re-tar
Roll a deployment back to its from_model_version. All devices that were bumped to the new version are immediately re-targeted to the previous version on their next sync. Used by the auto-pause flow AND by operator-initiated emergency rollback.
📄️ Move a deployment from `draft` to `active`/`rolling_out` and create a Rollout if rollout_policy is configured. Materiali
Move a deployment from `draft` to `active`/`rolling_out` and create a Rollout if rollout_policy is configured. Materializer runs to populate DeviceAssignment rows for the cohort.
📄️ Partial update of the current rollout's configuration. Used by the dashboard's slider for manual percentage edits and by
Partial update of the current rollout's configuration. Used by the dashboard's slider for manual percentage edits and by the 'edit cadence' controls during paused-state changes.