application · active

TopoloMDM

MDM platform cluster spanning a device API, tenant realtime hub, operator console, Android DPC, and mobile scaffold.

Documentation map

  • TopoloCommerce — Public overview of the multi-vertical commerce platform for venue operations, guest runtimes, and staff execution.
  • TopoloMDM — Public overview of the device-management cluster spanning the MDM API, operator console, and mobile scaffold.

Authority and runtime

System ID
topolo-mdm
App IDs
app_topolo_mdm, app_topolo_mdm_api
Owners
device-platform
Repositories
apps/TopoloMDM
Hosts
https://mdm.topolo.app, https://mdm.stg.topolo.us, https://mdm.stg.topolo.us/api
Dependencies
topolo-auth, applications-packages, topolo-developers, topolo-notify

Security and data ownership

Risk tier
critical
Tenant isolation
organization_scoped
Privacy classification
restricted
Storage
external_provider, kv, r2
Export and deletion
planned
Enterprise ready
no

Source-derived capability inventory

Source revisions: apps/TopoloMDM@eaf9d5e2bc22504ac71ee1143b78da9e3b1b810f

Declared actions: 23 · API routes: 39 · UI routes: 9

{
  "id": "topolo-mdm",
  "name": "TopoloMDM",
  "slug": "topolo-mdm",
  "kind": "application",
  "visibility": "public",
  "repo_paths": [
    "apps/TopoloMDM"
  ],
  "source_revisions": [
    {
      "source_path": "apps/TopoloMDM",
      "repository": "apps/TopoloMDM",
      "revision": "eaf9d5e2bc22504ac71ee1143b78da9e3b1b810f",
      "ref": "origin/staging"
    }
  ],
  "source_counts": {
    "source_files": 189,
    "test_files": 64,
    "test_cases": 0,
    "migration_files": 0,
    "database_tables": 0,
    "manifests": 1,
    "deploy_targets": 2,
    "actions": 23,
    "mobile_contracts": 1,
    "notifications": 8,
    "package_manifests": 3,
    "deployment_configs": 0
  },
  "manifests": [
    {
      "source_path": "apps/TopoloMDM/topolo.app.json",
      "service_slug": "topolo-mdm",
      "name": "TopoloMDM",
      "app_id": "app_topolo_mdm",
      "compatibility_date": "2026-04-10",
      "primary_target": null,
      "environments": [
        "production",
        "staging"
      ],
      "targets": [
        {
          "name": "web",
          "kind": "worker",
          "directory": "apps/web",
          "main": "src/worker.ts",
          "worker_name": "topolo-mdm-console",
          "subdomain": "mdm",
          "healthcheck_path": null,
          "variable_names": [
            "APP_CATALOG_URL",
            "AUTH_API_URL",
            "FEED_API_URL",
            "INSIGHTS_SITE_KEY",
            "STATE_API_URL"
          ],
          "secret_names": [],
          "bindings": [
            {
              "kind": "services",
              "binding": "API",
              "target": null
            }
          ]
        },
        {
          "name": "api",
          "kind": "worker",
          "directory": "apps/api",
          "main": "index.js",
          "worker_name": "topolo-mdm-api",
          "subdomain": null,
          "healthcheck_path": "/health",
          "variable_names": [
            "APP_CATALOG_URL",
            "AUTH_BASE_URL",
            "FEED_API_URL",
            "MDM_CONSOLE_APP_ID",
            "MDM_PUBLIC_BASE_URL",
            "STATE_API_URL",
            "TOPOLO_NOTIFY_URL"
          ],
          "secret_names": [],
          "bindings": [
            {
              "kind": "kv",
              "binding": "TOPOLO_STATE",
              "target": null
            },
            {
              "kind": "durableObjects",
              "binding": "WORKSPACE_EVENTS",
              "target": null
            },
            {
              "kind": "durableObjects",
              "binding": "WORKSPACE_STATE",
              "target": null
            }
          ]
        }
      ],
      "notifications": [
        "mdm.command.completed",
        "mdm.command.failed",
        "mdm.device.noncompliant",
        "mdm.device.offline",
        "mdm.enrollment.completed",
        "mdm.enrollment.failed",
        "mdm.enrollment.requested",
        "mdm.profile.changed"
      ],
      "notification_contract": {
        "source_path": "topolo.notification-contracts.json",
        "role": "producer",
        "schema_version": 1,
        "owner_app_id": "app_topolo_mdm",
        "events": [
          {
            "type": "mdm.command.completed",
            "version": 1,
            "description": "A managed device durably recorded successful completion of an operator-issued command.",
            "status": "published",
            "payloadSchema": {
              "type": "object",
              "required": [
                "title",
                "body",
                "object_id",
                "command_id",
                "device_id",
                "command_action",
                "status",
                "occurred_at"
              ],
              "properties": {
                "title": {
                  "type": "string",
                  "minLength": 1
                },
                "body": {
                  "type": "string",
                  "minLength": 1
                },
                "object_id": {
                  "type": "string",
                  "minLength": 1
                },
                "command_id": {
                  "type": "string",
                  "minLength": 1
                },
                "device_id": {
                  "type": "string",
                  "minLength": 1
                },
                "command_action": {
                  "type": "string",
                  "minLength": 1
                },
                "status": {
                  "const": "completed"
                },
                "occurred_at": {
                  "type": "string",
                  "format": "date-time"
                },
                "cta_url": {
                  "type": "string",
                  "format": "uri"
                }
              },
              "additionalProperties": true
            },
            "examples": [
              {
                "title": "Command completed: install",
                "body": "The install command completed.",
                "object_id": "cmd_123",
                "command_id": "cmd_123",
                "device_id": "device_123",
                "command_action": "install",
                "status": "completed",
                "occurred_at": "2026-07-20T12:00:00.000Z"
              }
            ],
            "dataClassification": "internal",
            "recipients": {
              "modes": [
                "organization_member"
              ],
              "externalAddress": "forbidden"
            },
            "sensitiveFields": [],
            "idempotency": {
              "required": true,
              "pattern": "^mdm:command-completed:"
            }
          },
          {
            "type": "mdm.command.failed",
            "version": 1,
            "description": "A managed device durably recorded failure of an operator-issued command.",
            "status": "published",
            "payloadSchema": {
              "type": "object",
              "required": [
                "title",
                "body",
                "object_id",
                "command_id",
                "device_id",
                "command_action",
                "status",
                "occurred_at"
              ],
              "properties": {
                "title": {
                  "type": "string",
                  "minLength": 1
                },
                "body": {
                  "type": "string",
                  "minLength": 1
                },
                "object_id": {
                  "type": "string",
                  "minLength": 1
                },
                "command_id": {
                  "type": "string",
                  "minLength": 1
                },
                "device_id": {
                  "type": "string",
                  "minLength": 1
                },
                "command_action": {
                  "type": "string",
                  "minLength": 1
                },
                "status": {
                  "const": "failed"
                },
                "occurred_at": {
                  "type": "string",
                  "format": "date-time"
                },
                "cta_url": {
                  "type": "string",
                  "format": "uri"
                }
              },
              "additionalProperties": true
            },
            "examples": [
              {
                "title": "Command failed: install",
                "body": "The install command failed.",
                "object_id": "cmd_123",
                "command_id": "cmd_123",
                "device_id": "device_123",
                "command_action": "install",
                "status": "failed",
                "occurred_at": "2026-07-20T12:00:00.000Z"
              }
            ],
            "dataClassification": "internal",
            "recipients": {
              "modes": [
                "organization_member"
              ],
              "externalAddress": "forbidden"
            },
            "sensitiveFields": [],
            "idempotency": {
              "required": true,
              "pattern": "^mdm:command-failed:"
            }
          },
          {
            "type": "mdm.device.noncompliant",
            "version": 1,
            "description": "A managed device durably transitioned from a compliant state to a noncompliant policy state.",
            "status": "published",
            "payloadSchema": {
              "type": "object",
              "required": [
                "title",
                "body",
                "object_id",
                "device_id",
                "reasons",
                "occurred_at"
              ],
              "properties": {
                "title": {
                  "type": "string",
                  "minLength": 1
                },
                "body": {
                  "type": "string",
                  "minLength": 1
                },
                "object_id": {
                  "type": "string",
                  "minLength": 1
                },
                "device_id": {
                  "type": "string",
                  "minLength": 1
                },
                "reasons": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                },
                "occurred_at": {
                  "type": "string",
                  "format": "date-time"
                },
                "cta_url": {
                  "type": "string",
                  "format": "uri"
                }
              },
              "additionalProperties": true
            },
            "examples": [
              {
                "title": "Device noncompliant: device_123",
                "body": "Required policy is not applied.",
                "object_id": "device_123",
                "device_id": "device_123",
                "reasons": [
                  "Required policy is not applied"
                ],
                "occurred_at": "2026-07-20T12:00:00.000Z"
              }
            ],
            "dataClassification": "internal",
            "recipients": {
              "modes": [
                "organization_member"
              ],
              "externalAddress": "forbidden"
            },
            "sensitiveFields": [],
            "idempotency": {
              "required": true,
              "pattern": "^mdm:device-noncompliant:"
            }
          },
          {
            "type": "mdm.device.offline",
            "version": 1,
            "description": "The scheduled MDM reconciler durably detected that an enrolled device crossed the offline threshold.",
            "status": "published",
            "payloadSchema": {
              "type": "object",
              "required": [
                "title",
                "body",
                "object_id",
                "device_id",
                "last_seen_at",
                "occurred_at"
              ],
              "properties": {
                "title": {
                  "type": "string",
                  "minLength": 1
                },
                "body": {
                  "type": "string",
                  "minLength": 1
                },
                "object_id": {
                  "type": "string",
                  "minLength": 1
                },
                "device_id": {
                  "type": "string",
                  "minLength": 1
                },
                "last_seen_at": {
                  "type": "string",
                  "format": "date-time"
                },
                "occurred_at": {
                  "type": "string",
                  "format": "date-time"
                },
                "cta_url": {
                  "type": "string",
                  "format": "uri"
                }
              },
              "additionalProperties": true
            },
            "examples": [
              {
                "title": "Device offline: device_123",
                "body": "The device has not checked in for 15 minutes.",
                "object_id": "device_123",
                "device_id": "device_123",
                "last_seen_at": "2026-07-20T11:45:00.000Z",
                "occurred_at": "2026-07-20T12:00:00.000Z"
              }
            ],
            "dataClassification": "internal",
            "recipients": {
              "modes": [
                "organization_member"
              ],
              "externalAddress": "forbidden"
            },
            "sensitiveFields": [],
            "idempotency": {
              "required": true,
              "pattern": "^mdm:device-offline:"
            }
          },
          {
            "type": "mdm.enrollment.completed",
            "version": 1,
            "description": "A device durably completed an accepted MDM enrollment session.",
            "status": "published",
            "payloadSchema": {
              "type": "object",
              "required": [
                "title",
                "body",
                "object_id",
                "device_id",
                "enrollment_id",
                "occurred_at"
              ],
              "properties": {
                "title": {
                  "type": "string",
                  "minLength": 1
                },
                "body": {
                  "type": "string",
                  "minLength": 1
                },
                "object_id": {
                  "type": "string",
                  "minLength": 1
                },
                "device_id": {
                  "type": "string",
                  "minLength": 1
                },
                "enrollment_id": {
                  "type": "string",
                  "minLength": 1
                },
                "occurred_at": {
                  "type": "string",
                  "format": "date-time"
                },
                "cta_url": {
                  "type": "string",
                  "format": "uri"
                }
              },
              "additionalProperties": true
            },
            "examples": [
              {
                "title": "Device enrolled: device_123",
                "body": "The device completed MDM enrollment.",
                "object_id": "device_123",
                "device_id": "device_123",
                "enrollment_id": "enrollment_hash_123",
                "occurred_at": "2026-07-20T12:00:00.000Z"
              }
            ],
            "dataClassification": "internal",
            "recipients": {
              "modes": [
                "organization_member"
              ],
              "externalAddress": "forbidden"
            },
            "sensitiveFields": [],
            "idempotency": {
              "required": true,
              "pattern": "^mdm:enrollment-completed:"
            }
          },
          {
            "type": "mdm.enrollment.failed",
            "version": 1,
            "description": "MDM persisted a device registration failure after accepting a valid enrollment session.",
            "status": "published",
            "payloadSchema": {
              "type": "object",
              "required": [
                "title",
                "body",
                "object_id",
                "device_id",
                "enrollment_id",
                "occurred_at"
              ],
              "properties": {
                "title": {
                  "type": "string",
                  "minLength": 1
                },
                "body": {
                  "type": "string",
                  "minLength": 1
                },
                "object_id": {
                  "type": "string",
                  "minLength": 1
                },
                "device_id": {
                  "type": "string",
                  "minLength": 1
                },
                "enrollment_id": {
                  "type": "string",
                  "minLength": 1
                },
                "occurred_at": {
                  "type": "string",
                  "format": "date-time"
                },
                "cta_url": {
                  "type": "string",
                  "format": "uri"
                }
              },
              "additionalProperties": true
            },
            "examples": [
              {
                "title": "Device enrollment failed: device_123",
                "body": "The accepted enrollment session did not complete device registration.",
                "object_id": "device_123",
                "device_id": "device_123",
                "enrollment_id": "enrollment_hash_123",
                "occurred_at": "2026-07-20T12:00:00.000Z"
              }
            ],
            "dataClassification": "internal",
            "recipients": {
              "modes": [
                "organization_member"
              ],
              "externalAddress": "forbidden"
            },
            "sensitiveFields": [],
            "idempotency": {
              "required": true,
              "pattern": "^mdm:enrollment-failed:"
            }
          },
          {
            "type": "mdm.enrollment.requested",
            "version": 1,
            "description": "An operator durably created a time-limited MDM enrollment session.",
            "status": "published",
            "payloadSchema": {
              "type": "object",
              "required": [
                "title",
                "body",
                "object_id",
                "enrollment_id",
                "expires_at",
                "occurred_at"
              ],
              "properties": {
                "title": {
                  "type": "string",
                  "minLength": 1
                },
                "body": {
                  "type": "string",
                  "minLength": 1
                },
                "object_id": {
                  "type": "string",
                  "minLength": 1
                },
                "enrollment_id": {
                  "type": "string",
                  "minLength": 1
                },
                "expires_at": {
                  "type": "string",
                  "format": "date-time"
                },
                "occurred_at": {
                  "type": "string",
                  "format": "date-time"
                },
                "cta_url": {
                  "type": "string",
                  "format": "uri"
                }
              },
              "additionalProperties": true
            },
            "examples": [
              {
                "title": "Device enrollment requested",
                "body": "A new MDM device enrollment session is ready.",
                "object_id": "enrollment_hash_123",
                "enrollment_id": "enrollment_hash_123",
                "expires_at": "2026-07-20T12:30:00.000Z",
                "occurred_at": "2026-07-20T12:00:00.000Z"
              }
            ],
            "dataClassification": "internal",
            "recipients": {
              "modes": [
                "organization_member"
              ],
              "externalAddress": "forbidden"
            },
            "sensitiveFields": [],
            "idempotency": {
              "required": true,
              "pattern": "^mdm:enrollment-requested:"
            }
          },
          {
            "type": "mdm.profile.changed",
            "version": 1,
            "description": "An operator durably changed a managed device profile and its derived command plan.",
            "status": "published",
            "payloadSchema": {
              "type": "object",
              "required": [
                "title",
                "body",
                "object_id",
                "device_id",
                "profile_mode",
                "policy_preset",
                "queued_command_count",
                "occurred_at"
              ],
              "properties": {
                "title": {
                  "type": "string",
                  "minLength": 1
                },
                "body": {
                  "type": "string",
                  "minLength": 1
                },
                "object_id": {
                  "type": "string",
                  "minLength": 1
                },
                "device_id": {
                  "type": "string",
                  "minLength": 1
                },
                "profile_mode": {
                  "type": "string",
                  "minLength": 1
                },
                "policy_preset": {
                  "type": "string",
                  "minLength": 1
                },
                "queued_command_count": {
                  "type": "integer",
                  "minimum": 0
                },
                "occurred_at": {
                  "type": "string",
                  "format": "date-time"
                },
                "cta_url": {
                  "type": "string",
                  "format": "uri"
                }
              },
              "additionalProperties": true
            },
            "examples": [
              {
                "title": "Device profile changed: device_123",
                "body": "The device is now using the business_lockdown policy preset.",
                "object_id": "device_123",
                "device_id": "device_123",
                "profile_mode": "business_display",
                "policy_preset": "business_lockdown",
                "queued_command_count": 2,
                "occurred_at": "2026-07-20T12:00:00.000Z"
              }
            ],
            "dataClassification": "internal",
            "recipients": {
              "modes": [
                "organization_member"
              ],
              "externalAddress": "forbidden"
            },
            "sensitiveFields": [],
            "idempotency": {
              "required": true,
              "pattern": "^mdm:profile-changed:"
            }
          }
        ]
      },
      "actions": [
        {
          "name": "workspaces.delete",
          "title": "Archive MDM workspace",
          "description": "Archive an empty MDM workspace. The platform owns the workspace record; this app confirms it holds no devices and asks Auth to archive it.",
          "target": "api",
          "outputSchema": {
            "type": "object",
            "additionalProperties": true
          },
          "method": "DELETE",
          "path": "/api/workspaces/{workspaceId}",
          "permission": "workspace:delete",
          "readOnly": false,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "workspaceId": {
                "type": "string",
                "minLength": 1
              }
            },
            "required": [
              "workspaceId"
            ],
            "additionalProperties": false
          },
          "destructive": true,
          "requiresConfirmation": true,
          "agentAccess": "confirm",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "workspaceId": "example"
            },
            "cli_example": [
              "topolo actions --service topolo-mdm --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --confirm --json"
            ],
            "http_example": {
              "method": "DELETE",
              "path": "/api/workspaces/example",
              "body": null
            },
            "effects": "May change state through DELETE /api/workspaces/{workspaceId}. Inspect the plan and honor the published confirmation policy.",
            "verification": [
              "Check the structured action result.",
              "Read the affected resource back through the corresponding get or list action."
            ],
            "recovery": [
              "Do not retry an ambiguous mutation until a read confirms whether it applied.",
              "Use a published inverse, update, archive, or delete action only after inspecting its contract."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "DELETE /api/workspaces/*",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "workspaces.data.export",
          "title": "Export MDM workspace data",
          "description": "Export the MDM-owned device, enrollment, notification, assignment, and retained event data for one authorized workspace with credentials redacted.",
          "target": "api",
          "method": "GET",
          "path": "/api/workspaces/{workspaceId}/data",
          "permission": "workspace:read",
          "authorizationMode": "static",
          "readOnly": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "workspaceId": {
                "type": "string",
                "minLength": 1
              }
            },
            "required": [
              "workspaceId"
            ],
            "additionalProperties": false
          },
          "outputSchema": {
            "type": "object",
            "additionalProperties": true
          },
          "destructive": false,
          "requiresConfirmation": false,
          "agentAccess": "auto",
          "documentation": {
            "example_input": {
              "workspaceId": "example"
            },
            "cli_example": [
              "topolo actions --service topolo-mdm --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --json"
            ],
            "http_example": {
              "method": "GET",
              "path": "/api/workspaces/example/data",
              "body": null
            },
            "effects": "Reads state through GET /api/workspaces/{workspaceId}/data without a declared mutation.",
            "verification": [
              "Check the structured action result and pagination or resource identifiers before using it downstream."
            ],
            "recovery": [
              "Correct identity, resource context, permission, or input validation failures, then retry the read."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "GET /api/workspaces/*/data",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "workspaces.data.erase",
          "title": "Erase MDM workspace data",
          "description": "Permanently erase all MDM-owned data for one authorized workspace while preserving the canonical Auth workspace and credentials.",
          "target": "api",
          "method": "DELETE",
          "path": "/api/workspaces/{workspaceId}/data",
          "permission": "workspace:delete",
          "authorizationMode": "static",
          "readOnly": false,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "workspaceId": {
                "type": "string",
                "minLength": 1
              }
            },
            "required": [
              "workspaceId"
            ],
            "additionalProperties": false
          },
          "outputSchema": {
            "type": "object",
            "additionalProperties": true
          },
          "destructive": true,
          "requiresConfirmation": true,
          "agentAccess": "confirm",
          "documentation": {
            "example_input": {
              "workspaceId": "example"
            },
            "cli_example": [
              "topolo actions --service topolo-mdm --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --confirm --json"
            ],
            "http_example": {
              "method": "DELETE",
              "path": "/api/workspaces/example/data",
              "body": null
            },
            "effects": "May change state through DELETE /api/workspaces/{workspaceId}/data. Inspect the plan and honor the published confirmation policy.",
            "verification": [
              "Check the structured action result.",
              "Read the affected resource back through the corresponding get or list action."
            ],
            "recovery": [
              "Do not retry an ambiguous mutation until a read confirms whether it applied.",
              "Use a published inverse, update, archive, or delete action only after inspecting its contract."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "DELETE /api/workspaces/*/data",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "widget.get",
          "title": "Get widget summary",
          "description": "Get the TopoloOne widget summary for this service.",
          "method": "GET",
          "path": "/api/widget",
          "permission": "dashboard:read",
          "authorizationMode": "static",
          "readOnly": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {},
            "additionalProperties": false
          },
          "outputSchema": {
            "type": "object",
            "additionalProperties": true
          },
          "target": "api",
          "destructive": false,
          "requiresConfirmation": false,
          "agentAccess": "auto",
          "documentation": {
            "example_input": {},
            "cli_example": [
              "topolo actions --service topolo-mdm --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --json"
            ],
            "http_example": {
              "method": "GET",
              "path": "/api/widget",
              "body": null
            },
            "effects": "Reads state through GET /api/widget without a declared mutation.",
            "verification": [
              "Check the structured action result and pagination or resource identifiers before using it downstream."
            ],
            "recovery": [
              "Correct identity, resource context, permission, or input validation failures, then retry the read."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "GET /api/widget",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "fleet.get",
          "title": "Get fleet report",
          "description": "Get the MDM OpenClaw fleet report.",
          "method": "GET",
          "path": "/api/openclaw/fleet",
          "permission": "reports:read",
          "authorizationMode": "static",
          "readOnly": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {},
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Get fleet report.",
            "additionalProperties": true
          },
          "destructive": false,
          "requiresConfirmation": false,
          "agentAccess": "auto",
          "documentation": {
            "example_input": {},
            "cli_example": [
              "topolo actions --service topolo-mdm --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --json"
            ],
            "http_example": {
              "method": "GET",
              "path": "/api/openclaw/fleet",
              "body": null
            },
            "effects": "Reads state through GET /api/openclaw/fleet without a declared mutation.",
            "verification": [
              "Check the structured action result and pagination or resource identifiers before using it downstream."
            ],
            "recovery": [
              "Correct identity, resource context, permission, or input validation failures, then retry the read."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "GET /api/openclaw/fleet",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "events.list",
          "title": "List fleet events",
          "description": "List MDM OpenClaw events.",
          "method": "GET",
          "path": "/api/openclaw/events",
          "permission": "reports:read",
          "authorizationMode": "static",
          "readOnly": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "since": {
                "type": "string",
                "minLength": 1
              },
              "limit": {
                "type": "integer",
                "exclusiveMinimum": 0,
                "maximum": 500
              }
            },
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by List fleet events.",
            "additionalProperties": true
          },
          "destructive": false,
          "requiresConfirmation": false,
          "agentAccess": "auto",
          "documentation": {
            "example_input": {
              "since": "example",
              "limit": 1
            },
            "cli_example": [
              "topolo actions --service topolo-mdm --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --json"
            ],
            "http_example": {
              "method": "GET",
              "path": "/api/openclaw/events",
              "body": null
            },
            "effects": "Reads state through GET /api/openclaw/events without a declared mutation.",
            "verification": [
              "Check the structured action result and pagination or resource identifiers before using it downstream."
            ],
            "recovery": [
              "Correct identity, resource context, permission, or input validation failures, then retry the read."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "GET /api/openclaw/events",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "operator_events.list",
          "title": "List operator events",
          "description": "List MDM operator events.",
          "method": "GET",
          "path": "/api/events",
          "permission": "dashboard:read",
          "authorizationMode": "static",
          "readOnly": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "workspace_id": {
                "type": "string",
                "minLength": 1
              }
            },
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by List operator events.",
            "additionalProperties": true
          },
          "destructive": false,
          "requiresConfirmation": false,
          "agentAccess": "auto",
          "documentation": {
            "example_input": {
              "workspace_id": "00000000-0000-4000-8000-000000000000"
            },
            "cli_example": [
              "topolo actions --service topolo-mdm --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --json"
            ],
            "http_example": {
              "method": "GET",
              "path": "/api/events",
              "body": null
            },
            "effects": "Reads state through GET /api/events without a declared mutation.",
            "verification": [
              "Check the structured action result and pagination or resource identifiers before using it downstream."
            ],
            "recovery": [
              "Correct identity, resource context, permission, or input validation failures, then retry the read."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "GET /api/events",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "enrollment_sessions.create",
          "title": "Create enrollment session",
          "description": "Create an MDM enrollment session.",
          "method": "POST",
          "path": "/api/enrollment-sessions",
          "permission": "devices:control",
          "authorizationMode": "static",
          "requiresConfirmation": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "workspace_id": {
                "type": "string",
                "minLength": 1
              }
            },
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Create enrollment session.",
            "additionalProperties": true
          },
          "readOnly": false,
          "destructive": false,
          "agentAccess": "confirm",
          "documentation": {
            "example_input": {
              "workspace_id": "00000000-0000-4000-8000-000000000000"
            },
            "cli_example": [
              "topolo actions --service topolo-mdm --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --confirm --json"
            ],
            "http_example": {
              "method": "POST",
              "path": "/api/enrollment-sessions",
              "body": {
                "workspace_id": "00000000-0000-4000-8000-000000000000"
              }
            },
            "effects": "May change state through POST /api/enrollment-sessions. Inspect the plan and honor the published confirmation policy.",
            "verification": [
              "Check the structured action result.",
              "Read the affected resource back through the corresponding get or list action."
            ],
            "recovery": [
              "Do not retry an ambiguous mutation until a read confirms whether it applied.",
              "Use a published inverse, update, archive, or delete action only after inspecting its contract."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "POST /api/enrollment-sessions",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "devices.list",
          "title": "List devices",
          "description": "List MDM devices.",
          "method": "GET",
          "path": "/api/devices",
          "permission": "devices:read",
          "authorizationMode": "static",
          "readOnly": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "workspace_id": {
                "type": "string",
                "minLength": 1
              }
            },
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by List devices.",
            "additionalProperties": true
          },
          "destructive": false,
          "requiresConfirmation": false,
          "agentAccess": "auto",
          "documentation": {
            "example_input": {
              "workspace_id": "00000000-0000-4000-8000-000000000000"
            },
            "cli_example": [
              "topolo actions --service topolo-mdm --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --json"
            ],
            "http_example": {
              "method": "GET",
              "path": "/api/devices",
              "body": null
            },
            "effects": "Reads state through GET /api/devices without a declared mutation.",
            "verification": [
              "Check the structured action result and pagination or resource identifiers before using it downstream."
            ],
            "recovery": [
              "Correct identity, resource context, permission, or input validation failures, then retry the read."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "GET /api/devices",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "devices.admin_list",
          "title": "Admin list devices",
          "description": "List MDM devices with admin scope.",
          "method": "GET",
          "path": "/api/admin/devices",
          "permission": "devices:admin",
          "authorizationMode": "static",
          "readOnly": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "filter_workspace_id": {
                "type": "string",
                "minLength": 1
              }
            },
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Admin list devices.",
            "additionalProperties": true
          },
          "destructive": false,
          "requiresConfirmation": false,
          "agentAccess": "auto",
          "documentation": {
            "example_input": {
              "filter_workspace_id": "00000000-0000-4000-8000-000000000000"
            },
            "cli_example": [
              "topolo actions --service topolo-mdm --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --json"
            ],
            "http_example": {
              "method": "GET",
              "path": "/api/admin/devices",
              "body": null
            },
            "effects": "Reads state through GET /api/admin/devices without a declared mutation.",
            "verification": [
              "Check the structured action result and pagination or resource identifiers before using it downstream."
            ],
            "recovery": [
              "Correct identity, resource context, permission, or input validation failures, then retry the read."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "GET /api/admin/devices",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "devices.delete",
          "title": "Delete device",
          "description": "Delete an MDM device.",
          "method": "DELETE",
          "path": "/api/devices/{deviceId}",
          "permission": "devices:write",
          "authorizationMode": "static",
          "requiresConfirmation": true,
          "destructive": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "deviceId": {
                "type": "string",
                "minLength": 1
              },
              "workspace_id": {
                "type": "string",
                "minLength": 1
              }
            },
            "required": [
              "deviceId"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Delete device.",
            "additionalProperties": true
          },
          "readOnly": false,
          "agentAccess": "confirm",
          "documentation": {
            "example_input": {
              "deviceId": "example"
            },
            "cli_example": [
              "topolo actions --service topolo-mdm --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --confirm --json"
            ],
            "http_example": {
              "method": "DELETE",
              "path": "/api/devices/example",
              "body": null
            },
            "effects": "May change state through DELETE /api/devices/{deviceId}. Inspect the plan and honor the published confirmation policy.",
            "verification": [
              "Check the structured action result.",
              "Read the affected resource back through the corresponding get or list action."
            ],
            "recovery": [
              "Do not retry an ambiguous mutation until a read confirms whether it applied.",
              "Use a published inverse, update, archive, or delete action only after inspecting its contract."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "DELETE /api/devices/*",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "devices.dump.get",
          "title": "Get device dump",
          "description": "Get an MDM device dump.",
          "method": "GET",
          "path": "/api/device-dump/{deviceId}",
          "permission": "devices:read",
          "authorizationMode": "static",
          "readOnly": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "deviceId": {
                "type": "string",
                "minLength": 1
              },
              "workspace_id": {
                "type": "string",
                "minLength": 1
              }
            },
            "required": [
              "deviceId"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Get device dump.",
            "additionalProperties": true
          },
          "destructive": false,
          "requiresConfirmation": false,
          "agentAccess": "auto",
          "documentation": {
            "example_input": {
              "deviceId": "example"
            },
            "cli_example": [
              "topolo actions --service topolo-mdm --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --json"
            ],
            "http_example": {
              "method": "GET",
              "path": "/api/device-dump/example",
              "body": null
            },
            "effects": "Reads state through GET /api/device-dump/{deviceId} without a declared mutation.",
            "verification": [
              "Check the structured action result and pagination or resource identifiers before using it downstream."
            ],
            "recovery": [
              "Correct identity, resource context, permission, or input validation failures, then retry the read."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "GET /api/device-dump/*",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "devices.debug.get",
          "title": "Get device debug",
          "description": "Get MDM device debug data.",
          "method": "GET",
          "path": "/api/devices/{deviceId}/debug",
          "permission": "devices:read",
          "authorizationMode": "static",
          "readOnly": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "deviceId": {
                "type": "string",
                "minLength": 1
              },
              "workspace_id": {
                "type": "string",
                "minLength": 1
              }
            },
            "required": [
              "deviceId"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Get device debug.",
            "additionalProperties": true
          },
          "destructive": false,
          "requiresConfirmation": false,
          "agentAccess": "auto",
          "documentation": {
            "example_input": {
              "deviceId": "example"
            },
            "cli_example": [
              "topolo actions --service topolo-mdm --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --json"
            ],
            "http_example": {
              "method": "GET",
              "path": "/api/devices/example/debug",
              "body": null
            },
            "effects": "Reads state through GET /api/devices/{deviceId}/debug without a declared mutation.",
            "verification": [
              "Check the structured action result and pagination or resource identifiers before using it downstream."
            ],
            "recovery": [
              "Correct identity, resource context, permission, or input validation failures, then retry the read."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "GET /api/devices/*/debug",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "devices.info.update",
          "title": "Update device info",
          "description": "Update MDM device info.",
          "method": "POST",
          "path": "/api/device-info/{deviceId}",
          "permission": "devices:write",
          "authorizationMode": "static",
          "requiresConfirmation": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "deviceId": {
                "type": "string",
                "minLength": 1
              },
              "workspace_id": {
                "type": "string",
                "minLength": 1
              },
              "installedPackages": {
                "type": "array",
                "items": {}
              },
              "metrics": {
                "type": "object",
                "propertyNames": {
                  "type": "string"
                },
                "additionalProperties": {}
              }
            },
            "required": [
              "deviceId"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Update device info.",
            "additionalProperties": true
          },
          "readOnly": false,
          "destructive": false,
          "agentAccess": "confirm",
          "documentation": {
            "example_input": {
              "deviceId": "example"
            },
            "cli_example": [
              "topolo actions --service topolo-mdm --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --confirm --json"
            ],
            "http_example": {
              "method": "POST",
              "path": "/api/device-info/example",
              "body": {
                "deviceId": "example"
              }
            },
            "effects": "May change state through POST /api/device-info/{deviceId}. Inspect the plan and honor the published confirmation policy.",
            "verification": [
              "Check the structured action result.",
              "Read the affected resource back through the corresponding get or list action."
            ],
            "recovery": [
              "Do not retry an ambiguous mutation until a read confirms whether it applied.",
              "Use a published inverse, update, archive, or delete action only after inspecting its contract."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "POST /api/device-info/*",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "devices.account.register",
          "title": "Register device account",
          "description": "Register an MDM device account.",
          "method": "POST",
          "path": "/api/register-account/{deviceId}",
          "permission": "devices:write",
          "authorizationMode": "static",
          "requiresConfirmation": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "deviceId": {
                "type": "string",
                "minLength": 1
              },
              "workspace_id": {
                "type": "string",
                "minLength": 1
              },
              "accountNumber": {
                "type": "string",
                "minLength": 1
              }
            },
            "required": [
              "deviceId",
              "accountNumber"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Register device account.",
            "additionalProperties": true
          },
          "readOnly": false,
          "destructive": false,
          "agentAccess": "confirm",
          "documentation": {
            "example_input": {
              "deviceId": "example",
              "accountNumber": "example"
            },
            "cli_example": [
              "topolo actions --service topolo-mdm --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --confirm --json"
            ],
            "http_example": {
              "method": "POST",
              "path": "/api/register-account/example",
              "body": {
                "deviceId": "example",
                "accountNumber": "example"
              }
            },
            "effects": "May change state through POST /api/register-account/{deviceId}. Inspect the plan and honor the published confirmation policy.",
            "verification": [
              "Check the structured action result.",
              "Read the affected resource back through the corresponding get or list action."
            ],
            "recovery": [
              "Do not retry an ambiguous mutation until a read confirms whether it applied.",
              "Use a published inverse, update, archive, or delete action only after inspecting its contract."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "POST /api/register-account/*",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "devices.account_id.update",
          "title": "Update device account id",
          "description": "Update an MDM device account id.",
          "method": "POST",
          "path": "/api/update-account-id/{deviceId}",
          "permission": "devices:write",
          "authorizationMode": "static",
          "requiresConfirmation": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "deviceId": {
                "type": "string",
                "minLength": 1
              },
              "workspace_id": {
                "type": "string",
                "minLength": 1
              },
              "accountNumber": {
                "type": "string",
                "minLength": 1
              }
            },
            "required": [
              "deviceId",
              "accountNumber"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Update device account id.",
            "additionalProperties": true
          },
          "readOnly": false,
          "destructive": false,
          "agentAccess": "confirm",
          "documentation": {
            "example_input": {
              "deviceId": "example",
              "accountNumber": "example"
            },
            "cli_example": [
              "topolo actions --service topolo-mdm --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --confirm --json"
            ],
            "http_example": {
              "method": "POST",
              "path": "/api/update-account-id/example",
              "body": {
                "deviceId": "example",
                "accountNumber": "example"
              }
            },
            "effects": "May change state through POST /api/update-account-id/{deviceId}. Inspect the plan and honor the published confirmation policy.",
            "verification": [
              "Check the structured action result.",
              "Read the affected resource back through the corresponding get or list action."
            ],
            "recovery": [
              "Do not retry an ambiguous mutation until a read confirms whether it applied.",
              "Use a published inverse, update, archive, or delete action only after inspecting its contract."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "POST /api/update-account-id/*",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "devices.account_info.update",
          "title": "Update device account info",
          "description": "Update MDM device account info.",
          "method": "POST",
          "path": "/api/update-account-info/{deviceId}",
          "permission": "devices:write",
          "authorizationMode": "static",
          "requiresConfirmation": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "deviceId": {
                "type": "string",
                "minLength": 1
              },
              "workspace_id": {
                "type": "string",
                "minLength": 1
              },
              "accountInfo": {
                "type": "object",
                "propertyNames": {
                  "type": "string"
                },
                "additionalProperties": {}
              }
            },
            "required": [
              "deviceId",
              "accountInfo"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Update device account info.",
            "additionalProperties": true
          },
          "readOnly": false,
          "destructive": false,
          "agentAccess": "confirm",
          "documentation": {
            "example_input": {
              "deviceId": "example",
              "accountInfo": {}
            },
            "cli_example": [
              "topolo actions --service topolo-mdm --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --confirm --json"
            ],
            "http_example": {
              "method": "POST",
              "path": "/api/update-account-info/example",
              "body": {
                "deviceId": "example",
                "accountInfo": {}
              }
            },
            "effects": "May change state through POST /api/update-account-info/{deviceId}. Inspect the plan and honor the published confirmation policy.",
            "verification": [
              "Check the structured action result.",
              "Read the affected resource back through the corresponding get or list action."
            ],
            "recovery": [
              "Do not retry an ambiguous mutation until a read confirms whether it applied.",
              "Use a published inverse, update, archive, or delete action only after inspecting its contract."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "POST /api/update-account-info/*",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "device_profiles.list",
          "title": "List device profiles",
          "description": "List MDM device profiles.",
          "method": "GET",
          "path": "/api/device-profiles",
          "permission": "policies:read",
          "authorizationMode": "static",
          "readOnly": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "workspace_id": {
                "type": "string",
                "minLength": 1
              }
            },
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by List device profiles.",
            "additionalProperties": true
          },
          "destructive": false,
          "requiresConfirmation": false,
          "agentAccess": "auto",
          "documentation": {
            "example_input": {
              "workspace_id": "00000000-0000-4000-8000-000000000000"
            },
            "cli_example": [
              "topolo actions --service topolo-mdm --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --json"
            ],
            "http_example": {
              "method": "GET",
              "path": "/api/device-profiles",
              "body": null
            },
            "effects": "Reads state through GET /api/device-profiles without a declared mutation.",
            "verification": [
              "Check the structured action result and pagination or resource identifiers before using it downstream."
            ],
            "recovery": [
              "Correct identity, resource context, permission, or input validation failures, then retry the read."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "GET /api/device-profiles",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "device_profiles.get",
          "title": "Get device profile",
          "description": "Get an MDM device profile.",
          "method": "GET",
          "path": "/api/device-profiles/{deviceId}",
          "permission": "policies:read",
          "authorizationMode": "static",
          "readOnly": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "deviceId": {
                "type": "string",
                "minLength": 1
              },
              "workspace_id": {
                "type": "string",
                "minLength": 1
              }
            },
            "required": [
              "deviceId"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Get device profile.",
            "additionalProperties": true
          },
          "destructive": false,
          "requiresConfirmation": false,
          "agentAccess": "auto",
          "documentation": {
            "example_input": {
              "deviceId": "example"
            },
            "cli_example": [
              "topolo actions --service topolo-mdm --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --json"
            ],
            "http_example": {
              "method": "GET",
              "path": "/api/device-profiles/example",
              "body": null
            },
            "effects": "Reads state through GET /api/device-profiles/{deviceId} without a declared mutation.",
            "verification": [
              "Check the structured action result and pagination or resource identifiers before using it downstream."
            ],
            "recovery": [
              "Correct identity, resource context, permission, or input validation failures, then retry the read."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "GET /api/device-profiles/*",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "device_profiles.upsert",
          "title": "Upsert device profile",
          "description": "Upsert an MDM device profile.",
          "method": "PUT",
          "path": "/api/device-profiles/{deviceId}",
          "permission": "policies:write",
          "authorizationMode": "static",
          "requiresConfirmation": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "deviceId": {
                "type": "string",
                "minLength": 1
              },
              "workspace_id": {
                "type": "string",
                "minLength": 1
              },
              "profile": {
                "type": "object",
                "propertyNames": {
                  "type": "string"
                },
                "additionalProperties": {}
              }
            },
            "required": [
              "deviceId",
              "profile"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Upsert device profile.",
            "additionalProperties": true
          },
          "readOnly": false,
          "destructive": false,
          "agentAccess": "confirm",
          "documentation": {
            "example_input": {
              "deviceId": "example",
              "profile": {}
            },
            "cli_example": [
              "topolo actions --service topolo-mdm --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --confirm --json"
            ],
            "http_example": {
              "method": "PUT",
              "path": "/api/device-profiles/example",
              "body": {
                "deviceId": "example",
                "profile": {}
              }
            },
            "effects": "May change state through PUT /api/device-profiles/{deviceId}. Inspect the plan and honor the published confirmation policy.",
            "verification": [
              "Check the structured action result.",
              "Read the affected resource back through the corresponding get or list action."
            ],
            "recovery": [
              "Do not retry an ambiguous mutation until a read confirms whether it applied.",
              "Use a published inverse, update, archive, or delete action only after inspecting its contract."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "PUT /api/device-profiles/*",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "commands.enqueue",
          "title": "Enqueue command",
          "description": "Enqueue an MDM device command.",
          "method": "POST",
          "path": "/api/enqueue",
          "permission": "commands:invoke",
          "authorizationMode": "static",
          "requiresConfirmation": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "workspace_id": {
                "type": "string",
                "minLength": 1
              },
              "deviceId": {
                "type": "string",
                "minLength": 1
              },
              "command": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "minLength": 1
                  },
                  "action": {
                    "type": "string",
                    "minLength": 1
                  }
                },
                "required": [
                  "id",
                  "action"
                ],
                "additionalProperties": {}
              }
            },
            "required": [
              "deviceId",
              "command"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Enqueue command.",
            "additionalProperties": true
          },
          "readOnly": false,
          "destructive": false,
          "agentAccess": "confirm",
          "documentation": {
            "example_input": {
              "deviceId": "example",
              "command": {
                "id": "00000000-0000-4000-8000-000000000000",
                "action": "example"
              }
            },
            "cli_example": [
              "topolo actions --service topolo-mdm --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --confirm --json"
            ],
            "http_example": {
              "method": "POST",
              "path": "/api/enqueue",
              "body": {
                "deviceId": "example",
                "command": {
                  "id": "00000000-0000-4000-8000-000000000000",
                  "action": "example"
                }
              }
            },
            "effects": "May change state through POST /api/enqueue. Inspect the plan and honor the published confirmation policy.",
            "verification": [
              "Check the structured action result.",
              "Read the affected resource back through the corresponding get or list action."
            ],
            "recovery": [
              "Do not retry an ambiguous mutation until a read confirms whether it applied.",
              "Use a published inverse, update, archive, or delete action only after inspecting its contract."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "POST /api/enqueue",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "commands.clear",
          "title": "Clear commands",
          "description": "Clear queued MDM device commands.",
          "method": "POST",
          "path": "/api/clear-commands",
          "permission": "commands:invoke",
          "authorizationMode": "static",
          "requiresConfirmation": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "workspace_id": {
                "type": "string",
                "minLength": 1
              },
              "deviceId": {
                "type": "string",
                "minLength": 1
              }
            },
            "required": [
              "deviceId"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Clear commands.",
            "additionalProperties": true
          },
          "readOnly": false,
          "destructive": false,
          "agentAccess": "confirm",
          "documentation": {
            "example_input": {
              "deviceId": "example"
            },
            "cli_example": [
              "topolo actions --service topolo-mdm --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --confirm --json"
            ],
            "http_example": {
              "method": "POST",
              "path": "/api/clear-commands",
              "body": {
                "deviceId": "example"
              }
            },
            "effects": "May change state through POST /api/clear-commands. Inspect the plan and honor the published confirmation policy.",
            "verification": [
              "Check the structured action result.",
              "Read the affected resource back through the corresponding get or list action."
            ],
            "recovery": [
              "Do not retry an ambiguous mutation until a read confirms whether it applied.",
              "Use a published inverse, update, archive, or delete action only after inspecting its contract."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "POST /api/clear-commands",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "commands.history.get",
          "title": "Get command history",
          "description": "Get MDM command history for a device.",
          "method": "GET",
          "path": "/api/command-history/{deviceId}",
          "permission": "devices:read",
          "authorizationMode": "static",
          "readOnly": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "deviceId": {
                "type": "string",
                "minLength": 1
              },
              "workspace_id": {
                "type": "string",
                "minLength": 1
              }
            },
            "required": [
              "deviceId"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Get command history.",
            "additionalProperties": true
          },
          "destructive": false,
          "requiresConfirmation": false,
          "agentAccess": "auto",
          "documentation": {
            "example_input": {
              "deviceId": "example"
            },
            "cli_example": [
              "topolo actions --service topolo-mdm --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --json"
            ],
            "http_example": {
              "method": "GET",
              "path": "/api/command-history/example",
              "body": null
            },
            "effects": "Reads state through GET /api/command-history/{deviceId} without a declared mutation.",
            "verification": [
              "Check the structured action result and pagination or resource identifiers before using it downstream."
            ],
            "recovery": [
              "Correct identity, resource context, permission, or input validation failures, then retry the read."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "GET /api/command-history/*",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        }
      ],
      "action_coverage": {
        "status": "ok",
        "served_routes": 40,
        "matched_actions": 23,
        "declared_unserved_actions": [],
        "coverage_excluded_actions": [],
        "uncatalogued_routes": [],
        "ignored_routes": 17,
        "configured_exclusions": 15,
        "configuration_findings": [],
        "notes": []
      },
      "runtime_contract_audit": {
        "status": "verified",
        "actions": 23,
        "contracts": 23,
        "contract_module": "topolo.action-contracts.mjs",
        "validator_sources": [
          "apps/api/index.js"
        ],
        "authorization_sources": [
          "apps/api/index.js"
        ],
        "findings": []
      }
    }
  ],
  "mobile_contracts": [
    {
      "source_path": "apps/TopoloMDM/topolo.mobile-experience.json",
      "contract": {
        "version": "1.0.0",
        "status": "published",
        "mode": "native_capability",
        "appId": "app_topolo_mdm",
        "localizationNamespace": "mdm",
        "permissions": [
          "devices:read",
          "policies:read",
          "apps:read"
        ],
        "offlinePolicy": "read_through_cache",
        "fallbackPath": "/devices",
        "auth": {
          "audience": "topolo-mdm",
          "scopes": [
            "devices:read",
            "policies:read",
            "apps:read"
          ]
        },
        "routes": [
          {
            "path": "/devices",
            "apiPath": "/api/devices",
            "title": "Devices",
            "titleKey": "mdm.mobile.intl.devices-title",
            "template": "record.list",
            "dataSource": "mdm.devices.list"
          },
          {
            "path": "/device-profiles",
            "apiPath": "/api/device-profiles",
            "title": "Device profiles",
            "titleKey": "mdm.mobile.routes.deviceProfiles.title",
            "template": "record.list",
            "dataSource": "mdm.deviceProfiles.list",
            "detailRoute": "/device-profiles/:id"
          },
          {
            "path": "/device-profiles/:id",
            "apiPath": "/api/device-profiles/:id",
            "title": "Device profile",
            "titleKey": "mdm.mobile.routes.deviceProfileDetail.title",
            "template": "record.detail",
            "dataSource": "mdm.deviceProfiles.detail"
          }
        ]
      }
    }
  ],
  "package_manifests": [],
  "deployment_configs": [],
  "source_signals": {
    "api_routes": [
      {
        "method": "GET",
        "path": "/health",
        "source_path": "apps/TopoloMDM/apps/api/index.js"
      },
      {
        "method": "POST",
        "path": "/register",
        "source_path": "apps/TopoloMDM/apps/api/index.js"
      },
      {
        "method": "POST",
        "path": "/poll",
        "source_path": "apps/TopoloMDM/apps/api/index.js"
      },
      {
        "method": "POST",
        "path": "/device-push-token",
        "source_path": "apps/TopoloMDM/apps/api/index.js"
      },
      {
        "method": "POST",
        "path": "/command-status",
        "source_path": "apps/TopoloMDM/apps/api/index.js"
      },
      {
        "method": "GET",
        "path": "/device-events",
        "source_path": "apps/TopoloMDM/apps/api/index.js"
      },
      {
        "method": "GET",
        "path": "/widget",
        "source_path": "apps/TopoloMDM/apps/api/index.js"
      },
      {
        "method": "GET",
        "path": "/events",
        "source_path": "apps/TopoloMDM/apps/api/index.js"
      },
      {
        "method": "GET",
        "path": "/me",
        "source_path": "apps/TopoloMDM/apps/api/index.js"
      },
      {
        "method": "GET",
        "path": "/runtime-config",
        "source_path": "apps/TopoloMDM/apps/api/index.js"
      },
      {
        "method": "DELETE",
        "path": "/workspaces/:workspaceId",
        "source_path": "apps/TopoloMDM/apps/api/index.js"
      },
      {
        "method": "GET",
        "path": "/workspaces/:workspaceId/data",
        "source_path": "apps/TopoloMDM/apps/api/index.js"
      },
      {
        "method": "DELETE",
        "path": "/workspaces/:workspaceId/data",
        "source_path": "apps/TopoloMDM/apps/api/index.js"
      },
      {
        "method": "LITERAL",
        "path": "/data",
        "source_path": "apps/TopoloMDM/apps/api/realtime.js"
      },
      {
        "method": "LITERAL",
        "path": "/connect",
        "source_path": "apps/TopoloMDM/apps/api/realtime.js"
      },
      {
        "method": "LITERAL",
        "path": "/publish",
        "source_path": "apps/TopoloMDM/apps/api/realtime.js"
      },
      {
        "method": "POST",
        "path": "/enqueue",
        "source_path": "apps/TopoloMDM/apps/api/routes/commands.js"
      },
      {
        "method": "POST",
        "path": "/clear-commands",
        "source_path": "apps/TopoloMDM/apps/api/routes/commands.js"
      },
      {
        "method": "GET",
        "path": "/command-history/:deviceId",
        "source_path": "apps/TopoloMDM/apps/api/routes/commands.js"
      },
      {
        "method": "POST",
        "path": "/crash",
        "source_path": "apps/TopoloMDM/apps/api/routes/commands.js"
      },
      {
        "method": "POST",
        "path": "/enrollment-sessions",
        "source_path": "apps/TopoloMDM/apps/api/routes/devices.js"
      },
      {
        "method": "GET",
        "path": "/devices",
        "source_path": "apps/TopoloMDM/apps/api/routes/devices.js"
      },
      {
        "method": "GET",
        "path": "/admin/devices",
        "source_path": "apps/TopoloMDM/apps/api/routes/devices.js"
      },
      {
        "method": "DELETE",
        "path": "/devices/:deviceId",
        "source_path": "apps/TopoloMDM/apps/api/routes/devices.js"
      },
      {
        "method": "GET",
        "path": "/device-dump/:deviceId",
        "source_path": "apps/TopoloMDM/apps/api/routes/devices.js"
      },
      {
        "method": "GET",
        "path": "/devices/:deviceId/debug",
        "source_path": "apps/TopoloMDM/apps/api/routes/devices.js"
      },
      {
        "method": "POST",
        "path": "/device-info/:deviceId",
        "source_path": "apps/TopoloMDM/apps/api/routes/devices.js"
      },
      {
        "method": "GET",
        "path": "/device-profiles",
        "source_path": "apps/TopoloMDM/apps/api/routes/devices.js"
      },
      {
        "method": "GET",
        "path": "/device-profiles/:deviceId",
        "source_path": "apps/TopoloMDM/apps/api/routes/devices.js"
      },
      {
        "method": "PUT",
        "path": "/device-profiles/:deviceId",
        "source_path": "apps/TopoloMDM/apps/api/routes/devices.js"
      },
      {
        "method": "POST",
        "path": "/register-account/:deviceId",
        "source_path": "apps/TopoloMDM/apps/api/routes/devices.js"
      },
      {
        "method": "POST",
        "path": "/update-account-id/:deviceId",
        "source_path": "apps/TopoloMDM/apps/api/routes/devices.js"
      },
      {
        "method": "POST",
        "path": "/update-account-info/:deviceId",
        "source_path": "apps/TopoloMDM/apps/api/routes/devices.js"
      },
      {
        "method": "GET",
        "path": "/openclaw/fleet",
        "source_path": "apps/TopoloMDM/apps/api/routes/integrations.js"
      },
      {
        "method": "GET",
        "path": "/openclaw/events",
        "source_path": "apps/TopoloMDM/apps/api/routes/integrations.js"
      },
      {
        "method": "LITERAL",
        "path": "/enrollment-sessions",
        "source_path": "apps/TopoloMDM/apps/api/workspace-state.js"
      },
      {
        "method": "LITERAL",
        "path": "/enrollment-sessions/consume",
        "source_path": "apps/TopoloMDM/apps/api/workspace-state.js"
      },
      {
        "method": "LITERAL",
        "path": "/children",
        "source_path": "apps/TopoloMDM/apps/api/workspace-state.js"
      },
      {
        "method": "LITERAL",
        "path": "/auth/callback",
        "source_path": "apps/TopoloMDM/apps/web/src/worker.ts"
      }
    ],
    "ui_routes": [
      {
        "path": "/dashboard",
        "source_path": "apps/TopoloMDM/apps/web/src/App.tsx"
      },
      {
        "path": "/dashboard/overview",
        "source_path": "apps/TopoloMDM/apps/web/src/App.tsx"
      },
      {
        "path": "/dashboard/devices",
        "source_path": "apps/TopoloMDM/apps/web/src/App.tsx"
      },
      {
        "path": "/dashboard/content",
        "source_path": "apps/TopoloMDM/apps/web/src/App.tsx"
      },
      {
        "path": "/dashboard/apps",
        "source_path": "apps/TopoloMDM/apps/web/src/App.tsx"
      },
      {
        "path": "/dashboard/setup",
        "source_path": "apps/TopoloMDM/apps/web/src/App.tsx"
      },
      {
        "path": "/dashboard/getting-started",
        "source_path": "apps/TopoloMDM/apps/web/src/App.tsx"
      },
      {
        "path": "/settings",
        "source_path": "apps/TopoloMDM/apps/web/src/App.tsx"
      },
      {
        "path": "/settings/:section",
        "source_path": "apps/TopoloMDM/apps/web/src/App.tsx"
      }
    ],
    "test_cases": [],
    "database_tables": []
  },
  "documentation": {
    "declared_paths": [
      "applications/mdm",
      "internal/apps/mdm"
    ],
    "present_paths": [
      "applications/mdm",
      "internal/apps/mdm"
    ],
    "missing_paths": [],
    "human_reference": "/systems/topolo-mdm",
    "machine_reference": "/machine/systems/topolo-mdm.json",
    "action_examples": 23,
    "action_schemas": 23
  },
  "source_findings": []
}