Topolo Docs Topolo Platform
Open workspace

Get Voice widget

Read the canonical workspace activity widget with call, minute, ringing and missed-call counts.

Outcome

Read the canonical workspace activity widget with call, minute, ringing and missed-call counts.

Before you start

  • Verify the exact authenticated identity, environment and approved organization context before preparing the request.
  • The published application permission is workspace:read. Discover a granted canonical Voice workspace and bind its exact id. A supplied id does not grant access.

Discover the target

topolo whoami --json
topolo actions get app_topolo_voice.widget.get --detail --json
topolo resources topolo-voice --json
topolo workspaces list topolo-voice --json
  • Select the actual granted resource id as VOICE_WORKSPACE_ID; synthetic fixture ids authorize no live operation.

Request

GET /api/widget

Save the exact action input as payload.json. Set VOICE_WORKSPACE_ID from granted canonical resource discovery. Validate it and inspect the exact path, query and body before executing.

Inspect and test this action in the signed action console.

Input fields

Supply an empty action input object. Credential and resource context are separate.

The complete input and response schemas are available in the action console and through CLI/MCP action discovery.

Effects

  • Attempts nonfatal app_engagement metering when configured, resolves the canonical workspace grant, and ensures a local identity mirror.
  • Returns canonical widget v3 state and metrics from local rows. The queued metric counts ringing call records, not a provider queue. A ready widget does not prove telephony availability, audio validity or metering acceptance.

Interpret the response

Use $.widgets[0].resource.resourceId for the returned workspace identifier.

Examples retain complete raw Worker responses. CLI/MCP adds a transport envelope; use CLI --detail for the full result. Delegated Auth projections can vary, and the widget uses the canonical SDK contract.

Verify appId, widgets[].resource.resourceId and call/minute/queued/missed metrics for the granted workspace. Zero counts are a valid ready result. Refresh or read workspace.overview.get to inspect recent local records; the static widget description can still describe an empty state when counts are nonzero.

Worked examples

Actual worker and isolated migrated D1; synthetic Auth identity, nondefault workspace grants and archive transport. Notify and Nexus are disabled. No live telephony, remote audio or transcript hosting/deletion is tested. Refused examples explain boundaries; do not execute them as successful workflows.

minimal · Successful request · HTTP 200

Actual local worker response and migrated D1. Auth identity/grants/archive are simulated. Notify and metering are disabled; no telephony or remote audio/transcript provider is contacted. Fixture identifiers authorize no live action.

Input · payload.json:

{}

CLI:

topolo actions validate app_topolo_voice.widget.get --data @payload.json --json
topolo actions plan app_topolo_voice.widget.get --resource-type workspace --resource-id "$VOICE_WORKSPACE_ID" --data @payload.json --json
topolo actions call app_topolo_voice.widget.get --resource-type workspace --resource-id "$VOICE_WORKSPACE_ID" --data @payload.json --detail --json

MCP tool and arguments:

{
  "tool": "topolo_read_action",
  "arguments": {
    "actionId": "app_topolo_voice.widget.get",
    "input": {},
    "resourceType": "workspace",
    "resourceId": "<id returned by granted resource discovery>"
  }
}

Captured response · HTTP 200:

{
  "success": true,
  "contractVersion": "3.0.0",
  "appId": "app_topolo_voice",
  "serviceName": "Voice",
  "generatedAt": "2026-10-04T07:54:39.117Z",
  "widgets": [
    {
      "id": "voice.workspace-activity",
      "version": "1.0.0",
      "type": "stats",
      "presentation": {
        "title": "Voice",
        "description": "No calls, minutes, queued, or missed calls recorded yet.",
        "contexts": [
          "workspace"
        ],
        "supportedSizes": [
          "compact",
          "medium",
          "wide"
        ],
        "defaultSize": "medium"
      },
      "resource": {
        "resourceType": "workspace",
        "resourceId": "ws_voice_minimal",
        "requiredPermissions": [
          "workspace:read"
        ]
      },
      "state": {
        "status": "ready",
        "observedAt": "2026-10-04T07:54:39.117Z",
        "lastSuccessfulAt": "2026-10-04T07:54:39.117Z"
      },
      "refresh": {
        "intervalSeconds": 60,
        "timeoutSeconds": 10,
        "maxAgeSeconds": 120,
        "staleWhileRevalidateSeconds": 120
      },
      "configuration": {
        "allowMultipleInstances": false,
        "fields": [],
        "defaults": {
          "heroMetricKey": "calls"
        }
      },
      "drilldowns": [
        {
          "id": "calls",
          "label": "Open calls",
          "href": "/calls"
        }
      ],
      "controls": [],
      "localization": {
        "locale": "en",
        "titleKey": "voice.widget.title",
        "descriptionKey": "voice.widget.summary"
      },
      "accessibility": {
        "label": "Voice call, minute, queue, and missed-call metrics"
      },
      "contribution": {
        "summary": "Call volume, duration, queue, and missed-call activity for the selected Voice workspace.",
        "identity": {
          "iconSource": "catalog"
        },
        "workspaceSelector": {
          "mode": "required",
          "resourceType": "workspace",
          "label": "Voice workspace",
          "supportsMultiple": false
        },
        "metricDefinitions": [
          {
            "key": "calls",
            "label": "Calls",
            "description": "All calls in the workspace.",
            "unit": "count",
            "semantic": "gauge",
            "aggregation": "last"
          },
          {
            "key": "minutes",
            "label": "Minutes",
            "description": "Total call duration in minutes.",
            "unit": "minutes",
            "semantic": "gauge",
            "aggregation": "last"
          },
          {
            "key": "queued",
            "label": "Queued",
            "description": "Calls currently waiting to connect.",
            "unit": "count",
            "semantic": "gauge",
            "aggregation": "last"
          },
          {
            "key": "missed",
            "label": "Missed",
            "description": "Calls that were not answered.",
            "unit": "count",
            "semantic": "gauge",
            "aggregation": "last"
          }
        ],
        "seriesDefinitions": [],
        "dimensions": [],
        "lifecycleStages": [
          {
            "key": "queued",
            "label": "Queued",
            "order": 0,
            "terminal": false
          },
          {
            "key": "connected",
            "label": "Connected",
            "order": 1,
            "terminal": false
          },
          {
            "key": "completed",
            "label": "Completed",
            "order": 2,
            "terminal": true
          },
          {
            "key": "missed",
            "label": "Missed",
            "order": 3,
            "terminal": true
          }
        ],
        "events": [
          {
            "key": "call_started",
            "label": "Call started",
            "description": "A call entered the workspace."
          },
          {
            "key": "call_completed",
            "label": "Call completed",
            "description": "A connected call ended."
          },
          {
            "key": "call_missed",
            "label": "Call missed",
            "description": "A call ended without being answered."
          }
        ],
        "datasets": [
          {
            "id": "voice_activity",
            "label": "Voice activity",
            "description": "Current call volume, duration, queue, and missed-call aggregates.",
            "grain": "One aggregate row per Voice workspace.",
            "metricKeys": [
              "calls",
              "minutes",
              "queued",
              "missed"
            ],
            "seriesKeys": [],
            "dimensionKeys": [],
            "eventKeys": [
              "call_started",
              "call_completed",
              "call_missed"
            ],
            "actionIds": []
          }
        ],
        "compatibleVisualizations": [
          "number",
          "bar",
          "table"
        ],
        "defaultVisualization": "bar"
      },
      "metrics": [
        {
          "key": "calls",
          "label": "Calls",
          "value": 0,
          "unit": "count",
          "semantic": "gauge",
          "aggregation": "last",
          "period": {
            "start": "2026-10-04T07:54:39.117Z",
            "end": "2026-10-04T07:54:39.117Z",
            "timezone": "UTC"
          },
          "dimensions": []
        },
        {
          "key": "minutes",
          "label": "Minutes",
          "value": 0,
          "unit": "minutes",
          "semantic": "gauge",
          "aggregation": "last",
          "period": {
            "start": "2026-10-04T07:54:39.117Z",
            "end": "2026-10-04T07:54:39.117Z",
            "timezone": "UTC"
          },
          "dimensions": []
        },
        {
          "key": "queued",
          "label": "Queued",
          "value": 0,
          "unit": "count",
          "semantic": "gauge",
          "aggregation": "last",
          "period": {
            "start": "2026-10-04T07:54:39.117Z",
            "end": "2026-10-04T07:54:39.117Z",
            "timezone": "UTC"
          },
          "dimensions": []
        },
        {
          "key": "missed",
          "label": "Missed",
          "value": 0,
          "unit": "count",
          "semantic": "gauge",
          "aggregation": "last",
          "period": {
            "start": "2026-10-04T07:54:39.117Z",
            "end": "2026-10-04T07:54:39.117Z",
            "timezone": "UTC"
          },
          "dimensions": []
        }
      ],
      "appId": "app_topolo_voice",
      "serviceName": "Voice",
      "lastUpdated": "2026-10-04T07:54:39.117Z"
    }
  ]
}

HTTP 200. Verify appId, widgets[].resource.resourceId and call/minute/queued/missed metrics for the granted workspace. Zero counts are a valid ready result. Refresh or read workspace.overview.get to inspect recent local records; the static widget description can still describe an empty state when counts are nonzero.

minimal · Successful request · HTTP 200

Actual local worker response and migrated D1. Auth identity/grants/archive are simulated. Notify and metering are disabled; no telephony or remote audio/transcript provider is contacted. Fixture identifiers authorize no live action.

Input · payload.json:

{}

CLI:

topolo actions validate app_topolo_voice.widget.get --data @payload.json --json
topolo actions plan app_topolo_voice.widget.get --resource-type workspace --resource-id "$VOICE_WORKSPACE_ID" --data @payload.json --json
topolo actions call app_topolo_voice.widget.get --resource-type workspace --resource-id "$VOICE_WORKSPACE_ID" --data @payload.json --detail --json

MCP tool and arguments:

{
  "tool": "topolo_read_action",
  "arguments": {
    "actionId": "app_topolo_voice.widget.get",
    "input": {},
    "resourceType": "workspace",
    "resourceId": "<id returned by granted resource discovery>"
  }
}

Captured response · HTTP 200:

{
  "success": true,
  "contractVersion": "3.0.0",
  "appId": "app_topolo_voice",
  "serviceName": "Voice",
  "generatedAt": "2026-10-04T07:54:39.674Z",
  "widgets": [
    {
      "id": "voice.workspace-activity",
      "version": "1.0.0",
      "type": "stats",
      "presentation": {
        "title": "Voice",
        "description": "No calls, minutes, queued, or missed calls recorded yet.",
        "contexts": [
          "workspace"
        ],
        "supportedSizes": [
          "compact",
          "medium",
          "wide"
        ],
        "defaultSize": "medium"
      },
      "resource": {
        "resourceType": "workspace",
        "resourceId": "ws_voice_minimal",
        "requiredPermissions": [
          "workspace:read"
        ]
      },
      "state": {
        "status": "ready",
        "observedAt": "2026-10-04T07:54:39.674Z",
        "lastSuccessfulAt": "2026-10-04T07:54:39.674Z"
      },
      "refresh": {
        "intervalSeconds": 60,
        "timeoutSeconds": 10,
        "maxAgeSeconds": 120,
        "staleWhileRevalidateSeconds": 120
      },
      "configuration": {
        "allowMultipleInstances": false,
        "fields": [],
        "defaults": {
          "heroMetricKey": "calls"
        }
      },
      "drilldowns": [
        {
          "id": "calls",
          "label": "Open calls",
          "href": "/calls"
        }
      ],
      "controls": [],
      "localization": {
        "locale": "en",
        "titleKey": "voice.widget.title",
        "descriptionKey": "voice.widget.summary"
      },
      "accessibility": {
        "label": "Voice call, minute, queue, and missed-call metrics"
      },
      "contribution": {
        "summary": "Call volume, duration, queue, and missed-call activity for the selected Voice workspace.",
        "identity": {
          "iconSource": "catalog"
        },
        "workspaceSelector": {
          "mode": "required",
          "resourceType": "workspace",
          "label": "Voice workspace",
          "supportsMultiple": false
        },
        "metricDefinitions": [
          {
            "key": "calls",
            "label": "Calls",
            "description": "All calls in the workspace.",
            "unit": "count",
            "semantic": "gauge",
            "aggregation": "last"
          },
          {
            "key": "minutes",
            "label": "Minutes",
            "description": "Total call duration in minutes.",
            "unit": "minutes",
            "semantic": "gauge",
            "aggregation": "last"
          },
          {
            "key": "queued",
            "label": "Queued",
            "description": "Calls currently waiting to connect.",
            "unit": "count",
            "semantic": "gauge",
            "aggregation": "last"
          },
          {
            "key": "missed",
            "label": "Missed",
            "description": "Calls that were not answered.",
            "unit": "count",
            "semantic": "gauge",
            "aggregation": "last"
          }
        ],
        "seriesDefinitions": [],
        "dimensions": [],
        "lifecycleStages": [
          {
            "key": "queued",
            "label": "Queued",
            "order": 0,
            "terminal": false
          },
          {
            "key": "connected",
            "label": "Connected",
            "order": 1,
            "terminal": false
          },
          {
            "key": "completed",
            "label": "Completed",
            "order": 2,
            "terminal": true
          },
          {
            "key": "missed",
            "label": "Missed",
            "order": 3,
            "terminal": true
          }
        ],
        "events": [
          {
            "key": "call_started",
            "label": "Call started",
            "description": "A call entered the workspace."
          },
          {
            "key": "call_completed",
            "label": "Call completed",
            "description": "A connected call ended."
          },
          {
            "key": "call_missed",
            "label": "Call missed",
            "description": "A call ended without being answered."
          }
        ],
        "datasets": [
          {
            "id": "voice_activity",
            "label": "Voice activity",
            "description": "Current call volume, duration, queue, and missed-call aggregates.",
            "grain": "One aggregate row per Voice workspace.",
            "metricKeys": [
              "calls",
              "minutes",
              "queued",
              "missed"
            ],
            "seriesKeys": [],
            "dimensionKeys": [],
            "eventKeys": [
              "call_started",
              "call_completed",
              "call_missed"
            ],
            "actionIds": []
          }
        ],
        "compatibleVisualizations": [
          "number",
          "bar",
          "table"
        ],
        "defaultVisualization": "bar"
      },
      "metrics": [
        {
          "key": "calls",
          "label": "Calls",
          "value": 2,
          "unit": "count",
          "semantic": "gauge",
          "aggregation": "last",
          "period": {
            "start": "2026-10-04T07:54:39.674Z",
            "end": "2026-10-04T07:54:39.674Z",
            "timezone": "UTC"
          },
          "dimensions": []
        },
        {
          "key": "minutes",
          "label": "Minutes",
          "value": 0,
          "unit": "minutes",
          "semantic": "gauge",
          "aggregation": "last",
          "period": {
            "start": "2026-10-04T07:54:39.674Z",
            "end": "2026-10-04T07:54:39.674Z",
            "timezone": "UTC"
          },
          "dimensions": []
        },
        {
          "key": "queued",
          "label": "Queued",
          "value": 0,
          "unit": "count",
          "semantic": "gauge",
          "aggregation": "last",
          "period": {
            "start": "2026-10-04T07:54:39.674Z",
            "end": "2026-10-04T07:54:39.674Z",
            "timezone": "UTC"
          },
          "dimensions": []
        },
        {
          "key": "missed",
          "label": "Missed",
          "value": 1,
          "unit": "count",
          "semantic": "gauge",
          "aggregation": "last",
          "period": {
            "start": "2026-10-04T07:54:39.674Z",
            "end": "2026-10-04T07:54:39.674Z",
            "timezone": "UTC"
          },
          "dimensions": []
        }
      ],
      "appId": "app_topolo_voice",
      "serviceName": "Voice",
      "lastUpdated": "2026-10-04T07:54:39.674Z"
    }
  ]
}

HTTP 200. Verify appId, widgets[].resource.resourceId and call/minute/queued/missed metrics for the granted workspace. Zero counts are a valid ready result. Refresh or read workspace.overview.get to inspect recent local records; the static widget description can still describe an empty state when counts are nonzero.

workflow · Successful request · HTTP 200

Actual local worker response and migrated D1. Auth identity/grants/archive are simulated. Notify and metering are disabled; no telephony or remote audio/transcript provider is contacted. Fixture identifiers authorize no live action.

Input · payload.json:

{}

CLI:

topolo actions validate app_topolo_voice.widget.get --data @payload.json --json
topolo actions plan app_topolo_voice.widget.get --resource-type workspace --resource-id "$VOICE_WORKSPACE_ID" --data @payload.json --json
topolo actions call app_topolo_voice.widget.get --resource-type workspace --resource-id "$VOICE_WORKSPACE_ID" --data @payload.json --detail --json

MCP tool and arguments:

{
  "tool": "topolo_read_action",
  "arguments": {
    "actionId": "app_topolo_voice.widget.get",
    "input": {},
    "resourceType": "workspace",
    "resourceId": "<id returned by granted resource discovery>"
  }
}

Captured response · HTTP 200:

{
  "success": true,
  "contractVersion": "3.0.0",
  "appId": "app_topolo_voice",
  "serviceName": "Voice",
  "generatedAt": "2026-10-04T07:54:40.077Z",
  "widgets": [
    {
      "id": "voice.workspace-activity",
      "version": "1.0.0",
      "type": "stats",
      "presentation": {
        "title": "Voice",
        "description": "No calls, minutes, queued, or missed calls recorded yet.",
        "contexts": [
          "workspace"
        ],
        "supportedSizes": [
          "compact",
          "medium",
          "wide"
        ],
        "defaultSize": "medium"
      },
      "resource": {
        "resourceType": "workspace",
        "resourceId": "ws_voice_workflow",
        "requiredPermissions": [
          "workspace:read"
        ]
      },
      "state": {
        "status": "ready",
        "observedAt": "2026-10-04T07:54:40.077Z",
        "lastSuccessfulAt": "2026-10-04T07:54:40.077Z"
      },
      "refresh": {
        "intervalSeconds": 60,
        "timeoutSeconds": 10,
        "maxAgeSeconds": 120,
        "staleWhileRevalidateSeconds": 120
      },
      "configuration": {
        "allowMultipleInstances": false,
        "fields": [],
        "defaults": {
          "heroMetricKey": "calls"
        }
      },
      "drilldowns": [
        {
          "id": "calls",
          "label": "Open calls",
          "href": "/calls"
        }
      ],
      "controls": [],
      "localization": {
        "locale": "en",
        "titleKey": "voice.widget.title",
        "descriptionKey": "voice.widget.summary"
      },
      "accessibility": {
        "label": "Voice call, minute, queue, and missed-call metrics"
      },
      "contribution": {
        "summary": "Call volume, duration, queue, and missed-call activity for the selected Voice workspace.",
        "identity": {
          "iconSource": "catalog"
        },
        "workspaceSelector": {
          "mode": "required",
          "resourceType": "workspace",
          "label": "Voice workspace",
          "supportsMultiple": false
        },
        "metricDefinitions": [
          {
            "key": "calls",
            "label": "Calls",
            "description": "All calls in the workspace.",
            "unit": "count",
            "semantic": "gauge",
            "aggregation": "last"
          },
          {
            "key": "minutes",
            "label": "Minutes",
            "description": "Total call duration in minutes.",
            "unit": "minutes",
            "semantic": "gauge",
            "aggregation": "last"
          },
          {
            "key": "queued",
            "label": "Queued",
            "description": "Calls currently waiting to connect.",
            "unit": "count",
            "semantic": "gauge",
            "aggregation": "last"
          },
          {
            "key": "missed",
            "label": "Missed",
            "description": "Calls that were not answered.",
            "unit": "count",
            "semantic": "gauge",
            "aggregation": "last"
          }
        ],
        "seriesDefinitions": [],
        "dimensions": [],
        "lifecycleStages": [
          {
            "key": "queued",
            "label": "Queued",
            "order": 0,
            "terminal": false
          },
          {
            "key": "connected",
            "label": "Connected",
            "order": 1,
            "terminal": false
          },
          {
            "key": "completed",
            "label": "Completed",
            "order": 2,
            "terminal": true
          },
          {
            "key": "missed",
            "label": "Missed",
            "order": 3,
            "terminal": true
          }
        ],
        "events": [
          {
            "key": "call_started",
            "label": "Call started",
            "description": "A call entered the workspace."
          },
          {
            "key": "call_completed",
            "label": "Call completed",
            "description": "A connected call ended."
          },
          {
            "key": "call_missed",
            "label": "Call missed",
            "description": "A call ended without being answered."
          }
        ],
        "datasets": [
          {
            "id": "voice_activity",
            "label": "Voice activity",
            "description": "Current call volume, duration, queue, and missed-call aggregates.",
            "grain": "One aggregate row per Voice workspace.",
            "metricKeys": [
              "calls",
              "minutes",
              "queued",
              "missed"
            ],
            "seriesKeys": [],
            "dimensionKeys": [],
            "eventKeys": [
              "call_started",
              "call_completed",
              "call_missed"
            ],
            "actionIds": []
          }
        ],
        "compatibleVisualizations": [
          "number",
          "bar",
          "table"
        ],
        "defaultVisualization": "bar"
      },
      "metrics": [
        {
          "key": "calls",
          "label": "Calls",
          "value": 0,
          "unit": "count",
          "semantic": "gauge",
          "aggregation": "last",
          "period": {
            "start": "2026-10-04T07:54:40.077Z",
            "end": "2026-10-04T07:54:40.077Z",
            "timezone": "UTC"
          },
          "dimensions": []
        },
        {
          "key": "minutes",
          "label": "Minutes",
          "value": 0,
          "unit": "minutes",
          "semantic": "gauge",
          "aggregation": "last",
          "period": {
            "start": "2026-10-04T07:54:40.077Z",
            "end": "2026-10-04T07:54:40.077Z",
            "timezone": "UTC"
          },
          "dimensions": []
        },
        {
          "key": "queued",
          "label": "Queued",
          "value": 0,
          "unit": "count",
          "semantic": "gauge",
          "aggregation": "last",
          "period": {
            "start": "2026-10-04T07:54:40.077Z",
            "end": "2026-10-04T07:54:40.077Z",
            "timezone": "UTC"
          },
          "dimensions": []
        },
        {
          "key": "missed",
          "label": "Missed",
          "value": 0,
          "unit": "count",
          "semantic": "gauge",
          "aggregation": "last",
          "period": {
            "start": "2026-10-04T07:54:40.077Z",
            "end": "2026-10-04T07:54:40.077Z",
            "timezone": "UTC"
          },
          "dimensions": []
        }
      ],
      "appId": "app_topolo_voice",
      "serviceName": "Voice",
      "lastUpdated": "2026-10-04T07:54:40.077Z"
    }
  ]
}

HTTP 200. Verify appId, widgets[].resource.resourceId and call/minute/queued/missed metrics for the granted workspace. Zero counts are a valid ready result. Refresh or read workspace.overview.get to inspect recent local records; the static widget description can still describe an empty state when counts are nonzero.

workflow · Successful request · HTTP 200

Actual local worker response and migrated D1. Auth identity/grants/archive are simulated. Notify and metering are disabled; no telephony or remote audio/transcript provider is contacted. Fixture identifiers authorize no live action.

Input · payload.json:

{}

CLI:

topolo actions validate app_topolo_voice.widget.get --data @payload.json --json
topolo actions plan app_topolo_voice.widget.get --resource-type workspace --resource-id "$VOICE_WORKSPACE_ID" --data @payload.json --json
topolo actions call app_topolo_voice.widget.get --resource-type workspace --resource-id "$VOICE_WORKSPACE_ID" --data @payload.json --detail --json

MCP tool and arguments:

{
  "tool": "topolo_read_action",
  "arguments": {
    "actionId": "app_topolo_voice.widget.get",
    "input": {},
    "resourceType": "workspace",
    "resourceId": "<id returned by granted resource discovery>"
  }
}

Captured response · HTTP 200:

{
  "success": true,
  "contractVersion": "3.0.0",
  "appId": "app_topolo_voice",
  "serviceName": "Voice",
  "generatedAt": "2026-10-04T07:54:40.760Z",
  "widgets": [
    {
      "id": "voice.workspace-activity",
      "version": "1.0.0",
      "type": "stats",
      "presentation": {
        "title": "Voice",
        "description": "No calls, minutes, queued, or missed calls recorded yet.",
        "contexts": [
          "workspace"
        ],
        "supportedSizes": [
          "compact",
          "medium",
          "wide"
        ],
        "defaultSize": "medium"
      },
      "resource": {
        "resourceType": "workspace",
        "resourceId": "ws_voice_workflow",
        "requiredPermissions": [
          "workspace:read"
        ]
      },
      "state": {
        "status": "ready",
        "observedAt": "2026-10-04T07:54:40.760Z",
        "lastSuccessfulAt": "2026-10-04T07:54:40.760Z"
      },
      "refresh": {
        "intervalSeconds": 60,
        "timeoutSeconds": 10,
        "maxAgeSeconds": 120,
        "staleWhileRevalidateSeconds": 120
      },
      "configuration": {
        "allowMultipleInstances": false,
        "fields": [],
        "defaults": {
          "heroMetricKey": "calls"
        }
      },
      "drilldowns": [
        {
          "id": "calls",
          "label": "Open calls",
          "href": "/calls"
        }
      ],
      "controls": [],
      "localization": {
        "locale": "en",
        "titleKey": "voice.widget.title",
        "descriptionKey": "voice.widget.summary"
      },
      "accessibility": {
        "label": "Voice call, minute, queue, and missed-call metrics"
      },
      "contribution": {
        "summary": "Call volume, duration, queue, and missed-call activity for the selected Voice workspace.",
        "identity": {
          "iconSource": "catalog"
        },
        "workspaceSelector": {
          "mode": "required",
          "resourceType": "workspace",
          "label": "Voice workspace",
          "supportsMultiple": false
        },
        "metricDefinitions": [
          {
            "key": "calls",
            "label": "Calls",
            "description": "All calls in the workspace.",
            "unit": "count",
            "semantic": "gauge",
            "aggregation": "last"
          },
          {
            "key": "minutes",
            "label": "Minutes",
            "description": "Total call duration in minutes.",
            "unit": "minutes",
            "semantic": "gauge",
            "aggregation": "last"
          },
          {
            "key": "queued",
            "label": "Queued",
            "description": "Calls currently waiting to connect.",
            "unit": "count",
            "semantic": "gauge",
            "aggregation": "last"
          },
          {
            "key": "missed",
            "label": "Missed",
            "description": "Calls that were not answered.",
            "unit": "count",
            "semantic": "gauge",
            "aggregation": "last"
          }
        ],
        "seriesDefinitions": [],
        "dimensions": [],
        "lifecycleStages": [
          {
            "key": "queued",
            "label": "Queued",
            "order": 0,
            "terminal": false
          },
          {
            "key": "connected",
            "label": "Connected",
            "order": 1,
            "terminal": false
          },
          {
            "key": "completed",
            "label": "Completed",
            "order": 2,
            "terminal": true
          },
          {
            "key": "missed",
            "label": "Missed",
            "order": 3,
            "terminal": true
          }
        ],
        "events": [
          {
            "key": "call_started",
            "label": "Call started",
            "description": "A call entered the workspace."
          },
          {
            "key": "call_completed",
            "label": "Call completed",
            "description": "A connected call ended."
          },
          {
            "key": "call_missed",
            "label": "Call missed",
            "description": "A call ended without being answered."
          }
        ],
        "datasets": [
          {
            "id": "voice_activity",
            "label": "Voice activity",
            "description": "Current call volume, duration, queue, and missed-call aggregates.",
            "grain": "One aggregate row per Voice workspace.",
            "metricKeys": [
              "calls",
              "minutes",
              "queued",
              "missed"
            ],
            "seriesKeys": [],
            "dimensionKeys": [],
            "eventKeys": [
              "call_started",
              "call_completed",
              "call_missed"
            ],
            "actionIds": []
          }
        ],
        "compatibleVisualizations": [
          "number",
          "bar",
          "table"
        ],
        "defaultVisualization": "bar"
      },
      "metrics": [
        {
          "key": "calls",
          "label": "Calls",
          "value": 2,
          "unit": "count",
          "semantic": "gauge",
          "aggregation": "last",
          "period": {
            "start": "2026-10-04T07:54:40.760Z",
            "end": "2026-10-04T07:54:40.760Z",
            "timezone": "UTC"
          },
          "dimensions": []
        },
        {
          "key": "minutes",
          "label": "Minutes",
          "value": 2,
          "unit": "minutes",
          "semantic": "gauge",
          "aggregation": "last",
          "period": {
            "start": "2026-10-04T07:54:40.760Z",
            "end": "2026-10-04T07:54:40.760Z",
            "timezone": "UTC"
          },
          "dimensions": []
        },
        {
          "key": "queued",
          "label": "Queued",
          "value": 0,
          "unit": "count",
          "semantic": "gauge",
          "aggregation": "last",
          "period": {
            "start": "2026-10-04T07:54:40.760Z",
            "end": "2026-10-04T07:54:40.760Z",
            "timezone": "UTC"
          },
          "dimensions": []
        },
        {
          "key": "missed",
          "label": "Missed",
          "value": 1,
          "unit": "count",
          "semantic": "gauge",
          "aggregation": "last",
          "period": {
            "start": "2026-10-04T07:54:40.760Z",
            "end": "2026-10-04T07:54:40.760Z",
            "timezone": "UTC"
          },
          "dimensions": []
        }
      ],
      "appId": "app_topolo_voice",
      "serviceName": "Voice",
      "lastUpdated": "2026-10-04T07:54:40.760Z"
    }
  ]
}

HTTP 200. Verify appId, widgets[].resource.resourceId and call/minute/queued/missed metrics for the granted workspace. Zero counts are a valid ready result. Refresh or read workspace.overview.get to inspect recent local records; the static widget description can still describe an empty state when counts are nonzero.

privacy · Successful request · HTTP 200

Actual local worker response and migrated D1. Auth identity/grants/archive are simulated. Notify and metering are disabled; no telephony or remote audio/transcript provider is contacted. Fixture identifiers authorize no live action.

Input · payload.json:

{}

CLI:

topolo actions validate app_topolo_voice.widget.get --data @payload.json --json
topolo actions plan app_topolo_voice.widget.get --resource-type workspace --resource-id "$VOICE_WORKSPACE_ID" --data @payload.json --json
topolo actions call app_topolo_voice.widget.get --resource-type workspace --resource-id "$VOICE_WORKSPACE_ID" --data @payload.json --detail --json

MCP tool and arguments:

{
  "tool": "topolo_read_action",
  "arguments": {
    "actionId": "app_topolo_voice.widget.get",
    "input": {},
    "resourceType": "workspace",
    "resourceId": "<id returned by granted resource discovery>"
  }
}

Captured response · HTTP 200:

{
  "success": true,
  "contractVersion": "3.0.0",
  "appId": "app_topolo_voice",
  "serviceName": "Voice",
  "generatedAt": "2026-10-04T07:54:41.482Z",
  "widgets": [
    {
      "id": "voice.workspace-activity",
      "version": "1.0.0",
      "type": "stats",
      "presentation": {
        "title": "Voice",
        "description": "No calls, minutes, queued, or missed calls recorded yet.",
        "contexts": [
          "workspace"
        ],
        "supportedSizes": [
          "compact",
          "medium",
          "wide"
        ],
        "defaultSize": "medium"
      },
      "resource": {
        "resourceType": "workspace",
        "resourceId": "ws_voice_privacy",
        "requiredPermissions": [
          "workspace:read"
        ]
      },
      "state": {
        "status": "ready",
        "observedAt": "2026-10-04T07:54:41.482Z",
        "lastSuccessfulAt": "2026-10-04T07:54:41.482Z"
      },
      "refresh": {
        "intervalSeconds": 60,
        "timeoutSeconds": 10,
        "maxAgeSeconds": 120,
        "staleWhileRevalidateSeconds": 120
      },
      "configuration": {
        "allowMultipleInstances": false,
        "fields": [],
        "defaults": {
          "heroMetricKey": "calls"
        }
      },
      "drilldowns": [
        {
          "id": "calls",
          "label": "Open calls",
          "href": "/calls"
        }
      ],
      "controls": [],
      "localization": {
        "locale": "en",
        "titleKey": "voice.widget.title",
        "descriptionKey": "voice.widget.summary"
      },
      "accessibility": {
        "label": "Voice call, minute, queue, and missed-call metrics"
      },
      "contribution": {
        "summary": "Call volume, duration, queue, and missed-call activity for the selected Voice workspace.",
        "identity": {
          "iconSource": "catalog"
        },
        "workspaceSelector": {
          "mode": "required",
          "resourceType": "workspace",
          "label": "Voice workspace",
          "supportsMultiple": false
        },
        "metricDefinitions": [
          {
            "key": "calls",
            "label": "Calls",
            "description": "All calls in the workspace.",
            "unit": "count",
            "semantic": "gauge",
            "aggregation": "last"
          },
          {
            "key": "minutes",
            "label": "Minutes",
            "description": "Total call duration in minutes.",
            "unit": "minutes",
            "semantic": "gauge",
            "aggregation": "last"
          },
          {
            "key": "queued",
            "label": "Queued",
            "description": "Calls currently waiting to connect.",
            "unit": "count",
            "semantic": "gauge",
            "aggregation": "last"
          },
          {
            "key": "missed",
            "label": "Missed",
            "description": "Calls that were not answered.",
            "unit": "count",
            "semantic": "gauge",
            "aggregation": "last"
          }
        ],
        "seriesDefinitions": [],
        "dimensions": [],
        "lifecycleStages": [
          {
            "key": "queued",
            "label": "Queued",
            "order": 0,
            "terminal": false
          },
          {
            "key": "connected",
            "label": "Connected",
            "order": 1,
            "terminal": false
          },
          {
            "key": "completed",
            "label": "Completed",
            "order": 2,
            "terminal": true
          },
          {
            "key": "missed",
            "label": "Missed",
            "order": 3,
            "terminal": true
          }
        ],
        "events": [
          {
            "key": "call_started",
            "label": "Call started",
            "description": "A call entered the workspace."
          },
          {
            "key": "call_completed",
            "label": "Call completed",
            "description": "A connected call ended."
          },
          {
            "key": "call_missed",
            "label": "Call missed",
            "description": "A call ended without being answered."
          }
        ],
        "datasets": [
          {
            "id": "voice_activity",
            "label": "Voice activity",
            "description": "Current call volume, duration, queue, and missed-call aggregates.",
            "grain": "One aggregate row per Voice workspace.",
            "metricKeys": [
              "calls",
              "minutes",
              "queued",
              "missed"
            ],
            "seriesKeys": [],
            "dimensionKeys": [],
            "eventKeys": [
              "call_started",
              "call_completed",
              "call_missed"
            ],
            "actionIds": []
          }
        ],
        "compatibleVisualizations": [
          "number",
          "bar",
          "table"
        ],
        "defaultVisualization": "bar"
      },
      "metrics": [
        {
          "key": "calls",
          "label": "Calls",
          "value": 0,
          "unit": "count",
          "semantic": "gauge",
          "aggregation": "last",
          "period": {
            "start": "2026-10-04T07:54:41.482Z",
            "end": "2026-10-04T07:54:41.482Z",
            "timezone": "UTC"
          },
          "dimensions": []
        },
        {
          "key": "minutes",
          "label": "Minutes",
          "value": 0,
          "unit": "minutes",
          "semantic": "gauge",
          "aggregation": "last",
          "period": {
            "start": "2026-10-04T07:54:41.482Z",
            "end": "2026-10-04T07:54:41.482Z",
            "timezone": "UTC"
          },
          "dimensions": []
        },
        {
          "key": "queued",
          "label": "Queued",
          "value": 0,
          "unit": "count",
          "semantic": "gauge",
          "aggregation": "last",
          "period": {
            "start": "2026-10-04T07:54:41.482Z",
            "end": "2026-10-04T07:54:41.482Z",
            "timezone": "UTC"
          },
          "dimensions": []
        },
        {
          "key": "missed",
          "label": "Missed",
          "value": 0,
          "unit": "count",
          "semantic": "gauge",
          "aggregation": "last",
          "period": {
            "start": "2026-10-04T07:54:41.482Z",
            "end": "2026-10-04T07:54:41.482Z",
            "timezone": "UTC"
          },
          "dimensions": []
        }
      ],
      "appId": "app_topolo_voice",
      "serviceName": "Voice",
      "lastUpdated": "2026-10-04T07:54:41.482Z"
    }
  ]
}

HTTP 200. Verify appId, widgets[].resource.resourceId and call/minute/queued/missed metrics for the granted workspace. Zero counts are a valid ready result. Refresh or read workspace.overview.get to inspect recent local records; the static widget description can still describe an empty state when counts are nonzero.

privacy · Successful request · HTTP 200

Actual local worker response and migrated D1. Auth identity/grants/archive are simulated. Notify and metering are disabled; no telephony or remote audio/transcript provider is contacted. Fixture identifiers authorize no live action.

Input · payload.json:

{}

CLI:

topolo actions validate app_topolo_voice.widget.get --data @payload.json --json
topolo actions plan app_topolo_voice.widget.get --resource-type workspace --resource-id "$VOICE_WORKSPACE_ID" --data @payload.json --json
topolo actions call app_topolo_voice.widget.get --resource-type workspace --resource-id "$VOICE_WORKSPACE_ID" --data @payload.json --detail --json

MCP tool and arguments:

{
  "tool": "topolo_read_action",
  "arguments": {
    "actionId": "app_topolo_voice.widget.get",
    "input": {},
    "resourceType": "workspace",
    "resourceId": "<id returned by granted resource discovery>"
  }
}

Captured response · HTTP 200:

{
  "success": true,
  "contractVersion": "3.0.0",
  "appId": "app_topolo_voice",
  "serviceName": "Voice",
  "generatedAt": "2026-10-04T07:54:43.114Z",
  "widgets": [
    {
      "id": "voice.workspace-activity",
      "version": "1.0.0",
      "type": "stats",
      "presentation": {
        "title": "Voice",
        "description": "No calls, minutes, queued, or missed calls recorded yet.",
        "contexts": [
          "workspace"
        ],
        "supportedSizes": [
          "compact",
          "medium",
          "wide"
        ],
        "defaultSize": "medium"
      },
      "resource": {
        "resourceType": "workspace",
        "resourceId": "ws_voice_privacy",
        "requiredPermissions": [
          "workspace:read"
        ]
      },
      "state": {
        "status": "ready",
        "observedAt": "2026-10-04T07:54:43.114Z",
        "lastSuccessfulAt": "2026-10-04T07:54:43.114Z"
      },
      "refresh": {
        "intervalSeconds": 60,
        "timeoutSeconds": 10,
        "maxAgeSeconds": 120,
        "staleWhileRevalidateSeconds": 120
      },
      "configuration": {
        "allowMultipleInstances": false,
        "fields": [],
        "defaults": {
          "heroMetricKey": "calls"
        }
      },
      "drilldowns": [
        {
          "id": "calls",
          "label": "Open calls",
          "href": "/calls"
        }
      ],
      "controls": [],
      "localization": {
        "locale": "en",
        "titleKey": "voice.widget.title",
        "descriptionKey": "voice.widget.summary"
      },
      "accessibility": {
        "label": "Voice call, minute, queue, and missed-call metrics"
      },
      "contribution": {
        "summary": "Call volume, duration, queue, and missed-call activity for the selected Voice workspace.",
        "identity": {
          "iconSource": "catalog"
        },
        "workspaceSelector": {
          "mode": "required",
          "resourceType": "workspace",
          "label": "Voice workspace",
          "supportsMultiple": false
        },
        "metricDefinitions": [
          {
            "key": "calls",
            "label": "Calls",
            "description": "All calls in the workspace.",
            "unit": "count",
            "semantic": "gauge",
            "aggregation": "last"
          },
          {
            "key": "minutes",
            "label": "Minutes",
            "description": "Total call duration in minutes.",
            "unit": "minutes",
            "semantic": "gauge",
            "aggregation": "last"
          },
          {
            "key": "queued",
            "label": "Queued",
            "description": "Calls currently waiting to connect.",
            "unit": "count",
            "semantic": "gauge",
            "aggregation": "last"
          },
          {
            "key": "missed",
            "label": "Missed",
            "description": "Calls that were not answered.",
            "unit": "count",
            "semantic": "gauge",
            "aggregation": "last"
          }
        ],
        "seriesDefinitions": [],
        "dimensions": [],
        "lifecycleStages": [
          {
            "key": "queued",
            "label": "Queued",
            "order": 0,
            "terminal": false
          },
          {
            "key": "connected",
            "label": "Connected",
            "order": 1,
            "terminal": false
          },
          {
            "key": "completed",
            "label": "Completed",
            "order": 2,
            "terminal": true
          },
          {
            "key": "missed",
            "label": "Missed",
            "order": 3,
            "terminal": true
          }
        ],
        "events": [
          {
            "key": "call_started",
            "label": "Call started",
            "description": "A call entered the workspace."
          },
          {
            "key": "call_completed",
            "label": "Call completed",
            "description": "A connected call ended."
          },
          {
            "key": "call_missed",
            "label": "Call missed",
            "description": "A call ended without being answered."
          }
        ],
        "datasets": [
          {
            "id": "voice_activity",
            "label": "Voice activity",
            "description": "Current call volume, duration, queue, and missed-call aggregates.",
            "grain": "One aggregate row per Voice workspace.",
            "metricKeys": [
              "calls",
              "minutes",
              "queued",
              "missed"
            ],
            "seriesKeys": [],
            "dimensionKeys": [],
            "eventKeys": [
              "call_started",
              "call_completed",
              "call_missed"
            ],
            "actionIds": []
          }
        ],
        "compatibleVisualizations": [
          "number",
          "bar",
          "table"
        ],
        "defaultVisualization": "bar"
      },
      "metrics": [
        {
          "key": "calls",
          "label": "Calls",
          "value": 27,
          "unit": "count",
          "semantic": "gauge",
          "aggregation": "last",
          "period": {
            "start": "2026-10-04T07:54:43.114Z",
            "end": "2026-10-04T07:54:43.114Z",
            "timezone": "UTC"
          },
          "dimensions": []
        },
        {
          "key": "minutes",
          "label": "Minutes",
          "value": 2,
          "unit": "minutes",
          "semantic": "gauge",
          "aggregation": "last",
          "period": {
            "start": "2026-10-04T07:54:43.114Z",
            "end": "2026-10-04T07:54:43.114Z",
            "timezone": "UTC"
          },
          "dimensions": []
        },
        {
          "key": "queued",
          "label": "Queued",
          "value": 25,
          "unit": "count",
          "semantic": "gauge",
          "aggregation": "last",
          "period": {
            "start": "2026-10-04T07:54:43.114Z",
            "end": "2026-10-04T07:54:43.114Z",
            "timezone": "UTC"
          },
          "dimensions": []
        },
        {
          "key": "missed",
          "label": "Missed",
          "value": 1,
          "unit": "count",
          "semantic": "gauge",
          "aggregation": "last",
          "period": {
            "start": "2026-10-04T07:54:43.114Z",
            "end": "2026-10-04T07:54:43.114Z",
            "timezone": "UTC"
          },
          "dimensions": []
        }
      ],
      "appId": "app_topolo_voice",
      "serviceName": "Voice",
      "lastUpdated": "2026-10-04T07:54:43.114Z"
    }
  ]
}

HTTP 200. Verify appId, widgets[].resource.resourceId and call/minute/queued/missed metrics for the granted workspace. Zero counts are a valid ready result. Refresh or read workspace.overview.get to inspect recent local records; the static widget description can still describe an empty state when counts are nonzero.

Verify the result

  • Verify appId, widgets[].resource.resourceId and call/minute/queued/missed metrics for the granted workspace.
  • Zero counts are a valid ready result. Refresh or read workspace.overview.get to inspect recent local records; the static widget description can still describe an empty state when counts are nonzero.

Errors and recovery

  • organization_required (HTTP 403): The authenticated request has no organization. Stop and establish the approved owning organization; supplied workspace ids do not create membership.

Auth, resource resolution and published input validation can refuse a request before its handler. Retain the actual error, request id and approved context. A plain-text HTTP 500 is surfaced by CLI/MCP as http_error; that transport code is not a structured Voice handler error.

Recovery boundary

Repeat the read after resolving access/configuration. Each configured view can emit a new engagement attempt; the response is not a billing or provider-delivery receipt.

  • Get Voice workspace overview: Read all-workspace counts and the most recent 25 calls and provider failures in one granted Voice workspace.

Evidence

Actual worker and isolated migrated D1; synthetic Auth identity, nondefault workspace grants and archive transport. Notify and Nexus are disabled. No live telephony, remote audio or transcript hosting/deletion is tested.