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 | 7 | ToolName, |
| 8 | 8 | ToolResult, |
| 9 | 9 | authToolFailure, |
| 10 | − classifyHttpStatus, | |
| 10 | + classifyProbeResponse, | |
| 11 | 11 | detectInsufficientScope, |
| 12 | 12 | sortHealthCheckCandidatesByIdentity, |
| 13 | 13 | extractIdentity, |
| @@ -962,7 +962,9 @@ export const checkHealthOpenApi = (input: { · 948 unmodified lines | ||
| 962 | 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 | 968 | const identity = |
| 967 | 969 | status === "healthy" ? extractIdentity(probe.result.data, spec.identityField) : undefined; |
| 968 | 970 | // Sample the returned body ONLY on a healthy probe: the sample exists to |