# XPLUR Project ## Pre-Conditions: 1. Submit your codes into a Github (https://github.com) repository of your own and shared the link with us. 1. Make sure your code compiles and runs. 1. Please provide instruction on how to run your code. 1. Part 2, is a **MUST** have. ## Requirments Xplur team decided to build an Awsome API known as XPLUR Products API. This API is a REST api and provides the following following funtions: * Create a Product * Delete a Product * List all Products * Update a Product The Product needs to have the following attributes / fields: ``` Product attributes : - SKU - Name - Description - Category - Price - MetaData - Small Icon - Large Icon ``` ### Part 1 - REST API Prototype As a team, we need to prototype this REST API using OpenAPI specification 3.0 and Swagger which can be found below. More to read: * https://www.openapis.org * https://swagger.io/ The exepected outcome is to have a Swagger file called `product.yaml`, which contains the swagger definition of this API. ### Part 2: Microservice As a team, we need to build a Python microservice using Flask and Python 3. which allows us to handle the following operations: - [x] POST : Create a Product - [x] DELETE : Delete a Product - [x] GET: List all Products - [x] PUT: Update a Product The expectd outcome is to have a REST API running locally and allows us to perform REST API operation on it. > For example. > GET /products : Returns like of Products ### Part 3: Securing API As a team we have decided to secure this API using JWT Access token verification. The expected outcome is to add the security requirment to the REST API created in Part 2. > GET /products > Header: Authorization: Bearer Token ### Part 4: Containerization As team we are looking at how to run this REST API as a container. Our expection is to have `Dockerfile` sitting in your project and allows us to build and run docker container.