diff --git a/README.md b/README.md index 4fba666..20a28d9 100644 --- a/README.md +++ b/README.md @@ -100,3 +100,42 @@ To access admin pages follow these steps: - [View emails](http://localhost:1080/#/) - Mail server is running on `localhost:1025` without password + +## Medipost flow + +1. Customer adds analysis to cart in **B2B** storefront +2. Customer checks out from cart and is redirected to **Montonio** +3. Customer pays and is redirected back to **B2B** `GET B2B/home/cart/montonio-callback?order-token=$JWT` + - **Medusa** order is created and cart is emptied + - email is sent to customer +4. When **Montonio** has confirmed payment, it will call **Medusa** webhook endpoint and **Medusa** will mark order payment as captured. + **Medusa** sends `POST B2B/api/order/medipost-create` with `medusaOrderId`. B2B sends order XML as private message to Medipost. + This could possibly later happen on montonio-callback URL also but currently not possible in Medusa + +In background a job will call `POST B2B/api/job/sync-analysis-results` every n minutes and sync private messages with responses from **Medipost**. + +In local dev environment, you can create a private message with analysis responses in **Medipost** system for a submitted order: +`POST B2B/api/order/medipost-test-response body={medusaOrderId:'input here'}` +After that run `POST /api/job/sync-analysis-results` and analysis results should be synced. + +In local dev environment, you can import products from B2B to Medusa with this API: + +- `POST /api/job/sync-analysis-groups-store` + - Syncs required data of `analyses`, `analysis_elements` data from **B2B** to **Medusa** and creates relevant products and categories. + If product or category already exists, then it is not recreated. Old entries are not deleted either currently. + +## Jobs + +Required headers: + +- `x-jobs-api-key` in UUID format + +Endpoints: + +- `POST /api/job/sync-analysis-groups` + - Queries **Medipost** for public messages list and takes analysis info from the latest event. + Updates `analyses` and `analysis_elements` lists in **B2B**. +- `POST /api/job/sync-analysis-results` + - Queries **Medipost** for latest private message that has a response and updates order analysis results from lab results data. +- `POST /api/job/sync-connected-online` + - TODO