Add /migrate-webapi-selectall skill to replace deprecated Web API wildcard field settings - #484
Draft
Ramachandran R (r-ramachandran) wants to merge 1 commit into
Draft
Conversation
Replaces deprecated `Webapi/<table>/fields = *` values with least-privilege explicit columns proven by the site's own Web API calls and response consumers. Supports traditional/Liquid sites and React, Vue, Angular, and Astro code sites, and excludes compiled or generated output from analysis. Adds the skill workflow, column-analysis and reporting references, a Dataverse schema-retrieval script, HTML report plus CSV ledger assets, large-scale batching guidance, and unit tests. Registers the skill in the plugin README, approval-gate catalog, and skill-tracking table. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
Power Pages is deprecating the wildcard (
*) value forWebapi/<table>/fieldssite settings. A wildcard exposes every column of a table through the Web API — including columns the site never reads — and those sites will break when the wildcard is retired. Migrating by hand means reading every Web API call and every response consumer to work out which columns are actually required, which is impractical on a real site.What this adds
A new user-invocable skill,
/power-pages:migrate-webapi-selectall, that replaces each wildcard with the smallest explicit column list the site's own code proves it needs.Webapi/<table>/fieldssetting across all configuration scopes and deployment profiles, classifying each as wildcard, explicit, missing, or duplicate.$select,$filter,$orderby,$apply, FetchXML, write payloads,@odata.bindlookups, and file/image routes. The response projection and the fields allowlist stay separate, so a filter-only column is never added to$select.$selectwhere a read previously relied on implicit selection, and reviews already-explicit settings for missing or unnecessary columns.Both site types are covered: traditional HTML/JavaScript/Liquid sites and React, Vue, Angular, or Astro code sites. Only authored source is analyzed — compiled bundles, content-hashed assets, source maps, and build output are excluded. If a call exists only in generated output, the skill raises a blocker instead of inferring columns from it.
Safety and scale
Reporting
Each run writes
docs/webapi-selectall-migration/migration-report.htmlfrom a bundled template — wildcards with proposed fixes, already-explicit settings, call coverage, gaps, and verification results. The report is responsive and accessible, and reuses the existing Power Pages report styling. Reports exclude absolute paths, URLs, tokens, and data values; CSV ledgers are generated from header-only assets so the output format stays stable across runs.Implementation notes
All semantic decisions stay with the agent. The only deterministic script is
query-table-schema.js, which retrieves Dataverse table, attribute, and relationship metadata using sequential requests, retry/backoff, token refresh, and checkpoint resume.The skill is registered in the plugin README, the approval-gate catalog (§6.32), and the skill-tracking table.