Microservice API Analysis for Reporting
Work in Progress
This is a work in progress and we will remove this info box when complete.
The OpenLMIS reporting architecture requires an understanding of the service APIs in order to better understand which components of the system should be considered for ingestion. This document is a large scope based on the OpenLMIS v3.3 architecture and includes identifying each microservice, taking a snapshot of the API endpoint, identifying if data changes over time and identifying whether this endpoint needs to be considered for reporting ingestion. Further documentation is available on the components page.
What's included:
All endpoints that have a GET method
What's not included:
Auth Service - The auth service focuses on authenticating users. The reporting stack does not have a clear use case for this information.
Reference UI - The reference UI component does not have endpoints that can be consumed.
Report Service - The report service primarily focuses on building reports for consumption within the Reference UI. There is no clear use case for this information.
Notification Service - The notification service only presents an interface for other microservices to send notifications to users. There is no clear use case for this information.
Endpoints with POST, PUT or DELETE methods will not be included because the reporting stack only consumes data.
Fulfillment Service
Fulfillment Service provides RESTful API endpoints for orders, shipments, and proofs of delivery. It supports fulfillment within OpenLMIS as well as external fulfillment using external ERP warehouse systems.
Resource | Description | Frequency | Consider | Notes |
|---|---|---|---|---|
orderFileTemplates | Get the template of the order file | Rarely | No |
|
orderNumberConfigurations | Get the configuration for the order number | Rarely | No |
|
orders | Get an array of all orders. Minimal order details are presented | Frequently | Yes | This endpoint is used to get a list of orders so we can query each order by id |
orders/requestingFacilities | Return UUIDs of all the available, distinct requesting facilities. | Rarely | No | This may be interesting for streamlined reporting, but if we are consuming each order, we can derive this list in the reporting system. |
orders/{id} | Get chosen order with details | Frequently | Yes | This Entity changes over time as orders change. |
orders/{id}/export | Export order to CSV | Frequently | No |
|
orders/{id}/retry | Manually retry for transferring order file via FTP after updating or checking the FTP transfer properties. | Rarely | No |
|
orders/{id}/print | Print all order line items from an order to a csv or pdf file. | Frequently | No |
|
proofOfDeliveryTemplates | Download proof of delivery report template with jrxml format. | Rarely | No |
|
proofsOfDelivery | Get an array of proofs of delivery. | Frequently | Yes | This endpoint is used to get a list of all proofs of delivery so we can query each proof of delivery by id |
proofsOfDelivery/{id} | Get chosen proof of delivery | Frequently | Yes | This Entity changes over time as proofsOfDelivery change. |
proofsOfDelivery/{id}/auditLog | Returns all or part of the resource's audit log | Frequently | Yes | This will be valuable for seeing how a proof of delivery has changed over time. |
proofsOfDelivery/{id}/print | Print proof of delivery to a pdf file. | Rarely | No |
|
reports/templates/fulfillment | Get an array of all fulfillment report templates | Rarely | Yes | This gets a list of all report templates. This may be useful if we need to display any information to users in a similar way. |
reports/templates/fulfillment/{id} | Get a specific report template | Rarely | Yes |
|
shipmentDrafts | Get an array of all shipment drafts, which are shipment files that have not been submitted. | Frequently | No |
|
shipmentDrafts/{id} | Get a specific shipment draft | Frequently | No |
|
shipments | Get an array of all shipments | Frequently | Yes | This endpoint is used to get a list of all shipments so we can query each shipment by id |
shipments/{id} | Get a specific shipment | Frequently | Yes | This Entity changes over time as shipments change. |
transferProperties/search | Find transfer properties by facility id (transferProperties are used for FTP and local settings that help the system interact with a third party fulfillment service) | Rarely | No |
|
transferProperties/{id} | Get a specific transfer property | Rarely | No |
|
CCE Service
The Cold Chain Equipment (CCE) Service provides RESTful API endpoints for managing a CCE catalog, inventory (tracking equipment at locations) and functional status. The catalog can use the WHO PQS.
Resource | Description | Frequency | Consider | Notes |
|---|---|---|---|---|
catalogItems | Returns all CCE catalog items that are matching given request parameters by conjunction. | Infrequently | In | This endpoint is used to get a list of all catalog items so we can query each catalog item by id |
catalogItems/{id} | Get a specific CCE catalog item | Frequently | Yes | This Entity changes over time as the CCE item reports it's status |
cceAlerts | Get an array of all CCE alerts | Frequently | Yes |
|
Device | Get local resources (like inventory items) as FHIR Device instances. | Infrequently | Yes | We should consider this if we wish to consume FHIR resources compared to catalogItems/{id} |
inventoryItems | Get an array of all CCE inventory items | Infrequently | Yes | This endpoint is used to get a list of all inventory items so we can query each inventory item by id |
inventoryItems/{id} | Get a specific CCE inventory item | Frequently | Yes | This Entity changes over time as the inventory item is updated. |
cce | Get the version of the CCE endpoint | Infrequently | Rarely |
|
Reference Data Service
The Reference Data Service provides RESTful API endpoints that provide master lists of reference data including users, facilities, programs, products, schedules, and more. Most other OpenLMIS services depend on Reference Data Service. Many of these master lists can be loaded into OpenLMIS in bulk using the Reference Data Seed Tool or can be added and edited individually using the Reference Data Service APIs.
Resource | Description | Frequency | Consider | Ingested | Notes |
|---|---|---|---|---|---|
commodityTypes | Returns an array of all commodityTypes in the system | Infrequently | Yes | Yes | This endpoint is used to get a list of all commodityTypes so we can query each commodityType by id |
commodityTypes/{id} | Returns a specific commodity type | Infrequently | Yes | Not Needed | (Not currently in the API documentation) |
commodityTypes/{id}/auditLog | Returns all or part of the resource's audit log | Infrequently | Yes | Not Needed | This could help us parse changes to the commodityType |
commodityTypes/{id}/tradeItems | Returns an array of Trade Item UUIDs that may fulfill for the given commodityType | Frequently | Yes | Not Needed |
|
currencySettings | Returns the currency settings for OpenLMIS | Rarely | No |
|
|
facilities | Returns an array of facilities. | Infrequently | Yes | Yes |
|
facilities/minimal | Returns an array of facilities with id and name only | Infrequently | No | Not Needed |
|
facilities/supplying | Returns an array of facilities that are supplied by the same supervisory node | Infrequently | No |
| (This API endpoint has poor documentation and no schema) |
facilities/{id} | Returns a specific facility | Infrequently | Yes | Not Needed |
|
facilities/{id}/approvedProducts | Returns an array of full or non-full supply approved products for this facility | Rarely | Yes |
|
|
facilities/{id}/auditLog | Returns all or part of the resource's audit log | Infrequently | Yes | Not Needed | This could help us understand the changes to a particular facility over time |
facilityOperators | Returns an array of all facility operators | Rarely | Yes | Not Needed |
|
facilityOperators/{id} | Returns a specific facility operator | Rarely | Yes | Not Needed |
|
facilityOperators/{id}/auditLog | Returns all or part of the resource's audit log | Infrequently | Yes | Not Needed |
|
facilityTypeApprovedProducts | Returns an array of approved products by facility type | Infrequently | No |
|
|
facilityTypeApprovedProducts/{id} | Returns a specific facility type approved product | Infrequently | No |
|
|
facilityTypeApprovedProducts/{id}/auditLog | Returns all or part of the resource's audit log | Infrequently | No |
|
|
facilityTypes | Returns an array of facilityTypes | Rarely | Yes | Not Needed |
|
facilityTypes/{id} | Returns a specific facility type | Rarely | Yes | Not Needed |
|
facilityTypes/{id}/auditLog | Returns all or part of the resource's audit log | Rarely | Yes | Not Needed |
|
geographicLevels | Returns an array of geographicLevels | Rarely | Yes | Yes |
|
geographicLevels/{id} | Returns a specific geographic level | Rarely | Yes | Not Needed |
|
geographicLevels/{id}/auditLog | Returns all or part of the resource's audit log | Rarely | Yes | Not Needed |
|
idealStockAmounts | Returns an array of idealStockAmounts | Rarely | Yes | Yes |