UNPKG

@types/aws-lambda

Version:

TypeScript definitions for AWS Lambda

188 lines (165 loc) 7.03 kB
import { APIGatewayEventDefaultAuthorizerContext, APIGatewayEventRequestContextWithAuthorizer, } from "../common/api-gateway"; import { Callback, Handler } from "../handler"; /** * Works with Lambda Proxy Integration for Rest API or HTTP API integration Payload Format version 1.0 * @see - https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-develop-integrations-lambda.html */ export type APIGatewayProxyHandler = Handler<APIGatewayProxyEvent, APIGatewayProxyResult>; /** * Works with Lambda Proxy Integration for Rest API or HTTP API integration Payload Format version 1.0 * @see - https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-develop-integrations-lambda.html */ export type APIGatewayProxyCallback = Callback<APIGatewayProxyResult>; /** * Works with HTTP API integration Payload Format version 2.0 * @see - https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-develop-integrations-lambda.html */ export type APIGatewayProxyHandlerV2<T = never> = Handler<APIGatewayProxyEventV2, APIGatewayProxyResultV2<T>>; /** * Works with HTTP API integration Payload Format version 2.0 * @see - https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-develop-integrations-lambda.html */ export type APIGatewayProxyCallbackV2 = Callback<APIGatewayProxyResultV2>; /** * Works with Lambda Proxy Integration for Rest API or HTTP API integration Payload Format version 1.0 * @see - https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-develop-integrations-lambda.html */ export type APIGatewayProxyEvent = APIGatewayProxyEventBase<APIGatewayEventDefaultAuthorizerContext>; export type APIGatewayProxyWithLambdaAuthorizerHandler<TAuthorizerContext> = Handler<APIGatewayProxyWithLambdaAuthorizerEvent<TAuthorizerContext>, APIGatewayProxyResult>; export type APIGatewayProxyWithCognitoAuthorizerHandler = Handler<APIGatewayProxyWithCognitoAuthorizerEvent, APIGatewayProxyResult>; export type APIGatewayProxyWithLambdaAuthorizerEvent<TAuthorizerContext> = APIGatewayProxyEventBase<APIGatewayEventLambdaAuthorizerContext<TAuthorizerContext>>; export type APIGatewayProxyWithLambdaAuthorizerEventRequestContext<TAuthorizerContext> = APIGatewayEventRequestContextWithAuthorizer<APIGatewayEventLambdaAuthorizerContext<TAuthorizerContext>>; // API Gateway proxy integration mangles the context from a custom authorizer, // converting all number or boolean properties to string, and adding some extra properties. export type APIGatewayEventLambdaAuthorizerContext<TAuthorizerContext> = { [P in keyof TAuthorizerContext]: TAuthorizerContext[P] extends null ? null : string; } & { principalId: string; integrationLatency: number; }; export type APIGatewayProxyWithCognitoAuthorizerEvent = APIGatewayProxyEventBase<APIGatewayProxyCognitoAuthorizer>; // All claims are coerced into strings. export interface APIGatewayProxyCognitoAuthorizer { claims: { [name: string]: string; }; } export interface APIGatewayProxyEventHeaders { [name: string]: string | undefined; } export interface APIGatewayProxyEventMultiValueHeaders { [name: string]: string[] | undefined; } export interface APIGatewayProxyEventPathParameters { [name: string]: string | undefined; } export interface APIGatewayProxyEventQueryStringParameters { [name: string]: string | undefined; } export interface APIGatewayProxyEventMultiValueQueryStringParameters { [name: string]: string[] | undefined; } export interface APIGatewayProxyEventStageVariables { [name: string]: string | undefined; } export interface APIGatewayProxyEventBase<TAuthorizerContext> { body: string | null; headers: APIGatewayProxyEventHeaders; multiValueHeaders: APIGatewayProxyEventMultiValueHeaders; httpMethod: string; isBase64Encoded: boolean; path: string; pathParameters: APIGatewayProxyEventPathParameters | null; queryStringParameters: APIGatewayProxyEventQueryStringParameters | null; multiValueQueryStringParameters: APIGatewayProxyEventMultiValueQueryStringParameters | null; stageVariables: APIGatewayProxyEventStageVariables | null; requestContext: APIGatewayEventRequestContextWithAuthorizer<TAuthorizerContext>; resource: string; } /** * Works with Lambda Proxy Integration for Rest API or HTTP API integration Payload Format version 1.0 * @see - https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-develop-integrations-lambda.html */ export interface APIGatewayProxyResult { statusCode: number; headers?: { [header: string]: boolean | number | string; }; multiValueHeaders?: { [header: string]: Array<boolean | number | string>; }; body: string; isBase64Encoded?: boolean; } /** * Works with HTTP API integration Payload Format version 2.0 * @see - https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-develop-integrations-lambda.html */ export interface APIGatewayProxyEventV2 { version: string; routeKey: string; rawPath: string; rawQueryString: string; cookies?: string[]; headers: APIGatewayProxyEventHeaders; queryStringParameters?: APIGatewayProxyEventQueryStringParameters; requestContext: { accountId: string; apiId: string; authorizer?: { jwt: { claims: { [name: string]: string | number | boolean | string[] }; scopes: string[]; }; }; domainName: string; domainPrefix: string; http: { method: string; path: string; protocol: string; sourceIp: string; userAgent: string; }; requestId: string; routeKey: string; stage: string; time: string; timeEpoch: number; }; body?: string; pathParameters?: APIGatewayProxyEventPathParameters; isBase64Encoded: boolean; stageVariables?: APIGatewayProxyEventStageVariables; } /** * Works with HTTP API integration Payload Format version 2.0 * @see - https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-develop-integrations-lambda.html */ export type APIGatewayProxyResultV2<T = never> = APIGatewayProxyStructuredResultV2 | string | T; /** * Interface for structured response with `statusCode` and`headers` * Works with HTTP API integration Payload Format version 2.0 * @see - https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-develop-integrations-lambda.html */ export interface APIGatewayProxyStructuredResultV2 { statusCode?: number; headers?: { [header: string]: boolean | number | string; }; body?: string; isBase64Encoded?: boolean; cookies?: string[]; } // Legacy names export type ProxyHandler = APIGatewayProxyHandler; export type ProxyCallback = APIGatewayProxyCallback; export type APIGatewayEvent = APIGatewayProxyEvent; export type ProxyResult = APIGatewayProxyResult;