#!/usr/bin/env bash # OMNL Fineract — Discovery: offices, clients, savings/FD/RD products and accounts. # Usage: run from repo root; sources omnl-fineract/.env or .env. Outputs JSON to stdout (or set OUT_DIR to write files). # Requires: curl, jq (optional, for pretty-print). set -euo pipefail REPO_ROOT="${REPO_ROOT:-$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)}" OUT_DIR="${OUT_DIR:-}" # Load OMNL env: prefer omnl-fineract/.env then root .env if [ -f "${REPO_ROOT}/omnl-fineract/.env" ]; then set +u source "${REPO_ROOT}/omnl-fineract/.env" 2>/dev/null || true set -u elif [ -f "${REPO_ROOT}/.env" ]; then set +u source "${REPO_ROOT}/.env" 2>/dev/null || true set -u fi BASE_URL="${OMNL_FINERACT_BASE_URL:-}" TENANT="${OMNL_FINERACT_TENANT:-omnl}" USER="${OMNL_FINERACT_USER:-app.omnl}" PASS="${OMNL_FINERACT_PASSWORD:-}" if [ -z "$BASE_URL" ] || [ -z "$PASS" ]; then echo "Set OMNL_FINERACT_BASE_URL and OMNL_FINERACT_PASSWORD (e.g. in omnl-fineract/.env)" >&2 exit 1 fi AUTH="${USER}:${PASS}" CURL_OPTS=(-s -S -H "Fineract-Platform-TenantId: ${TENANT}" -H "Content-Type: application/json" -u "$AUTH") api_get() { curl "${CURL_OPTS[@]}" "${BASE_URL}/${1}" } maybe_save() { local name="$1" local body="$2" if [ -n "$OUT_DIR" ] && [ -d "$OUT_DIR" ]; then echo "$body" > "${OUT_DIR}/${name}.json" fi echo "$body" } echo "=== Offices ===" >&2 OFFICES=$(api_get "offices") maybe_save "offices" "$OFFICES" echo "$OFFICES" | jq '.' 2>/dev/null || echo "$OFFICES" echo "=== Clients ===" >&2 CLIENTS=$(api_get "clients") maybe_save "clients" "$CLIENTS" echo "$CLIENTS" | jq '.' 2>/dev/null || echo "$CLIENTS" echo "=== Savings products ===" >&2 SAVINGS_PRODUCTS=$(api_get "savingsproducts") maybe_save "savingsproducts" "$SAVINGS_PRODUCTS" echo "$SAVINGS_PRODUCTS" | jq '.' 2>/dev/null || echo "$SAVINGS_PRODUCTS" echo "=== Savings accounts ===" >&2 SAVINGS_ACCOUNTS=$(api_get "savingsaccounts") maybe_save "savingsaccounts" "$SAVINGS_ACCOUNTS" echo "$SAVINGS_ACCOUNTS" | jq '.' 2>/dev/null || echo "$SAVINGS_ACCOUNTS" echo "=== Fixed deposit products ===" >&2 FD_PRODUCTS=$(api_get "fixeddepositproducts") maybe_save "fixeddepositproducts" "$FD_PRODUCTS" echo "$FD_PRODUCTS" | jq '.' 2>/dev/null || echo "$FD_PRODUCTS" echo "=== Recurring deposit products ===" >&2 RD_PRODUCTS=$(api_get "recurringdepositproducts") maybe_save "recurringdepositproducts" "$RD_PRODUCTS" echo "$RD_PRODUCTS" | jq '.' 2>/dev/null || echo "$RD_PRODUCTS" echo "Discovery done. Use OUT_DIR= to write JSON files." >&2