Some checks failed
Deploy to Phoenix / deploy (push) Has been cancelled
- Add OMNL/CBK Indonesia submission and audit binder docs, manifests, attestations - Add scripts/omnl transaction-package pipeline, LEI/PvP helpers, jq/lib fixtures - Update entity master data, MASTER_INDEX, TODOS, dbis-rail docs and rulebook - Add proof_package/regulatory skeleton and transaction package zip + snapshot JSON - validate-omnl-rail workflow, forge-verification-proxy tweak, .gitignore hygiene - Bump smom-dbis-138 (cronos verify docs/scripts) and explorer-monorepo (SPA + env report) Made-with: Cursor
73 lines
2.7 KiB
Bash
Executable File
73 lines
2.7 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# OMNL Fineract — Create Office for Bank Kanaya (Indonesia), idempotent by externalId.
|
|
# See docs/04-configuration/mifos-omnl-central-bank/BANK_KANAYA_OFFICE_RUNBOOK.md
|
|
#
|
|
# Usage: from repo root.
|
|
# OPENING_DATE=2026-03-17 (default)
|
|
# DRY_RUN=1 — print only, no POST.
|
|
#
|
|
# Requires: curl, jq, OMNL_FINERACT_* in omnl-fineract/.env or .env
|
|
|
|
set -euo pipefail
|
|
REPO_ROOT="${REPO_ROOT:-$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)}"
|
|
DRY_RUN="${DRY_RUN:-0}"
|
|
OPENING_DATE="${OPENING_DATE:-2026-03-17}"
|
|
BANK_KANAYA_EXTERNAL_ID="${BANK_KANAYA_EXTERNAL_ID:-BANK-KANAYA-ID}"
|
|
BANK_KANAYA_OFFICE_NAME="${BANK_KANAYA_OFFICE_NAME:-Bank Kanaya}"
|
|
PARENT_OFFICE_ID="${PARENT_OFFICE_ID:-1}"
|
|
|
|
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" >&2
|
|
exit 1
|
|
fi
|
|
|
|
CURL_OPTS=(-s -S -H "Fineract-Platform-TenantId: ${TENANT}" -H "Content-Type: application/json" -u "${USER}:${PASS}")
|
|
|
|
offices_json=$(curl "${CURL_OPTS[@]}" "${BASE_URL}/offices" 2>/dev/null)
|
|
offices_norm=$(echo "$offices_json" | jq -c 'if type == "array" then . else (.pageItems // []) end' 2>/dev/null || echo "[]")
|
|
existing_id=$(echo "$offices_norm" | jq -r --arg e "$BANK_KANAYA_EXTERNAL_ID" '.[]? | select(.externalId == $e) | .id' 2>/dev/null | head -1)
|
|
|
|
if [ -n "$existing_id" ] && [ "$existing_id" != "null" ]; then
|
|
echo "Bank Kanaya office already exists: officeId=$existing_id (externalId=$BANK_KANAYA_EXTERNAL_ID)" >&2
|
|
echo "OFFICE_ID_BANK_KANAYA=$existing_id"
|
|
exit 0
|
|
fi
|
|
|
|
payload=$(jq -n \
|
|
--arg name "$BANK_KANAYA_OFFICE_NAME" \
|
|
--arg openingDate "$OPENING_DATE" \
|
|
--arg externalId "$BANK_KANAYA_EXTERNAL_ID" \
|
|
--argjson parentId "$PARENT_OFFICE_ID" \
|
|
'{ name: $name, parentId: $parentId, openingDate: $openingDate, externalId: $externalId, dateFormat: "yyyy-MM-dd", locale: "en" }')
|
|
|
|
if [ "$DRY_RUN" = "1" ]; then
|
|
echo "DRY_RUN: would POST /offices Bank Kanaya externalId=$BANK_KANAYA_EXTERNAL_ID" >&2
|
|
echo "Payload: $payload" >&2
|
|
exit 0
|
|
fi
|
|
|
|
res=$(curl "${CURL_OPTS[@]}" -X POST -d "$payload" "${BASE_URL}/offices" 2>/dev/null) || true
|
|
if echo "$res" | jq -e '.resourceId // .officeId' >/dev/null 2>&1; then
|
|
oid=$(echo "$res" | jq -r '.resourceId // .officeId')
|
|
echo "Created Bank Kanaya office: officeId=$oid" >&2
|
|
echo "OFFICE_ID_BANK_KANAYA=$oid"
|
|
else
|
|
echo "Failed to create office: $res" >&2
|
|
exit 1
|
|
fi
|