XrmToolSuite.CustomApiExplorer
1.2026.7.13
dotnet add package XrmToolSuite.CustomApiExplorer --version 1.2026.7.13
NuGet\Install-Package XrmToolSuite.CustomApiExplorer -Version 1.2026.7.13
<PackageReference Include="XrmToolSuite.CustomApiExplorer" Version="1.2026.7.13" />
<PackageVersion Include="XrmToolSuite.CustomApiExplorer" Version="1.2026.7.13" />
<PackageReference Include="XrmToolSuite.CustomApiExplorer" />
paket add XrmToolSuite.CustomApiExplorer --version 1.2026.7.13
#r "nuget: XrmToolSuite.CustomApiExplorer, 1.2026.7.13"
#:package XrmToolSuite.CustomApiExplorer@1.2026.7.13
#addin nuget:?package=XrmToolSuite.CustomApiExplorer&version=1.2026.7.13
#tool nuget:?package=XrmToolSuite.CustomApiExplorer&version=1.2026.7.13
๐งช Custom API Explorer
An XrmToolBox plugin that discovers, documents, and safely tests Custom APIs: a browsable, filterable catalog (unique/display name, binding, is-function/private, request parameters, response properties, backing plugin type) plus a confirmation-gated test console that builds a request from parameter metadata and typed inputs and invokes the selected API, showing the typed response or the raw fault. Inventory and documentation are read-only; the invoke console is the only write path, and it always requires an explicit confirmation naming the API, target, and environment.
Features
| Capability | What you get |
|---|---|
| Inventory | All Custom APIs in the org, retrieved via RetrieveAll off the UI thread with progress + cancellation; the grid shows unique name, kind (function/action), private flag, and binding. |
| Filter | A live text filter narrows by unique/display name; the filter round-trips via settings. |
| Backing plugin type | plugintypeid resolved to the plugin type name; logic-less APIs are marked "(none)". |
| Parameters & responses | Request parameters listed with logical name, CustomApiFieldType, and optional flag (empty sets shown explicitly); response properties with name and type; the detail pane labels Function vs. Action. |
| Callers & wiring | The model carries a caller list and surfaces the associated SDK message when present; a failed dependency query degrades to an informational note, not an error. |
| Test console (gated) | A parameter grid generated per selected API takes typed inputs; RequestBuilder.Bind validates required parameters and converts scalar values (invoke is blocked until valid). |
| Sample snippet | A Web API invocation snippet generated per API from parameter metadata โ marked illustrative and containing no secrets (POST-with-body for actions, GET-with-query for functions). |
The value parsing, request-parameter binding/validation, sample-snippet generation, and the HTML/Markdown/CSV exporters are SDK-free and unit-tested; the Dataverse collector and the live invocation are manual-tested.
Exports
Documentation export runs off the UI thread and covers all APIs with parameters, responses, binding, and backing plugin. These are read-only, lightweight formats (no Excel/PDF dependency chain).
| Format | Notes |
|---|---|
| HTML | Self-contained and theme-aware; content is HTML-escaped. |
| Markdown | Full catalog including parameters and responses. |
| CSV | One row per member. |
The invoke console (the only write path)
Distinct from the read-only catalog and exports, the test console executes the selected API. It
is always gated: a confirmation dialog states the API name, the bound target/record, and the
environment, and invoke proceeds only on confirm (the default button is Cancel). The call runs
via RunAsync off the UI thread; the typed response is rendered on success and the raw
OrganizationServiceFault on failure. No secrets are displayed or logged, and the settings POCO
stores only the last filter โ never parameter presets with secret values or connection details.
Help & Support
A Help button (right of the toolbar) opens a Help & Support dialog with Documentation,
Report an issue, and a support link, each opened via Process.Start. The tool implements
IHelpPlugin and IGitHubPlugin, so XrmToolBox's own tool-menu links resolve to the same GitHub
project (kkora/XrmToolSuite).
Build & install
This is a single, self-contained DLL โ the shared core is compiled in, and the HTML/Markdown/CSV exporters need no Excel/PDF dependency chain. Build straight into the Plugins folder:
dotnet build src\Tools\XrmToolSuite.CustomApiExplorer\XrmToolSuite.CustomApiExplorer.csproj -c Release -p:DeployToXTB=true
Then restart XrmToolBox and open Custom API Explorer. Full build/install/troubleshooting details
(including the manual single-DLL copy + Unblock-File step) are in
./DEPLOYMENT.md; the suite-wide guide is in
../../../Deployment_Guide_XrmToolBox.md.
Usage
- Connect to your Dataverse environment.
- Browse or filter the Custom API catalog; select an API to see its parameters, responses, binding, and backing plugin type.
- (Optional) Export the catalog to HTML, Markdown, or CSV, or copy the generated sample snippet.
- To test: fill the generated parameter form with typed inputs (invoke is blocked until required parameters are valid).
- Confirm the dialog โ which names the API, target, and environment โ to invoke; review the typed response or the raw fault.
Notes & limitations
- Inventory and documentation are read-only. The invoke console is the only write path and is always confirmation-gated (default button = Cancel), naming the API, target, and environment before it runs.
- Never reads, stores, or displays secrets โ the settings POCO holds only the last filter; generated snippets and exports contain no secrets.
- Live invocation and live dependency/message retrieval are manual (live-org) paths; a failed dependency query degrades to an informational note rather than throwing.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET Framework | net48 is compatible. net481 was computed. |
-
- XrmToolBox (>= 1.2025.10.74)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.2026.7.13 | 96 | 7/11/2026 |
| 1.2026.7.10 | 89 | 7/11/2026 |
| 1.2026.7.9 | 107 | 7/11/2026 |
| 1.2026.7.8 | 98 | 7/11/2026 |
| 1.2026.7.7 | 94 | 7/11/2026 |
| 1.2026.7.6 | 100 | 7/10/2026 |
| 1.2026.7.5 | 100 | 7/9/2026 |
| 1.2026.7.3 | 92 | 7/7/2026 |
Normalize newlines in invocation-result values so multi-line output renders correctly.