apps
📄️ Return the activity feed scoped to a single app, newest first. Backed by activity_feed_service.get_feed() with app_id fi
Return the activity feed scoped to a single app, newest first. Backed by activity_feed_service.get_feed() with app_id filter. Provides the same event types as the org-level activity feed (`/api/v1/activity`) but restricted to this app's events. Used by the app detail page's activity timeline.
📄️ Archive an App. Soft-delete; targets + slots are preserved for historical / audit purposes but the App is hidden from li
Archive an App. Soft-delete; targets + slots are preserved for historical / audit purposes but the App is hidden from list endpoints by default and rejected by SDK auth flows.
📄️ First-run bootstrap: create an app, register a target for the given platform, and generate an app key (plus publishable
First-run bootstrap: create an app, register a target for the given platform, and generate an app key (plus publishable key for mobile/browser platforms) in a single atomic transaction. Intended for the onboarding quickstart flow so the SDK integration instructions can display a ready-to-use API key immediately.
📄️ Check if a better model variant is available for this capability. Runs CapabilityOrchestratorService.check_optimization(
Check if a better model variant is available for this capability. Runs CapabilityOrchestratorService.check_optimization() which compares the currently deployed model variant against available alternatives, accounting for the device class and platform distribution of the app's registered targets. Returns a recommendation with the suggested variant and expected improvement, without making any changes.
📄️ Enable a capability on an app. Runs CapabilityOrchestratorService.enable_capability() which resolves the best model vari
Enable a capability on an app. Runs CapabilityOrchestratorService.enable_capability() which resolves the best model variant, creates a deployment scoped to this app+capability+environment, creates device assignments for all registered targets, and starts the deployment. This is the primary onboarding action for an app's first capability.
📄️ Re-optimize a capability by starting a canary rollout to a better model variant. Runs CapabilityOrchestratorService.opti
Re-optimize a capability by starting a canary rollout to a better model variant. Runs CapabilityOrchestratorService.optimize_capability() which: 1. Identifies the best available model variant for the fleet composition. 2. Creates or updates the staging/production deployment to target the
📄️ Side-effect-free preview of what `apps.capabilities.enable` would do. Runs the CapabilityOrchestratorService.preview_cap
Side-effect-free preview of what `apps.capabilities.enable` would do. Runs the CapabilityOrchestratorService.preview_capability() flow to resolve the best model variant and target assignments, then returns the recommendation without persisting anything. Use this before calling enable to confirm the orchestrator's choices.
📄️ Create a new App. The App is the parent of AppTargets (one per platform / bundle ID) and CapabilitySlots (one per ModelC
Create a new App. The App is the parent of AppTargets (one per platform / bundle ID) and CapabilitySlots (one per ModelCapability the App uses).
📄️ List Apps in the caller's org.
List Apps in the caller's org.
📄️ Register a (platform, identifier) target for the App. Unique per (org_id, platform, identifier); duplicate registration
Register a (platform, identifier) target for the App. Unique per (org_id, platform, identifier); duplicate registration returns 409.
📄️ List every AppTarget registered to the App. Each target binds the App to a (platform, identifier) tuple — e.g. ('ios', '
List every AppTarget registered to the App. Each target binds the App to a (platform, identifier) tuple — e.g. ('ios', 'com.octomil.canary-demo') — which lets the platform join devices + deployments back to the App via bundle ID.
📄️ Remove a capability slot from an App.
Remove a capability slot from an App.
📄️ Fetch a single capability slot for an app by capability key. Returns 404 if the app exists but has no slot for the reque
Fetch a single capability slot for an app by capability key. Returns 404 if the app exists but has no slot for the requested capability. Used by dashboard panels that need per-capability slot configuration without loading all slots.
📄️ Configure or update a capability slot on an App. PUT (not PATCH) because the operation replaces the slot's serving polic
Configure or update a capability slot on an App. PUT (not PATCH) because the operation replaces the slot's serving policy + bindings wholesale; partial updates are not supported (saves us from confusing serving-policy diff semantics).
📄️ Remove a target (app integration/platform registration) from an app. Triggers two reconciliation passes before deleting:
Remove a target (app integration/platform registration) from an app. Triggers two reconciliation passes before deleting: first, any `app_target_ids` deployments that reference this target are updated to remove the target assignment; second, label-selector materializer is re-run across all app deployments so device assignment counts stay accurate. The target is then deleted and the transaction is committed.
📄️ List deployments scoped to a single app, identified by slug. Equivalent to `deployments.list` filtered by `app_id`, but
List deployments scoped to a single app, identified by slug. Equivalent to `deployments.list` filtered by `app_id`, but addressed via the app slug directly. The dashboard's app detail page uses this to render the deployments tab without requiring a prior app-id lookup.
📄️ Check whether any inference request has been received for this app. Counts both cloud requests (CloudUsageLog) and on-de
Check whether any inference request has been received for this app. Counts both cloud requests (CloudUsageLog) and on-device/SDK runtime requests (RuntimeRouteEvent). The quickstart indicator in the dashboard and onboarding flows uses this endpoint to flip to 'success' on first SDK call regardless of execution path (cloud vs local).
📄️ Fetch one App by slug. Powers the App detail page.
Fetch one App by slug. Powers the App detail page.
📄️ Partial update of an App.
Partial update of an App.
📄️ Return slot coverage health for an app — whether each configured capability slot has sufficient active deployment covera
Return slot coverage health for an app — whether each configured capability slot has sufficient active deployment coverage. Computed by AppService.check_slot_coverage(). Powers the app health badge in the dashboard list view and the health detail panel on the app detail page.
📄️ Delete inference configuration for an app.
Delete inference configuration for an app.
📄️ Get inference configuration for an app.
Get inference configuration for an app.
📄️ Create or update inference configuration for an app.
Create or update inference configuration for an app.
📄️ List every CapabilitySlot configured on the App. Each slot pairs a ModelCapability (e.g. `vision`, `chat`, `transcriptio
List every CapabilitySlot configured on the App. Each slot pairs a ModelCapability (e.g. `vision`, `chat`, `transcription`) with an active catalog variant + serving policy.
📄️ List recent routing decisions scoped to a single app. Backed by the same list_decisions_db service as the org-level deci
List recent routing decisions scoped to a single app. Backed by the same list_decisions_db service as the org-level decisions endpoint, but filtered to app_id. Used by the app detail page's routing panel to show the decision history (local vs cloud, model chosen, latency).
📄️ Return aggregated routing statistics scoped to a single app. Backed by the same routing_telemetry service as the org-lev
Return aggregated routing statistics scoped to a single app. Backed by the same routing_telemetry service as the org-level stats endpoint but filtered to `app_id`. Used by the app detail page routing panel.