kra-etims-sdk
Version:
Kenya Revenue Authority (KRA) Electronic Tax Invoice Management System (eTims) API Integration SDK
95 lines (81 loc) • 2.86 kB
JavaScript
/**
* Configuration module for KRA eTims SDK
* Loads and validates environment variables
*/
require('dotenv').config();
// Determine which API base URL to use based on environment
const getApiBaseUrl = () => {
const nodeEnv = process.env.NODE_ENV || 'development';
if (nodeEnv === 'production') {
return process.env.PROD_API_BASE_URL || 'https://etims-api.kra.go.ke/etims-api';
}
return process.env.DEV_API_BASE_URL || 'https://etims-api-sbx.kra.go.ke';
};
const config = {
apiBaseUrl: getApiBaseUrl(),
apiUsername: process.env.API_USERNAME,
apiPassword: process.env.API_PASSWORD,
nodeEnv: process.env.NODE_ENV || 'development',
port: process.env.PORT || 5000,
// CORS configuration
cors: {
// Default allowed origins (can be overridden by environment variable)
// Format: comma-separated list of domains, e.g., "https://example.com,https://app.example.com"
// Use '*' to allow all origins (not recommended for production)
allowedOrigins: process.env.CORS_ALLOWED_ORIGINS ?
process.env.CORS_ALLOWED_ORIGINS.split(',') :
['http://localhost:3000', 'http://localhost:5000'],
methods: ['GET', 'POST', 'PUT', 'DELETE', 'OPTIONS'],
allowedHeaders: ['Content-Type', 'Authorization'],
exposedHeaders: ['Content-Range', 'X-Content-Range'],
credentials: true,
maxAge: 86400 // 24 hours
},
// API endpoints
endpoints: {
// Authentication
auth: {
generateToken: '/oauth2/v1/generate'
},
// OSCU Initialization
initialization: {
selectInitOsdcInfo: '/etims-oscu/v1/selectInitOsdcInfo'
},
// Basic Data Management
basicData: {
selectCodeList: '/etims-oscu/v1/selectCodeList',
selectItemClsList: '/etims-oscu/v1/selectItemClsList',
selectBhfList: '/etims-oscu/v1/selectBhfList',
selectNoticeList: '/etims-oscu/v1/selectNoticeList',
selectTaxpayerInfo: '/etims-oscu/v1/selectTaxpayerInfo',
selectCustomerList: '/etims-oscu/v1/selectCustomerList'
},
// Branch Information Management
branchInfo: {
// Add branch info endpoints
},
// Item Management
itemManagement: {
saveItem: '/etims-oscu/v1/saveItem'
},
// Sales Management
salesManagement: {
sendSalesTrns: '/etims-oscu/v1/sendSalesTrns',
selectSalesTrns: '/etims-oscu/v1/selectSalesTrns'
},
// Stock Information Management
stockManagement: {
selectMoveList: '/etims-oscu/v1/selectMoveList',
saveStockMaster: '/etims-oscu/v1/saveStockMaster'
},
// Purchase Management
purchaseManagement: {
selectPurchaseTrns: '/etims-oscu/v1/selectPurchaseTrns'
},
// Imports Item Management
importsManagement: {
selectImportItemList: '/etims-oscu/v1/selectImportItemList'
}
}
};
module.exports = config;