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": []
}