Repository navigation
Commit 380a107
docs(automation): connectors page describes the served rest/openapi credential handle and app-credential exchanges (#28419)
<!-- claude-projects-attribution: {"github_login":"os-tesla"} -->
_Requested by **Tesla** · [project
thread](https://claude.ai/code/project/chan_01AXsQkLFKRdQCqQ3RTr6Jao?thread=cmsg_01AXsQkLFKRdQCqQ3RTr6JaoHgewSpchhjBvPu7yhxUUJx)_
Part of #26702
Clause-②: no
Metadata-protocol: none
Skills-docs: the skills half
(skills/objectstack-automation/references/integration-recipes.md) is
#28299, the skills lane's card; this PR touches no skills/** file.
## 维护者速读
- 改了什么:只改文档
`content/docs/automation/connectors.mdx`,把连接器页面里已经过时的说法改正:`rest` 和
`openapi` 现在会使用凭证句柄,飞书、钉钉、企业微信的应用凭证换取也已经在运行;只有 `mcp` 仍列为暂不支持。
- 为什么改:#28399 合入后,页面仍写着「应用凭证的厂商换取尚未运行」「内置 rest / openapi
不使用凭证句柄」,这两句现在是错的,会误导作者把实例声明成静态凭证。
- 风险与回滚:纯文档,不发布任何包,不影响运行时;回滚即还原本 PR。
- 先看:「How the server serves them」开头新增的应用凭证段落和三家厂商的表格,以及下方「What is not
served yet」段落。
- 两分钟验证:`pnpm check:doc-authoring && pnpm check:doc-anchors`,预期退出码 0。
- 需要你做的:无,席位审阅并落地(本 PR 需要 `skip-changeset` 标签)。
## What changes
`content/docs/automation/connectors.mdx`, three places, all in the
grant-bearing auth section and the failure table:
- **"How the server serves them"** now opens with what serves both
grant-bearing kinds: the credential handle the built-in `rest` and
`openapi` providers ask on every request (`registerConnectorProvider(…,
{ credentialHandle: true })`), and what an `openapi` document's
`security` decides for such an instance (`security: []` is anonymous; an
`apiKey` scheme's parameter is filled by the platform and left out of
the input schema).
- **New `app-credential` paragraph and table**: the fixed per-vendor
exchange (Feishu, DingTalk v1.0, WeCom) and where each token rides on a
call; the token belongs to the app and nothing is connected; it is held
in memory only and obtained afresh inside the 30 s skew or once on a
`401`; one exchange is shared by concurrent requests; WeCom's in-answer
`errcode` `40014` / `42001` obtains the token afresh once and repeats
the call once, and a second such answer fails it; no redirect is
followed; no answer / `429` / `5xx` is `CONNECTOR_UPSTREAM_UNAVAILABLE`,
a refused app id or secret is a `503` naming the instance and at most
the vendor's error code. The existing `oauth2` text follows unchanged,
now introduced as "An `oauth2` instance's access token is …".
- **"What is not served yet is held degraded"** no longer lists
`app-credential` or the `rest` / `openapi` providers. It now lists a
grant-bearing instance on a provider that does not ask the handle (the
built-in `mcp` provider, or a plugin provider registered without the
option), the `mcp` instance that leaves its endpoints to discovery, and
the non-https `oauth2` endpoint rule, as before.
- **Failure-modes table**: the grant-bearing row now reads "on a
provider that does not ask the credential handle (the built-in `mcp`
provider, for now)".
Untouched by design: the `(404)` hunk near line 404 that draft #28346
edits, and every `skills/**` file.
Every fact was read from the merged code:
`packages/services/service-automation/src/oauth2-grant/app-credential.ts`
(exchanges, `present`, skew via `BORROWED_CREDENTIAL_SKEW_MS = 30_000`,
`retryOnVendorTokenRefusal`), `plugin.ts`
(`credentialHandleNotAppliedReason`),
`connector-openapi/src/openapi-connector.ts` (the `security` rules), and
`connector-credential-source.ts` (datasource lending still `422`).
## Tests
None: a docs-only change. The docs gates below judge it.
## Verification
- `dispatch-gates --commands`: 43 families derived for this one path;
all exit 0. `check:docs` and `check:skill-examples` exited 1 / 3 at
first because `packages/spec/json-schema` was older than `src` in this
worktree (a build prerequisite, not a finding); after `pnpm --filter
@objectstack/spec build` both exit 0.
- `--ran` reconcile: 43 derived, 43 run, 0 NOT-MEASURED, 0 unrun.
- No changeset: nothing published changes, so the PR carries
`skip-changeset`.
## Acceptance notes
- `mcp` stays listed as not served: its half of ADR-0143 S2 is a
separate PR that waits on the discovery-organization ruling.
- The `oauth2` revoke sentence still says the discovery that would
supply a revocation endpoint is ADR-0143 S2; that remains true until the
`mcp` half lands, so it is left as is.
## Human Minimum
- [x] 1. Schemas start as Zod; `packages/spec` holds no runtime logic.
(`packages/spec` is not touched.)
- [x] 2. Every name I added uses the casing for its kind. (No names
added.)
- [x] 3. No formatter ran; the docs gates pass.
- [x] 4. One issue, one branch off an up-to-date `main`, one pull
request.
- [x] 5. A change that publishes carries a changeset: this one publishes
nothing (`skip-changeset`); both declaration lines are filled in above.
- [x] 6. `packages/spec` touched: not touched.
- [x] 7. No hand edits to `content/docs/references/`,
`packages/*/CHANGELOG.md` or `content/docs/releases/`.
- [x] 8. Title, body and comments are in English.
- [x] The *Before Submitting* list in CONTRIBUTING.md is done.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
https://claude.ai/code/session_01L9qibwa6RkD7A2gK6rYRNT
Co-authored-by: Claude <noreply@anthropic.com>1 parent df34d37 commit 380a107
1 file changed
Lines changed: 40 additions & 7 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
470 | 470 | | |
471 | 471 | | |
472 | 472 | | |
473 | | - | |
474 | | - | |
| 473 | + | |
| 474 | + | |
| 475 | + | |
| 476 | + | |
| 477 | + | |
| 478 | + | |
| 479 | + | |
| 480 | + | |
| 481 | + | |
| 482 | + | |
| 483 | + | |
| 484 | + | |
| 485 | + | |
| 486 | + | |
| 487 | + | |
| 488 | + | |
| 489 | + | |
| 490 | + | |
| 491 | + | |
| 492 | + | |
| 493 | + | |
| 494 | + | |
| 495 | + | |
| 496 | + | |
| 497 | + | |
| 498 | + | |
| 499 | + | |
| 500 | + | |
| 501 | + | |
| 502 | + | |
| 503 | + | |
| 504 | + | |
| 505 | + | |
| 506 | + | |
475 | 507 | | |
476 | 508 | | |
477 | 509 | | |
| |||
527 | 559 | | |
528 | 560 | | |
529 | 561 | | |
530 | | - | |
531 | | - | |
532 | | - | |
533 | | - | |
| 562 | + | |
| 563 | + | |
| 564 | + | |
| 565 | + | |
| 566 | + | |
534 | 567 | | |
535 | 568 | | |
536 | 569 | | |
| |||
663 | 696 | | |
664 | 697 | | |
665 | 698 | | |
666 | | - | |
| 699 | + | |
667 | 700 | | |
668 | 701 | | |
669 | 702 | | |
| |||
0 commit comments