1.1.2 • Published 1 year ago

vendor-order-service v1.1.2

Weekly downloads
-
License
-
Repository
-
Last release
1 year ago

Vendor Order Service (BFF - Backend for Frontend)

This service handles any backend requirements for the EV charger front-end.

This app was created with a cdk init --language=typescript and modified from there.

Please see the companion Postman collection for demonstration on use.

Useful commands

These commands from the CDK init boilerplate

  • npm run build compile typescript to js
  • npm run watch watch for changes and compile
  • npm run test perform the jest unit tests
  • cdk deploy deploy this stack to your default AWS account/region
  • cdk diff compare deployed stack with current state
  • cdk synth emits the synthesized CloudFormation template

Deploying

This package runs within the Lerna-controlled monorepo, and is deployed by using GitHub Actions from the root directory of the repository (../.github/workflows).

Running Lambda Locally

# build to dist
npm run build
# create a CloudFormation template
cdk synth --no-staging > template.yaml
# invoke the lambda function locally
sam local invoke availability1234abcd -e sample_events/availability.json

* Note that '1234abcd' represents an 8-character ID that AWS CDK generates. You can find your's in template.yaml, right before Type: AWS::Lambda::Function

Endpoints

GET /referral?zip={zipCode}

Returns an array of partners for the given zip code. If no records are found, a 404 will be returned. Data structure for each entry can be found in the /src/referral/referral.ts file and is as such

{
  productOffering: string;
  partnerTier: 'Standard' | 'Preferred';
  accountName: string;
  accountType?: string;
  accountAddress?: string;
  accountCity?: string;
  accountState?: string;
  accountZip?: string;
  accountPhone?: string;
  accountWebsite?: string;
}

GET /orders

Return order infomation.

Querystring params (as an object):

{
  vendor_name: string,
  order_number: string,
  zipcode: string,
  last_name: string,
}

GET /availability?zip={zip}

Returns availability info for EV charger installations for a given zip code.

Output:

{
  EVChargerInstall: boolean,
}

Lambdas

For lambdas without an endpoint

{env}-vendor-order-service-GetJWT

Returns a signed JWT for authentication.

Querystring params (as an object):

{
  order_number: string,
  zipcode: string,
  last_name: string,
}

Success output:

{
  access_token: JWT, // string
}

Disaster Recovery

Please read the disaster recovery plan.