177 lines
5.1 KiB
JavaScript
177 lines
5.1 KiB
JavaScript
const fs = require('fs');
|
|
|
|
const collection = {
|
|
info: {
|
|
name: "Pharmacy Core API",
|
|
description: "API collection for Pharmacy Core API",
|
|
schema: "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
|
|
},
|
|
variable: [
|
|
{
|
|
key: "baseUrl",
|
|
value: "http://localhost:8080",
|
|
type: "string"
|
|
},
|
|
{
|
|
key: "token",
|
|
value: "",
|
|
type: "string"
|
|
}
|
|
],
|
|
auth: {
|
|
type: "bearer",
|
|
bearer: [
|
|
{
|
|
key: "token",
|
|
value: "{{token}}",
|
|
type: "string"
|
|
}
|
|
]
|
|
},
|
|
item: []
|
|
};
|
|
|
|
function createFolder(name, endpoints, prefix) {
|
|
const items = endpoints.map(ep => {
|
|
const method = ep.method.toUpperCase();
|
|
const fullPath = (prefix + ep.path).replace(/\/$/, "");
|
|
const urlParts = fullPath.split('/').filter(p => p !== '');
|
|
|
|
const request = {
|
|
method: method,
|
|
header: [],
|
|
url: {
|
|
raw: `{{baseUrl}}${fullPath}`,
|
|
host: ["{{baseUrl}}"],
|
|
path: urlParts
|
|
}
|
|
};
|
|
|
|
if (['POST', 'PUT', 'PATCH'].includes(method)) {
|
|
request.body = {
|
|
mode: "raw",
|
|
raw: "{}",
|
|
options: {
|
|
raw: {
|
|
language: "json"
|
|
}
|
|
}
|
|
};
|
|
}
|
|
|
|
return {
|
|
name: ep.name || `${method} ${ep.path}`,
|
|
request: request
|
|
};
|
|
});
|
|
|
|
return {
|
|
name: name,
|
|
item: items
|
|
};
|
|
}
|
|
|
|
const modules = [
|
|
{
|
|
name: "Auth / Identity",
|
|
prefix: "/v1/auth",
|
|
endpoints: [
|
|
{ method: "GET", path: "/me", name: "Get Current User" },
|
|
{ method: "PUT", path: "/me", name: "Update Current User" },
|
|
{ method: "POST", path: "/register", name: "Register" },
|
|
{ method: "POST", path: "/login", name: "Login" },
|
|
{ method: "POST", path: "/logout", name: "Logout" },
|
|
{ method: "POST", path: "/token", name: "Refresh Token" }
|
|
]
|
|
},
|
|
{
|
|
name: "Catalogue",
|
|
prefix: "/v1",
|
|
endpoints: [
|
|
{ method: "GET", path: "/drugs", name: "Get Drugs" },
|
|
{ method: "POST", path: "/drugs", name: "Create Drug" },
|
|
{ method: "GET", path: "/drugs/search", name: "Search Drugs" },
|
|
{ method: "GET", path: "/products/:product_id/batches", name: "Get Product Batches" }
|
|
]
|
|
},
|
|
{
|
|
name: "Inventory",
|
|
prefix: "/v1/inventory",
|
|
endpoints: [
|
|
{ method: "POST", path: "/grn", name: "Create GRN" },
|
|
{ method: "GET", path: "/expiring", name: "Get Expiring Stock" },
|
|
{ method: "GET", path: "/low-stock", name: "Get Low Stock" },
|
|
{ method: "POST", path: "/adjustments", name: "Stock Adjustment" },
|
|
{ method: "GET", path: "/recall/:batch_no", name: "Recall Batch" }
|
|
]
|
|
},
|
|
{
|
|
name: "Dispensing (Orders)",
|
|
prefix: "/v1/orders",
|
|
endpoints: [
|
|
{ method: "GET", path: "/history", name: "Get Order History" },
|
|
{ method: "GET", path: "/h1-register", name: "Get H1 Register" },
|
|
{ method: "GET", path: "/:id/invoice/pdf", name: "Get Invoice PDF" },
|
|
{ method: "POST", path: "/", name: "Create Order" },
|
|
{ method: "PATCH", path: "/:id/items", name: "Update Order Items" },
|
|
{ method: "POST", path: "/:id/precheck", name: "Precheck Order" },
|
|
{ method: "POST", path: "/:id/dispense", name: "Dispense Order" }
|
|
]
|
|
},
|
|
{
|
|
name: "Audit",
|
|
prefix: "/v1/audit",
|
|
endpoints: [
|
|
{ method: "GET", path: "/ai-calls", name: "Get AI Calls" },
|
|
{ method: "GET", path: "/overrides", name: "Get Overrides" },
|
|
{ method: "GET", path: "/h1-register", name: "Get H1 Register Audit" },
|
|
{ method: "GET", path: "/sales-register", name: "Get Sales Register" },
|
|
{ method: "GET", path: "/dashboard-metrics", name: "Get Dashboard Metrics" }
|
|
]
|
|
},
|
|
{
|
|
name: "Prescription",
|
|
prefix: "/v1/rx",
|
|
endpoints: [
|
|
{ method: "POST", path: "/", name: "Upload Prescription" },
|
|
{ method: "GET", path: "/", name: "Get Prescriptions" },
|
|
{ method: "GET", path: "/:id", name: "Get Prescription by ID" },
|
|
{ method: "POST", path: "/:id/confirm", name: "Confirm Prescription" }
|
|
]
|
|
},
|
|
{
|
|
name: "AI",
|
|
prefix: "/v1/ai",
|
|
endpoints: [
|
|
{ method: "POST", path: "/voice", name: "Voice AI" }
|
|
]
|
|
},
|
|
{
|
|
name: "Integration",
|
|
prefix: "/v1/integration",
|
|
endpoints: [
|
|
{ method: "POST", path: "/hospital/patient-sync", name: "Sync Hospital Patient" },
|
|
{ method: "GET", path: "/hospital/patients", name: "Get Hospital Patients" },
|
|
{ method: "POST", path: "/telegaruda/prescription", name: "Receive Telegaruda Rx" },
|
|
{ method: "GET", path: "/telegaruda/patient/:patientId", name: "Fetch Telegaruda Patient" },
|
|
{ method: "GET", path: "/hospital/prescriptions", name: "Get Hospital Prescriptions" }
|
|
]
|
|
},
|
|
{
|
|
name: "Upload",
|
|
prefix: "/v1/upload",
|
|
endpoints: [
|
|
{ method: "POST", path: "/", name: "Upload File" },
|
|
{ method: "GET", path: "/presigned", name: "Get Presigned URL" }
|
|
]
|
|
}
|
|
];
|
|
|
|
modules.forEach(mod => {
|
|
collection.item.push(createFolder(mod.name, mod.endpoints, mod.prefix));
|
|
});
|
|
|
|
// Write to file
|
|
fs.writeFileSync('postman_collection.json', JSON.stringify(collection, null, 2));
|
|
console.log('Collection generated at postman_collection.json');
|