/* * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. */ import * as z from "zod/v3"; import { remap as remap$ } from "../../lib/primitives.js"; import { safeParse } from "../../lib/schemas.js"; import { Result as SafeParseResult } from "../../types/fp.js"; import { SDKValidationError } from "../errors/sdkvalidationerror.js"; export type ExchangeApiKeyTokenRequestBody = { /** * JWT audience (aud) claim for the exchanged token. Set this to the target API/service URL that should accept the token. */ audience: string; /** * Your external user identifier to place in the JWT subject (sub) claim. Must be 1–150 printable-ASCII characters and not the wildcard `*`. */ externalUserId: string; /** * Token lifetime in seconds. Must be between 300 (5 minutes) and 2592000 (30 days). Defaults to 3600 (1 hour). */ expiresIn?: number | undefined; /** * Optional subset of the API key's scopes to embed in the token (e.g. read:responses). The exchanged token is attenuated to this set at the gateway perimeter. If omitted, all of the key's scopes are embedded (no attenuation). */ permissions?: Array | undefined; }; export type ExchangeApiKeyTokenRequest = { /** * Optional external end-user identifier forwarded by the API gateway. */ xOnBehalfOf?: string | undefined; requestBody: ExchangeApiKeyTokenRequestBody; }; /** * Signed JWT */ export type ExchangeApiKeyTokenResponseBody = { /** * Signed JWT exchange token to use when calling downstream services. */ token: string; }; /** @internal */ export const ExchangeApiKeyTokenRequestBody$inboundSchema: z.ZodType< ExchangeApiKeyTokenRequestBody, z.ZodTypeDef, unknown > = z.object({ audience: z.string(), externalUserId: z.string(), expiresIn: z.number().default(3600), permissions: z.array(z.string()).optional(), }); /** @internal */ export type ExchangeApiKeyTokenRequestBody$Outbound = { audience: string; externalUserId: string; expiresIn: number; permissions?: Array | undefined; }; /** @internal */ export const ExchangeApiKeyTokenRequestBody$outboundSchema: z.ZodType< ExchangeApiKeyTokenRequestBody$Outbound, z.ZodTypeDef, ExchangeApiKeyTokenRequestBody > = z.object({ audience: z.string(), externalUserId: z.string(), expiresIn: z.number().default(3600), permissions: z.array(z.string()).optional(), }); export function exchangeApiKeyTokenRequestBodyToJSON( exchangeApiKeyTokenRequestBody: ExchangeApiKeyTokenRequestBody, ): string { return JSON.stringify( ExchangeApiKeyTokenRequestBody$outboundSchema.parse( exchangeApiKeyTokenRequestBody, ), ); } export function exchangeApiKeyTokenRequestBodyFromJSON( jsonString: string, ): SafeParseResult { return safeParse( jsonString, (x) => ExchangeApiKeyTokenRequestBody$inboundSchema.parse(JSON.parse(x)), `Failed to parse 'ExchangeApiKeyTokenRequestBody' from JSON`, ); } /** @internal */ export const ExchangeApiKeyTokenRequest$inboundSchema: z.ZodType< ExchangeApiKeyTokenRequest, z.ZodTypeDef, unknown > = z.object({ "X-On-Behalf-Of": z.string().optional(), RequestBody: z.lazy(() => ExchangeApiKeyTokenRequestBody$inboundSchema), }).transform((v) => { return remap$(v, { "X-On-Behalf-Of": "xOnBehalfOf", "RequestBody": "requestBody", }); }); /** @internal */ export type ExchangeApiKeyTokenRequest$Outbound = { "X-On-Behalf-Of"?: string | undefined; RequestBody: ExchangeApiKeyTokenRequestBody$Outbound; }; /** @internal */ export const ExchangeApiKeyTokenRequest$outboundSchema: z.ZodType< ExchangeApiKeyTokenRequest$Outbound, z.ZodTypeDef, ExchangeApiKeyTokenRequest > = z.object({ xOnBehalfOf: z.string().optional(), requestBody: z.lazy(() => ExchangeApiKeyTokenRequestBody$outboundSchema), }).transform((v) => { return remap$(v, { xOnBehalfOf: "X-On-Behalf-Of", requestBody: "RequestBody", }); }); export function exchangeApiKeyTokenRequestToJSON( exchangeApiKeyTokenRequest: ExchangeApiKeyTokenRequest, ): string { return JSON.stringify( ExchangeApiKeyTokenRequest$outboundSchema.parse(exchangeApiKeyTokenRequest), ); } export function exchangeApiKeyTokenRequestFromJSON( jsonString: string, ): SafeParseResult { return safeParse( jsonString, (x) => ExchangeApiKeyTokenRequest$inboundSchema.parse(JSON.parse(x)), `Failed to parse 'ExchangeApiKeyTokenRequest' from JSON`, ); } /** @internal */ export const ExchangeApiKeyTokenResponseBody$inboundSchema: z.ZodType< ExchangeApiKeyTokenResponseBody, z.ZodTypeDef, unknown > = z.object({ token: z.string(), }); /** @internal */ export type ExchangeApiKeyTokenResponseBody$Outbound = { token: string; }; /** @internal */ export const ExchangeApiKeyTokenResponseBody$outboundSchema: z.ZodType< ExchangeApiKeyTokenResponseBody$Outbound, z.ZodTypeDef, ExchangeApiKeyTokenResponseBody > = z.object({ token: z.string(), }); export function exchangeApiKeyTokenResponseBodyToJSON( exchangeApiKeyTokenResponseBody: ExchangeApiKeyTokenResponseBody, ): string { return JSON.stringify( ExchangeApiKeyTokenResponseBody$outboundSchema.parse( exchangeApiKeyTokenResponseBody, ), ); } export function exchangeApiKeyTokenResponseBodyFromJSON( jsonString: string, ): SafeParseResult { return safeParse( jsonString, (x) => ExchangeApiKeyTokenResponseBody$inboundSchema.parse(JSON.parse(x)), `Failed to parse 'ExchangeApiKeyTokenResponseBody' from JSON`, ); }