# eHealth Order Service API Design ```shell /* Author: Osman Goni Nahid Email: os@evaly.com.bd ------------------------------------ Sub-Author: Amirul Islam Al Mamun Email: amirul.islam@evaly.com.bd */ ``` API Service path: `/{service-name}` API Version path: `/api/v1` <u>Modules:</u> Order, OrderItems, OrderHistory, Notes ## 1. Module Name: **Order** ### **<u>API Consumer: Back office Administrations</u>** API Permission: Employees with the appropriate role(s) `eHealthAdmin` `eHealthManager` `eHealthOrderAdmin` `eHealthOrderManager` `superuser` #### 1. **<u>Order List for Admin</u>** - Method : `GET` - API Path: `/admin/orders` - Filter options: `?invoice_no=&order_status=&delivery_status=&payment_status=&contact_number=&limit=10&page=2&shop_slug=&elogistic_delivery_hero_id=&elogistics_delivery_status=&payment_method=&delivery_method=&order_origin=` etc - Required Action Permission (v1): `view.order.list` - Sample Headers: `Authoriztion` : `Bearer {access_token}` - Sample Request Body: `N/A` - Sample Response ```json { "success": true, "message": "Status OK", "meta_info": { "count": 1, "page_size": 10, "next": 2, "previous": null }, "data": [ { "id": 152, "invoice_no": "EVH351339954", "customer_info": { "first_name": "Osman Goni Nahid", "email": null, "profile_pic_url": "" }, "customer_username": "01685026771", "shop_info": { "shop": { "status": "active", "max_allowed_total": 1000000, "min_allowed_total": 500, "max_order_quantity": 0, "max_order_amount": 0, "min_order_quantity": 0, "min_order_amount": 0, "is_delivery_hero_allowed": false, "is_cod_allowed": false, "is_mother_shop": false, "approved": false, "shop_type": "Regular", "_id": "606eacd78f076100499b9a0f", "name": "Milk vita", "merchant_id": "606be7fcb28114002020874d", "address": "merchant address", "mother_shop_id": "606c5ed490800a010808663e", "longitude": 0, "latitude": 0, "slug": "milk-vita-10e29c52", "createdAt": "2021-04-08T07:12:24.029Z", "updatedAt": "2021-04-08T07:12:24.029Z", "__v": 0 } }, "shop_slug": "evaly-express-aks-pharmacy-dmch-dhaka", "contact_number": "01521400404", "customer_address": "Banani", "date": "2021-04-29 04:25:17.272120", "subtotal": 16270.0, "total": 16270.0, "paid_amount": 0.0, "delivery_status": null, "service_charge": 0.0, "delivery_fee": 0.0, "order_status": "pending", "payment_status": "unpaid", "payment_method": "", "delivery_option": {}, "attachments": [ "https://dev.azure.com/Evaly/eHealth/_git/ehealth-order" ], "status": "active", "delivery_lat": 300.0, "delivery_lon": 290.0, "order_origin": "web", "last_update": null, "delivered_at": null, "shipped_at": null, "is_delivery_hero_allowed": false, "is_cod_allowed": false, "elgoistics_delivery_id": null, "elgoistics_delivery_hero_id": null, "elogistics_delivery_status": null } } ``` #### 2. <u>**Order Details:**</u> Order details for admin, here order will be fetched by `invoice_no` where the API will return the full details or order as much as possible - Method: `GET` - API Path: `/admin/orders/{invoice_no}` - Required Action Permission (v1): `view.order.details` - Sample Headers: `Authoriztion` : `Bearer {access_token}` - Sample Request Body: `N/A` - Sample Response ```json { "success": true, "message": "Status OK", "data": { "order": { "id": 165, "invoice_no": "EVH597464770", "customer_info": { "first_name": "Osman Goni Nahid", "email": null, "profile_pic_url": "" }, "customer_username": "01685026771", "shop_info": { "shop": { "status": "active", "max_allowed_total": 1000000, "min_allowed_total": 500, "max_order_quantity": 0, "max_order_amount": 0, "min_order_quantity": 0, "min_order_amount": 0, "is_delivery_hero_allowed": false, "is_cod_allowed": false, "is_mother_shop": false, "approved": false, "shop_type": "Regular", "_id": "606eacd78f076100499b9a0f", "name": "Milk vita", "merchant_id": "606be7fcb28114002020874d", "address": "merchant address", "mother_shop_id": "606c5ed490800a010808663e", "longitude": 0, "latitude": 0, "slug": "milk-vita-10e29c52", "createdAt": "2021-04-08T07:12:24.029Z", "updatedAt": "2021-04-08T07:12:24.029Z", "__v": 0 } }, "shop_slug": "milk-vita-10e29c52", "contact_number": "01521400404", "customer_address": "Banani", "date": "2021-04-30 10:12:16.631448", "subtotal": 740.0, "total": 740.0, "paid_amount": 0.0, "delivery_status": null, "service_charge": 0.0, "delivery_fee": 0.0, "order_status": "pending", "payment_status": "unpaid", "payment_method": "", "delivery_option": {}, "attachments": [ "https://dev.azure.com/Evaly/eHealth/_git/ehealth-order" ], "status": "active", "delivery_lat": 300.0, "delivery_lon": 290.0, "order_origin": "web", "last_update": null, "delivered_at": null, "shipped_at": null, "is_delivery_hero_allowed": false, "is_cod_allowed": false, "elgoistics_delivery_id": null, "elgoistics_delivery_hero_id": null, "elogistics_delivery_status": null }, "order_items": [ { "id": 279, "invoice_code": "EVH597464770T2I2", "order": 165, "shop_item_id": "608a97552e51e42d315174cc", "shop_item_details": { "shop_item_id": "608a97552e51e42d315174cc", "item_name": "Dexoride Fluid - 500ml", "product_slug": "dexoride-fluid-500ml-cf9d90ac2", "prescription_required": false, "item_price": 80, "in_stock": 100, "discount": 10, "discounted_price": 70, "discount_type": "flat", "price_type": "fixed", "max_price": 0, "min_price": 0, "min_discounted_price": 0, "wholesale_price": 65, "minimum_wholesale_quantity": 10, "shop_name": "Milk vita", "shop_slug": "milk-vita-10e29c52", "shop_owner_name": "" }, "quantity": 8, "order_time_price": 70.0, "order_time_status": 70.0, "status": "active", "note": null, "updated_at": null, "created_at": "2021-04-30 22:12:16.655083", "deleted_at": null }, { "id": 278, "invoice_code": "EVH597464770T2I1", "order": 165, "shop_item_id": "608a973b2e51e42d315174cb", "shop_item_details": { "shop_item_id": "608a973b2e51e42d315174cb", "item_name": "Koloride Fluid - 500ml", "product_slug": "koloride-fluid-500ml-eb5a914df", "prescription_required": false, "item_price": 70, "in_stock": 100, "discount": 10, "discounted_price": 60, "discount_type": "flat", "price_type": "fixed", "max_price": 0, "min_price": 0, "min_discounted_price": 0, "wholesale_price": 65, "minimum_wholesale_quantity": 10, "shop_name": "Milk vita", "shop_slug": "milk-vita-10e29c52", "shop_owner_name": "" }, "quantity": 3, "order_time_price": 60.0, "order_time_status": 60.0, "status": "active", "note": null, "updated_at": null, "created_at": "2021-04-30 22:12:16.642937", "deleted_at": null } ] } } ``` #### 3. <u>**Order Update:**</u> Update order information by admin those fields we allowed to update from back-office by an employee - Method: `PUT` - API Path: `/admin/orders/{invoice_no}` - Required Action Permission (v1): `update.order.details` - Sample Headers: `Authoriztion` : `Bearer {access_token}` - Sample Request Body ```json { "customer_address":"20/7, Banani", "contact_number":"01521400405", "delivery_lat": 120.01, "delivery_lon": 90.23 } ``` - Sample Response ```json { "success": true, "message": "Status OK", "data": { "id": 31, "invoice_no": "EVH060830646", "customer_info": { "first_name": "Ishak Ahammed", "email": null, "profile_pic_url": "https://s3-ap-southeast-1.amazonaws.com/media.evaly.com.bd/media/images/1573e2c486ec-newfile.jpeg" }, "customer_username": "ishak", "shop_info": { "shop": { "status": "active", "is_delivery_hero_allowed": false, "is_cod_allowed": false, "is_mother_shop": false, "approved": false, "shop_type": "Regular", "_id": "606e928f98ae9100594691fe", "name": "shop aagg", "merchant_id": "606be7fcb28114002020874d", "address": "merchant address", "mother_shop_id": "606c5ed490800a010808663e", "longitude": 0, "latitude": 0, "slug": "shop-aagg-1973a9cb", "createdAt": "2021-04-08T05:20:15.660Z", "updatedAt": "2021-04-08T05:20:15.660Z", "__v": 0 } }, "shop_slug": "evaly-express-aks-pharmacy-dmch-dhaka", "contact_number": "01521400405", "customer_address": "20/7, Banani", "date": "2021-04-25 07:28:37.106090", "subtotal": 14000.0, "total": 14000.0, "paid_amount": 14000.0, "delivery_status": null, "service_charge": 0.0, "delivery_fee": 0.0, "order_status": "cancelled", "payment_status": "refunded", "payment_method": "nagad", "delivery_option": {}, "attachments": null, "status": "active", "delivery_lat": 120.01, "delivery_lon": 90.23, "order_origin": "web", "last_update": "2021-04-30 22:18:22.255621", "delivered_at": "2021-04-08 05:20:15.660000", "shipped_at": "2021-04-08 05:20:15.660000", "is_delivery_hero_allowed": false, "is_cod_allowed": false, "elgoistics_delivery_id": "default", "elgoistics_delivery_hero_id": "default", "elogistics_delivery_status": "default" } } ``` ### **<u>API Consumer: Public facing web/app</u>** API Permission: `Customer` or end-user #### 1. **<u>Order List for Customer:</u>** will be able to the filer and search with appropriate fields - Method : `GET` - API Path: `/orders` - Filter options: `??order_status=&limit=10 &page=2` etc - Required Action Permission (v1): `customer` - Sample Headers: `Authoriztion` : `Bearer {access_token}` - Sample Request Body: `N/A` - Sample Response ```json { "success": true, "message": "Status OK", "meta_info": { "count": 1, "page_size": 10, "next": 2, "previous": null }, "data": [ { "id": 55, "invoice_no": "EVH057279997", "customer_info": { "first_name": "Osman Goni Nahid", "email": null, "profile_pic_url": "" }, "customer_username": "01685026771", "shop_info": { "shop": { "status": "active", "is_delivery_hero_allowed": false, "is_cod_allowed": false, "is_mother_shop": false, "approved": false, "shop_type": "Regular", "_id": "606eacd78f076100499b9a0f", "name": "Milk vita", "merchant_id": "606be7fcb28114002020874d", "address": "merchant address", "mother_shop_id": "606c5ed490800a010808663e", "longitude": 0, "latitude": 0, "slug": "milk-vita-10e29c52", "createdAt": "2021-04-08T07:12:24.029Z", "updatedAt": "2021-04-08T07:12:24.029Z", "__v": 0 } }, "shop_slug": "evaly-express-aks-pharmacy-dmch-dhaka", "contact_number": "01521400404", "customer_address": "Banani", "date": "2021-04-26 03:39:38.558027", "subtotal": 22000.0, "total": 22000.0, "paid_amount": 100.0, "delivery_status": null, "service_charge": 0.0, "delivery_fee": 0.0, "order_status": "pending", "payment_status": "unpaid", "payment_method": "", "delivery_option": {}, "attachments": [ "https://dev.azure.com/Evaly/eHealth/_git/ehealth-order" ], "status": "active", "delivery_lat": 300.0, "delivery_lon": 290.0, "order_origin": "web", "last_update": null, "delivered_at": null, "shipped_at": null, "is_delivery_hero_allowed": false, "is_cod_allowed": false, "elgoistics_delivery_id": null, "elgoistics_delivery_hero_id": null, "elogistics_delivery_status": null } } ```