UNPKG

@vercel/sdk

Version:

<p align="center"> <a href="https://vercel.com"> <img src="https://assets.vercel.com/image/upload/v1588805858/repositories/vercel/logo.png" height="96"> <h3 align="center">Vercel</h3> </a> <p align="center">Develop. Preview. Ship.</p> </p>

74 lines 3.68 kB
/* * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. */ import { encodeJSON } from "../lib/encodings.js"; import { matchStatusCode } from "../lib/http.js"; import * as M from "../lib/matchers.js"; import { compactMap } from "../lib/primitives.js"; import { safeParse } from "../lib/schemas.js"; import { pathToFunc } from "../lib/url.js"; import { ExchangeSsoTokenRequestBody$outboundSchema, ExchangeSsoTokenResponseBody$inboundSchema, } from "../models/exchangessotokenop.js"; import { APIPromise } from "../types/async.js"; /** * SSO Token Exchange * * @remarks * During the autorization process, Vercel sends the user to the provider [redirectLoginUrl](https://vercel.com/docs/integrations/create-integration/submit-integration#redirect-login-url), that includes the OAuth authorization `code` parameter. The provider then calls the SSO Token Exchange endpoint with the sent code and receives the OIDC token. They log the user in based on this token and redirects the user back to the Vercel account using deep-link parameters included the redirectLoginUrl. Providers should not persist the returned `id_token` in a database since the token will expire. See [**Authentication with SSO**](https://vercel.com/docs/integrations/create-integration/marketplace-api#authentication-with-sso) for more details. */ export function marketplaceExchangeSsoToken(client, request, options) { return new APIPromise($do(client, request, options)); } async function $do(client, request, options) { const parsed = safeParse(request, (value) => ExchangeSsoTokenRequestBody$outboundSchema.parse(value), "Input validation failed"); if (!parsed.ok) { return [parsed, { status: "invalid" }]; } const payload = parsed.value; const body = encodeJSON("body", payload, { explode: true }); const path = pathToFunc("/v1/integrations/sso/token")(); const headers = new Headers(compactMap({ "Content-Type": "application/json", Accept: "application/json", })); const context = { options: client._options, baseURL: options?.serverURL ?? client._baseURL ?? "", operationID: "exchange-sso-token", oAuth2Scopes: null, resolvedSecurity: null, securitySource: null, retryConfig: options?.retries || client._options.retryConfig || { strategy: "none" }, retryCodes: options?.retryCodes || ["429", "500", "502", "503", "504"], }; const requestRes = client._createRequest(context, { method: "POST", baseURL: options?.serverURL, path: path, headers: headers, body: body, userAgent: client._options.userAgent, timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, }, options); if (!requestRes.ok) { return [requestRes, { status: "invalid" }]; } const req = requestRes.value; const doResult = await client._do(req, { context, isErrorStatusCode: (statusCode) => matchStatusCode({ status: statusCode }, ["4XX", "5XX"]), retryConfig: context.retryConfig, retryCodes: context.retryCodes, }); if (!doResult.ok) { return [doResult, { status: "request-error", request: req }]; } const response = doResult.value; const [result] = await M.match(M.json(200, ExchangeSsoTokenResponseBody$inboundSchema), M.fail([400, 403, "4XX"]), M.fail([500, "5XX"]))(response, req); if (!result.ok) { return [result, { status: "complete", request: req, response }]; } return [result, { status: "complete", request: req, response }]; } //# sourceMappingURL=marketplaceExchangeSsoToken.js.map