{"record":{"id":"792e44cb5ef2960e","repo":"ComposioHQ/composio","slug":"failed-to-parse-connected-account-refresh-options","errorCode":null,"errorMessage":"Failed to parse connected account refresh options","messagePattern":"Failed to parse connected account refresh options","errorType":"validation","errorClass":"ValidationError","httpStatus":null,"severity":"error","filePath":"ts/packages/core/src/models/ConnectedAccounts.ts","lineNumber":568,"sourceCode":"   * @throws {Error} If the account doesn't exist or credentials cannot be refreshed\n   *\n   * @example\n   * ```typescript\n   * // Refresh a connected account's credentials\n   * const refreshedAccount = await composio.connectedAccounts.refresh('conn_abc123');\n   * ```\n   */\n  async refresh(\n    nanoid: string,\n    options?: ConnectedAccountRefreshOptions,\n    requestOptions?: ComposioRequestOptions\n  ): Promise<ConnectedAccountRefreshResponse> {\n    let params: ConnectedAccountRefreshParams | undefined = undefined;\n\n    if (options) {\n      const parsedOptions = ConnectedAccountRefreshOptionsSchema.safeParse(options);\n      if (!parsedOptions.success) {\n        throw new ValidationError('Failed to parse connected account refresh options', {\n          cause: parsedOptions.error,\n        });\n      }\n\n      params = {\n        query_redirect_url: parsedOptions.data.redirectUrl,\n        validate_credentials: parsedOptions.data.validateCredentials,\n      };\n    }\n\n    return withCancellation(\n      () => this.client.connectedAccounts.refresh(nanoid, params, requestOptions),\n      requestOptions?.signal\n    );\n  }\n\n  /**\n   * Update the status of a connected account","sourceCodeStart":550,"sourceCodeEnd":586,"githubUrl":"https://github.com/ComposioHQ/composio/blob/64b1b85502b1beeb2379e6c9e8bf1104504fa637/ts/packages/core/src/models/ConnectedAccounts.ts#L550-L586","documentation":"ValidationError thrown when the options passed to ConnectedAccounts.refresh fail ConnectedAccountRefreshOptionsSchema. Typically an invalid or non-string redirectUrl.","triggerScenarios":"Calling composio.connectedAccounts.refresh(nanoid, { redirectUrl: <invalid> }) — wrong type, malformed URL, or unknown keys.","commonSituations":"Passing an env var that's undefined or not a URL; reusing raw query-string values without validation.","solutions":["Check error.cause.issues for the offending field","Ensure redirectUrl is a valid URL string (or omit it)","Validate the value with new URL(redirectUrl) before calling"],"exampleFix":"// before\nawait c.connectedAccounts.refresh(id, { redirectUrl: process.env.REDIRECT });\n// after\nconst redirect = process.env.REDIRECT;\nawait c.connectedAccounts.refresh(id, redirect ? { redirectUrl: redirect } : undefined);","handlingStrategy":"validation","validationCode":"if (options?.redirectUrl !== undefined) { try { new URL(options.redirectUrl); } catch { throw new Error('redirectUrl must be a valid URL'); } }","typeGuard":"const isValidationError = (e: unknown): boolean => e instanceof ValidationError;","tryCatchPattern":"try { await ca.refresh(id, opts); } catch (e) { if (e instanceof ValidationError) { /* read e.cause.issues */ } }","preventionTips":["Type opts as ConnectedAccountRefreshOptions","Validate URLs before passing"],"tags":["validation","zod","connected-accounts","refresh"],"backgroundTag":"schema-validation-failed","analyzedSha":"64b1b85502b1beeb2379e6c9e8bf1104504fa637","analyzedAt":"2026-08-28T15:39:33.623Z","schemaVersion":2},"datasetVersion":"2026-08-28T16:17:29.566Z"}