npm package: @nesn/commons-api-gateway-tools
Description: API Gateway tools
Author: Lance Sims
Latest version: 1.2.0

# API Gateway Tools

The `api-gateway-tools` package provides utilities for managing API Gateway documentation and API keys. It includes modules for downloading and uploading API Gateway documentation, generating HTML wrappers for documentation, and storing API keys in AWS Systems Manager Parameter Store (SSM).

## Installation

To install the package, use npm or yarn:

```bash
npm install api-gateway-tools
```

or

```bash
yarn add api-gateway-tools
```

## Modules

### 1. API Gateway Docs Processor

This module provides functions to download API Gateway documentation assuming that a Serverless.js project is using the [serverless-aws-documentation plugin](https://www.npmjs.com/package/serverless-aws-documentation) to generate the documentation, upload it to an S3 bucket, and generate an HTML wrapper for viewing the documentation.

#### Functions

- **`downloadAPIGatewayDocs`**: Downloads API Gateway documentation for a specified stage and saves it to a specified file path.

  ```typescript
  downloadAPIGatewayDocs({
      outputFilePath: string,
      stage: string
  }): Promise<{ success: boolean, message: string }>
  ```

- **`uploadAPIGatewayDocsToS3`**: Uploads the downloaded API Gateway documentation to an S3 bucket.

  ```typescript
  uploadAPIGatewayDocsToS3({
      filePath: string,
      bucketName: string,
      key: string,
      contentType: AllowedContentType,
      clientOptions: AWSClientOptions
  }): Promise<{ success: boolean, message: string }>
  ```

- **`generateApiDocsHtmlWrapper`**: Generates an HTML wrapper for the API Gateway documentation using a presigned URL.

  ```typescript
  generateApiDocsHtmlWrapper(
      bucketName: string,
      key: string,
      clientOptions: AWSClientOptions,
      expiresIn?: number
  ): Promise<string>
  ```

- **`processApiDocs`**: A utility function that combines downloading, uploading, and cleaning up the API Gateway documentation.

  ```typescript
  processApiDocs({
      outputFilePath: string,
      stage: string,
      bucketName: string,
      key: string,
      contentType: AllowedContentType,
      clientOptions: AWSClientOptions
  }): Promise<void>
  ```

### 2. API Keys Storage

This module provides functions to retrieve API keys from API Gateway and store them securely in AWS Systems Manager Parameter Store (SSM).

#### Functions

- **`storeProjectAPIKeysToSSM`**: Stores API keys for a project in SSM as secure strings.

  ```typescript
  storeProjectAPIKeysToSSM({
      projectName: string,
      clientOptions: AWSClientOptions,
      stage?: string,
      normalizeName?: boolean
  }): Promise<void>
  ```

- **`getProjectAPIKeys`**: Retrieves all API keys for a specified project from API Gateway.

  ```typescript
  getProjectAPIKeys({
      projectName: string,
      clientOptions: AWSClientOptions,
      stage?: string
  }): Promise<ApiKey[]>
  ```

## Usage

### Downloading and Uploading API Gateway Docs

```typescript
import { processApiDocs } from 'api-gateway-tools/src/api-gateway-docs/processor';

await processApiDocs({
    outputFilePath: 'path/to/docs.json',
    stage: 'dev',
    bucketName: 'your-s3-bucket',
    key: 'docs.json',
    contentType: 'application/json',
    clientOptions: { region: 'us-east-1' }
});
```

### Storing API Keys in SSM

```typescript
import { storeProjectAPIKeysToSSM } from 'api-gateway-tools/src/api-keys/storage';

await storeProjectAPIKeysToSSM({
    projectName: 'my-project',
    clientOptions: { region: 'us-east-1' },
    stage: 'dev'
});
```

## Contributing

Contributions are welcome! Please open an issue or submit a pull request for any improvements or bug fixes.

## License

This project is licensed under the MIT License.
```

</rewritten_file>