A SERVICE_DISABLED / accessNotConfigured 403 means the API is disabled in the OAuth client's project; the credential is fine. Probes now classify it as a new 'misconfigured' status: amber 'API disabled' badge, the provider's own remediation text (console link clickable) on the row, and no reconnect prompt.
Showing the changes to packages/plugins/openapi/src (1 of 9 files). Show all
Unified · Split
| @@ -7,7 +7,7 @@ import { · 6 unmodified lines | |||
| 7 | ToolName, | 7 | ToolName, |
| 8 | ToolResult, | 8 | ToolResult, |
| 9 | authToolFailure, | 9 | authToolFailure, |
| 10 | classifyHttpStatus, | 10 | classifyProbeResponse, |
| 11 | detectInsufficientScope, | 11 | detectInsufficientScope, |
| 12 | sortHealthCheckCandidatesByIdentity, | 12 | sortHealthCheckCandidatesByIdentity, |
| 13 | extractIdentity, | 13 | extractIdentity, |
| @@ -962,7 +962,9 @@ export const checkHealthOpenApi = (input: { · 948 unmodified lines | |||
| 962 | } satisfies HealthCheckResult; | 962 | } satisfies HealthCheckResult; |
| 963 | } | 963 | } |
| 964 | 964 | ||
| 965 | const status = classifyHttpStatus(probe.result.status); | 965 | // Body-aware: a configuration 403 (Google accessNotConfigured / |
| 966 | // SERVICE_DISABLED) reads misconfigured, not expired. | ||
| 967 | const status = classifyProbeResponse(probe.result.status, probe.result.error); | ||
| 966 | const identity = | 968 | const identity = |
| 967 | status === "healthy" ? extractIdentity(probe.result.data, spec.identityField) : undefined; | 969 | status === "healthy" ? extractIdentity(probe.result.data, spec.identityField) : undefined; |
| 968 | // Sample the returned body ONLY on a healthy probe: the sample exists to | 970 | // Sample the returned body ONLY on a healthy probe: the sample exists to |