HTTP dap

The OpenAPI 3.1 document is generated beside this preview as openapi.json. Schemas document current behavior; they never validate runtime requests. The built-in server is loopback/host-guarded and has no authentication.

dapReconnect

Reconnect the shared DAP connection

dapReconnect description

Recovers the shared BrightScript debug connection after it has dropped. This is not a socket reconnect: recovery exits the channel, sideloads the app again with remote debugging enabled and performs a new handshake, so thread IDs and breakpoint verification state are not preserved. Returns 404 when there is no active DAP connection to recover. The route is not exempt from the server's 30-second request timeout, and a recovery includes a full rebuild and sideload, so it often gets a 408 response with the shared error body. The recovery continues on the server after a 408; do not retry immediately, because a second request supersedes the one still in progress.

dapReconnect contract

POST /api/dap/reconnect

Responses: 200, 404, 500; middleware can also return 403, 408 or 429.

dapReconnect see also

dapListThreads

List device threads

dapListThreads description

Lists the BrightScript debug threads and their stop state. Requires a fully stopped app; a running app returns 409. Each thread has a namespaced ID such as brs:0, a raw stopReason code with its resolved stopReasonName, and the device's code snippet.

dapListThreads contract

GET /api/dap/threads

Responses: 200, 400, 404, 409, 500; middleware can also return 403, 408 or 429.

dapListThreads see also

dapListThreads query.sessionId

Debug session ID; omitted uses the active debug session.

dapSelectThread

Select the active thread

dapSelectThread description

Sets the session's default BrightScript thread for thread-scoped requests that omit a thread ID. This is server-side session state, not a device command, and the selection is cleared the next time the app stops.

dapSelectThread contract

POST /api/dap/thread/select

Responses: 200, 400, 404, 409; middleware can also return 403, 408 or 429.

dapSelectThread see also

dapSelectThread body.threadId

Namespaced thread ID from the threads route, for example brs:1.

dapSelectThread body.sessionId

Debug session ID; omitted uses the active debug session.

dapGetThreadStopReason

Get the selected thread's stop reason

dapGetThreadStopReason description

Reads a thread's cached stop reason and code snippet without sending a device command. Returns the raw stopReason code and its resolved stopReasonName; stopReasonDetail appears only when the device supplied it.

dapGetThreadStopReason contract

GET /api/dap/thread/stop-reason

Responses: 200, 400, 404, 409; middleware can also return 403, 408 or 429.

dapGetThreadStopReason see also

dapGetThreadStopReason query.sessionId

Debug session ID; omitted uses the active debug session.

dapGetThreadStopReason query.threadId

Namespaced thread ID, for example brs:0; omitted uses the session's default thread.

dapGetVariables

Get variables at a thread/frame/path

dapGetVariables description

Inspects a BrightScript variable or container through the device's VARIABLES command. Requires a stopped app. The listing starts with the addressed value itself, followed by its children when it is a container. A malformed path string returns 400 with code MALFORMED_PATH, and a path the device rejects at the current stop location returns 404 with code PATH_NOT_FOUND. A listing that contains a Long_Integer value cannot be encoded as JSON and returns 500.

dapGetVariables contract

GET /api/dap/variables

Responses: 200, 400, 404, 409, 500; middleware can also return 403, 408 or 429.

dapGetVariables see also

dapGetVariables query.sessionId

Debug session ID; omitted uses the active debug session.

dapGetVariables query.threadId

Namespaced thread ID, for example brs:0; omitted uses the session's default thread.

dapGetVariables query.frameIndex

Stack frame, innermost first; 0 is the current frame.

dapGetVariables query.path

Variable path as a dotted or bracketed string such as m.top.children[0].text, or repeated path values giving the segments. Omit it to list the current frame's top-level locals.

dapGetVariables query.includeVirtualKeys

Include SceneGraph $-prefixed pseudo-fields; requires protocol 3.3.0 or later. Only the exact value true enables it.


Did this page help you?