vendor-order-service v1.1.2
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 buildcompile typescript to jsnpm run watchwatch for changes and compilenpm run testperform the jest unit testscdk deploydeploy this stack to your default AWS account/regioncdk diffcompare deployed stack with current statecdk synthemits 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.