# GO JOE Pharmacy API - [Quickstart](https://developers.gojoe.de/guides/quickstart.md): Get your ERP from zero to an accepted test order. - [Webhooks](https://developers.gojoe.de/guides/webhooks.md): Signed events for new orders, prescriptions and stock, and how to verify them. - [Stock and prices](https://developers.gojoe.de/guides/inventory.md): Push stock and prices from your ERP to the GO JOE shop. - [Going live](https://developers.gojoe.de/guides/go-live.md): What to check before switching to a live key. - [Who am I](https://developers.gojoe.de/api-reference/account/who-am-i.md): The integration account this key belongs to and the pharmacies it can act for, with the scopes per pharmacy. Use it as a connection test. - [List orders](https://developers.gojoe.de/api-reference/orders/list-orders.md): Orders of all pharmacies this key can read, ordered by last change (oldest first). Poll with `updated_since`, or page with `cursor`. - [Get an order](https://developers.gojoe.de/api-reference/orders/get-an-order.md): The full order. Supports `If-None-Match` with the returned `ETag`. - [Download the prescription](https://developers.gojoe.de/api-reference/orders/download-the-prescription.md): Redirects (302) to a download of the current prescription PDF that is valid for 60 seconds: the Vorab-Rezept until the QES exists, then the signed prescription. `X-Prescription-Version` changes whenever the document changes. Every download is logged. Needs the `prescriptions:read` scope. - [Accept an order](https://developers.gojoe.de/api-reference/orders/accept-an-order.md): Confirms your ERP has the order. Send your own order number as `erp_reference`. Safe to repeat: the same `erp_reference` again returns 200, a different one returns 409. If an order is not accepted in time while the pharmacy is open, GO JOE also sends the pharmacy the order by e-mail, so nothing gets… - [Report progress](https://developers.gojoe.de/api-reference/orders/report-progress.md): | Report | When | Notes | |---|---|---| | `packed` | Order is packed | For `fulfilment.courier = gojoe` (express) this books the GO JOE courier. | | `ready_for_pickup` | Waiting at the counter | Pick-up orders, or express orders the patient collects in person. | | `out_for_delivery` | Handed to your… - [Reject an order](https://developers.gojoe.de/api-reference/orders/reject-an-order.md): You cannot fulfil the order. GO JOE's team takes over (refund or another pharmacy). The order status does not change automatically; do not dispense a rejected order. - [Event feed](https://developers.gojoe.de/api-reference/events/event-feed.md): Every event GO JOE sent (or would have sent) as a webhook, in order, for 30 days. Store `next_cursor` and pass it as `cursor` on the next call, also when `data` is empty. Events become visible a few seconds after they happen. Order events need the `orders:read` scope for the pharmacy, inventory even… - [Push stock and prices](https://developers.gojoe.de/api-reference/inventory/push-stock-and-prices.md): Up to 1,000 articles per call, identified by your own article number (`pharmacy_sku`). GO JOE maps each number to its product once; until then the article is reported `unmapped` and waits for GO JOE's team. A push never creates products. - [Update one article](https://developers.gojoe.de/api-reference/inventory/update-one-article.md): Real-time change for one article, e.g. stock after a counter sale. Fields you leave out keep their last pushed value (`name` and `available` are needed the first time an article is sent). - [Your articles as GO JOE holds them](https://developers.gojoe.de/api-reference/inventory/your-articles-as-go-joe-holds-them.md): Every article you pushed for a pharmacy, what you last sent, whether GO JOE has mapped it, and what the shop sells right now. Use it to check your pushes and to see which numbers still wait for mapping. Sorted by `pharmacy_sku` and paged: follow `next_cursor` until `has_more` is false. - [Event notification](https://developers.gojoe.de/api-reference/webhooks/event-notification.md): Sent to your account's webhook URL for every event. Signed per the [Standard Webhooks](https://www.standardwebhooks.com) spec: verify `webhook-signature` with your `whsec_…` secret over `{webhook-id}.{webhook-timestamp}.{body}` (HMAC-SHA256, base64), and reject timestamps older than 5 minutes. Answe… ## OpenAPI Specs - [openapi](/openapi.yaml) This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.