> This page is for Applications Protection.

> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.humansecurity.com/llms.txt.

# API

## createHumanEnforceHandler()

A function that creates an out-of-the box CloudFront request handler with the HumanSecurityEnforcer already integrated into it.

```ts
createHumanEnforceHandler(config: HumanSecurityConfiguration) => CloudFrontRequestHandler
```

* Parameters
  * config: HumanSecurityConfiguration
* Returns a CloudFrontRequestHandler function in the form of (event: CloudFrontRequestEvent, context: [Context](https://docs.aws.amazon.com/lambda/latest/dg/nodejs-context.html)) => `Promise<CloudFrontRequest | CloudFrontResponseResult>`

## createHumanFirstPartyHandler()

A function that creates an out-of-the box CloudFront request handler for first party requests.

```ts
createHumanFirstPartyHandler(config: MarkOptional<HumanSecurityConfiguration, 'px_auth_token' | 'px_cookie_secret'>) => CloudFrontRequestHandler
```

* Parameters
  * config: HumanSecurityConfiguration (except that the `px_auth_token` and `px_cookie_secret` configurations are optional)
* Returns a CloudFrontRequestHandler in the form of (event: CloudFrontRequestEvent, context: [Context](https://docs.aws.amazon.com/lambda/latest/dg/nodejs-context.html)) => `Promise<CloudFrontRequest | CloudFrontResponseResult>`

## createHumanActivitiesHandler()

A function that creates an out-of-the box CloudFront response handler with the HumanSecurityPostEnforcer already integrated into it.

```ts
createHumanActivitiesHandler(config: HumanSecurityConfiguration) => CloudFrontResponseHandler
```

* Parameters
  * config: HumanSecurityConfiguration
* Returns a CloudFrontResponseHandler in the form of (event: CloudFrontResponseEvent, context: [Context](https://docs.aws.amazon.com/lambda/latest/dg/nodejs-context.html)) => `Promise<CloudFrontResponseResult>`

## HumanSecurityEnforcer

The entity responsible for performing HUMAN enforcement at the viewer-request or origin-request event.

### HumanSecurityEnforcer.initialize()

A static function that creates a new instance of the HumanSecurityEnforcer class from a HumanSecurityConfiguration object.

```ts
HumanSecurityEnforcer.initialize(config: HumanSecurityConfiguration) => HumanSecurityEnforcer
```

* Parameters
  * config: HumanSecurityConfiguration
* Returns a new instance of the HumanSecurityEnforcer

### enforce()

Executes the enforcement functionality, returning either a CloudFront response or null depending on which action should be taken.

```ts
enforce(request: CloudFrontRequest, context?: Context) => Promise<CloudFrontResultResponse | null>
```

* Parameters
  * request: [CloudFrontRequest](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/lambda-event-structure.html#lambda-event-structure-request)
  * context?: [Context](https://docs.aws.amazon.com/lambda/latest/dg/nodejs-context.html)
* Returns a [Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise) resolving to an CloudFrontResponseResult or null.

> **The second parameter, \`context\`, was added as an optional parameter in version 4.2.0.**

## HumanSecurityFirstParty

> **The \`HumanSecurityFirstParty\` class was added in version 4.3.0.**

The entity responsible for handling HUMAN first party requests at the origin-request event.

### HumanSecurityFirstParty.initialize()

A static function that creates a new instance of the HumanSecurityFirstParty class from a HumanSecurityConfiguration object.

```ts
HumanSecurityFirstParty.initialize(config: HumanSecurityConfiguration) => HumanSecurityFirstParty
```

* Parameters
  * config: HumanSecurityConfiguration (except that the `px_auth_token` and `px_cookie_secret` configurations are optional)
* Returns a new instance of the HumanSecurityFirstParty

### handleFirstParty()

Executes the first party functionality, returning a CloudFront request, a CloudFront response, or null depending on which action should be taken by the handler.

If a request or response are returned, then the incoming request has been identified as a first party request, and the resulting value should be returned from the handler. If the resulting value is null, then the incoming request is not a first party request.

```ts
handleFirstParty(request: CloudFrontRequest, context?: Context) => Promise<CloudFrontRequest | CloudFrontResultResponse | null>
```

* Parameters
  * request: [CloudFrontRequest](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/lambda-event-structure.html#lambda-event-structure-request)
  * context?: [Context](https://docs.aws.amazon.com/lambda/latest/dg/nodejs-context.html)
* Returns a [Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise) resolving to a CloudFrontRequest, CloudFrontResponseResult, or null.

## HumanSecurityPostEnforcer

The entity responsible for performing HUMAN post-enforcement at the origin-response event.

### HumanSecurityPostEnforcer.initialize()

A static function that creates a new instance of the HumanSecurityPostEnforcer class from a HumanSecurityConfiguration object.

```ts
HumanSecurityPostEnforcer.initialize(config: HumanSecurityConfiguration) => HumanSecurityPostEnforcer
```

* Parameters
  * config: HumanSecurityConfiguration
* Returns a new instance of the HumanSecurityPostEnforcer

### postEnforce()

Performs any post-enforcement processing actions such as sending HUMAN data to the collector.

```ts
postEnforce(request: CloudFrontRequest, response: CloudFrontResponse) => `Promise<void>`
```

* Parameters
  * request: [CloudFrontRequest](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/lambda-event-structure.html#lambda-event-structure-request)
  * response: [CloudFrontResponse](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/lambda-event-structure.html#lambda-event-structure-response)
* Returns `Promise<void>`.