Board Connect API - Board Docs

Board Connect device API (1)

HTTP API hosted on a Board device (port 8843) for developer tooling — discovery, pairing, and managing installed apps (APKs) and web-app bundles. Consumed by the Board Connect web UI and board-connect-cli. Served unauthenticated at GET /openapi.yaml for discovery. See board-eng-docs/design/sdk-platform/board-connect-webapp-workflow.md.

/paths/1board1info/get Discovery probe (unauthenticated)

Responses

200

OK

get/board/info

http://{host}:8843/board/info

Response samples

Content type

application/json

Copy Expand all Collapse all

{"name": "string",

"serial": "string",

"model": "string",

"os": "string",

"apiVersions": ["string"],

"capabilities": ["string"]
}

/paths/~1openapi.yaml/get This spec (unauthenticated)

Responses

200

OK

get/openapi.yaml

http://{host}:8843/openapi.yaml

/paths/1v11pair/post Pair with a code shown on the device (manual / human flow)

Request Body schema: application/json required
code
required
string
label
required
string

Responses

200

Paired

401

Error

409

Error

429

Error

post/v1/pair

http://{host}:8843/v1/pair

Request samples

Content type

application/json

Copy

{"code": "string",

"label": "string"}

Response samples

Content type

application/json

Copy

{"token": "string",

"id": 0}

/paths/1v11pair~1request/post Tap-to-approve pairing (agent flow) — long-polls until the user taps Approve on the device

Request Body schema: application/json required
clientName
required
string

Responses

200

Approved

403

pairing_disabled (the device setting is off)

408

timed out awaiting approval; retry

429

Error

post/v1/pair/request

http://{host}:8843/v1/pair/request

Request samples

Content type

application/json

Copy

{"clientName": "string"}

Response samples

Content type

application/json

Copy

{"token": "string",

"id": 0}

/paths/1v11board~1status/get Readiness

Authorizations:

bearerAuth

Responses

200

OK

get/v1/board/status

http://{host}:8843/v1/board/status

Response samples

Content type

application/json

Copy

{"ready": true}

/paths/1v11board~1capabilities/get Protocol version + capability tags

Authorizations:

bearerAuth

Responses

200

OK

get/v1/board/capabilities

http://{host}:8843/v1/board/capabilities

Response samples

Content type

application/json

Copy Expand all Collapse all

{"protocolVersion": 0,

"osVersion": "string",

"capabilities": ["string"]
}

/paths/1v11board~1version/get OS version

Authorizations:

bearerAuth

Responses

200

OK

get/v1/board/version

http://{host}:8843/v1/board/version

Response samples

Content type

application/json

Copy

{"version": "string"}

/paths/1v11apps/get List dev-installed apps (APKs + web apps)

Authorizations:

bearerAuth

Responses

200

OK

get/v1/apps

http://{host}:8843/v1/apps

Response samples

Content type

application/json

Copy Expand all Collapse all

{"apps": [{"packageName": "string",

"label": "string",

"versionName": "string",

"versionCode": 0,

"kind": "apk",

"appId": "28c365d5-df94-4a54-8217-3ce51d068868"}]}

/paths/1v11apps/post Install an app (multipart). The bundle type (APK vs packed web app) is detected by content; the response reports packageName for an APK or appId for a web app.

Authorizations:

bearerAuth

Request Body schema: multipart/form-data required
file string

Responses

200

Installed

400

invalid_bundle / incomplete_transfer

422

validation_failed / invalid_apk / ambiguous_bundle / unrecognized_bundle / missing_config / invalid_app_id / missing_entry / no_sdk

503

browser_unavailable

post/v1/apps

http://{host}:8843/v1/apps

Response samples

Content type

application/json

Copy

{"packageName": "string",

"appId": "28c365d5-df94-4a54-8217-3ce51d068868"}

/paths/1v11apps~1cleanup/post Uninstall all dev-managed apps

Authorizations:

bearerAuth

Responses

200

OK

post/v1/apps/cleanup

http://{host}:8843/v1/apps/cleanup

Response samples

Content type

application/json

Copy

{"removed": 0}

/paths/1v11apps1{id}1launch/post Launch an app by id (APK package name or web-app appId)

Authorizations:

bearerAuth

path Parameters
id
required
string

Responses

204

Launched

404

Error

post/v1/apps/{id}/launch

http://{host}:8843/v1/apps/{id}/launch

Response samples

Content type

application/json

Copy

{"error": "string",

"message": "string"}

/paths/1v11apps1{id}1stop/post Force-stop an APK by package. Web apps cannot be stopped individually (422 stop_unsupported).

Authorizations:

bearerAuth

path Parameters
id
required
string

Responses

204

Stopped

404

Error

422

stop_unsupported

post/v1/apps/{id}/stop

http://{host}:8843/v1/apps/{id}/stop

Response samples

Content type

application/json

Copy

{"error": "string",

"message": "string"}

/paths/1v11apps~1{id}/delete Uninstall an app by id (APK package name or web-app appId)

Authorizations:

bearerAuth

path Parameters
id
required
string

Responses

204

Removed

404

Error

delete/v1/apps/{id}

http://{host}:8843/v1/apps/{id}

Response samples

Content type

application/json

Copy

{"error": "string",

"message": "string"}

/paths/1v11apps1{id}1logs/get Dump recent logs for an app by id (APK package or web-app appId)

Authorizations:

bearerAuth

path Parameters
id
required
string
query Parameters
tag string
level string
Enum:"V""D""I""W""E""F"

Responses

200

Log lines

404

Error

get/v1/apps/{id}/logs

http://{host}:8843/v1/apps/{id}/logs

Response samples

Content type

application/json

Copy

{"error": "string",

"message": "string"}

/paths/1v11webapps/post[deprecated: use POST /v1/apps] Install or update a web-app bundle (multipart zip) Deprecated

Authorizations:

bearerAuth

Request Body schema: multipart/form-data required
file string

Responses

200

Installed

400

invalid_bundle / incomplete_transfer

422

missing_config / invalid_app_id / missing_entry / no_sdk

503

browser_unavailable

post/v1/webapps

http://{host}:8843/v1/webapps

Response samples

Content type

application/json

Copy

{"packageName": "string",

"appId": "28c365d5-df94-4a54-8217-3ce51d068868"}

/paths/1v11webapps1{appId}1launch/post[deprecated: use POST /v1/apps/{id}/launch] Launch a web app by appId Deprecated

Authorizations:

bearerAuth

path Parameters
appId
required
string

Responses

204

Launched

404

webapp_not_found

post/v1/webapps/{appId}/launch

http://{host}:8843/v1/webapps/{appId}/launch

Response samples

Content type

application/json

Copy

{"error": "string",

"message": "string"}

/paths/1v11webapps~1{appId}/delete[deprecated: use DELETE /v1/apps/{id}] Remove a web app by appId Deprecated

Authorizations:

bearerAuth

path Parameters
appId
required
string

Responses

204

Removed

404

webapp_not_found

delete/v1/webapps/{appId}

http://{host}:8843/v1/webapps/{appId}

Response samples

Content type

application/json

Copy

{"error": "string",

"message": "string"}

/paths/1v11webapps1{appId}1logs/get[deprecated: use GET /v1/apps/{id}/logs] Dump recent logs for a web app (tag BoardWebApp:) Deprecated

Authorizations:

bearerAuth

path Parameters
appId
required
string
query Parameters
level string
Enum:"V""D""I""W""E""F"

Responses

200

Log lines

404

webapp_not_found

get/v1/webapps/{appId}/logs

http://{host}:8843/v1/webapps/{appId}/logs

Response samples

Content type

application/json

Copy

{"error": "string",

"message": "string"}

/paths/1v11screenshot/get Capture a PNG screenshot (rate-limited 1/sec)

Authorizations:

bearerAuth

Responses

200

PNG

429

Error

get/v1/screenshot

http://{host}:8843/v1/screenshot

Response samples

Content type

application/json

Copy

{"error": "string",

"message": "string"}

/paths/1v11media/post Push a media file to BoardMediaPlayer (multipart)

Authorizations:

bearerAuth

Request Body schema: multipart/form-data required
file string

Responses

200

Pushed

post/v1/media

http://{host}:8843/v1/media

Response samples

Content type

application/json

Copy

{"name": "string",

"sizeBytes": 0}

/paths/1v11media~1launch/post Open BoardMediaPlayer

Authorizations:

bearerAuth

Responses

204

Launched

post/v1/media/launch

http://{host}:8843/v1/media/launch

/paths/1v11logs~1dump/get Dump recent logs for a bdb-installed package

Authorizations:

bearerAuth

query Parameters
package
required
string
tag string
level string
Enum:"V""D""I""W""E""F"

Responses

200

Log lines

get/v1/logs/dump

http://{host}:8843/v1/logs/dump

/paths/1v11logs/get Stream logs over WebSocket (token via ?token= query param)

Responses

101

Switching Protocols (WebSocket)

get/v1/logs

http://{host}:8843/v1/logs

/paths/1v11paired-clients/get List paired clients

Authorizations:

bearerAuth

Responses

200

OK

get/v1/paired-clients

http://{host}:8843/v1/paired-clients

Response samples

Content type

application/json

Copy Expand all Collapse all

{"clients": [{"id": 0,

"label": "string",

"pairedAt": 0,

"lastSeenAt": 0,

"sourceIp": "string"}]}

/paths/1v11paired-clients~1{id}/delete Revoke a paired client

Authorizations:

bearerAuth

path Parameters
id
required
integer

Responses

204

Revoked

400

Error

delete/v1/paired-clients/{id}

http://{host}:8843/v1/paired-clients/{id}

Response samples

Content type

application/json

Copy

{"error": "string",

"message": "string"}