Commit 2805a8d
feat(windchill): add document integration (#6577)
* feat(windchill): add document integration
* fix(windchill): align tool contracts and docs
* fix(windchill): use official integration icon
* fix(windchill): correct response and paging semantics
* fix(windchill): align execution and API contracts
* refactor(windchill): inline route authentication
* fix(windchill): correct OData query encoding, content download, and cleared-field handling
Validated the integration end to end against PTC Windchill REST Services 2.7
documentation and fixed every divergence found.
Protocol correctness:
- Encode OData query spaces as %20 rather than the form-encoded `+` that
URLSearchParams emits. Every multi-token $filter and $orderby reached
Windchill as a literal `+` and could not match.
- Download content through the documented typed navigation
`<content>/PTC.ApplicationData/Content/URL`, which returns a signed vault
URL, instead of a `$value` segment that WRS does not implement. The
resolved URL is pinned to the configured HTTPS origin.
- Terminate every Stage 2 CacheDescriptor_array entry with `;` to match the
documented grammar.
- Raise the $top bound to Windchill's documented 2000 maximum, keeping 200 as
the default page size.
Cleared-field handling:
- The executor merges raw block inputs before the block's param transform, so
omitting a key could not clear it. A cleared numeric or boolean field
reached the URL builder as '' and threw, and cleared optional strings failed
contract validation. Coercions now emit an explicit undefined, and the
internal-route body strips blanks centrally.
Robustness and contracts:
- Bound the document-structure walk to the depth actually requested.
- Loosen response schemas that re-applied request-side bounds to
provider-returned values, which turned committed mutations into opaque
parse failures.
- Return contract-shaped bodies for oversized, malformed, and unhandled
request failures.
- Normalize downloaded content types and drop charset parameters.
Presentation and docs:
- Square the icon to a centred tile on white.
- Replace WT.Document and PATCH-compatible jargon with plain language.
- Fix canvas sentence noun stutters on the bulk operations.
- Correct the revision skill's unverified working-copy claim to read the OID
back rather than assume it, and add retirement and stale-checkout skills.
- Add a manual intro section to the integration docs page.
* fix(windchill): align tool copy with the docs page and rebase the route baseline
Tool descriptions feed both the integration catalog and the generated docs page,
so the plain-language pass had to reach them too: drop WT.Document and
PATCH-compatible from the operation copy, and correct the $top bound the
descriptions still advertised as 200.
Correct the docs intro's attachment wording, gloss OData on first use, and
attribute the bulk-atomicity claim to PTC's documented behavior.
Raise the API route-count baseline, which staging advanced while this branch
was behind.
* feat(windchill): add update common properties
Name, Number, and Organization are rejected by the PATCH-based update
operation, and the rejection message told users to reach for Windchill's
UpdateCommonProperties action that the integration did not expose. Add it.
PTC documents UpdateCommonProperties as a bound DocMgmt action taking an
Updates wrapper, available when hasCommonProperties is set on the Documents
entity, and refused while the document is checked out. The subblock and param
descriptions carry that constraint, and the rejection message now names the
operation that does the job.
* test(windchill): assert block and tool params stay aligned for every operation
Validating the new operation surfaced that nothing enforced the block-to-tool
alignment the review process had been checking by hand. Assert it for all 27
operations instead: every required tool param has a required, non-advanced
input under that operation's condition, and no operation shows an input its
tool cannot accept.
Both fail on a deliberately broken condition or a dropped required flag.
---------
Co-authored-by: Bill Leoutsakos <billleoutsakos@Bills-MacBook-Pro.local>
Co-authored-by: Waleed Latif <walif6@gmail.com>1 parent 9aa16e3 commit 2805a8d
50 files changed
Lines changed: 8309 additions & 6 deletions
File tree
- apps
- docs
- components
- ui
- content/docs/en/integrations
- sim
- app/api/tools/windchill
- blocks
- blocks
- components
- lib
- api/contracts/tools
- integrations
- tools
- generated
- windchill
- scripts
Some content is hidden
Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2494 | 2494 | | |
2495 | 2495 | | |
2496 | 2496 | | |
| 2497 | + | |
| 2498 | + | |
| 2499 | + | |
| 2500 | + | |
| 2501 | + | |
| 2502 | + | |
| 2503 | + | |
| 2504 | + | |
| 2505 | + | |
| 2506 | + | |
| 2507 | + | |
| 2508 | + | |
| 2509 | + | |
| 2510 | + | |
| 2511 | + | |
| 2512 | + | |
| 2513 | + | |
| 2514 | + | |
| 2515 | + | |
| 2516 | + | |
| 2517 | + | |
| 2518 | + | |
| 2519 | + | |
| 2520 | + | |
| 2521 | + | |
| 2522 | + | |
2497 | 2523 | | |
2498 | 2524 | | |
2499 | 2525 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
245 | 245 | | |
246 | 246 | | |
247 | 247 | | |
| 248 | + | |
248 | 249 | | |
249 | 250 | | |
250 | 251 | | |
| |||
538 | 539 | | |
539 | 540 | | |
540 | 541 | | |
| 542 | + | |
541 | 543 | | |
542 | 544 | | |
543 | 545 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
259 | 259 | | |
260 | 260 | | |
261 | 261 | | |
| 262 | + | |
262 | 263 | | |
263 | 264 | | |
264 | 265 | | |
| |||
Large diffs are not rendered by default.
0 commit comments