Fusion bridge - verb reference

Every fusion_* verb this bridge exposes, generated from the bridge's own self-describe (describe.py / fusion_describe) so it never drifts. Call as:

adom-desktop fusion_<verb> '<input json>'

input / output below are the SCHEMA (field -> type/notes); example is a real input. timeoutSeconds is AD's wait; longRunning verbs keep working after a timeout - poll statusVerb.

Verbs by group

Lifecycle: fusion_start fusion_stop fusion_kill fusion_close_window fusion_get_app_state Cloud search & files (APS): fusion_aps_status fusion_aps_set_client_id fusion_aps_signin fusion_aps_search fusion_aps_open fusion_open_by_urn fusion_aps_browse fusion_aps_recent fusion_aps_file_info fusion_aps_versions fusion_aps_download fusion_aps_upload fusion_aps_create_folder fusion_aps_get fusion_walk_cloud_tree fusion_search_cloud_files Electronics: fusion_show_schematic fusion_show_2d_board fusion_show_3d_board fusion_board_info fusion_open_lbr fusion_run_modeling_script CAD & 3D export: fusion_export_step fusion_export_iges fusion_export_stl fusion_export_3mf fusion_export_usdz fusion_export_obj fusion_export_dxf fusion_export_dwg Manufacturing: fusion_export_gerbers fusion_export_bom fusion_export_cpl fusion_set_design_rules fusion_load_design_rules fusion_detect_layers fusion_dismiss_blocking_dialogs fusion_electron_run fusion_electron_zoom fusion_electron_pan fusion_electron_select Self-describe: fusion_describe


Lifecycle

fusion_start

Launch Fusion 360 (if needed) and wait for the AdomBridge add-in to be ready.

Input {}

Example call:

adom-desktop fusion_start '{}'

Output (shape):

{
  "success": "bool",
  "addinReady": "bool",
  "status": "str"
}

timeout 150s · long-running (poll fusion_get_app_state)

fusion_stop

Gracefully STOP Fusion 360: close docs cleanly + WM_CLOSE, then wait. NO force-kill - the clean opposite of fusion_start. If a window will not close it returns failure; use fusion_kill then.

Input (schema):

{
  "skipCleanClose": "optional bool"
}

Example call:

adom-desktop fusion_stop '{}'

Output (shape):

{
  "success": "bool",
  "output": "str"
}

timeout 60s

fusion_kill

Force-KILL Fusion 360 (taskkill /F) - the desperate path for when fusion_stop cannot close it (stuck modal / wedged process). Closes docs cleanly first when reachable.

Input (schema):

{
  "skipCleanClose": "optional bool"
}

Example call:

adom-desktop fusion_kill '{}'

Output (shape):

{
  "success": "bool",
  "output": "str"
}

timeout 30s

fusion_close_window

Close the active Fusion document/window.

Input (schema):

{
  "name": "optional str (default: active)"
}

Example call:

adom-desktop fusion_close_window '{}'

Output (shape):

{
  "success": "bool"
}

timeout 30s

fusion_get_app_state

Current app state: running, active document, workspace, isElectronics. The poll/status verb for long-running calls.

Input {}

Example call:

adom-desktop fusion_get_app_state '{}'

Output (shape):

{
  "activeDocument": "str",
  "activeWorkspace": "str",
  "isElectronics": "bool"
}

timeout 20s

Cloud search & files (APS)

fusion_aps_status

APS state: configured, signed in, token live, never-charge meter.

Input {}

Example call:

adom-desktop fusion_aps_status '{}'

Output (shape):

{
  "configured": "bool",
  "signedIn": "bool",
  "neverCharge": "bool"
}

timeout 20s

fusion_aps_set_client_id

Set the org's APS (PKCE) client id used for cloud search.

Input (schema):

{
  "clientId": "required str"
}

Example call:

adom-desktop fusion_aps_set_client_id '{"clientId": "D5nn...EPAq"}'

Output (shape):

{
  "success": "bool"
}

timeout 20s

fusion_aps_signin

Open the Autodesk sign-in in the browser; a background listener captures the token.

Input {}

Example call:

adom-desktop fusion_aps_signin '{}'

Output (shape):

{
  "success": "bool",
  "authUrl": "str"
}

timeout 30s

Server-indexed search across the whole team hub (seconds, not a 30-min folder walk).

Input (schema):

{
  "query": "required str",
  "limit": "optional int (default 50)",
  "hubId": "optional str",
  "projectId": "optional str"
}

Example call:

adom-desktop fusion_aps_search '{"query": "Molecule", "limit": 10}'

Output (shape):

{
  "count": "int",
  "results": "[{name,id,projectName,lastModified}]"
}

timeout 60s

fusion_aps_open

Find a cloud design by name and open it in Fusion (any folder depth). Fire-and-poll.

Input (schema):

{
  "query": "required str",
  "wait": "optional bool"
}

Example call:

adom-desktop fusion_aps_open '{"query": "BME690 Molecule"}'

Output (shape):

{
  "opening": "bool",
  "match": "{name}",
  "statusVerb": "str"
}

timeout 60s · long-running (poll fusion_get_app_state)

fusion_open_by_urn

Open a cloud ELECTRONICS DESIGN by URN. PCB/ELECTRONICS NAV RULE: a board is NOT a standalone file - the schematic, 2D board and 3D board are VIEWS inside ONE electronics DESIGN. Open the DESIGN document first (fusion_open_cloud_file or fusion_open_by_urn), THEN switch to its schematic and its 2D board (fusion_show_2d_board) and 3D board (fusion_show_3d_board). A Select-Electronics-Design-File picker IS that design list of its schematic + board. An EMPTY 2D board usually means you opened a derivative or the wrong file, or it is out of sync - reopen the parent electronics DESIGN and switch to its board view; do NOT open a .brd or .sch as a standalone file.

Input (schema):

{
  "urn": "required str"
}

Example call:

adom-desktop fusion_open_by_urn '{"urn": "urn:adsk.wipprod:fs.file:vf.xxxx?version=1"}'

Output (shape):

{
  "success": "bool",
  "output": "str"
}

timeout 240s · long-running (poll fusion_get_app_state)

fusion_aps_browse

Browse hubs/projects/folders without launching Fusion.

Input (schema):

{
  "hubId": "optional str",
  "projectId": "optional str",
  "folderId": "optional str"
}

Example call:

adom-desktop fusion_aps_browse '{}'

Output (shape):

{
  "items": "[{name,type,id}]"
}

timeout 60s

fusion_aps_recent

Most-recently-modified designs across the team hub, newest first.

Input (schema):

{
  "limit": "optional int (default 25)"
}

Example call:

adom-desktop fusion_aps_recent '{"limit": 25}'

Output (shape):

{
  "count": "int",
  "results": "[...]"
}

timeout 60s

fusion_aps_file_info

Version history + who/when/size for a file (tip + recent versions).

Input (schema):

{
  "query": "str  OR  projectId+urn"
}

Example call:

adom-desktop fusion_aps_file_info '{"query": "BME690 Molecule"}'

Output (shape):

{
  "versionCount": "int",
  "tip": "{...}",
  "versions": "[...]"
}

timeout 40s

fusion_aps_versions

Full (uncapped) version history of a file.

Input (schema):

{
  "query": "str  OR  projectId+urn"
}

Example call:

adom-desktop fusion_aps_versions '{"query": "BME690 Molecule"}'

Output (shape):

{
  "versionCount": "int",
  "versions": "[...]"
}

timeout 40s

fusion_aps_download

Download a cloud file to the local machine (no Fusion needed).

Input (schema):

{
  "query": "str OR projectId+urn",
  "saveDir": "optional str",
  "fileName": "optional str"
}

Example call:

adom-desktop fusion_aps_download '{"query": "BME690 Molecule"}'

Output (shape):

{
  "path": "str",
  "bytes": "int"
}

timeout 90s

fusion_aps_upload

Upload a local file as a NEW cloud file (free Data Management; needs data:write scope).

Input (schema):

{
  "projectId": "required str",
  "folderId": "required str",
  "localPath": "required str",
  "fileName": "optional str"
}

Example call:

adom-desktop fusion_aps_upload '{"projectId": "a.YnVz...", "folderId": "urn:...", "localPath": "C:/x.f3d"}'

Output (shape):

{
  "itemUrn": "str",
  "bytes": "int"
}

timeout 90s

fusion_aps_create_folder

Create a subfolder in a project (free; needs data:create scope).

Input (schema):

{
  "projectId": "required str",
  "parentFolderId": "required str",
  "name": "required str"
}

Example call:

adom-desktop fusion_aps_create_folder '{"projectId": "a.YnVz...", "parentFolderId": "urn:...", "name": "new-folder"}'

Output (shape):

{
  "folderId": "str"
}

timeout 50s

fusion_aps_get

Raw authenticated GET against a free APS path (dev/verify helper).

Input (schema):

{
  "path": "required str"
}

Example call:

adom-desktop fusion_aps_get '{"path": "/project/v1/hubs"}'

Output (shape):

{
  "status": "int",
  "body": "obj"
}

timeout 40s

fusion_walk_cloud_tree

DO NOT USE: slow in-app add-in walk (30+ min) that CAN CRASH Fusion (WinError 10054). Use fusion_aps_search instead; see the 'fusion-aps-search' skill.

Input {}

Example call:

adom-desktop fusion_walk_cloud_tree '{}'

Output (shape):

{
  "tree": "obj"
}

timeout 600s · long-running (poll fusion_get_app_state)

fusion_search_cloud_files

DO NOT USE: slow in-app add-in search (30+ min) that CAN CRASH Fusion (WinError 10054). Use fusion_aps_search instead; see the 'fusion-aps-search' skill.

Input (schema):

{
  "query": "required str"
}

Example call:

adom-desktop fusion_search_cloud_files '{"query": "Molecule"}'

Output (shape):

{
  "results": "[...]"
}

timeout 180s · long-running (poll fusion_get_app_state)

Electronics

fusion_show_schematic

Switch the OPEN electronics design to its SCHEMATIC view (the symmetric partner of fusion_show_2d_board / fusion_show_3d_board, via Fusion's SwitchSchDocCmd). A VIEW of the project, not a standalone file. Drive it for demos with fusion_electron_zoom / _pan / _select.

Input {}

Example call:

adom-desktop fusion_show_schematic '{}'

Output (shape):

{
  "success": "bool",
  "activeWorkspace": "str",
  "productType": "str"
}

timeout 70s · long-running (poll fusion_get_app_state)

fusion_show_2d_board

Switch the OPEN electronics design to its 2D PCB Editor (board layout) view. This is a VIEW of the project, not a file to open standalone - if the board is empty, you opened a child/derivative instead of the EcadDesignProductType PROJECT; reopen the project. Drive the view with fusion_electron_run WINDOW commands.

Input {}

Example call:

adom-desktop fusion_show_2d_board '{}'

Output (shape):

{
  "activeWorkspace": "str"
}

timeout 70s · long-running (poll fusion_get_app_state)

fusion_show_3d_board

Switch the OPEN electronics design to its 3D PCB view (populated board). A VIEW of the project, not a standalone file. Orbit it for demos via fusion_run_modeling_script (app.activeViewport.camera + vp.refresh()).

Input {}

Example call:

adom-desktop fusion_show_3d_board '{}'

Output (shape):

{
  "activeWorkspace": "str",
  "screenshots": "[...]"
}

timeout 70s · long-running (poll fusion_get_app_state)

fusion_board_info

Raw board geometry XML (copper/arcs/lines) for the open board.

Input {}

Example call:

adom-desktop fusion_board_info '{}'

Output (shape):

{
  "rawXml": "str"
}

timeout 60s

fusion_open_lbr

Import an EAGLE .lbr library into Fusion's Electronics library editor.

Input (schema):

{
  "filePath": "required str (.lbr on the machine)",
  "symbolName": "optional str",
  "verify": "optional bool"
}

Example call:

adom-desktop fusion_open_lbr '{"filePath": "C:/libs/nRF52840-CKAA.lbr"}'

Output (shape):

{
  "success": "bool",
  "postOpenScreenshot": "{savedTo}"
}

timeout 50s

fusion_run_modeling_script

Run an adsk.fusion modeling script in the live session (sketches/extrudes/params). Free programmatic CAD.

Input (schema):

{
  "script": "required str (Python using adsk; globals: adsk, app, ui, design)"
}

Example call:

adom-desktop fusion_run_modeling_script '{"script": "import adsk.fusion\n# ...build geometry..."}'

Output (shape):

{
  "result": "obj",
  "documentName": "str"
}

timeout 180s · long-running (poll fusion_get_app_state)

CAD & 3D export

fusion_export_step

Export the active design to STEP (needs the 3D view).

Input (schema):

{
  "outputPath": "required str"
}

Example call:

adom-desktop fusion_export_step '{"outputPath": "C:/out/board.step"}'

Output (shape):

{
  "format": "str",
  "fileSizeKB": "int"
}

timeout 300s · long-running (poll fusion_get_app_state)

fusion_export_iges

Export to IGES.

Input (schema):

{
  "outputPath": "required str"
}

Example call:

adom-desktop fusion_export_iges '{"outputPath": "C:/out/board.iges"}'

Output (shape):

{
  "format": "str"
}

timeout 300s · long-running (poll fusion_get_app_state)

fusion_export_stl

Export to STL mesh.

Input (schema):

{
  "outputPath": "required str"
}

Example call:

adom-desktop fusion_export_stl '{"outputPath": "C:/out/part.stl"}'

Output (shape):

{
  "format": "str"
}

timeout 300s · long-running (poll fusion_get_app_state)

fusion_export_3mf

Export to 3MF mesh.

Input (schema):

{
  "outputPath": "required str"
}

Example call:

adom-desktop fusion_export_3mf '{"outputPath": "C:/out/part.3mf"}'

Output (shape):

{
  "format": "str"
}

timeout 300s · long-running (poll fusion_get_app_state)

fusion_export_usdz

Export to USDZ (AR / Hydrogen 3D).

Input (schema):

{
  "outputPath": "required str"
}

Example call:

adom-desktop fusion_export_usdz '{"outputPath": "C:/out/part.usdz"}'

Output (shape):

{
  "format": "str"
}

timeout 300s · long-running (poll fusion_get_app_state)

fusion_export_obj

Export to OBJ mesh.

Input (schema):

{
  "outputPath": "required str"
}

Example call:

adom-desktop fusion_export_obj '{"outputPath": "C:/out/part.obj"}'

Output (shape):

{
  "format": "str"
}

timeout 300s · long-running (poll fusion_get_app_state)

fusion_export_dxf

Export 2D DXF.

Input (schema):

{
  "outputPath": "required str"
}

Example call:

adom-desktop fusion_export_dxf '{"outputPath": "C:/out/sketch.dxf"}'

Output (shape):

{
  "format": "str"
}

timeout 120s · long-running (poll fusion_get_app_state)

fusion_export_dwg

Export 2D DWG.

Input (schema):

{
  "outputPath": "required str"
}

Example call:

adom-desktop fusion_export_dwg '{"outputPath": "C:/out/sketch.dwg"}'

Output (shape):

{
  "format": "str"
}

timeout 120s · long-running (poll fusion_get_app_state)

Manufacturing

fusion_export_gerbers

Run the bundled JLCPCB CAM job (auto 2/4-layer) to produce the gerber + drill ZIP.

Input (schema):

{
  "outputDir": "optional str (default C:/tmp/adom-gerbers)"
}

Example call:

adom-desktop fusion_export_gerbers '{"outputDir": "C:/tmp/jlc"}'

Output (shape):

{
  "fileCount": "int",
  "files": "[{name,size}]",
  "zipPath": "str"
}

timeout 180s · long-running (poll fusion_get_app_state)

fusion_export_bom

Export a Bill of Materials CSV (grouped by value+package) from the open board.

Input (schema):

{
  "outputPath": "optional str",
  "grouped": "optional bool (default true)"
}

Example call:

adom-desktop fusion_export_bom '{"outputPath": "C:/tmp/bom.csv"}'

Output (shape):

{
  "componentCount": "int",
  "grouped": "bool"
}

timeout 60s

fusion_export_cpl

Export the Component Placement List (pick-and-place) CSV.

Input (schema):

{
  "outputPath": "optional str",
  "side": "optional str (all|top|bottom)"
}

Example call:

adom-desktop fusion_export_cpl '{"outputPath": "C:/tmp/cpl.csv"}'

Output (shape):

{
  "topCount": "int",
  "bottomCount": "int"
}

timeout 60s

fusion_set_design_rules

Load manufacturing-grade DRC into the open board (JLCPCB 2/4-layer profiles).

Input (schema):

{
  "action": "optional str (apply|export|show)",
  "layers": "optional str (auto|2|4)"
}

Example call:

adom-desktop fusion_set_design_rules '{"action": "apply", "layers": "2"}'

Output (shape):

{
  "activeWorkspace": "str",
  "description": "str"
}

timeout 90s

fusion_load_design_rules

Load a bundled .edru design-rule set into the board.

Input (schema):

{
  "layers": "optional str (auto|2|4)"
}

Example call:

adom-desktop fusion_load_design_rules '{}'

Output (shape):

{
  "success": "bool"
}

timeout 90s

fusion_detect_layers

Detect 2-layer vs 4-layer board (ULP + CAM comparison).

Input {}

Example call:

adom-desktop fusion_detect_layers '{}'

Output (shape):

{
  "layerCount": "int",
  "copperLayers": "[int]"
}

timeout 90s

fusion_dismiss_blocking_dialogs

Detect + classify (and optionally dismiss) blocking Fusion dialogs.

Input {}

Example call:

adom-desktop fusion_dismiss_blocking_dialogs '{}'

Output (shape):

{
  "dialogs": "[...]"
}

timeout 30s

fusion_electron_run

Run an EAGLE/Electron command in the open board (the generic extension point, e.g. RUN ).

Input (schema):

{
  "command": "required str"
}

Example call:

adom-desktop fusion_electron_run '{"command": "set confirm yes;RUN 'C:/tmp/jlcpcb_smta_exporter.ulp' 'C:/tmp/jlc'"}'

Output (shape):

{
  "success": "bool",
  "output": "str"
}

timeout 90s

fusion_electron_zoom

Smoothly ZOOM the schematic/2D board for a recording (the whole motion is one call). factor>1 zooms in, <1 out; or fit:true. The loop runs in the add-in with a repaint per frame.

Input (schema):

{
  "factor": "float (default 2.0)",
  "fit": "optional bool",
  "steps": "optional int (default 16)",
  "frameDelayMs": "optional int (default 35)"
}

Example call:

adom-desktop fusion_electron_zoom '{"factor": 3, "steps": 20}'

Output (shape):

{
  "success": "bool",
  "output": "str"
}

timeout 60s · long-running (poll fusion_get_app_state)

fusion_electron_pan

Smoothly PAN + zoom the view to frame a board-coordinate box (mm; get part positions from fusion_board_info). Animates from where the view last was.

Input (schema):

{
  "x1": "float",
  "y1": "float",
  "x2": "float",
  "y2": "float",
  "steps": "optional int (default 16)",
  "frameDelayMs": "optional int (default 35)"
}

Example call:

adom-desktop fusion_electron_pan '{"x1": 0, "y1": 0, "x2": 10, "y2": 8}'

Output (shape):

{
  "success": "bool",
  "output": "str",
  "box": "[...]"
}

timeout 60s · long-running (poll fusion_get_app_state)

fusion_electron_select

SELECT a part (by reference designator, or x/y board mm) and surface its properties - the way clicking a part reveals the properties panel. Great for showing life in a recording.

Input (schema):

{
  "name": "str (refdes, e.g. R1)",
  "x": "optional float",
  "y": "optional float",
  "properties": "optional bool (default true)"
}

Example call:

adom-desktop fusion_electron_select '{"name": "U1"}'

Output (shape):

{
  "success": "bool",
  "output": "str",
  "deviceInfo": "str"
}

timeout 30s · long-running (poll fusion_get_app_state)

Self-describe

fusion_describe

Self-describe every verb the bridge exposes (this list) for AD's Verbs tab + runner.

Input {}

Example call:

adom-desktop fusion_describe '{}'

Output (shape):

{
  "success": "bool",
  "verbs": "[{name,summary,input,output,timeoutSeconds,statusVerb,longRunning,example}]"
}

timeout 20s