7a501bfcc6b8f658a1a3c2b3dfce70a5915243cb gperez2 Fri Oct 2 15:09:30 2026 -0700 Updating the /blat missing API key error message in hubApi from "My Track Hubs" to "Track Hubs" to match the My Data menu, refs #37858 diff --git src/hg/hubApi/blat.c src/hg/hubApi/blat.c index 8d00c1fed14..f81729830fb 100644 --- src/hg/hubApi/blat.c +++ src/hg/hubApi/blat.c @@ -292,31 +292,31 @@ char *extraArgs = verifyLegalArgs(argBlat); if (extraArgs) apiErrAbort(err400, err400Msg, "extraneous arguments found for function /blat '%s'", extraArgs); /* /blat is gated on an apiKey -- both for attribution and to anchor the * bot-bottleneck on something more stable than IP. Known programmatic * clients (IGV, rtracklayer, etc.) identified via bottleneck.except IPs or * noCaptchaAgent. user-agent patterns in hg.conf are exempt. * For everyone else, an apiKey must be present; validity was already * checked in main(). */ char *apiKey = cgiOptionalString(argApiKey); if (isEmpty(apiKey) && !botException() && !botExceptionUserAgent()) apiErrAbort(err403, err403Msg, "/blat requires an '%s' URL parameter. " - "Generate one under My Data > My Track Hubs > Hub Development: API Key, " + "Generate one under My Data > Track Hubs > Hub Development: API Key, " "then add it to this API call as apiKey=xxxxx. " "Contact us if you need assistance.", argApiKey); /* Apply a per-BLAT bottleneck penalty on top of the global hubApi delay * already paid in main(). Bottleneck key is the apiKey (see botDelay.c), * so heavy users throttle themselves instead of starving everyone. */ char *blatDelayStr = cfgOptionDefault("hubApi.blatDelayFraction", NULL); double blatDelayFraction = blatDelayStr ? atof(blatDelayStr) : blatDelayFractionDefault; int extraDelay = 0; struct errCatch *bnErrCatch = errCatchNew(); if (errCatchStart(bnErrCatch)) extraDelay = hgBotDelayTimeFrac(blatDelayFraction); errCatchEnd(bnErrCatch); if (bnErrCatch->gotError) apiErrAbort(err500, err500Msg, "bottleneck server unavailable: %s",