PharmaOne API overview
Partner-facing HTTP API for integrating external systems with PharmaOne Manager.
Configure credentials in Manager → Org Settings → Integrations (API keys + webhook subscriptions).
Architecture
sequenceDiagram
participant Partner
participant API as PharmaOne API
participant Backend as PharmaOne Backend
Partner->>API: POST /v2/.../auth/token + apikey
API->>Backend: Validate API key
Backend->>Partner: JWT (1h, scoped)
Partner->>API: GET /v2/.../orders + Bearer JWT
API->>Backend: Validate token + scopes
Backend->>Partner: JSON response
Partner->>API: POST /v1/.../order-requests + apikey
API->>Backend: Validate API key
Backend->>Partner: order request id
API versions
| Version |
Auth |
Use case |
| v2 |
JWT (from API key exchange) |
Full read/write integration with scopes |
| v1 order-requests |
API key only |
Simple order submission without JWT |
| ExternalTelemedicineConnector |
API key via shop URL |
Telemedicine partners — shop proxy only |
External Telemedicine Connector
For telemedicine and e-prescription platforms, org owners often issue credentials as shop URL + API key without exposing Manager routes.
| Method |
Path |
Auth |
POST |
https://{shop-domain}/api/v1/external-order |
apikey header |
The shop injects org_id and shop_id; the payload matches v1 order-requests. Full guide: External Telemedicine Connector.
Base URLs
| Environment |
Host |
| Production |
https://manager.prod.pharmaone.shop |
| Sandbox |
Provided by your pharmacy contact |
Complete route map
Authentication
| Method |
Path |
Auth |
Scope |
POST |
/api/v2/public/orgs/{orgId}/auth/token |
API key |
— |
v2 — JWT routes
| Method |
Path |
Scope |
GET |
/shops |
products.read |
GET |
/products?shop_id= |
products.read |
GET |
/products/{p1Id}?shop_id= |
products.read |
POST |
/products/add-to-inventory |
products.write |
PUT |
/products/{p1Id} |
products.write |
GET |
/inventory |
inventory.read |
POST |
/inventory/adjust |
inventory.write |
GET |
/inventory/{p1Id}/log |
inventory.read |
GET |
/inventory/{p1Id}/history |
inventory.read |
POST |
/shops/attach-product |
products.write |
POST |
/shops/detach-product |
products.write |
POST |
/shops/product-overrides |
products.write |
GET |
/reports/stats |
reports.read |
GET |
/reports/product-performance |
reports.read |
GET |
/reports/product-sales |
reports.read |
GET |
/reports/pharmaone |
reports.read |
GET |
/orders |
orders.read |
GET |
/orders/{orderId} |
orders.read |
POST |
/orders |
orders.write |
PUT |
/orders/{orderId} |
orders.write |
PATCH |
/orders/{orderId}/status |
orders.write |
POST |
/order-requests |
order_requests.write |
GET |
/prescriptions |
prescriptions.read |
GET |
/prescriptions/{id} |
prescriptions.read |
POST |
/prescriptions |
prescriptions.write |
All v2 paths are prefixed with /api/v2/public/orgs/{orgId}/.
v1 — API key only
| Method |
Path |
POST |
/api/v1/public/orgs/{orgId}/order-requests |
Next steps