diff --git a/.github/workflows/chart-lint-publish.yml b/.github/workflows/chart-lint-publish.yml new file mode 100644 index 0000000..e7324d3 --- /dev/null +++ b/.github/workflows/chart-lint-publish.yml @@ -0,0 +1,59 @@ + +name: Validate / Publish helm charts + +on: + release: + types: [published] + pull_request: + types: [opened, reopened, synchronize] + paths: + - 'github-activity-tracker/helm/**' + workflow_dispatch: + inputs: + IGNORE_CHARTS: + description: 'Provide list of charts to be ignored separated by pipe(|)' + required: false + default: '' + type: string + CHART_PUBLISH: + description: 'Chart publishing to gh-pages branch' + required: false + default: 'NO' + type: string + options: + - YES + - NO + INCLUDE_ALL_CHARTS: + description: 'Include all charts for Linting/Publishing (YES/NO)' + required: false + default: 'NO' + type: string + options: + - YES + - NO + push: + branches: + - '!release-branch' + - master + - develop + paths: + - 'github-activity-tracker/helm/**' + +jobs: + chart-lint-publish: + uses: mosip/kattu/.github/workflows/chart-lint-publish.yml@master + with: + CHARTS_DIR: ./github-activity-tracker/helm + CHARTS_URL: https://mosip.github.io/mosip-helm + REPOSITORY: mosip-helm + BRANCH: gh-pages + INCLUDE_ALL_CHARTS: "${{ inputs.INCLUDE_ALL_CHARTS || 'NO' }}" + IGNORE_CHARTS: "${{ inputs.IGNORE_CHARTS ||'redis' }}" + CHART_PUBLISH: "${{ inputs.CHART_PUBLISH || 'YES' }}" + LINTING_CHART_SCHEMA_YAML_URL: "https://raw.githubusercontent.com/mosip/kattu/master/.github/helm-lint-configs/chart-schema.yaml" + LINTING_LINTCONF_YAML_URL: "https://raw.githubusercontent.com/mosip/kattu/master/.github/helm-lint-configs/lintconf.yaml" + LINTING_CHART_TESTING_CONFIG_YAML_URL: "https://raw.githubusercontent.com/mosip/kattu/master/.github/helm-lint-configs/chart-testing-config.yaml" + LINTING_HEALTH_CHECK_SCHEMA_YAML_URL: "https://raw.githubusercontent.com/mosip/kattu/master/.github/helm-lint-configs/health-check-schema.yaml" + secrets: + TOKEN: ${{ secrets.ACTION_PAT }} + SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK }} diff --git a/.github/workflows/mosip-nexus-docker-publish.yml b/.github/workflows/mosip-nexus-docker-publish.yml new file mode 100644 index 0000000..49fbe29 --- /dev/null +++ b/.github/workflows/mosip-nexus-docker-publish.yml @@ -0,0 +1,45 @@ +name: MosipNexus — Build and Publish Docker Image + +on: + push: + branches: + - master + - develop + paths: + - "MosipNexus/**" + +jobs: + build-and-push: + runs-on: ubuntu-latest + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Log in to Docker Hub + uses: docker/login-action@v3 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + + - name: Compute image tags + id: tags + run: | + SHORT_SHA=$(echo "${{ github.sha }}" | cut -c1-7) + if [ "${{ github.ref_name }}" = "master" ]; then + echo "tags=${{ secrets.DOCKERHUB_USERNAME }}/mosip-nexus:latest,${{ secrets.DOCKERHUB_USERNAME }}/mosip-nexus:${SHORT_SHA}" >> "$GITHUB_OUTPUT" + else + echo "tags=${{ secrets.DOCKERHUB_USERNAME }}/mosip-nexus:develop,${{ secrets.DOCKERHUB_USERNAME }}/mosip-nexus:develop-${SHORT_SHA}" >> "$GITHUB_OUTPUT" + fi + + - name: Build and push + uses: docker/build-push-action@v6 + with: + context: ./MosipNexus + push: true + tags: ${{ steps.tags.outputs.tags }} + cache-from: type=gha + cache-to: type=gha,mode=max diff --git a/.github/workflows/push-trigger.yml b/.github/workflows/push-trigger.yml new file mode 100644 index 0000000..c728057 --- /dev/null +++ b/.github/workflows/push-trigger.yml @@ -0,0 +1,91 @@ +name: Maven Package upon a push + +on: + release: + types: [published] + pull_request: + types: [opened, reopened, synchronize] + workflow_dispatch: + inputs: + message: + description: 'Message for manually triggering' + required: false + default: 'Triggered for Updates' + type: string + push: + branches: + - '!release-branch' + - master + - 1.* + - develop + - MOSIP* + - release* + +jobs: + build-github-activity-tracker-service: + uses: mosip/kattu/.github/workflows/npm-build.yml@develop + with: + SERVICE_LOCATION: ./github-activity-tracker/backend + BUILD_ARTIFACT: github-activity-tracker-service + NPM_BUILD_TYPE: 'BOB' + NODE_VERSION: "18.x" + ZIP_DIR: "dist" + secrets: + SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK }} + + build-github-activity-tracker-ui: + uses: mosip/kattu/.github/workflows/npm-build.yml@develop + with: + SERVICE_LOCATION: ./github-activity-tracker/frontend + BUILD_ARTIFACT: github-activity-tracker-ui + NPM_BUILD_TYPE: 'BOB' + NODE_VERSION: "18.x" + ZIP_DIR: "dist" + secrets: + SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK }} + + build-dockers-github-activity-tracker-ui: + needs: build-github-activity-tracker-ui + strategy: + matrix: + include: + - SERVICE_LOCATION: ./github-activity-tracker/frontend + SERVICE_NAME: 'github-activity-tracker-ui' + NPM_BUILD: true + BUILD_ARTIFACT: 'github-activity-tracker-ui' + fail-fast: false + name: ${{ matrix.SERVICE_NAME }} + uses: mosip/kattu/.github/workflows/docker-build.yml@master-java21 + with: + SERVICE_LOCATION: ${{ matrix.SERVICE_LOCATION }} + SERVICE_NAME: ${{ matrix.SERVICE_NAME }} + NPM_BUILD: ${{ matrix.NPM_BUILD }} + BUILD_ARTIFACT: ${{ matrix.BUILD_ARTIFACT }} + secrets: + DEV_NAMESPACE_DOCKER_HUB: ${{ secrets.DEV_NAMESPACE_DOCKER_HUB }} + ACTOR_DOCKER_HUB: ${{ secrets.ACTOR_DOCKER_HUB }} + RELEASE_DOCKER_HUB: ${{ secrets.RELEASE_DOCKER_HUB }} + SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK }} + + build-dockers-github-activity-tracker-service: + needs: build-github-activity-tracker-service + strategy: + matrix: + include: + - SERVICE_LOCATION: './github-activity-tracker/backend' + SERVICE_NAME: 'github-activity-tracker-service' + NPM_BUILD: true + BUILD_ARTIFACT: 'github-activity-tracker-service' + fail-fast: false + name: ${{ matrix.SERVICE_NAME }} + uses: mosip/kattu/.github/workflows/docker-build.yml@master-java21 + with: + SERVICE_LOCATION: ${{ matrix.SERVICE_LOCATION }} + SERVICE_NAME: ${{ matrix.SERVICE_NAME }} + NPM_BUILD: ${{ matrix.NPM_BUILD }} + BUILD_ARTIFACT: ${{ matrix.BUILD_ARTIFACT }} + secrets: + DEV_NAMESPACE_DOCKER_HUB: ${{ secrets.DEV_NAMESPACE_DOCKER_HUB }} + ACTOR_DOCKER_HUB: ${{ secrets.ACTOR_DOCKER_HUB }} + RELEASE_DOCKER_HUB: ${{ secrets.RELEASE_DOCKER_HUB }} + SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK }} diff --git a/MosipNexus/.dockerignore b/MosipNexus/.dockerignore new file mode 100644 index 0000000..94e13eb --- /dev/null +++ b/MosipNexus/.dockerignore @@ -0,0 +1,40 @@ +# Secrets — never bake into image +.env +.env.* + +# Crawled data files — large (100–400 MB) and not needed by API/UI pods. +# The updater CronJob writes fresh data to a mounted PVC at runtime. +data/ + +# Confluence data — contains internal credentials, must never be in image +data/mosip_confluence.json + +# Vector store — pgvector runs externally; no local store needed +chroma_db/ + +# Python artifacts +.venv/ +__pycache__/ +*.pyc +*.pyo +*.pyd + +# VCS +.git/ +.gitignore + +# Dev/test +tests/ +*.test.py + +# IDE +.vscode/ +.idea/ + +# Docs (not needed at runtime) +docs/*.pptx +docs/*.docx + +# OS +.DS_Store +Thumbs.db diff --git a/MosipNexus/.env.example b/MosipNexus/.env.example new file mode 100644 index 0000000..42b6a89 --- /dev/null +++ b/MosipNexus/.env.example @@ -0,0 +1,41 @@ +# ── Required ─────────────────────────────────────────────────────────────────── +GROQ_API_KEY=YOUR_GROQ_API_KEY # https://console.groq.com (free tier) + +# ── Optional: HuggingFace token (avoids rate-limiting on model downloads) ────── +HF_TOKEN=hf_your_token_here + +# ── Optional: LangSmith observability (free tier — 5k traces/month) ──────────── +# Sign up at https://smith.langchain.com, create a project named "mosip-nexus" +LANGCHAIN_TRACING_V2=true +LANGCHAIN_API_KEY=lsv2_pt_your_key_here +LANGCHAIN_PROJECT=mosip-nexus + +# ── Optional: GitHub crawler (strongly recommended — avoids 60 req/hr limit) ─── +# Create at: github.com → Settings → Developer Settings → Personal Access Tokens → Classic +# No special scopes needed (MOSIP repos are public). +GITHUB_TOKEN=ghp_your_token_here + +# ── Optional: Confluence crawler ──────────────────────────────────────────────── +# Generate Atlassian API token at: id.atlassian.com/manage-profile/security/api-tokens +CONFLUENCE_URL=https://yourorg.atlassian.net/wiki +CONFLUENCE_USER=your_email@example.com +CONFLUENCE_TOKEN=your_atlassian_api_token +CONFLUENCE_SPACE_KEYS=MOSIP,MOSIPDEV # comma-separated space keys + +# ── Optional: Jira crawler ────────────────────────────────────────────────────── +JIRA_URL=https://yourorg.atlassian.net +JIRA_USER=your_email@example.com +JIRA_TOKEN=your_atlassian_api_token +JIRA_PROJECT_KEYS=MOSIP,MISP # comma-separated project keys + +# ── Optional: Email notifications ─────────────────────────────────────────────── +# Gmail: generate an App Password at Google Account → Security → App passwords +# Port 465 = SSL | Port 587 = STARTTLS (default for most providers) +SMTP_HOST=smtp.gmail.com +SMTP_PORT=587 +SMTP_USER=your_gmail@gmail.com +SMTP_PASSWORD=your_app_password_here +NOTIFY_EMAIL=mosip-team@example.com # recipient address + +YOUTUBE_API_KEY=AIzaSyDrb2q9RxYKHH3nzG9j-X_Ot5-VAYG_5n4 +YOUTUBE_CHANNEL_HANDLE=mosip16 \ No newline at end of file diff --git a/MosipNexus/.gitignore b/MosipNexus/.gitignore new file mode 100644 index 0000000..39480cb --- /dev/null +++ b/MosipNexus/.gitignore @@ -0,0 +1,43 @@ +# ── Secrets ─────────────────────────────────────────────────────────────────── +.env +.env.* +!.env.example + +# ── Python ──────────────────────────────────────────────────────────────────── +__pycache__/ +*.py[cod] +*.pyo +*.pyd + +# ── Vector database (generated — rebuild with ingestion/store.py) ───────────── +chroma_db/ + +# ── Crawled data — JSON files ARE committed so cloners skip the 10-hour crawl +# Exceptions: crawl_state (runtime), confluence and jira data (may contain internal secrets) +data/crawl_state.json +data/mosip_confluence.json +data/mosip_jira.json + +# ── pg_dump / zip exports — large binaries, not for git ────────────────────── +nexus_vectors.dump +nexus_vectors.zip + +# ── Virtual environment (managed at monorepo root) ──────────────────────────── +.venv/ + +# ── IDE ─────────────────────────────────────────────────────────────────────── +.vscode/ +.idea/ + +# ── Logs ────────────────────────────────────────────────────────────────────── +*.log +logs/ + +# ── Test cache ──────────────────────────────────────────────────────────────── +.pytest_cache/ +.coverage +htmlcov/ + +# ── OS ──────────────────────────────────────────────────────────────────────── +.DS_Store +Thumbs.db diff --git a/MosipNexus/.python-version b/MosipNexus/.python-version new file mode 100644 index 0000000..24ee5b1 --- /dev/null +++ b/MosipNexus/.python-version @@ -0,0 +1 @@ +3.13 diff --git a/MosipNexus/.streamlit/config.toml b/MosipNexus/.streamlit/config.toml new file mode 100644 index 0000000..352fc59 --- /dev/null +++ b/MosipNexus/.streamlit/config.toml @@ -0,0 +1,8 @@ +[server] +headless = true +port = 8501 +enableCORS = false +enableXsrfProtection = false + +[browser] +gatherUsageStats = false diff --git a/MosipNexus/Dockerfile b/MosipNexus/Dockerfile new file mode 100644 index 0000000..125a811 --- /dev/null +++ b/MosipNexus/Dockerfile @@ -0,0 +1,38 @@ +FROM python:3.13-slim + +# libgomp1 — required by PyTorch (sentence-transformers) +# curl — used by K8s liveness probes +RUN apt-get update && apt-get install -y --no-install-recommends \ + libgomp1 \ + curl \ + && rm -rf /var/lib/apt/lists/* + +# Install uv (Python package manager) +RUN pip install --no-cache-dir uv + +WORKDIR /app/MosipNexus + +# --- Dependency layer (cached unless pyproject.toml changes) --- +COPY pyproject.toml ./ +# Generate uv.lock if not present; use it if it is (reproducible builds). +# Run `uv lock && git add uv.lock` before building to pin exact versions. +RUN uv sync + +# --- Application source (data/ and secrets excluded by .dockerignore) --- +COPY . . + +# --- Pre-cache the HuggingFace embedding model (~1.1 GB) --- +# This bakes the model into the image so pods start with zero download delay. +# The model is stored at /root/.cache/huggingface inside the image. +RUN uv run python -c \ + "from langchain_huggingface import HuggingFaceEmbeddings; \ + HuggingFaceEmbeddings(model_name='intfloat/multilingual-e5-base'); \ + print('HF model cached.')" + +# PYTHONPATH ensures imports resolve from within /app/MosipNexus +ENV PYTHONPATH=/app/MosipNexus + +EXPOSE 8000 8501 + +# Default: API server. K8s deployment-ui.yaml overrides this with streamlit. +CMD ["uv", "run", "uvicorn", "api.main:app", "--host", "0.0.0.0", "--port", "8000"] diff --git a/MosipNexus/README.md b/MosipNexus/README.md new file mode 100644 index 0000000..f5d08af --- /dev/null +++ b/MosipNexus/README.md @@ -0,0 +1,395 @@ +# MOSIP Nexus + +A production-grade RAG chatbot that answers MOSIP questions using **five knowledge sources**: official documentation, community forum Q&A, GitHub issues, Confluence spaces, and MOSIP source code — with multilingual support, chat memory, source attribution, and confidence scoring. + +## Documentation + +| Document | Audience | Location | +| --- | --- | --- | +| [Developer Guide](docs/MOSIP_Nexus_Developer_Guide.docx) | Developers (zero GenAI background) | `docs/MOSIP_Nexus_Developer_Guide.docx` | +| [Business Presentation](docs/MOSIP_Nexus_Presentation.pptx) | Stakeholders, managers, org leaders | `docs/MOSIP_Nexus_Presentation.pptx` | +| [Rancher Deployment Guide](docs/MOSIP_Nexus_Rancher_Deployment_Guide.md) | Infrastructure / DevOps team | `docs/MOSIP_Nexus_Rancher_Deployment_Guide.md` | + +> To regenerate these files after changes: `uv run python docs/generate_docs.py` + +## Knowledge Base + +| Source | Chunks | Description | +| --- | --- | --- | +| MOSIP Docs | 6,094 | All 449 pages from docs.mosip.io/1.2.0 | +| Community Forum | 11,236 | Q&A threads from community.mosip.io (accepted answers prioritised) | +| GitHub Issues | 2,513 | Closed issues from 86 MOSIP org repos | +| Confluence | 12,264 | QT, ENGG, and PMS spaces | +| Source Code | ~38,000 | Java/YAML/properties from all 86 repos (priority: error constants, service impls, controllers) | + +> **Note**: `data/mosip_confluence.json` is not committed to this repository as Confluence pages +> may contain internal credentials and sensitive content. Anyone cloning will need to run +> `crawler/confluence_crawler.py` themselves using their own Confluence API token to index +> Confluence data. All other data files (`mosip_docs.json`, `mosip_community.json`, +> `mosip_github.json`, `mosip_code.json`) are committed and ready to use without re-crawling. + +## Features + +| Feature | Details | +| --- | --- | +| **Five knowledge sources** | Docs + Community + GitHub + Confluence + Code — all searchable in one query | +| **Multilingual** | Ask in any language (Tamil, Hindi, French, Arabic, …); replies in the same language (≥95% confidence) | +| **Chat memory** | Follow-up questions retain full conversation context | +| **Source attribution** | Every answer cites exact doc pages, forum threads, GitHub issues, or Confluence pages | +| **Duplicate detection** | Surfaces similar community threads before generating a new answer | +| **Community intelligence** | `[ACCEPTED ANSWER]` posts and high-voted replies ranked higher | +| **Confidence scoring** | 🟢 High / 🟡 Medium / 🔴 Low based on retrieval cosine distance | +| **No hallucination guard** | LLM instructed to return "not available" when context is irrelevant | +| **BYOK — Bring Your Own Key** | Users supply their own Groq / Anthropic / OpenAI API key via the Settings page. No server-side LLM cost for user queries. | +| **Claude Desktop / MCP** | Connect Claude Desktop directly — it calls `search_mosip` for retrieval and uses your own Claude subscription for the LLM. Zero API cost to the app owner. | +| **Query intelligence** | Automatic query classification: error-code format, environment-debug format, code-class format, or general. Each gets a specialised system prompt and retrieval strategy. | +| **Hybrid retrieval** | SQL exact-match for error constants + sibling co-retrieval from the same source file + MMR vector search — error code answers always include the defining constant. | +| **Production / demo separation** | Demo, test, mock, and sample packages are ranked below production code so the LLM cites real implementations, not sample apps. | +| **Incremental updates** | `run_update.py` re-crawls only changed/new content across docs, community, GitHub, Confluence, and Jira | +| **LangSmith observability** | Full trace visibility — zero code changes, just env vars | + +## Tech Stack + +| Component | Choice | +| --- | --- | +| Framework | LangChain 1.x (LCEL) | +| LLM | **BYOK** — Groq / Anthropic / OpenAI (user-supplied key via Settings page); Groq server key for ingestion pipeline only | +| MCP | `mcp` + FastMCP — SSE transport for Claude Desktop integration (port 8002) | +| Embeddings | HuggingFace `intfloat/multilingual-e5-base` (768-dim, 100+ languages) | +| Vector DB | pgvector (PostgreSQL extension — ACID, SQL filtering, pg_dump backups) | +| Crawlers | `requests` + `BeautifulSoup` + Discourse API + GitHub REST API + Atlassian REST API | +| Observability | LangSmith (optional, free tier) | +| UI | Streamlit multi-page (chat + settings) | +| Package manager | `uv` | +| Python | 3.13 | + +## Project Structure + +```text +MosipNexus/ +├── config/ +│ └── settings.py # All constants, env bindings, and tuneable params +├── crawler/ +│ ├── docs_crawler.py # Sitemap crawler → mosip_docs.json (tables converted to prose) +│ ├── community_crawler.py # Discourse API crawler → mosip_community.json +│ ├── github_crawler.py # GitHub Issues API (auto-discovers 86 repos) → mosip_github.json +│ ├── code_crawler.py # GitHub Tree API for source files → mosip_code.json +│ ├── confluence_crawler.py # Atlassian REST API → mosip_confluence.json (tables converted to prose) +│ ├── jira_crawler.py # Atlassian Jira API → mosip_jira.json (optional) +│ ├── utils.py # Shared crawler utilities (table_to_prose) +│ └── state.py # Crawl state persistence for incremental updates +├── ingestion/ +│ └── store.py # Chunk, embed, upsert into pgvector collections +├── retrieval/ +│ ├── retriever.py # Hybrid retrieval: MMR + SQL exact-match + sibling co-retrieval + production/demo separation +│ └── dedup.py # Duplicate question detection +├── chain/ +│ ├── query_engine.py # LCEL RAG chain — BYOK multi-provider, query classification, specialised system prompts +│ └── summarizer.py # Long thread summarisation +├── memory/ +│ └── session.py # Session-level chat history +├── notifications/ +│ └── email_notifier.py # Optional email alerts for unanswerable questions +├── mcp_server/ +│ └── server.py # FastMCP server — exposes search_mosip + list_knowledge_sources tools (port 8002) +├── app/ +│ ├── app.py # Streamlit chat UI +│ └── pages/ +│ └── settings.py # Settings page — LLM provider, API key (BYOK), model selector +├── run_update.py # Incremental update runner +├── data/ # Crawled JSON files (committed — skips re-crawl for new cloners) +└── .env # Local secrets (gitignored) +``` + +## Setup + +### 1. Set up PostgreSQL with pgvector + +PostgreSQL must be running with the `pgvector` extension installed before ingestion. + +```sql +-- Run as a PostgreSQL superuser +CREATE DATABASE mosipnexus; +CREATE USER mosip WITH PASSWORD 'your_password'; +GRANT ALL PRIVILEGES ON DATABASE mosipnexus TO mosip; +\c mosipnexus +CREATE EXTENSION IF NOT EXISTS vector; +GRANT ALL ON SCHEMA public TO mosip; +``` + +On Rancher/Kubernetes, use the `pgvector/pgvector:pg16` Docker image — it ships with the extension pre-installed. + +### 2. Install dependencies + +From the `MosipNexus/` directory: + +```powershell +cd MosipNexus +uv sync +``` + +### 3. Configure environment + +Create `MosipNexus/.env` with the following variables: + +```env +# Required — PostgreSQL connection string +PG_CONNECTION="postgresql+psycopg://mosip:your_password@localhost:5432/mosipnexus" + +# Optional — used only by the ingestion pipeline (thread summariser). +# NOT used for user queries — users bring their own key via the Settings page (BYOK) +# or connect via Claude Desktop + MCP (no API key needed at all). +GROQ_API_KEY="your_groq_api_key" # free at console.groq.com + +# Optional — avoids HuggingFace rate limits on model downloads +HF_TOKEN="your_hf_token" + +# Optional — LangSmith observability (free at smith.langchain.com) +LANGCHAIN_TRACING_V2=true +LANGCHAIN_API_KEY="" +LANGCHAIN_PROJECT=mosip-nexus + +# Optional — GitHub (authenticates for 5,000 req/hr vs 60 unauthenticated) +GITHUB_TOKEN="" + +# Optional — Confluence (Atlassian API token from id.atlassian.com) +CONFLUENCE_URL=https://your-org.atlassian.net/wiki +CONFLUENCE_USER=your_email@example.com +CONFLUENCE_TOKEN="" +CONFLUENCE_SPACE_KEYS=QT,ENGG,PMS + +# Optional — Jira +JIRA_URL=https://your-org.atlassian.net +JIRA_USER=your_email@example.com +JIRA_TOKEN="your_jira_token" +JIRA_PROJECT_KEYS=MOSIP,MISP + +# Optional — Email alerts for unanswerable questions +SMTP_HOST=smtp.gmail.com +SMTP_PORT=587 +SMTP_USER=your_gmail@gmail.com +SMTP_PASSWORD=your_app_password +NOTIFY_EMAIL=mosip-team@example.com +``` + +### 4. Crawl all knowledge sources + +Run crawlers once to generate the JSON data files. Each crawler is independent and can be run in parallel. + +```powershell +# Docs — ~449 pages from docs.mosip.io (~5 min) +uv run python MosipNexus/crawler/docs_crawler.py + +# Community forum — Q&A threads from community.mosip.io (~20–30 min) +uv run python MosipNexus/crawler/community_crawler.py + +# GitHub issues — 86 repos, up to 500 closed issues each (~15 min with token) +uv run python MosipNexus/crawler/github_crawler.py + +# Source code — Java/YAML/properties across all 86 repos (~30–60 min) +uv run python MosipNexus/crawler/code_crawler.py + +# Confluence — requires CONFLUENCE_URL/USER/TOKEN in .env +uv run python MosipNexus/crawler/confluence_crawler.py + +# Jira — optional, requires JIRA_* in .env +uv run python MosipNexus/crawler/jira_crawler.py +``` + +### 5. Build the vector index + +Embeds all crawled data and stores in pgvector. Uses `intfloat/multilingual-e5-base` (CPU-only — plan for 2–6 hours depending on which sources you have). + +```powershell +uv run python MosipNexus/ingestion/store.py +``` + +Progress is shown per batch (100 chunks each). Re-running automatically clears and rebuilds each collection (`pre_delete_collection=True` on the first batch). + +### 6. Launch the app + +```powershell +uv run streamlit run MosipNexus/app/app.py +``` + +Open [http://localhost:8501](http://localhost:8501). + +## Claude Desktop / MCP Integration + +MOSIP Nexus exposes a Model Context Protocol (MCP) server that Claude Desktop can connect to. When connected, Claude calls `search_mosip` for retrieval and uses your own Claude subscription for the LLM — zero API cost for the app owner. + +### Connecting Claude Desktop + +**Step 1** — Open Claude Desktop → Settings → Developer → Edit Config + +**Step 2** — Add to `claude_desktop_config.json`: + +```json +{ + "mcpServers": { + "mosip-nexus": { + "url": "http://localhost:8002/sse" + } + } +} +``` + +*(For production: replace `localhost:8002` with your deployed URL, e.g. `https://mosip-nexus.env.mosip.net/mcp/sse`)* + +**Step 3** — Restart Claude Desktop. Verify `mosip-nexus` appears under Developer → MCP Servers. + +**Step 4** — Ask Claude any MOSIP question. It automatically calls `search_mosip` and answers using your Claude subscription. + +### Available MCP Tools + +| Tool | Description | +| --- | --- | +| `search_mosip(query)` | Search all five knowledge sources simultaneously. Returns top chunks with source URLs. | +| `list_knowledge_sources()` | Show live record counts for each indexed source. | + +--- + +## Usage + +- Type any MOSIP question in the chat box +- Ask in any language — the assistant detects and replies in that language for the whole session +- If a similar community thread exists, it is surfaced before the generated answer +- Sources (doc pages, forum threads, GitHub issues, Confluence pages) are shown below each answer +- Confidence badge (🟢/🟡/🔴) reflects how well the retrieved context matched your query +- Click **New Chat** in the sidebar to reset the session + +## How It Works + +```text +User question + │ + ▼ +Duplicate detection — similar community thread exists? + │ yes → surface existing thread, then continue + │ no + ▼ +Pure greeting? ──yes──► Direct friendly reply (no RAG) + │ no + ▼ +Condense follow-up with chat history (LLM) + │ + ▼ +MMR search across all 5 pgvector collections +(docs + community + github + confluence + code) + │ + ▼ +Score confidence from best-chunk cosine distance + │ + ▼ +Generate answer grounded in retrieved context (Groq Llama 3.3) + │ + ▼ +[NO_DOC_SOURCE] detected? ──yes──► "Not available in MOSIP sources" + │ no + ▼ +Return answer + sources + confidence badge + related threads +``` + +## Incremental Updates + +After the initial full crawl, use `run_update.py` to fetch only what has changed: + +```powershell +uv run python MosipNexus/run_update.py +``` + +This compares the current crawl against `data/crawl_state.json` and re-embeds only new or changed content. Much faster than a full rebuild. + +## Rebuilding from Scratch + +If you change the embedding model or chunking parameters, reset the pgvector collections and crawl state before re-running: + +```powershell +# Reset crawl state so all content is treated as new +Remove-Item MosipNexus/data/crawl_state.json + +# Re-run ingestion — pre_delete_collection=True clears each pgvector collection on first batch +uv run python MosipNexus/ingestion/store.py +``` + +To wipe collections manually via SQL (e.g., before a schema change): + +```sql +DELETE FROM langchain_pg_embedding; +DELETE FROM langchain_pg_collection; +``` + +## Production Deployment (Rancher / Kubernetes) + +### Build the Docker image + +The image is built and pushed to Docker Hub automatically by +`.github/workflows/mosip-nexus-docker-publish.yml` on every push to `master` +or `develop` that touches files under `MosipNexus/`. Pushes to `master` are +tagged `latest` + ``; pushes to `develop` are tagged `develop` + +`develop-`. `k8s/03-deployment-api.yaml` and `k8s/04-deployment-ui.yaml` +already point to `mohanachandran45/mosip-nexus:latest` with `imagePullPolicy: Always`, +so a Rancher rollout restart picks up the newest `master` build automatically. + +To build manually instead (e.g. for a different registry): + +```powershell +# From MosipNexus/ directory +docker build -t mosip-nexus:latest . +docker tag mosip-nexus:latest your-registry/mosip-nexus:1.0.0 +docker push your-registry/mosip-nexus:1.0.0 +``` + +Update the `image:` field in `k8s/03-deployment-api.yaml` and `k8s/04-deployment-ui.yaml` to point to your registry. + +### Deploy to Rancher + +```powershell +# 1. Fill in real values in k8s/02-secret.yaml (DO NOT commit with real values) +# 2. Apply all manifests in order +kubectl apply -f k8s/00-namespace.yaml +kubectl apply -f k8s/01-postgres.yaml +kubectl apply -f k8s/02-secret.yaml +kubectl apply -f k8s/03-deployment-api.yaml +kubectl apply -f k8s/04-deployment-ui.yaml +kubectl apply -f k8s/05-services.yaml +kubectl apply -f k8s/06-ingress.yaml +kubectl apply -f k8s/07-cronjob.yaml +``` + +### First-time ingestion on the cluster + +Copy `data/*.json` into the `nexus-data` PVC (via a temporary pod — see the +[Rancher Deployment Guide](docs/MOSIP_Nexus_Rancher_Deployment_Guide.md), Step 9), +then apply the bootstrap Job — it runs automatically, no `kubectl exec` needed: + +```powershell +kubectl apply -f k8s/08-initial-ingest-job.yaml +kubectl logs -n mosip-nexus job/nexus-initial-ingest -f +``` + +This runs `ingestion/store.py` (full ingest from the committed seed files) +followed by `run_update.py` (bootstraps Confluence/Jira from their live APIs, +if configured in `k8s/02-secret.yaml`). + +### Trigger a manual knowledge update + +```powershell +kubectl create job --from=cronjob/nexus-updater nexus-updater-manual \ + -n mosip-nexus +``` + +### Local testing with Docker Compose + +```powershell +# Requires .env with GROQ_API_KEY set +docker compose up --build +# UI → http://localhost:8501 +# API → http://localhost:8000/docs +``` + +## LangSmith Observability + +When `LANGCHAIN_TRACING_V2=true` is set, every LangChain call (condenser, QA chain, retriever) is automatically traced at [smith.langchain.com](https://smith.langchain.com) under the `mosip-nexus` project. No code changes required. + +Traces show: input → retrieved chunks → prompt sent → LLM output → latency per step. diff --git a/MosipNexus/api/__init__.py b/MosipNexus/api/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/MosipNexus/api/main.py b/MosipNexus/api/main.py new file mode 100644 index 0000000..4a9fb0d --- /dev/null +++ b/MosipNexus/api/main.py @@ -0,0 +1,583 @@ +""" +MOSIP Nexus REST API + +Exposes the full RAG pipeline as HTTP endpoints with Swagger UI. + +Run: + uv run uvicorn MosipNexus.api.main:app --host 0.0.0.0 --port 8000 --reload + +Swagger UI → http://localhost:8000/docs +""" + +from __future__ import annotations + +import html as _html +import logging +import sys +import uuid +from collections import defaultdict +from enum import Enum +from pathlib import Path +from typing import Any + +sys.path.insert(0, str(Path(__file__).parent.parent)) + +from fastapi import FastAPI, HTTPException, Response +from fastapi.middleware.cors import CORSMiddleware +from fastapi.responses import HTMLResponse +from pydantic import BaseModel, Field + +from langchain_core.messages import AIMessage, HumanMessage + +from chain.query_engine import ask +from memory.session import SessionMemory +from retrieval.dedup import find_similar_question +from retrieval.retriever import retrieve +import retrieval.retriever as _retriever + +logger = logging.getLogger(__name__) + +# ── App ──────────────────────────────────────────────────────────────────────── +app = FastAPI( + title="MOSIP Nexus API", + description=( + "AI-powered MOSIP Knowledge Assistant — search official docs, community forum, " + "GitHub issues, Confluence, and source code via REST.\n\n" + "**Base URL:** `http://localhost:8000`\n\n" + "**Swagger UI:** `/docs`  |  **ReDoc:** `/redoc`" + ), + version="1.0.0", +) + +app.add_middleware( + CORSMiddleware, + allow_origins=["*"], + allow_methods=["*"], + allow_headers=["*"], +) + +# ── In-memory stores ─────────────────────────────────────────────────────────── +_sessions: dict[str, SessionMemory] = {} +_session_turns: dict[str, list[dict]] = {} # session_id → list of full turn dicts +_feedback: list[dict] = [] +_stats: dict[str, Any] = { + "total_queries": 0, + "confidence": defaultdict(int), + "source_type": defaultdict(int), + "language": defaultdict(int), + "total_sources": 0, +} + + +def _get_session(session_id: str) -> SessionMemory: + if session_id not in _sessions: + _sessions[session_id] = SessionMemory() + _session_turns[session_id] = [] + return _sessions[session_id] + + +def _record_stats(result: dict, language: str) -> None: + _stats["total_queries"] += 1 + _stats["confidence"][result.get("confidence", "unknown")] += 1 + _stats["source_type"][result.get("source_type", "unknown")] += 1 + _stats["language"][language] += 1 + _stats["total_sources"] += len(result.get("sources", [])) + + +# ── Shared models ────────────────────────────────────────────────────────────── +class SourceItem(BaseModel): + source: str = "" + title: str = "" + source_type: str = "" + + +class ChatResponse(BaseModel): + answer: str + sources: list[SourceItem] + source_type: str + confidence: str + similar_questions: list[str] + session_id: str + + +# ── /chat ────────────────────────────────────────────────────────────────────── +class ChatRequest(BaseModel): + question: str = Field(..., min_length=1, description="Question to ask about MOSIP.") + session_id: str | None = Field(None, description="Pass previous session_id to continue conversation.") + language: str = Field("English", description="Response language e.g. English, Tamil, Hindi.") + llm_provider: str = Field("groq", description="LLM provider: 'groq' (default) | 'anthropic' | 'openai'.") + llm_api_key: str | None = Field(None, description="User's own API key (BYOK). Never logged or stored.") + llm_model: str | None = Field(None, description="Optional model override e.g. 'claude-haiku-4-5-20251001'.") + + +@app.post("/chat", response_model=ChatResponse, tags=["Chat"], + summary="Ask a MOSIP question", + description="Main RAG endpoint. Returns answer + sources + confidence. Pass `session_id` from the response back to maintain conversation context.") +def chat(req: ChatRequest) -> ChatResponse: + if not req.llm_api_key: + raise HTTPException( + status_code=400, + detail=( + "llm_api_key is required. Provide your own Groq, Anthropic, or OpenAI API key. " + "No server-side LLM key is available." + ), + ) + + session_id = req.session_id or str(uuid.uuid4()) + memory = _get_session(session_id) + + try: + result = ask( + req.question, memory.messages, req.language, + llm_provider=req.llm_provider, + llm_api_key=req.llm_api_key, + llm_model=req.llm_model, + ) + except Exception as e: + logger.exception("Error in /chat for session %s", session_id) + raise HTTPException(status_code=500, detail="An internal error occurred. Please try again.") + + memory.add_turn(req.question, result["answer"]) + _record_stats(result, req.language) + + turn = { + "turn": len(_session_turns[session_id]) + 1, + "question": req.question, + "answer": result["answer"], + "sources": result.get("sources", []), + "source_type": result["source_type"], + "confidence": result["confidence"], + "similar_questions": result.get("similar_questions", []), + "language": req.language, + } + _session_turns[session_id].append(turn) + + return ChatResponse( + answer=result["answer"], + sources=[SourceItem(**{k: s.get(k, "") for k in ("source", "title", "source_type")}) for s in result.get("sources", [])], + source_type=result["source_type"], + confidence=result["confidence"], + similar_questions=result.get("similar_questions", []), + session_id=session_id, + ) + + +# ── /session (create) ───────────────────────────────────────────────────────── +class CreateSessionResponse(BaseModel): + session_id: str + status: str + + +@app.post("/session", response_model=CreateSessionResponse, tags=["Session"], + summary="Create a new session", + description="Creates a new empty session and returns its ID. Use this session_id in subsequent `/chat` calls to maintain conversation context.") +def create_session() -> CreateSessionResponse: + session_id = str(uuid.uuid4()) + _get_session(session_id) + return CreateSessionResponse(session_id=session_id, status="created") + + +# ── /session/{id}/history ────────────────────────────────────────────────────── +class HistoryMessage(BaseModel): + role: str = Field(..., description="'user' or 'assistant'") + content: str + + +class SessionHistoryResponse(BaseModel): + session_id: str + language: str + turns: int + messages: list[HistoryMessage] + + +@app.get("/session/{session_id}/history", response_model=SessionHistoryResponse, tags=["Session"], + summary="Get conversation history", + description="Returns the full Q&A history for a session.") +def session_history(session_id: str) -> SessionHistoryResponse: + if session_id not in _sessions: + raise HTTPException(status_code=404, detail=f"Session '{session_id}' not found.") + memory = _sessions[session_id] + messages = [ + HistoryMessage(role="user" if m.type == "human" else "assistant", content=m.content if isinstance(m.content, str) else str(m.content)) + for m in memory.messages + ] + return SessionHistoryResponse( + session_id=session_id, + language=memory.language, + turns=len(memory.messages) // 2, + messages=messages, + ) + + +# ── /sessions ────────────────────────────────────────────────────────────────── +class SessionSummary(BaseModel): + session_id: str + turns: int + language: str + + +class SessionsResponse(BaseModel): + active_sessions: int + sessions: list[SessionSummary] + + +@app.get("/sessions", response_model=SessionsResponse, tags=["Session"], + summary="List all active sessions", + description="Returns all currently active sessions with their turn count and detected language.") +def list_sessions() -> SessionsResponse: + return SessionsResponse( + active_sessions=len(_sessions), + sessions=[ + SessionSummary( + session_id=sid, + turns=len(mem.messages) // 2, + language=mem.language, + ) + for sid, mem in _sessions.items() + ], + ) + + +# ── /session/{id} DELETE ─────────────────────────────────────────────────────── +class SessionDeleteResponse(BaseModel): + session_id: str + status: str + + +@app.delete("/session/{session_id}", response_model=SessionDeleteResponse, tags=["Session"], + summary="Clear a session", + description="Deletes chat history for the session. Equivalent to clicking 'New Chat' in the UI.") +def delete_session(session_id: str) -> SessionDeleteResponse: + if session_id not in _sessions: + raise HTTPException(status_code=404, detail=f"Session '{session_id}' not found.") + _sessions.pop(session_id) + _session_turns.pop(session_id, None) + return SessionDeleteResponse(session_id=session_id, status="cleared") + + +# ── /search ──────────────────────────────────────────────────────────────────── +class SearchRequest(BaseModel): + query: str = Field(..., min_length=1, description="Search query.") + k: int = Field(5, ge=1, le=20, description="Number of results to return (1–20).") + + +class SearchResult(BaseModel): + content: str + source: str + title: str + source_type: str + + +class SearchResponse(BaseModel): + query: str + total: int + results: list[SearchResult] + + +@app.post("/search", response_model=SearchResponse, tags=["Search"], + summary="Raw vector search", + description="Retrieves matching chunks from pgvector without calling the LLM. Useful for exploring the knowledge base or building custom integrations.") +def search(req: SearchRequest) -> SearchResponse: + try: + docs, _ = retrieve(req.query, k=req.k) + except Exception as e: + logger.exception("Error in /search for query: %s", req.query) + raise HTTPException(status_code=500, detail="An internal error occurred. Please try again.") + + results = [ + SearchResult( + content=d.page_content[:500], + source=d.metadata.get("source", ""), + title=d.metadata.get("title", ""), + source_type=d.metadata.get("source_type", ""), + ) + for d in docs + ] + return SearchResponse(query=req.query, total=len(results), results=results) + + +# ── /similar ─────────────────────────────────────────────────────────────────── +class SimilarRequest(BaseModel): + question: str = Field(..., min_length=1, description="Question to find similar threads for.") + + +class SimilarResponse(BaseModel): + found: bool + title: str = "" + source: str = "" + similarity_score: float = 0.0 + message: str = "" + + +@app.post("/similar", response_model=SimilarResponse, tags=["Search"], + summary="Find similar community threads", + description="Checks the community forum index for an existing thread that matches the question. No LLM is called.") +def similar(req: SimilarRequest) -> SimilarResponse: + try: + result = find_similar_question(req.question) + except Exception as e: + logger.exception("Error in /similar") + raise HTTPException(status_code=500, detail="An internal error occurred. Please try again.") + + if result: + return SimilarResponse( + found=True, + title=result.get("title", ""), + source=result.get("source", ""), + similarity_score=round(result.get("similarity_score", 0.0), 4), + message="A similar community thread was found.", + ) + return SimilarResponse(found=False, message="No similar community thread found.") + + +# ── /feedback ────────────────────────────────────────────────────────────────── +class FeedbackRating(str, Enum): + positive = "positive" + negative = "negative" + + +class FeedbackRequest(BaseModel): + session_id: str = Field(..., description="Session ID the feedback belongs to.") + turn: int = Field(..., ge=1, description="Turn number (1 = first Q&A, 2 = second, ...).") + rating: FeedbackRating = Field(..., description="'positive' or 'negative'.") + comment: str = Field("", description="Optional free-text comment.") + + +class FeedbackResponse(BaseModel): + status: str + feedback_id: str + + +@app.post("/feedback", response_model=FeedbackResponse, tags=["Feedback"], + summary="Submit answer feedback", + description="Rate an answer as positive or negative. Link to a specific turn in a session.") +def feedback(req: FeedbackRequest) -> FeedbackResponse: + if req.session_id not in _sessions: + raise HTTPException(status_code=404, detail=f"Session '{req.session_id}' not found.") + turns = _session_turns.get(req.session_id, []) + if req.turn > len(turns): + raise HTTPException(status_code=404, detail=f"Turn {req.turn} not found in session.") + + feedback_id = str(uuid.uuid4()) + turn_data = turns[req.turn - 1] + _feedback.append({ + "feedback_id": feedback_id, + "session_id": req.session_id, + "turn": req.turn, + "question": turn_data.get("question", ""), + "rating": req.rating, + "comment": req.comment, + }) + return FeedbackResponse(status="recorded", feedback_id=feedback_id) + + +# ── /stats ───────────────────────────────────────────────────────────────────── +class StatsResponse(BaseModel): + total_queries: int + active_sessions: int + total_feedback: int + positive_feedback: int + negative_feedback: int + avg_sources_per_query: float + confidence_distribution: dict[str, int] + source_type_distribution: dict[str, int] + language_distribution: dict[str, int] + + +@app.get("/stats", response_model=StatsResponse, tags=["Analytics"], + summary="Usage statistics", + description="Returns aggregated usage metrics — total queries, confidence levels, source types, and languages used. Useful for stakeholder reporting.") +def stats() -> StatsResponse: + total = _stats["total_queries"] + avg_sources = round(_stats["total_sources"] / total, 2) if total else 0.0 + pos = sum(1 for f in _feedback if f["rating"] == "positive") + neg = sum(1 for f in _feedback if f["rating"] == "negative") + return StatsResponse( + total_queries=total, + active_sessions=len(_sessions), + total_feedback=len(_feedback), + positive_feedback=pos, + negative_feedback=neg, + avg_sources_per_query=avg_sources, + confidence_distribution=dict(_stats["confidence"]), + source_type_distribution=dict(_stats["source_type"]), + language_distribution=dict(_stats["language"]), + ) + + +# ── /export/{session_id} ─────────────────────────────────────────────────────── +class ExportFormat(str, Enum): + json = "json" + html = "html" + + +@app.post("/export/{session_id}", tags=["Session"], + summary="Export a session", + description="Export the full conversation as JSON (structured data) or HTML (styled report, same as Export Chat in the UI).") +def export_session(session_id: str, format: ExportFormat = ExportFormat.json): + if session_id not in _sessions: + raise HTTPException(status_code=404, detail=f"Session '{session_id}' not found.") + turns = _session_turns.get(session_id, []) + memory = _sessions[session_id] + + if format == ExportFormat.json: + return { + "session_id": session_id, + "language": memory.language, + "total_turns": len(turns), + "turns": turns, + } + + # HTML export + rows = "" + for t in turns: + badge = {"high": "🟢 High", "medium": "🟡 Medium", "low": "🔴 Low"}.get(t.get("confidence", ""), "") + src_html = "" + if t.get("sources"): + links = "".join( + f'
  • {_html.escape(s.get("title","") or s.get("source",""))}
  • ' + for s in t["sources"] if s.get("source") + ) + if links: + src_html = f'
    Sources:
      {links}
    ' + + rows += f""" +
    +
    Q{t["turn"]}

    {_html.escape(t["question"])}

    +
    + Answer + {"" + badge + "" if badge else ""} +

    {_html.escape(t["answer"])}

    {src_html} +
    +
    """ + + html = f""" + +MOSIP Nexus — Session Export + + +

    🔷 MOSIP Nexus — Session Export

    +
    Session: {_html.escape(session_id)}  |  Language: {_html.escape(memory.language)}  |  Turns: {len(turns)}
    + {rows} +""" + + return HTMLResponse(content=html, media_type="text/html", + headers={"Content-Disposition": f'attachment; filename="mosip_session_{session_id[:8]}.html"'}) + + +# ── /batch ───────────────────────────────────────────────────────────────────── +class BatchRequest(BaseModel): + questions: list[str] = Field(..., min_length=1, max_length=10, description="List of questions (max 10).") + session_id: str | None = Field(None, description="Shared session — questions are answered sequentially, each aware of previous.") + language: str = Field("English", description="Response language for all questions.") + llm_provider: str = Field("groq", description="LLM provider: 'groq' | 'anthropic' | 'openai'.") + llm_api_key: str | None = Field(None, description="User's own API key (BYOK). Never logged or stored.") + llm_model: str | None = Field(None, description="Optional model override.") + + +class BatchResponse(BaseModel): + session_id: str + total: int + results: list[ChatResponse] + + +@app.post("/batch", response_model=BatchResponse, tags=["Chat"], + summary="Ask multiple questions at once", + description="Process up to 10 questions sequentially in a single request. Each question is aware of the previous answers (shared session context).") +def batch(req: BatchRequest) -> BatchResponse: + if not req.llm_api_key: + raise HTTPException( + status_code=400, + detail=( + "llm_api_key is required. Provide your own Groq, Anthropic, or OpenAI API key. " + "No server-side LLM key is available." + ), + ) + + session_id = req.session_id or str(uuid.uuid4()) + memory = _get_session(session_id) + + # Phase 1 — compute all results without touching session state. + # A growing temp list gives each question context from the previous ones. + temp_messages = list(memory.messages) + raw_results: list[tuple[str, dict]] = [] + + for i, question in enumerate(req.questions): + try: + result = ask( + question, temp_messages, req.language, + llm_provider=req.llm_provider, + llm_api_key=req.llm_api_key, + llm_model=req.llm_model, + ) + except Exception as e: + logger.exception("Error in /batch on question index %d", i) + raise HTTPException(status_code=500, detail="An internal error occurred. Please try again.") + raw_results.append((question, result)) + temp_messages = [*temp_messages, HumanMessage(content=question), AIMessage(content=result["answer"])] + + # Phase 2 — all questions succeeded; commit turns and stats atomically. + responses: list[ChatResponse] = [] + for question, result in raw_results: + memory.add_turn(question, result["answer"]) + _record_stats(result, req.language) + turn = { + "turn": len(_session_turns[session_id]) + 1, + "question": question, + "answer": result["answer"], + "sources": result.get("sources", []), + "source_type": result["source_type"], + "confidence": result["confidence"], + "similar_questions": result.get("similar_questions", []), + "language": req.language, + } + _session_turns[session_id].append(turn) + responses.append(ChatResponse( + answer=result["answer"], + sources=[SourceItem(**{k: s.get(k, "") for k in ("source", "title", "source_type")}) for s in result.get("sources", [])], + source_type=result["source_type"], + confidence=result["confidence"], + similar_questions=result.get("similar_questions", []), + session_id=session_id, + )) + + return BatchResponse(session_id=session_id, total=len(responses), results=responses) + + +# ── /health ──────────────────────────────────────────────────────────────────── +class HealthResponse(BaseModel): + status: str + collections: dict[str, Any] + active_sessions: int + + +@app.get("/health", response_model=HealthResponse, tags=["System"], + summary="System health check", + description="Returns pgvector collection chunk counts and active session count.") +def health(response: Response) -> HealthResponse: + try: + _retriever._get_stores() # ensure embedding model + stores are initialised + collections: dict[str, Any] = _retriever.get_collection_counts() + except Exception: + logger.exception("Error reading pgvector collection counts in /health") + response.status_code = 503 + return HealthResponse( + status="degraded", + collections={"error": "Unable to read collection stats."}, + active_sessions=len(_sessions), + ) + return HealthResponse( + status="ok", + collections=collections, + active_sessions=len(_sessions), + ) diff --git a/MosipNexus/app/__init__.py b/MosipNexus/app/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/MosipNexus/app/app.py b/MosipNexus/app/app.py new file mode 100644 index 0000000..642e164 --- /dev/null +++ b/MosipNexus/app/app.py @@ -0,0 +1,820 @@ +""" +MOSIP Nexus — Streamlit Chat UI. + +Displays a conversational interface backed by the RAG query engine. +Session state holds: + - memory: SessionMemory (LangChain history + detected language) + - messages: display history (list of dicts for rendering) + +Language detection runs on every user message; updates only when a non-English +language is detected with >= 95% confidence and at least 20 characters. +""" + +from __future__ import annotations + +import sys +from pathlib import Path + +sys.path.insert(0, str(Path(__file__).parent.parent)) + +import base64 +import datetime +import html as _html +import re + +import streamlit as st +from langdetect import DetectorFactory, LangDetectException, detect_langs + +from chain.query_engine import ask +from memory.session import SessionMemory +from retrieval.dedup import find_similar_question +from config.settings import GROQ_API_KEY + +DetectorFactory.seed = 0 + + +def _safe_url(url: str) -> str: + """Allow only http/https URLs; replace anything else with '#'.""" + return url if url.lower().startswith(("http://", "https://")) else "#" + + +def _md_to_html(text: str) -> str: + """Convert markdown answer text to safe HTML for the export report.""" + import html, re + t = html.escape(text) + # Bold: **text** → + t = re.sub(r'\*\*(.+?)\*\*', r'\1', t) + # Inline code: `code` → + t = re.sub(r'`([^`]+)`', r'\1', t) + # Numbered list items starting a line + t = re.sub(r'(?m)^(\d+)\.\s+', r'
    \1. ', t) + # Bullet list items starting a line (-, *, •) + t = re.sub(r'(?m)^[-*•]\s+', r'
      • ', t) + # Remaining newlines →
    + t = t.replace('\n', '
    ') + # Clean up leading
    artifacts + t = re.sub(r'^(
    )+', '', t) + return t + + +def _export_chat_html(messages: list, language: str) -> str: + """Generate a self-contained HTML report of the current chat session.""" + now = datetime.datetime.now().strftime("%Y-%m-%d %H:%M") + logo_html = "" + if _logo_data: + logo_html = ( + f'' + ) + rows = "" + for msg in messages: + if msg["role"] == "user": + import html as _html + rows += f""" +
    +
    + Question +

    {_html.escape(msg["content"])}

    +
    """ + else: + badge = {"high": "🟢 High", "medium": "🟡 Medium", "low": "🔴 Low"}.get( + msg.get("confidence", ""), "" + ) + sources_html = "" + if msg.get("sources"): + links = "" + seen: set = set() + icons = {"docs": "📄", "community": "💬", "github": "🐙", + "code": "🧑‍💻", "confluence": "📘","youtube": "▶️"} + for src in msg["sources"]: + url = src.get("source", "") + title = src.get("title") or url + icon = icons.get(src.get("source_type", ""), "📄") + if url and url not in seen: + seen.add(url) + links += f'
  • {icon} {_html.escape(title)}
  • ' + if links: + sources_html = f'
    Sources:
      {links}
    ' + + rows += f""" +
    + Answer + {"" + badge + "" if badge else ""} +
    {_md_to_html(msg["content"])}
    + {sources_html} +
    +
    """ + + return f""" + + + + MOSIP Nexus — Test Report + + + +
    + {logo_html} +

    MOSIP Nexus — Test Report

    +
    +
    + Generated: {now}  |  + Language: {language}  |  + Total turns: {sum(1 for m in messages if m["role"] == "user")} +
    + {rows} + +""" + +LANG_NAMES: dict[str, str] = { + "en": "English", "ta": "Tamil", "hi": "Hindi", "fr": "French", + "de": "German", "es": "Spanish", "ar": "Arabic", "zh-cn": "Chinese (Simplified)", + "zh-tw": "Chinese (Traditional)", "ja": "Japanese", "ko": "Korean", + "pt": "Portuguese", "ru": "Russian", "it": "Italian", "nl": "Dutch", + "tr": "Turkish", "pl": "Polish", "uk": "Ukrainian", "vi": "Vietnamese", + "th": "Thai", "id": "Indonesian", "ms": "Malay", "ml": "Malayalam", + "te": "Telugu", "kn": "Kannada", "bn": "Bengali", "ur": "Urdu", +} + +# ── Explicit language instruction detection ──────────────────────────────────── +_LANG_INSTRUCTION_RE = re.compile( + r'\b(?:reply|respond|answer|speak|write|communicate|talk)\s+in\s+([a-zA-Z]+)' + r'|\buse\s+([a-zA-Z]+)\s*(?:language|lang)?\b' + r'|\bswitch\s+to\s+([a-zA-Z]+)\b' + r'|\btranslate\s+(?:to|in)\s+([a-zA-Z]+)\b', + re.IGNORECASE, +) +_INSTRUCTION_LANG_MAP: dict[str, tuple[str, str]] = { + "english": ("en", "English"), "tamil": ("ta", "Tamil"), + "hindi": ("hi", "Hindi"), "french": ("fr", "French"), + "german": ("de", "German"), "spanish": ("es", "Spanish"), + "arabic": ("ar", "Arabic"), "chinese": ("zh-cn", "Chinese (Simplified)"), + "japanese": ("ja", "Japanese"), "korean": ("ko", "Korean"), + "portuguese": ("pt", "Portuguese"), "russian": ("ru", "Russian"), + "italian": ("it", "Italian"), "dutch": ("nl", "Dutch"), + "turkish": ("tr", "Turkish"), "polish": ("pl", "Polish"), + "malayalam": ("ml", "Malayalam"), "telugu": ("te", "Telugu"), + "kannada": ("kn", "Kannada"), "bengali": ("bn", "Bengali"), + "urdu": ("ur", "Urdu"), +} + + +def _detect_lang_instruction(text: str) -> tuple[str, str] | None: + """Return (lang_code, lang_name) if the query explicitly requests a language switch.""" + m = _LANG_INSTRUCTION_RE.search(text) + if not m: + return None + word = next((g for g in m.groups() if g), "").lower() + return _INSTRUCTION_LANG_MAP.get(word) + + +_CONFIDENCE_BADGE = { + "high": ("🟢", "High confidence"), + "medium": ("🟡", "Medium confidence"), + "low": ("🔴", "Low confidence — answer may be incomplete"), + "n/a": ("⚪", ""), +} + +_SOURCE_LABEL = { + "mosip_docs": "MOSIP Documentation", + "community": "Community Forum", + "github": "GitHub Issues", + "code": "Source Code", + "confluence": "Confluence", + "jira": "Jira Tickets", + "youtube": "YouTube", + "mixed": "Docs · Community · GitHub · Code · YouTube", + "web": "Web Sources", + "none": "", + "chat": "", +} + +def _svg(path_d: str, *, filled: bool = False) -> str: + fill = "#4b5563" if filled else "none" + stroke = "" if filled else 'stroke="#4b5563" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"' + return ( + f'' + f'{path_d}' + ) + +_SVG_ICON = { + "docs": _svg( + '' + '' + '' + ), + "community": _svg( + '' + ), + "github": _svg( + '', + filled=True, + ), + "code": _svg( + '' + ), + "confluence": _svg( + '' + '' + ), + "jira": _svg( + '' + ), + "youtube": _svg( + '', + ), + "web": _svg( + '' + '' + ), +} + +_SIDEBAR_SOURCES_HTML = ( + '
    ' + + "".join( + f'
    {_SVG_ICON[k]} {label}
    ' + for k, label in [ + ("docs", "MOSIP Documentation"), + ("community", "Community Forum"), + ("github", "GitHub Issues"), + ("confluence", "Confluence"), + ("code", "Source Code"), + ("youtube", "YouTube"), + ] + ) + + "
    " +) + +# ── Page config ──────────────────────────────────────────────────────────────── +_LOGO = Path(__file__).parent / "assets" / "logo.png" +try: + from PIL import Image as _PILImage + _page_icon = _PILImage.open(_LOGO) if _LOGO.exists() else "🔷" +except Exception: + _page_icon = "🔷" + +st.set_page_config( + page_title="MOSIP Nexus", + page_icon=_page_icon, + layout="wide", +) + +# ── Session state ────────────────────────────────────────────────────────────── +if "memory" not in st.session_state: + st.session_state.memory = SessionMemory() +if "messages" not in st.session_state: + st.session_state.messages = [] +if "lang_locked" not in st.session_state: + st.session_state.lang_locked = False +if "pending_lang" not in st.session_state: + st.session_state.pending_lang = None # (lang_code, lang_name) awaiting user confirmation + +memory: SessionMemory = st.session_state.memory + + +def _detect_language(text: str, current_lang_code: str = "en") -> tuple[str, str] | None: + """Detect language and return (lang_code, lang_name) if it should change. + + Sticky logic: + - Non-English detected with high confidence → switch to that language + - English detected on a long message (40+ chars) while session is non-English + → switch back to English (user explicitly switched back) + - Short messages and ambiguous detections → keep current language + """ + from config.settings import LANG_DETECT_CONFIDENCE, MIN_LANG_DETECT_CHARS + # Non-ASCII text (Hindi, Tamil, Arabic, etc.) is unambiguous — use a lower threshold + has_non_ascii = any(ord(c) > 127 for c in text) + min_chars = 5 if has_non_ascii else MIN_LANG_DETECT_CHARS + if len(text.strip()) < min_chars: + return None + try: + langs = detect_langs(text) + top = langs[0] + if top.prob < LANG_DETECT_CONFIDENCE: + return None + if top.lang != "en" and top.lang in LANG_NAMES: + return top.lang, LANG_NAMES[top.lang] + # Switch back to English only when user writes a long English message explicitly + if top.lang == "en" and current_lang_code != "en" and len(text.strip()) >= 40: + return "en", "English" + except LangDetectException: + pass + return None + + +# ── Read input + detect language BEFORE sidebar so sidebar shows current language +query = st.chat_input("Ask anything about MOSIP...") +if query: + # Explicit instruction ("reply in Tamil") takes priority over auto-detect + lang_instruction = _detect_lang_instruction(query) + if lang_instruction and lang_instruction[0] != memory.lang_code: + st.session_state.pending_lang = lang_instruction + elif not st.session_state.lang_locked: + lang_result = _detect_language(query, memory.lang_code) + if lang_result: + memory.set_language(*lang_result) + +# ── Sidebar ──────────────────────────────────────────────────────────────────── +# Collapse default Streamlit sidebar top padding +st.markdown(""" + +""", unsafe_allow_html=True) + +_provider_key = st.session_state.get("llm_provider", "groq") +_has_key = bool(st.session_state.get("llm_api_key")) +_active_provider_label = { + "anthropic": "Claude (Anthropic)", + "openai": "OpenAI", + "groq": "Groq", +}.get(_provider_key, "Groq") if _has_key else None + +_footer_parts = ["LangChain", "pgvector", "HuggingFace"] +if _active_provider_label: + _footer_parts.insert(1, _active_provider_label) + +st.markdown( + f'', + unsafe_allow_html=True, +) + +_logo_data: str | None = base64.b64encode(_LOGO.read_bytes()).decode() if _LOGO.exists() else None + +with st.sidebar: + if _logo_data: + st.markdown( + f'
    ' + f'' + f'
    MOSIP Nexus
    ' + f'
    ' + f'AI-powered MOSIP Knowledge Assistant
    ' + f'
    ', + unsafe_allow_html=True, + ) + else: + st.markdown("## 🔷 MOSIP Nexus") + st.caption("AI-powered MOSIP Knowledge Assistant") + st.divider() + + if st.button("🔄 New Chat", use_container_width=True): + memory.clear() + st.session_state.messages = [] + st.rerun() + + if st.session_state.messages: + filename = f"mosip_nexus_{datetime.datetime.now().strftime('%Y%m%d_%H%M')}.html" + st.download_button( + label="📥 Export Chat", + data=_export_chat_html(st.session_state.messages, memory.language).encode("utf-8"), + file_name=filename, + mime="text/html; charset=utf-8", + use_container_width=True, + ) + + st.divider() + st.markdown("**Session info**") + _lock_icon = "🔒" if st.session_state.lang_locked else "🌐" + st.markdown(f"Language: **{memory.language}** {_lock_icon}") + st.markdown(f"Turns: **{len(memory.messages) // 2}**") + + if not st.session_state.lang_locked: + # Lock to current non-English language + if memory.lang_code != "en": + if st.button(f"🔒 Lock to {memory.language}", use_container_width=True): + st.session_state.lang_locked = True + st.session_state.pending_lang = None + st.rerun() + # Switch to English (sets + locks) + if st.button("🔒 Switch to English", use_container_width=True): + memory.set_language("en", "English") + st.session_state.lang_locked = True + st.session_state.pending_lang = None + st.rerun() + else: + # Locked — offer unlock and optionally switch to English + if st.button("🌐 Switch to Default", use_container_width=True): + st.session_state.lang_locked = False + st.rerun() + if memory.lang_code != "en": + if st.button("🔒 Switch to English", use_container_width=True): + memory.set_language("en", "English") + st.session_state.lang_locked = True + st.session_state.pending_lang = None + st.rerun() + + st.divider() + st.markdown("**Sources searched**") + st.markdown(_SIDEBAR_SOURCES_HTML, unsafe_allow_html=True) + + st.divider() + st.page_link("pages/settings.py", label="⚙️ Settings") + +# ── Main title ───────────────────────────────────────────────────────────────── +if _logo_data: + st.markdown( + f'
    ' + f'' + f'

    MOSIP Nexus

    ' + f'
    ', + unsafe_allow_html=True, + ) +else: + st.title("MOSIP Nexus") +st.markdown( + '

    ' + 'Ask anything about MOSIP — answers from docs, community forum, GitHub issues, Confluence, and source code' + '

    ', + unsafe_allow_html=True, +) + +# ── Persistent session state defaults (must match settings.py) ──────────────── +if "llm_api_key" not in st.session_state: + + st.session_state["llm_api_key"] = GROQ_API_KEY or "" + +if "llm_provider" not in st.session_state: + + st.session_state["llm_provider"] = "groq" + +if "llm_model" not in st.session_state: + + st.session_state["llm_model"] = "llama-3.3-70b-versatile" + +# ── No-LLM banner ───────────────────────────────────────────────────────────── +if not st.session_state.get("llm_api_key"): + st.markdown( + '
    ' + '⚠️  No LLM configured.  Go to ' + 'Settings ' + 'to add your own Claude, OpenAI, or Groq API key — or use Claude Desktop with the MCP integration.' + '
    ', + unsafe_allow_html=True, + ) + +# ── Scroll-to-bottom button + auto-scroll ───────────────────────────────────── +import streamlit.components.v1 as _components +_components.html(""" + +""", height=0) + +# ── Render existing chat ─────────────────────────────────────────────────────── +for msg in st.session_state.messages: + with st.chat_message(msg["role"]): + st.markdown(msg["content"]) + + if msg.get("confidence") and msg["confidence"] not in ("n/a", "low"): + badge, label = _CONFIDENCE_BADGE.get(msg["confidence"], ("", "")) + if label: + st.caption(f"{badge} {label}") + + if msg.get("similar_questions"): + with st.expander("🔍 Related community threads", expanded=False): + for q in msg["similar_questions"]: + st.markdown(f"- {q}") + + if msg.get("sources"): + label = _SOURCE_LABEL.get(msg.get("source_type", ""), "📄 Sources") + with st.expander(label, expanded=False): + seen: set[str] = set() + for src in msg["sources"]: + url = src.get("source", "") + title = src.get("title") or url + stype = src.get("source_type", "") + icon = _SVG_ICON.get(stype, _SVG_ICON["docs"]) + if url and url not in seen: + seen.add(url) + tags = src.get("tags", "") + tag_str = f" `{tags}`" if tags else "" + st.markdown(f"{icon}{_html.escape(title)}{tag_str}", unsafe_allow_html=True) + +# ── Language-lock confirmation popup ────────────────────────────────────────── +if st.session_state.pending_lang: + _plc, _pln = st.session_state.pending_lang + st.info(f"🌐 Stay in **{_pln}** for the rest of this conversation?") + _pcol1, _pcol2 = st.columns(2) + with _pcol1: + if st.button(f"✅ Yes, lock to {_pln}", use_container_width=True, key="_lang_yes"): + memory.set_language(_plc, _pln) + st.session_state.lang_locked = True + st.session_state.pending_lang = None + st.rerun() + with _pcol2: + if st.button("❌ No, just this reply", use_container_width=True, key="_lang_no"): + st.session_state.pending_lang = None + st.rerun() + +if query: + # ── Render user message ──────────────────────────────────────────────────── + with st.chat_message("user"): + st.markdown(query) + st.session_state.messages.append({"role": "user", "content": query}) + + # ── Duplicate detection ──────────────────────────────────────────────────── + similar = None + try: + similar = find_similar_question(query) + except Exception: + pass + + if similar: + with st.chat_message("assistant"): + st.info( + f"**Similar thread found** (similarity: {similar['similarity_score']:.0%})\n\n" + f"**[{similar['title']}]({similar['source']})**\n\n" + f"This community thread may already answer your question. " + f"Generating a summarised answer below..." + ) + + # ── Generate answer ──────────────────────────────────────────────────────── + with st.chat_message("assistant"): + with st.spinner("Searching docs and community forum..."): + result = ask( + query, memory.messages, memory.language, + llm_provider=st.session_state.get("llm_provider", "groq"), + llm_api_key=st.session_state.get("llm_api_key"), + llm_model=st.session_state.get("llm_model"), + ) + + answer = result["answer"] + sources = result["sources"] + source_type = result["source_type"] + confidence = result["confidence"] + similar_qs = result["similar_questions"] + + st.markdown(answer) + + # ── Disclaimer 1: web-sourced answer ─────────────────────────────────── + if source_type == "web": + st.warning( + "⚠️ **Disclaimer:** This answer is from external web sources, " + "not from official MOSIP documentation or community. " + "Verify with MOSIP experts before using in production." + ) + + # ── Disclaimer 2: low-confidence MOSIP answer (auto + auto-notify) ──── + _auto_notify_key = f"_auto_notified_{hash(query)}" + if confidence == "low" and source_type not in ("none", "chat", "web", "n/a"): + st.warning( + "⚠️ **Disclaimer:** The AI confidence for this answer is low — " + "the MOSIP knowledge base may not fully cover this topic. " + "A MOSIP expert can provide a more accurate and complete response. " + "The MOSIP team has been notified automatically." + ) + # Auto-send once per unique question (session-scoped to prevent duplicate sends) + if not st.session_state.get(_auto_notify_key): + from notifications.email_notifier import send_low_confidence_notification + send_low_confidence_notification( + question=query, + language=memory.language, + source_type=source_type, + ) + st.session_state[_auto_notify_key] = True + + # Confidence badge + badge, conf_label = _CONFIDENCE_BADGE.get(confidence, ("", "")) + if conf_label: + st.caption(f"{badge} {conf_label}") + + # Similar questions + if similar_qs: + with st.expander("🔍 Related community threads", expanded=True): + for q in similar_qs: + st.markdown(f"- {q}") + + # Sources + if sources: + src_label = _SOURCE_LABEL.get(source_type, "📄 Sources") + with st.expander(src_label, expanded=True): + seen_now: set[str] = set() + for src in sources: + url = src.get("source", "") + title = src.get("title") or url + stype = src.get("source_type", "") + icon = _SVG_ICON.get(stype, _SVG_ICON["docs"]) + if url and url not in seen_now: + seen_now.add(url) + tags = src.get("tags", "") + tag_str = f" `{tags}`" if tags else "" + accepted = " ✅" if src.get("accepted") else "" + st.markdown(f"{icon}{title}{tag_str}{accepted}", unsafe_allow_html=True) + + # ── "Ask MOSIP Expert" button (web + low-confidence + none) ─────────── + _show_expert = source_type in ("web", "none") or confidence == "low" + if _show_expert and source_type not in ("chat",): + st.divider() + if source_type == "none": + st.warning( + "This question is not covered in MOSIP documentation, " + "community forum, or web search." + ) + community_url = ( + f"https://community.mosip.io/new-topic" + f"?title={query[:100].replace(' ', '+')}" + ) + col1, col2 = st.columns(2) + with col1: + st.link_button( + "💬 Post to MOSIP Community", + community_url, + use_container_width=True, + ) + with col2: + _btn_key = f"expert_{len(st.session_state.messages)}" + if st.button("🙋 Ask MOSIP Expert", use_container_width=True, key=_btn_key): + st.session_state["_pending_expert"] = { + "query": query, "context": answer[:300], + } + + # ── Expert request form (rendered outside chat_message) ─────────────────── + _pending = st.session_state.get("_pending_expert", {}) + if _pending.get("query") == query: + with st.form("expert_form"): + st.markdown("**Request a MOSIP Expert Response**") + st.caption( + "A MOSIP team member will review your question and reply directly. " + "Leave your email so they can reach you." + ) + user_email = st.text_input( + "Your email (required for expert to reply)", + placeholder="you@example.com", + ) + submitted = st.form_submit_button("Send Request") + if submitted: + if not user_email.strip(): + st.error("Please enter your email so the expert can reply.") + else: + from notifications.email_notifier import ( + send_expert_request_notification, + send_unanswered_notification, + ) + if source_type == "none": + ok, msg = send_unanswered_notification( + question=query, + language=memory.language, + user_email=user_email.strip(), + ) + else: + ok, msg = send_expert_request_notification( + question=query, + language=memory.language, + user_email=user_email.strip(), + context=_pending.get("context", ""), + ) + if ok: + st.success(f"✅ {msg} A MOSIP expert will be in touch.") + else: + st.error(f"❌ {msg}") + del st.session_state["_pending_expert"] + + # ── Update session state ─────────────────────────────────────────────────── + st.session_state.messages.append({ + "role": "assistant", + "content": answer, + "sources": sources, + "source_type": source_type, + "confidence": confidence, + "similar_questions": similar_qs, + }) + memory.add_turn(query, answer) + # Rerun so the sidebar export button picks up the just-appended messages. + st.rerun() diff --git a/MosipNexus/app/assets/logo.png b/MosipNexus/app/assets/logo.png new file mode 100644 index 0000000..b12ae14 Binary files /dev/null and b/MosipNexus/app/assets/logo.png differ diff --git a/MosipNexus/app/pages/settings.py b/MosipNexus/app/pages/settings.py new file mode 100644 index 0000000..bad7a4a --- /dev/null +++ b/MosipNexus/app/pages/settings.py @@ -0,0 +1,378 @@ +""" +MOSIP Nexus — Settings Page +""" + +from __future__ import annotations + +import sys +from pathlib import Path +from config.settings import GROQ_API_KEY + +sys.path.insert(0, str(Path(__file__).parent.parent.parent)) + +import streamlit as st + +st.set_page_config( + page_title="Settings — MOSIP Nexus", + page_icon="⚙️", + layout="centered", +) + +# ── Styles ────────────────────────────────────────────────────────────────────── +st.markdown(""" + +""", unsafe_allow_html=True) + +# ── Sidebar ────────────────────────────────────────────────────────────────────── +with st.sidebar: + st.page_link("app.py", label="← Back to Chat", icon="💬") + st.divider() + st.caption("MOSIP Nexus") + +# ── Page header ────────────────────────────────────────────────────────────────── +st.markdown("## ⚙️ Settings") +st.markdown( + '

    ' + 'Configure your LLM provider. Changes apply immediately to your session only.' + '

    ', + unsafe_allow_html=True, +) + +# ── Persistent session state defaults (survive page navigation) ─────────────── +if "llm_api_key" not in st.session_state: + st.session_state["llm_api_key"] = GROQ_API_KEY or "" +if "llm_provider" not in st.session_state: + st.session_state["llm_provider"] = "groq" + +# ── Status badge placeholder — filled after widgets run ─────────────────────── +_status_placeholder = st.empty() +st.markdown("
    ", unsafe_allow_html=True) + +# ── LLM Configuration ──────────────────────────────────────────────────────────── +st.markdown('', unsafe_allow_html=True) + +with st.container(border=True): + st.markdown( + '
    🤖 Choose your AI provider
    ' + '
    Select a provider and enter your own API key. ' + 'Your key stays in your browser session and is never stored on the server.
    ', + unsafe_allow_html=True, + ) + + _PROVIDER_MAP = { + "Groq": "groq", + "Claude — Anthropic": "anthropic", + "OpenAI": "openai", + } + _PROVIDER_REVERSE = {v: k for k, v in _PROVIDER_MAP.items()} + + current_provider_key = st.session_state.get("llm_provider", "groq") + current_label = _PROVIDER_REVERSE.get(current_provider_key, "Groq") + + selected_label = st.radio( + "Provider", + options=list(_PROVIDER_MAP.keys()), + index=list(_PROVIDER_MAP.keys()).index(current_label), + horizontal=True, + label_visibility="collapsed", + ) + + selected_provider = _PROVIDER_MAP[selected_label] + st.session_state["llm_provider"] = selected_provider + + st.markdown("
    ", unsafe_allow_html=True) + + # Provider-specific config + if selected_provider == "groq": + key_placeholder, key_link = "gsk_...", "https://console.groq.com" + key_link_label = "Get a free key at console.groq.com →" + model_options = [ + "llama-3.3-70b-versatile (recommended)", + "llama-3.1-8b-instant (faster)", + "mixtral-8x7b-32768", + ] + model_values = ["llama-3.3-70b-versatile", "llama-3.1-8b-instant", "mixtral-8x7b-32768"] + elif selected_provider == "anthropic": + key_placeholder, key_link = "sk-ant-...", "https://console.anthropic.com" + key_link_label = "Get your key at console.anthropic.com →" + model_options = [ + "claude-haiku-4-5-20251001 (fastest, recommended)", + "claude-sonnet-4-6 (balanced)", + "claude-opus-4-8 (most capable)", + ] + model_values = ["claude-haiku-4-5-20251001", "claude-sonnet-4-6", "claude-opus-4-8"] + else: + key_placeholder, key_link = "sk-...", "https://platform.openai.com/api-keys" + key_link_label = "Get your key at platform.openai.com →" + model_options = [ + "gpt-4o-mini (fastest, recommended)", + "gpt-4o (balanced)", + "gpt-4-turbo (most capable)", + ] + model_values = ["gpt-4o-mini", "gpt-4o", "gpt-4-turbo"] + + col_key, col_model = st.columns([3, 2]) + + with col_key: + st.markdown( + f'{key_link_label}', + unsafe_allow_html=True, + ) + # Seed the widget key from the persistent key when returning to this page + st.text_input( + "API Key", + value=GROQ_API_KEY or "", + type="password", + disabled=True, + label_visibility="collapsed", + help="API key is loaded from the .env file." + ) + + api_key = GROQ_API_KEY + + with col_model: + st.caption("Model") + current_model = st.session_state.get("llm_model", model_values[0]) + model_index = model_values.index(current_model) if current_model in model_values else 0 + selected_model_label = st.selectbox( + "Model", + options=model_options, + index=model_index, + label_visibility="collapsed", + ) + st.session_state["llm_model"] = model_values[model_options.index(selected_model_label)] + + if api_key: + st.success("API key saved for this session. You can now start chatting.", icon="✅") + else: + st.caption("Enter your API key above to activate this provider.") + + # ── Fill status badge now that we have the real values ──────────────────── + _provider_display = { + "groq": "Groq", + "anthropic": "Claude (Anthropic)", + "openai": "OpenAI", + }.get(selected_provider, "Groq") + + if api_key: + _status_placeholder.markdown( + f'✓  Active — {_provider_display}', + unsafe_allow_html=True, + ) + else: + _status_placeholder.markdown( + '⚠  No LLM configured', + unsafe_allow_html=True, + ) + + st.markdown( + '
    🔒  Key is session-only — never logged, stored, or shared.
    ', + unsafe_allow_html=True, + ) + +# ── Claude Desktop / MCP ───────────────────────────────────────────────────────── +st.markdown("
    ", unsafe_allow_html=True) +st.markdown('', unsafe_allow_html=True) + +with st.container(border=True): + st.markdown( + '
    ' + '
    🖥️ Claude Desktop (MCP Integration)' + 'No API key needed
    ' + '
    ' + 'Connect Claude Desktop directly to MOSIP Nexus. Claude uses your own subscription ' + 'for the AI — MosipNexus only handles knowledge retrieval.' + '
    ', + unsafe_allow_html=True, + ) + + with st.expander("Setup guide — Claude Desktop"): + st.markdown(""" +**Step 1** — Open Claude Desktop → Settings → Developer → Edit Config + +**Step 2** — Add to `claude_desktop_config.json`: + +```json +{ + "mcpServers": { + "mosip-nexus": { + "command": "uv", + "args": [ + "--directory", "D:\\\\path\\\\to\\\\MosipNexus", + "run", "python", "mcp_server/server.py" + ], + "env": { + "PYTHONPATH": "D:\\\\path\\\\to\\\\MosipNexus", + "PG_CONNECTION": "postgresql+psycopg://mosip:mosip@localhost:5432/mosipnexus" + } + } + } +} +``` +*(Replace the path and PG_CONNECTION with your actual values.)* + +**Step 3** — Restart Claude Desktop → verify "mosip-nexus" appears under Developer → MCP Servers. + +**Step 4** — Ask Claude any MOSIP question. It calls `search_mosip` automatically and answers using your Claude subscription. +""") + +# ── Preferences ────────────────────────────────────────────────────────────────── +st.markdown("
    ", unsafe_allow_html=True) +st.markdown('', unsafe_allow_html=True) + +with st.container(border=True): + st.markdown( + '
    ' + 'Max chat history turns
    ' + '
    ' + 'Older turns are dropped to keep token usage low.
    ', + unsafe_allow_html=True, + ) + max_turns = st.slider( + "Max chat history turns", + min_value=5, max_value=30, + value=st.session_state.get("max_history_turns", 10), + step=5, + label_visibility="collapsed", + ) + st.session_state["max_history_turns"] = max_turns + +# ── About ───────────────────────────────────────────────────────────────────────── +st.markdown( + '
    ' + 'MOSIP Nexus v1.0  ·  ' + 'LangChain  ·  pgvector  ·  HuggingFace
    ' + '449 docs  ·  849 community threads  ·  797 GitHub issues  ·  ' + '1,738 Confluence pages  ·  6,566 source files' + '
    ', + unsafe_allow_html=True, +) diff --git a/MosipNexus/chain/__init__.py b/MosipNexus/chain/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/MosipNexus/chain/query_engine.py b/MosipNexus/chain/query_engine.py new file mode 100644 index 0000000..b42f050 --- /dev/null +++ b/MosipNexus/chain/query_engine.py @@ -0,0 +1,578 @@ +""" +Query Engine — the core RAG chain. + +Pipeline for each user question: + 1. Pure greeting → direct friendly reply (no RAG). + 2. Message starting with greeting → RAG answer prefixed with a brief greeting. + 3. Condense follow-up questions using chat history (LCEL condenser chain). + 4. Retrieve top-K chunks from all pgvector collections via MMR. + 5. Score confidence from the best chunk's cosine distance. + 6. Generate answer grounded strictly in context (Groq Llama 3.3). + 7. If retrieved context is irrelevant → emit [NO_DOC_SOURCE] marker. + 8. [NO_DOC_SOURCE] path → DuckDuckGo web search fallback. + 9. If web search also fails → source_type="none" (UI shows escalation options). + +LangSmith tracing is activated automatically when LANGCHAIN_TRACING_V2=true +and LANGCHAIN_API_KEY are set in the environment — no code changes needed. +""" + +from __future__ import annotations + +import re +import sys +from pathlib import Path +from typing import Any + +from langchain_core.messages import HumanMessage, SystemMessage +from langchain_core.output_parsers import StrOutputParser +from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder +from langchain_core.language_models.chat_models import BaseChatModel +from langchain_groq import ChatGroq + +sys.path.insert(0, str(Path(__file__).parent.parent)) +from config.settings import GROQ_API_KEY, GROQ_MODEL +from retrieval.retriever import retrieve, _ERROR_CODE_RE, _CODE_QUERY_RE + +# Detects "works locally but fails in hosted/staging/synergy/production" debugging questions. +# These require a fundamentally different answer shape: focus on environmental differences, +# not generic troubleshooting steps. +_ENV_DEBUG_RE = re.compile( + r"work(?:s|ed|ing)?\s+(?:fine\s+)?(?:locally|local|on\s+local)|" + r"local(?:ly)?\s+(?:it\s+)?work(?:s|ed)|" + r"(?:synergy|hosted|production|staging|remote)\s+(?:env(?:ironment)?|setup)", + re.IGNORECASE, +) + +_llm: ChatGroq | None = None +_condenser = None + + +def build_llm( + provider: str = "groq", + api_key: str | None = None, + model: str | None = None, +) -> BaseChatModel: + """Factory — returns a chat model for the given provider and key. + + api_key is required for all providers. For internal backend use (ingestion, + summarizer) the server's GROQ_API_KEY is used as fallback; user-facing + ask() enforces BYOK before reaching here. + """ + if provider == "anthropic": + from langchain_anthropic import ChatAnthropic + return ChatAnthropic( + model=model or "claude-haiku-4-5-20251001", + api_key=api_key, # type: ignore[arg-type] + ) + if provider == "openai": + from langchain_openai import ChatOpenAI + return ChatOpenAI( + model=model or "gpt-4o-mini", + api_key=api_key, # type: ignore[arg-type] + ) + # groq — api_key required for user queries; backend falls back to server key + return ChatGroq( + model=model or GROQ_MODEL, + api_key=api_key or GROQ_API_KEY, + ) + + +_NO_LLM_RESPONSE: dict = { + "answer": ( + "⚙️ **No LLM configured.**\n\n" + "To use the web interface, go to **⚙️ Settings** (sidebar) and enter your own " + "API key for Claude (Anthropic), OpenAI, or Groq.\n\n" + "Alternatively, use **Claude Desktop** with the MCP integration — " + "no API key needed, queries run on your own Claude subscription." + ), + "sources": [], + "source_type": "none", + "confidence": "n/a", + "similar_questions": [], +} + +_GREETINGS = { + "hi", "hello", "hey", "hola", "bonjour", "namaste", "vanakkam", + "ciao", "hallo", "salut", "ola", "howdy", "sup", "yo", + "good morning", "good afternoon", "good evening", "good night", + "thanks", "thank you", "bye", "goodbye", "ok", "okay", "great", +} + +_META_QUESTION_PHRASES = [ + "knowledge source", "knowledge base", "what sources", "what data", + "what do you know", "what can you help", "what can you do", + "who are you", "what are you", "tell me about yourself", + "how do you work", "how does this work", "what information do you have", + "what topics", "what are your capabilities", "what can i ask", +] + +_META_ANSWER = """\ +I am **MOSIP Nexus** — an AI assistant with deep knowledge of the MOSIP \ +(Modular Open Source Identity Platform) ecosystem. My knowledge comes from \ +five sources: + +1. **MOSIP Documentation** — all 449 pages from docs.mosip.io/1.2.0 \ +(architecture, modules, deployment guides, APIs) +2. **Community Forum** — Q&A threads from community.mosip.io, prioritising \ +accepted answers and highly-voted replies +3. **GitHub Issues** — issues and discussions from 25 active MOSIP \ +repositories +4. **Confluence** — internal Confluence spaces covering engineering, QA, \ +and product management +5. **MOSIP Source Code** — Java, YAML, SQL, XML, and properties files \ +from 71 MOSIP repositories (error constants, service implementations, \ +controllers, schemas) + +You can ask me anything about MOSIP modules (IDA, Registration, Resident \ +Services, Partner Management, Key Manager, Admin UI), error codes, \ +configuration, deployment, or integration. I support questions in any \ +language.\ +""" + +_NO_SOURCE_MARKER = "[NO_DOC_SOURCE]" + + +_CONDENSE_PROMPT = ChatPromptTemplate.from_messages([ + ("system", + "Given the conversation history and the latest question, rewrite the question " + "as a standalone search query that captures all necessary context. " + "Return ONLY the rewritten question, nothing else."), + MessagesPlaceholder("chat_history"), + ("human", "{input}"), +]) + + +def _build() -> None: + global _llm, _condenser + _llm = build_llm() + _condenser = _CONDENSE_PROMPT | _llm | StrOutputParser() + + +def _get_llm() -> BaseChatModel: + if _llm is None: + _build() + assert _llm is not None + return _llm + + +def _web_search(query: str, max_results: int = 4) -> list[dict]: + """Search DuckDuckGo and return result dicts with href, title, body.""" + try: + from duckduckgo_search import DDGS + with DDGS() as ddgs: + return list(ddgs.text(query, max_results=max_results)) + except Exception: + return [] + + +def _rate_limit_response() -> dict: + return { + "answer": ( + "⚠️ **Groq API rate limit reached.** The free tier allows 100,000 tokens per day. " + "Please wait a few minutes and try again, or check your usage at " + "[console.groq.com](https://console.groq.com)." + ), + "sources": [], + "source_type": "none", + "confidence": "n/a", + "similar_questions": [], + } + + +def _web_fallback_or_none( + question: str, + language: str, + fallback_answer: str | None = None, + llm: BaseChatModel | None = None, +) -> dict[str, Any]: + """Try a web search when the knowledge base has no usable context; otherwise + return a plain "not available" response instead of letting the LLM guess.""" + web_hits = _web_search(question) + if web_hits: + web_context = "\n\n".join( + f"[{h.get('title', '')}]({h['href']})\n{h['body']}" + for h in web_hits + ) + assert llm is not None, "llm must be provided to _web_fallback_or_none" + web_response = llm.invoke([ + SystemMessage(content=( + f"You are a helpful assistant. The MOSIP knowledge base did not have " + f"the answer. Use the web search results below to answer the question. " + f"Cite source URLs inline. Begin by noting this comes from external web " + f"sources, not MOSIP documentation. Respond in {language}." + )), + HumanMessage(content=f"Web results:\n{web_context}\n\nQuestion: {question}"), + ]) + return { + "answer": web_response.content, + "sources": [{"source": h["href"], "title": h.get("title", "")} for h in web_hits], + "source_type": "web", + "confidence": "medium", + "similar_questions": [], + } + + return { + "answer": fallback_answer or ( + "This information is not available in the MOSIP knowledge sources." + ), + "sources": [], + "source_type": "none", + "confidence": "low", + "similar_questions": [], + } + + +def _is_greeting(text: str) -> bool: + return text.strip().lower().rstrip("!.,?") in _GREETINGS + + +def _is_meta_question(text: str) -> bool: + lowered = text.strip().lower() + return any(phrase in lowered for phrase in _META_QUESTION_PHRASES) + + +def _starts_with_greeting(text: str) -> bool: + first = text.strip().lower().split()[0].rstrip("!.,?") if text.strip() else "" + return first in _GREETINGS + + +def _build_system_prompt( + language: str, + has_greeting: bool, + is_error_query: bool = False, + is_code_query: bool = False, + is_env_debug: bool = False, +) -> str: + """Build the system prompt for one RAG turn. + + is_env_debug and is_error_query can both be true simultaneously + (e.g. an error code that only appears in a hosted environment). + In that case env_debug takes format priority and error rules are appended. + """ + greeting_rule = ( + "Start with one warm sentence acknowledging the greeting, then answer directly.\n" + if has_greeting else "" + ) + if is_env_debug: + answer_format = ( + "This is an environment-comparison debugging question — the user says the same thing " + "works locally but fails in a hosted/remote environment (Synergy, production, staging, etc.). " + "Structure your answer as:\n" + " 1. Confirm the key insight: the biometric data / request payload itself is NOT the problem " + "(it works locally). The failure is in the hosted environment's configuration or version.\n" + " 2. IMPORTANT — do NOT treat HTTP status codes (401, 500, 403, etc.) as MOSIP error codes " + "(like IDA-MLC-009 or KER-ATH-401). In this context, 401 means the hosted service returned " + "HTTP 401 Unauthorized, and 500 means the hosted service threw an internal error. " + "Treat them as HTTP-level responses from that specific service (BQAT, SBI, biosdk-service, etc.).\n" + " 3. List what differs between local and hosted environments — focus on: " + "version/image tag mismatch, credential or API key requirements in the hosted env, " + "network policies or IP allowlists, config drift in values.yaml or application.properties.\n" + " 4. Give specific next steps to narrow down which env difference is causing it. " + "For 401 from a remote service: check whether the hosted service requires auth headers " + "the local Docker image does not. " + "For 500 from a remote service: check the hosted service pod logs for the actual stack trace.\n" + " 5. If the retrieved context includes community threads about this exact issue, " + "cite them by name. If those threads have no accepted answer, say so explicitly — " + "do not invent a resolution that isn't in the context.\n\n" + ) + if is_error_query: + answer_format += ( + "Additionally, this query references a specific MOSIP error code — " + "apply the error code rules: quote the exact constant, flag %s/%d as " + "runtime placeholders, and compare sibling error codes if present.\n\n" + ) + elif is_error_query: + answer_format = ( + "For this error code question, structure your answer as:\n" + " 1. Exact error definition — quote the constant from source code if available. " + "CRITICAL: if the message contains %s, %d, or any Java format specifier, state " + "explicitly that this is a runtime placeholder substituted with the actual offending " + "value in the API response. NEVER replace %s with a specific example value and present " + "it as the definition. Tell the user to read their actual error response to see what " + "field name was substituted.\n" + " 2. How this differs from sibling error codes in the same file — e.g. 'missing' vs " + "'present but invalid' — if sibling constants appear in the retrieved context.\n" + " 3. Most likely root causes specific to this error, ranked by likelihood. " + "Do NOT list generic causes that apply to any error — only causes grounded in the " + "retrieved context or in how this specific constant is used in the codebase.\n" + " 4. Step-by-step resolution — first step MUST be: check your actual error response " + "for the substituted field name (%s value), since that tells you exactly which " + "parameter is failing.\n" + " 5. How to verify the fix worked.\n\n" + ) + elif is_code_query: + answer_format = ( + "For this code/class question:\n" + " - Name the exact class(es) or file(s) from the retrieved context directly and immediately.\n" + " - State what the class does and which package/module it belongs to.\n" + " - Mention key methods if they are in the context.\n" + " - If multiple classes share the responsibility, list them in order of importance.\n" + " - If the exact class is not in the context, name the closest class you CAN identify " + "and clearly state what aspect of the question it covers.\n" + " - CRITICAL: if the only matching class in the retrieved context is from a demo, " + "test, sample, mock, or simulator package (e.g. io.mosip.*.demo.*, SampleSDK, " + "DemoService), you MUST state explicitly: 'This class is from the demo/test " + "application, NOT the production implementation.' Then describe what the production " + "class likely does based on the pattern, but make clear the exact production class " + "name is not in the available context.\n\n" + ) + else: + answer_format = ( + "Match your answer format to the question type — definitions get clear explanations, " + "how-to questions get numbered steps, comparisons get bullet lists. " + "Don't force a fixed structure onto every answer.\n\n" + ) + return ( + f"You are a senior MOSIP (Modular Open Source Identity Platform) engineer and " + f"first-level support expert. You have deep hands-on knowledge of all MOSIP modules: " + f"ID Authentication (IDA), Registration Client, Registration Processor, Resident Services, " + f"Partner Management, Key Manager, Admin UI, and the full Kubernetes deployment stack.\n\n" + f"Answer like a knowledgeable colleague responding in a Slack channel — direct, complete, " + f"actionable. You ARE the expert. Never say 'consult the documentation', " + f"'check the forums', or 'contact the MOSIP team'.\n\n" + f"{answer_format}" + f"RULE #1 — FABRICATION IS FORBIDDEN (read this before anything else):\n" + f"Every class name, method name, CLI command, Helm chart name, repository name, " + f"configuration key, file path, and API endpoint you write MUST appear word-for-word " + f"in the retrieved context below. If it is not in the context, do NOT write it. " + f"Do not guess. Do not complete a plausible-sounding name. Do not write 'HelmInstaller', " + f"'installChart', 'mosip/mosip-id-auth', or any other specific name unless those exact " + f"strings appear in the retrieved context. When the specific name is absent, say so — " + f"e.g. 'the exact class/command is not in the available documentation' — then explain " + f"the concept or point to the repository where the user can find it. " + f"A vague but honest answer is far more valuable than a detailed but fabricated one. " + f"Contributors who follow fabricated class names or commands lose hours of work.\n\n" + f"STRICT RULES — violating these makes the answer useless:\n" + f"{greeting_rule}" + f"- NEVER end with or add a 'Note:' or 'Note that' sentence. NEVER use hedging phrases: " + f"'it appears that', 'may be involved', 'it is possible that', " + f"'I would need more information', 'cannot determine without more context', " + f"'would need to review the codebase', 'more information is required', " + f"'the exact answer depends on', 'these steps may vary', 'may vary depending on', " + f"'may vary depending on the version', 'the actual requirements may vary', " + f"'the specific configuration settings and classes may vary', " + f"'depending on the specific implementation', 'depending on your setup', " + f"'depending on the version of MOSIP', 'depending on the specific version', " + f"'refer to the MOSIP documentation', 'refer to the documentation', " + f"'it is recommended to refer', 'consult the documentation', 'check the documentation'. " + f"State what you know directly. If something varies by version, name the version you are " + f"describing and stop — do not add a trailing disclaimer.\n" + f"- Give ONE concrete answer first. Then add caveats only if essential.\n" + f"- If the retrieved context gives conflicting version numbers or specs, pick the most " + f"specific/conservative value and state it clearly — do NOT list both and confuse the reader.\n" + f"- Synthesize all retrieved context into a complete, useful answer.\n" + f"- Do NOT start with 'According to the documentation' or similar phrases.\n" + f"- If partial information is all you have, give that information clearly and tell the user " + f"specifically what log entry, config key, or environment detail would confirm the rest — " + f"never stop at 'I don't have enough information'.\n" + f"- Prioritise content marked [ACCEPTED ANSWER] — these are verified solutions.\n" + f"- GitHub Issues in the context show real error reports with real solutions — use them.\n" + f"- When source code file names appear in context, cite them by name and explain their role.\n" + f"- When community threads appear in the context about the same issue as the query, " + f"ALWAYS cite them explicitly by their exact title from the context. " + f"If the thread contains a resolution or ACCEPTED ANSWER, summarise it. " + f"If the thread has no accepted answer, say so explicitly — " + f"this signals an unresolved known issue the user should follow or escalate.\n" + f"- ONLY output {_NO_SOURCE_MARKER} at the very start if the question is completely " + f"unrelated to MOSIP (e.g. weather, sports, general coding unrelated to MOSIP). " + f"For any MOSIP question — even with limited context — give your best answer.\n" + f"- Always respond in {language}. This is mandatory.\n\n" + f"Retrieved context (your primary source — use it fully):\n{{context}}" + ) + + +def ask( + question: str, + chat_history: list, + language: str = "English", + llm_provider: str = "groq", + llm_api_key: str | None = None, + llm_model: str | None = None, +) -> dict[str, Any]: + """Run the full RAG pipeline for one user turn. + + Args: + question: Raw user message. + chat_history: LangChain HumanMessage / AIMessage objects from prior turns. + language: Human-readable language name for the LLM response language. + llm_provider: "groq" | "anthropic" | "openai" — defaults to server Groq key. + llm_api_key: User-supplied API key (BYOK); None uses server default. + llm_model: Optional model override (e.g. "claude-haiku-4-5-20251001"). + + Returns: + answer (str): generated response text. + sources (list[dict]): metadata of retrieved chunks; empty for chat/no-source. + source_type (str): "mosip_docs" | "community" | "mixed" | "chat" | "none". + confidence (str): "high" | "medium" | "low" | "n/a". + similar_questions (list[str]): titles of related community threads (may be empty). + """ + # Require the user to supply their own API key — no server fallback. + if not llm_api_key: + return _NO_LLM_RESPONSE + + llm = build_llm(llm_provider, llm_api_key, llm_model) + condenser = _CONDENSE_PROMPT | llm | StrOutputParser() + + # ── Pure greeting ────────────────────────────────────────────────────────── + if _is_greeting(question): + response = llm.invoke([ + SystemMessage(content=( + f"You are a friendly MOSIP assistant. Respond naturally to the greeting " + f"in {language} and invite the user to ask about MOSIP." + )), + HumanMessage(content=question), + ]) + return { + "answer": response.content, + "sources": [], + "source_type": "chat", + "confidence": "n/a", + "similar_questions": [], + } + + # ── Meta-question (about the system itself) ──────────────────────────────── + if _is_meta_question(question): + return { + "answer": _META_ANSWER, + "sources": [], + "source_type": "chat", + "confidence": "n/a", + "similar_questions": [], + } + + # ── Condense follow-up questions ─────────────────────────────────────────── + try: + standalone = ( + condenser.invoke({"input": question, "chat_history": chat_history}) + if chat_history + else question + ) + except Exception as e: + if "rate_limit" in str(e).lower() or "429" in str(e): + return _rate_limit_response() + raise + + # ── Retrieve from both collections ───────────────────────────────────────── + docs, confidence = retrieve(standalone) + context = "\n\n".join(d.page_content for d in docs) + + # No chunks retrieved at all — don't let the LLM guess from pretrained + # knowledge, go straight to the same web-fallback path as [NO_DOC_SOURCE]. + if not docs: + return _web_fallback_or_none(question, language, llm=llm) + + # ── Build QA chain ───────────────────────────────────────────────────────── + has_greeting = _starts_with_greeting(question) + # Check both original question and condensed form — condensation can strip env signals + # (e.g. "Synergy environment", "works locally") from a long community-post paste + is_env_debug = bool(_ENV_DEBUG_RE.search(question)) or bool(_ENV_DEBUG_RE.search(standalone)) + is_error_query = bool(_ERROR_CODE_RE.search(standalone)) + # env_debug + error_query can both be true (e.g. "IDA-MLC-009 in Synergy, works locally") + # env_debug takes format priority but error_query rules still apply inside that format. + # code_query is mutually exclusive with both since code analysis ≠ debugging/error context. + is_code_query = not is_error_query and not is_env_debug and bool(_CODE_QUERY_RE.search(standalone)) + system_prompt = _build_system_prompt( + language, has_greeting, + is_error_query=is_error_query, + is_code_query=is_code_query, + is_env_debug=is_env_debug, + ) + + qa_prompt = ChatPromptTemplate.from_messages([ + ("system", system_prompt), + MessagesPlaceholder("chat_history"), + ("human", "{input}"), + ]) + qa_chain = qa_prompt | llm | StrOutputParser() + + try: + answer = qa_chain.invoke({ + "input": question, + "chat_history": chat_history, + "context": context, + }) + except Exception as e: + if "rate_limit" in str(e).lower() or "429" in str(e): + return _rate_limit_response() + raise + + # ── Confidence override — downgrade when LLM admits info wasn't found ──────── + _NOT_FOUND_PHRASES = ( + "not in the available documentation", + "not available in the", + "not in the context", + "is not available in", + "cannot find", + "not found in", + "no information available", + "not provided in", + "not mentioned in", + ) + if any(p in answer.lower() for p in _NOT_FOUND_PHRASES): + confidence = "low" + + # ── [NO_DOC_SOURCE] → try DuckDuckGo web search fallback ───────────────── + if _NO_SOURCE_MARKER in answer: + fallback_answer = answer.replace(_NO_SOURCE_MARKER, "").lstrip() + return _web_fallback_or_none(question, language, fallback_answer, llm=llm) + + # ── Classify sources ─────────────────────────────────────────────────────── + source_types = {d.metadata.get("source_type", "") for d in docs} + if source_types == {"docs"}: + source_type = "mosip_docs" + elif source_types == {"community"}: + source_type = "community" + elif source_types == {"github"}: + source_type = "github" + elif source_types == {"code"}: + source_type = "code" + elif source_types == {"confluence"}: + source_type = "confluence" + elif source_types == {"jira"}: + source_type = "jira" + elif source_types == {"youtube"}: + source_type = "youtube" + else: + source_type = "mixed" + + # Show top 2 per collection — enough for attribution without overwhelming the user + _by_type: dict[str, list] = {} + for d in docs: + t = d.metadata.get("source_type", "other") + _by_type.setdefault(t, []).append(d.metadata) + + # Remove doc URLs that are ancestors of a more specific URL already in the list + # e.g. drop /identity-verification when /identity-verification/id-authentication is present + _doc_candidates = _by_type.get("docs", [])[:2] + _doc_urls = [m.get("source", "") for m in _doc_candidates] + _doc_filtered = [ + m for m in _doc_candidates + if not any( + other != m.get("source", "") and other.startswith(m.get("source", "") + "/") + for other in _doc_urls + ) + ] + + sources = ( + _doc_filtered + + _by_type.get("community", [])[:2] + + _by_type.get("github", [])[:1] + + _by_type.get("code", [])[:1] + + _by_type.get("confluence", [])[:1] + + _by_type.get("youtube", [])[:2] + ) + + # ── Similar questions (community titles in the results) ──────────────────── + similar_questions = list({ + d.metadata.get("title", "") + for d in docs + if d.metadata.get("source_type") == "community" and d.metadata.get("title") + })[:3] + + return { + "answer": answer, + "sources": sources, + "source_type": source_type, + "confidence": confidence, + "similar_questions": similar_questions, + } diff --git a/MosipNexus/chain/summarizer.py b/MosipNexus/chain/summarizer.py new file mode 100644 index 0000000..6fc1270 --- /dev/null +++ b/MosipNexus/chain/summarizer.py @@ -0,0 +1,64 @@ +""" +Thread Summarizer. + +Condenses long community threads (multiple answers) into a structured summary +with key points and the final resolution. Called when a thread has more than +a threshold number of answers to avoid overwhelming the LLM context window. +""" + +from __future__ import annotations + +import os +import sys +from pathlib import Path + +from langchain_core.language_models.chat_models import BaseChatModel +from langchain_core.messages import HumanMessage, SystemMessage + +sys.path.insert(0, str(Path(__file__).parent.parent)) +from chain.query_engine import build_llm + +_llm: BaseChatModel | None = None + +MIN_ANSWERS_TO_SUMMARIZE = 4 # threads with fewer answers are used as-is + + +def _get_llm() -> BaseChatModel: + global _llm + if _llm is None: + _llm = build_llm() + return _llm + + +def summarize_thread(title: str, answers: list[dict], language: str = "English") -> str: + """Summarise a list of community answer dicts into a concise thread summary. + + Args: + title: Topic title (used for context). + answers: List of answer dicts with keys: text, accepted, vote_count. + language: Language to respond in. + + Returns: + A markdown-formatted summary string. + """ + if len(answers) < MIN_ANSWERS_TO_SUMMARIZE: + # Short thread: just return the best answer directly + best = next((a for a in answers if a.get("accepted")), answers[0] if answers else None) + return best["text"] if best else "" + + # Build a condensed representation of all answers + answer_block = "" + for i, ans in enumerate(answers, 1): + tag = " [ACCEPTED]" if ans.get("accepted") else f" [{ans.get('vote_count', 0)} votes]" + answer_block += f"\n--- Answer {i}{tag} ---\n{ans['text'][:600]}\n" + + llm = _get_llm() + response = llm.invoke([ + SystemMessage(content=( + f"You are a technical assistant. Summarise the following community thread answers " + f"into: (1) 2-3 key points, (2) the final resolution or recommended approach. " + f"Be concise and factual. Respond in {language}." + )), + HumanMessage(content=f"Thread: {title}\n\n{answer_block}"), + ]) + return response.content diff --git a/MosipNexus/config/__init__.py b/MosipNexus/config/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/MosipNexus/config/settings.py b/MosipNexus/config/settings.py new file mode 100644 index 0000000..02c84aa --- /dev/null +++ b/MosipNexus/config/settings.py @@ -0,0 +1,190 @@ +""" +Central configuration for MOSIP Nexus. +All tuneable constants and environment bindings live here. +Import this module everywhere instead of reading os.getenv() directly. +""" + +import os +from pathlib import Path + +from dotenv import load_dotenv + +load_dotenv() + +# ── Paths ────────────────────────────────────────────────────────────────────── +ROOT_DIR = Path(__file__).parent.parent +DATA_DIR = ROOT_DIR / "data" +DOCS_FILE = DATA_DIR / "mosip_docs.json" +COMMUNITY_FILE = DATA_DIR / "mosip_community.json" + +# ── pgvector connection ──────────────────────────────────────────────────────── +# Format: postgresql+psycopg://user:password@host:port/dbname +# On Rancher: set PG_CONNECTION in the nexus-env Secret. +PG_CONNECTION = os.getenv( + "PG_CONNECTION", + "postgresql+psycopg://mosip:mosip@localhost:5432/mosipnexus", +) + +DATA_DIR.mkdir(exist_ok=True) + +# ── Crawl targets ────────────────────────────────────────────────────────────── +DOCS_BASE_URL = "https://docs.mosip.io/1.2.0" +DOCS_SITEMAP_URL = f"{DOCS_BASE_URL}/sitemap.xml" +COMMUNITY_BASE_URL = "https://community.mosip.io" + +# ── Embeddings ───────────────────────────────────────────────────────────────── +EMBED_MODEL = "intfloat/multilingual-e5-base" # 768-dim, 100+ languages + +# ── pgvector collection names ────────────────────────────────────────────────── +DOCS_COLLECTION = "mosip_docs" +COMMUNITY_COLLECTION = "mosip_community" + +# ── Chunking ─────────────────────────────────────────────────────────────────── +CHUNK_SIZE = 900 +CHUNK_OVERLAP = 150 + +# ── Pipeline version ─────────────────────────────────────────────────────────── +# A hash of parameters that, if changed, require a full re-embed from scratch. +# run_update.py compares this against the value saved in crawl_state.json and +# triggers a full rebuild automatically when they differ. +# You never need to edit this manually — it is computed at import time. +import hashlib as _hashlib +PIPELINE_VERSION = _hashlib.md5( + f"{EMBED_MODEL}|{CHUNK_SIZE}|{CHUNK_OVERLAP}".encode() +).hexdigest()[:8] + +# ── Retrieval ────────────────────────────────────────────────────────────────── +RETRIEVAL_K = 8 # final chunks returned per collection +RETRIEVAL_FETCH_K = 30 # MMR candidate pool +MAX_CONTEXT_DOCS = 10 + +# Cosine similarity (1 = identical). Above this → treat as duplicate question. +DEDUP_THRESHOLD = 0.88 + +# Similarity thresholds for confidence scoring (higher = better, range [0, 1]). +# Uses LangChain relevance scores so values are metric-agnostic (L2 or cosine). +# similarity >= 0.75 → high confidence +# similarity >= 0.55 → medium confidence +# else → low confidence (answer may be unreliable) +CONFIDENCE_HIGH = 0.75 +CONFIDENCE_MEDIUM = 0.55 + +# ── LLM ─────────────────────────────────────────────────────────────────────── +GROQ_MODEL = "llama-3.3-70b-versatile" +GROQ_API_KEY = os.getenv("GROQ_API_KEY", "") + +# ── Email notifications (optional) ──────────────────────────────────────────── +# Used to alert the MOSIP team when a question cannot be answered. +# Gmail: use an App Password (not your account password). +# Generate at: Google Account → Security → App passwords +# Port 465 = SMTP_SSL | Port 587 = STARTTLS (most providers) +SMTP_HOST = os.getenv("SMTP_HOST", "smtp.gmail.com") +SMTP_PORT = int(os.getenv("SMTP_PORT", "587")) +SMTP_USER = os.getenv("SMTP_USER", "") +SMTP_PASSWORD = os.getenv("SMTP_PASSWORD", "") +NOTIFY_EMAIL = os.getenv("NOTIFY_EMAIL", "") # recipient: MOSIP team address + +# ── LangSmith (optional observability) ──────────────────────────────────────── +# LangChain reads these env vars automatically when set — no code changes needed. +LANGSMITH_TRACING = os.getenv("LANGCHAIN_TRACING_V2", "false").lower() == "true" +LANGSMITH_PROJECT = os.getenv("LANGCHAIN_PROJECT", "mosip-nexus") + +# ── Language detection ───────────────────────────────────────────────────────── +MIN_LANG_DETECT_CHARS = 20 +LANG_DETECT_CONFIDENCE = 0.95 + +# ── Community crawler ────────────────────────────────────────────────────────── +COMMUNITY_MAX_PAGES = 50 # pages of /latest.json (100 topics each) +COMMUNITY_MIN_POSTS = 1 # skip topics with no replies +CRAWL_DELAY_SECS = 0.4 # polite delay between requests + +# ── GitHub crawler (optional — add GITHUB_TOKEN to .env for 5k req/hr) ──────── +GITHUB_TOKEN = os.getenv("GITHUB_TOKEN", "") +GITHUB_FILE = DATA_DIR / "mosip_github.json" +GITHUB_COLLECTION = "mosip_github" +GITHUB_RETRIEVAL_K = 6 # chunks returned from GitHub collection +GITHUB_MAX_ISSUES = 500 # max closed issues to fetch per repo on first run +GITHUB_ORG = "mosip" # GitHub organisation to auto-discover repos from + +# Repos to always skip regardless of filter rules (noise / already covered elsewhere) +GITHUB_REPO_EXCLUDE = { + "documentation", # already crawled by docs_crawler + "mosip-acceptance-tests", # test harness — not useful for support answers + "mosip-functional-tests", # test harness + "performance-test-scripts", # benchmarks only + "mosip-ref-impl", # reference implementation demo — misleading for prod support + "mosip-data", # seed data files + ".github", # org-level GitHub config +} + +# Languages we care about. Repos in other languages (HTML, CSS, Jupyter) are skipped. +GITHUB_USEFUL_LANGUAGES = {"Java", "Python", "Shell", "TypeScript", "JavaScript", "Kotlin", "Scala"} + +# Fallback list — used when GITHUB_TOKEN is absent (can't call org API without auth) +GITHUB_REPOS = [ + "mosip/id-authentication", + "mosip/registration", + "mosip/registration-client", + "mosip/commons", + "mosip/partner-management-services", + "mosip/resident-services", + "mosip/keymanager", + "mosip/admin-ui", + "mosip/mosip-config", + "mosip/mosip-infra", + "mosip/mosip-helm", + "mosip/bio-utils", + "mosip/admin-services", + "mosip/print", + "mosip/mosip-openid-bridge", +] + +# ── Code crawler — MOSIP source code for deep technical Q&A ─────────────────── +CODE_FILE = DATA_DIR / "mosip_code.json" +CODE_COLLECTION = "mosip_code" +CODE_RETRIEVAL_K = 6 # chunks returned from code collection per query + +# File extensions to crawl from each repo (ordered by value for debugging) +CODE_INCLUDE_EXTENSIONS = {".java", ".yaml", ".yml", ".properties", ".sql", ".xml"} + +# Directory/file patterns to skip — test code and generated files add noise +CODE_EXCLUDE_PATTERNS = { + "test", "Test", "IT.java", "generated", "target/", "node_modules/", + "__pycache__", ".mvn", "vendor", +} + +# Filenames that are highest priority (error constants, service interfaces) +# These are fetched first and always included regardless of size limits +CODE_PRIORITY_PATTERNS = { + "ErrorConstants", "ExceptionConstants", "StatusCode", "ErrorCode", + "ServiceImpl", "Controller", "Handler", "Exception", +} + +# Max file size in bytes — skip huge generated/minified files +CODE_MAX_FILE_BYTES = 80_000 # ~2,000 lines of Java + +# ── Confluence crawler (optional — fill credentials in .env) ────────────────── +CONFLUENCE_URL = os.getenv("CONFLUENCE_URL", "") # https://org.atlassian.net/wiki +CONFLUENCE_USER = os.getenv("CONFLUENCE_USER", "") # email used to log in +CONFLUENCE_TOKEN = os.getenv("CONFLUENCE_TOKEN", "") # Atlassian API token +CONFLUENCE_SPACE_KEYS = [k.strip() for k in os.getenv("CONFLUENCE_SPACE_KEYS", "MOSIP").split(",") if k.strip()] +CONFLUENCE_FILE = DATA_DIR / "mosip_confluence.json" +CONFLUENCE_COLLECTION = "mosip_confluence" + +# ── Jira crawler (optional — fill credentials in .env) ──────────────────────── +JIRA_URL = os.getenv("JIRA_URL", "") # https://org.atlassian.net +JIRA_USER = os.getenv("JIRA_USER", "") +JIRA_TOKEN = os.getenv("JIRA_TOKEN", "") +JIRA_PROJECT_KEYS = [k.strip() for k in os.getenv("JIRA_PROJECT_KEYS", "MOSIP").split(",") if k.strip()] +JIRA_FILE = DATA_DIR / "mosip_jira.json" +JIRA_COLLECTION = "mosip_jira" + +# ── YouTube crawler ─────────────────────────────────────────────────────────── +YOUTUBE_API_KEY = os.getenv("YOUTUBE_API_KEY", "") +YOUTUBE_CHANNEL_HANDLE = os.getenv("YOUTUBE_CHANNEL_HANDLE", "mosip16") + +YOUTUBE_FILE = DATA_DIR / "mosip_youtube.json" +YOUTUBE_COLLECTION = "mosip_youtube" + +# ── HTTP headers ─────────────────────────────────────────────────────────────── +HTTP_HEADERS = {"User-Agent": "Mozilla/5.0 (compatible; MosipNexusBot/1.0)"} diff --git a/MosipNexus/crawler/__init__.py b/MosipNexus/crawler/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/MosipNexus/crawler/code_crawler.py b/MosipNexus/crawler/code_crawler.py new file mode 100644 index 0000000..efec4b2 --- /dev/null +++ b/MosipNexus/crawler/code_crawler.py @@ -0,0 +1,246 @@ +""" +Code Crawler — Stage 1d. + +Fetches MOSIP source code files from GitHub repositories and prepares them +for embedding into the mosip_code ChromaDB collection. + +Why source code matters for a support chatbot: + - Error code constants are DEFINED in Java files — e.g. IDA-MLC-009 is a string + literal in IdAuthenticationErrorConstants.java with a comment explaining it. + - Service implementation files show exactly what validation is performed and + what triggers each error — the "why" behind error codes. + - Configuration files show what parameters control behaviour. + +Repo discovery: + Uses the same get_org_repos() function as github_crawler — auto-discovers all + relevant repos in the MOSIP org and uses each repo's own default_branch. + Most repos are on 'master'; some use 'main' or a version branch like '1.2.0'. + Only the default branch of each repo is crawled — feature branches are not + relevant for a support chatbot and would add noise. + +Strategy (smart, not exhaustive): + 1. Priority files — *ErrorConstants*, *ServiceImpl*, *Controller*, etc. + Always fetched. These define what errors mean and why. + 2. Standard files — other .java, .yaml, .properties files, up to per-repo limit. + 3. Skip patterns — test files, generated code, build output — just noise. + +Output: data/mosip_code.json (same format as other data files) +""" + +from __future__ import annotations + +import base64 +import json +import sys +import time +from pathlib import Path + +import requests + +sys.path.insert(0, str(Path(__file__).parent.parent)) +from config.settings import ( + CODE_EXCLUDE_PATTERNS, CODE_FILE, CODE_INCLUDE_EXTENSIONS, + CODE_MAX_FILE_BYTES, CODE_PRIORITY_PATTERNS, + CRAWL_DELAY_SECS, GITHUB_TOKEN, +) +from crawler.github_crawler import get_org_repos + +_GITHUB_API = "https://api.github.com" + +# Per-repo limits to keep total size manageable on first run +_PRIORITY_LIMIT_PER_REPO = 100 # always fetch these +_STANDARD_LIMIT_PER_REPO = 200 # regular files after priority + + +def _headers() -> dict: + h = {"Accept": "application/vnd.github.v3+json"} + if GITHUB_TOKEN: + h["Authorization"] = f"token {GITHUB_TOKEN}" + return h + + +def _is_excluded(path: str) -> bool: + """Return True if the path matches any exclusion pattern.""" + return any(pat in path for pat in CODE_EXCLUDE_PATTERNS) + + +def _is_priority(name: str) -> bool: + """Return True if the filename matches any priority pattern.""" + return any(pat in name for pat in CODE_PRIORITY_PATTERNS) + + +def _ext(name: str) -> str: + return Path(name).suffix.lower() + + +def get_repo_file_tree(repo: str, branch: str = "master") -> tuple[list[dict], str]: + """Return the full recursive file tree for a repo branch and the resolved branch name. + + Falls back to 'main', 'master', 'develop' if the requested branch doesn't exist. + Returns (entries, resolved_branch) so callers can build correct blob URLs. + """ + for ref in (branch, "main", "master", "develop"): + url = f"{_GITHUB_API}/repos/{repo}/git/trees/{ref}?recursive=1" + res = requests.get(url, headers=_headers(), timeout=30) + if res.ok: + tree = res.json().get("tree", []) + print(f" {repo}: {len(tree)} entries in tree (branch: {ref})") + return [ + e for e in tree + if e.get("type") == "blob" + and _ext(e["path"]) in CODE_INCLUDE_EXTENSIONS + and not _is_excluded(e["path"]) + and e.get("size", 0) <= CODE_MAX_FILE_BYTES + ], ref + if res.status_code == 409: + continue # empty repo or branch not found + print(f" {repo}: could not fetch tree") + return [], branch + + +def fetch_file_content(repo: str, file_path: str) -> str | None: + """Fetch the decoded content of one file via the GitHub contents API.""" + url = f"{_GITHUB_API}/repos/{repo}/contents/{file_path}" + try: + res = requests.get(url, headers=_headers(), timeout=30) + if not res.ok: + return None + data = res.json() + if data.get("encoding") == "base64": + return base64.b64decode(data["content"]).decode("utf-8", errors="replace") + return data.get("content", "") + except Exception: + return None + + +def crawl_repo(repo: str, branch: str = "master") -> list[dict]: + """Crawl one repo: fetch priority files first, then standard files. + + Priority files (ErrorConstants, ServiceImpl, etc.) are always fetched. + Standard files fill the remaining quota up to _STANDARD_LIMIT_PER_REPO. + """ + print(f"\n Crawling code in {repo} ...") + entries, resolved_branch = get_repo_file_tree(repo, branch) + if not entries: + return [] + + # Separate priority vs standard files + priority = [e for e in entries if _is_priority(Path(e["path"]).name)] + standard = [e for e in entries if not _is_priority(Path(e["path"]).name)] + + print(f" {len(priority)} priority files, {len(standard)} standard files") + + results: list[dict] = [] + + def _fetch_and_store(entry: dict) -> bool: + file_path = entry["path"] + content = fetch_file_content(repo, file_path) + time.sleep(CRAWL_DELAY_SECS) + if not content or len(content.strip()) < 50: + return False + + lang = _ext(file_path).lstrip(".") + file_url = f"https://github.com/{repo}/blob/{resolved_branch}/{file_path}" + results.append({ + "source_type": "code", + "url": file_url, + "title": Path(file_path).name, + "repo": repo, + "file_path": file_path, + "language": lang, + "content": content, + }) + return True + + # Fetch priority files (no limit) + fetched_priority = 0 + for entry in priority[:_PRIORITY_LIMIT_PER_REPO]: + if _fetch_and_store(entry): + fetched_priority += 1 + + # Fill remaining quota with standard files + fetched_standard = 0 + for entry in standard[:_STANDARD_LIMIT_PER_REPO]: + if _fetch_and_store(entry): + fetched_standard += 1 + + print(f" Done: {fetched_priority} priority + {fetched_standard} standard = {len(results)} files") + return results + + +def crawl_all(repos: list[dict] | None = None) -> list[dict]: + """Crawl all MOSIP repos for source code. + + repos, if provided, must be a list of dicts with 'full_name' and 'default_branch' + (same shape as get_org_repos() output). When None, auto-discovers via get_org_repos(). + """ + repo_metas = repos or get_org_repos() + all_results: list[dict] = [] + for meta in repo_metas: + full_name = meta["full_name"] + branch = meta.get("default_branch", "master") + results = crawl_repo(full_name, branch) + all_results.extend(results) + print(f" Running total: {len(all_results)} files") + return all_results + + +def crawl_incremental(state: dict) -> list[dict]: + """Incremental code update: re-fetch files whose SHA has changed. + + Compares the current tree SHA against saved SHAs in crawl state. + Only files with a new SHA are re-fetched — unchanged files are skipped. + Uses get_org_repos() to discover repos dynamically (picks up new repos automatically). + """ + code_state: dict = state.get("code", {}) + all_new: list[dict] = [] + + for meta in get_org_repos(): + repo = meta["full_name"] + branch = meta.get("default_branch", "master") + + saved_shas: dict = code_state.get(repo, {}).get("file_shas", {}) + entries, resolved_branch = get_repo_file_tree(repo, branch) + new_entries = [ + e for e in entries + if saved_shas.get(e["path"]) != e.get("sha", "") + ] + if not new_entries: + print(f" {repo}: no code changes detected.") + continue + + print(f" {repo}: {len(new_entries)} files changed - fetching...") + for entry in new_entries: + file_path = entry["path"] + content = fetch_file_content(repo, file_path) + time.sleep(CRAWL_DELAY_SECS) + if not content or len(content.strip()) < 50: + continue + + lang = _ext(file_path).lstrip(".") + all_new.append({ + "source_type": "code", + "url": f"https://github.com/{repo}/blob/{resolved_branch}/{file_path}", + "title": Path(file_path).name, + "repo": repo, + "file_path": file_path, + "language": lang, + "content": content, + "_sha": entry.get("sha", ""), + }) + + return all_new + + +if __name__ == "__main__": + if not GITHUB_TOKEN: + print("⚠️ GITHUB_TOKEN not set. Rate limited to 60 req/hr. " + "Add it to .env for 5,000 req/hr.") + + print("MOSIP Code Crawler - fetching source files from all repos...") + results = crawl_all() + + with open(CODE_FILE, "w", encoding="utf-8") as f: + json.dump(results, f, indent=2, ensure_ascii=False) + + print(f"\nCollected {len(results)} source files -> {CODE_FILE}") diff --git a/MosipNexus/crawler/community_crawler.py b/MosipNexus/crawler/community_crawler.py new file mode 100644 index 0000000..07d1f81 --- /dev/null +++ b/MosipNexus/crawler/community_crawler.py @@ -0,0 +1,193 @@ +""" +Community Crawler — Stage 1b. + +Uses the Discourse JSON API to crawl community.mosip.io. +For each topic it extracts the question, all answers, the accepted answer, +tags, vote counts, and the topic URL. Output: data/mosip_community.json. + +Discourse API endpoints used: + GET /latest.json?page=N — paginated list of topic stubs + GET /t/{id}.json — full topic with all posts +""" + +import json +import sys +import time +from pathlib import Path + +import requests +from bs4 import BeautifulSoup +from markdownify import markdownify + +sys.path.insert(0, str(Path(__file__).parent.parent)) +from config.settings import ( + COMMUNITY_FILE, COMMUNITY_BASE_URL, + HTTP_HEADERS, CRAWL_DELAY_SECS, COMMUNITY_MAX_PAGES, COMMUNITY_MIN_POSTS, +) + + +def _html_to_text(html: str) -> str: + """Convert Discourse cooked HTML to clean plain text.""" + return markdownify(html, heading_style="ATX", strip=["script", "style"]).strip() + + +def get_topic_ids(max_pages: int = COMMUNITY_MAX_PAGES) -> list[int]: + """Paginate /latest.json and collect all topic IDs.""" + ids: list[int] = [] + for page in range(max_pages): + url = f"{COMMUNITY_BASE_URL}/latest.json?page={page}" + try: + res = requests.get(url, headers=HTTP_HEADERS, timeout=30) + res.raise_for_status() + topics = res.json().get("topic_list", {}).get("topics", []) + if not topics: + break + for t in topics: + if t.get("posts_count", 0) > COMMUNITY_MIN_POSTS: + ids.append(t["id"]) + print(f" Page {page}: {len(topics)} topics (total so far: {len(ids)})") + except Exception as e: + print(f" Page {page} error: {e}") + time.sleep(CRAWL_DELAY_SECS) + return ids + + +def fetch_topic(topic_id: int) -> dict | None: + """Fetch a full topic and structure it for ingestion. + + Returns a dict with: + title, url, tags, question, answers (list), accepted_answer (str|None) + Returns None if the topic cannot be fetched or has no content. + """ + url = f"{COMMUNITY_BASE_URL}/t/{topic_id}.json" + try: + res = requests.get(url, headers=HTTP_HEADERS, timeout=30) + res.raise_for_status() + data = res.json() + except Exception as e: + print(f" ERR topic {topic_id}: {e}") + return None + + title = data.get("title", "") + raw_tags = data.get("tags", []) + tags = [t["name"] if isinstance(t, dict) else str(t) for t in raw_tags] + slug = data.get("slug", str(topic_id)) + topic_url = f"{COMMUNITY_BASE_URL}/t/{slug}/{topic_id}" + + posts = data.get("post_stream", {}).get("posts", []) + if not posts: + return None + + question_html = posts[0].get("cooked", "") + question_text = _html_to_text(question_html) + + answers = [] + accepted_answer: str | None = None + + for post in posts[1:]: + text = _html_to_text(post.get("cooked", "")).strip() + if not text: + continue + vote_count = post.get("like_count", 0) + is_accepted = bool(post.get("accepted_answer", False)) + answers.append({ + "text": text, + "vote_count": vote_count, + "accepted": is_accepted, + }) + if is_accepted and accepted_answer is None: + accepted_answer = text + + # Sort: accepted first, then by votes descending + answers.sort(key=lambda a: (not a["accepted"], -a["vote_count"])) + + return { + "source_type": "community", + "url": topic_url, + "title": title, + "tags": tags, + "question": question_text, + "answers": answers, + "accepted_answer": accepted_answer, + } + + +def get_new_topic_ids(max_topic_id: int) -> list[int]: + """Return only topic IDs created after max_topic_id. + + Discourse returns topics newest-first, so pagination stops as soon as all + topics on a page are older than the last known ID — no need to scan all pages. + """ + new_ids: list[int] = [] + for page in range(COMMUNITY_MAX_PAGES): + url = f"{COMMUNITY_BASE_URL}/latest.json?page={page}" + try: + res = requests.get(url, headers=HTTP_HEADERS, timeout=30) + res.raise_for_status() + topics = res.json().get("topic_list", {}).get("topics", []) + except Exception as e: + print(f" Page {page} error: {e}") + break + + if not topics: + break + + page_ids = [t["id"] for t in topics if t.get("posts_count", 0) > COMMUNITY_MIN_POSTS] + new_on_page = [tid for tid in page_ids if tid > max_topic_id] + new_ids.extend(new_on_page) + + # If every topic on this page is already known, stop paginating + if len(new_on_page) < len(page_ids): + print(f" Reached known topics at page {page} — stopping.") + break + + time.sleep(CRAWL_DELAY_SECS) + + return new_ids + + +def crawl_incremental(state: dict) -> list[dict]: + """Fetch only community topics newer than the last crawl run. + + Uses the Discourse newest-first ordering to stop pagination early, + making incremental runs take seconds instead of minutes. + """ + max_topic_id: int = state.get("community", {}).get("max_topic_id", 0) + print(f"Fetching new community topics (last known ID: {max_topic_id}) ...") + + new_ids = get_new_topic_ids(max_topic_id) + if not new_ids: + print(" No new topics found.") + return [] + + print(f" Found {len(new_ids)} new topics — fetching...") + results: list[dict] = [] + for i, tid in enumerate(new_ids, 1): + topic = fetch_topic(tid) + if topic and topic["question"].strip(): + results.append(topic) + print(f" [{i}/{len(new_ids)}] OK {topic['url']}") + time.sleep(CRAWL_DELAY_SECS) + + return results + + +if __name__ == "__main__": + print(f"Crawling community forum at {COMMUNITY_BASE_URL} ...") + topic_ids = get_topic_ids() + print(f"\nFetching {len(topic_ids)} topics ...") + + results: list[dict] = [] + for i, tid in enumerate(topic_ids, 1): + topic = fetch_topic(tid) + if topic and topic["question"].strip(): + results.append(topic) + print(f"[{i}/{len(topic_ids)}] OK {topic['url']}") + else: + print(f"[{i}/{len(topic_ids)}] SKIP {tid}") + time.sleep(CRAWL_DELAY_SECS) + + with open(COMMUNITY_FILE, "w", encoding="utf-8") as f: + json.dump(results, f, indent=2, ensure_ascii=False) + + print(f"\nCollected {len(results)} topics -> {COMMUNITY_FILE}") diff --git a/MosipNexus/crawler/confluence_crawler.py b/MosipNexus/crawler/confluence_crawler.py new file mode 100644 index 0000000..b936ad2 --- /dev/null +++ b/MosipNexus/crawler/confluence_crawler.py @@ -0,0 +1,190 @@ +""" +Confluence Crawler (optional). + +Crawls a Confluence space and exports pages as plain text for ingestion. +Requires CONFLUENCE_URL, CONFLUENCE_USER, and CONFLUENCE_TOKEN in .env. + +Generate an Atlassian API token at: + https://id.atlassian.com/manage-profile/security/api-tokens + +Usage: + uv run python MosipNexus/crawler/confluence_crawler.py +""" + +from __future__ import annotations + +import json +import sys +import time +from pathlib import Path + +import requests +from bs4 import BeautifulSoup +from markdownify import markdownify + +sys.path.insert(0, str(Path(__file__).parent.parent)) +from config.settings import ( + CONFLUENCE_FILE, CONFLUENCE_SPACE_KEYS, + CONFLUENCE_TOKEN, CONFLUENCE_URL, CONFLUENCE_USER, + CRAWL_DELAY_SECS, +) +from crawler.utils import table_to_prose + + +def _is_configured() -> bool: + return all([CONFLUENCE_URL, CONFLUENCE_USER, CONFLUENCE_TOKEN]) + + +def _auth() -> tuple[str, str]: + return (CONFLUENCE_USER, CONFLUENCE_TOKEN) + + +def get_pages_in_space(space_key: str, limit: int = 50) -> list[dict]: + """Paginate through all pages in a Confluence space.""" + pages: list[dict] = [] + start = 0 + while True: + url = f"{CONFLUENCE_URL}/rest/api/content" + params = { + "type": "page", + "spaceKey": space_key, + "status": "current", + "limit": limit, + "start": start, + "expand": "body.storage,metadata.labels,version", + } + try: + res = requests.get(url, auth=_auth(), params=params, timeout=30) + res.raise_for_status() + data = res.json() + batch = data.get("results", []) + pages.extend(batch) + if len(batch) < limit: + break + start += limit + time.sleep(CRAWL_DELAY_SECS) + except Exception as e: + print(f" Error fetching space {space_key} at start={start}: {e}") + break + return pages + + +def page_to_dict(page: dict) -> dict | None: + """Convert a Confluence page API response to our standard document format.""" + page_id = page.get("id", "") + title = page.get("title", "") + html = page.get("body", {}).get("storage", {}).get("value", "") + labels = [lb["name"] for lb in page.get("metadata", {}).get("labels", {}).get("results", [])] + version = page.get("version", {}).get("number", 0) + + # Convert tables to prose before markdownify so Confluence spec/config + # tables embed correctly (header+value pairs instead of raw pipe-cells). + soup = BeautifulSoup(html, "html.parser") + for table in soup.find_all("table"): + prose = table_to_prose(table) + if prose: + replacement = soup.new_tag("p") + replacement.string = prose + table.replace_with(replacement) + + content = markdownify(str(soup), heading_style="ATX", strip=["script", "style"]).strip() + if len(content) < 100: + return None + + page_url = f"{CONFLUENCE_URL}/pages/viewpage.action?pageId={page_id}" + return { + "source_type": "confluence", + "url": page_url, + "title": title, + "labels": ", ".join(labels), + "content": content, + # Internal bookkeeping for incremental updates — ignored by ingestion. + "_page_id": page_id, + "_version": version, + } + + +def crawl_all() -> list[dict]: + """Crawl all configured Confluence spaces.""" + if not _is_configured(): + print("Confluence not configured. Set CONFLUENCE_URL, CONFLUENCE_USER, " + "CONFLUENCE_TOKEN in .env") + return [] + + results: list[dict] = [] + for space_key in CONFLUENCE_SPACE_KEYS: + print(f"\n Crawling Confluence space: {space_key} ...") + pages = get_pages_in_space(space_key) + print(f" Found {len(pages)} pages") + for page in pages: + doc = page_to_dict(page) + if doc: + results.append(doc) + safe_title = doc['title'][:80].encode(sys.stdout.encoding or "utf-8", errors="replace").decode(sys.stdout.encoding or "utf-8") + print(f" OK {safe_title}") + time.sleep(CRAWL_DELAY_SECS) + + return results + + +def crawl_incremental(state: dict) -> tuple[list[dict], list[dict], int]: + """Crawl only new and changed Confluence pages. + + Confluence's API returns each page's version number directly, so unlike + the docs crawler we don't need to hash content to detect a change — we + just compare the version number against the one seen last run. Skips the + (cheap) markdownify conversion for pages whose version hasn't moved. + + Returns: + new_pages: pages whose ID was not seen in the previous run + changed_pages: pages whose version number differs from last run + unchanged: count of pages skipped (no version change) + """ + if not _is_configured(): + return [], [], 0 + + page_versions: dict = state.get("confluence", {}).get("page_versions", {}) + + new_pages: list[dict] = [] + changed_pages: list[dict] = [] + unchanged = 0 + + for space_key in CONFLUENCE_SPACE_KEYS: + print(f"\n Checking Confluence space: {space_key} ...") + pages = get_pages_in_space(space_key) + print(f" Found {len(pages)} pages") + for page in pages: + page_id = page.get("id", "") + version = page.get("version", {}).get("number", 0) + known_version = page_versions.get(page_id) + + if known_version == version: + unchanged += 1 + time.sleep(CRAWL_DELAY_SECS) + continue + + doc = page_to_dict(page) + time.sleep(CRAWL_DELAY_SECS) + if doc is None: + continue + + if known_version is None: + new_pages.append(doc) + else: + changed_pages.append(doc) + + return new_pages, changed_pages, unchanged + + +if __name__ == "__main__": + if not _is_configured(): + print("Set CONFLUENCE_URL, CONFLUENCE_USER, CONFLUENCE_TOKEN in .env first.") + sys.exit(1) + + print(f"Crawling Confluence: {CONFLUENCE_URL} ...") + results = crawl_all() + + with open(CONFLUENCE_FILE, "w", encoding="utf-8") as f: + json.dump(results, f, indent=2, ensure_ascii=False) + + print(f"\nCollected {len(results)} pages -> {CONFLUENCE_FILE}") diff --git a/MosipNexus/crawler/docs_crawler.py b/MosipNexus/crawler/docs_crawler.py new file mode 100644 index 0000000..bb6c96f --- /dev/null +++ b/MosipNexus/crawler/docs_crawler.py @@ -0,0 +1,205 @@ +""" +Docs Crawler — Stage 1a. + +Reads the MOSIP 1.2.0 sitemap, follows child sitemaps recursively, fetches +every documentation page, converts HTML to clean Markdown, and writes the +result to data/mosip_docs.json. Run once before ingestion. +""" + +import json +import sys +import time +import xml.etree.ElementTree as ET +from pathlib import Path +from urllib.parse import urljoin, urlparse + +import requests +from bs4 import BeautifulSoup +from markdownify import markdownify + +sys.path.insert(0, str(Path(__file__).parent.parent)) +from config.settings import ( + DOCS_FILE, DOCS_SITEMAP_URL, DOCS_BASE_URL, + HTTP_HEADERS, CRAWL_DELAY_SECS, +) +from crawler.utils import table_to_prose + +_SM_NS = {"sm": "http://www.sitemaps.org/schemas/sitemap/0.9"} + + +def _get_locs(xml_text: str) -> list[str]: + root = ET.fromstring(xml_text) + locs = root.findall(".//sm:loc", _SM_NS) or root.findall(".//loc") + return [loc.text.strip() for loc in locs if loc.text] + + +def get_all_page_urls(sitemap_url: str, visited: set | None = None) -> list[str]: + """Follow sitemap indexes recursively; return only actual page URLs.""" + if visited is None: + visited = set() + if sitemap_url in visited: + return [] + visited.add(sitemap_url) + + try: + res = requests.get(sitemap_url, headers=HTTP_HEADERS, timeout=30) + res.raise_for_status() + except Exception as e: + print(f" Sitemap fetch error {sitemap_url}: {e}") + return [] + + xml_text = res.text + locs = _get_locs(xml_text) + + if " str: + """Fetch a single docs page and return its main content as ATX Markdown.""" + res = requests.get(url, headers=HTTP_HEADERS, timeout=30) + res.raise_for_status() + soup = BeautifulSoup(res.text, "html.parser") + + content = ( + soup.find("main") + or soup.find("article") + or soup.find("div", class_="markdown-section") + or soup.find("div", class_="page-inner") + or soup.body + or soup + ) + + # Convert tables to prose before markdownify so specs/configs embed correctly. + # markdownify produces pipe-tables whose cells lack context without headers; + # prose like "vCPU: 12, RAM: 32 GB, Disk: 128 GB" retrieves far better. + for table in content.find_all("table"): + prose = table_to_prose(table) + if prose: + replacement = soup.new_tag("p") + replacement.string = prose + table.replace_with(replacement) + + return markdownify( + str(content), + heading_style="ATX", + strip=["script", "style", "nav", "footer", "head"], + ) + + +def crawl_fallback(depth: int = 3) -> list[dict]: + """Depth-first crawl from DOCS_BASE_URL — used only when sitemap is absent.""" + visited, docs = set(), [] + + def _crawl(url: str, d: int) -> None: + if d == 0 or url in visited: + return + visited.add(url) + try: + content = fetch_page_as_markdown(url) + if len(content.strip()) > 100: + docs.append({"url": url, "content": content, "source_type": "docs"}) + soup = BeautifulSoup( + requests.get(url, headers=HTTP_HEADERS, timeout=30).text, "html.parser" + ) + for a in soup.find_all("a", href=True): + next_url = urljoin(url, str(a["href"])).split("#")[0] + cand = urlparse(next_url) + base = urlparse(DOCS_BASE_URL) + if cand.scheme in {"http", "https"} and cand.netloc == base.netloc: + _crawl(next_url, d - 1) + except Exception as e: + print(f" SKIP {url}: {e}") + + _crawl(DOCS_BASE_URL, depth) + return docs + + +def crawl_incremental(state: dict) -> tuple[list[dict], list[dict], int]: + """Crawl only new and changed documentation pages. + + Fetches all sitemap URLs but compares content hashes against the previous + run. Only pages that are new or whose content changed are returned — + unchanged pages are skipped entirely, avoiding redundant re-embedding. + + Returns: + new_pages: pages not seen in the previous run + changed_pages: pages whose content hash differs from last run + unchanged: count of pages skipped (no change detected) + """ + from crawler.state import content_hash + + url_hashes: dict = state.get("docs", {}).get("url_hashes", {}) + + print(f"Fetching sitemap from {DOCS_SITEMAP_URL} ...") + all_urls = get_all_page_urls(DOCS_SITEMAP_URL) + if not all_urls: + print("Sitemap returned no pages.") + return [], [], 0 + + print(f"Found {len(all_urls)} URLs — checking for new / changed pages...") + new_pages: list[dict] = [] + changed_pages: list[dict] = [] + unchanged = 0 + + for i, url in enumerate(all_urls, 1): + known_hash = url_hashes.get(url) + try: + content = fetch_page_as_markdown(url) + if len(content.strip()) < 100: + continue + chash = content_hash(content) + page = {"url": url, "content": content, "source_type": "docs", "_hash": chash} + + if known_hash is None: + new_pages.append(page) + print(f"[{i}/{len(all_urls)}] NEW {url}") + elif known_hash != chash: + changed_pages.append(page) + print(f"[{i}/{len(all_urls)}] CHANGED {url}") + else: + unchanged += 1 + if unchanged % 50 == 0: + print(f"[{i}/{len(all_urls)}] ... {unchanged} unchanged so far") + except Exception as e: + print(f"[{i}/{len(all_urls)}] ERR {url}: {e}") + time.sleep(CRAWL_DELAY_SECS) + + return new_pages, changed_pages, unchanged + + +if __name__ == "__main__": + print(f"Fetching sitemap from {DOCS_SITEMAP_URL} ...") + urls = get_all_page_urls(DOCS_SITEMAP_URL) + + if urls: + print(f"Found {len(urls)} page URLs in sitemap") + else: + print("Sitemap returned no pages — falling back to recursive crawl") + + docs: list[dict] = [] + + if urls: + for i, url in enumerate(urls, 1): + try: + content = fetch_page_as_markdown(url) + if len(content.strip()) > 100: + docs.append({"url": url, "content": content, "source_type": "docs"}) + print(f"[{i}/{len(urls)}] OK {url}") + else: + print(f"[{i}/{len(urls)}] SKIP (empty) {url}") + except Exception as e: + print(f"[{i}/{len(urls)}] ERR {url}: {e}") + time.sleep(CRAWL_DELAY_SECS) + else: + docs = crawl_fallback(depth=3) + + with open(DOCS_FILE, "w", encoding="utf-8") as f: + json.dump(docs, f, indent=2, ensure_ascii=False) + + print(f"\nCollected {len(docs)} doc pages -> {DOCS_FILE}") diff --git a/MosipNexus/crawler/github_crawler.py b/MosipNexus/crawler/github_crawler.py new file mode 100644 index 0000000..2df8044 --- /dev/null +++ b/MosipNexus/crawler/github_crawler.py @@ -0,0 +1,354 @@ +""" +GitHub Issues Crawler — Stage 1c. + +Fetches closed issues (with all comments) from MOSIP's public GitHub repositories. +GitHub Issues are the richest source of real error resolutions — community members +post the exact error, and maintainers post the exact fix. + +Repo discovery: + When GITHUB_TOKEN is set, this crawler auto-discovers ALL repos in the MOSIP + GitHub org (https://github.com/orgs/mosip/repositories) via the org API and + filters them intelligently: + ✅ Java/Python/Shell/TypeScript repos — core services and utilities + ❌ Archived repos — no longer maintained + ❌ Empty repos — nothing to index + ❌ Test/benchmark repos — noise (acceptance-tests, performance-tests) + ❌ Documentation repo — already crawled by docs_crawler + Without a token, falls back to the hardcoded GITHUB_REPOS list in settings.py. + +Branch strategy: + Each repo uses its own default_branch (returned by the org API). + Most MOSIP repos use 'master'; some use 'main' or a version branch like '1.2.0'. + Only the default branch is indexed — feature branches are not relevant for support. + +API used: + GET /orgs/{org}/repos?type=public&per_page=100&page=N — repo discovery + GET /repos/{owner}/{repo}/issues?state=all&per_page=100&page=N + GET /repos/{owner}/{repo}/issues/{number}/comments + +Authentication: + Without GITHUB_TOKEN : 60 requests/hour (too slow for a full crawl). + With GITHUB_TOKEN : 5,000 requests/hour (create a free token at + github.com → Settings → Developer Settings → Personal Access Tokens → Classic). + No special scopes needed — public repos only. +""" + +from __future__ import annotations + +import json +import sys +import time +from pathlib import Path + +import requests + +sys.path.insert(0, str(Path(__file__).parent.parent)) +from config.settings import ( + CRAWL_DELAY_SECS, GITHUB_FILE, GITHUB_MAX_ISSUES, + GITHUB_ORG, GITHUB_REPO_EXCLUDE, GITHUB_REPOS, + GITHUB_TOKEN, GITHUB_USEFUL_LANGUAGES, +) + +_GITHUB_API = "https://api.github.com" + + +def _headers() -> dict: + h = {"Accept": "application/vnd.github.v3+json"} + if GITHUB_TOKEN: + h["Authorization"] = f"token {GITHUB_TOKEN}" + return h + + +def _check_rate_limit() -> None: + res = requests.get(f"{_GITHUB_API}/rate_limit", headers=_headers(), timeout=10) + data = res.json().get("rate", {}) + remaining = data.get("remaining", 0) + if remaining < 10: + reset_in = data.get("reset", 0) - int(time.time()) + print(f" ⚠️ GitHub rate limit almost exhausted ({remaining} left). " + f"Resets in {max(reset_in, 0)//60} min. " + f"Add GITHUB_TOKEN to .env for 5,000 req/hr.") + + +def get_repo_issues(repo: str, state: str = "all", max_issues: int = GITHUB_MAX_ISSUES) -> list[dict]: + """Fetch up to max_issues issues from a repo, excluding pull requests.""" + issues: list[dict] = [] + page = 1 + while len(issues) < max_issues: + url = f"{_GITHUB_API}/repos/{repo}/issues" + params = {"state": state, "per_page": 100, "page": page, "direction": "desc"} + res = requests.get(url, headers=_headers(), params=params, timeout=30) + + if res.status_code == 403: + print(f" Rate limited on {repo}. Add GITHUB_TOKEN to .env.") + break + if res.status_code == 404: + print(f" Repo not found: {repo}") + break + if not res.ok: + print(f" HTTP {res.status_code} for {repo} page {page}") + break + + batch = [i for i in res.json() if "pull_request" not in i] + if not batch: + break + + issues.extend(batch) + if len(res.json()) < 100: + break + page += 1 + time.sleep(CRAWL_DELAY_SECS) + + return issues[:max_issues] + + +def get_issue_comments(repo: str, issue_number: int) -> str: + """Fetch all comments for an issue and return them as joined text.""" + url = f"{_GITHUB_API}/repos/{repo}/issues/{issue_number}/comments" + try: + res = requests.get(url, headers=_headers(), timeout=30) + if not res.ok: + return "" + comments = res.json() + parts = [] + for c in comments: + body = (c.get("body") or "").strip() + author = c.get("user", {}).get("login", "") + if body: + parts.append(f"[{author}]: {body}") + return "\n\n".join(parts) + except Exception: + return "" + + +def crawl_repo(repo: str, max_issues: int = GITHUB_MAX_ISSUES) -> list[dict]: + """Crawl one repo: fetch issues + comments, return structured dicts.""" + print(f"\n Crawling {repo} ...") + _check_rate_limit() + + issues = get_repo_issues(repo, state="all", max_issues=max_issues) + print(f" Found {len(issues)} issues — fetching comments...") + + results: list[dict] = [] + for i, issue in enumerate(issues, 1): + number = issue["number"] + title = issue.get("title", "").strip() + body = (issue.get("body") or "").strip() + state = issue.get("state", "") + labels = ", ".join(lb["name"] for lb in issue.get("labels", [])) + + comments = get_issue_comments(repo, number) + time.sleep(CRAWL_DELAY_SECS) + + # Build a readable document: problem + resolution in one text block + content_parts = [] + if body: + content_parts.append(f"Problem description:\n{body}") + if comments: + content_parts.append(f"Discussion and resolution:\n{comments}") + content = "\n\n".join(content_parts) + + if not content.strip(): + continue + + results.append({ + "source_type": "github", + "url": issue["html_url"], + "title": title, + "repo": repo, + "number": number, + "state": state, + "labels": labels, + "content": content, + }) + if i % 50 == 0: + print(f" [{i}/{len(issues)}] processed...") + + print(f" Done: {len(results)} usable issues from {repo}") + return results + + +def get_org_repos() -> list[dict]: + """Discover all relevant public repos in the MOSIP GitHub org. + + Returns a list of dicts, each with: + full_name — e.g. "mosip/id-authentication" + default_branch — the repo's own default branch (master / main / 1.2.0 / etc.) + description — repo description string + + Filters applied: + - archived=False (skip unmaintained repos) + - size > 0 (skip empty repos) + - language in useful set (skip pure HTML/CSS/docs repos) + - name not in exclude list (skip tests, demos, docs repo) + + Falls back to GITHUB_REPOS hardcoded list if the token is missing or the + org API returns an error. + """ + if not GITHUB_TOKEN: + print(" No GITHUB_TOKEN — using hardcoded GITHUB_REPOS fallback list.") + return [{"full_name": r, "default_branch": "master", "description": ""} + for r in GITHUB_REPOS] + + repos: list[dict] = [] + page = 1 + while True: + url = f"{_GITHUB_API}/orgs/{GITHUB_ORG}/repos" + params = {"type": "public", "per_page": 100, "page": page} + res = requests.get(url, headers=_headers(), params=params, timeout=30) + + if not res.ok: + print(f" Org API error {res.status_code}: {res.json().get('message', '')}. " + f"Falling back to hardcoded list.") + return [{"full_name": r, "default_branch": "master", "description": ""} + for r in GITHUB_REPOS] + + batch = res.json() + if not batch: + break + + for r in batch: + name = r.get("name", "") + language = r.get("language") or "" + archived = r.get("archived", False) + size = r.get("size", 0) + + if archived: + continue + if size == 0: + continue + if name in GITHUB_REPO_EXCLUDE: + continue + if language and language not in GITHUB_USEFUL_LANGUAGES: + # Allow repos with no declared language (e.g. config-only repos) + continue + + repos.append({ + "full_name": r["full_name"], + "default_branch": r.get("default_branch", "master"), + "description": r.get("description") or "", + }) + + if len(batch) < 100: + break + page += 1 + time.sleep(CRAWL_DELAY_SECS) + + print(f" Discovered {len(repos)} relevant repos in '{GITHUB_ORG}' org " + f"(out of all public repos, after filtering).") + return repos + + +def crawl_all(repos: list[dict] | None = None) -> list[dict]: + """Full crawl: discover all org repos (or use provided list) and fetch issues. + + Each entry in repos must be a dict with at least 'full_name'. + When repos is None, calls get_org_repos() to auto-discover. + """ + repo_metas = repos or get_org_repos() + all_results: list[dict] = [] + for meta in repo_metas: + full_name = meta["full_name"] + results = crawl_repo(full_name) + all_results.extend(results) + print(f" Running total: {len(all_results)} issues across all repos") + return all_results + + +def get_new_issue_ids(repo: str, max_number: int) -> list[dict]: + """Return issues from repo with number > max_number (incremental mode). + + GitHub issues are numbered sequentially, and the API returns them newest-first, + so we stop pagination as soon as we hit an issue we already have. + """ + new_issues: list[dict] = [] + page = 1 + while True: + url = f"{_GITHUB_API}/repos/{repo}/issues" + params = {"state": "all", "per_page": 100, "page": page, "direction": "desc"} + res = requests.get(url, headers=_headers(), params=params, timeout=30) + + if not res.ok: + break + + batch = [i for i in res.json() if "pull_request" not in i] + if not batch: + break + + new_on_page = [i for i in batch if i["number"] > max_number] + new_issues.extend(new_on_page) + + # If any issue on this page is already known, stop — older pages have nothing new + if len(new_on_page) < len(batch): + break + + page += 1 + time.sleep(CRAWL_DELAY_SECS) + + return new_issues + + +def crawl_incremental(state: dict) -> list[dict]: + """Fetch only issues created after the last known issue number per repo. + + Uses get_org_repos() to discover repos dynamically — so new repos added + to the MOSIP org will be picked up automatically on the next incremental run. + """ + github_state: dict = state.get("github", {}) + all_new: list[dict] = [] + + repo_metas = get_org_repos() + repo_names = [m["full_name"] for m in repo_metas] + + for repo in repo_names: + max_number = github_state.get(repo, {}).get("max_issue_number", 0) + print(f" {repo}: checking issues > #{max_number} ...") + + new_raw = get_new_issue_ids(repo, max_number) + if not new_raw: + print(f" No new issues.") + continue + + print(f" {len(new_raw)} new issues — fetching comments...") + for issue in new_raw: + number = issue["number"] + body = (issue.get("body") or "").strip() + comments = get_issue_comments(repo, number) + time.sleep(CRAWL_DELAY_SECS) + + content_parts = [] + if body: + content_parts.append(f"Problem description:\n{body}") + if comments: + content_parts.append(f"Discussion and resolution:\n{comments}") + content = "\n\n".join(content_parts) + + if not content.strip(): + continue + + all_new.append({ + "source_type": "github", + "url": issue["html_url"], + "title": issue.get("title", "").strip(), + "repo": repo, + "number": number, + "state": issue.get("state", ""), + "labels": ", ".join(lb["name"] for lb in issue.get("labels", [])), + "content": content, + }) + + return all_new + + +if __name__ == "__main__": + print("GitHub Issues Crawler — crawling all MOSIP repos...") + if not GITHUB_TOKEN: + print("⚠️ GITHUB_TOKEN not set. Rate limited to 60 req/hr. " + "Add it to .env for 5,000 req/hr (free).") + + results = crawl_all() + + with open(GITHUB_FILE, "w", encoding="utf-8") as f: + json.dump(results, f, indent=2, ensure_ascii=False) + + print(f"\nCollected {len(results)} GitHub issues -> {GITHUB_FILE}") diff --git a/MosipNexus/crawler/jira_crawler.py b/MosipNexus/crawler/jira_crawler.py new file mode 100644 index 0000000..9d62430 --- /dev/null +++ b/MosipNexus/crawler/jira_crawler.py @@ -0,0 +1,272 @@ +""" +Jira Crawler (optional). + +Fetches resolved Jira tickets (with descriptions and comments) from MOSIP's +Jira project. Resolved tickets are the most valuable — they contain the problem +and the confirmed fix. + +Requires JIRA_URL, JIRA_USER, and JIRA_TOKEN in .env. + +Generate an Atlassian API token at: + https://id.atlassian.com/manage-profile/security/api-tokens + +Usage: + uv run python MosipNexus/crawler/jira_crawler.py +""" + +from __future__ import annotations + +import json +import sys +import time +from pathlib import Path + +import requests + +sys.path.insert(0, str(Path(__file__).parent.parent)) +from config.settings import ( + CRAWL_DELAY_SECS, JIRA_FILE, JIRA_PROJECT_KEYS, + JIRA_TOKEN, JIRA_URL, JIRA_USER, +) + + +def _is_configured() -> bool: + return all([JIRA_URL, JIRA_USER, JIRA_TOKEN]) + + +def _auth() -> tuple[str, str]: + return (JIRA_USER, JIRA_TOKEN) + + +def search_issues(project_key: str, start: int = 0, max_results: int = 100) -> list[dict]: + """Search Jira for resolved issues in a project.""" + url = f"{JIRA_URL}/rest/api/2/search" + jql = ( + f"project = {project_key} " + f"AND status in (Resolved, Done, Closed) " + f"ORDER BY updated DESC" + ) + params = { + "jql": jql, + "startAt": start, + "maxResults": max_results, + "fields": "summary,description,comment,status,labels,issuetype,resolution", + } + try: + res = requests.get(url, auth=_auth(), params=params, timeout=30) + res.raise_for_status() + return res.json().get("issues", []) + except Exception as e: + print(f" Jira search error for {project_key}: {e}") + return [] + + +def search_issues_since( + project_key: str, + since_jql: str | None, + start: int = 0, + max_results: int = 100, +) -> list[dict]: + """Search Jira for resolved issues updated since a given JQL date string. + + Filtering server-side with `updated >= "..."` means only the delta is + fetched over the network, rather than re-fetching every issue in the + project on every run. + """ + url = f"{JIRA_URL}/rest/api/2/search" + jql = f"project = {project_key} AND status in (Resolved, Done, Closed) " + if since_jql: + jql += f'AND updated >= "{since_jql}" ' + jql += "ORDER BY updated DESC" + params = { + "jql": jql, + "startAt": start, + "maxResults": max_results, + "fields": "summary,description,comment,status,labels,issuetype,resolution,updated", + } + try: + res = requests.get(url, auth=_auth(), params=params, timeout=30) + res.raise_for_status() + return res.json().get("issues", []) + except Exception as e: + print(f" Jira incremental search error for {project_key}: {e}") + return [] + + +def _to_jql_date(iso_str: str) -> str: + """Convert a stored ISO-8601 timestamp to JQL's 'yyyy-MM-dd HH:mm' format. + + Note: JQL date comparisons are evaluated in the Jira instance's configured + timezone, not UTC. A few hours of overlap at the boundary is harmless — + re-fetching an unchanged issue is idempotent — so this isn't corrected for. + """ + from datetime import datetime + return datetime.fromisoformat(iso_str).strftime("%Y-%m-%d %H:%M") + + +def _to_text(value) -> str: + """Extract plain text from a string or an ADF (Atlassian Document Format) object. + + Jira Cloud REST v3 returns description/body as ADF dicts; v2/Server returns strings. + """ + if isinstance(value, str): + return value.strip() + if isinstance(value, dict): + out: list[str] = [] + + def _walk(node): + if isinstance(node, dict): + if node.get("type") == "text" and isinstance(node.get("text"), str): + out.append(node["text"]) + for child in node.get("content", []): + _walk(child) + elif isinstance(node, list): + for child in node: + _walk(child) + + _walk(value) + return " ".join(out).strip() + return "" + + +def issue_to_dict(issue: dict) -> dict | None: + """Convert a Jira issue API response to our standard document format.""" + key = issue.get("key", "") + fields = issue.get("fields", {}) + title = fields.get("summary", "").strip() + desc = _to_text(fields.get("description")) + status = fields.get("status", {}).get("name", "") + labels = ", ".join(fields.get("labels", [])) + resolution = fields.get("resolution", {}) + resolution_name = resolution.get("name", "") if resolution else "" + + # Collect comments + comment_bodies = [] + for c in fields.get("comment", {}).get("comments", []): + body = _to_text(c.get("body")) + author = c.get("author", {}).get("displayName", "") + if body: + comment_bodies.append(f"[{author}]: {body}") + + content_parts = [] + if desc: + content_parts.append(f"Problem:\n{desc}") + if resolution_name: + content_parts.append(f"Resolution: {resolution_name}") + if comment_bodies: + content_parts.append("Discussion:\n" + "\n\n".join(comment_bodies)) + + content = "\n\n".join(content_parts) + if len(content.strip()) < 50: + return None + + return { + "source_type": "jira", + "url": f"{JIRA_URL}/browse/{key}", + "title": f"[{key}] {title}", + "key": key, + "status": status, + "labels": labels, + "content": content, + } + + +def crawl_project(project_key: str) -> list[dict]: + """Crawl all resolved issues in one Jira project.""" + results: list[dict] = [] + start = 0 + batch_size = 100 + while True: + batch = search_issues(project_key, start=start, max_results=batch_size) + if not batch: + break + for issue in batch: + doc = issue_to_dict(issue) + if doc: + results.append(doc) + print(f" OK {doc['key']}: {doc['title'][:70]}") + time.sleep(CRAWL_DELAY_SECS) + if len(batch) < batch_size: + break + start += batch_size + return results + + +def crawl_all() -> list[dict]: + """Crawl all configured Jira projects.""" + if not _is_configured(): + print("Jira not configured. Set JIRA_URL, JIRA_USER, JIRA_TOKEN in .env") + return [] + + results: list[dict] = [] + for project_key in JIRA_PROJECT_KEYS: + print(f"\n Crawling Jira project: {project_key} ...") + project_results = crawl_project(project_key) + print(f" Done: {len(project_results)} issues from {project_key}") + results.extend(project_results) + return results + + +def crawl_incremental(state: dict) -> tuple[list[dict], list[dict]]: + """Fetch Jira issues created or updated since each project's last run. + + A ticket whose key hasn't been seen before is "new"; one that was seen + in a previous run but is fetched again (because its `updated` timestamp + moved past the watermark — e.g. a new comment or status change) is + "changed" and its stale chunks are replaced. + + Returns: + new_issues: issues with a key not seen in any previous run + changed_issues: previously-seen issues that were updated since + """ + if not _is_configured(): + return [], [] + + jira_state: dict = state.get("jira", {}) + new_issues: list[dict] = [] + changed_issues: list[dict] = [] + + for project_key in JIRA_PROJECT_KEYS: + project_state = jira_state.get(project_key, {}) + known_keys = set(project_state.get("seen_keys", [])) + since_jql = _to_jql_date(project_state["last_run"]) if project_state.get("last_run") else None + + print(f"\n Checking Jira project: {project_key} (since {since_jql or 'beginning'}) ...") + + start = 0 + batch_size = 100 + while True: + batch = search_issues_since(project_key, since_jql, start=start, max_results=batch_size) + if not batch: + break + for issue in batch: + doc = issue_to_dict(issue) + if doc is None: + continue + doc["_project"] = project_key + if doc["key"] in known_keys: + changed_issues.append(doc) + print(f" UPD {doc['key']}: {doc['title'][:60]}") + else: + new_issues.append(doc) + print(f" NEW {doc['key']}: {doc['title'][:60]}") + time.sleep(CRAWL_DELAY_SECS) + if len(batch) < batch_size: + break + start += batch_size + + return new_issues, changed_issues + + +if __name__ == "__main__": + if not _is_configured(): + print("Set JIRA_URL, JIRA_USER, JIRA_TOKEN in .env first.") + sys.exit(1) + + print(f"Crawling Jira: {JIRA_URL} ...") + results = crawl_all() + + with open(JIRA_FILE, "w", encoding="utf-8") as f: + json.dump(results, f, indent=2, ensure_ascii=False) + + print(f"\nCollected {len(results)} Jira tickets → {JIRA_FILE}") diff --git a/MosipNexus/crawler/state.py b/MosipNexus/crawler/state.py new file mode 100644 index 0000000..f09c8e6 --- /dev/null +++ b/MosipNexus/crawler/state.py @@ -0,0 +1,55 @@ +""" +Crawl state — persists between runs to enable incremental updates. + +Stored in data/crawl_state.json: + docs.url_hashes : {url -> MD5 of last-fetched content} + community.max_topic_id : highest forum topic ID seen so far + github..max_issue_number : highest issue number seen per repo + confluence.page_versions : {page_id -> last-seen Confluence version number} + jira..seen_keys : issue keys already ingested for that project + jira..last_run : watermark used as the JQL "updated >=" filter +""" + +import hashlib +import json +from datetime import datetime, timezone +from pathlib import Path +import sys + +sys.path.insert(0, str(Path(__file__).parent.parent)) +from config.settings import DATA_DIR + +STATE_FILE = DATA_DIR / "crawl_state.json" + +_DEFAULT: dict = { + "docs": {"url_hashes": {}, "last_run": None}, + "community": {"max_topic_id": 0, "last_run": None}, +} + + +def load() -> dict: + """Load persisted crawl state, returning defaults if no state file exists.""" + if STATE_FILE.exists(): + try: + with open(STATE_FILE, encoding="utf-8") as f: + return json.load(f) + except json.JSONDecodeError: + return _DEFAULT.copy() + return _DEFAULT.copy() + + +def save(state: dict) -> None: + """Persist crawl state to disk atomically to guard against partial writes.""" + tmp = STATE_FILE.with_suffix(".tmp") + with open(tmp, "w", encoding="utf-8") as f: + json.dump(state, f, indent=2) + tmp.replace(STATE_FILE) + + +def content_hash(text: str) -> str: + """MD5 of page content — used to detect changes between crawl runs.""" + return hashlib.md5(text.encode()).hexdigest() + + +def now_iso() -> str: + return datetime.now(timezone.utc).isoformat() diff --git a/MosipNexus/crawler/utils.py b/MosipNexus/crawler/utils.py new file mode 100644 index 0000000..3bfe3a9 --- /dev/null +++ b/MosipNexus/crawler/utils.py @@ -0,0 +1,40 @@ +"""Shared crawler utilities.""" + +from __future__ import annotations + + +def table_to_prose(table_tag) -> str: + """Convert an HTML to labelled prose sentences for better embedding. + + Pipe-table cells like '| 32 GB |' carry no semantic meaning without their + header. Converting each row to 'vCPU: 12, RAM: 32 GB, Disk: 128 GB.' lets + the embedding model match hardware/config queries correctly. + + Handles: + - Standard
    header + data rows + - All- tables (no explicit header) + - colspan/rowspan: cells are flattened via get_text — no special handling + - Nested tables: get_text() recurses into them automatically + - Empty rows: skipped + """ + rows = table_tag.find_all("tr") + if not rows: + return "" + + has_th = bool(rows[0].find_all("th")) + header_cells = rows[0].find_all("th") if has_th else rows[0].find_all("td") + headers = [c.get_text(" ", strip=True) for c in header_cells] + data_rows = rows[1:] if has_th else rows + + sentences: list[str] = [] + for row in data_rows: + cells = [td.get_text(" ", strip=True) for td in row.find_all(["th", "td"])] + if not any(cells): + continue + if headers and len(headers) == len(cells): + parts = [f"{h}: {c}" for h, c in zip(headers, cells) if h and c] + else: + parts = [c for c in cells if c] + if parts: + sentences.append(", ".join(parts) + ".") + return "\n".join(sentences) diff --git a/MosipNexus/crawler/youtube_crawler.py b/MosipNexus/crawler/youtube_crawler.py new file mode 100644 index 0000000..c80fbb4 --- /dev/null +++ b/MosipNexus/crawler/youtube_crawler.py @@ -0,0 +1,216 @@ +""" +YouTube crawler for MOSIP videos. +""" +import sys +import json +from pathlib import Path +from googleapiclient.discovery import build +sys.path.insert(0, str(Path(__file__).parent.parent)) + +from config.settings import ( + YOUTUBE_API_KEY, + YOUTUBE_CHANNEL_HANDLE, + YOUTUBE_FILE, +) + + +def get_youtube_client(): + """Create a YouTube Data API client.""" + return build( + "youtube", + "v3", + developerKey=YOUTUBE_API_KEY, + ) + + +def get_channel_id(youtube): + """Resolve the channel ID from the handle.""" + response = youtube.channels().list( + part="id", + forHandle=YOUTUBE_CHANNEL_HANDLE, + ).execute() + + items = response.get("items", []) + + if not items: + raise RuntimeError( + f"Channel not found: @{YOUTUBE_CHANNEL_HANDLE}" + ) + + return items[0]["id"] +def get_uploads_playlist_id(youtube, channel_id): + """Return the uploads playlist ID for a channel.""" + response = youtube.channels().list( + part="contentDetails", + id=channel_id, + ).execute() + + items = response.get("items", []) + + if not items: + raise RuntimeError("Channel not found.") + + return ( + items[0]["contentDetails"] + ["relatedPlaylists"] + ["uploads"] + ) +def get_all_videos(youtube, playlist_id): + """Fetch all public videos from the uploads playlist.""" + + videos = [] + next_page_token = None + + while True: + response = youtube.playlistItems().list( + part="snippet", + playlistId=playlist_id, + maxResults=50, + pageToken=next_page_token, + ).execute() + + for item in response.get("items", []): + snippet = item["snippet"] + + videos.append( + { + "video_id": snippet["resourceId"]["videoId"], + "title": snippet["title"], + "published_at": snippet["publishedAt"], + } + ) + + next_page_token = response.get("nextPageToken") + + if not next_page_token: + break + + return videos +from youtube_transcript_api import YouTubeTranscriptApi +from youtube_transcript_api._errors import ( + NoTranscriptFound, + TranscriptsDisabled, + IpBlocked, +) + +def fetch_transcript(video_id: str): + """ + Fetch transcript for a video. + + Preference: + 1. Manual English captions + 2. Auto-generated English + 3. Any available language + """ + api = YouTubeTranscriptApi() + + try: + return api.fetch( + video_id, + languages=["en"], + ) + + except NoTranscriptFound: + pass + + except TranscriptsDisabled: + print(f"WARN: transcripts disabled for {video_id}") + return None + + except IpBlocked: + print(f"WARN: YouTube blocked transcript requests for {video_id}") + return None + + except Exception as e: + print(f"WARN: transcript fetch failed for {video_id}: {e}") + return None + + try: + return api.fetch(video_id) + + except Exception as e: + print(f"WARN: transcript fetch failed for {video_id}: {e}") + return None +def transcript_to_segments(transcript): + """Convert transcript snippets into plain dictionaries.""" + segments = [] + + for snippet in transcript: + segments.append( + { + "text": snippet.text, + "start": snippet.start, + "duration": snippet.duration, + } + ) + + return segments +def build_video_document(video: dict): + """ + Build one structured document for a YouTube video. + """ + + transcript = fetch_transcript(video["video_id"]) + + if transcript is None: + print(f"WARN: no transcript for {video['title']} ({video['video_id']})") + return None + + return { + "video_id": video["video_id"], + "title": video["title"], + "published_at": video["published_at"], + "channel_name": "MOSIP", + "transcript": transcript_to_segments(transcript), + } +def crawl_youtube(): + """Fetch all YouTube videos and save them.""" + + youtube = get_youtube_client() + + channel_id = get_channel_id(youtube) + + playlist_id = get_uploads_playlist_id( + youtube, + channel_id, + ) + + videos = get_all_videos( + youtube, + playlist_id, + ) + + docs = [] + + print(f"Found {len(videos)} videos") + + for i, video in enumerate(videos, start=1): + + print(f"[{i}/{len(videos)}] {video['title']}") + + doc = build_video_document(video) + + if doc: + docs.append(doc) + + with open( + YOUTUBE_FILE, + "w", + encoding="utf-8", + ) as f: + + json.dump( + docs, + f, + indent=2, + ensure_ascii=False, + ) + + print(f"\nSaved {len(docs)} videos") + + return docs + + + +if __name__ == "__main__": + crawl_youtube() \ No newline at end of file diff --git a/MosipNexus/data/mosip_code.json b/MosipNexus/data/mosip_code.json new file mode 100644 index 0000000..1ceaa80 --- /dev/null +++ b/MosipNexus/data/mosip_code.json @@ -0,0 +1,59096 @@ +[ + { + "source_type": "code", + "url": "https://github.com/mosip/mosip-infra/blob/master/.github/workflows/mosip_repo_scanner.yml", + "title": "mosip_repo_scanner.yml", + "repo": "mosip/mosip-infra", + "file_path": ".github/workflows/mosip_repo_scanner.yml", + "language": "yml", + "content": "# This is a basic workflow to help you get started with Actions\n\nname: CI\n\n# Controls when the action will run. Triggers the workflow on push or pull request\n# events but only for the master branch\n\non:\n schedule:\n - cron: '0 */24 * * *'\n\n#on:\n# push:\n# branches: [ master ]\n# pull_request:\n# branches: [ master ]\n\n# A workflow run is made up of one or more jobs that can run sequentially or in parallel\njobs:\n # This workflow contains a single job called \"build\"\n build:\n # The type of runner that the job will run on\n runs-on: ubuntu-latest\n\n # Steps represent a sequence of tasks that will be executed as part of the job\n strategy:\n matrix:\n python-version: [3.11]\n\n steps:\n - uses: actions/checkout@v2\n - uses: montudor/action-zip@v0.1.0\n - name: Set up Python ${{ matrix.python-version }}\n uses: actions/setup-python@v2\n with:\n python-version: ${{ matrix.python-version }}\n - name: Install dependencies\n run: |\n python -m pip install --upgrade pip\n pip3 install truffleHog3\n\n # Create List of all repos\n - name: Create repo list\n run: curl --request GET --url 'https://api.github.com/orgs/mosip/repos?type=public&&sort=full_name' | grep 'clone_url' | grep -o -P '(?<=:\\s\\\").*(?=\\\")' >> list.txt\n\n #Download mosip regex\n #- name: Download msoip regex\n # run: 'curl args: -u ''${{secrets.reporting_user}}:${{secrets.reporting_user_secret}}'' --request GET -H ''Accept: application/json'' -H ''X-Atlassian-Token: no-check'' --url https://mosip.atlassian.net/wiki/rest/api/content/45285493/child/attachment?name=rules_mosip.yaml'\n\n #Create Report directory for all reports\n - name: Create directory for reports\n run: mkdir Reports_`date +%d%b%y`\n\n # Runs scan\n - name: Run Trufflehog3\n run: python3 $GITHUB_WORKSPACE/security/mosip_repo_scanner.py\n\n # Zip complete report directory\n - name: Zip the reports directory\n run: zip -r ./Reports_`date +%d%b%y`.zip ./Reports_`date +%d%b%y`\n\n #upload report\n - name: Upload report to confluence\n run: 'curl args: -u ''${{secrets.reporting_user}}:${{secrets.reporting_user_secret}}'' --request POST -F file=@./Reports_`date +%d%b%y`.zip -H ''Accept: application/json'' -H ''X-Atlassian-Token: no-check'' --url https://mosip.atlassian.net/wiki/rest/api/content/45285493/child/attachment'\n\n #Delete the reports from deployment server\n - name: Cleanup workspace\n run: rm -Rf ./*\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/mosip-infra/blob/master/deployment/v3/external/activemq/values.yaml", + "title": "values.yaml", + "repo": "mosip/mosip-infra", + "file_path": "deployment/v3/external/activemq/values.yaml", + "language": "yaml", + "content": "istio:\n enabled: true\n hosts:\n - activemq.xyz.abc.net\n ingressController:\n name: ingressgateway-internal\n prefix: /\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/mosip-infra/blob/master/deployment/v3/external/antivirus/clamav/values.yaml", + "title": "values.yaml", + "repo": "mosip/mosip-infra", + "file_path": "deployment/v3/external/antivirus/clamav/values.yaml", + "language": "yaml", + "content": "\n## Increase in production\nreplicaCount: 1\n## We are using official clamav docker instead of mailu/clamav that was present originally\nimage:\n repository: mosipid/clamav\n tag: 1.3.0_base\n # pullPolicy: Always\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/mosip-infra/blob/master/deployment/v3/external/hsm/softhsm/values.yaml", + "title": "values.yaml", + "repo": "mosip/mosip-infra", + "file_path": "deployment/v3/external/hsm/softhsm/values.yaml", + "language": "yaml", + "content": "resources:\n limits: {}\n # cpu: 250m\n # memory: 1Gi\n requests: \n cpu: 100m\n memory: 20Mi\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/mosip-infra/blob/master/deployment/v3/external/iam/chart/istio-addons/Chart.yaml", + "title": "Chart.yaml", + "repo": "mosip/mosip-infra", + "file_path": "deployment/v3/external/iam/chart/istio-addons/Chart.yaml", + "language": "yaml", + "content": "apiVersion: v2\nname: istio-addons\ndescription: A Helm chart for MOSIP Keycloak istio\n\n# A chart can be either an 'application' or a 'library' chart.\n#\n# Application charts are a collection of templates that can be packaged into versioned archives\n# to be deployed.\n#\n# Library charts provide useful utilities or functions for the chart developer. They're included as\n# a dependency of application charts to inject those utilities and functions into the rendering\n# pipeline. Library charts do not define any templates and therefore cannot be deployed.\ntype: application\n\n# This is the chart version. This version number should be incremented each time you make changes\n# to the chart and its templates, including the app version.\n# Versions are expected to follow Semantic Versioning (https://semver.org/)\nversion: 0.1.0\n\n# This is the version number of the application being deployed. This version number should be\n# incremented each time you make changes to the application. Versions are not expected to\n# follow Semantic Versioning. They should reflect the version the application is using.\n# It is recommended to use it with quotes.\nappVersion: \"1.16.0\"\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/mosip-infra/blob/master/deployment/v3/external/iam/chart/istio-addons/templates/gateway.yaml", + "title": "gateway.yaml", + "repo": "mosip/mosip-infra", + "file_path": "deployment/v3/external/iam/chart/istio-addons/templates/gateway.yaml", + "language": "yaml", + "content": "apiVersion: networking.istio.io/v1alpha3\nkind: Gateway\nmetadata:\n name: keycloak\nspec:\n selector:\n istio: ingressgateway-internal\n servers:\n - port:\n number: 80\n name: http\n protocol: HTTP\n hosts:\n - {{ .Values.keycloakExternalHost }}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/mosip-infra/blob/master/deployment/v3/external/iam/chart/istio-addons/templates/host_configmap.yaml", + "title": "host_configmap.yaml", + "repo": "mosip/mosip-infra", + "file_path": "deployment/v3/external/iam/chart/istio-addons/templates/host_configmap.yaml", + "language": "yaml", + "content": "apiVersion: v1\nkind: ConfigMap\nmetadata:\n name: keycloak-host\n namespace: {{ .Release.Namespace }}\ndata:\n keycloak-internal-host: {{ .Values.keycloakInternalHost }}\n keycloak-internal-url: {{ printf \"http://%s\" .Values.keycloakInternalHost }}\n keycloak-external-host: {{ .Values.keycloakExternalHost }}\n keycloak-external-url: {{ printf \"https://%s\" .Values.keycloakExternalHost }}\n keycloak-internal-service-url: {{ printf \"http://%s/auth/\" .Values.keycloakInternalHost }}\n\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/mosip-infra/blob/master/deployment/v3/external/iam/chart/istio-addons/templates/virtualservice.yaml", + "title": "virtualservice.yaml", + "repo": "mosip/mosip-infra", + "file_path": "deployment/v3/external/iam/chart/istio-addons/templates/virtualservice.yaml", + "language": "yaml", + "content": "apiVersion: networking.istio.io/v1alpha3\nkind: VirtualService\nmetadata:\n name: keycloak\nspec:\n hosts:\n - \"*\"\n gateways:\n - keycloak\n\n http:\n {{- if eq .Values.service \"oauth2-proxy\" }}\n - match:\n - uri:\n prefix: /oauth2\n route:\n - destination:\n host: oauth2-proxy.oauth2-proxy.svc.cluster.local\n port:\n number: 80\n headers:\n request:\n set:\n x-forwarded-proto: https\n {{- else if eq .Values.service \"keycloak\" }}\n - match:\n - uri:\n prefix: /\n route:\n - destination:\n host: {{ .Values.service }}.{{ .Release.Namespace }}.svc.cluster.local\n port:\n number: 80\n headers:\n request:\n set:\n x-forwarded-proto: https\n {{- end }}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/mosip-infra/blob/master/deployment/v3/external/iam/chart/istio-addons/values.yaml", + "title": "values.yaml", + "repo": "mosip/mosip-infra", + "file_path": "deployment/v3/external/iam/chart/istio-addons/values.yaml", + "language": "yaml", + "content": "# Keycloak may be accessed in-cluster or from outside\nkeycloakInternalHost: keycloak.keycloak\nkeycloakExternalHost: iam.sandbox.xyz.net\nservice: keycloak\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/mosip-infra/blob/master/deployment/v3/external/iam/import-init-values.yaml", + "title": "import-init-values.yaml", + "repo": "mosip/mosip-infra", + "file_path": "deployment/v3/external/iam/import-init-values.yaml", + "language": "yaml", + "content": "keycloak:\n realms: |-\n del_realms:\n - preregistration\n mosip: # realm\n roles:\n - Default\n - ABIS_PARTNER\n - SDK_PARTNER\n - AUTH\n - AUTH_PARTNER\n - BIOMETRIC_READ\n - CENTRAL_ADMIN\n - CENTRAL_APPROVER\n - CREATE_SHARE\n - CREDENTIAL_ISSUANCE\n - CREDENTIAL_PARTNER\n - CREDENTIAL_REQUEST\n - DATA_READ\n - DEVICE_PROVIDER\n - DOCUMENT_READ\n - FTM_PROVIDER\n - GLOBAL_ADMIN\n - ID_AUTHENTICATION\n - ID_REPOSITORY\n - INDIVIDUAL\n - KEY_MAKER\n - MASTERDATA_ADMIN\n - METADATA_READ\n - MISP\n - MISP_PARTNER\n - offline_access\n - ONLINE_VERIFICATION_PARTNER\n - PARTNER\n - PARTNER_ADMIN\n - PARTNERMANAGER\n - PMS_ADMIN\n - PMS_USER\n - POLICYMANAGER\n - PREREG\n - PRE_REGISTRATION\n - PRE_REGISTRATION_ADMIN\n - PRINT_PARTNER\n - PUBLISH_ACTIVATE_ID_ALL_INDIVIDUAL\n - PUBLISH_ANONYMOUS_PROFILE_GENERAL\n - PUBLISH_APIKEY_APPROVED_GENERAL\n - PUBLISH_APIKEY_UPDATED_GENERAL\n - PUBLISH_AUTHENTICATION_TRANSACTION_STATUS_GENERAL\n - PUBLISH_AUTH_TYPE_STATUS_UPDATE_ACK_GENERAL\n - PUBLISH_AUTH_TYPE_STATUS_UPDATE_ALL_INDIVIDUAL\n - PUBLISH_CA_CERTIFICATE_UPLOADED_GENERAL\n - PUBLISH_CREDENTIAL_ISSUED_ALL_INDIVIDUAL\n - PUBLISH_CREDENTIAL_STATUS_UPDATE_GENERAL\n - PUBLISH_DEACTIVATE_ID_ALL_INDIVIDUAL\n - PUBLISH_IDA_FRAUD_ANALYTICS_GENERAL\n - PUBLISH_MASTERDATA_IDAUTHENTICATION_TEMPLATES_GENERAL\n - PUBLISH_MASTERDATA_TITLES_GENERAL\n - PUBLISH_MISP_LICENSE_GENERATED_GENERAL\n - PUBLISH_MISP_LICENSE_UPDATED_GENERAL\n - PUBLISH_MOSIP_HOTLIST_GENERAL\n - PUBLISH_PARTNER_UPDATED_GENERAL\n - PUBLISH_POLICY_UPDATED_GENERAL\n - PUBLISH_REGISTRATION_PROCESSOR_WORKFLOW_COMPLETED_EVENT_GENERAL\n - PUBLISH_REGISTRATION_PROCESSOR_WORKFLOW_PAUSED_FOR_ADDITIONAL_INFO_EVENT_GENERAL\n - PUBLISH_REMOVE_ID_ALL_INDIVIDUAL\n - PUBLISH_VID_CRED_STATUS_UPDATE_GENERAL\n - REGISTRATION_ADMIN\n - REGISTRATION_OFFICER\n - REGISTRATION_OPERATOR\n - REGISTRATION_PROCESSOR\n - REGISTRATION_SUPERVISOR\n - RESIDENT\n - SUBSCRIBE_ACTIVATE_ID_INDIVIDUAL\n - SUBSCRIBE_APIKEY_APPROVED_GENERAL\n - SUBSCRIBE_APIKEY_UPDATED_GENERAL\n - SUBSCRIBE_AUTH_TYPE_STATUS_UPDATE_ACK_GENERAL\n - SUBSCRIBE_AUTH_TYPE_STATUS_UPDATE_INDIVIDUAL\n - SUBSCRIBE_CA_CERTIFICATE_UPLOADED_GENERAL\n - SUBSCRIBE_CREDENTIAL_ISSUED_INDIVIDUAL\n - SUBSCRIBE_CREDENTIAL_STATUS_UPDATE_GENERAL\n - SUBSCRIBE_DEACTIVATE_ID_INDIVIDUAL\n - SUBSCRIBE_MASTERDATA_IDAUTHENTICATION_TEMPLATES_GENERAL\n - SUBSCRIBE_MASTERDATA_TITLES_GENERAL\n - SUBSCRIBE_MISP_LICENSE_GENERATED_GENERAL\n - SUBSCRIBE_MISP_LICENSE_UPDATED_GENERAL\n - SUBSCRIBE_MOSIP_HOTLIST_GENERAL\n - SUBSCRIBE_PARTNER_UPDATED_GENERAL\n - SUBSCRIBE_POLICY_UPDATED_GENERAL\n - SUBSCRIBE_REMOVE_ID_INDIVIDUAL\n - SUBSCRIBE_VID_CRED_STATUS_UPDATE_GENERAL\n - uma_authorization\n - ZONAL_ADMIN\n - ZONAL_APPROVER\n - HOTLIST_ADMIN\n - SUBSCRIBE_REGISTRATION_PROCESSOR_WORKFLOW_COMPLETED_EVENT_GENERAL\n - SUBSCRIBE_REGISTRATION_PROCESSOR_WORKFLOW_PAUSED_FOR_ADDITIONAL_INFO_EVENT_GENERAL\n - SUBSCRIBE_IDENTITY_CREATED_GENERAL\n - SUBSCRIBE_IDENTITY_UPDATED_GENERAL\n - PUBLISH_OIDC_CLIENT_CREATED_GENERAL\n - PUBLISH_OIDC_CLIENT_UPDATED_GENERAL\n - SUBSCRIBE_OIDC_CLIENT_CREATED_GENERAL\n - SUBSCRIBE_OIDC_CLIENT_UPDATED_GENERAL\n client_scopes:\n - name: add_oidc_client\n description: Scope required to create OIDC client\n protocol: openid-connect\n Include In Token Scope : on\n attributes: {\n display.on.consent.screen: \"false\",\n include.in.token.scope: \"true\"\n }\n - name: update_oidc_client\n description: ''\n protocol: openid-connect\n Include In Token Scope : on\n attributes: {\n display.on.consent.screen: \"false\",\n include.in.token.scope: \"true\"\n }\n - name: get_certificate\n description: Scope required to create OIDC client\n protocol: openid-connect\n Include In Token Scope : on\n attributes: {\n display.on.consent.screen: \"false\",\n include.in.token.scope: \"true\"\n }\n - name: upload_certificate\n description: ''\n protocol: openid-connect\n Include In Token Scope : on\n attributes: {\n display.on.consent.screen: \"false\",\n include.in.token.scope: \"true\"\n }\n - name: individual_id\n description: Scope required to create resident client\n protocol: openid-connect\n Include In Token Scope : on\n attributes: {\n display.on.consent.screen: \"true\",\n include.in.token.scope: \"true\"\n }\n - name: ida_token\n description: ''\n protocol: openid-connect\n Include In Token Scope : on\n attributes: {\n display.on.consent.screen: \"true\",\n include.in.token.scope: \"true\"\n }\n - name: send_binding_otp\n description: Scope required to create mpartner-default-mobile client\n protocol: openid-connect\n Include In Token Scope : on\n attributes: {\n display.on.consent.screen: \"false\",\n include.in.token.scope: \"true\"\n }\n - name: wallet_binding\n description: Scope required to create mpartner-default-mobile client\n protocol: openid-connect\n Include In Token Scope : on\n attributes: {\n display.on.consent.screen: \"false\",\n include.in.token.scope: \"true\"\n }\n\n clients:\n - name: mosip-abis-client\n mappers: []\n saroles: []\n\n - name: mosip-admin-client\n mappers: []\n saroles:\n - MASTERDATA_ADMIN\n - GLOBAL_ADMIN\n - PUBLISH_MASTERDATA_IDAUTHENTICATION_TEMPLATES_GENERAL\n - offline_access\n - PUBLISH_MOSIP_HOTLIST_GENERAL\n - uma_authorization\n - PUBLISH_MASTERDATA_TITLES_GENERAL\n\n - name: mosip-admin-services-client\n mappers: []\n saroles: []\n\n - name: mosip-auth-client\n mappers: []\n saroles:\n - AUTH\n\n - name: mosip-crereq-client\n mappers: []\n saroles:\n - CREDENTIAL_ISSUANCE\n - CREDENTIAL_REQUEST\n - SUBSCRIBE_CREDENTIAL_STATUS_UPDATE_GENERAL\n - offline_access\n - uma_authorization\n\n - name: mosip-creser-client\n mappers: []\n saroles:\n - CREDENTIAL_ISSUANCE\n - REGISTRATION_PROCESSOR\n - POLICYMANAGER\n - CREATE_SHARE\n - offline_access\n - PUBLISH_CREDENTIAL_ISSUED_ALL_INDIVIDUAL\n - uma_authorization\n - name: mosip-creser-idpass-client\n mappers: []\n saroles:\n - REGISTRATION_PROCESSOR\n - DATA_READ\n - DOCUMENT_READ\n - BIOMETRIC_READ\n - METADATA_READ\n - CREATE_SHARE\n - CREDENTIAL_REQUEST\n\n - name: mosip-datsha-client\n mappers: []\n saroles:\n - CREATE_SHARE\n - REGISTRATION_PROCESSOR\n - POLICYMANAGER\n\n - name: mosip-ida-client\n mappers: []\n saroles:\n - CREDENTIAL_REQUEST\n - GLOBAL_ADMIN\n - ID_AUTHENTICATION\n - PARTNERMANAGER # Added only for cert upload using postman during install. Not required otherwise.\n - SUBSCRIBE_OIDC_CLIENT_CREATED_GENERAL\n - SUBSCRIBE_OIDC_CLIENT_UPDATED_GENERAL\n - name: mosip-misp-client\n mappers: []\n saroles: []\n\n - name: mosip-partner-client\n mappers:\n - mapper_name: phoneNumber\n mapper_user_attribute: phoneNumber\n token_claim_name: phoneNumber\n - mapper_name: organizationName\n mapper_user_attribute: organizationName\n token_claim_name: organizationName\n - mapper_name: partnerType\n mapper_user_attribute: partnerType\n token_claim_name: partnerType\n - mapper_name: addressTest\n mapper_user_attribute: address\n token_claim_name: addressTest\n saroles:\n - REGISTRATION_PROCESSOR\n - CREATE_SHARE\n - PMS_USER\n - PMS_ADMIN\n - PARTNER_ADMIN\n - SUBSCRIBE_CA_CERTIFICATE_UPLOADED_GENERAL\n - PUBLISH_MISP_LICENSE_UPDATED_GENERAL\n - PUBLISH_PARTNER_UPDATED_GENERAL\n - PUBLISH_MISP_LICENSE_GENERATED_GENERAL\n - PUBLISH_APIKEY_APPROVED_GENERAL\n - PUBLISH_APIKEY_UPDATED_GENERAL\n - PUBLISH_CA_CERTIFICATE_UPLOADED_GENERAL\n - PUBLISH_POLICY_UPDATED_GENERAL\n\n - name: mosip-partnermanager-client\n mappers: []\n saroles:\n - PARTNERMANAGER\n - KEY_MAKER\n\n - name: mosip-pms-client\n mappers:\n - mapper_name: phoneNumber\n mapper_user_attribute: phoneNumber\n token_claim_name: phoneNumber\n - mapper_name: organizationName\n mapper_user_attribute: organizationName\n token_claim_name: organizationName\n - mapper_name: partnerType\n mapper_user_attribute: partnerType\n token_claim_name: partnerType\n - mapper_name: addressTest\n mapper_user_attribute: address\n token_claim_name: addressTest\n saroles:\n - PARTNER_ADMIN\n - SUBSCRIBE_CA_CERTIFICATE_UPLOADED_GENERAL\n - PUBLISH_OIDC_CLIENT_CREATED_GENERAL\n - PUBLISH_OIDC_CLIENT_UPDATED_GENERAL\n - PUBLISH_APIKEY_APPROVED_GENERAL\n - PUBLISH_APIKEY_UPDATED_GENERAL\n - PUBLISH_CA_CERTIFICATE_UPLOADED_GENERAL\n - PUBLISH_MISP_LICENSE_GENERATED_GENERAL\n - PUBLISH_MISP_LICENSE_UPDATED_GENERAL\n - PUBLISH_PARTNER_UPDATED_GENERAL\n - PUBLISH_POLICY_UPDATED_GENERAL\n - ZONAL_ADMIN\n - CREATE_SHARE\n - DEVICE_PROVIDER\n - PARTNER\n - PMS_ADMIN\n - PMS_USER\n - REGISTRATION_PROCESSOR\n assign_client_scopes:\n - update_oidc_client\n - add_oidc_client\n - get_certificate\n - upload_certificate\n - name: mosip-policymanager-client\n mappers: []\n saroles: []\n\n - name: mosip-reg-client\n mappers: []\n saroles:\n - GLOBAL_ADMIN\n - REGISTRATION_ADMIN\n - REGISTRATION_OFFICER\n - REGISTRATION_OPERATOR\n - REGISTRATION_SUPERVISOR\n\n - name: mosip-regproc-client\n mappers: []\n saroles:\n - REGISTRATION_PROCESSOR\n - DATA_READ\n - DOCUMENT_READ\n - BIOMETRIC_READ\n - METADATA_READ\n - CREATE_SHARE\n - CREDENTIAL_REQUEST\n - PARTNER\n - PARTNER_ADMIN\n - PMS_USER\n - POLICYMANAGER\n - PUBLISH_REGISTRATION_PROCESSOR_WORKFLOW_COMPLETED_EVENT_GENERAL\n - PUBLISH_REGISTRATION_PROCESSOR_WORKFLOW_PAUSED_FOR_ADDITIONAL_INFO_EVENT_GENERAL\n - SUBSCRIBE_REGISTRATION_PROCESSOR_WORKFLOW_COMPLETED_EVENT_GENERAL\n - SUBSCRIBE_REGISTRATION_PROCESSOR_WORKFLOW_PAUSED_FOR_ADDITIONAL_INFO_EVENT_GENERAL\n\n - name: mpartner-default-mobile\n mappers: []\n saroles:\n - CREDENTIAL_PARTNER\n - SUBSCRIBE_REGISTRATION_PROCESSOR_WORKFLOW_COMPLETED_EVENT_GENERAL\n - SUBSCRIBE_REGISTRATION_PROCESSOR_WORKFLOW_PAUSED_FOR_ADDITIONAL_INFO_EVENT_GENERAL\n - PUBLISH_REGISTRATION_PROCESSOR_WORKFLOW_COMPLETED_EVENT_GENERAL\n - PUBLISH_CREDENTIAL_STATUS_UPDATE_GENERAL\n - PUBLISH_REGISTRATION_PROCESSOR_WORKFLOW_PAUSED_FOR_ADDITIONAL_INFO_EVENT_GENERAL\n - SUBSCRIBE_CREDENTIAL_ISSUED_INDIVIDUAL\n assign_client_scopes:\n - send_binding_otp\n - wallet_binding\n - name: mosip-resident-client\n mappers: []\n saroles:\n - RESIDENT\n - PARTNER_ADMIN\n - CREDENTIAL_REQUEST\n - offline_access\n - uma_authorization\n assign_client_scopes:\n - individual_id\n - ida_token\n\n - name: mosip-prereg-client\n mappers: []\n saroles:\n - PREREG\n - REGISTRATION_PROCESSOR\n - PRE_REGISTRATION_ADMIN\n\n - name: mosip-creser-idpass-client\n mappers: []\n saroles:\n - REGISTRATION_PROCESSOR\n - DATA_READ\n - DOCUMENT_READ\n - BIOMETRIC_READ\n - METADATA_READ\n - CREATE_SHARE\n - CREDENTIAL_REQUEST\n\n - name: mosip-syncdata-client\n mappers: []\n saroles:\n - REGISTRATION_ADMIN\n - GLOBAL_ADMIN\n - SUBSCRIBE_CA_CERTIFICATE_UPLOADED_GENERAL\n - REGISTRATION_SUPERVISOR\n - REGISTRATION_OFFICER\n\n - name: mpartner-default-auth\n mappers:\n - mapper_name: langCode\n mapper_user_attribute: langCode\n token_claim_name: langCode\n saroles:\n - SUBSCRIBE_AUTH_TYPE_STATUS_UPDATE_INDIVIDUAL\n - SUBSCRIBE_POLICY_UPDATED_GENERAL\n - SUBSCRIBE_MISP_LICENSE_GENERATED_GENERAL\n - CREDENTIAL_REQUEST\n - SUBSCRIBE_MOSIP_HOTLIST_GENERAL\n - PUBLISH_ANONYMOUS_PROFILE_GENERAL\n - SUBSCRIBE_ACTIVATE_ID_INDIVIDUAL\n - SUBSCRIBE_REMOVE_ID_INDIVIDUAL\n - SUBSCRIBE_MASTERDATA_TITLES_GENERAL\n - SUBSCRIBE_CREDENTIAL_ISSUED_INDIVIDUAL\n - SUBSCRIBE_MISP_LICENSE_UPDATED_GENERAL\n - ID_AUTHENTICATION\n - PUBLISH_CREDENTIAL_STATUS_UPDATE_GENERAL\n - SUBSCRIBE_AUTH_TYPE_STATUS_UPDATE_ACK_GENERAL\n - SUBSCRIBE_PARTNER_UPDATED_GENERAL\n - offline_access\n - SUBSCRIBE_APIKEY_APPROVED_GENERAL\n - PUBLISH_AUTH_TYPE_STATUS_UPDATE_ACK_GENERAL\n - SUBSCRIBE_MASTERDATA_IDAUTHENTICATION_TEMPLATES_GENERAL\n - uma_authorization\n - SUBSCRIBE_APIKEY_UPDATED_GENERAL\n - SUBSCRIBE_DEACTIVATE_ID_INDIVIDUAL\n - SUBSCRIBE_CA_CERTIFICATE_UPLOADED_GENERAL\n - PUBLISH_AUTHENTICATION_TRANSACTION_STATUS_GENERAL\n - PUBLISH_IDA_FRAUD_ANALYTICS_GENERAL\n - SUBSCRIBE_OIDC_CLIENT_CREATED_GENERAL\n - SUBSCRIBE_OIDC_CLIENT_UPDATED_GENERAL\n\n - name: mosip-idrepo-client\n mappers: []\n saroles:\n - PUBLISH_DEACTIVATE_ID_ALL_INDIVIDUAL\n - SUBSCRIBE_VID_CRED_STATUS_UPDATE_GENERAL\n - ID_REPOSITORY\n - PUBLISH_ACTIVATE_ID_ALL_INDIVIDUAL\n - offline_access\n - PUBLISH_REMOVE_ID_ALL_INDIVIDUAL\n - PUBLISH_AUTHENTICATION_TRANSACTION_STATUS_GENERAL\n - uma_authorization\n - PUBLISH_VID_CRED_STATUS_UPDATE_GENERAL\n - PUBLISH_AUTH_TYPE_STATUS_UPDATE_ALL_INDIVIDUAL\n\n - name: mpartner-default-print\n mappers: []\n saroles:\n - SUBSCRIBE_CREDENTIAL_ISSUED_INDIVIDUAL\n - PUBLISH_CREDENTIAL_STATUS_UPDATE_GENERAL\n - CREATE_SHARE\n - PRINT_PARTNER\n\n - name: mpartner-default-digitalcard\n mappers: []\n saroles:\n - SUBSCRIBE_IDENTITY_CREATED_GENERAL\n - SUBSCRIBE_IDENTITY_UPDATED_GENERAL\n - PUBLISH_CREDENTIAL_STATUS_UPDATE_GENERAL\n - CREATE_SHARE\n - PRINT_PARTNER\n - CREDENTIAL_REQUEST\n - SUBSCRIBE_CREDENTIAL_ISSUED_INDIVIDUAL\n\n - name: mosip-digitalcard-client\n saroles:\n - CREATE_SHARE\n - PUBLISH_CREDENTIAL_STATUS_UPDATE_GENERAL\n - SUBSCRIBE_CREDENTIAL_ISSUED_INDIVIDUAL\n - SUBSCRIBE_IDENTITY_CREATED_GENERAL\n - SUBSCRIBE_IDENTITY_UPDATED_GENERAL\n\n - name: mosip-hotlist-client\n saroles:\n - HOTLIST_ADMIN\n - uma_authorization\n - offline_access\n - PUBLISH_MOSIP_HOTLIST_GENERAL\n\n # Used only for initial deployment purposes. Maybe deleted from installation later.\n - name: mosip-deployment-client\n saroles:\n - ID_AUTHENTICATION\n - GLOBAL_ADMIN # TODO: do we need this?\n - PARTNER_ADMIN\n - uma_authorization\n - offline_access\n\n - name: mosip-testrig-client\n saroles:\n - ID_AUTHENTICATION\n - GLOBAL_ADMIN # TODO: do we need this?\n - PARTNER_ADMIN\n - REGISTRATION_PROCESSOR\n - CREATE_SHARE\n - PMS_ADMIN\n - PMS_USER\n - uma_authorization\n - offline_access\n sa_client_roles:\n - realm-management: ## realm-management client id\n - view-users # realm-management client roles\n - view-clients\n - view-realms\n - manage-users\n users: []\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/mosip-infra/blob/master/deployment/v3/external/iam/istio-addons-values.yaml", + "title": "istio-addons-values.yaml", + "repo": "mosip/mosip-infra", + "file_path": "deployment/v3/external/iam/istio-addons-values.yaml", + "language": "yaml", + "content": "istio:\n name: keycloak\n host: iam.sandbox.xyz.net\n # Note: If you have multiple ingressController then pass it in the form of list.\n ingressController: ingressgateway-internal\n # Note : By default, if you do **not** specify any gateways, the chart will bind to a single Gateway whose name is derived from the metadata name. If you have mutiple gateways to specify then pass it in the form of list like below.\n # gateways:\n # - public-gateway\n # - internal-gateway\n port:\n name: http\n number: 80\n protocol: HTTP\n serviceHost: keycloak\n servicePort: 80\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/mosip-infra/blob/master/deployment/v3/external/iam/upgrade-init-values.yaml", + "title": "upgrade-init-values.yaml", + "repo": "mosip/mosip-infra", + "file_path": "deployment/v3/external/iam/upgrade-init-values.yaml", + "language": "yaml", + "content": "keycloak:\n realms: |-\n del_realms:\n - preregistration\n mosip: # realm\n roles:\n - Default\n - ABIS_PARTNER\n - SDK_PARTNER\n - AUTH\n - AUTH_PARTNER\n - BIOMETRIC_READ\n - CENTRAL_ADMIN\n - CENTRAL_APPROVER\n - CREATE_SHARE\n - CREDENTIAL_ISSUANCE\n - CREDENTIAL_PARTNER\n - CREDENTIAL_REQUEST\n - DATA_READ\n - DEVICE_PROVIDER\n - DOCUMENT_READ\n - FTM_PROVIDER\n - GLOBAL_ADMIN\n - ID_AUTHENTICATION\n - ID_REPOSITORY\n - INDIVIDUAL\n - KEY_MAKER\n - MASTERDATA_ADMIN\n - METADATA_READ\n - MISP\n - MISP_PARTNER\n - offline_access\n - ONLINE_VERIFICATION_PARTNER\n - PARTNER\n - PARTNER_ADMIN\n - PARTNERMANAGER\n - PMS_ADMIN\n - PMS_USER\n - POLICYMANAGER\n - PREREG\n - PRE_REGISTRATION\n - PRE_REGISTRATION_ADMIN\n - PRINT_PARTNER\n - PUBLISH_ACTIVATE_ID_ALL_INDIVIDUAL\n - PUBLISH_ANONYMOUS_PROFILE_GENERAL\n - PUBLISH_APIKEY_APPROVED_GENERAL\n - PUBLISH_APIKEY_UPDATED_GENERAL\n - PUBLISH_AUTHENTICATION_TRANSACTION_STATUS_GENERAL\n - PUBLISH_AUTH_TYPE_STATUS_UPDATE_ACK_GENERAL\n - PUBLISH_AUTH_TYPE_STATUS_UPDATE_ALL_INDIVIDUAL\n - PUBLISH_CA_CERTIFICATE_UPLOADED_GENERAL\n - PUBLISH_CREDENTIAL_ISSUED_ALL_INDIVIDUAL\n - PUBLISH_CREDENTIAL_STATUS_UPDATE_GENERAL\n - PUBLISH_DEACTIVATE_ID_ALL_INDIVIDUAL\n - PUBLISH_IDA_FRAUD_ANALYTICS_GENERAL\n - PUBLISH_MASTERDATA_IDAUTHENTICATION_TEMPLATES_GENERAL\n - PUBLISH_MASTERDATA_TITLES_GENERAL\n - PUBLISH_MISP_LICENSE_GENERATED_GENERAL\n - PUBLISH_MISP_LICENSE_UPDATED_GENERAL\n - PUBLISH_MOSIP_HOTLIST_GENERAL\n - PUBLISH_PARTNER_UPDATED_GENERAL\n - PUBLISH_POLICY_UPDATED_GENERAL\n - PUBLISH_REGISTRATION_PROCESSOR_WORKFLOW_COMPLETED_EVENT_GENERAL\n - PUBLISH_REGISTRATION_PROCESSOR_WORKFLOW_PAUSED_FOR_ADDITIONAL_INFO_EVENT_GENERAL\n - PUBLISH_REMOVE_ID_ALL_INDIVIDUAL\n - PUBLISH_VID_CRED_STATUS_UPDATE_GENERAL\n - REGISTRATION_ADMIN\n - REGISTRATION_OFFICER\n - REGISTRATION_OPERATOR\n - REGISTRATION_PROCESSOR\n - REGISTRATION_SUPERVISOR\n - RESIDENT\n - SUBSCRIBE_ACTIVATE_ID_INDIVIDUAL\n - SUBSCRIBE_APIKEY_APPROVED_GENERAL\n - SUBSCRIBE_APIKEY_UPDATED_GENERAL\n - SUBSCRIBE_AUTH_TYPE_STATUS_UPDATE_ACK_GENERAL\n - SUBSCRIBE_AUTH_TYPE_STATUS_UPDATE_INDIVIDUAL\n - SUBSCRIBE_CA_CERTIFICATE_UPLOADED_GENERAL\n - SUBSCRIBE_CREDENTIAL_ISSUED_INDIVIDUAL\n - SUBSCRIBE_CREDENTIAL_STATUS_UPDATE_GENERAL\n - SUBSCRIBE_DEACTIVATE_ID_INDIVIDUAL\n - SUBSCRIBE_MASTERDATA_IDAUTHENTICATION_TEMPLATES_GENERAL\n - SUBSCRIBE_MASTERDATA_TITLES_GENERAL\n - SUBSCRIBE_MISP_LICENSE_GENERATED_GENERAL\n - SUBSCRIBE_MISP_LICENSE_UPDATED_GENERAL\n - SUBSCRIBE_MOSIP_HOTLIST_GENERAL\n - SUBSCRIBE_PARTNER_UPDATED_GENERAL\n - SUBSCRIBE_POLICY_UPDATED_GENERAL\n - SUBSCRIBE_REMOVE_ID_INDIVIDUAL\n - SUBSCRIBE_VID_CRED_STATUS_UPDATE_GENERAL\n - uma_authorization\n - ZONAL_ADMIN\n - ZONAL_APPROVER\n - HOTLIST_ADMIN\n - SUBSCRIBE_REGISTRATION_PROCESSOR_WORKFLOW_COMPLETED_EVENT_GENERAL\n - SUBSCRIBE_REGISTRATION_PROCESSOR_WORKFLOW_PAUSED_FOR_ADDITIONAL_INFO_EVENT_GENERAL\n clients: \n - name: mosip-abis-client\n mappers: []\n saroles: []\n - name: mosip-admin-client\n mappers: []\n saroles: \n - MASTERDATA_ADMIN\n - GLOBAL_ADMIN\n - PUBLISH_MASTERDATA_IDAUTHENTICATION_TEMPLATES_GENERAL\n - offline_access\n - PUBLISH_MOSIP_HOTLIST_GENERAL\n - uma_authorization\n - PUBLISH_MASTERDATA_TITLES_GENERAL\n - name: mosip-admin-services-client\n mappers: []\n saroles: []\n - name: mosip-auth-client\n mappers: []\n saroles:\n - AUTH\n - name: mosip-crereq-client\n mappers: []\n saroles:\n - CREDENTIAL_ISSUANCE\n - CREDENTIAL_REQUEST\n - SUBSCRIBE_CREDENTIAL_STATUS_UPDATE_GENERAL\n - offline_access\n - uma_authorization\n \n - name: mosip-creser-client \n mappers: []\n saroles:\n - CREDENTIAL_ISSUANCE\n - REGISTRATION_PROCESSOR\n - POLICYMANAGER\n - CREATE_SHARE\n - offline_access\n - PUBLISH_CREDENTIAL_ISSUED_ALL_INDIVIDUAL\n - uma_authorization\n - name: mosip-creser-idpass-client\n mappers: []\n saroles: \n - REGISTRATION_PROCESSOR\n - DATA_READ\n - DOCUMENT_READ\n - BIOMETRIC_READ\n - METADATA_READ\n - CREATE_SHARE\n - CREDENTIAL_REQUEST\n - name: mosip-datsha-client\n mappers: []\n saroles:\n - CREATE_SHARE\n - REGISTRATION_PROCESSOR\n - POLICYMANAGER\n \n - name: mosip-ida-client\n mappers: []\n saroles:\n - CREDENTIAL_REQUEST\n - GLOBAL_ADMIN\n - ID_AUTHENTICATION\n - PARTNERMANAGER # Added only for cert upload using postman during install. Not required otherwise.\n - name: mosip-misp-client\n mappers: []\n saroles: []\n - name: mosip-partner-client\n mappers: \n - mapper_name: phoneNumber\n mapper_user_attribute: phoneNumber\n token_claim_name: phoneNumber\n - mapper_name: organizationName\n mapper_user_attribute: organizationName\n token_claim_name: organizationName\n - mapper_name: partnerType\n mapper_user_attribute: partnerType\n token_claim_name: partnerType\n - mapper_name: addressTest\n mapper_user_attribute: address\n token_claim_name: addressTest\n saroles:\n - REGISTRATION_PROCESSOR\n - CREATE_SHARE\n - PMS_USER\n - PMS_ADMIN\n - PARTNER_ADMIN\n - SUBSCRIBE_CA_CERTIFICATE_UPLOADED_GENERAL\n - PUBLISH_MISP_LICENSE_UPDATED_GENERAL\n - PUBLISH_PARTNER_UPDATED_GENERAL\n - PUBLISH_MISP_LICENSE_GENERATED_GENERAL\n - PUBLISH_APIKEY_APPROVED_GENERAL\n - PUBLISH_APIKEY_UPDATED_GENERAL\n - PUBLISH_CA_CERTIFICATE_UPLOADED_GENERAL\n - PUBLISH_POLICY_UPDATED_GENERAL\n - name: mosip-partnermanager-client\n mappers: []\n saroles: \n - PARTNERMANAGER\n - KEY_MAKER\n - name: mosip-pms-client\n mappers: []\n saroles: \n - PARTNER_ADMIN\n - name: mosip-policymanager-client\n mappers: []\n saroles: []\n - name: mosip-reg-client\n mappers: []\n saroles:\n - GLOBAL_ADMIN\n - REGISTRATION_ADMIN\n - REGISTRATION_OFFICER\n - REGISTRATION_OPERATOR\n - REGISTRATION_SUPERVISOR\n - name: mosip-regproc-client\n mappers: []\n saroles:\n - REGISTRATION_PROCESSOR\n - DATA_READ\n - DOCUMENT_READ\n - BIOMETRIC_READ\n - METADATA_READ\n - CREATE_SHARE\n - CREDENTIAL_REQUEST\n - name: mpartner-default-mobile\n mappers: []\n saroles: \n - CREDENTIAL_PARTNER\n - SUBSCRIBE_REGISTRATION_PROCESSOR_WORKFLOW_COMPLETED_EVENT_GENERAL\n - SUBSCRIBE_REGISTRATION_PROCESSOR_WORKFLOW_PAUSED_FOR_ADDITIONAL_INFO_EVENT_GENERAL\n - PUBLISH_REGISTRATION_PROCESSOR_WORKFLOW_COMPLETED_EVENT_GENERAL\n - PUBLISH_CREDENTIAL_STATUS_UPDATE_GENERAL\n - PUBLISH_REGISTRATION_PROCESSOR_WORKFLOW_PAUSED_FOR_ADDITIONAL_INFO_EVENT_GENERAL\n - SUBSCRIBE_CREDENTIAL_ISSUED_INDIVIDUAL\n - name: mosip-resident-client\n mappers: []\n saroles:\n - RESIDENT\n - PARTNER_ADMIN\n - CREDENTIAL_REQUEST\n - offline_access\n - uma_authorization\n - name: mosip-prereg-client\n mappers: []\n del_saroles:\n - INDIVIDUAL\n saroles:\n - PREREG\n - REGISTRATION_PROCESSOR\n - PRE_REGISTRATION_ADMIN\n - name: mosip-creser-idpass-client\n mappers: []\n saroles: \n - REGISTRATION_PROCESSOR\n - DATA_READ\n - DOCUMENT_READ\n - BIOMETRIC_READ\n - METADATA_READ\n - CREATE_SHARE\n - CREDENTIAL_REQUEST\n - name: mosip-syncdata-client\n mappers: []\n saroles: \n - REGISTRATION_ADMIN\n - GLOBAL_ADMIN\n - SUBSCRIBE_CA_CERTIFICATE_UPLOADED_GENERAL\n - REGISTRATION_SUPERVISOR\n - REGISTRATION_OFFICER\n - name: mpartner-default-auth\n mappers: \n - mapper_name: langCode\n mapper_user_attribute: langCode \n token_claim_name: langCode\n saroles: \n - SUBSCRIBE_AUTH_TYPE_STATUS_UPDATE_INDIVIDUAL\n - SUBSCRIBE_POLICY_UPDATED_GENERAL\n - SUBSCRIBE_MISP_LICENSE_GENERATED_GENERAL\n - CREDENTIAL_REQUEST\n - SUBSCRIBE_MOSIP_HOTLIST_GENERAL\n - PUBLISH_ANONYMOUS_PROFILE_GENERAL\n - SUBSCRIBE_ACTIVATE_ID_INDIVIDUAL\n - SUBSCRIBE_REMOVE_ID_INDIVIDUAL\n - SUBSCRIBE_MASTERDATA_TITLES_GENERAL\n - SUBSCRIBE_CREDENTIAL_ISSUED_INDIVIDUAL\n - SUBSCRIBE_MISP_LICENSE_UPDATED_GENERAL\n - ID_AUTHENTICATION\n - PUBLISH_CREDENTIAL_STATUS_UPDATE_GENERAL\n - SUBSCRIBE_AUTH_TYPE_STATUS_UPDATE_ACK_GENERAL\n - SUBSCRIBE_PARTNER_UPDATED_GENERAL\n - offline_access\n - SUBSCRIBE_APIKEY_APPROVED_GENERAL\n - PUBLISH_AUTH_TYPE_STATUS_UPDATE_ACK_GENERAL\n - SUBSCRIBE_MASTERDATA_IDAUTHENTICATION_TEMPLATES_GENERAL\n - uma_authorization\n - SUBSCRIBE_APIKEY_UPDATED_GENERAL\n - SUBSCRIBE_DEACTIVATE_ID_INDIVIDUAL\n - SUBSCRIBE_CA_CERTIFICATE_UPLOADED_GENERAL\n - PUBLISH_AUTHENTICATION_TRANSACTION_STATUS_GENERAL\n - PUBLISH_IDA_FRAUD_ANALYTICS_GENERAL\n - name: mosip-idrepo-client\n mappers: []\n saroles: \n - PUBLISH_DEACTIVATE_ID_ALL_INDIVIDUAL\n - SUBSCRIBE_VID_CRED_STATUS_UPDATE_GENERAL\n - ID_REPOSITORY\n - PUBLISH_ACTIVATE_ID_ALL_INDIVIDUAL\n - offline_access\n - PUBLISH_REMOVE_ID_ALL_INDIVIDUAL\n - PUBLISH_AUTHENTICATION_TRANSACTION_STATUS_GENERAL\n - uma_authorization\n - PUBLISH_VID_CRED_STATUS_UPDATE_GENERAL\n - PUBLISH_AUTH_TYPE_STATUS_UPDATE_ALL_INDIVIDUAL\n - name: mpartner-default-print\n mappers: []\n saroles: \n - SUBSCRIBE_CREDENTIAL_ISSUED_INDIVIDUAL\n - PUBLISH_CREDENTIAL_STATUS_UPDATE_GENERAL\n - CREATE_SHARE\n - PRINT_PARTNER\n - name: mosip-hotlist-client\n saroles:\n - HOTLIST_ADMIN\n - uma_authorization\n - offline_access\n - PUBLISH_MOSIP_HOTLIST_GENERAL\n # Used only for initial deployment purposes. Maybe deleted from installation later.\n - name: mosip-deployment-client\n saroles:\n - ID_AUTHENTICATION\n - GLOBAL_ADMIN # TODO: do we need this?\n - PARTNER_ADMIN\n - uma_authorization\n - offline_access\n \n - name: mosip-testrig-client\n saroles:\n - ID_AUTHENTICATION\n - GLOBAL_ADMIN # TODO: do we need this?\n - PARTNER_ADMIN\n - REGISTRATION_PROCESSOR\n - CREATE_SHARE\n - PMS_ADMIN\n - PMS_USER\n - uma_authorization\n - offline_access\n sa_client_roles:\n - realm-management: ## realm-management client id\n - view-users # realm-management client roles\n - view-clients\n - view-realms\n - manage-users\n \n users: []\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/mosip-infra/blob/master/deployment/v3/external/iam/values.yaml", + "title": "values.yaml", + "repo": "mosip/mosip-infra", + "file_path": "deployment/v3/external/iam/values.yaml", + "language": "yaml", + "content": "# Refrain from fixing docker tags. Instead use the appropriate chart version, while helm install\n# Latest Helm chart of Bitnami uses Keycloak 18+ \n\nservice:\n type: ClusterIP\n\nauth:\n adminUser: admin\n\nextraEnvVars:\n - name: KEYCLOAK_EXTRA_ARGS\n value: \"-Dkeycloak.profile.feature.upload_scripts=enabled -Dkeycloak.profile.feature.token_exchange=enabled -Dkeycloak.profile.feature.admin_fine_grained_authz=enabled\"\n #value: \"-Dkeycloak.profile.feature.upload_scripts=enabled -Dkeycloak.import=/config/realm-mosip.json\"\n\n## Disable ingress as we use Istio\ningress:\n enabled: false\n hostname:\n annotations:\n ingress.kubernetes.io/class: nginx\n\nproxyAddressForwarding: true\n\nreplicaCount: 1\n\n# Enable if replicaCount > 1\nserviceDiscovery:\n enabled: true\n\nresources:\n limits: {}\n # cpu: 250m\n # memory: 1Gi\n requests:\n cpu: 200m\n memory: 1000Mi\n\nrbac:\n create: true\n rules:\n - apiGroups:\n - \"\"\n resources:\n - pods\n verbs:\n - get\n - list\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/mosip-infra/blob/master/deployment/v3/external/istio-gateway/Chart.yaml", + "title": "Chart.yaml", + "repo": "mosip/mosip-infra", + "file_path": "deployment/v3/external/istio-gateway/Chart.yaml", + "language": "yaml", + "content": "apiVersion: v2\nname: istio-addons\ndescription: A Helm chart for MOSIP istio gateways\n\n# A chart can be either an 'application' or a 'library' chart.\n#\n# Application charts are a collection of templates that can be packaged into versioned archives\n# to be deployed.\n#\n# Library charts provide useful utilities or functions for the chart developer. They're included as\n# a dependency of application charts to inject those utilities and functions into the rendering\n# pipeline. Library charts do not define any templates and therefore cannot be deployed.\ntype: application\n\n# This is the chart version. This version number should be incremented each time you make changes\n# to the chart and its templates, including the app version.\n# Versions are expected to follow Semantic Versioning (https://semver.org/)\nversion: 0.1.0\n\n# This is the version number of the application being deployed. This version number should be\n# incremented each time you make changes to the application. Versions are not expected to\n# follow Semantic Versioning. They should reflect the version the application is using.\n# It is recommended to use it with quotes.\nappVersion: \"1.16.0\"\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/mosip-infra/blob/master/deployment/v3/external/istio-gateway/templates/authpolicies.yaml", + "title": "authpolicies.yaml", + "repo": "mosip/mosip-infra", + "file_path": "deployment/v3/external/istio-gateway/templates/authpolicies.yaml", + "language": "yaml", + "content": "{{ if .Values.authPolicy.denySwagger }}\napiVersion: security.istio.io/v1beta1\nkind: AuthorizationPolicy\nmetadata:\n name: deny-swagger\nspec:\n selector:\n matchLabels:\n istio: ingressgateway\n action: DENY\n rules:\n - to:\n - operation:\n paths: [\"*/swagger-ui.html\", \"*/swagger-ui/index.html\"]\n{{- end }}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/mosip-infra/blob/master/deployment/v3/external/istio-gateway/templates/authpolicy-mockrp.yaml", + "title": "authpolicy-mockrp.yaml", + "repo": "mosip/mosip-infra", + "file_path": "deployment/v3/external/istio-gateway/templates/authpolicy-mockrp.yaml", + "language": "yaml", + "content": "apiVersion: security.istio.io/v1beta1\nkind: AuthorizationPolicy\nmetadata:\n name: allow-mock-identity-system-swagger\nspec:\n selector:\n matchLabels:\n istio: ingressgateway\n action: ALLOW\n rules:\n - to:\n - operation:\n paths: [\"/mock-identity-system/swagger-ui.html\"]\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/mosip-infra/blob/master/deployment/v3/external/istio-gateway/templates/gateway-internal.yaml", + "title": "gateway-internal.yaml", + "repo": "mosip/mosip-infra", + "file_path": "deployment/v3/external/istio-gateway/templates/gateway-internal.yaml", + "language": "yaml", + "content": "{{ if .Values.gateway.internal.enabled }}\napiVersion: networking.istio.io/v1alpha3\nkind: Gateway\nmetadata:\n name: internal\nspec:\n selector:\n istio: ingressgateway-internal\n servers:\n - port:\n number: 80\n name: http\n protocol: HTTP\n hosts:\n - {{ .Values.gateway.internal.host }}\n{{- end }}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/mosip-infra/blob/master/deployment/v3/external/istio-gateway/templates/gateway-public.yaml", + "title": "gateway-public.yaml", + "repo": "mosip/mosip-infra", + "file_path": "deployment/v3/external/istio-gateway/templates/gateway-public.yaml", + "language": "yaml", + "content": "{{ if .Values.gateway.public.enabled }}\napiVersion: networking.istio.io/v1beta1\nkind: Gateway\nmetadata:\n name: public\nspec:\n selector:\n istio: ingressgateway\n servers:\n - port:\n number: 80\n name: http\n protocol: HTTP\n hosts:\n - {{ .Values.gateway.public.host }}\n{{- end }}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/mosip-infra/blob/master/deployment/v3/external/istio-gateway/templates/proxy-protocol.yaml", + "title": "proxy-protocol.yaml", + "repo": "mosip/mosip-infra", + "file_path": "deployment/v3/external/istio-gateway/templates/proxy-protocol.yaml", + "language": "yaml", + "content": "{{ if .Values.proxyProtocol.enabled }}\napiVersion: networking.istio.io/v1alpha3\nkind: EnvoyFilter\nmetadata:\n name: proxy-protocol\nspec:\n workloadSelector:\n labels:\n app: istio-ingressgateway\n configPatches:\n - applyTo: LISTENER\n patch:\n operation: MERGE\n value:\n listener_filters:\n - name: envoy.filters.listener.proxy_protocol\n - name: envoy.filters.listener.tls_inspector\n{{ end }}\n\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/mosip-infra/blob/master/deployment/v3/external/istio-gateway/values.yaml", + "title": "values.yaml", + "repo": "mosip/mosip-infra", + "file_path": "deployment/v3/external/istio-gateway/values.yaml", + "language": "yaml", + "content": "gateway:\n internal:\n enabled: true\n host: api-internal.sandbox.xyz.net\n public:\n enabled: true\n host: api.sandbox.xyz.net\nproxyProtocol:\n enabled: true\nauthPolicy:\n denySwagger: true\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/mosip-infra/blob/master/deployment/v3/external/kafka/chart/istio-addons/Chart.yaml", + "title": "Chart.yaml", + "repo": "mosip/mosip-infra", + "file_path": "deployment/v3/external/kafka/chart/istio-addons/Chart.yaml", + "language": "yaml", + "content": "apiVersion: v2\nname: istio-addons\ndescription: A Helm chart for installing Istio modules for Kafka-UI\n\n# A chart can be either an 'application' or a 'library' chart.\n#\n# Application charts are a collection of templates that can be packaged into versioned archives\n# to be deployed.\n#\n# Library charts provide useful utilities or functions for the chart developer. They're included as\n# a dependency of application charts to inject those utilities and functions into the rendering\n# pipeline. Library charts do not define any templates and therefore cannot be deployed.\ntype: application\n\n# This is the chart version. This version number should be incremented each time you make changes\n# to the chart and its templates, including the app version.\n# Versions are expected to follow Semantic Versioning (https://semver.org/)\nversion: 1.2.0\n\n# This is the version number of the application being deployed. This version number should be\n# incremented each time you make changes to the application. Versions are not expected to\n# follow Semantic Versioning. They should reflect the version the application is using.\n# It is recommended to use it with quotes.\nappVersion: \"1.16.0\"\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/mosip-infra/blob/master/deployment/v3/external/kafka/chart/istio-addons/templates/gateway.yaml", + "title": "gateway.yaml", + "repo": "mosip/mosip-infra", + "file_path": "deployment/v3/external/kafka/chart/istio-addons/templates/gateway.yaml", + "language": "yaml", + "content": "apiVersion: networking.istio.io/v1alpha3\nkind: Gateway\nmetadata:\n name: kafka-ui\nspec:\n selector:\n istio: ingressgateway-internal\n servers:\n - port:\n number: 80\n name: kafka-ui\n protocol: HTTP\n hosts:\n - {{ .Values.kafkaUiHost }}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/mosip-infra/blob/master/deployment/v3/external/kafka/chart/istio-addons/templates/vs.yaml", + "title": "vs.yaml", + "repo": "mosip/mosip-infra", + "file_path": "deployment/v3/external/kafka/chart/istio-addons/templates/vs.yaml", + "language": "yaml", + "content": "apiVersion: networking.istio.io/v1alpha3\nkind: VirtualService\nmetadata:\n name: kafka-ui\nspec:\n hosts:\n - \"*\"\n gateways:\n - kafka-ui\n http:\n - route:\n - destination:\n host: {{ .Values.installName }}\n port:\n number: 80\n headers:\n request:\n set:\n x-forwarded-proto: https\n\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/mosip-infra/blob/master/deployment/v3/external/kafka/chart/istio-addons/values.yaml", + "title": "values.yaml", + "repo": "mosip/mosip-infra", + "file_path": "deployment/v3/external/kafka/chart/istio-addons/values.yaml", + "language": "yaml", + "content": "kafkaUiHost: kafka.sandbox.xyz.net\ninstallName: kafka-ui\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/mosip-infra/blob/master/deployment/v3/external/kafka/istio-addons-values.yaml", + "title": "istio-addons-values.yaml", + "repo": "mosip/mosip-infra", + "file_path": "deployment/v3/external/kafka/istio-addons-values.yaml", + "language": "yaml", + "content": "istio:\n name: kafka-ui\n host: kafka.sandbox.xyz.net\n # Note: If you have multiple ingressController then pass it in the form of list.\n ingressController: ingressgateway-internal\n # Note : By default, if you do **not** specify any gateways, the chart will bind to a single Gateway whose name is derived from the metadata name. If you have mutiple gateways to specify then pass it in the form of list like below.\n # gateways:\n # - public-gateway\n # - internal-gateway\n port:\n name: kafka-ui\n number: 80\n protocol: HTTP\n serviceHost: kafka-ui\n servicePort: 80\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/mosip-infra/blob/master/deployment/v3/external/kafka/ui-values.yaml", + "title": "ui-values.yaml", + "repo": "mosip/mosip-infra", + "file_path": "deployment/v3/external/kafka/ui-values.yaml", + "language": "yaml", + "content": "envs:\n config:\n KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS: kafka.kafka:9092\n KAFKA_CLUSTERS_0_NAME: main_kafka\n KAFKA_CLUSTERS_0_ZOOKEEPER: kafka-zookeeper.kafka:2181\n KAFKA_CLUSTERS_0_KAFKACONNECT_0_ADDRESS: http://debezium-service.reporting:8083\n KAFKA_CLUSTERS_0_KAFKACONNECT_0_NAME: debezium\n KAFKA_CLUSTERS_0_KAFKACONNECT_1_ADDRESS: http://es-connect.reporting:8083\n KAFKA_CLUSTERS_0_KAFKACONNECT_1_NAME: es-connect\nimage:\n pullPolicy: Always" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/mosip-infra/blob/master/deployment/v3/external/kafka/values.yaml", + "title": "values.yaml", + "repo": "mosip/mosip-infra", + "file_path": "deployment/v3/external/kafka/values.yaml", + "language": "yaml", + "content": "clusterDomain: cluster.local\nlogRetentionBytes: _1073741824\ndefaultReplicationFactor: 3\noffsetsTopicReplicationFactor: 3\ntransactionStateLogReplicationFactor: 3\nnumPartitions: 20\nreplicaCount: 5\nsidecars: {}\nautoCreateTopicsEnable: true\n# CAUTION: Option to delete topics should be disabled in production. \ndeleteTopicEnable: true\n\npersistence:\n enabled: true\n accessModes:\n - ReadWriteOnce\n size: 8Gi\n\nzookeeper:\n enabled: true\n replicaCount: 5\n persistence:\n enabled: true\n size: 2Gi\n\nresources:\n limits: {}\n # cpu: 250m\n # memory: 1Gi\n requests:\n cpu: 200m\n memory: 2000Mi\n\nstartupProbe:\n enabled: true\n initialDelaySeconds: 30\n periodSeconds: 10\n timeoutSeconds: 1\n failureThreshold: 30\n successThreshold: 1\n\nkraft:\n ## @param kraft.enabled Switch to enable or disable the KRaft mode for Kafka\n ##\n enabled: false\n\ncontroller:\n ## @param controller.replicaCount Number of Kafka controller-eligible nodes\n ## Ignore this section if running in Zookeeper mode.\n ##\n replicaCount: 0\n\nbroker:\n ## @param broker.replicaCount Number of Kafka broker-only nodes\n ##\n replicaCount: 5\n\nlisteners:\n ## @param listeners.client.name Name for the Kafka client listener\n ## @param listeners.client.containerPort Port for the Kafka client listener\n ## @param listeners.client.protocol Security protocol for the Kafka client listener. Allowed values are 'PLAINTEXT', 'SASL_PLAINTEXT', 'SASL_SSL' and 'SSL'\n ## @param listeners.client.sslClientAuth Optional. If SASL_SSL is enabled, configure mTLS TLS authentication type. If SSL protocol is enabled, overrides tls.authType for this listener. Allowed values are 'none', 'requested' and 'required'\n client:\n containerPort: 9092\n protocol: PLAINTEXT\n name: CLIENT\n sslClientAuth: \"\"\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/mosip-infra/blob/master/deployment/v3/external/oauth2-proxy/oauth2-proxy.yaml", + "title": "oauth2-proxy.yaml", + "repo": "mosip/mosip-infra", + "file_path": "deployment/v3/external/oauth2-proxy/oauth2-proxy.yaml", + "language": "yaml", + "content": "apiVersion: v1\nkind: ConfigMap\nmetadata:\n name: oauth2-proxy-confmap\n labels:\n app.kubernetes.io/name: oauth2-proxy\ndata:\n oauth2_proxy.cfg: |\n email_domains = [\"*\"]\n redirect_url = \"https://___IAM_HOST___/oauth2/callback\"\n silence_ping_logging = true\n skip_provider_button = true\n whitelist_domains = [\"___ROOT_DOMAIN___\"]\n cookie_domains = [\"___ROOT_DOMAIN___\"]\n cookie_name = \"_oauth2_proxy____INSTALLATION_NAME___\"\n skip_jwt_bearer_tokens = true\n alpha.cfg: |\n injectRequestHeaders:\n - name: X-Forwarded-Groups\n values:\n - claim: groups\n - name: X-Forwarded-User\n values:\n - claim: user\n - name: X-Forwarded-Email\n values:\n - claim: email\n - name: X-Forwarded-Preferred-Username\n values:\n - claim: preferred_username\n - name: Authorization\n values:\n - claim: id_token\n prefix: 'Bearer '\n injectResponseHeaders:\n - name: X-Auth-Access-Token\n values:\n - claim: access_token\n - name: X-Auth-Request-User\n values:\n - claim: user\n - name: X-Auth-Request-Email\n values:\n - claim: email\n - name: X-Auth-Request-Preferred-Username\n values:\n - claim: preferred_username\n - name: X-Auth-Request-Groups\n values:\n - claim: groups\n - name: Authorization\n values:\n - claim: id_token\n prefix: 'Bearer '\n providers:\n - clientID: \"___ISTIO_CLIENT_ID___\"\n clientSecret: \"___ISTIO_CLIENT_SECRET___\"\n id: keycloak-oidc-istio\n provider: keycloak-oidc\n oidcConfig:\n emailClaim: email\n groupsClaim: groups\n userIDClaim: email\n insecureAllowUnverifiedEmail: true\n insecureSkipNonce: true\n issuerURL: https://___IAM_HOST___/auth/realms/istio\n server:\n BindAddress: 0.0.0.0:4180\n upstreamConfig:\n upstreams:\n - id: static_200\n path: /\n static: true\n staticCode: 200\n---\napiVersion: v1\nkind: Secret\nmetadata:\n name: oauth2-proxy-secret\n labels:\n app.kubernetes.io/name: oauth2-proxy\ntype: Opaque\ndata:\n OAUTH2_PROXY_COOKIE_SECRET: ___COOKIE_SECRET___\n---\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n name: oauth2-proxy\n labels:\n app.kubernetes.io/name: oauth2-proxy\nspec:\n replicas: 1\n strategy:\n type: RollingUpdate\n selector:\n matchLabels:\n app.kubernetes.io/name: oauth2-proxy\n template:\n metadata:\n labels:\n app.kubernetes.io/name: oauth2-proxy\n spec:\n containers:\n - name: oauth2-proxy\n image: quay.io/oauth2-proxy/oauth2-proxy:v7.2.0\n imagePullPolicy: IfNotPresent\n args:\n - --config=/bitnami/oauth2-proxy/conf/oauth2_proxy.cfg\n - --alpha-config=/bitnami/oauth2-proxy/conf/alpha.cfg\n envFrom:\n - secretRef:\n name: oauth2-proxy-secret\n ports:\n - containerPort: 4180\n name: http\n protocol: TCP\n resources:\n limits: {}\n requests: {}\n livenessProbe:\n httpGet:\n path: /ping\n port: http\n scheme: HTTP\n initialDelaySeconds: 0\n periodSeconds: 10\n timeoutSeconds: 1\n successThreshold: 1\n failureThreshold: 5\n readinessProbe:\n httpGet:\n path: /ping\n port: http\n scheme: HTTP\n initialDelaySeconds: 0\n periodSeconds: 10\n timeoutSeconds: 1\n successThreshold: 1\n failureThreshold: 5\n volumeMounts:\n - name: main-configuration\n mountPath: /bitnami/oauth2-proxy/conf\n volumes:\n - name: main-configuration\n configMap:\n defaultMode: 420\n name: oauth2-proxy-confmap\n---\napiVersion: v1\nkind: Service\nmetadata:\n name: oauth2-proxy\n labels:\n app.kubernetes.io/name: oauth2-proxy\nspec:\n type: ClusterIP\n selector:\n app.kubernetes.io/name: oauth2-proxy\n ports:\n - name: http\n port: 80\n protocol: TCP\n targetPort: http\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/mosip-infra/blob/master/deployment/v3/external/oauth2-proxy/sample-auth-policy.yaml", + "title": "sample-auth-policy.yaml", + "repo": "mosip/mosip-infra", + "file_path": "deployment/v3/external/oauth2-proxy/sample-auth-policy.yaml", + "language": "yaml", + "content": "# # The following AuthorizationPolicys are not supported by istio yet.\n# # Hence an envoyfilter is written manually\n# # In future once support is added replace the subsequent envoyfilter with this authorizationPolicys (or similar ones).\n# apiVersion: security.istio.io/v1beta1\n# kind: AuthorizationPolicy\n# metadata:\n# name: sample-ext-custom-authn-policy\n# namespace: istio-system\n# spec:\n# selector:\n# matchLabels:\n# istio: ingressgateway-internal\n# action: CUSTOM\n# provider:\n# name: oauth2-proxy\n# rules:\n# - to:\n# - operation:\n# hosts: [\"h__mosip-api-internal-host__h\"]\n# paths: [\"/httpbin*\"]\n# - operation:\n# hosts: [\"h__mosip-api-internal-host__h\"]\n# paths: [ \"*swagger*\" ]\n# ---\n#\n# apiVersion: security.istio.io/v1beta1\n# kind: AuthorizationPolicy\n# metadata:\n# name: sample-ext-custom-authz-policy\n# namespace: istio-system\n# spec:\n# selector:\n# matchLabels:\n# istio: ingressgateway-internal\n# action: DENY\n# rules:\n# - to:\n# - operation:\n# hosts: [\"h__mosip-api-internal-host__h\"]\n# paths: [\"/httpbin*\"]\n# when:\n# - key: request.headers[x-auth-request-groups]\n# notValues: [\"*role:httpbin_access*\"]\n# ---\napiVersion: networking.istio.io/v1alpha3\nkind: EnvoyFilter\nmetadata:\n name: sample-ext-custom-authz-filter\n namespace: istio-system\nspec:\n workloadSelector:\n labels:\n istio: ingressgateway-internal\n configPatches:\n - applyTo: HTTP_FILTER\n match:\n context: GATEWAY\n listener:\n portNumber: 8080\n filterChain:\n filter:\n name: \"envoy.filters.network.http_connection_manager\"\n subFilter:\n name: \"envoy.filters.http.router\"\n patch:\n operation: INSERT_BEFORE\n value:\n name: envoy.filters.http.rbac\n typed_config:\n \"@type\": type.googleapis.com/envoy.extensions.filters.http.rbac.v3.RBAC\n shadow_rules:\n action: DENY\n policies:\n \"istio-ext-authz-ns[istio-system]-policy[sample-ext-custom-authn-policy]-rule[0]\":\n permissions:\n - and_rules:\n rules:\n - header:\n name: \":authority\"\n string_match:\n exact: h__mosip-api-internal-host__h\n ignore_case: true\n - url_path:\n path:\n prefix: \"/httpbin\"\n - and_rules:\n rules:\n - header:\n name: \":authority\"\n string_match:\n exact: h__mosip-api-internal-host__h\n ignore_case: true\n - url_path:\n path:\n contains: \"swagger\"\n - header:\n name: \":authority\"\n string_match:\n exact: h__mosip-kibana-host__h\n ignore_case: true\n - header:\n name: \":authority\"\n string_match:\n exact: h__mosip-kafka-host__h\n ignore_case: true\n principals:\n - any: true\n shadow_rules_stat_prefix: istio_ext_authz_\n - applyTo: HTTP_FILTER\n match:\n context: GATEWAY\n listener:\n portNumber: 8080\n filterChain:\n filter:\n name: \"envoy.filters.network.http_connection_manager\"\n subFilter:\n name: \"envoy.filters.http.router\"\n patch:\n operation: INSERT_BEFORE\n value:\n name: envoy.filters.http.ext_authz\n typed_config:\n \"@type\": type.googleapis.com/envoy.extensions.filters.http.ext_authz.v3.ExtAuthz\n http_service:\n server_uri:\n uri: \"http://oauth2-proxy.oauth2-proxy.svc.cluster.local\"\n cluster: \"outbound|80||oauth2-proxy.oauth2-proxy.svc.cluster.local\"\n timeout: \"600s\"\n authorization_request:\n allowed_headers:\n patterns:\n - exact: authorization\n ignore_case: true\n - exact: cookie\n ignore_case: true\n headers_to_add:\n - key: X-Auth-Request-Redirect\n value: \"https://%REQ(:authority)%%REQ(:path)%\"\n authorization_response:\n allowed_upstream_headers:\n patterns:\n - exact: authorization\n ignore_case: true\n - exact: path\n ignore_case: true\n - exact: x-auth-access-token\n ignore_case: true\n - exact: x-auth-request-user\n ignore_case: true\n - exact: x-auth-request-email\n ignore_case: true\n - exact: x-auth-request-preferred-username\n ignore_case: true\n - exact: x-auth-request-groups\n ignore_case: true\n allowed_client_headers:\n patterns:\n - exact: content-type\n ignore_case: true\n - exact: set-cookie\n ignore_case: true\n transport_api_version: V3\n filter_enabled_metadata:\n filter: envoy.filters.http.rbac\n path:\n - key: istio_ext_authz_shadow_effective_policy_id\n value:\n string_match:\n prefix: istio-ext-authz\n - applyTo: HTTP_FILTER\n match:\n context: GATEWAY\n listener:\n portNumber: 8080\n filterChain:\n filter:\n name: \"envoy.filters.network.http_connection_manager\"\n subFilter:\n name: \"envoy.filters.http.router\"\n patch:\n operation: INSERT_BEFORE\n value:\n name: envoy.filters.http.jwt_authn\n typed_config:\n \"@type\": type.googleapis.com/envoy.extensions.filters.http.jwt_authn.v3.JwtAuthentication\n providers:\n oauth2-istio-0:\n issuer: \"https://h__mosip-iam-external-host__h/auth/realms/istio\"\n audiences:\n - istio-auth-client\n local_jwks:\n inline_string: 'rjwks__https://h__mosip-iam-external-host__h/auth/realms/istio/protocol/openid-connect/certs__rjwks'\n payload_in_metadata: istio_jwt_payload\n forward: true\n rules:\n - match:\n headers:\n - name: \":authority\"\n exact_match: h__mosip-api-internal-host__h\n prefix: \"/httpbin\"\n requires:\n provider_name: oauth2-istio-0\n - match:\n headers:\n - name: \":authority\"\n exact_match: h__mosip-api-internal-host__h\n - name: \":path\"\n contains_match: \"swagger\"\n prefix: \"/\"\n requires:\n provider_name: oauth2-istio-0\n - match:\n headers:\n - name: \":authority\"\n exact_match: h__mosip-kibana-host__h\n prefix: \"/\"\n requires:\n provider_name: oauth2-istio-0\n - match:\n headers:\n - name: \":authority\"\n exact_match: h__mosip-kafka-host__h\n prefix: \"/\"\n requires:\n provider_name: oauth2-istio-0\n - applyTo: HTTP_FILTER\n match:\n context: GATEWAY\n listener:\n portNumber: 8080\n filterChain:\n filter:\n name: \"envoy.filters.network.http_connection_manager\"\n subFilter:\n name: \"envoy.filters.http.router\"\n patch:\n operation: INSERT_BEFORE\n value:\n name: envoy.filters.http.rbac.mydeny\n typed_config:\n \"@type\": type.googleapis.com/envoy.extensions.filters.http.rbac.v3.RBAC\n rules:\n action: DENY\n policies:\n \"httpbinPolicy\":\n permissions:\n - and_rules:\n rules:\n - header:\n name: \":authority\"\n string_match:\n exact: h__mosip-api-internal-host__h\n ignore_case: true\n - url_path:\n path:\n prefix: \"/httpbin\"\n principals:\n - and_ids:\n ids:\n - not_id:\n or_ids:\n ids:\n - metadata:\n filter: envoy.filters.http.jwt_authn\n path:\n - key: istio_jwt_payload\n - key: realm_access_roles\n value:\n list_match:\n one_of:\n string_match:\n exact: httpbin_access\n \"swaggerPolicy\":\n permissions:\n - and_rules:\n rules:\n - header:\n name: \":authority\"\n string_match:\n exact: h__mosip-api-internal-host__h\n ignore_case: true\n - url_path:\n path:\n contains: swagger\n principals:\n - and_ids:\n ids:\n - not_id:\n or_ids:\n ids:\n - metadata:\n filter: envoy.filters.http.jwt_authn\n path:\n - key: istio_jwt_payload\n - key: realm_access_roles\n value:\n list_match:\n one_of:\n string_match:\n exact: swagger_access\n \"kibanaPolicy\":\n permissions:\n - header:\n name: \":authority\"\n string_match:\n exact: h__mosip-kibana-host__h\n ignore_case: true\n principals:\n - and_ids:\n ids:\n - not_id:\n or_ids:\n ids:\n - metadata:\n filter: envoy.filters.http.jwt_authn\n path:\n - key: istio_jwt_payload\n - key: realm_access_roles\n value:\n list_match:\n one_of:\n string_match:\n exact: kibana_access\n \"kafkaUiPolicy\":\n permissions:\n - header:\n name: \":authority\"\n string_match:\n exact: h__mosip-kafka-host__h\n ignore_case: true\n principals:\n - and_ids:\n ids:\n - not_id:\n or_ids:\n ids:\n - metadata:\n filter: envoy.filters.http.jwt_authn\n path:\n - key: istio_jwt_payload\n - key: realm_access_roles\n value:\n list_match:\n one_of:\n string_match:\n exact: kafka_ui_access\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/mosip-infra/blob/master/deployment/v3/external/object-store/minio/chart/istio-addons/Chart.yaml", + "title": "Chart.yaml", + "repo": "mosip/mosip-infra", + "file_path": "deployment/v3/external/object-store/minio/chart/istio-addons/Chart.yaml", + "language": "yaml", + "content": "apiVersion: v2\nname: istio-addons\ndescription: A Helm chart for MOSIP minio istio\ntype: application\nversion: 1.2.0\nappVersion: \"1.2.0\"\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/mosip-infra/blob/master/deployment/v3/external/object-store/minio/chart/istio-addons/templates/gateway.yaml", + "title": "gateway.yaml", + "repo": "mosip/mosip-infra", + "file_path": "deployment/v3/external/object-store/minio/chart/istio-addons/templates/gateway.yaml", + "language": "yaml", + "content": "apiVersion: networking.istio.io/v1alpha3\nkind: Gateway\nmetadata:\n name: minio\nspec:\n selector:\n istio: ingressgateway-internal\n servers:\n - port:\n number: 80\n name: http\n protocol: HTTP\n hosts:\n - {{ .Values.externalHost }} \n - port:\n name: minio\n number: 9000\n protocol: HTTP\n hosts:\n - {{ .Values.externalHost }}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/mosip-infra/blob/master/deployment/v3/external/object-store/minio/chart/istio-addons/templates/vs.yaml", + "title": "vs.yaml", + "repo": "mosip/mosip-infra", + "file_path": "deployment/v3/external/object-store/minio/chart/istio-addons/templates/vs.yaml", + "language": "yaml", + "content": "apiVersion: networking.istio.io/v1alpha3\nkind: VirtualService\nmetadata:\n name: minio\nspec:\n hosts:\n - \"*\"\n gateways:\n - minio\n http:\n - name: minio\n match:\n - port: 9000\n route:\n - destination:\n host: minio\n port:\n number: 9000\n - name: http\n match:\n - uri:\n prefix: \"/\"\n route:\n - destination:\n host: minio\n port:\n number: 9001\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/mosip-infra/blob/master/deployment/v3/external/object-store/minio/values.yaml", + "title": "values.yaml", + "repo": "mosip/mosip-infra", + "file_path": "deployment/v3/external/object-store/minio/values.yaml", + "language": "yaml", + "content": "metrics:\n serviceMonitor:\n enabled: true\n\nextraEnvVars:\n - name: MINIO_PROMETHEUS_URL\n value: \"http://rancher-monitoring-prometheus.cattle-monitoring-system:9090\"\n - name: MINIO_PROMETHEUS_JOB_ID\n value: \"minio\"\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/mosip-infra/blob/master/deployment/v3/external/postgres/ansible/postgresql-cleanup.yml", + "title": "postgresql-cleanup.yml", + "repo": "mosip/mosip-infra", + "file_path": "deployment/v3/external/postgres/ansible/postgresql-cleanup.yml", + "language": "yml", + "content": "---\n# PostgreSQL Cleanup - Complete Removal and Restoration\n# This playbook completely removes PostgreSQL and restores the system to original state\n\n- name: PostgreSQL Complete Cleanup\n hosts: postgresql_servers\n become: yes\n vars:\n # Configuration - should match the setup playbook\n postgres_version: \"{{ postgresql_version | default('15') }}\"\n postgres_port: \"{{ postgresql_port | default('5433') }}\"\n postgres_device: \"{{ storage_device | default('/dev/nvme2n1') }}\"\n postgres_mount: \"{{ mount_point | default('/srv/postgres') }}\"\n postgres_data_dir: \"{{ postgres_mount }}/postgresql/{{ postgres_version }}/main\"\n postgres_old_dir: \"/var/lib/postgresql/{{ postgres_version }}/main\"\n postgres_config_dir: \"/etc/postgresql/{{ postgres_version }}/main\"\n \n tasks:\n - name: Display cleanup summary\n debug:\n msg: |\n PostgreSQL {{ postgres_version }} Cleanup Starting\n Port: {{ postgres_port }}\n Data Directory: {{ postgres_data_dir }}\n Mount Point: {{ postgres_mount }}\n Device: {{ postgres_device }}\n WARNING: This will PERMANENTLY DELETE all PostgreSQL data!\n \n - name: Pause for confirmation\n pause:\n prompt: \"Are you sure you want to proceed with cleanup? This will DELETE ALL PostgreSQL data! Press ENTER to continue or Ctrl+C to abort\"\n when: not (auto_confirm | default(false) | bool)\n\n # Stop PostgreSQL Service\n - name: Stop PostgreSQL service\n systemd:\n name: postgresql\n state: stopped\n ignore_errors: yes\n \n - name: Disable PostgreSQL service\n systemd:\n name: postgresql\n enabled: no\n ignore_errors: yes\n\n # Backup current data (optional safety measure)\n - name: Create backup directory (safety measure)\n file:\n path: \"/tmp/postgresql-cleanup-backup-{{ ansible_date_time.epoch }}\"\n state: directory\n register: backup_dir\n when: create_backup | default(false) | bool\n \n - name: Backup PostgreSQL configuration files\n copy:\n src: \"{{ postgres_config_dir }}/\"\n dest: \"{{ backup_dir.path }}/config/\"\n remote_src: yes\n when: create_backup | default(false) | bool and backup_dir is defined\n ignore_errors: yes\n \n - name: Backup custom data directory\n shell: |\n if [ -d \"{{ postgres_data_dir }}\" ]; then\n tar -czf \"{{ backup_dir.path }}/data-backup.tar.gz\" -C \"{{ postgres_data_dir }}\" .\n fi\n when: create_backup | default(false) | bool and backup_dir is defined\n ignore_errors: yes\n\n # Remove PostgreSQL completely\n - name: Remove PostgreSQL packages\n apt:\n name:\n - postgresql-{{ postgres_version }}\n - postgresql-client-{{ postgres_version }}\n - postgresql-contrib-{{ postgres_version }}\n state: absent\n purge: yes\n autoremove: yes\n \n - name: Remove PostgreSQL common packages\n apt:\n name:\n - postgresql-common\n - postgresql-client-common\n state: absent\n purge: yes\n autoremove: yes\n ignore_errors: yes\n\n # Remove PostgreSQL APT repository\n - name: Remove PostgreSQL APT repository key\n apt_key:\n url: https://www.postgresql.org/media/keys/ACCC4CF8.asc\n state: absent\n ignore_errors: yes\n \n - name: Remove PostgreSQL APT repository\n apt_repository:\n repo: \"deb http://apt.postgresql.org/pub/repos/apt {{ ansible_distribution_release }}-pgdg main\"\n state: absent\n ignore_errors: yes\n\n # Clean up directories and files\n - name: Remove PostgreSQL configuration directory\n file:\n path: /etc/postgresql\n state: absent\n \n - name: Remove PostgreSQL log directory\n file:\n path: /var/log/postgresql\n state: absent\n \n - name: Remove PostgreSQL lib directory\n file:\n path: /var/lib/postgresql\n state: absent\n \n - name: Remove custom data directory\n file:\n path: \"{{ postgres_data_dir }}\"\n state: absent\n when: postgres_data_dir != \"/var/lib/postgresql/{{ postgres_version }}/main\"\n\n # Unmount and clean storage\n - name: Check if mount point is mounted\n shell: \"mount | grep '{{ postgres_mount }}'\"\n register: mount_check\n failed_when: false\n changed_when: false\n \n - name: Unmount the storage device\n mount:\n path: \"{{ postgres_mount }}\"\n state: unmounted\n when: mount_check.rc == 0\n \n - name: Remove mount entry from fstab\n mount:\n path: \"{{ postgres_mount }}\"\n state: absent\n \n - name: Remove mount directory\n file:\n path: \"{{ postgres_mount }}\"\n state: absent\n\n # Optional: Wipe the storage device (DANGEROUS!)\n - name: Wipe storage device (if requested)\n shell: |\n if [ -b \"{{ postgres_device }}\" ]; then\n wipefs -a \"{{ postgres_device }}\"\n dd if=/dev/zero of=\"{{ postgres_device }}\" bs=1M count=100\n fi\n when: wipe_device | default(false) | bool\n ignore_errors: yes\n\n # Remove postgres user and group\n - name: Remove postgres user\n user:\n name: postgres\n state: absent\n remove: yes\n ignore_errors: yes\n \n - name: Remove postgres group\n group:\n name: postgres\n state: absent\n ignore_errors: yes\n\n # Clean up any remaining packages\n - name: Remove orphaned packages\n shell: apt autoremove -y\n ignore_errors: yes\n \n - name: Clean package cache\n shell: apt autoclean\n ignore_errors: yes\n\n # Restore original pg_hba.conf backup if exists\n - name: Check for original pg_hba.conf backup\n stat:\n path: \"{{ postgres_config_dir }}/pg_hba.conf.*~\"\n register: original_backup\n ignore_errors: yes\n \n # Final verification\n - name: Verify PostgreSQL removal\n shell: |\n echo \"=== PostgreSQL Cleanup Verification ===\"\n echo \"PostgreSQL packages:\"\n dpkg -l | grep postgresql || echo \"No PostgreSQL packages found\"\n echo \"\"\n echo \"PostgreSQL processes:\"\n ps aux | grep postgres | grep -v grep || echo \"No PostgreSQL processes running\"\n echo \"\"\n echo \"Mount points:\"\n mount | grep \"{{ postgres_mount }}\" || echo \"No mount points found\"\n echo \"\"\n echo \"Storage device:\"\n lsblk \"{{ postgres_device }}\" 2>/dev/null || echo \"Device available\"\n echo \"\"\n echo \"=== Cleanup Complete ===\"\n register: cleanup_verification\n changed_when: false\n \n - name: Display cleanup results\n debug:\n var: cleanup_verification.stdout_lines\n \n - name: Display backup information\n debug:\n msg: |\n Cleanup completed successfully!\n {% if create_backup | default(false) | bool and backup_dir is defined %}\n Safety backup created at: {{ backup_dir.path }}\n {% endif %}\n \n System Status:\n - PostgreSQL service: Stopped and disabled\n - PostgreSQL packages: Removed\n - Configuration files: Deleted\n - Data directories: Deleted\n - Mount points: Unmounted and removed\n {% if wipe_device | default(false) | bool %}\n - Storage device: Wiped clean\n {% endif %}\n \n The system has been restored to its original state.\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/mosip-infra/blob/master/deployment/v3/external/postgres/ansible/postgresql-setup.yml", + "title": "postgresql-setup.yml", + "repo": "mosip/mosip-infra", + "file_path": "deployment/v3/external/postgres/ansible/postgresql-setup.yml", + "language": "yml", + "content": "---\n# PostgreSQL Setup with Secure Password Generation - Production Grade\n# Enhanced playbook with secure password generation and Kubernetes secret creation\n\n- name: PostgreSQL Secure Setup\n hosts: postgresql_servers\n become: yes\n vars:\n # Default configuration - easily overridable\n postgres_version: \"{{ postgresql_version | default('15') }}\"\n postgres_port: \"{{ postgresql_port | default('5433') }}\"\n postgres_device: \"{{ storage_device | default('/dev/nvme2n1') }}\"\n postgres_mount: \"{{ mount_point | default('/srv/postgres') }}\"\n postgres_data_dir: \"{{ postgres_mount }}/postgresql/{{ postgres_version }}/main\"\n postgres_old_dir: \"{% if ansible_os_family == 'Debian' %}/var/lib/postgresql/{{ postgres_version }}/main{% else %}/var/lib/pgsql/{{ postgres_version }}/data{% endif %}\"\n postgres_config_dir: \"{% if ansible_os_family == 'Debian' %}/etc/postgresql/{{ postgres_version }}/main{% else %}/var/lib/pgsql/{{ postgres_version }}/data{% endif %}\"\n postgres_bin_dir: \"{% if ansible_os_family == 'Debian' %}/usr/lib/postgresql/{{ postgres_version }}/bin{% else %}/usr/pgsql-{{ postgres_version }}/bin{% endif %}\"\n postgres_service_name: \"{% if ansible_os_family == 'Debian' %}postgresql{% else %}postgresql-{{ postgres_version }}{% endif %}\"\n postgres_network_cidr: \"{{ network_cidr | default('10.0.0.0/8') }}\"\n postgres_namespace: \"{{ kubernetes_namespace | default('postgres') }}\"\n postgres_secret_name: \"{{ secret_name | default('postgres-postgresql') }}\"\n # Use localhost for local operations, but actual IP for ConfigMap\n postgres_local_host: \"{{ local_connection_host | default('localhost') }}\"\n postgres_external_host: \"{{ ansible_host }}\"\n \n tasks:\n # OS Compatibility and Prerequisites\n - name: Gather OS facts\n setup:\n gather_subset: \n - 'distribution'\n - 'distribution_version'\n \n - name: Ensure Python3 is available (CentOS/RHEL compatibility)\n package:\n name: python3\n state: present\n when: ansible_os_family == \"RedHat\"\n become: yes\n \n - name: Verify Python3 with secrets module availability\n command: python3 -c \"import secrets; print('Python secrets module available')\"\n register: python_secrets_check\n failed_when: python_secrets_check.rc != 0\n changed_when: false\n \n # Prerequisites Check\n - name: Check if device exists\n stat:\n path: \"{{ postgres_device }}\"\n follow: yes\n register: device_check\n failed_when: not device_check.stat.exists or not device_check.stat.isblk\n \n # Secure Password Generation - Idempotent approach\n - name: Check if PostgreSQL is already configured with a password\n shell: |\n sudo -u postgres psql -p {{ postgres_port }} -c \"SELECT 1;\" 2>/dev/null\n register: postgres_status_check\n failed_when: false\n changed_when: false\n \n - name: Try to read existing encrypted password from stored file\n shell: |\n if [ -f /var/lib/postgresql/.postgres_password_enc ] && [ -f /var/lib/postgresql/.postgres_encryption_key ]; then\n ENCRYPTION_KEY=$(cat /var/lib/postgresql/.postgres_encryption_key)\n openssl enc -aes-256-cbc -d -salt -pbkdf2 -pass pass:\"$ENCRYPTION_KEY\" -in /var/lib/postgresql/.postgres_password_enc 2>/dev/null\n else\n exit 1\n fi\n register: existing_encrypted_password\n failed_when: false\n changed_when: false\n no_log: true\n \n - name: Set existing password if file exists and is valid\n set_fact:\n postgres_password: \"{{ existing_encrypted_password.stdout }}\"\n when:\n - existing_encrypted_password.rc == 0\n - existing_encrypted_password.stdout is defined\n - (existing_encrypted_password.stdout | length) == 16\n no_log: true\n \n - name: Generate secure PostgreSQL password only if needed (OS-independent method)\n shell: |\n # Primary Method: Python secrets (works on all OS with Python 3.6+)\n python3 -c \"\n import secrets\n import string\n # Use cryptographically secure random generator\n uppercase = ''.join(secrets.choice(string.ascii_uppercase) for _ in range(4))\n lowercase = ''.join(secrets.choice(string.ascii_lowercase) for _ in range(4))\n digits = ''.join(secrets.choice(string.digits) for _ in range(4))\n special = ''.join(secrets.choice('!@#\\$%^&*') for _ in range(4))\n password = list(uppercase + lowercase + digits + special)\n secrets.SystemRandom().shuffle(password)\n print(''.join(password))\n \"\n register: generated_password_primary\n when: postgres_password is not defined\n no_log: true\n\n - name: Generate secure PostgreSQL password using OpenSSL fallback (Linux/macOS only)\n shell: |\n # Fallback Method: OpenSSL (Linux/macOS optimized)\n openssl rand -base64 24 | tr -d \"=+/\" | cut -c1-16\n register: generated_password_fallback\n when: \n - postgres_password is not defined\n - generated_password_primary.failed is defined\n - generated_password_primary.failed == true\n no_log: true\n failed_when: false\n\n - name: Set password from OS-independent generation\n set_fact:\n postgres_password: \"{{ generated_password_primary.stdout if generated_password_primary.stdout is defined else generated_password_fallback.stdout }}\"\n when: postgres_password is not defined\n no_log: true\n \n - name: Validate password complexity\n assert:\n that:\n - postgres_password | length == 16\n - postgres_password | regex_search('[A-Z]')\n - postgres_password | regex_search('[a-z]')\n - postgres_password | regex_search('[0-9]')\n - postgres_password | regex_search('[!@#$%^&*]')\n fail_msg: \"Generated password does not meet complexity requirements\"\n success_msg: \"Password meets security requirements\"\n no_log: true\n \n # Store password in a fact to ensure consistency throughout playbook\n - name: Store password in host facts for consistency\n set_fact:\n postgres_password: \"{{ postgres_password }}\"\n no_log: true\n \n # Storage Setup\n - name: Check if device is already mounted\n command: mountpoint -q {{ postgres_mount }}\n register: mount_check\n failed_when: false\n changed_when: false\n \n - name: Format device if not mounted\n filesystem:\n fstype: xfs\n dev: \"{{ postgres_device }}\"\n force: no\n when: mount_check.rc != 0\n \n - name: Create mount point and mount device\n mount:\n path: \"{{ postgres_mount }}\"\n src: \"{{ postgres_device }}\"\n fstype: xfs\n opts: defaults,noatime\n state: mounted\n \n # PostgreSQL Installation - Multi-OS Support\n \n # Ubuntu/Debian Installation\n - name: Install required packages for repository (Ubuntu/Debian)\n apt:\n name:\n - wget\n - ca-certificates\n - gnupg\n - lsb-release\n - python3-bcrypt\n - python3-psycopg2\n state: present\n update_cache: yes\n when: ansible_os_family == \"Debian\"\n \n # CentOS/RHEL Installation \n - name: Install PostgreSQL repository (CentOS/RHEL)\n yum:\n name: \"https://download.postgresql.org/pub/repos/yum/reporpms/EL-{{ ansible_distribution_major_version }}-x86_64/pgdg-redhat-repo-latest.noarch.rpm\"\n state: present\n disable_gpg_check: yes\n when: ansible_os_family == \"RedHat\"\n \n - name: Install required packages (CentOS/RHEL)\n yum:\n name:\n - postgresql{{ postgres_version }}-server\n - postgresql{{ postgres_version }}\n - python3-bcrypt\n - python3-psycopg2\n - wget\n - ca-certificates\n state: present\n when: ansible_os_family == \"RedHat\"\n \n # Ubuntu/Debian Repository Setup\n - name: Get Ubuntu codename\n command: lsb_release -cs\n register: ubuntu_codename\n changed_when: false\n when: ansible_os_family == \"Debian\"\n \n - name: Add PostgreSQL signing key\n apt_key:\n url: https://www.postgresql.org/media/keys/ACCC4CF8.asc\n state: present\n when: ansible_os_family == \"Debian\"\n \n - name: Add PostgreSQL APT repository\n apt_repository:\n repo: \"deb http://apt.postgresql.org/pub/repos/apt {{ ubuntu_codename.stdout }}-pgdg main\"\n state: present\n when: ansible_os_family == \"Debian\"\n \n - name: Update package cache after adding PostgreSQL repo\n apt:\n update_cache: yes\n when: ansible_os_family == \"Debian\"\n \n # Install PostgreSQL (Ubuntu/Debian)\n - name: Install PostgreSQL packages (Ubuntu/Debian)\n apt:\n name:\n - \"postgresql-{{ postgres_version }}\"\n - \"postgresql-client-{{ postgres_version }}\"\n state: present\n when: ansible_os_family == \"Debian\"\n \n # Initialize PostgreSQL on CentOS/RHEL (required step)\n - name: Initialize PostgreSQL database (CentOS/RHEL only)\n command: \"/usr/pgsql-{{ postgres_version }}/bin/postgresql-{{ postgres_version }}-setup initdb\"\n when: \n - ansible_os_family == \"RedHat\"\n become: yes\n register: postgres_init_result\n failed_when: false\n changed_when: postgres_init_result.rc == 0\n \n # Generate encryption key AFTER PostgreSQL installation (so postgres user and directories exist)\n - name: Generate or retrieve encryption key for password storage\n shell: |\n if [ ! -f /var/lib/postgresql/.postgres_encryption_key ]; then\n # Generate a secure random key for encryption\n openssl rand -base64 32 > /var/lib/postgresql/.postgres_encryption_key\n chmod 600 /var/lib/postgresql/.postgres_encryption_key\n chown postgres:postgres /var/lib/postgresql/.postgres_encryption_key\n fi\n cat /var/lib/postgresql/.postgres_encryption_key\n register: encryption_key\n no_log: true\n \n - name: Store password securely for future runs (after PostgreSQL installation)\n shell: |\n # Create encrypted password file using secure encryption key\n echo \"{{ postgres_password }}\" | openssl enc -aes-256-cbc -salt -pbkdf2 -pass pass:\"{{ encryption_key.stdout }}\" -out /var/lib/postgresql/.postgres_password_enc\n chmod 600 /var/lib/postgresql/.postgres_password_enc\n chown postgres:postgres /var/lib/postgresql/.postgres_password_enc\n # Also store a hash for verification\n echo \"{{ postgres_password }}\" | sha256sum | cut -d' ' -f1 > /var/lib/postgresql/.postgres_password_hash\n chmod 600 /var/lib/postgresql/.postgres_password_hash\n chown postgres:postgres /var/lib/postgresql/.postgres_password_hash\n when: postgres_password is defined\n no_log: true\n \n - name: Stop PostgreSQL for data migration\n systemd:\n name: postgresql\n state: stopped\n \n # Data Migration\n - name: Check if old data directory exists\n stat:\n path: \"{{ postgres_old_dir }}/PG_VERSION\"\n register: old_data_exists\n \n - name: Check if new data directory is empty\n find:\n paths: \"{{ postgres_data_dir }}\"\n file_type: any\n register: new_data_check\n failed_when: false\n \n - name: Create new data directory\n file:\n path: \"{{ postgres_data_dir }}\"\n state: directory\n owner: postgres\n group: postgres\n mode: '0700'\n recurse: yes\n \n - name: Copy data to new location\n shell: |\n sudo -u postgres cp -a {{ postgres_old_dir }}/* {{ postgres_data_dir }}/\n sudo -u postgres cp -a {{ postgres_old_dir }}/.[^.]* {{ postgres_data_dir }}/ 2>/dev/null || true\n when: \n - old_data_exists.stat.exists\n - new_data_check.matched == 0\n \n - name: Fix permissions on data directory\n file:\n path: \"{{ postgres_data_dir }}\"\n owner: postgres\n group: postgres\n mode: '0700'\n recurse: yes\n \n # Configuration\n - name: Configure PostgreSQL settings\n lineinfile:\n path: \"{{ postgres_config_dir }}/postgresql.conf\"\n regexp: \"{{ item.regexp }}\"\n line: \"{{ item.line }}\"\n backup: yes\n loop:\n - { regexp: '^#?data_directory\\s*=', line: \"data_directory = '{{ postgres_data_dir }}'\" }\n - { regexp: '^#?port\\s*=', line: \"port = {{ postgres_port }}\" }\n - { regexp: '^#?listen_addresses\\s*=', line: \"listen_addresses = '*'\" }\n - { regexp: '^#?max_connections\\s*=', line: \"max_connections = 1000\" }\n notify: restart postgresql\n \n - name: Configure pg_hba.conf for access\n copy:\n dest: \"{{ postgres_config_dir }}/pg_hba.conf\"\n content: |\n # Database administrative login by Unix domain socket\n local all postgres peer\n\n # \"local\" is for Unix domain socket connections only\n local all all peer\n\n # IPv4 local connections:\n host all all 0.0.0.0/0 md5\n\n # IPv6 local connections:\n host all all ::1/128 md5\n\n # Allow replication connections from localhost, by a user with the\n # replication privilege.\n local replication all peer\n host replication all 127.0.0.1/32 md5\n host replication all ::1/128 md5\n owner: postgres\n group: postgres\n mode: '0640'\n backup: yes\n notify: restart postgresql\n \n # Start Service\n - name: Start and enable PostgreSQL\n systemd:\n name: postgresql\n state: started\n enabled: yes\n \n # Wait for PostgreSQL to be ready\n - name: Wait for PostgreSQL to be ready\n wait_for:\n port: \"{{ postgres_port }}\"\n timeout: 30\n \n # Secure Password Setup - Only set if not already configured\n - name: Test if password is already set correctly\n shell: |\n export PGPASSWORD='{{ postgres_password }}'\n psql -h localhost -p {{ postgres_port }} -U postgres -c \"SELECT 'Password already configured' as status;\" \n register: existing_password_test\n no_log: true\n failed_when: false\n changed_when: false\n \n - name: Set PostgreSQL postgres user password only if needed\n shell: |\n export PGPASSWORD_NEW='{{ postgres_password }}'\n sudo -u postgres psql -p {{ postgres_port }} </dev/null || true\n find /var/tmp -name \"*postgres*\" -type f -mmin -5 ! -name \"*.yml\" -delete 2>/dev/null || true\n # Clear any environment variables that might contain passwords\n unset PGPASSWORD PGPASSWORD_NEW 2>/dev/null || true\n changed_when: false\n failed_when: false\n \n # Clear sensitive variables from memory\n - name: Clear sensitive variables from Ansible facts\n set_fact:\n postgres_password: \"\"\n postgres_password_b64: \"\"\n generated_password: \"\"\n generated_password_primary: \"\"\n generated_password_fallback: \"\"\n no_log: true\n \n # Verify Kubernetes files were created\n - name: Verify Kubernetes files were created successfully on localhost\n stat:\n path: \"{{ item }}\"\n register: k8s_files_check\n loop:\n - /tmp/postgresql-secrets/{{ postgres_secret_name }}.yml\n - /tmp/postgresql-secrets/postgres-setup-config.yml\n delegate_to: localhost\n run_once: true\n become: false\n when: postgres_password_b64 is defined\n \n - name: Display Kubernetes files status\n debug:\n msg: |\n Kubernetes Files Status:\n {% for file in k8s_files_check.results %}\n - {{ file.item }}: {{ 'EXISTS' if file.stat.exists else 'MISSING' }}\n {% endfor %}\n when: k8s_files_check is defined\n \n # Final verification and summary\n - name: Display setup summary\n debug:\n msg: |\n ✅ PostgreSQL {{ postgres_version }} Secure Setup Complete\n \n Configuration:\n - Host: {{ ansible_host }}\n - Port: {{ postgres_port }}\n - Data Directory: {{ postgres_data_dir }}\n - Mount Point: {{ postgres_mount }}\n - Password: {{ 'REUSED EXISTING' if existing_password_test.rc == 0 else 'NEWLY GENERATED' }}\n - Password Storage: /var/lib/postgresql/.postgres_password_enc (AES-256-CBC encrypted)\n - Connection Test: {{ 'PASSED' if pg_test is succeeded else 'FAILED' }}\n \n Kubernetes Files Generated:\n - Secret: /tmp/postgresql-secrets/{{ postgres_secret_name }}.yml\n - ConfigMap: /tmp/postgresql-secrets/postgres-setup-config.yml\n \n Security Features:\n - 16-character secure password (persistent across runs)\n - AES-256-CBC encrypted password storage with PBKDF2\n - Cryptographically secure encryption key (randomly generated)\n - MD5 authentication for database connections\n - No plaintext passwords in logs or process lists\n - Environment variable isolation\n - Secure memory cleanup\n - Private subnet deployment\n - Idempotent execution\n - Kubernetes secrets with proper encoding\n \n Next Steps:\n 1. Review files in /tmp/postgresql-secrets/\n 2. Deploy to Kubernetes cluster\n 3. Password will be reused on subsequent playbook runs\n \n Note: Password is securely encrypted with a randomly generated key stored at:\n /var/lib/postgresql/.postgres_encryption_key\n \n handlers:\n - name: restart postgresql\n systemd:\n name: postgresql\n state: restarted\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/mosip-infra/blob/master/deployment/v3/external/postgres/init_values.yaml", + "title": "init_values.yaml", + "repo": "mosip/mosip-infra", + "file_path": "deployment/v3/external/postgres/init_values.yaml", + "language": "yaml", + "content": "dbUserPasswords:\n dbuserPassword: \"\"\n\ndatabases:\n mosip_master:\n enabled: true\n branch: \"v1.3.0\"\n host: \"postgres-postgresql.postgres\"\n port: 5432\n\n mosip_audit:\n enabled: true\n branch: \"v1.3.0\"\n host: \"postgres-postgresql.postgres\"\n port: 5432\n\n mosip_keymgr:\n enabled: true\n branch: \"v1.3.0\"\n host: \"postgres-postgresql.postgres\"\n port: 5432\n\n mosip_kernel:\n enabled: true\n branch: \"v1.3.0\"\n host: \"postgres-postgresql.postgres\"\n port: 5432\n\n mosip_idmap:\n enabled: true\n branch: \"v1.3.0\"\n host: \"postgres-postgresql.postgres\"\n port: 5432\n\n mosip_prereg:\n enabled: true\n branch: \"v1.3.0\"\n host: \"postgres-postgresql.postgres\"\n port: 5432\n\n mosip_idrepo:\n enabled: true\n branch: \"v1.3.0\"\n host: \"postgres-postgresql.postgres\"\n port: 5432\n\n mosip_ida:\n enabled: true\n branch: \"v1.3.0\"\n host: \"postgres-postgresql.postgres\"\n port: 5432\n\n mosip_credential:\n enabled: true\n branch: \"v1.3.0\"\n host: \"postgres-postgresql.postgres\"\n port: 5432\n\n mosip_regprc:\n enabled: true\n branch: \"v1.3.0\"\n host: \"postgres-postgresql.postgres\"\n port: 5432\n\n mosip_pms:\n enabled: true\n branch: \"v1.2.2.2\"\n host: \"postgres-postgresql.postgres\"\n port: 5432\n\n mosip_hotlist:\n enabled: true\n branch: \"v1.3.0\"\n host: \"postgres-postgresql.postgres\"\n port: 5432\n\n mosip_resident:\n enabled: true\n branch: \"v1.3.0\"\n host: \"postgres-postgresql.postgres\"\n port: 5432\n\n mosip_otp:\n enabled: true\n branch: \"v1.3.0\"\n host: \"postgres-postgresql.postgres\"\n port: 5432\n\n mosip_digitalcard:\n enabled: true\n branch: \"v1.3.0\"\n host: \"postgres-postgresql.postgres\"\n port: 5432\n\n mosip_esignet:\n enabled: false\n branch: \"v1.4.1\"\n host: \"postgres-postgresql.postgres\"\n port: 5432\n\n mosip_mockidentitysystem:\n enabled: false\n branch: \"v0.9.3\"\n host: \"postgres-postgresql.postgres\"\n port: 5432\n\n mosip_toolkit:\n enabled: false\n branch: \"v1.4.2\"\n host: \"postgres-postgresql.postgres\"\n port: 5432\n\n inji_certify:\n enabled: false\n branch: \"v0.12.2\"\n host: \"postgres-postgresql.postgres\"\n port: 5432\n\n inji_verify:\n enabled: false\n branch: \"v0.15.1\"\n host: \"postgres-postgresql.postgres\"\n port: 5432\n\n inji_mimoto:\n enabled: false\n branch: \"v0.19.2\"\n host: \"postgres-postgresql.postgres\"\n port: 5432\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/mosip-infra/blob/master/deployment/v3/external/postgres/istio-addons-values.yaml", + "title": "istio-addons-values.yaml", + "repo": "mosip/mosip-infra", + "file_path": "deployment/v3/external/postgres/istio-addons-values.yaml", + "language": "yaml", + "content": "istio:\n name: postgres\n host: postgres.sandbox.xyz.net\n# Note: If you have multiple ingressController then pass it in the form of list. \n ingressController: ingressgateway-internal\n# Note : By default, if you do **not** specify any gateways, the chart will bind to a single Gateway whose name is derived from the metadata name. If you have mutiple gateways to specify then pass it in the form of list like below.\n# gateways:\n# - public-gateway\n# - internal-gateway\n port:\n name: postgres\n number: 5432\n protocol: TCP\n serviceHost: postgres-postgresql\n servicePort: 5432\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/mosip-infra/blob/master/deployment/v3/external/postgres/nginx/transportserver.yaml", + "title": "transportserver.yaml", + "repo": "mosip/mosip-infra", + "file_path": "deployment/v3/external/postgres/nginx/transportserver.yaml", + "language": "yaml", + "content": "apiVersion: k8s.nginx.org/v1alpha1\nkind: TransportServer\nmetadata:\n name: postgres \n namespace: postgres\nspec:\n listener:\n name: postgres\n protocol: TCP\n upstreams:\n - name: postgres\n service: postgres-postgresql\n port: 5432\n action:\n pass: postgres\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/mosip-infra/blob/master/deployment/v3/external/postgres/sql/drop.sql", + "title": "drop.sql", + "repo": "mosip/mosip-infra", + "file_path": "deployment/v3/external/postgres/sql/drop.sql", + "language": "sql", + "content": "-- Drop all DBs and roles\n-- If session are active and db cannot be dropped use terminate_sessions.sql\n-- CAUTION Dangerous! Only for development and testing\ndrop database mosip_master;\ndrop database mosip_audit;\ndrop database mosip_keymgr;\ndrop database mosip_kernel;\ndrop database mosip_idmap;\ndrop database mosip_prereg;\ndrop database mosip_idrepo;\ndrop database mosip_ida;\ndrop database mosip_credential;\ndrop database mosip_regprc;\ndrop database mosip_regdevice;\ndrop database mosip_authdevice;\ndrop database mosip_pms;\ndrop database mosip_websub;\ndrop role appadmin;\ndrop role audituser;\ndrop role authdeviceuser;\ndrop role credentialuser;\ndrop role dbadmin;\ndrop role idauser;\ndrop role idmapuser;\ndrop role idrepouser;\ndrop role kerneluser;\ndrop role keymgruser;\ndrop role masteruser;\ndrop role pmsuser;\ndrop role sysadmin;\ndrop role prereguser;\ndrop role regdeviceuser;\ndrop role regprcuser;\ndrop role websubuser;\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/mosip-infra/blob/master/deployment/v3/external/postgres/sql/terminate_sessions.sql", + "title": "terminate_sessions.sql", + "repo": "mosip/mosip-infra", + "file_path": "deployment/v3/external/postgres/sql/terminate_sessions.sql", + "language": "sql", + "content": "-- Change the db name accordingly.\nSELECT pg_terminate_backend(pg_stat_activity.pid) FROM pg_stat_activity WHERE pg_stat_activity.datname = 'mosip_master' AND pid <> pg_backend_pid();\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/mosip-infra/blob/master/deployment/v3/external/postgres/values.yaml", + "title": "values.yaml", + "repo": "mosip/mosip-infra", + "file_path": "deployment/v3/external/postgres/values.yaml", + "language": "yaml", + "content": "primary:\n extendedConfiguration: |\n max_connections=1000\n wal_level=logical\n max_wal_senders=20\n max_replication_slots=10\n resources:\n limits:\n cpu: 1500m\n memory: 2000Mi\n requests:\n cpu: 1500m\n memory: 2000Mi\naudit:\n logHostname: true\n logConnections: true\n logDisconnections: true\n pgAuditLog: \"\"\n pgAuditLogCatalog: \"off\"\n clientMinMessages: error\n logLinePrefix: \"\"\n logTimezone: \"\"\nimage:\n debug: true\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/mosip-infra/blob/master/deployment/v3/mosip/admin/admin-proxy.yaml", + "title": "admin-proxy.yaml", + "repo": "mosip/mosip-infra", + "file_path": "deployment/v3/mosip/admin/admin-proxy.yaml", + "language": "yaml", + "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n labels:\n app: admin-proxy\n name: admin-proxy\nspec:\n replicas: 1\n selector:\n matchLabels:\n app: admin-proxy\n template:\n metadata:\n labels:\n app: admin-proxy\n spec:\n containers:\n - name: admin-proxy\n image: nginxinc/nginx-unprivileged:1.21.6-alpine\n ports:\n - name: http\n containerPort: 8080\n livenessProbe:\n httpGet:\n path: \"/ping\"\n port: 8080\n initialDelaySeconds: 5\n periodSeconds: 20\n timeoutSeconds: 1\n failureThreshold: 2\n successThreshold: 1\n readinessProbe:\n httpGet:\n path: \"/ping\"\n port: 8080\n initialDelaySeconds: 5\n periodSeconds: 10\n timeoutSeconds: 1\n failureThreshold: 2\n successThreshold: 1\n\n volumeMounts:\n - name: nginx-conf\n mountPath: /etc/nginx/\n volumes:\n - name: nginx-conf\n configMap:\n name: admin-proxy\n---\napiVersion: v1\nkind: ConfigMap\nmetadata:\n name: admin-proxy\ndata:\n nginx.conf: |-\n worker_processes auto;\n error_log /var/log/nginx/error.log notice;\n pid /tmp/nginx.pid;\n events {\n worker_connections 1024;\n }\n http {\n proxy_temp_path /tmp/proxy_temp;\n client_body_temp_path /tmp/client_temp;\n fastcgi_temp_path /tmp/fastcgi_temp;\n uwsgi_temp_path /tmp/uwsgi_temp;\n scgi_temp_path /tmp/scgi_temp;\n\n #include /etc/nginx/mime.types;\n #default_type application/octet-stream;\n\n log_format main '$remote_addr - $remote_user [$time_local] \"$request\" '\n '$status $body_bytes_sent \"$http_referer\" '\n '\"$http_user_agent\" \"$http_x_forwarded_for\"';\n\n access_log /var/log/nginx/access.log main;\n\n proxy_buffer_size 128k;\n proxy_buffers 4 256k;\n proxy_busy_buffers_size 256k;\n\n sendfile on;\n tcp_nopush on;\n tcp_nodelay on;\n keepalive_timeout 65;\n types_hash_max_size 2048;\n gzip on;\n\n server {\n listen 8080;\n\n location /v1/masterdata {\n proxy_pass http://masterdata.kernel;\n proxy_http_version 1.1;\n proxy_set_header Upgrade $http_upgrade;\n proxy_set_header Connection \"upgrade\";\n proxy_set_header Host $host;\n proxy_set_header Referer $http_referer;\n proxy_set_header X-Real-IP $remote_addr;\n proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n proxy_set_header X-Forwarded-Proto $scheme;\n proxy_pass_request_headers on;\n }\n\n location /v1/keymanager {\n proxy_pass http://keymanager.keymanager;\n proxy_http_version 1.1;\n proxy_set_header Upgrade $http_upgrade;\n proxy_set_header Connection \"upgrade\";\n proxy_set_header Host $host;\n proxy_set_header Referer $http_referer;\n proxy_set_header X-Real-IP $remote_addr;\n proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n proxy_set_header X-Forwarded-Proto $scheme;\n proxy_pass_request_headers on;\n }\n location /ping {\n return 200 'ping';\n }\n }\n }\n---\napiVersion: v1\nkind: Service\nmetadata:\n labels:\n app: admin-proxy\n name: admin-proxy\nspec:\n type: ClusterIP\n ports:\n - name: http\n port: 80\n protocol: TCP\n targetPort: 8080\n selector:\n app: admin-proxy\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/mosip-infra/blob/master/deployment/v3/mosip/biosdk/values.yaml", + "title": "values.yaml", + "repo": "mosip/mosip-infra", + "file_path": "deployment/v3/mosip/biosdk/values.yaml", + "language": "yaml", + "content": "biosdk: \n ## This is url of biosdk lib accessed from within cluster. BioSDK may be hosted outside the cluster\n ## in which case change the URL accordingly.\n zippedLibUrl: http://artifactory.artifactory/artifactory/libs-release-local/biosdk/biosdk-lib.zip\n bioapiImpl: io.mosip.mock.sdk.impl.SampleSDKV2\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/mosip-infra/blob/master/deployment/v3/mosip/bqatsdk/values.yaml", + "title": "values.yaml", + "repo": "mosip/mosip-infra", + "file_path": "deployment/v3/mosip/bqatsdk/values.yaml", + "language": "yaml", + "content": "biosdk:\n ## This is url of bqatsdk lib accessed from within cluster. BqatSDK may be hosted outside the cluster\n ## in which case change the URL accordingly.\n zippedLibUrl: http://artifactory.artifactory/artifactory/libs-release-local/biosdk/bqatsdk-lib.jar\n bioapiImpl: io.bqat.sdk.services.impl.BqatQualitySdkService\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/mosip-infra/blob/master/deployment/v3/mosip/config-server/values.yaml", + "title": "values.yaml", + "repo": "mosip/mosip-infra", + "file_path": "deployment/v3/mosip/config-server/values.yaml", + "language": "yaml", + "content": "spring_profiles:\n enabled: false\n spring_profiles_active: composite\n spring_compositeRepos:\n # Based on the user requiremnt the number of multiple sources from where configuration needs to be pulled can be updated below as mentioned.\n - type: git\n uri: \"https://github.com/mosip/mosip-config.git\"\n version: v1.3.0\n spring_cloud_config_server_git_cloneOnStart: true\n spring_cloud_config_server_git_force_pull: true\n spring_cloud_config_server_git_refreshRate: 5\n spring_fail_on_composite_error: false\n\nlocalRepo:\n enabled: false # Set this to \"true\" inorder to Enable config-server to pull configurations from local git repo.\n spring_profiles_active: \"native\"\n spring_cloud_config_server_native_search_locations: \"file:///var/lib/config_repo\"\n spring_cloud_config_server_accept_empty: true\n spring_cloud_config_server_git_force_pull: false\n spring_cloud_config_server_git_refreshRate: 0\n spring_cloud_config_server_git_cloneOnStart: false\n\nvolume:\n ## If defined, storageClassName: \n ## If set to \"-\", storageClassName: \"\", which disables dynamic provisioning\n ## If undefined (the default) or set to null, no storageClassName spec is\n ## set, choosing the default provisioner. (gp2 on AWS, standard on\n ## GKE, AWS & OpenStack).\n ##\n # storageClass: \"-\"\n ##\n ## If you want to reuse an existing claim, you can pass the name of the PVC using\n ## the existingClaim variable\n # existingClaim: your-claim\n ## ReadWriteMany not supported by AWS gp2\n name: config-server\n storageClass: nfs-client\n accessModes:\n - ReadWriteMany\n size: 10Mi\n existingClaim:\n # Dir where config and keys are written inside container\n mountDir: '/var/lib/config_repo'\n nfs:\n path: '' # Dir within the nfs server where config repo is cloned/maintained locally.\n server: '' # Ip address of nfs server.\n \n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/mosip-infra/blob/master/deployment/v3/mosip/keymanager/idle_timeout_envoyfilter.yaml", + "title": "idle_timeout_envoyfilter.yaml", + "repo": "mosip/mosip-infra", + "file_path": "deployment/v3/mosip/keymanager/idle_timeout_envoyfilter.yaml", + "language": "yaml", + "content": "apiVersion: networking.istio.io/v1alpha3\nkind: EnvoyFilter\nmetadata:\n name: idle-timeout-inbound-filter\nspec:\n configPatches:\n - applyTo: NETWORK_FILTER\n match:\n context: SIDECAR_INBOUND\n listener:\n filterChain:\n filter:\n name: envoy.filters.network.tcp_proxy\n patch:\n operation: MERGE\n value:\n name: envoy.filters.network.tcp_proxy\n typed_config:\n '@type': type.googleapis.com/envoy.extensions.filters.network.tcp_proxy.v3.TcpProxy\n idle_timeout: 0s\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/mosip-infra/blob/master/deployment/v3/mosip/partner-onboarder/values.yaml", + "title": "values.yaml", + "repo": "mosip/mosip-infra", + "file_path": "deployment/v3/mosip/partner-onboarder/values.yaml", + "language": "yaml", + "content": "onboarding:\n modules:\n - name: ida\n enabled: true\n - name: print\n enabled: true\n - name: abis\n enabled: true\n - name: resident\n enabled: true\n - name: digitalcard\n enabled: true\n# configmaps:\n# s3:\n# s3-host: 'http://minio.minio:9000'\n# s3-user-key: 'admin'\n# s3-region: ''\n# onboarder-namespace:\n# ns_mimoto: mimoto\n# ns_esignet: esignet\n# ns_signup: signup\n# secrets:\n# s3:\n# s3-user-secret: 'password'\n# volumes:\n# reports:\n# name: onboarder-reports\n# storageClass: nfs-client\n# accessModes:\n# - ReadWriteMany\n# size: 10Mi\n# existingClaim:\n# # Dir where config and keys are written inside container\n# mountDir: /home/mosip/reports\n# nfs:\n# path: \"/srv/nfs/sandbox/onboarding\" # Dir within the nfs server where config repo is cloned/maintained locally.\n# server: \"nfs-server\" # Ip address of nfs server.\n# variables:\n# push_reports_to_s3: true\n\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/mosip-infra/blob/master/deployment/v3/mosip/prereg/rate-control-envoyfilter.yaml", + "title": "rate-control-envoyfilter.yaml", + "repo": "mosip/mosip-infra", + "file_path": "deployment/v3/mosip/prereg/rate-control-envoyfilter.yaml", + "language": "yaml", + "content": "apiVersion: networking.istio.io/v1alpha3\nkind: EnvoyFilter\nmetadata:\n name: local-rate-limit\nspec:\n workloadSelector:\n labels:\n app.kubernetes.io/instance: prereg-ui\n configPatches:\n - applyTo: HTTP_FILTER\n match:\n context: SIDECAR_INBOUND\n listener:\n filterChain:\n filter:\n name: \"envoy.filters.network.http_connection_manager\"\n patch:\n operation: INSERT_BEFORE\n value:\n name: envoy.filters.http.local_ratelimit\n typed_config:\n \"@type\": type.googleapis.com/udpa.type.v1.TypedStruct\n type_url: type.googleapis.com/envoy.extensions.filters.http.local_ratelimit.v3.LocalRateLimit\n value:\n stat_prefix: http_local_rate_limiter\n token_bucket:\n max_tokens: 100\n tokens_per_fill: 100\n fill_interval: 50ms\n filter_enabled:\n runtime_key: local_rate_limit_enabled\n default_value:\n numerator: 100\n denominator: HUNDRED\n filter_enforced:\n runtime_key: local_rate_limit_enforced\n default_value:\n numerator: 100\n denominator: HUNDRED\n response_headers_to_add:\n - append: false\n header:\n key: x-local-rate-limit\n value: 'true'\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/mosip-infra/blob/master/deployment/v3/mosip/regproc/upgrade/dmz-landing-pv.yaml", + "title": "dmz-landing-pv.yaml", + "repo": "mosip/mosip-infra", + "file_path": "deployment/v3/mosip/regproc/upgrade/dmz-landing-pv.yaml", + "language": "yaml", + "content": "apiVersion: v1\nkind: PersistentVolume\nmetadata:\n name: landing-pv\n labels:\n name: landing-pv\nspec:\n storageClassName: manual\n capacity:\n storage: 5Gi\n accessModes:\n - ReadWriteMany\n nfs:\n server: \n path: \n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/mosip-infra/blob/master/deployment/v3/mosip/regproc/upgrade/dmz-landing-pvc.yaml", + "title": "dmz-landing-pvc.yaml", + "repo": "mosip/mosip-infra", + "file_path": "deployment/v3/mosip/regproc/upgrade/dmz-landing-pvc.yaml", + "language": "yaml", + "content": "kind: PersistentVolumeClaim\napiVersion: v1\nmetadata:\n name: landing-pvc\n namespace: regproc\n labels:\n app: landing-pvc\nspec:\n storageClassName: manual\n accessModes:\n - ReadWriteMany\n resources:\n requests:\n storage: 5Gi\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/mosip-infra/blob/master/deployment/v3/mosip/regproc/upgrade/dmz-pkt-pv.yaml", + "title": "dmz-pkt-pv.yaml", + "repo": "mosip/mosip-infra", + "file_path": "deployment/v3/mosip/regproc/upgrade/dmz-pkt-pv.yaml", + "language": "yaml", + "content": "apiVersion: v1\nkind: PersistentVolume\nmetadata:\n name: pktserver-pv\n labels:\n name: pktserver-pv\nspec:\n storageClassName: manual\n capacity:\n storage: 5Gi\n accessModes:\n - ReadOnlyMany\n nfs:\n server: \n path: \n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/mosip-infra/blob/master/deployment/v3/mosip/regproc/upgrade/dmz-pkt-pvc.yaml", + "title": "dmz-pkt-pvc.yaml", + "repo": "mosip/mosip-infra", + "file_path": "deployment/v3/mosip/regproc/upgrade/dmz-pkt-pvc.yaml", + "language": "yaml", + "content": "# Source: dmzregproc/templates/pktserver-pvc.yaml\nkind: PersistentVolumeClaim\napiVersion: v1\nmetadata:\n name: pktserver-pvc\n namespace: regproc\n labels:\n app: pktserver-pvc\nspec:\n storageClassName: manual\n accessModes:\n - ReadOnlyMany\n resources:\n requests:\n storage: 5Gi\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/mosip-infra/blob/master/deployment/v3/mosip/regproc/upgrade/dmz-sc.yaml", + "title": "dmz-sc.yaml", + "repo": "mosip/mosip-infra", + "file_path": "deployment/v3/mosip/regproc/upgrade/dmz-sc.yaml", + "language": "yaml", + "content": "apiVersion: storage.k8s.io/v1\nkind: StorageClass\nmetadata:\n name: manual\nprovisioner: kubernetes.io/no-provisioner\nvolumeBindingMode: WaitForFirstConsumer\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/mosip-infra/blob/master/deployment/v3/mosip/restart-cron/values.yaml", + "title": "values.yaml", + "repo": "mosip/mosip-infra", + "file_path": "deployment/v3/mosip/restart-cron/values.yaml", + "language": "yaml", + "content": "namespaces:\n - name: packetcreator\n enabled: false\n deploymentName: packetcreator\n - name: authdemo\n enabled: false\n deploymentName: authdemo\n - name: kernel\n enabled: true\n deploymentName: idgenerator\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/mosip-infra/blob/master/deployment/v3/utils/an-docker/docker.yaml", + "title": "docker.yaml", + "repo": "mosip/mosip-infra", + "file_path": "deployment/v3/utils/an-docker/docker.yaml", + "language": "yaml", + "content": "- hosts: cluster\n become: true\n tasks:\n - name: Install docker.io for Debian\n when: ansible_os_family == \"Debian\"\n apt:\n name: \"docker.io\"\n state: present\n update_cache: yes\n\n - name: Add docker repo For Centos\n when: ansible_os_family == \"RedHat\"\n yum_repository:\n name: Docker\n baseurl: https://download.docker.com/linux/centos/docker-ce.repo\n - name: Install docker repo For Centos\n when: ansible_os_family == \"RedHat\"\n yum:\n update_cache: yes\n state: present\n name:\n - docker-ce\n - docker-ce-cli\n - containerd.io\n - name: Add docker user to docker group\n command: usermod -aG docker {{ ansible_user }}\n\n - name: Start docker service\n command: systemctl start docker\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/mosip-infra/blob/master/deployment/v3/utils/busybox/busybox-curl.yml", + "title": "busybox-curl.yml", + "repo": "mosip/mosip-infra", + "file_path": "deployment/v3/utils/busybox/busybox-curl.yml", + "language": "yml", + "content": "# Alpine with curl + ssh\napiVersion: v1\nkind: Pod\nmetadata:\n name: busybox-curl\nspec:\n containers:\n - name: busybox-curl\n image: yauritux/busybox-curl:latest \n args:\n - sleep\n - \"1000000\"\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/mosip-infra/blob/master/deployment/v3/utils/data-archive/values.yaml", + "title": "values.yaml", + "repo": "mosip/mosip-infra", + "file_path": "deployment/v3/utils/data-archive/values.yaml", + "language": "yaml", + "content": "databases:\n archive_db:\n db_name: \"mosip_archive\"\n host: \"\"\n port: 5432\n su_user: \"postgres\"\n su_user_pwd: \"\"\n db_pwd: \"\"\n dml: 0\n archivehost: \"\"\n archiveport: 5432\n archiveuname: \"archiveuser\"\n archive_dbname: \"mosip_archive\"\n archive_schemaname: \"archive\"\n archive_db_password: \"\"\n source_db:\n provide_db_names_to_archive: \"AUDIT,CREDENTIAL,IDA\"\n source_audit_host: \"\"\n source_audit_port: 5432\n source_audit_uname: \"audituser\"\n source_audit_dbname: \"mosip_audit\"\n source_audit_schemaname: \"audit\"\n source_audit_db_pass: \"\"\n source_credential_host: \"\"\n source_credential_port: 5432\n source_credential_uname: \"credentialuser\"\n source_credential_dbname: \"mosip_credential\"\n source_credential_schemaname: \"credential\"\n source_credential_db_pass: \"\"\n source_esignet_host: \"\"\n source_esignet_port: 5432\n source_esignet_uname: \"esignetuser\"\n source_esignet_dbname: \"mosip_esignet\"\n source_esignet_schemaname: \"esignet\"\n source_esignet_db_pass: \"\"\n source_ida_host: \"\"\n source_ida_port: 5432\n source_ida_uname: \"idauser\"\n source_ida_dbname: \"mosip_ida\"\n source_ida_schemaname: \"ida\"\n source_ida_db_pass: \"\"\n source_idrepo_host: \"\"\n source_idrepo_port: 5432\n source_idrepo_uname: \"idrepouser\"\n source_idrepo_dbname: \"mosip_idrepo\"\n source_idrepo_schemaname: \"idrepo\"\n source_idrepo_db_pass: \"\"\n source_kernel_host: \"\"\n source_kernel_port: 5432\n source_kernel_uname: \"kerneluser\"\n source_kernel_dbname: \"mosip_kernel\"\n source_kernel_schemaname: \"kernel\"\n source_kernel_db_pass: \"\"\n source_master_host: \"\"\n source_master_port: 5432\n source_master_uname: \"masteruser\"\n source_master_dbname: \"mosip_master\"\n source_master_schemaname: \"master\"\n source_master_db_pass: \"\"\n source_pms_host: \"\"\n source_pms_port: 5432\n source_pms_uname: \"pmsuser\"\n source_pms_dbname: \"mosip_pms\"\n source_pms_schemaname: \"pms\"\n source_pms_db_pass: \"\"\n source_prereg_host: \"\"\n source_prereg_port: 5432\n source_prereg_uname: \"prereguser\"\n source_prereg_dbname: \"mosip_prereg\"\n source_prereg_schemaname: \"prereg\"\n source_prereg_db_pass: \"\"\n source_regprc_host: \"\"\n source_regprc_port: 5432\n source_regprc_uname: \"regprcuser\"\n source_regprc_dbname: \"mosip_regprc\"\n source_regprc_schemaname: \"regprc\"\n source_regprc_db_pass: \"\"\n source_resident_host: \"\"\n source_resident_port: 5432\n source_resident_uname: \"residentuser\"\n source_resident_dbname: \"mosip_resident\"\n source_resident_schemaname: \"resident\"\n source_resident_db_pass: \"\"\n container_volume_path: \"/all-db-info-json\"\n all_db_tables_info:\n audit:\n tables_info:\n - source_table: \"app_audit_log\"\n archive_table: \"mosip_audit_app_audit_log\"\n id_column: \"log_id\"\n date_column: \"log_dtimes\"\n retention_days: 30\n operation_type: \"archive_delete\"\n credential:\n tables_info:\n - source_table: \"credential_transaction\"\n archive_table: \"mosip_credential_credential_transaction\"\n id_column: \"id\"\n date_column: \"cr_dtimes\"\n retension_days: 30\n operation_type: \"archive_delete\"\n esignet:\n tables_info:\n - source_table: \"consent_history\"\n archive_table: \"mosip_esignet_consent_history\"\n id_column: \"id\"\n date_column: \"cr_dtimes\"\n retention_days: 30\n operation_type: \"none\"\n ida:\n tables_info:\n - source_table: \"credential_event_store\"\n archive_table: \"mosip_ida_credential_event_store\"\n id_column: \"event_id\"\n date_column: \"cr_dtimes\"\n retension_days: 30\n operation_type: \"archive_delete\"\n - source_table: \"otp_transaction\"\n archive_table: \"mosip_ida_otp_transaction\"\n id_column: \"id\"\n date_column: \"cr_dtimes\"\n retension_days: 30\n operation_type: 'delete'\n idrepo:\n tables_info:\n - source_table: \"anonymous_profile\"\n archive_table: \"mosip_idrepo_anonymous_profile\"\n id_column: \"id\"\n date_column: \"cr_dtimes\"\n retension_days: 30\n operation_type: \"archive_delete\"\n - source_table: \"credential_request_status\"\n archive_table: \"mosip_idrepo_credential_request_status\"\n id_column: \"individual_id\"\n date_column: \"cr_dtimes\"\n retension_days: 30\n operation_type: \"archive_delete\"\n - source_table: \"uin_draft\"\n archive_table: \"mosip_idrepo_uin_draft\"\n id_column: \"id\"\n date_column: \"cr_dtimes\"\n retension_days: 30\n operation_type: \"archive_delete\"\n kernel:\n tables_info:\n - source_table: \"otp_transaction\"\n archive_table: \"mosip_kernel_otp_transaction\"\n id_column: \"id\"\n date_column: \"generated_dtimes\"\n retension_days: 7\n operation_type: \"delete\"\n master:\n tables_info:\n - source_table: \"bulkupload_transaction\"\n archive_table: \"mosip_master_bulkupload_transaction\"\n id_column: \"id\"\n date_column: \"cr_dtimes\"\n retension_days: 91\n operation_type: \"archive_delete\"\n - source_table: \"device_master_h\"\n archive_table: \"mosip_master_device_master_h\"\n id_column: \"id\"\n date_column: \"cr_dtimes\"\n retension_days: 365\n operation_type: \"archive_delete\"\n - source_table: \"machine_master_h\"\n archive_table: \"mosip_master_machine_master_h\"\n id_column: \"id\"\n date_column: \"cr_dtimes\"\n retension_days: 183\n operation_type: \"archive_delete\"\n - source_table: \"registration_center_h\"\n archive_table: \"mosip_master_registration_center_h\"\n id_column: \"id\"\n date_column: \"cr_dtimes\"\n retension_days: 365\n operation_type: \"archive_delete\"\n - source_table: \"user_detail_h\"\n archive_table: \"mosip_master_user_detail_h\"\n id_column: \"id\"\n date_column: \"cr_dtimes\"\n retension_days: 183\n operation_type: \"archive_delete\"\n - source_table: \"zone_user_h\"\n archive_table: \"mosip_master_zone_user_h\"\n id_column: \"usr_id\"\n date_column: \"cr_dtimes\"\n retension_days: 183\n operation_type: \"archive_delete\"\n pms:\n tables_info:\n - source_table: \"auth_policy_h\"\n archive_table: \"mosip_pms_auth_policy_h\"\n id_column: \"id\"\n date_column: \"cr_dtimes\"\n retension_days: 183\n operation_type: \"archive_delete\"\n - source_table: \"secure_biometric_interface_h\"\n archive_table: \"mosip_pms_secure_biometric_interface_h\"\n id_column: \"id\"\n date_column: \"cr_dtimes\"\n retension_days: 183\n operation_type: \"archive_delete\"\n - source_table: \"partner_h\"\n archive_table: \"mosip_pms_partner_h\"\n id_column: \"id\"\n date_column: \"cr_dtimes\"\n retension_days: 183\n operation_type: \"archive_delete\"\n prereg:\n tables_info:\n - source_table: \"otp_transaction\"\n archive_table: \"mosip_prereg_otp_transaction\"\n id_column: \"id\"\n date_column: \"cr_dtimes\"\n retension_days: 30\n operation_type: \"delete\"\n regprc:\n tables_info:\n - source_table: \"abis_response_det\"\n archive_table: \"mosip_regprc_abis_response_det\"\n id_column: \"abis_resp_id\"\n date_column: \"cr_dtimes\"\n retension_days: 183\n operation_type: \"archive_delete\"\n - source_table: \"abis_response\"\n archive_table: \"mosip_regprc_abis_response\"\n id_column: \"id\"\n date_column: \"cr_dtimes\"\n retension_days: 183\n operation_type: \"archive_delete\"\n - source_table: \"abis_request\"\n archive_table: \"mosip_regprc_abis_request\"\n id_column: \"id\"\n date_column: \"cr_dtimes\"\n retension_days: 183\n operation_type: \"archive_delete\"\n - source_table: \"reg_demo_dedupe_list\"\n archive_table: \"mosip_regprc_reg_demo_dedupe_list\"\n id_column: \"id\"\n date_column: \"cr_dtimes\"\n retension_days: 183\n operation_type: \"archive_delete\"\n - source_table: \"registration_transaction\"\n archive_table: \"mosip_regprc_registration_transaction\"\n id_column: \"regtrn_id\"\n date_column: \"cr_dtimes\"\n retension_days: 183\n operation_type: \"archive_delete\"\n resident:\n tables_info:\n - source_table: \"otp_transaction\"\n archive_table: \"mosip_resident_otp_transaction\"\n id_column: \"id\"\n date_column: \"cr_dtimes\"\n retension_days: 30\n operation_type: \"delete\"\n - source_table: \"resident_grievance_ticket\"\n archive_table: \"mosip_resident_grievance_ticket\"\n id_column: \"id\"\n date_column: \"cr_dtimes\"\n retension_days: 365\n operation_type: \"archive_delete\"\n - source_table: \"resident_session\"\n archive_table: \"mosip_resident_session\"\n id_column: \"session_id\"\n date_column: \"login_dtimes\"\n retension_days: 30\n operation_type: \"archive_delete\"\n - source_table: \"resident_transaction\"\n archive_table: \"mosip_resident_transaction\"\n id_column: \"id\"\n date_column: \"cr_dtimes\"\n retension_days: 365\n operation_type: \"archive_delete\"\n - source_table: \"resident_user_actions\"\n archive_table: \"mosip_resident_user_actions\"\n id_column: \"ida_token\"\n date_column: \"last_bell_notif_click_dtimes\"\n retension_days: 365\n operation_type: \"archive_delete\"" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/mosip-infra/blob/master/deployment/v3/utils/keycloak/input.yaml", + "title": "input.yaml", + "repo": "mosip/mosip-infra", + "file_path": "deployment/v3/utils/keycloak/input.yaml", + "language": "yaml", + "content": "mosip: # realm\n roles: []\n clients: []\n users: \n - username: test_user\n email: test_user@xyz.com\n firstName: Nikki\n lastName: Jonnes\n password: \n requiredAction: [] \n temporary: False\n #requiredAction: \n # - updatePassword\n #temporary: True\n roles:\n - PARTNER \n - MISP\n\n - username: test_user2\n email: test_user2@xyz.com\n firstName: Nieki\n lastName: Jonnes2\n password:\n requiredAction: []\n temporary: False \n roles: []\n\n \n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/mosip-infra/blob/master/deployment/v3/utils/readuser-util/readuser-init-values.yaml", + "title": "readuser-init-values.yaml", + "repo": "mosip/mosip-infra", + "file_path": "deployment/v3/utils/readuser-util/readuser-init-values.yaml", + "language": "yaml", + "content": "## YAML to create a users\nkeycloak:\n realms:\n mosip: # realm\n roles: []\n clients: []\n users:\n - username: readuser\n email: read_user15@xyz.com\n firstName: read\n lastName: user\n password: mosip123\n temporary: False\n attributes: {}\n realmRoles:\n - offline_access\n - uma_authorization\n client: \"realm-management\"\n clientRoles:\n - \"view-users\"\n - \"view-authorization\"\n - \"view-clients\"\n - \"view-events\"\n - \"view-realm\"\n - \"view-identity-providers\"\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/mosip-infra/blob/master/deployment/v3/utils/readuser-util/values.yaml", + "title": "values.yaml", + "repo": "mosip/mosip-infra", + "file_path": "deployment/v3/utils/readuser-util/values.yaml", + "language": "yaml", + "content": "# Default values for readuser.\n# This is a YAML-formatted file.\n# Declare variables to be passed into your templates.\n\npostgres-readuser-util:\n enabled: true\n # Values for readuser creation.\n # \"action\" key specifies whether you want to \"create\" or \"delete\" readuser.\n # \"username\" key specifies the username of readuser creating.\n # \"password\" key specifies the password for readuser.\n # \"dbport\" key specifies the DB port number.\n # \"dbhost\" key specifies the DB host.\n user:\n action: \"create\"\n username: \"readuser\"\n password: \"mosip123\"\n dbport: 5432\n dbhost: api-internal.xyz.mosip.net\n\ns3-readuser-util:\n enabled: true\n # Values for readuser creation.\n # \"action\" key specifies whether you want to \"create\" or \"delete\" readuser.\n # \"username\" key specifies the username of readuser creating.\n # \"password\" key specifies the password for readuser.\n # \"policyName\" key specifies the policyname creating.\n s3user:\n action: \"create\"\n username: \"readuser\"\n password: \"mosip123\"\n policyName: \"dataread\"\n\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/mosip-infra/blob/master/deployment/v3/utils/wireguard-mesh/down.yaml", + "title": "down.yaml", + "repo": "mosip/mosip-infra", + "file_path": "deployment/v3/utils/wireguard-mesh/down.yaml", + "language": "yaml", + "content": "- hosts: cluster\n tasks:\n - name: Start wireguard \n shell: 'wg-quick down wg0'\n become: yes\n\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/mosip-infra/blob/master/deployment/v3/utils/wireguard-mesh/install.yaml", + "title": "install.yaml", + "repo": "mosip/mosip-infra", + "file_path": "deployment/v3/utils/wireguard-mesh/install.yaml", + "language": "yaml", + "content": "- hosts: cluster\n tasks:\n - name: Update\n command: 'apt update'\n become: yes\n\n - name: Install wireguard \n command: 'apt install -y wireguard'\n become: yes\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/mosip-infra/blob/master/deployment/v3/utils/wireguard-mesh/setup.yaml", + "title": "setup.yaml", + "repo": "mosip/mosip-infra", + "file_path": "deployment/v3/utils/wireguard-mesh/setup.yaml", + "language": "yaml", + "content": "- hosts: control\n connection: local\n tasks:\n - name: Check if peer exists\n shell: 'wg-meshconf showpeers --simplify' \n register: out \n \n - name: Adding new peers\n shell: 'wg-meshconf addpeer {{ item }} --address {{ hostvars[item][\"wg_address\"] }} --endpoint {{ hostvars[item][\"private_ip\"] }}'\n when: (\"| \" + item + \" |\") not in out.stdout\n with_items: '{{ groups[\"cluster\"] }}'\n\n - name: Updating peers\n shell: 'wg-meshconf updatepeer {{ item }} --address {{ hostvars[item][\"wg_address\"] }} --endpoint {{ hostvars[item][\"private_ip\"] }}'\n #when: '\"| {{ item }} |\" in out.stdout'\n when: (\"| \" + item + \" |\") in out.stdout\n with_items: '{{ groups[\"cluster\"] }}'\n\n - name: Generate configs for all peers\n shell: 'wg-meshconf genconfig -o configs'\n\n- hosts: cluster\n tasks:\n - name: copy config files\n ansible.builtin.copy:\n src: '{{ playbook_dir }}/configs/{{ inventory_hostname }}.conf'\n dest: /etc/wireguard/wg0.conf\n become: yes \n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/mosip-infra/blob/master/deployment/v3/utils/wireguard-mesh/up.yaml", + "title": "up.yaml", + "repo": "mosip/mosip-infra", + "file_path": "deployment/v3/utils/wireguard-mesh/up.yaml", + "language": "yaml", + "content": "- hosts: cluster\n tasks:\n - name: Start wireguard \n shell: 'wg-quick up wg0'\n become: yes\n\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/mosip-config/blob/master/admin-default.properties", + "title": "admin-default.properties", + "repo": "mosip/mosip-config", + "file_path": "admin-default.properties", + "language": "properties", + "content": "# Follow properites have their values assigned via 'overrides' environment variables of config server docker.\n# DO NOT define these in any of the property files. They must be passed as env variables. Refer to config-server\n# helm chart:\n# db.dbuser.password\n# keycloak.internal.url\n# keycloak.external.url\n# mosip.admin.client.secret (convention: ..secret)\n# mosip.regproc.client.secret\n\n\nmosip.admin.version-id=v1.0\nmosip.admin.request-id=ADMIN.REQUEST\n## Database properties\n# Database hostname below is assuming postgres is running inside cluster in 'postgres' namespace\n# If database is external to production, provide the DNS or ip of the host and port \nmosip.kernel.database.hostname=${mosip.database.hostname.override:postgres-postgresql.postgres}\nmosip.kernel.database.port=${mosip.database.port.override:5432}\n\n## Account management\nauthmanager.base.url=${mosip.kernel.authmanager.url}/v1/authmanager\nmosip.admin.accountmgmt.auth-manager-base-uri=${mosip.kernel.authmanager.url}/v1/authmanager\nmosip.admin.accountmgmt.user-name-url=/username/\nmosip.admin.accountmgmt.user-detail-url=/userdetail/\nmosip.admin.accountmgmt.unblock-url=/unblock/\nmosip.admin.accountmgmt.change-passoword-url=/changepassword/\nmosip.admin.accountmgmt.reset-password-url=/resetpassword/\nmosip.admin.app-id=admin\n\nmosip.kernel.signature.cryptomanager-encrypt-url=${mosip.kernel.keymanager.url}/v1/keymanager/private/encrypt\nauth.server.validate.url=${mosip.kernel.authmanager.url}/v1/authmanager/authorize/admin/validateToken\nauth.server.refreshToken.url=${mosip.kernel.authmanager.url}/v1/authmanager/authorize/admin/refreshToken\nauth.server.admin.allowed.audience=mosip-regproc-client,mosip-admin-client\nauth.role.prefix=ROLE_\nauth.header.name=Authorization\n\n## Databases\njavax.persistence.jdbc.driver=org.postgresql.Driver\njavax.persistence.jdbc.url=jdbc:postgresql://${mosip.kernel.database.hostname}:${mosip.kernel.database.port}/mosip_master\njavax.persistence.jdbc.user=masteruser\njavax.persistence.jdbc.password=${db.dbuser.password}\nhibernate.dialect=org.hibernate.dialect.PostgreSQLDialect\nhibernate.jdbc.lob.non_contextual_creation=true\nhibernate.hbm2ddl.auto=none\nhibernate.show_sql=false\nhibernate.format_sql=false\nhibernate.connection.charSet=utf8\nhibernate.cache.use_second_level_cache=false\nhibernate.cache.use_query_cache=false\nhibernate.cache.use_structured_entries=false\nhibernate.generate_statistics=false\n\n## Use registration\nauth.server.user-register-url=${mosip.kernel.authmanager.url}/v1/authmanager/user\nmosip.kernel.emailnotifier-url=${mosip.kernel.notification.url}/v1/notifier/email/send\nauth.server.sendotp-url=${mosip.kernel.authmanager.url}/v1/authmanager/authenticate/sendotp\nauth.server.user-add-password-url=${mosip.kernel.authmanager.url}/v1/authmanager/user/addpassword\nmosip.admin-appid=admin\nmosip.admin-otp-context=auth-otp\nmosip.admin-userid-otp-type=USERID \n\n## Security policy\nmosip.admin.security.policy.auth-types=bio,nonbio\nmosip.admin.security.policy.bio=finger,iris,face\nmosip.admin.security.policy.nonbio=otp,password\nmosip.admin.security.policy.policy-types=type1,type2,type3\nmosip.admin.security.policy.type1=password\nmosip.admin.security.policy.type2=password,otp\nmosip.admin.security.policy.type3=otp\nmosip.admin.security.policy.role-policy-mapping={ZONAL_ADMIN:'type2',ZONAL_APPROVER:'type1',CENTRAL_ADMIN:'type1',CENTRAL_APPROVER:'type1',REGISTRATION_OFFICER:'type1',REGISTRATION_SUPERVISOR:'type1',REGISTRATION_OPERATOR:'type1'}\nmosip.admin.security.policy.userrole-auth-url=${mosip.kernel.authmanager.url}/v1/authmanager/role/{appId}/{username}\n\n## Masterdata cards\n\nmosip.admin.masterdata.lang-code=eng,ara,fra\nmosip.admin-services.required.roles=GLOBAL_ADMIN\n\n#masterdata machine\nmosip.admin.masterdata.card.machines-eng=Machines\nmosip.admin.masterdata.card.machines-ara=\\u0622\\u0644\\u0627\\u062A\nmosip.admin.masterdata.card.machines-fra=Machines\n\n#masterdata machine specs\nmosip.admin.masterdata.card.machine-specs-eng=Machine Specifications\nmosip.admin.masterdata.card.machine-specs-fra=Spécifications de la machine\nmosip.admin.masterdata.card.machine-specs-ara=\\u0645\\u0648\\u0627\\u0635\\u0641\\u0627\\u062A \\u0627\\u0644\\u062C\\u0647\\u0627\\u0632\n\n#masterdata machine types\nmosip.admin.masterdata.card.machine-types-eng=Machine Types\nmosip.admin.masterdata.card.machine-types-fra=Types de machines\nmosip.admin.masterdata.card.machine-types-ara=\\u0623\\u0646\\u0648\\u0627\\u0639 \\u0627\\u0644\\u0645\\u0627\\u0643\\u064A\\u0646\\u0627\\u062A\n\n#masterdata devices\nmosip.admin.masterdata.card.devices-eng=Devices\nmosip.admin.masterdata.card.devices-ara=\\u0627\\u0644\\u0623\\u062C\\u0647\\u0632\\u0629\nmosip.admin.masterdata.card.devices-fra=Dispositifs\n\n#masterdata device specs\nmosip.admin.masterdata.card.device-specs-eng=Device Specification\nmosip.admin.masterdata.card.device-specs-fra=Spécification de l'appareil\nmosip.admin.masterdata.card.device-specs-ara=\\u0645\\u0648\\u0627\\u0635\\u0641\\u0627\\u062A \\u0627\\u0644\\u062C\\u0647\\u0627\\u0632\n\n#masterdata device types\nmosip.admin.masterdata.card.device-types-eng=Device Types\nmosip.admin.masterdata.card.device-types-fra=Types de périphériques\nmosip.admin.masterdata.card.device-types-ara=\\u0623\\u0646\\u0648\\u0627\\u0639 \\u0627\\u0644\\u0623\\u062C\\u0647\\u0632\\u0629\n\n#masterdata registration center\nmosip.admin.masterdata.card.centers-eng=Registration Center\nmosip.admin.masterdata.card.centers-fra=Centre d'inscription\nmosip.admin.masterdata.card.centers-ara=\\u0645\\u0631\\u0643\\u0632 \\u0627\\u0644\\u062A\\u0633\\u062C\\u064A\\u0644\n\n#masterdata regcenter type\nmosip.admin.masterdata.card.center-type-eng=Registration Center Type\nmosip.admin.masterdata.card.center-type-fra=Type de centre d'inscription\nmosip.admin.masterdata.card.center-type-ara=\\u0646\\u0648\\u0639 \\u0645\\u0631\\u0643\\u0632 \\u0627\\u0644\\u062A\\u0633\\u062C\\u064A\\u0644\n\n#masterdata blacklisted words\nmosip.admin.masterdata.card.blacklisted-eng=Blacklisted Words\nmosip.admin.masterdata.card.blacklisted-fra=Mots sur la liste noire\nmosip.admin.masterdata.card.blacklisted-ara=\\u0643\\u0644\\u0645\\u0627\\u062A \\u0641\\u064A \\u0627\\u0644\\u0642\\u0627\\u0626\\u0645\\u0629 \\u0627\\u0644\\u0633\\u0648\\u062F\\u0627\\u0621\n\n#masterdata title\nmosip.admin.masterdata.card.titles-eng=Title\nmosip.admin.masterdata.card.titles-fra=Titre\nmosip.admin.masterdata.card.titles-ara=\\u0639\\u0646\\u0648\\u0627\\u0646\n\n#masterdata gender\nmosip.admin.masterdata.card.genders-eng=Gender\nmosip.admin.masterdata.card.genders-fra=le sexe\nmosip.admin.masterdata.card.genders-ara=\\u062C\\u0646\\u0633\n\n#masterdata individual types\nmosip.admin.masterdata.card.individuals-eng=Individual\nmosip.admin.masterdata.card.individuals-fra=Individuel\nmosip.admin.masterdata.card.individuals-ara=\\u0641\\u0631\\u062F\n\n#masterdata document types\nmosip.admin.masterdata.card.document-types-eng=Document Types\nmosip.admin.masterdata.card.document-types-fra=Types de documents\nmosip.admin.masterdata.card.document-types-ara=\\u0623\\u0646\\u0648\\u0627\\u0639 \\u0627\\u0644\\u0645\\u0633\\u062A\\u0646\\u062F\\u0627\\u062A\n\n#masterdata document category\nmosip.admin.masterdata.card.document-category-eng=Document Category\nmosip.admin.masterdata.card.document-category-fra=Catégorie de document\nmosip.admin.masterdata.card.document-category-ara=\\u0641\\u0626\\u0629 \\u0627\\u0644\\u0648\\u062B\\u064A\\u0642\\u0629\n\n## masteradata holidays\nmosip.admin.masterdata.card.holidays-eng=Holidays\nmosip.admin.masterdata.card.holidays-fra=Vacances\nmosip.admin.masterdata.card.holidays-ara=\\u0627\\u0644\\u0639\\u0637\\u0644\n\n## masterdata locations\nmosip.admin.masterdata.card.locations-eng=Locations\nmosip.admin.masterdata.card.locations-fra=Emplacements\nmosip.admin.masterdata.card.locations-ara=\\u0645\\u0648\\u0627\\u0642\\u0639\n\n## masterdata template\nmosip.admin.masterdata.card.templates-eng=Templates\nmosip.admin.masterdata.card.templates-fra=Modèles\nmosip.admin.masterdata.card.templates-ara=\\u0642\\u0648\\u0627\\u0644\\u0628\n\n## masterdata valid document\nmosip.admin.masterdata.card.valid-document-eng=Valid Documents\nmosip.admin.masterdata.card.valid-document-fra=Documents valides\nmosip.admin.masterdata.card.valid-document-ara=\\u0648\\u062B\\u0627\\u0626\\u0642 \\u0635\\u0627\\u0644\\u062D\\u0629\n\n## UIN activate/deactivate\nmosip.admin.uinmgmt.uin-detail-search=${mosip.idrepo.identity.url}/v1/identity/uin/{uin}\nmosip.kernel.packet-status-update-url=${mosip.regproc.transaction.service.url}/registrationprocessor/v1/registrationtransaction/search/\nmosip.kernel.packet-reciever-api-url=${mosip.packet.receiver.url}/registrationprocessor/v1/packetreceiver/registrationpackets\nmosip.kernel.zone-validation-url=${mosip.kernel.masterdata.url}/v1/masterdata/zones/authorize\nmosip.kernel.registrationcenterid.length=5 \nmosip.kernel.audit.manager.api=${mosip.kernel.auditmanager.url}/v1/auditmanager/audits\nmosip.kernel.masterdata.audit-url=${mosip.kernel.auditmanager.url}/v1/auditmanager/audits\n\nmosip.admin-services.audit.manager.api=${mosip.kernel.auditmanager.url}/v1/auditmanager/audits\nmosip.open-id.base-url=${keycloak.internal.url}\nmosip.admin-services.open-id.realmid=mosip\nmosip.admin-services.open-id.login_flow.name=authorization_code\nmosip.admin-services.open-id.clientid=mosip-admin-client\nmosip.admin-services.open-id.clientsecret=${mosip.admin.client.secret}\nmosip.admin-services.redirecturi=${mosip.api.internal.url}/v1/admin/login-redirect/\nmosip.admin-services.open-id.login_flow.scope=email\nmosip.admin-services.open-id.login_flow.response_type=code\nmosip.admin-services.open-id.authorization_endpoint=${keycloak.internal.url}/auth/realms/{realmId}/protocol/openid-connect/auth\nmosip.admin-services.open-id.token_endpoint=${keycloak.internal.url}/auth/realms/{realmId}/protocol/openid-connect/token\nmosip.admin-services.cookie.security=true\n\nmosip.ui.spec.default.domain=registration-client\n\n## Security\nmosip.security.csrf-enable=false\nmosip.security.cors-enable=false\nmosip.security.origins=localhost:8080\nmosip.security.secure-cookie=false\n\n# IAM\nmosip.iam.module.login_flow.name=authorization_code\nmosip.iam.module.clientID=mosip-admin-client\nmosip.iam.module.clientsecret=${mosip.admin.client.secret}\nmosip.iam.module.redirecturi=${mosip.api.internal.url}/v1/admin/login-redirect/\n#mosip.iam.module.redirecturi=${tempuri}/v1/admin/login-redirect/\n#mosip.iam.module.login_flow.scope=cls\nmosip.iam.module.login_flow.scope=email\nmosip.iam.module.login_flow.response_type=code\n\n#This is the endpoint use by ui(browser) based applications to redirect to open-id system. This URL should be reachable through the browser.\nmosip.iam.authorization_endpoint=${keycloak.external.url}/auth/realms/mosip/protocol/openid-connect/auth\nmosip.iam.module.admin_realm_id=mosip\nmosip.iam.token_endpoint=${keycloak.internal.url}/auth/realms/mosip/protocol/openid-connect/token\nmosip.iam.certs_endpoint=${keycloak.external.url}/auth/realms/mosip/protocol/openid-connect/certs\n\nregproc.token.request.appid=regproc\nregproc.token.request.clientId=mosip-regproc-client\nregproc.token.request.secretKey=${mosip.regproc.client.secret}\nregproc.token.request.id=io.mosip.registration.processor\nregproc.token.request.version=1.0\nKEYBASEDTOKENAPI=${mosip.kernel.authmanager.url}/v1/authmanager/authenticate/clientidsecretkey\n\n# IAM adapter\nmosip.iam.adapter.appid=admin\nmosip.iam.adapter.clientid=mosip-admin-client\nmosip.iam.adapter.clientsecret=${mosip.admin.client.secret}\nmosip.iam.adapter.issuerURL=${keycloak.internal.url}/auth/realms/mosip\nmosip.authmanager.client-token-endpoint=${mosip.kernel.authmanager.url}/v1/authmanager/authenticate/clientidsecretkey\n# in minutes\nmosip.iam.adapter.validate-expiry-check-rate=1440\n# in minutes\nmosip.iam.adapter.renewal-before-expiry-interval=1440\n#this should be false if you don?t use this restTemplate true if you do\nmosip.iam.adapter.self-token-renewal-enable=true\n\n# LostRid \nmosip.registration.processor.lostrid.id=mosip.registration.lostrid\nmosip.registration.processor.lostrid.version=1.0\nLOST_RID_API=${mosip.regproc.status.service.url}/registrationprocessor/v1/registrationstatus/lostridsearch\nlogging.level.org.springframework.web.client.RestTemplate=INFO\n\n# Roles\nmosip.role.admin.getpacketstatusupdate=REGISTRATION_ADMIN\nmosip.role.admin.postbulkupload=GLOBAL_ADMIN,REGISTRATION_ADMIN,ZONAL_ADMIN,MASTERDATA_ADMIN\nmosip.role.admin.getbulkuploadtranscationtranscationid=GLOBAL_ADMIN,REGISTRATION_ADMIN,ZONAL_ADMIN,MASTERDATA_ADMIN\nmosip.role.admin.getbulkuploadgetalltransactions=GLOBAL_ADMIN,REGISTRATION_ADMIN,ZONAL_ADMIN,MASTERDATA_ADMIN\nmosip.role.admin.postauditmanagerlog=GLOBAL_ADMIN,ZONAL_ADMIN\n\n\nmosip.role.admin.getgeneratecsrcertificateapplicationidreferenceid=GLOBAL_ADMIN,ZONAL_ADMIN,KEY_MAKER\nmosip.role.admin.postuploadcertificate=GLOBAL_ADMIN,ZONAL_ADMIN,KEY_MAKER\nmosip.role.admin.postgeneratecsr=GLOBAL_ADMIN,ZONAL_ADMIN,KEY_MAKER\nmosip.role.admin.postuploadotherdomaincertificate=GLOBAL_ADMIN,ZONAL_ADMIN,KEY_MAKER\n\nmosip.role.admin.getlostRiddetailsrid=GLOBAL_ADMIN,ZONAL_ADMIN\nmosip.role.admin.postlostRid=GLOBAL_ADMIN,ZONAL_ADMIN\nmosip.role.admin.getapplicantDetailsrid=DIGITALCARD_ADMIN\nmosip.role.admin.getapplicantDetailsgetLoginDetails=DIGITALCARD_ADMIN\nmosip.role.admin.getriddigitalcardrid=DIGITALCARD_ADMIN\n\n# packet-manager\nmosip.commons.packetnames=id,evidence,optional\nprovider.packetreader.mosip=source:REGISTRATION_CLIENT,process:NEW|UPDATE|LOST|BIOMETRIC_CORRECTION,classname:io.mosip.commons.packet.impl.PacketReaderImpl\nprovider.packetwriter.mosip=source:REGISTRATION_CLIENT,process:NEW|UPDATE|LOST|BIOMETRIC_CORRECTION,classname:io.mosip.commons.packet.impl.PacketWriterImpl\nobjectstore.adapter.name=PosixAdapter\nobjectstore.crypto.name=OnlinePacketCryptoServiceImpl\ndefault.provider.version=v1.0\nobject.store.base.location=./packets\nobjectstore.packet.source=REGISTRATION_CLIENT\npacket.manager.account.name=PACKET_MANAGER_ACCOUNT\nobjectstore.packet.supervisor_biometrics_file_name=supervisor_bio_cbeff\nobjectstore.packet.officer_biometrics_file_name=officer_bio_cbeff\nmosip.kernel.xsdstorage-uri = LOCAL\nmosip.kernel.xsdfile = LOCAL\n#----JSON Validator Component----\n#Property Source of the Identity Schema. LOCAL specifies the schema is stored within the application. Should not be modified\nmosip.kernel.jsonvalidator.property-source = LOCAL\n#Storage Location of the Identity Schema. LOCAL specifies the schema is stored within the application. Should not be modified\nmosip.kernel.jsonvalidator.file-storage-uri=LOCAL\n\nmosip.kernel.machineid.length=5\nauth.server.admin.issuer.uri=${keycloak.external.url}/auth/realms/\nMACHINE_GET_API=${mosip.kernel.masterdata.url}/v1/masterdata/machines/mappedmachines/\nCRYPTOMANAGERDECRYPT_API=${mosip.kernel.keymanager.url}/v1/keymanager/decrypt\nCRYPTOMANAGER_DECRYPT=${mosip.kernel.keymanager.url}/v1/keymanager/decrypt\nCRYPTOMANAGER_ENCRYPT=${mosip.kernel.keymanager.url}/v1/keymanager/encrypt\nmosip.kernel.syncdata-service-get-tpm-publicKey-url=${mosip.kernel.syncdata.url}/v1/syncdata/tpm/publickey/\nmosip.admin.packetupload.packetsync.url=${mosip.regproc.status.service.url}/registrationprocessor/v1/registrationstatus/syncV2\nmosip.admin.packetupload.packetsync.name=fullName,name,firstName,middleName,lastName\nmosip.admin.packetupload.packetsync.email=email\nmosip.admin.packetupload.packetsync.phone=phone\n\nmosip.admin.audit.manager.eventName.pattern=^(Click|Page View): ([\\\\W|\\\\w]{1,100}$)\nregistration.processor.identityjson=identity-mapping.json\n\n###Key manager url's used by KeyManagerDelegation api from admin-service to delegate request\nmosip.kernel.keymanager.generatecsr=${mosip.kernel.keymanager.url}/v1/keymanager/generateCSR\nmosip.kernel.keymanager.getcertificate=${mosip.kernel.keymanager.url}/v1/keymanager/getCertificate?\nmosip.kernel.keymanager.uploadcertificate=${mosip.kernel.keymanager.url}/v1/keymanager/uploadCertificate\nmosip.kernel.keymanager.uploadotherdomaincertificate=${mosip.kernel.keymanager.url}/v1/keymanager/uploadOtherDomainCertificate\n\n# this property are used in AdminProxyService to get base url and version\nmosip.admin.masterdata.service.url=http://masterdata.kernel/v1\nmosip.admin.keymanager.service.url=http://keymanager.keymanager/v1\nmosip.admin.masterdata.service.version=masterdata.kernel/v1\nmosip.admin.keymanager.service.version=keymanager.keymanager/v1\nmosip.admin.base.url=http:/\nmosip.service.end-points=/**/masterdata/**,/**/keymanager/**\nauth.allowed.urls=https://${mosip.admin.host}/\n\n# query param usd to refer url to redirect after logout\nmosip.iam.post-logout-uri-param-key=post_logout_redirect_uri\n# end session endpoint in OIDC\nmosip.iam.end-session-endpoint-path=/protocol/openid-connect/logout\n\n#--------------------Applicant Details Api-----------------------------\nmosip.admin.identityMappingJson=identity-mapping.json\nmosip.admin.applicant-details.exposed-identity-fields=dob,applicantPhoto\nRETRIEVE_IDENTITY_API=${mosip.idrepo.identity.url}/idrepository/v1/identity/idvid\n## this property is used to configure max limit of search for the login user to get applicantDetails\nmosip.admin.applicant-details.max.login.count=30\n\n#-------------------Digital Card Api-----------------------------------\nDIGITAL_CARD_STATUS_URL=${mosip.digitalcard.service.url}/v1/digitalcard" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/mosip-config/blob/master/application-default.properties", + "title": "application-default.properties", + "repo": "mosip/mosip-config", + "file_path": "application-default.properties", + "language": "properties", + "content": "# Follow properites have their values assigned via 'overrides' environment variables of config server docker.\n# DO NOT define these in any of the property files. They must be passed as env variables. Refer to config-server\n# helm chart:\n# override below properties for v2 deployment\n# keycloak.external.url\n# keycloak.internal.url\n# mosip.api.internal.host\n\n\naplication.configuration.level.version=LTS\n\n## Idobject validator\n# This config is used for loading recommended centers based on the value of the config.\n# The value depicts the location hierarchy code of the hierarchy based on which the recommended centers is loaded\nmosip.recommended.centers.locCode=5\n\n## Common properties used across different modules\nmosipbox.public.url=${mosip.api.internal.url}\nmosip.api.internal.url=https://${mosip.api.internal.host}\nmosip.api.public.url=https://${mosip.api.public.host}\nmosip.kernel.authmanager.url=http://authmanager.kernel\nmosip.kernel.masterdata.url=http://masterdata.kernel\nmosip.kernel.keymanager.url=http://keymanager.keymanager\nmosip.kernel.auditmanager.url=http://auditmanager.kernel\nmosip.kernel.notification.url=http://notifier.kernel\nmosip.kernel.idgenerator.url=http://idgenerator.kernel\nmosip.kernel.otpmanager.url=http://otpmanager.kernel\nmosip.kernel.syncdata.url=http://syncdata.kernel\nmosip.kernel.pridgenerator.url=http://pridgenerator.kernel\nmosip.kernel.ridgenerator.url=http://ridgenerator.kernel\nmosip.idrepo.identity.url=http://identity.idrepo\nmosip.idrepo.vid.url=http://vid.idrepo\nmosip.admin.hotlist.url=http://admin-hotlist.admin\nmosip.admin.service.url=http://admin-service.admin\nmosip.admin.ui.url=http://admin-ui.admin\nmosip.pms.policymanager.url=http://pms-policy.pms\nmosip.pms.partnermanager.url=http://pms-partner.pms\nmosip.pms.ui.url=http://pms-ui.pms\nmosip.idrepo.credrequest.generator.url=http://credentialrequest.idrepo\nmosip.idrepo.credential.service.url=http://credential.idrepo\nmosip.datashare.url=http://datashare.datashare\nmosip.mock.biosdk.url=http://biosdk-service.biosdk\nmosip.idrepo.biosdk.url=http://biosdk-service.biosdk\nmosip.regproc.workflow.url=http://regproc-workflow.regproc\nmosip.regproc.status.service.url=http://regproc-status.regproc\nmosip.regproc.transaction.service.url=http://regproc-trans.regproc\nmosip.packet.receiver.url=http://regproc-group1.regproc\nmosip.websub.url=http://websub.websub\nmosip.regproc.biosdk.url=http://biosdk-service.biosdk\nmosip.consolidator.url=http://websub-consolidator.websub\nmosip.file.server.url=http://mosip-file-server.mosip-file-server\nmosip.ida.internal.url=http://ida-internal.ida\nmosip.ida.auth.url=http://ida-auth.ida\nmosip.ida.otp.url=http://ida-otp.ida\nmosip.resident.url=http://resident.resident\npacketmanager.base.url=http://packetmanager.packetmanager/commons\nmosip.artifactory.url=http://artifactory.artifactory\nmosip.esignet.service.url=http://esignet.esignet\nkafka.profile=kafka.svc.cluster.local\nkafka.port=9092\nmosip.digitalcard.service.url=http://digitalcard.digitalcard\n\nconfig.server.file.storage.uri=${spring.cloud.config.uri}/${spring.application.name}/${spring.profiles.active}/${spring.cloud.config.label}/\nmosip.config.server.file.storage.uri=${spring.cloud.config.uri}/${spring.application.name}/${spring.profiles.active}/${spring.cloud.config.label}/\n\n# masterdata field data url\nmosip.idobjectvalidator.masterdata.rest.uri=${mosip.kernel.masterdata.url}/v1/masterdata/possiblevalues/{subType}\n# Path to IDSchemaVersion. Path is defined as per JsonPath.compile.\nmosip.kernel.idobjectvalidator.identity.id-schema-version-path=identity.IDSchemaVersion\n# Path to dateOfBirth field. Path is defined as per JsonPath.compile.\nmosip.kernel.idobjectvalidator.identity.dob-path = identity.dateOfBirth\n\n# Refresh cache only once for a particular subType for each request, when a value is not found for that subType. By default, it is false\nmosip.idobjectvalidator.refresh-cache-on-unknown-value=false\n\n# Date format expected in identity json. commenting/removing below property will disable dob format validation in identity json.\nmosip.kernel.idobjectvalidator.date-format=uuuu/MM/dd\n## Properties that need to be updated when Identity Schema has been updated\nmosip.kernel.idobjectvalidator.mandatory-attributes.id-repository.new-registration=IDSchemaVersion,UIN,fullName,dateOfBirth|age,gender,addressLine1,region,province,city,zone\nmosip.kernel.idobjectvalidator.mandatory-attributes.id-repository.update-uin=IDSchemaVersion,UIN\nmosip.kernel.idobjectvalidator.mandatory-attributes.reg-processor.new-registration=IDSchemaVersion,UIN,fullName,dateOfBirth|age,gender,addressLine1,region,province,city,zone,postalCode,residenceStatus,referenceIdentityNumber\nmosip.kernel.idobjectvalidator.mandatory-attributes.reg-processor.child-registration=IDSchemaVersion,UIN,fullName,dateOfBirth|age,gender,addressLine1,region,province,city,zone,postalCode,residenceStatus,referenceIdentityNumber,parentOrGuardianName,parentOrGuardianRID|parentOrGuardianUIN,parentOrGuardianBiometrics\nmosip.kernel.idobjectvalidator.mandatory-attributes.reg-processor.other=IDSchemaVersion,UIN\nmosip.kernel.idobjectvalidator.mandatory-attributes.reg-processor.lost=IDSchemaVersion\nmosip.kernel.idobjectvalidator.mandatory-attributes.reg-processor.biometric_correction=IDSchemaVersion\nmosip.kernel.idobjectvalidator.mandatory-attributes.reg-processor.opencrvs_new=IDSchemaVersion\nmosip.kernel.idobjectvalidator.mandatory-attributes.reg-processor.crvs_new=IDSchemaVersion,UIN,fullName,dateOfBirth|age,gender,addressLine1,region,province,city,zone\nmosip.kernel.idobjectvalidator.mandatory-attributes.reg-processor.crvs_death=IDSchemaVersion,UIN\n\n# Value used in IdObjectReferenceValidator when value is not available\nmosip.kernel.idobjectvalidator.masterdata.value-not-available=NA\n\n## Bio attribute allowed to be stored in IDRepo as per Identity Schema\nmosip.idrepo.identity.allowedBioAttributes=individualBiometrics\n\n## List of all bio attriutes defined in Identity Schema\nmosip.idrepo.identity.bioAttributes=individualBiometrics,parentOrGuardianBiometrics\n\nmosip.country.code=MOR\n\n## Language supported by platform\nmosip.supported-languages=eng,ara,fra\nmosip.right_to_left_orientation=ara\nmosip.left_to_right_orientation=eng,fra\n\n## Application IDs\nmosip.prereg.app-id=PRE_REGISTRATION\nmosip.reg.app-id=REGISTRATION\nmosip.regproc.app-id=REGISTRATION_PROCESSOR\nmosip.ida.app-id=IDA\nmosip.ida.ref-id=INTERNAL\nmosip.idrepo.app-id=ID_REPO\n\nmosip.utc-datetime-pattern=yyyy-MM-dd'T'HH:mm:ss.SSS'Z'\nmosip.sign.header=response-signature\nmosip.signed.response.header=response-signature\n\n## CBEFF util\n# Cbeff URL where the files will be stored in git, change it accordingly in case of change of storage location.\nmosip.kernel.xsdstorage-uri=${spring.cloud.config.uri}/${spring.application.name}/${spring.profiles.active}/${spring.cloud.config.label}/\n# Cbeff XSD file name in config server\nmosip.kernel.xsdfile=mosip-cbeff.xsd\n\n## Applicant type\nmosip.kernel.applicant.type.age.limit = 5\nmosip.kernel.applicantType.mvel.file=applicanttype.mvel\nmosip.kernel.config.server.file.storage.uri=${spring.cloud.config.uri}/${spring.application.name}/${spring.profiles.active}/${spring.cloud.config.label}/\n\n\n## Various length parameters\nmosip.kernel.pin.length=6\nmosip.kernel.tspid.length=4\nmosip.kernel.partnerid.length=4\nmosip.kernel.tokenid.length=36\nmosip.kernel.registrationcenterid.length=5\nmosip.kernel.machineid.length=5\n\n## RID\nmosip.kernel.rid.length=29\nmosip.kernel.rid.timestamp-length=14\nmosip.kernel.rid.sequence-length=5\n\n## PRID\nmosip.kernel.prid.length=14\n## Upper bound of number of digits in sequence allowed in id. For example if\n## limit is 3, then 12 is allowed but 123 is not allowed in id (in both\n## ascending and descending order)\nmosip.kernel.tokenid.sequence-limit=3\n## Upper bound of number of digits in sequence allowed in id. For example if\n## limit is 3, then 12 is allowed but 123 is not allowed in id (in both\n## ascending and descending order)\n## to disable validation assign zero or negative value\nmosip.kernel.prid.sequence-limit=3\n## Number of digits in repeating block allowed in id. For example if limit is 2,\n## then 4xxx4 is allowed but 48xxx48 is not allowed in id (x is any digit)\n## to disable validation assign zero or negative value\nmosip.kernel.prid.repeating-block-limit=3\n## Lower bound of number of digits allowed in between two repeating digits in\n## id. For example if limit is 2, then 11 and 1x1 is not allowed in id (x is any digit) to disable validation assign zero or negative value\nmosip.kernel.prid.repeating-limit=2\n## list of number that id should not be start with to disable null\nmosip.kernel.prid.not-start-with=0,1\n## restricted numbers for prid\nmosip.kernel.prid.restricted-numbers=786,666\n\n## VID\nmosip.kernel.vid.length=16\n# Upper bound of number of digits in sequence allowed in id. For example if\n# limit is 3, then 12 is allowed but 123 is not allowed in id (in both\n# ascending and descending order)\n# to disable sequence limit validation assign 1\nmosip.kernel.vid.length.sequence-limit=3\n# Number of digits in repeating block allowed in id. For example if limit is 2,\n# then 4xxx4 is allowed but 48xxx48 is not allowed in id (x is any digit)\n# to disable repeating block validation assign 0 or negative value\nmosip.kernel.vid.length.repeating-block-limit=2\n# Lower bound of number of digits allowed in between two repeating digits in\n# id. For example if limit is 2, then 11 and 1x1 is not allowed in id (x is any digit)\n# to disable repeating limit validation, assign 0 or negative value\nmosip.kernel.vid.length.repeating-limit=2\n# list of number that id should not be start with to disable null\nmosip.kernel.vid.not-start-with=0,1\nmosip.kernel.vid.restricted-numbers=786,666\n\n## UIN\nmosip.kernel.uin.length=10\nmosip.kernel.uin.min-unused-threshold=${mosip.kernel.uin.min.unused.threshold.override:200000}\nmosip.kernel.uin.uins-to-generate=500000\nmosip.kernel.uin.restricted-numbers=786,666\n# Upper bound of number of digits in sequence allowed in id. For example if\n# limit is 3, then 12 is allowed but 123 is not allowed in id (in both\n# ascending and descending order)\n# to disable sequence limit validation assign 1\nmosip.kernel.uin.length.sequence-limit=3\n# Number of digits in repeating block allowed in id. For example if limit is 2,\n# then 4xxx4 is allowed but 48xxx48 is not allowed in id (x is any digit)\n#to disable validation assign zero or negative value\nmosip.kernel.uin.length.repeating-block-limit=2\n# Lower bound of number of digits allowed in between two repeating digits in\n# id. For example if limit is 2, then 11 and 1x1 is not allowed in id (x is any digit)\n# to disable repeating limit validation, assign 0 or negative value\nmosip.kernel.uin.length.repeating-limit=2\n#reverse group digit limit for uin filter\nmosip.kernel.uin.length.reverse-digits-limit=5\n#group digit limit for uin filter\nmosip.kernel.uin.length.digits-limit=5\n#should not start with\nmosip.kernel.uin.not-start-with=0,1\n#adjacent even digit limit for uin filter\nmosip.kernel.uin.length.conjugative-even-digits-limit=3\n\n## Auth adapter\nauth.server.validate.url=${mosip.kernel.authmanager.url}/v1/authmanager/authorize/admin/validateToken\n\n#This is the frontend url configured in the open-id system. This url should match the issuer attribute in JWT.\nauth.server.admin.issuer.internal.uri=${keycloak.internal.url}/auth/realms/\nauth.server.admin.issuer.uri=${keycloak.external.url}/auth/realms/\nauth-token-generator.rest.issuerUrl=${keycloak.internal.url}/auth/realms/mosip\nmosip.keycloak.issuerUrl=${keycloak.internal.url}/auth/realms/mosip\n\n## iam adapter\nmosip.auth.adapter.impl.basepackage=io.mosip.kernel.auth.defaultadapter\nmosip.kernel.auth.adapter.ssl-bypass=true\nmosip.kernel.auth.appid-realm-map={prereg:'mosip',ida:'mosip',registrationclient:'mosip',regproc:'mosip',partner:'mosip',resident:'mosip',admin:'mosip',crereq:'mosip',creser:'mosip',datsha:'mosip',idrepo:'mosip',hotlist:'mosip',digitalcard:'mosip',signup:'mosip'}\nmosip.kernel.auth.appids.realm.map={prereg:'mosip',ida:'mosip',registrationclient:'mosip',regproc:'mosip',partner:'mosip',resident:'mosip',admin:'mosip',crereq:'mosip',creser:'mosip',datsha:'mosip',idrepo:'mosip',hotlist:'mosip',digitalcard:'mosip',signup:'mosip'}\n\n## Crypto\nmosip.kernel.crypto.asymmetric-algorithm-name=RSA/ECB/OAEPWITHSHA-256ANDMGF1PADDING\nmosip.kernel.crypto.symmetric-algorithm-name=AES/GCM/NoPadding\nmosip.kernel.keygenerator.asymmetric-algorithm-name=RSA\nmosip.kernel.keygenerator.symmetric-algorithm-name=AES\nmosip.kernel.keygenerator.asymmetric-key-length=2048\nmosip.kernel.keygenerator.symmetric-key-length=256\nmosip.kernel.data-key-splitter=#KEY_SPLITTER#\nmosip.kernel.crypto.gcm-tag-length=128\nmosip.kernel.crypto.hash-algorithm-name=PBKDF2WithHmacSHA512\nmosip.kernel.crypto.hash-symmetric-key-length=256\nmosip.kernel.crypto.hash-iteration=100000\nmosip.kernel.crypto.sign-algorithm-name=RS256\nmosip.kernel.keymanager-service-publickey-url=${mosip.kernel.keymanager.url}/v1/keymanager/publickey/{applicationId}\nmosip.kernel.keymanager-service-decrypt-url=${mosip.kernel.keymanager.url}/v1/keymanager/decrypt\nmosip.kernel.keymanager-service-auth-decrypt-url=${mosip.kernel.keymanager.url}/v1/keymanager/auth/decrypt\nmosip.kernel.keymanager-service-sign-url=${mosip.kernel.keymanager.url}/v1/keymanager/sign\nmosip.kernel.keymanager.cert.url=${mosip.kernel.keymanager.url}/v1/keymanager/getCertificate\nmosip.kernel.keymanager-service-CsSign-url=${mosip.kernel.keymanager.url}/v1/keymanager/cssign\nmosip.sign.applicationid=KERNEL\nmosip.sign.refid=SIGN\nmosip.kernel.cryptomanager.request_id=CRYPTOMANAGER.REQUEST\nmosip.kernel.cryptomanager.request_version=v1.0\nmosip.kernel.signature.signature-request-id=SIGNATURE.REQUEST\nmosip.kernel.signature.signature-version-id=v1.0\n\n## ID repo\nmosip.idrepo.identity.uin-status.registered=ACTIVATED\nmosip.idrepo.identity.uin-status=ACTIVATED,BLOCKED,DEACTIVATED\n\n## OTP manager\nmosip.kernel.otp.default-length=6\n## Default crypto function: HmacSHA512, HmacSHA256, HmacSHA1.\nmosip.kernel.otp.mac-algorithm=HmacSHA512\n## OTP expires after the given time (in seconds).\nmosip.kernel.otp.expiry-time=180\n## Key is frozen for the given time (in seconds).\nmosip.kernel.otp.key-freeze-time=1800\n## Number of validation attempts allowed.\n## mosip.kernel.otp.validation-attempt-threshold =3 means , the validation and generation will be blocked from 4th time.\nmosip.kernel.otp.validation-attempt-threshold=10\nmosip.kernel.otp.min-key-length=3\nmosip.kernel.otp.max-key-length=64\n\n## Licence key manager\nmosip.kernel.licensekey.length=16\n# List of permissions\n## NOTE: ',' in the below list is used as splitter in the implementation. \n## Use of ',' in the values for below key should be avoided.\n## Use of spaces before and after ',' also should be avoided.\nmosip.kernel.licensekey.permissions=OTP Trigger,OTP Authentication,Demo Authentication - Identity Data Match,Demo Authentication - Address Data Match,Demo Authentication - Full Address Data Match,Demo Authentication - Secondary Language Match,Biometric Authentication - FMR Data Match,Biometric Authentication - IIR Data Match,Biometric Authentication - FID Data Match,Static Pin Authentication,eKYC - limited,eKYC - Full,eKYC - No\n\n## Virus scanner\n# Here we specify the Kubernetes service name if clamav runs inside cluster\nmosip.kernel.virus-scanner.host=clamav.clamav\nmosip.kernel.virus-scanner.port=3310\n\n## Transliteration\nmosip.kernel.transliteration.arabic-language-code=ara\nmosip.kernel.transliteration.english-language-code=eng\nmosip.kernel.transliteration.french-language-code=fra\n# Added this property for backward compatibility as it is misspelled in <1.2.0 versions of kernel-transliteration library\nmosip.kernel.transliteration.franch-language-code=fra\n\n## DOB\nmosip.default.dob.month=01\nmosip.default.dob.day=01\nmosip.login.mode= email,mobile\n\n## Notification\nmosip.registration.processor.notification.types=EMAIL\nmosip.notificationtype=SMS|EMAIL\nmosip.kernel.sms.proxy-sms=false\nmosip.kernel.auth.proxy-otp=true\nmosip.kernel.auth.proxy-email=true\n## Notification lanugage types: either PRIMARY or BOTH \nmosip.notification.language-type=BOTH\n\n## System \nlogging.level.org.springframework.web.filter.CommonsRequestLoggingFilter=INFO\n\n## Admin\nmosip.min-digit-longitude-latitude=4\nmosip.kernel.filtervalue.max_columns=20\nauth.server.admin.validate.url=${mosip.kernel.authmanager.url}/v1/authmanager/authorize/admin/validateToken\n\n## PDF generation. TODO: this password must be passed as config server env variable\nmosip.kernel.pdf_owner_password={cipher}6cbd7358f7a821132862475c16cf48e575c8e2c5f994fa7140ee08f364015b24\n\n## Quality check treshold\nmosip.iris_threshold=0\nmosip.leftslap_fingerprint_threshold=0\nmosip.rightslap_fingerprint_threshold=0\nmosip.thumbs_fingerprint_threshold=0\nmosip.facequalitythreshold=0\n\n## Bio SDK Integration\nmosip.fingerprint.provider=io.mosip.kernel.bioapi.impl.BioApiImpl\nmosip.face.provider=io.mosip.kernel.bioapi.impl.BioApiImpl\nmosip.iris.provider=io.mosip.kernel.bioapi.impl.BioApiImpl\n\n## UIN alias\nmosip.uin.alias=\n\n## Kernel salt generator\nmosip.kernel.salt-generator.chunk-size=10\nmosip.kernel.salt-generator.start-sequence=0\nmosip.kernel.salt-generator.end-sequence=999\n\n## HTTP \nserver.max-http-header-size=10000000\n# For Spring-boot 3.x migration above property is deprecated and below property is used.\nserver.max-http-request-header-size=${server.max-http-header-size}\n\n## Prometheus\nmanagement.endpoint.metrics.enabled=true\nmanagement.endpoints.web.exposure.include=*\nmanagement.endpoint.prometheus.enabled=true\nmanagement.metrics.export.prometheus.enabled=true\n\nmosip.kernel.syncdata-service-idschema-url=${mosip.kernel.masterdata.url}/v1/masterdata/idschema/latest\nmosip.kernel.syncdata-service-dynamicfield-url=${mosip.kernel.masterdata.url}/v1/masterdata/dynamicfields\nmosip.kernel.syncdata-service-get-tpm-publicKey-url=${mosip.kernel.syncdata.url}/v1/syncdata/tpm/publickey/\nmosip.kernel.keymanager-service-validate-url=${mosip.kernel.keymanager.url}/v1/keymanager/validate\nmosip.kernel.keymanager-service-csverifysign-url=${mosip.kernel.keymanager.url}/v1/keymanager/csverifysign\n\n## GPS\nmosip.registration.gps_device_enable_flag=n\n\n## Packet manager\n## if source is not passed, packetmanager supports below default strategy -\n## 1. 'exception' : it will throw exception.\n## 2. 'defaultPriority' : use default priority packetmanager.default.priority.\npacketmanager.default.read.strategy=defaultPriority\npacketmanager.default.priority=source:REGISTRATION_CLIENT\\/process:BIOMETRIC_CORRECTION|NEW|UPDATE|LOST,source:RESIDENT\\/process:ACTIVATED|DEACTIVATED|RES_UPDATE|RES_REPRINT,source:OPENCRVS\\/process:OPENCRVS_NEW,source:CRVS1\\/process:CRVS_NEW|CRVS_DEATH\npacketmanager.name.source={default:'REGISTRATION_CLIENT',resident:'RESIDENT',opencrvs:'OPENCRVS'}\n# This configuration is used for disabling packet signature validation.\npacketmanager.packet.signature.disable-verification=false\nmosip.commons.packetnames=id,evidence,optional\nprovider.packetreader.mosip=source:REGISTRATION_CLIENT,process:NEW|UPDATE|LOST|BIOMETRIC_CORRECTION,classname:io.mosip.commons.packet.impl.PacketReaderImpl\nprovider.packetreader.resident=source:RESIDENT,process:ACTIVATED|DEACTIVATED|RES_UPDATE|LOST|RES_REPRINT,classname:io.mosip.commons.packet.impl.PacketReaderImpl\nprovider.packetreader.opencrvs=source:OPENCRVS,process:OPENCRVS_NEW,classname:io.mosip.commons.packet.impl.PacketReaderImpl\nprovider.packetreader.crvs1=source:CRVS1,process:CRVS_NEW|CRVS_DEATH,classname:io.mosip.commons.packet.impl.PacketReaderImpl\nprovider.packetwriter.mosip=source:REGISTRATION_CLIENT,process:NEW|UPDATE|LOST|BIOMETRIC_CORRECTION,classname:io.mosip.commons.packet.impl.PacketWriterImpl\nprovider.packetwriter.resident=source:RESIDENT,process:ACTIVATED|DEACTIVATED|RES_UPDATE|LOST|RES_REPRINT,classname:io.mosip.commons.packet.impl.PacketWriterImpl\nprovider.packetwriter.opencrvs=source:OPENCRVS,process:OPENCRVS_NEW,classname:io.mosip.commons.packet.impl.PacketWriterImpl\nprovider.packetwriter.crvs1=source:CRVS1,process:CRVS_NEW|CRVS_DEATH,classname:io.mosip.commons.packet.impl.PacketWriterImpl\nobjectstore.adapter.name=S3Adapter\n## When we use AWS as an object store, we see that buckets with the same name across deployments cannot be created.so use the prefix with bucket name\nobject.store.s3.bucket-name-prefix=${s3.pretext.value:}\n# the idschema is double by default. If country wish to change it to string then make this property false\nmosip.commons.packet.manager.schema.validator.convertIdSchemaToDouble=true\n## can be OnlinePacketCryptoServiceImpl OR OfflinePacketCryptoServiceImpl\nobjectstore.crypto.name=OnlinePacketCryptoServiceImpl\ndefault.provider.version=v1.0\n## posix adapter config\nobject.store.base.location=/home/mosip\nhazelcast.config=classpath:hazelcast_default.xml\n\n\n\n## Swift\nobject.store.swift.username=test\nobject.store.swift.password=test\nobject.store.swift.url=http://localhost:8080\n\npacket.manager.account.name=${s3.pretext.value:}packet-manager\nCRYPTOMANAGER_DECRYPT=${mosip.kernel.keymanager.url}/v1/keymanager/decrypt\nCRYPTOMANAGER_ENCRYPT=${mosip.kernel.keymanager.url}/v1/keymanager/encrypt\nIDSCHEMAURL=${mosip.kernel.masterdata.url}/v1/masterdata/idschema/latest\nKEYMANAGER_SIGN=${mosip.kernel.keymanager.url}/v1/keymanager/sign\nAUDIT_URL=${mosip.kernel.auditmanager.url}/v1/auditmanager/audits\npacket.default.source=id\nschema.default.fieldCategory=pvt,none\n\n## Device registration/deregistration config\nmosip.stage.environment=Developer\n\n## Log level\n\nlogging.level.io.mosip=INFO\nlogging.level.io.vertx=INFO\nlogging.level.io.mosip.registration.processor.status=INFO\nlogging.level.io.mosip.kernel.auth.defaultadapter.filter=INFO\n\n## Tomcat access logs\nserver.tomcat.accesslog.enabled=true\nserver.tomcat.accesslog.directory=/dev\nserver.tomcat.accesslog.prefix=stdout\nserver.tomcat.accesslog.buffered=false\nserver.tomcat.accesslog.suffix=\nserver.tomcat.accesslog.file-date-format=\nserver.tomcat.accesslog.pattern={\"@timestamp\":\"%{yyyy-MM-dd'T'HH:mm:ss.SSS'Z'}t\",\"level\":\"ACCESS\",\"level_value\":70000,\"traceId\":\"%{X-B3-TraceId}i\",\"statusCode\":%s,\"req.requestURI\":\"%U\",\"bytesSent\":%b,\"timeTaken\":%T,\"appName\":\"${spring.application.name}\",\"req.userAgent\":\"%{User-Agent}i\",\"req.xForwardedFor\":\"%{X-Forwarded-For}i\",\"req.referer\":\"%{Referer}i\",\"req.method\":\"%m\",\"req.remoteHost\":\"%a\"}\nserver.tomcat.accesslog.className=io.mosip.kernel.core.logger.config.SleuthValve\n\n## Websub (internal url)\nwebsub.hub.url=${mosip.websub.url}/hub/\nwebsub.publish.url=${mosip.websub.url}/hub/\n\nmosip.mandatory-languages=eng\n## Leave blank if no optional langauges\nmosip.optional-languages=ara,fra\nmosip.min-languages.count=2\nmosip.max-languages.count=3\n\n# These are default languages used for sending notifications\nmosip.default.template-languages=eng,ara,fra\n\n# Config key to pick the preferred language for communicating to the Resident\nmosip.default.user-preferred-language-attribute=preferredLang\n\n# Path to identity mapping json file\nmosip.identity.mapping-file=${mosip.kernel.xsdstorage-uri}/identity-mapping.json\n\nmosip.notification.timezone=GMT+05:30\n\n# registration center type validation regex, used to restrict the special charecter\nmosip.centertypecode.validate.regex=^[a-zA-Z0-9]([_-](?![_-])|[a-zA-Z0-9]){0,34}[a-zA-Z0-9]$\n\n## Swagger\nopenapi.service.servers[0].url=${mosip.api.internal.url}${server.servlet.context-path:${server.servlet.path:}}\nopenapi.service.servers[0].description=For Swagger\n\nmosip.auth.filter_disable=false\n\n# PDF Digital card is protected with password using below property based on define attribute it will encrypt by taking first 4 character.\nmosip.digitalcard.uincard.password=fullName|dateOfBirth\nmosip.digitalcard.pdf.password.enable.flag=true\n\n# Comma separated values of allowed auth types\nauth.types.allowed=otp-email,otp-phone,demo,bio-FINGER,bio-IRIS,bio-FACE,otp\n\nmosip.access_token.subject.claim-name=sub\n\n# It is used as a suffix for creating credential request ID using the RID.\nmosip.registration.processor.rid.delimiter=-PDF\n\n# Web UI Idle timeout related properties\nmosip.webui.auto.logout.idle=180\nmosip.webui.auto.logout.ping=30\nmosip.webui.auto.logout.timeout=60\n\n# It is used to define vc verification file urls\nmosip.vercred.context.url.map={\"https://www.w3.org/ns/odrl.jsonld\" : \"odrl.jsonld\", \"https://www.w3.org/2018/credentials/v1\" : \"cred-v1.jsonld\", \"https://${mosip.api.public.host}/.well-known/mosip-context.json\" : \"mosip-context.json\"}\n\n# For Spring-boot 3.x we need to specify the ANT Path Matcher for using the existing ANT path patterns.\nspring.mvc.pathmatch.matching-strategy=ANT_PATH_MATCHER\n\n# Setting service-git properties file name so that it does not conflict with git.properties from any other jars in the classpath\nspring.info.git.location=classpath:service-git.properties\n\n#Spring boot 3.x onwards we need to specify the below property to unmask values in actuator env url\nmanagement.endpoint.env.show-values=ALWAYS\n\n# this property used to enable the hsm health check.\nmosip.kernel.keymgr.hsm.health.check.enabled=false\n\n#this property used to validate phone in kernel-smsserviceprovider-msg91\nmosip.id.validation.identity.phone=^[+]*([0-9]{1})([0-9]{9})$\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/mosip-config/blob/master/biosdk-service-default.properties", + "title": "biosdk-service-default.properties", + "repo": "mosip/mosip-config", + "file_path": "biosdk-service-default.properties", + "language": "properties", + "content": "#iam mock-sdk config\nsdk_check_iso_timestamp_format=true\nmosip.role.biosdk.getservicestatus=REGISTRATION_PROCESSOR\nbiosdk_bioapi_impl=io.mosip.mock.sdk.impl.SampleSDKV2\n\nmosip.biosdk.log-request-response-enabled=false\n# Uncomment below when mosip.biosdk.log-request-response-enabled is set to true.\n#logging.level.io.mosip.biosdk.services.impl.spec_1_0.BioSdkServiceProviderImpl_V_1_0=DEBUG\n\n#iam image-compressor config\nmosip.bio.image.compressor.resize.factor.fx=0.25\nmosip.bio.image.compressor.resize.factor.fy=0.25\nmosip.bio.image.compressor.compression.ratio=50\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/mosip-config/blob/master/bqat-sdk-default.properties", + "title": "bqat-sdk-default.properties", + "repo": "mosip/mosip-config", + "file_path": "bqat-sdk-default.properties", + "language": "properties", + "content": "# bqat sdk service used as a quality service for all modalities \n# bqat server ipaddress running using seperate docker\nbqat.server.ipaddress=localhost\nbqat.server.port=:8848\nbqat.server.path=/base64?urlsafe=true\nbqat.content.type=application/json\nbqat.content.charset=utf-8\nbqat.jsonkey.finger.quality.score=NFIQ2\nbqat.jsonkey.iris.quality.score=quality\nbqat.jsonkey.face.quality.score=quality\nbqat.json.results=results\nopenapi.service.servers[0].url=${mosipbox.public.url}${server.servlet.context-path}\nopenapi.service.servers[0].description=${spring.application.name}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/mosip-config/blob/master/captcha-default.properties", + "title": "captcha-default.properties", + "repo": "mosip/mosip-config", + "file_path": "captcha-default.properties", + "language": "properties", + "content": "## Captcha validation service properties\n\n## Retained for backward compatibility\nmosip.captcha.secret-key={'preregistration' : '${prereg.captcha.secret.key}' }\nmosip.captcha.verify-url=https://www.google.com/recaptcha/api/siteverify\n\n## Below configurations apply from version 0.1.0\n# Captcha provider for each module can be configured as below. mosip.captcha.module.provider.mapping.=ABCCatchaProvider\n# if there no entry for given modulename, it picks the 'default' module provider mapping.\nmosip.captcha.module.provider.mapping.default=googlerecaptchav2\nmosip.captcha.module.provider.mapping.preregistration=googlerecaptchav2\n\n# Captcha verify for each provider can be defined as follows.\nmosip.captcha.googlerecaptchav2.verify-url=https://www.google.com/recaptcha/api/siteverify\n\n# Config key name format to provide secret key for any module for each captcha provider.\n# mosip.captcha..secret.=secret-key-generated-for-the-module\n# NOTE: Provider and Module name shouldn't contain any - or _\nmosip.captcha.googlerecaptchav2.secret.preregistration=${prereg.captcha.secret.key}\n\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/mosip-config/blob/master/compliance-toolkit-default.properties", + "title": "compliance-toolkit-default.properties", + "repo": "mosip/mosip-config", + "file_path": "compliance-toolkit-default.properties", + "language": "properties", + "content": "# Follow properites have their values assigned via 'overrides' environment variables of config server docker.\n# DO NOT define these in any of the property files. They must be passed as env variables. Refer to config-server\n# helm chart:\n# db.dbuser.password\n# mosip.toolkit.client.secret\n# keycloak.internal.host\n# keycloak.internal.url\n# s3.accesskey\n# s3.region\n# s3.secretkey\n\n## Database properties\n# Database hostname below is assuming postgres is running inside cluster in 'postgres' namespace\n# If database is external to production, provide the DNS or ip of the host and port\n\n##DB properties\njavax.persistence.jdbc.driver=org.postgresql.Driver\nmosip.database.ip=${mosip.database.hostname.override:postgres-postgresql.postgres}\nmosip.database.port=${mosip.database.port.override:5432}\njavax.persistence.jdbc.url=jdbc:postgresql://${mosip.database.ip}:${mosip.database.port}/mosip_toolkit?useSSL=false\njavax.persistence.jdbc.user=toolkituser\njavax.persistence.jdbc.password=${db.dbuser.password}\n\n## Hibernate\nhibernate.hbm2ddl.auto=none\nhibernate.show_sql=false\nhibernate.dialect=org.hibernate.dialect.PostgreSQLDialect\nhibernate.jdbc.lob.non_contextual_creation=true\n\nlogging.level.com.zaxxer.hikari=INFO\n\n## Project Version for the API response\nversion=1.0\n\nserver.servlet.context-path=/v1/toolkit\n\n## Security properties\nmosip.security.csrf-enable=false\nmosip.security.cors-enable=true\nmosip.security.origins=http://localhost\nmosip.security.secure-cookie=false\n\n#iam\nmosip.api.internal.url=https://${mosip.api.internal.host}\n#keycloak.external.url=${mosip.api.internal.url}/keycloak\niam.base.url=${keycloak.external.url}\n\n#iam adapter setup\nmosip.service-context=${server.servlet.context-path}\nmosip.service.end-points=/**/toolkit/**\nmosip.global.end-points=/**/swagger-ui/**,/**/api-docs/**,/**/assets/**,/**/icons/**,/**/screenshots/**,/favicon**,/**/favicon**,/**/css/**,/**/js/**,/**/error**,/**/webjars/**,/**/csrf,/*/,/**/authenticate/**,/**/actuator/**,/sendOtp,/validateOtp,/invalidateToken,/config,/login,/logout,/validateOTP,/sendOTP,/**/login,/**/login/**,/**/login-redirect/**,/**/logout/**,/**/h2-console/**,/**/**/license/**,/**/callback/**,/**/authenticate/**\n#mosip.service.exclude.auth.allowed.method=POST,GET,PATCH,PUT,DELETE\nmosip.auth.adapter.impl.basepackage=io.mosip.kernel.auth.defaultadapter\nmosip.auth.filter_disable=false\nmosip.kernel.auth.adapter.ssl-bypass=true\nmosip.kernel.auth.appid-realm-map={toolkit:'mosip'}\nmosip.kernel.auth.appids.realm.map={toolkit:'mosip'}\n\n#iam adapter\nmosip.iam.adapter.appid=toolkit\nmosip.iam.adapter.clientid=mosip-toolkit-client\nmosip.iam.adapter.clientsecret=${mosip.toolkit.client.secret}\n\nauth.server.admin.issuer.uri=${keycloak.external.url}/auth/realms/\nauth.server.admin.allowed.audience=mosip-toolkit-client,mosip-toolkit-android-client\nauth.allowed.urls=https://${mosip.compliance.host}/\nmosip.iam.certs_endpoint=${keycloak.external.url}/auth/realms/mosip/protocol/openid-connect/certs\n\nauth.server.validate.url=${mosip.api.internal.url}/v1/authmanager/authorize/admin/validateToken\n\n## below are required for kernel-authcodeflowproxy-api dependency\nmosip.iam.module.login_flow.name=authorization_code\nmosip.iam.module.login_flow.scope=email\nmosip.iam.module.login_flow.response_type=code\nmosip.iam.module.clientid=mosip-toolkit-client\nmosip.iam.module.clientsecret=${mosip.toolkit.client.secret}\nmosip.iam.module.redirecturi=${mosip.api.internal.url}/v1/toolkit/login-redirect/\nmosip.iam.module.admin_realm_id=mosip\nmosip.iam.base-url=${iam.base.url}\nmosip.iam.authorization_endpoint=${keycloak.external.url}/auth/realms/mosip/protocol/openid-connect/auth\nmosip.iam.token_endpoint=${iam.base.url}/auth/realms/mosip/protocol/openid-connect/token\nauth.server.admin.validate.url=${mosip.api.internal.url}/v1/authmanager/authorize/admin/validateToken\n\n## below are required for kernel CBEFF util dependency\nmosip.kernel.xsdstorage-uri=${spring.cloud.config.uri}/${spring.application.name}/${spring.profiles.active}/${spring.cloud.config.label}/\nmosip.kernel.xsdfile=mosip-cbeff.xsd\n\n## Minio\nobject.store.s3.use.account.as.bucketname=true\n\n## To store documents\nmosip.kernel.objectstore.account-name=compliance-toolkit\n\n# Object store\nobject.store.s3.accesskey=${s3.accesskey}\nobject.store.s3.secretkey=${s3.secretkey}\n## For Minio: object.store.s3.url=http://minio.minio:9000\n## For AWS: object.store.s3.url=s3.${s3.region}.amazonaws.com\nobject.store.s3.url=http://minio.minio:9000\nobject.store.s3.region=${s3.region}\nobject.store.s3.readlimit=10000000\n\n## Trust Validation of SBI\nmosip.service.auth.appid=regproc\nmosip.service.auth.clientid=mosip-pms-client\nmosip.service.auth.secretkey=${mosip.pms.client.secret}\n#mosip.service.validation.url=${mosip.api.internal.url}/v1/partnermanager/deviceprovidermanagement/validate\nmosip.service.authmanager.url=${mosip.api.internal.url}/v1/authmanager/authenticate/clientidsecretkey\nmosip.service.keymanager.verifyCertificateTrust.url=${mosip.api.internal.url}/v1/keymanager/verifyCertificateTrust\n\nmosip.toolkit.sbi.ports=4501,4502,4503,4504,4505,4506,4507,4508,4509,4510\nmosip.toolkit.sbi.timeout=10000\nmosip.toolkit.sbi.keyrotation.iterations=2\n\n## To decrypt biometrics in SBI Auth\nmosip.service.keymanager.decrypt.appid=COMPLIANCE_TOOLKIT\nmosip.service.keymanager.decrypt.refid=COMP-FIR\nmosip.service.keymanager.decrypt.url=${mosip.api.internal.url}/v1/keymanager/decrypt\nmosip.service.keymanager.encryption.key.url=${mosip.api.internal.url}/v1/keymanager/getCertificate?applicationId=COMPLIANCE_TOOLKIT&referenceId=COMP-FIR\n\n# Threshold value against which the quality check score value will be evaluated for Fingerprint biometric type.\nmosip.toolkit.sdk.finger.qualitycheck.threshold.value=60\n# Threshold value against which the quality check score value will be evaluated for Face biometric type.\nmosip.toolkit.sdk.face.qualitycheck.threshold.value=30\n# Threshold value against which the quality check score value will be evaluated for Iris biometric type.\nmosip.toolkit.sdk.iris.qualitycheck.threshold.value=60\n\n# TestRuns more than this limit will be moved to archives\nmosip.toolkit.testrun.archive.offset=5\n\nmosip.kernel.virus-scanner.host=clamav.clamav\nmosip.kernel.virus-scanner.port=3310\n\n#Enable or disable the virus scanner(true/false)\nmosip.toolkit.document.scan=true\n\n##the id for API\nmosip.toolkit.api.id.projects.get=mosip.toolkit.projects.retrieve\nmosip.toolkit.api.id.sbi.project.get=mosip.toolkit.sbi.project.retrieve\nmosip.toolkit.api.id.collections.get=mosip.toolkit.collections.retrieve\nmosip.toolkit.api.id.collection.get=mosip.toolkit.collection.retrieve\nmosip.toolkit.api.id.sdk.project.get=mosip.toolkit.sdk.project.retrieve\nmosip.toolkit.api.id.sdk.project.put=mosip.toolkit.sdk.project.update\nmosip.toolkit.api.id.sdk.project.post=mosip.toolkit.sdk.project.add\nmosip.toolkit.api.id.collection.post=mosip.toolkit.collection.add\nmosip.toolkit.api.id.sbi.project.post=mosip.toolkit.sbi.project.add\nmosip.toolkit.api.id.testcase.project.get=mosip.toolkit.testcase.project.retrieve\nmosip.toolkit.api.id.validations.post=mosip.toolkit.api.id.validations\nmosip.toolkit.api.id.generate.sdk.request.post=mosip.toolkit.api.id.generate.sdk.request\nmosip.toolkit.api.id.collection.testcases.get=mosip.toolkit.collection.testcases.retrieve\nmosip.toolkit.api.id.collection.testcase.post=mosip.toolkit.collection.testcase.add\nmosip.toolkit.api.id.testrun.post=mosip.toolkit.testrun.add\nmosip.toolkit.api.id.testrun.put=mosip.toolkit.testrun.update\nmosip.toolkit.api.id.testrun.details.post=mosip.toolkit.testrun.details.add\nmosip.toolkit.api.id.testrun.details.get=mosip.toolkit.testrun.details.retrieve\nmosip.toolkit.api.id.testcase.get=mosip.toolkit.testcase.retrieve\nmosip.toolkit.api.id.testrun.history.get=mosip.toolkit.testrun.history.retrieve\nmosip.toolkit.api.id.testrun.status.get=mosip.toolkit.testrun.status.retrieve\nmosip.toolkit.api.id.sdk.generate.request=mosip.toolkit.api.id.sdk.generate.request\nmosip.toolkit.api.id.biometric.testdata.get=mosip.toolkit.biometric.testdata.retrieve\nmosip.toolkit.api.id.biometric.testdata.post=mosip.toolkit.biometric.testdata.add\nmosip.toolkit.api.id.biometric.testdata.filenames.get=mosip.toolkit.biometric.testdata.filenames.retrieve\nmosip.toolkit.api.id.resource.file.post=mosip.toolkit.resource.file.add\n\n#Roles for validation\nmosip.toolkit.roles.uploadResource=GLOBAL_ADMIN\nmosip.toolkit.roles.saveTestCases=GLOBAL_ADMIN\n\n## Determines file upload type allowed in UI\nmosip.toolkit.documentupload.allowed.file.type = application/zip\n# Determines the file name length(with extension) allowed in UI\nmosip.toolkit.documentupload.allowed.file.nameLength = 50\n\n# Determines maximum size of file allowed uploaded 20 MB\nmosip.toolkit.documentupload.allowed.file.size = 20000000\n\nmosip.toolkit.max.allowed.gallery.files=5\n\n#Swagger\nopenapi.info.title=Compliance-Toolkit\nopenapi.info.description=Compliance Toolkit Services\nopenapi.info.version=1.0\nopenapi.info.license.name=Mosip\nopenapi.info.license.url=https://docs.mosip.io/platform/license\nmosipbox.public.url=${mosip.api.internal.url}\nopenapi.service.servers[0].url=${mosipbox.public.url}${server.servlet.context-path}\nopenapi.service.servers[0].description=Compliance Toolkit Services\nopenapi.group.name=${openapi.info.title}\nopenapi.group.paths[0]=/**\nspringdoc.swagger-ui.disable-swagger-default-url=true\nspringdoc.swagger-ui.tagsSorter=alpha\nspringdoc.swagger-ui.operationsSorter=alpha\n\n#SBI BiometricsQualityCheckValidator\nmosip.toolkit.sbi.qualitycheck.finger.sdk.urls=[{\"name\": \"Mock SDK\",\"url\": \"http://localhost:9099/biosdk-service\",\"healthUrl\": \"http://localhost:9099/biosdk-service/actuator/health\", \"includeInResults\":false},{\"name\": \"Mock SDK ${mosip.api.internal.host} Env\",\"url\": \"${mosip.api.internal.url}/biosdk-service\",\"healthUrl\": \"${mosip.api.internal.url}/biosdk-service/actuator/health\", \"includeInResults\":true},{\"name\": \"Mock SDK ${mosip.api.internal.host} Env\",\"url\": \"${mosip.api.internal.url}/biosdk-service\",\"healthUrl\": \"${mosip.api.internal.url}/biosdk-service/actuator/health\", \"includeInResults\":true}]\nmosip.toolkit.sbi.qualitycheck.face.sdk.urls=[{\"name\": \"Mock SDK ${mosip.api.internal.host} Env\",\"url\": \"${mosip.api.internal.url}/biosdk-service\",\"healthUrl\": \"${mosip.api.internal.url}/biosdk-service/actuator/health\", \"includeInResults\":false}]\nmosip.toolkit.sbi.qualitycheck.iris.sdk.urls=[{\"name\": \"Mock SDK ${mosip.api.internal.host} Env\",\"url\": \"${mosip.api.internal.url}/biosdk-service\",\"healthUrl\": \"${mosip.api.internal.url}/biosdk-service/actuator/health\", \"includeInResults\":true}]\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/mosip-config/blob/master/credential-request-default.properties", + "title": "credential-request-default.properties", + "repo": "mosip/mosip-config", + "file_path": "credential-request-default.properties", + "language": "properties", + "content": "#IDRepo credential request generator authentication detalis\nmosip.idrepo.credential-req-generator.auth.client-id=mosip-crereq-client\nmosip.idrepo.credential-req-generator.auth.secret-key=${mosip.crereq.client.secret}\nmosip.idrepo.credential-req-generator.auth.app-id=crereq\n\n#------------------------- Kernel Auth Adapter self token generator properties ----------------------------#\nmosip.iam.adapter.clientid.credential-request=${mosip.idrepo.credential-req-generator.auth.client-id}\nmosip.iam.adapter.clientsecret.credential-request=${mosip.idrepo.credential-req-generator.auth.secret-key}\nmosip.iam.adapter.appid.credential-request=${mosip.idrepo.credential-req-generator.auth.app-id}\n\nmosip.auth.filter_disable=false\nhibernate.hbm2ddl.auto=none\nhibernate.temp.use_jdbc_metadata_defaults=false\nspring.jpa.properties.hibernate.temp.use_jdbc_metadata_defaults=false\nhibernate.jdbc.lob.non_contextual_creation = true\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/mosip-config/blob/master/credential-service-default.properties", + "title": "credential-service-default.properties", + "repo": "mosip/mosip-config", + "file_path": "credential-service-default.properties", + "language": "properties", + "content": "# Follow properites have their values assigned via 'overrides' environment variables of config server docker.\n# DO NOT define these in any of the property files. They must be passed as env variables. Refer to config-server\n# helm chart:\n# mosip.creser.client.secret\n#\n\n# IDRepo credential service authentication details\nmosip.idrepo.credential.auth.client-id=mosip-creser-client\nmosip.idrepo.credential.auth.secret-key=${mosip.creser.client.secret}\nmosip.idrepo.credential.auth.app-id=creser\n\n## Kernel Auth Adapter self token generator properties\nmosip.iam.adapter.clientid.credential-service=${mosip.idrepo.credential.auth.client-id}\nmosip.iam.adapter.clientsecret.credential-service=${mosip.idrepo.credential.auth.secret-key}\nmosip.iam.adapter.appid.credential-service=${mosip.idrepo.credential.auth.app-id}\n\nmosip.auth.filter_disable=false\n\nmosip.credential.service.vercred.context.url.map={\"https://www.w3.org/ns/odrl.jsonld\" : \"odrl.jsonld\", \"https://www.w3.org/2018/credentials/v1\" : \"cred-v1.jsonld\", \"https://${mosip.api.public.host}/.well-known/mosip-context.json\" : \"mosip-context.json\"}\nmosip.credential.service.vercred.context.uri=vccontext.jsonld\nmosip.credential.service.vercred.id.url=${mosip.idrepo.credential.service.url}/credentials/\nmosip.credential.service.vercred.issuer.url=https://${mosip.api.public.host}/.well-known/controller.json\nmosip.credential.service.vercred.types=VerifiableCredential,MOSIPVerifiableCredential\nmosip.credential.service.vercred.proof.purpose=assertionMethod\nmosip.credential.service.vercred.proof.type=RsaSignature2018\nmosip.credential.service.vercred.proof.verificationmethod=https://${mosip.api.public.host}/.well-known/public-key.json\n\nKEYMANAGER_VERCRED_SIGN=${mosip.kernel.keymanager.url}/v1/keymanager/jwsSign\ncredentialType.formatter.VERCRED=VerCredProvider\ncredentialType.formatter.PDFCARD=VerCredProvider\nGENERATE_VID=${mosip.idrepo.vid.url}/idrepository/v1/vid\nRETRIEVE_VID=${mosip.idrepo.vid.url}/idrepository/v1/vid/uin\ncredential.service.default.vid.type=PERPETUAL\n\nmosip.mask.function.identityAttributes=convertToMaskData\nmosip.mask.function.date=convertToMaskDate\nmosip.format.function.address=formatAddress\nmosip.format.function.name=formatName\nmosip.format.function.dateTimeFormat=convertDateFormat\n\nmosip.mask.function.identityAttributes.default=convertToMaskData\nmosip.mask.function.identityAttributes.phone=maskPhone\nmosip.mask.function.identityAttributes.email=maskEmail\nmosip.credential.photo.attribute.names=photo,face\nmosip.credential.name.attribute.names=fullName,name\nmosip.credential.address.attribute.names=fullAddress,address" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/mosip-config/blob/master/data-share-default.properties", + "title": "data-share-default.properties", + "repo": "mosip/mosip-config", + "file_path": "data-share-default.properties", + "language": "properties", + "content": "# Follow properites have their values assigned via 'overrides' environment variables of config server docker.\n# DO NOT define these in any of the property files. They must be passed as env variables. Refer to config-server\n# helm chart:\n# keycloak.external.host\n# keycloak.external.url\n# keycloak.internal.host\n# keycloak.internal.url\n# mosip.datsha.client.secret\n# s3.accesskey \n# s3.region\n# s3.secretkey\n\nmosip.data.share.service.id=mosip.data.share\nmosip.data.share.service.version=1.0\n\nCRYPTOMANAGER_ENCRYPT=${mosip.kernel.keymanager.url}/v1/keymanager/encrypt\nKEYMANAGER_JWTSIGN=${mosip.kernel.keymanager.url}/v1/keymanager/jwtSign\nPARTNER_POLICY=${mosip.pms.policymanager.url}/v1/policymanager/policies/{policyId}/partner/{partnerId}\nKEYBASEDTOKENAPI=${mosip.kernel.authmanager.url}/v1/authmanager/authenticate/clientidsecretkey\n\n\ndata.share.application.id=PARTNER\nmosip.data.share.datetime.pattern=yyyy-MM-dd'T'HH:mm:ss.SSS'Z'\n!-- if value is true then please set servlet path to / --!\nmosip.data.share.urlshortner=false\ndata.share.token.request.appid=datsha\ndata.share.token.request.clientId=mosip-datsha-client\ndata.share.token.request.secretKey=${mosip.datsha.client.secret}\ndata.share.token.request.password=\ndata.share.token.request.username=\ndata.share.token.request.version=1.0\ndata.share.token.request.id=io.mosip.datashare\ndata.share.token.request.issuerUrl=${keycloak.internal.url}/auth/realms/mosip\nspring.servlet.multipart.max-file-size=5MB\nmosip.data.share.protocol=http\nmosip.data.share.includeCertificateHash=false\nmosip.data.share.includeCertificate=false\nmosip.data.share.includePayload=false\nmosip.data.share.digest.algorithm=SHA256\nmosip.data.share.prependThumbprint=true\nmosip.role.durian.postcreatepolicyidsubscriberid=CREATE_SHARE\nauth.server.admin.allowed.audience=mosip-partner-client,mosip-creser-client,mpartner-default-auth,mosip-regproc-client,mosip-reg-client,mosip-syncdata-client,mpartner-default-print,mosip-resident-client,opencrvs-partner,mpartner-default-digitalcard,mosip-admin-client,mosip-pms-client,mosip-abis-client\n\nmosip.auth.filter_disable=false\n\n# IAM adapter\nmosip.iam.adapter.appid=datsha\nmosip.iam.adapter.clientid=mosip-datsha-client\nmosip.iam.adapter.clientsecret=${mosip.datsha.client.secret}\nmosip.iam.adapter.issuerURL=${keycloak.internal.url}/auth/realms/mosip\nmosip.authmanager.client-token-endpoint=${mosip.kernel.authmanager.url}/v1/authmanager/authenticate/clientidsecretkey\n# in minutes\nmosip.iam.adapter.validate-expiry-check-rate=1440\n# in minutes\nmosip.iam.adapter.renewal-before-expiry-interval=1440\n#this should be false if you don?t use this restTemplate true if you do\nmosip.iam.adapter.self-token-renewal-enable=true\n\n# Object store\nobject.store.s3.accesskey=${s3.accesskey}\nobject.store.s3.secretkey=${s3.secretkey}\n## For Minio: object.store.s3.url=http://minio.minio:9000\n## For AWS: object.store.s3.url=s3.${s3.region}.amazonaws.com\nobject.store.s3.url=http://minio.minio:9000\nobject.store.s3.region=${s3.region}\nobject.store.s3.readlimit=10000000\nobject.store.max.connection=500\n# Max connection allowed per route\nmosip.data.share.restTemplate.max-connection-per-route=50\n# Total number of connection allowed\nmosip.data.share.restTemplate.total-max-connections=200\n\n#specific to Compliance Toolkit, to ABIS DataShare testcases\nauth.handle.ctk.flow=true\nmosip.api.internal.toolkit.url=https://${mosip.api.internal.host}/v1/toolkit\nmosip.compliance.toolkit.saveDataShareToken.url=${mosip.api.internal.toolkit.url}/saveDataShareToken\nmosip.compliance.toolkit.invalidateDataShareToken.url=${mosip.api.internal.toolkit.url}/invalidateDataShareToken\nmosip.compliance.toolkit.invalidateDataShareToken.testCaseId=ABIS3031\nlogging.level.org.springframework.web=INFO\n#cache schedular\nmosip.data.share.policy-cache.expiry-time-millisec=7200000\n\n# Self token rest template connection properties\nmosip.kernel.http.selftoken.restTemplate.max-connection-per-route=20\nmosip.kernel.http.selftoken.restTemplate.total-max-connections=100" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/mosip-config/blob/master/digital-card-default.properties", + "title": "digital-card-default.properties", + "repo": "mosip/mosip-config", + "file_path": "digital-card-default.properties", + "language": "properties", + "content": "## Database properties\n# Database hostname below is assuming postgres is running inside cluster in 'postgres' namespace\n# If database is external to production, provide the DNS or ip of the host and port\nmosip.digitalcard.database.hostname=${mosip.database.hostname.override:postgres-postgresql.postgres}\nmosip.digitalcard.database.port=${mosip.database.port.override:5432}\n\n# Websub\n## webusb properties that used to subscribe and publish event based on specified topic\nmosip.digitalcard.websub.secret=test\nmosip.digitalcard.credential.request.partner.id=mpartner-default-digitalcard\nmosip.digitalcard.websub.publish.topic=CREDENTIAL_STATUS_UPDATE\nmosip.digitalcard.subscription-delay-millisecs=120000\nmosip.digitalcard.resubscription-delay-millisecs=1000000\nmosip.digitalcard.generate.identity.create.websub.topic=IDENTITY_CREATED\nmosip.digitalcard.generate.identity.update.websub.topic=IDENTITY_UPDATED\nmosip.digitalcard.partner.id=mpartner-default-digitalcard\nmosip.digitalcard.generate.credential.websub.topic=${mosip.digitalcard.partner.id}/CREDENTIAL_ISSUED\nmosip.digitalcard.generate.identity.create.callbackurl=${mosipbox.public.url}/v1/digitalcard/idCreateEventHandle/callback/notifyStatus\nmosip.digitalcard.generate.identity.update.callbackurl=${mosipbox.public.url}/v1/digitalcard/idUpdateEventHandle/callback/notifyStatus\nmosip.digitalcard.generate.credential.callbackurl=${mosipbox.public.url}/v1/digitalcard/credential/callback/notifyStatus\n\n# Based on credentialType we are sending credential request\nmosip.digitalcard.credential.type=PDFCard\n\n#Token generator properties Digital Card Service\ndigitalcard.token.request.appid=admin\ndigitalcard.token.request.clientId=mpartner-default-digitalcard\ndigitalcard.token.request.secretKey=${mpartner.default.digitalcard.secret}\ndigitalcard.token.request.version=1.0\ndigitalcard.token.request.id=io.mosip.digitalcard\ndigitalcard.token.request.issuerUrl=${mosip.keycloak.issuerUrl}\nKEYBASEDTOKENAPI=${mosip.kernel.authmanager.url}/v1/authmanager/authenticate/clientidsecretkey\nmosip.digitalcard.service.datetime.pattern=yyyy-MM-dd'T'HH:mm:ss.SSS'Z'\n\n#----------------------- DB--------------------------------------------------\njavax.persistence.jdbc.driver=org.postgresql.Driver\njavax.persistence.jdbc.url=jdbc:postgresql://${mosip.digitalcard.database.hostname}:${mosip.digitalcard.database.port}/mosip_digitalcard\njavax.persistence.jdbc.user=digitalcarduser\njavax.persistence.jdbc.password=${db.dbuser.password}\nhibernate.dialect=org.hibernate.dialect.PostgreSQLDialect\nhibernate.jdbc.lob.non_contextual_creation=true\nhibernate.hbm2ddl.auto=none\t\nhibernate.show_sql=false\nhibernate.format_sql=false\t\nhibernate.connection.charSet=utf8\nhibernate.cache.use_second_level_cache=false\nhibernate.cache.use_query_cache=false\nhibernate.cache.use_structured_entries=false\nhibernate.generate_statistics=false\n\n\n#----------------------- CBEFF Util--------------------------------------------------\n# Cbeff XSD file name in config server\nmosip.kernel.xsdfile=mosip-cbeff.xsd\nmosip.digitalcard.demographic.identity=identity\nmosip.digitalcard.identityjson=identity-mapping.json\n\n#----------------------- Crypto property for encryption and decryption--------------------------------------------------\nmosip.digitalcard.crypto.partner.id=mpartner-default-digitalcard\nmosip.digitalcard.crypto.application.id=DIGITAL_CARD\nCRYPTOMANAGER_ENCRYPT=${mosip.kernel.keymanager.url}/v1/keymanager/encrypt\nCRYPTOMANAGER_DECRYPT=${mosip.kernel.keymanager.url}/v1/keymanager/decrypt\n\n\n#----------------------- dataShare property to create dataShareUrl--------------------------------------------------\nmosip.digitalcard.datashare.partner.id=mpartner-default-digitalcard\nmosip.digitalcard.datashare.policy.id=mpolicy-default-digitalcard\nCREATEDATASHARE=${mosip.datashare.url}/v1/datashare/create\n\n#header length to be removed from iso image to get actual image\nmosip.digitalcard.uin.header.length=75\n\n#Rectangle coordinates for pfd signataured data\nmosip.digitalcard.service.uincard.lowerleftx=73\nmosip.digitalcard.service.uincard.lowerlefty=100\nmosip.digitalcard.service.uincard.upperrightx=300\nmosip.digitalcard.service.uincard.upperrighty=300\nmosip.digitalcard.service.uincard.signature.reason=\"signing\"\n\n#Digital card template language and templateType code that used to generate pdf card.\nmosip.template-language=eng\nmosip.digitalcard.templateTypeCode=RPR_UIN_CARD_TEMPLATE\nTEMPLATES=${mosip.kernel.masterdata.url}/v1/masterdata/templates\n\n# Credential api that used to created credential and get the credential details\nCREDENTIAL_REQ_URL=${mosip.idrepo.credrequest.generator.url}/v1/credentialrequest/requestgenerator\nCREDENTIAL_STATUS_URL=${mosip.idrepo.credrequest.generator.url}/v1/credentialrequest/get\nIDREPOGETIDBYUIN=${mosip.idrepo.identity.url}/idrepository/v1/identity/idvid\n\n# PDFSIGN to signed the pdf card\nPDFSIGN=${mosip.kernel.keymanager.url}/v1/keymanager/pdf/sign\n\n#verifiable credential property that used to enable vc check.\nmosip.digitalcard.verify.credentials.flag=true\n\nmosip.digitalcard.credentials.request.initiate.flag=true\nlogging.level.io.mosip=INFO\n\n# websub authentication\nmosip.iam.adapter.clientid=mpartner-default-digitalcard\nmosip.iam.adapter.clientsecret=${mpartner.default.digitalcard.secret}\nmosip.iam.adapter.appid=admin\nmosip.iam.adapter.issuerURL=${keycloak.internal.url}/auth/realms/mosip\nmosip.authmanager.base-url=${mosip.kernel.authmanager.url}/v1/authmanager\nmosip.authmanager.client-token-endpoint=${mosip.authmanager.base-url}/authenticate/clientidsecretkey\n# in minutes\n\nmosip.iam.adapter.validate-expiry-check-rate=1440\n\n# in minutes\nmosip.iam.adapter.renewal-before-expiry-interval=1440\n\n#this should be false if you don?t use this restTemplate true if you do\n\nmosip.iam.adapter.self-token-renewal-enable=true\nmosip.auth.filter_disable=false\nauth.server.admin.allowed.audience=mosip-admin-client,mosip-resident-client" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/mosip-config/blob/master/digitalcard-template.properties", + "title": "digitalcard-template.properties", + "repo": "mosip/mosip-config", + "file_path": "digitalcard-template.properties", + "language": "properties", + "content": "RPR_UIN_CARD_TEMPLATE=PCFET0NUWVBFIGh0bWw+IDxodG1sPiA8aGVhZD4gPG1ldGEgY2hhcnNldD0idXRmLTgiPiA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEiPiA8dGl0bGU+VUlOIENhcmQ8L3RpdGxlPiA8c3R5bGU+IC5tYWluLXRhYmxlIHsgbWFyZ2luLWxlZnQ6IDYwcHg7OyB3aWR0aDogNjAwcHg7IGhlaWdodDogMzUwcHg7IGJvcmRlcjogMXB4IHNvbGlkIGJsYWNrOyB9IC5jaXIgeyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IGJvcmRlci1yYWRpdXM6IDYwcHg7IGJveC1zaGFkb3c6IDBweCAwcHggMnB4ICMwMDAwMDA7IHBhZGRpbmc6IDAuNWVtIDAuNmVtOyB9IC5uYW1lLWhlYWQtY29sb3IgeyBjb2xvcjogYmxhY2s7IH0gLmhlYWQtdGl0bGUgeyBtYXJnaW4tbGVmdDogLTg1cHg7IH0gLmJhci1jb2RlLXBhZGRpbmcgeyBtYXJnaW4tdG9wOiAyMHB4OyBtYXJnaW4tbGVmdDogMjBweDsgfSAudG9wLWJ1ZmZlciB7IG1hcmdpbi1sZWZ0OjEwcHg7IH0gPC9zdHlsZT4gPC9oZWFkPiA8Ym9keT4gPHRhYmxlIGNsYXNzPSJtYWluLXRhYmxlIj4gPHRyPiA8dGQ+Jm5ic3A7IDxkaXYgY2xhc3M9ImNpciI+PGZvbnQgc2l6ZT0iMSI+PGltZyBzcmMgPSAiaHR0cHM6Ly9tb3NpcC5pby9pbWFnZXMvbW9zaXBuLWxvZ28ucG5nIiBzdHlsZT0id2lkdGg6IDUwcHg7IGhlaWdodDogMzBweDsiPjwvZm9udD48L2Rpdj4gPC90ZD4gPHRkPjxsYWJlbCBjbGFzcz0ibmFtZS1oZWFkLWNvbG9yIj48Zm9udCBzaXplPSI1ImNsYXNzPSIgaGVhZC10aXRsZSI+ICZuYnNwOyZuYnNwOyBLaW5nZG9tIG9mIE15Q291bnRyeSAmbmJzcDsmbmJzcDsmbmJzcDsgPC9mb250PiA8L2xhYmVsPjwvdGQ+IDx0ZCByb3dzcGFuPSI0Ij4gPGRpdj4gPGRpdiBzdHlsZT0iYm9yZGVyOiBzb2xpZCBibGFjayAxcHg7IGhlaWdodDogMTUwcHg7IHdpZHRoOiAxMjBweDsiPiAjaWYoJGlzUGhvdG9TZXQpPGltZyBzcmMgPSAkIUFwcGxpY2FudFBob3RvIHN0eWxlPSJ3aWR0aDogMTIwcHg7IGhlaWdodDogMTUwcHgiPiAjZW5kICA8L2Rpdj4gPC9kaXY+IDwvdGQ+IDwvdHI+IDx0cj4gPHRkIHJvd3NwYW49IjEiPiA8ZGl2IGNsYXNzPSJibG9jayB0b3AtYnVmZmVyIj4gPGxhYmVsIGNsYXNzPSJuYW1lLWhlYWQtY29sb3IiPjxiPlVJTiZuYnNwOzombmJzcDs8L2I+PC9sYWJlbD4gPHNwYW4gY2xhc3M9Im5hbWUtY29sb3IiPiAkIVVJTiA8L3NwYW4+IDwvZGl2PiA8L3RkPiA8L3RyPiA8dHI+IDx0ZCByb3dzcGFuPSIxIj4gPGRpdiBjbGFzcz0iYmxvY2sgdG9wLWJ1ZmZlciI+IDxsYWJlbCBjbGFzcz0ibmFtZS1oZWFkLWNvbG9yIj48Yj5OYW1lJm5ic3A7OiZuYnNwOzwvYj48L2xhYmVsPiA8c3BhbiBjbGFzcz0ibmFtZS1jb2xvciI+ICQhZnVsbE5hbWVfZW5nPC9zcGFuPiA8L2Rpdj4gPC90ZD4gPC90cj4gPHRyPiA8dGQgcm93c3Bhbj0iMSI+IDxkaXYgY2xhc3M9ImJsb2NrIHRvcC1idWZmZXIiPiA8bGFiZWwgY2xhc3M9Im5hbWUtaGVhZC1jb2xvciI+PGI+2KfYs9mFJm5ic3A7OiZuYnNwOzwvYj48L2xhYmVsPiA8c3Bhbj4kIWZ1bGxOYW1lX2FyYTwvc3Bhbj4gPC9kaXY+IDwvdGQ+IDwvdHI+IDx0cj4gPHRkIHJvd3NwYW49IjEiPiA8ZGl2IGNsYXNzPSJibG9jayB0b3AtYnVmZmVyIj4gPGxhYmVsIGNsYXNzPSJuYW1lLWhlYWQtY29sb3IiPjxiPkRPQi/Yqtin2LHZitiuJm5ic3A7OiZuYnNwOzwvYj48L2xhYmVsPiA8c3Bhbj4kIWRhdGVPZkJpcnRoPC9zcGFuPiA8L2Rpdj4gPC90ZD4gPC90cj4gPHRyPiA8dGQgY29sc3Bhbj0iMiI+IDxkaXYgY2xhc3M9ImJsb2NrIHRvcC1idWZmZXIiPiA8bGFiZWwgY2xhc3M9Im5hbWUtaGVhZC1jb2xvciI+PGI+R2VuZGVyJm5ic3A7OiZuYnNwOzwvYj48L2xhYmVsPiA8c3Bhbj4kIWdlbmRlcl9lbmc8L3NwYW4+ICZuYnNwOyZuYnNwOyA8bGFiZWwgY2xhc3M9Im5hbWUtaGVhZC1jb2xvciI+PGI+2KzZhtizJm5ic3A7OiZuYnNwOzwvYj48L2xhYmVsPiA8c3Bhbj4kIWdlbmRlcl9hcmE8L3NwYW4+IDwvZGl2PiA8L3RkPiA8L3RyPiA8dHI+IDx0ZCBjb2xzcGFuPSIzIj4gPGRpdiBjbGFzcz0icm93IiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiAwcHg7IG1hcmdpbi1sZWZ0OiAtMTBweDsiPiA8ZGl2IGNsYXNzPSJjb2wtbWQtMiB0b3AtYnVmZmVyIj4gPGRpdiBjbGFzcz0iYmxvY2sgdG9wLWJ1ZmZlciI+IDx0YWJsZT4gPHRyPiA8dGQ+PGxhYmVsIGNsYXNzPSJuYW1lLWhlYWQtY29sb3IiPjxiPkFkZHJlc3MmbmJzcDs6Jm5ic3A7PC9iPjwvbGFiZWw+IDwvdGQ+IDx0ZD48c3Bhbj4kIWFkZHJlc3NMaW5lMV9lbmcsICQhYWRkcmVzc0xpbmUyX2VuZywgJCFhZGRyZXNzTGluZTNfZW5nLCAkIXJlZ2lvbl9lbmcsICQhcHJvdmluY2VfZW5nLCAkIWNpdHlfZW5nLCAkIXBvc3RhbENvZGUgPC9zcGFuPjwvdGQ+IDwvdHI+IDx0cj4gPHRkPjxsYWJlbCBjbGFzcz0ibmFtZS1oZWFkLWNvbG9yIj48Yj7YudmG2YjYp9mGJm5ic3A7OiZuYnNwOzwvYj48L2xhYmVsPiA8L3RkPiA8dGQ+PHNwYW4+JCFhZGRyZXNzTGluZTFfYXJhLCAkIWFkZHJlc3NMaW5lMl9hcmEsICQhYWRkcmVzc0xpbmUzX2FyYSwgJCFyZWdpb25fYXJhLCAkIXByb3ZpbmNlX2FyYSwgJCFjaXR5X2FyYSwgJCFwb3N0YWxDb2RlIDwvc3Bhbj4gPC90ZD4gPC90cj4gPC90YWJsZT4gPC9kaXY+IDwvZGl2PiA8L2Rpdj4gPC90ZD4gPC90cj4gPC90YWJsZT4gPGRpdj4mbmJzcDs8L2Rpdj4gPHRhYmxlIGNsYXNzPSJtYWluLXRhYmxlIiBzdHlsZT0iaGVpZ2h0OiAzMDBweCI+IDx0cj4gPHRkPiA8ZGl2IHN0eWxlPSJtYXJnaW4tbGVmdDogMTBweDsgbWFyZ2luLXJpZ2h0OiAxMHB4OyBib3JkZXI6IHNvbGlkIGJsYWNrIDFweDsgaGVpZ2h0OiAyNTBweDsgd2lkdGg6IDI1MHB4OyI+IDxkaXYgY2xhc3M9ImNvbC1tZC02Ij4gPGRpdiBjbGFzcz0iYmFyLWNvZGUtcGFkZGluZyI+PC9kaXY+IDxpbWcgc3JjPSQhUXJDb2RlIHN0eWxlPSJ3aWR0aDogMjUwcHg7IGhlaWdodDogMjUwcHg7IG1hcmdpbi10b3A6IC0yMHB4Ij4gPC9kaXY+IDwvZGl2PiA8L3RkPiA8dGQ+IDxkaXYgY2xhc3M9Im5hbWUtaGVhZC1jb2xvciBjb2wtbWQtNiI+IDxicj4gRm9yIGFueSBpc3N1ZXMgcGxlYXNlIGNvbnRhY3QgdXMgYXQ8YnI+IDxicj4gUmVnaXN0cmF0aW9uIFByb2NjZXNzb3IsSGFuZ2luZyBHYXJkZW5zLEdsb2JhbCBWaWxsYWdlIFRlY2ggUGFyaywgTXlzb3JlIFJkLFJWQ0UsQmVuZ2FsdXJ1LCBLYXJuYXRha2EgNTYwMDU5PGJyPiA8YnI+INmE2KPZitipINmF2LTYp9mD2YQg2YrYsdis2Ykg2KfZhNin2KrYtdin2YQg2KjZhtinINi52YTZiSA8YnI+2KfZhNiq2LPYrNmK2YQg2KfZhNmF2LnYp9mE2KzYjCDYp9mE2K3Yr9in2KbZgiDYp9mE2YXYudmE2YLYqSDYjCDYp9mE2YLYsdmK2Kkg2KfZhNi52KfZhNmF2YrYqSBUZWNoIFBhcmssIE15c29yZSBSZCxSVkNFIDU2MDA1OSDYqNmG2LrYp9mE2YjYsdmI2Iwg2YPYp9ix2YbYp9iq2KfZg9inIDxicj4gPGJyPiA8L2Rpdj4gPC90ZD4gPC90cj4gPC90YWJsZT4gPC9ib2R5PiA8L2h0bWw+\nvid-card-type=PGh0bWw+PGhlYWQ+CjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyIgY2hhcnNldD0id2luZG93cy0xMjUyIj4KPG1ldGEgbmFtZT0iR2VuZXJhdG9yIiBjb250ZW50PSJNaWNyb3NvZnQiIHdvcmQ9IiIgMTU9IiIgKGZpbHRlcmVkKT0iIj4KPC9oZWFkPjxib2R5IGxhbmc9IkVOLVVTIj4KCjxkaXYgc3R5bGU9IndpZHRoOjEwMCU7aGVpZ2h0OjEwMHZoOyI+Cgk8dGFibGUgc3R5bGU9IndpZHRoOiAzMzlweDttYXJnaW46IDAgYXV0bztiYWNrZ3JvdW5kOiAjRkZGRkZGO2JvcmRlci1yYWRpdXM6IDEwcHg7b3BhY2l0eTogMTtib3JkZXI6MXB4IHNvbGlkICNFMkUyRTI7Ij4KPHRib2R5Pjx0cj4KI2lmKCRpc1Bob3RvU2V0KQo8dGQgc3R5bGU9IndpZHRoOjI1JTt2ZXJ0aWNhbC1hbGlnbjogdG9wO3BhZGRpbmc6NXB4OyI+PGltZyBzdHlsZT0idG9wOiA1MXB4O2xlZnQ6IDQ1cHg7d2lkdGg6IDgwcHg7aGVpZ2h0OiA5M3B4O29wYWNpdHk6IDE7Ym9yZGVyOjFweCBzb2xpZCAjRTJFMkUyO2JvcmRlci1yYWRpdXM6NXB4OyIgc3JjPSQhQXBwbGljYW50UGhvdG8+PC90ZD4KI2VuZAo8dGQgc3R5bGU9IndpZHRoOjY1JSI+CgkJPHRhYmxlIHN0eWxlPSJib3JkZXI6bm9uZTtib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO3dpZHRoOiAxMDAlOyI+CgkJICA8dGJvZHk+CiAgICAgICAgICAgIDx0cj4KCQkJPHRkIGNvbHNwYW49IjIiIHN0eWxlPSJwYWRkaW5nOjNweDsiPjxsYWJlbCBzdHlsZT0idGV4dC1hbGlnbjogbGVmdDtmb250OiBub3JtYWwgbm9ybWFsIG5vcm1hbCAxMXB4LzE0cHggSW50ZXI7bGV0dGVyLXNwYWNpbmc6IDBweDtjb2xvcjogIzY2NjY2NjtvcGFjaXR5OiAxO3BhZGRpbmc6IDNweDsiPkZ1bGwgTmFtZSA8L2xhYmVsPgogICAgICAgICAgICA8ZGl2IGNvbHNwYW49IjIiIHN0eWxlPSIvKiBmb250LXdlaWdodDogYm9sZDsgKi90ZXh0LWFsaWduOiBsZWZ0O2ZvbnQ6IG5vcm1hbCBub3JtYWwgNjAwIDEycHgvMTVweCBJbnRlcjtsZXR0ZXItc3BhY2luZzogMHB4O2NvbG9yOiAjMDAwMDAwO29wYWNpdHk6IDE7cGFkZGluZzowcHggM3B4OyB3aWR0aDoyMDBweDtvdmVyZmxvdy13cmFwOiBicmVhay13b3JkOyI+PHA+JGZ1bGxOYW1lX2VuZzwvcD48L2Rpdj48L3RkPgoJCSAgPC90cj4KCQkgIAoJCSAgPHRyPgoJCQk8dGQgc3R5bGU9InBhZGRpbmc6M3B4OyI+PGxhYmVsIHN0eWxlPSJ0ZXh0LWFsaWduOiBsZWZ0O2ZvbnQ6IG5vcm1hbCBub3JtYWwgbm9ybWFsIDExcHgvMTRweCBJbnRlcjtsZXR0ZXItc3BhY2luZzogMHB4O2NvbG9yOiAjNjY2NjY2O29wYWNpdHk6IDE7cGFkZGluZzogM3B4OyI+RG9CPC9sYWJlbD4KICAgICAgICAgICAgPGRpdiBjb2xzcGFuPSIyIiBzdHlsZT0idGV4dC1hbGlnbjogbGVmdDtmb250OiBub3JtYWwgbm9ybWFsIDYwMCAxMnB4LzE1cHggSW50ZXI7bGV0dGVyLXNwYWNpbmc6IDBweDtjb2xvcjogIzAwMDAwMDtvcGFjaXR5OiAxO3BhZGRpbmc6MHB4IDNweDsiPiRkb2I8L2Rpdj48L3RkPgoJCQk8dGQgc3R5bGU9InBhZGRpbmc6M3B4OyI+PGxhYmVsIHN0eWxlPSJ0ZXh0LWFsaWduOiBsZWZ0O2ZvbnQ6IG5vcm1hbCBub3JtYWwgbm9ybWFsIDExcHgvMTRweCBJbnRlcjtsZXR0ZXItc3BhY2luZzogMHB4O2NvbG9yOiAjNjY2NjY2O29wYWNpdHk6IDE7Ij5JRCBUeXBlPC9sYWJlbD48ZGl2IGNvbHNwYW49IjIiIHN0eWxlPSJ0ZXh0LWFsaWduOiBsZWZ0O2ZvbnQ6IG5vcm1hbCBub3JtYWwgNjAwIDEycHgvMTVweCBJbnRlcjtsZXR0ZXItc3BhY2luZzogMHB4O2NvbG9yOiAjMDAwMDAwO29wYWNpdHk6IDE7LyogcGFkZGluZzogMHB4IDBweDsgKi8iPlZJRDwvZGl2PjwvdGQ+CgkJICA8L3RyPgoJCQoJCTwvdGJvZHk+PC90YWJsZT4KCTwvdGQ+Cgk8dGQgc3R5bGU9IndpZHRoOiAxNSU7dmVydGljYWwtYWxpZ246dG9wOy8qIG1hcmdpbi10b3A6IDEwJTsgKi8iPjxpbWcgc3R5bGU9Ii8qIHRvcDogNDZweDsgKi8vKiBsZWZ0OiAzMjRweDsgKi93aWR0aDogMzVweDtoZWlnaHQ6IDI1cHg7YmFja2dyb3VuZDogdHJhbnNwYXJlbnQgdXJsKCdpbWcvbG9nbyAoMikucG5nJykgMCUgMCUgbm8tcmVwZWF0IHBhZGRpbmctYm94O29wYWNpdHk6IDE7IiBzcmM9Imh0dHBzOi8vbW9zaXAuaW8vaW1hZ2VzL21vc2lwbi1sb2dvLnBuZyIgYWx0PSJtb3NpcCI+PC90ZD4KPC90cj4KPHRyPgoJPHRkIGNvbHNwYW49IjYiPgoJCTx0YWJsZSBzdHlsZT0iYm9yZGVyOm5vbmU7Ym9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTt3aWR0aDogMTAwJTsiPgoJCQk8dGJvZHk+PHRyPgoJCQkKCgkJCQk8dGQgc3R5bGU9IndpZHRoOiA1MCU7cGFkZGluZzogNXB4OyI+CgkJCQk8ZGl2IGNvbHNwYW49IjEyIj4KCQkJCQkJPGRpdiBjb2xzcGFuPSI2IiA+CgkJCQk8bGFiZWwgc3R5bGU9InRleHQtYWxpZ246IGxlZnQ7Zm9udDogbm9ybWFsIG5vcm1hbCBub3JtYWwgMTFweC8xNHB4IEludGVyO2xldHRlci1zcGFjaW5nOiAwcHg7Y29sb3I6ICM2NjY2NjY7b3BhY2l0eTogMTsiPlZJRDwvbGFiZWw+PGRpdiBjb2xzcGFuPSIyIiBzdHlsZT0idGV4dC1hbGlnbjogbGVmdDtmb250OiBub3JtYWwgbm9ybWFsIDYwMCAxMnB4LzE1cHggSW50ZXI7bGV0dGVyLXNwYWNpbmc6IDBweDtjb2xvcjogIzAwMDAwMDtvcGFjaXR5OiAxOyI+JHZpZDwvZGl2PjwvZGl2PjwvdGQ+CgkJCQkKCQkJCTx0ZCBzdHlsZT0id2lkdGg6IDUwJTtwYWRkaW5nOiA1cHg7Ij48ZGl2IGNvbHNwYW49IjYiIHN0eWxlPSJwYWRkaW5nLWxlZnQ6IDMycHg7IiA+PGxhYmVsIHN0eWxlPSJ0ZXh0LWFsaWduOiBsZWZ0O2ZvbnQ6IG5vcm1hbCBub3JtYWwgbm9ybWFsIDExcHgvMTRweCBJbnRlcjtsZXR0ZXItc3BhY2luZzogMHB4O2NvbG9yOiAjNjY2NjY2O29wYWNpdHk6IDE7Ij5WSUQgVHlwZTwvbGFiZWw+PGRpdiBjb2xzcGFuPSIyIiBzdHlsZT0idGV4dC1hbGlnbjogbGVmdDtmb250OiBub3JtYWwgbm9ybWFsIDYwMCAxMnB4LzE1cHggSW50ZXI7bGV0dGVyLXNwYWNpbmc6IDBweDtjb2xvcjogIzAwMDAwMDtvcGFjaXR5OiAxOyI+JHZpZFR5cGU8L2Rpdj48L2Rpdj48L3RkPgoJCQkJPC9kaXY+CgkJCQkKCQkJPC90cj4KCQkKCQkJPHRyPgoJCQkJPHRkIHN0eWxlPSJ3aWR0aDogNTAlOyI+CgkJCQk8ZGl2IGNvbHNwYW49IjEyIj4KCQkJCTxkaXYgY29sc3Bhbj0iNiIgPgoJCQkJPGxhYmVsIHN0eWxlPSJ0ZXh0LWFsaWduOiBsZWZ0O2ZvbnQ6IG5vcm1hbCBub3JtYWwgbm9ybWFsIDExcHgvMTRweCBJbnRlcjtsZXR0ZXItc3BhY2luZzogMHB4O2NvbG9yOiAjNjY2NjY2O29wYWNpdHk6IDE7Ij5HZW5lcmF0ZWQgb248L2xhYmVsPjxkaXYgY29sc3Bhbj0iMiIgc3R5bGU9InRleHQtYWxpZ246IGxlZnQ7Zm9udDogbm9ybWFsIG5vcm1hbCA2MDAgMTJweC8xNXB4IEludGVyO2xldHRlci1zcGFjaW5nOiAwcHg7Y29sb3I6ICMwMDAwMDA7b3BhY2l0eTogMTtwYWRkaW5nOiAycHggMXB4OyI+JGdlbnJhdGVkT25UaW1lc3RhbXA8L2Rpdj48L2Rpdj48L3RkPgoJCQkJPHRkIHN0eWxlPSJ3aWR0aDogNTAlOyI+PGRpdiBjb2xzcGFuPSI2IiBzdHlsZT0icGFkZGluZy1sZWZ0OiAzMnB4OyIgPjxsYWJlbCBzdHlsZT0idGV4dC1hbGlnbjogbGVmdDtmb250OiBub3JtYWwgbm9ybWFsIG5vcm1hbCAxMXB4LzE0cHggSW50ZXI7bGV0dGVyLXNwYWNpbmc6IDBweDtjb2xvcjogIzY2NjY2NjtvcGFjaXR5OiAxOyI+RXhwaXJlcyBvbjwvbGFiZWw+PGRpdiBjb2xzcGFuPSIyIiBzdHlsZT0idGV4dC1hbGlnbjogbGVmdDtmb250OiBub3JtYWwgbm9ybWFsIDYwMCAxMnB4LzE1cHggSW50ZXI7bGV0dGVyLXNwYWNpbmc6IDBweDtjb2xvcjogIzAwMDAwMDtvcGFjaXR5OiAxO3BhZGRpbmc6IDJweCAycHg7Ij4kZXhwaXJ5VGltZXN0YW1wPC9kaXY+PC9kaXY+PC90ZD4KCQkJCTwvZGl2PgoJCQk8L3RyPgoKCQk8L3Rib2R5PjwvdGFibGU+Cgk8L3RkPgo8L3RyPgo8dHI+Cgk8dGQgY29sc3Bhbj0iMyIgc3R5bGU9InRleHQtYWxpZ246IGxlZnQ7Zm9udDogbm9ybWFsIG5vcm1hbCA2MDAgMTJweC8xNXB4IEludGVyO2NvbG9yOiAjMDAwMDAwO29wYWNpdHk6IDE7aGVpZ2h0OiA0MHB4O3RleHQtYWxpZ246IGNlbnRlcjtib3JkZXItdG9wOjFweCBzb2xpZCAjRTJFMkUyOyI+PGltZyBzdHlsZT0idG9wOiA1MXB4O2xlZnQ6IDQ1cHg7IG1hcmdpbi1ib3R0b206IC00cHg7IiBzcmM9ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCwgaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUE0QUFBQU9DQVlBQUFBZlNDM1JBQUFBQm1KTFIwUUEvd0QvQVArZ3ZhZVRBQUFBZ0VsRVFWUW9rYzNSd1EyQ1lBeUc0WWRFamdSaEEyUGlnVEdjUTVkaEFIYUJBVHc3Z1FkUEx1QU1ldUEzS2xGVGIzeEpEMDN6dGw5YjVxb2NMY3Avd1FMSEZHL3dEcmRnREpBbHNNYnF4OFFNSFRiWTRoUzF1c1FCemFkaWs0cFZwTk5pQXAyeE51N3lUUmRjSDBrdmZwejlhNWZTODl4RnhPb1VibzNQbnFIdW5na2pOR0NyVlVjQUFBQUFTVVZPUks1Q1lJST0iPjxzcGFuIHN0eWxlPSJtYXJnaW4tbGVmdDogNXB4OyI+IDwvc3Bhbj5UcmFuc2FjdGlvbnMgYWxsb3dlZCA6ICR0cmFuc2FjdGlvbnNMZWZ0Q291bnQ8L3RkPgo8L3RyPgo8L3Rib2R5PjwvdGFibGU+CjwvZGl2Pgo8L2JvZHk+PC9odG1sPg==" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/mosip-config/blob/master/esignet-default.properties", + "title": "esignet-default.properties", + "repo": "mosip/mosip-config", + "file_path": "esignet-default.properties", + "language": "properties", + "content": "# This Source Code Form is subject to the terms of the Mozilla Public\n# License, v. 2.0. If a copy of the MPL was not distributed with this\n# file, You can obtain one at https://mozilla.org/MPL/2.0/.\n\n# Follow properites have their values assigned via 'overrides' environment variables of config server docker.\n# DO NOT define these in any of the property files. They must be passed as env variables. Refer to config-server\n# helm chart:\n# db.dbuser.password\n# keycloak.external.url\n# keycloak.internal.host\n# keycloak.internal.url\n# keycloak.admin.password\n# mosip.auth.client.secret (convention: ..secret)\n# mosip.ida.client.secret\n# mosip.admin.client.secret\n# mosip.reg.client.secret\n# mosip.prereg.client.secret\n# softhsm.kernel.pin\n# softhsm-security-pin\n# email.smtp.host\n# email.smtp.username\n# email.smtp.secret\n# mosip.kernel.tokenid.uin.salt\n# mosip.kernel.tokenid.partnercode.salt\n# mosip.api.internal.url\n# mosip.api.public.url\n\n\n## ------------------------------------------------- e-Signet ----------------------------------------------------------\nmosip.esignet.misp.license.key=${mosip.esignet.misp.key}\nmosip.esignet.amr-acr-mapping-file-url=${spring_config_url_env}/application/${active_profile_env}/${spring_config_label_env}/amr-acr-mapping.json\nmosip.esignet.auth-txn-id-length=10\nmosip.esignet.supported-id-regex=\\\\S*\n# Generated ID and access tokens 'exp' depends on the below properties, default value is 1-hour\nmosip.esignet.id-token-expire-seconds=3600\nmosip.esignet.access-token-expire-seconds=3600\n# By default, only 2 link codes can be active, and the time period it can be active is defined here, default value is 1 minute\nmosip.esignet.link-code-expire-in-secs=60\n# Number of link code allowed to be generated in a transaction, the default value is 10\nmosip.esignet.generate-link-code.limit-per-transaction=10\n# Time to complete consent after successful authentication, the default value is 120\nmosip.esignet.authentication-expire-in-secs=120\n\n# Auth challenge type & format mapping. Auth challenge length validations for each auth factor type.\nmosip.esignet.auth-challenge.OTP.format=alpha-numeric\nmosip.esignet.auth-challenge.OTP.min-length=6\nmosip.esignet.auth-challenge.OTP.max-length=6\n\nmosip.esignet.auth-challenge.PWD.format=alpha-numeric\nmosip.esignet.auth-challenge.PWD.min-length=8\nmosip.esignet.auth-challenge.PWD.max-length=30\n\nmosip.esignet.auth-challenge.BIO.format=encoded-json\nmosip.esignet.auth-challenge.BIO.min-length=5000\nmosip.esignet.auth-challenge.BIO.max-length=300000\n\nmosip.esignet.auth-challenge.WLA.format=jwt\nmosip.esignet.auth-challenge.WLA.min-length=100\nmosip.esignet.auth-challenge.WLA.max-length=1500\n\nmosip.esignet.auth-challenge.KBA.format=base64url-encoded-json\nmosip.esignet.auth-challenge.KBA.min-length=50\nmosip.esignet.auth-challenge.KBA.max-length=500\n\nmosip.esignet.auth-challenge.PIN.format=number\nmosip.esignet.auth-challenge.PIN.min-length=4\nmosip.esignet.auth-challenge.PIN.max-length=4\n\n\n# Endpoints required to have oauth-details-hash and oauth-details-key HTTP header\nmosip.esignet.header-filter.paths-to-validate={'${server.servlet.path}/authorization/send-otp', \\\n '${server.servlet.path}/authorization/authenticate', \\\n '${server.servlet.path}/authorization/v2/authenticate', \\\n '${server.servlet.path}/authorization/v3/authenticate', \\\n '${server.servlet.path}/authorization/auth-code'}\n\n#This property is used for captcha validation and allowed values are send-otp, pwd and kba.\n#captcha validation is enabled for send-otp, pwd and kba.\nmosip.esignet.captcha.required=${mosip.esignet.captcha.required.esignet.override:send-otp,pwd}\nmosip.esignet.captcha.required.auth-factors={}\n\n#Properties used to ratelimit the incoming requests\nmosip.esignet.send-otp.attempts=3\nmosip.esignet.authenticate.attempts=3\n\n## ------------------------------------------ e-Signet binding ---------------------------------------------------------\n\nmosip.esignet.binding.salt-length=16\nmosip.esignet.binding.audience-id=esignet-binding\nmosip.esignet.binding.key-expire-days=10\nmosip.esignet.binding.encrypt-binding-id=false\n\n## -------------------------------------- Authentication & Authorization -----------------------------------------------\n\nmosip.esignet.security.auth.post-urls={'${server.servlet.path}/client-mgmt/**' : {'SCOPE_add_oidc_client'} , \\\n \\ '${server.servlet.path}/system-info/**' : { 'SCOPE_upload_certificate'},\\\n \\ '${server.servlet.path}/binding/wallet-binding' : { 'SCOPE_wallet_binding'}, \\\n \\ '${server.servlet.path}/binding/binding-otp' : { 'SCOPE_send_binding_otp'}}\nmosip.esignet.security.auth.put-urls={'${server.servlet.path}/client-mgmt/**' : { 'SCOPE_update_oidc_client'} }\nmosip.esignet.security.auth.get-urls={'${server.servlet.path}/system-info/**' : { 'SCOPE_get_certificate'} }\n\nmosip.esignet.security.ignore-csrf-urls=${server.servlet.path}/oidc/**,${server.servlet.path}/oauth/**,\\\n ${server.servlet.path}/actuator/**,/favicon.ico,${server.servlet.path}/error,\\\n ${server.servlet.path}/swagger-ui/**,${server.servlet.path}/v3/api-docs/**,\\\n ${server.servlet.path}/linked-authorization/link-transaction,${server.servlet.path}/linked-authorization/authenticate,\\\n ${server.servlet.path}/linked-authorization/consent,${server.servlet.path}/binding/**,${server.servlet.path}/client-mgmt/**,\\\n ${server.servlet.path}/vci/**,${server.servlet.path}/system-info/**,${server.servlet.path}/linked-authorization/v2/link-transaction,\\\n ${server.servlet.path}/linked-authorization/v2/authenticate,${server.servlet.path}/linked-authorization/v2/consent\n\nmosip.esignet.security.ignore-auth-urls=${server.servlet.path}/csrf/**,${server.servlet.path}/authorization/**,\\\n ${server.servlet.path}/linked-authorization/**,${server.servlet.path}/oidc/**,${server.servlet.path}/oauth/**,\\\n ${server.servlet.path}/actuator/**,/favicon.ico,${server.servlet.path}/error,${server.servlet.path}/swagger-ui/**,\\\n ${server.servlet.path}/v3/api-docs/**,${server.servlet.path}/binding/**,${server.servlet.path}/vci/**\n\nspring.security.oauth2.resourceserver.jwt.issuer-uri=${keycloak.external.url}/auth/realms/mosip\nspring.security.oauth2.resourceserver.jwt.jwk-set-uri=${keycloak.external.url}/auth/realms/mosip/protocol/openid-connect/certs\n\n##------------------------------------------ Kafka configurations ------------------------------------------------------\nspring.kafka.bootstrap-servers=kafka-0.kafka-headless.${kafka.profile}:${kafka.port},kafka-1.kafka-headless.${kafka.profile}:${kafka.port},kafka-2.kafka-headless.${kafka.profile}:${kafka.port}\n\nspring.kafka.consumer.group-id=esignet-consumer\nspring.kafka.consumer.enable-auto-commit=true\n#spring.kafka.listener.concurrency=1\n\nmosip.esignet.kafka.linked-session.topic=esignet-linked\nmosip.esignet.kafka.linked-auth-code.topic=esignet-consented\n\n## ------------------------------------------- Integrations ------------------------------------------------------------\n\nmosip.esignet.integration.scan-base-package=io.mosip.authentication.esignet.integration,io.mosip.esignet.mock.integration\nmosip.esignet.integration.binding-validator=BindingValidatorServiceImpl\nmosip.esignet.integration.authenticator=IdaAuthenticatorImpl\nmosip.esignet.integration.key-binder=IdaKeyBinderImpl\nmosip.esignet.integration.audit-plugin=IdaAuditPluginImpl\nmosip.esignet.integration.captcha-validator=GoogleRecaptchaValidatorService\nmosip.esignet.integration.vci-plugin=IdaVCIssuancePluginImpl\n\n# captcha validator\nmosip.esignet.captcha-validator.url=https://www.google.com/recaptcha/api/siteverify\nmosip.esignet.captcha-validator.secret=${esignet.captcha.secret.key}\nmosip.esignet.captcha-validator.site-key=${esignet.captcha.site.key}\n\n# IDA integration props\nmosip.esignet.authenticator.ida-auth-id=mosip.identity.kycauth\nmosip.esignet.authenticator.ida-exchange-id=mosip.identity.kycexchange\nmosip.esignet.authenticator.ida-send-otp-id=mosip.identity.otp\nmosip.esignet.authenticator.ida-version=1.0\nmosip.esignet.authenticator.ida-domainUri=https://${mosip.esignet.host}\nmosip.esignet.authenticator.ida.cert-url=${mosip.file.server.url}/mosip-certs/ida-partner.cer\nmosip.esignet.authenticator.ida.kyc-auth-url=${mosip.ida.auth.url}/idauthentication/v1/kyc-auth/delegated/${mosip.esignet.misp.license.key}/\nmosip.esignet.authenticator.ida.kyc-exchange-url=${mosip.ida.auth.url}/idauthentication/v1/kyc-exchange/delegated/${mosip.esignet.misp.license.key}/\nmosip.esignet.authenticator.ida.send-otp-url=${mosip.ida.otp.url}/idauthentication/v1/otp/${mosip.esignet.misp.license.key}/\nmosip.esignet.binder.ida.key-binding-url=${mosip.ida.auth.url}/idauthentication/v1/identity-key-binding/delegated/${mosip.esignet.misp.license.key}/\nmosip.esignet.authenticator.ida.get-certificates-url=${mosip.ida.internal.url}/idauthentication/v1/internal/getAllCertificates\nmosip.esignet.authenticator.ida.auth-token-url=${mosip.kernel.authmanager.url}/v1/authmanager/authenticate/clientidsecretkey\nmosip.esignet.authenticator.ida.audit-manager-url=${mosip.kernel.auditmanager.url}/v1/auditmanager/audits\nmosip.esignet.authenticator.ida.client-id=mosip-ida-client\nmosip.esignet.authenticator.ida.secret-key=${mosip.ida.client.secret}\nmosip.esignet.authenticator.ida.app-id=ida\nmosip.esignet.authenticator.ida-env=Developer\nmosip.esignet.authenticator.ida.otp-channels=email,phone\n\nmosip.esignet.ida.vci-user-info-cache=userinfo\nmosip.esignet.ida.vci-exchange-id=mosip.identity.vciexchange\nmosip.esignet.ida.vci-exchange-version=1.0\nmosip.esignet.ida.vci-exchange-url=https://${mosip.api.internal.host}/idauthentication/v1/vci-exchange/delegated/${mosip.esignet.misp.license.key}/\n\n# Mock IDA integration props\nmosip.esignet.mock.authenticator.get-identity-url=https://${mosip.api.public.host}/v1/mock-identity-system/identity\nmosip.esignet.mock.authenticator.kyc-auth-url=https://${mosip.api.public.host}/v1/mock-identity-system/kyc-auth\nmosip.esignet.mock.authenticator.kyc-exchange-url=https://${mosip.api.public.host}/v1/mock-identity-system/kyc-exchange\nmosip.esignet.mock.authenticator.ida.otp-channels=${mosip.esignet.authenticator.ida.otp-channels}\nmosip.esignet.mock.authenticator.send-otp=https://${mosip.api.public.host}/v1/mock-identity-system/send-otp\nmosip.esignet.mock.supported.bind-auth-factor-types={'WLA'}\nmosip.esignet.mock.vciplugin.verification-method=${mosip.esignet.vci.authn.jwk-set-uri}\n\n## ------------------------------------------ oauth & openid supported values ------------------------------------------\n\n## supported scopes\nmosip.esignet.supported.authorize.scopes={'Manage-Identity-Data','Manage-VID','Manage-Authentication','Manage-Service-Requests','Manage-Credentials'}\nmosip.esignet.supported.openid.scopes={'profile','email','phone'}\nmosip.esignet.openid.scope.claims={'profile' : {'name','address','gender','birthdate','picture','email','phone_number'},'email' : {'email'}, 'phone' : {'phone_number'}}\nmosip.esignet.supported.credential.scopes={'mock_identity_vc_ldp', 'mosip_identity_vc_ldp'}\nmosip.esignet.credential.scope-resource-mapping={'mock_identity_vc_ldp' : '${mosip.esignet.domain.url}${server.servlet.path}/vci/credential', 'mosip_identity_vc_ldp': '${mosip.esignet.domain.url}${server.servlet.path}/vci/credential'}\n\n## supported authorization processing flow to be used, Currently only supports Authorization Code Flow.\nmosip.esignet.supported.response.types={'code'}\n\n## Form of Authorization Grant presented to token endpoint\nmosip.esignet.supported.grant.types={'authorization_code'}\n\n## specifies how the Authorization Server displays the authentication and consent user interface pages to the End-User\n# page-The Authorization Server SHOULD display the authentication and consent UI consistent with a full User Agent page view. If the display parameter is not specified, this is the default display mode.\n# popup-The Authorization Server SHOULD display the authentication and consent UI consistent with a popup User Agent window. The popup User Agent window should be of an appropriate size for a login-focused dialog and should not obscure the entire window that it is popping up over.\n# touch-The Authorization Server SHOULD display the authentication and consent UI consistent with a device that leverages a touch interface.\n# wap-The Authorization Server SHOULD display the authentication and consent UI consistent with a \"feature phone\" type display.\nmosip.esignet.supported.ui.displays={'page','popup','touch','wap'}\n\n## specifies whether the Authorization Server prompts the End-User for reauthentication and consent\n# none-The Authorization Server MUST NOT display any authentication or consent user interface pages.\n# An error is returned if an End-User is not already authenticated or the Client does not have pre-configured consent\n# for the requested Claims or does not fulfill other conditions for processing the request.\n# The error code will typically be login_required, interaction_required, or another code defined in Section 3.1.2.6.\n# This can be used as a method to check for existing authentication and/or consent.\n# login-The Authorization Server SHOULD prompt the End-User for reauthentication. If it cannot reauthenticate the End-User, \\\n# it MUST return an error, typically login_required.\n# consent-The Authorization Server SHOULD prompt the End-User for consent before returning information to the Client.\n# If it cannot obtain consent, it MUST return an error, typically consent_required.\n# select_account-The Authorization Server SHOULD prompt the End-User to select a user account. This enables an End-User\n# who has multiple accounts at the Authorization Server to select amongst the multiple accounts that they might have current\n# sessions for. If it cannot obtain an account selection choice made by the End-User, it MUST return an error,\n# typically account_selection_required.\nmosip.esignet.supported.ui.prompts={'none','login','consent','select_account'}\n\n## Type of the client assertion\nmosip.esignet.supported.client.assertion.types={'urn:ietf:params:oauth:client-assertion-type:jwt-bearer'}\n\n## Type of the client authentication methods for token endpoint\nmosip.esignet.supported.client.auth.methods={'private_key_jwt'}\n\n## Only S256 method supported\nmosip.esignet.supported-pkce-methods={'S256'}\n\n## ---------------------------------------- Cache configuration --------------------------------------------------------\n\nmosip.esignet.cache.secure.individual-id=true\nmosip.esignet.cache.store.individual-id=true\nmosip.esignet.cache.security.secretkey.reference-id=TRANSACTION_CACHE\nmosip.esignet.cache.security.algorithm-name=AES/ECB/PKCS5Padding\n\nmosip.esignet.cache.names=clientdetails,preauth,authenticated,authcodegenerated,userinfo,linkcodegenerated,linked,linkedcode,linkedauth,consented,authtokens,bindingtransaction,vcissuance,apiRateLimit,blocked\n\n#spring.cache.type=redis\n#spring.cache.cache-names=${mosip.esignet.cache.names}\n#spring.redis.host=localhost\n#spring.redis.port=6379\nmanagement.health.redis.enabled=false\n\n# 'simple' cache type is only applicable only for Non-Production setup\nspring.cache.type=simple\nmosip.esignet.cache.key.hash.algorithm=SHA3-256\n\n# Cache size setup is applicable only for 'simple' cache type.\n# Cache size configuration will not be considered with 'Redis' cache type\nmosip.esignet.cache.size={'clientdetails' : 200, \\\n'preauth': 200, \\\n'authenticated': 200, \\\n'authcodegenerated': 200, \\\n'userinfo': 200, \\\n'linkcodegenerated' : 500, \\\n'linked': 200 , \\\n'linkedcode': 200, \\\n'linkedauth' : 200 , \\\n'consented' :200, \\\n'authtokens': 2, \\\n'bindingtransaction': 200, \\\n'vcissuance' : 200, \\\n'apiRateLimit' : 500, \\\n'blocked': 500 }\n\n# Cache expire in seconds is applicable for both 'simple' and 'Redis' cache type\nmosip.esignet.cache.expire-in-seconds={'clientdetails' : 86400, \\\n'preauth': 300,\\\n'authenticated': ${mosip.esignet.authentication-expire-in-secs}, \\\n'authcodegenerated': 60, \\\n'userinfo': ${mosip.esignet.access-token-expire-seconds}, \\\n'linkcodegenerated' : ${mosip.esignet.link-code-expire-in-secs}, \\\n'linked': 120, \\\n'linkedcode': ${mosip.esignet.link-code-expire-in-secs}, \\\n'linkedauth' : ${mosip.esignet.authentication-expire-in-secs}, \\\n'consented': 60, \\\n'authtokens': 86400, \\\n'bindingtransaction': 600, \\\n'vcissuance': ${mosip.esignet.access-token-expire-seconds}, \\\n'apiRateLimit' : 180, \\\n'blocked': 300 }\n\n## ------------------------------------------ Discovery openid-configuration -------------------------------------------\n\nmosip.esignet.domain.url=https://${mosip.esignet.host}\nmosip.esignet.discovery.issuer-id=${mosip.esignet.domain.url}${server.servlet.path}\n\n# This property holds ./wellknown/jwks.json URL,\n# for local deployments without esignet-ui nginx change the value to ${mosip.esignet.domain.url}${server.servlet.path}/oauth/.well-known/jwks.json\nmosip.esignet.jwks-uri=${mosip.esignet.domain.url}/.well-known/jwks.json\n\nmosip.esignet.token.endpoint=${mosip.esignet.domain.url}${server.servlet.path}/oauth/v2/token\n\nmosip.esignet.oauth.key-values={'issuer': '${mosip.esignet.domain.url}' ,\\\n \\ 'authorization_endpoint': '${mosip.esignet.domain.url}/authorize' , \\\n \\ 'token_endpoint': '${mosip.esignet.token.endpoint}' , \\\n \\ 'jwks_uri' : '${mosip.esignet.jwks-uri}' , \\\n \\ 'token_endpoint_auth_methods_supported' : ${mosip.esignet.supported.client.auth.methods}, \\\n \\ 'token_endpoint_auth_signing_alg_values_supported' : {'RS256'},\\\n \\ 'scopes_supported' : ${mosip.esignet.supported.openid.scopes}, \\\n \\ 'response_modes_supported' : { 'query' }, \\\n \\ 'grant_types_supported' : ${mosip.esignet.supported.grant.types},\\\n \\ 'response_types_supported' : ${mosip.esignet.supported.response.types}}\n\nmosip.esignet.discovery.key-values={'issuer': '${mosip.esignet.domain.url}' ,\\\n \\ 'authorization_endpoint': '${mosip.esignet.domain.url}/authorize' , \\\n \\ 'token_endpoint': '${mosip.esignet.token.endpoint}' ,\\\n \\ 'userinfo_endpoint' : '${mosip.esignet.domain.url}${server.servlet.path}/oidc/userinfo' ,\\\n \\ 'jwks_uri' : '${mosip.esignet.jwks-uri}' , \\\n \\ 'scopes_supported' : ${mosip.esignet.supported.openid.scopes}, \\\n \\ 'response_types_supported' : ${mosip.esignet.supported.response.types}, \\\n \\ 'response_modes_supported' : { 'query' }, \\\n \\ 'token_endpoint_auth_methods_supported' : ${mosip.esignet.supported.client.auth.methods}, \\\n \\ 'token_endpoint_auth_signing_alg_values_supported' : {'RS256'}, \\\n \\ 'userinfo_signing_alg_values_supported' : {'RS256'}, \\\n \\ 'userinfo_encryption_alg_values_supported' : {'RSAXXXXX'},\\\n \\ 'userinfo_encryption_enc_values_supported' : {'A128GCM'}, \\\n \\ 'id_token_signing_alg_values_supported' : {'RS256'}, \\\n \\ 'claim_types_supported': {'normal'}, \\\n \\ 'claims_parameter_supported' : true, \\\n \\ 'display_values_supported' : ${mosip.esignet.supported.ui.displays}, \\\n \\ 'subject_types_supported' : { 'pairwise' }, \\\n \\ 'claims_supported' : {'name','address','gender','birthdate','picture','email','phone_number','individual_id'}, \\\n \\ 'acr_values_supported' : {'mosip:idp:acr:static-code', 'mosip:idp:acr:generated-code', 'mosip:idp:acr:linked-wallet', 'mosip:idp:acr:biometrics', 'mosip:idp:acr:knowledge'},\\\n \\ 'request_parameter_supported' : false, \\\n \\ 'claims_locales_supported' : {'en'}, \\\n \\ 'ui_locales_supported' : {'en'} }\n\n##----------------------------------------- Database properties --------------------------------------------------------\n\nmosip.esignet.database.hostname=${mosip.database.hostname.override:postgres-postgresql.postgres}\nmosip.esignet.database.port=${mosip.database.port.override:5432}\nspring.datasource.url=jdbc:postgresql://${mosip.esignet.database.hostname}:${mosip.esignet.database.port}/mosip_esignet?currentSchema=esignet\nspring.datasource.username=esignetuser\nspring.datasource.password=${db.dbuser.password}\n\nspring.jpa.database-platform=org.hibernate.dialect.PostgreSQL95Dialect\nspring.jpa.show-sql=false\nspring.jpa.hibernate.ddl-auto=none\nspring.jpa.properties.hibernate.jdbc.lob.non_contextual_creation=true\n\n#------------------------------------ Key-manager specific properties --------------------------------------------------\n#Crypto asymmetric algorithm name\nmosip.kernel.crypto.asymmetric-algorithm-name=RSA/ECB/OAEPWITHSHA-256ANDMGF1PADDING\n#Crypto symmetric algorithm name\nmosip.kernel.crypto.symmetric-algorithm-name=AES/GCM/PKCS5Padding\n#Keygenerator asymmetric algorithm name\nmosip.kernel.keygenerator.asymmetric-algorithm-name=RSA\n#Keygenerator symmetric algorithm name\nmosip.kernel.keygenerator.symmetric-algorithm-name=AES\n#Asymmetric algorithm key length\nmosip.kernel.keygenerator.asymmetric-key-length=2048\n#Symmetric algorithm key length\nmosip.kernel.keygenerator.symmetric-key-length=256\n#Encrypted data and encrypted symmetric key separator\nmosip.kernel.data-key-splitter=#KEY_SPLITTER#\n#GCM tag length\nmosip.kernel.crypto.gcm-tag-length=128\n#Hash algo name\nmosip.kernel.crypto.hash-algorithm-name=PBKDF2WithHmacSHA512\n#Symmtric key length used in hash\nmosip.kernel.crypto.hash-symmetric-key-length=256\n#No of iterations in hash\nmosip.kernel.crypto.hash-iteration=100000\n#Sign algo name\nmosip.kernel.crypto.sign-algorithm-name=RS256\n#Certificate Sign algo name\nmosip.kernel.certificate.sign.algorithm=SHA256withRSA\n\n#mosip.kernel.keymanager.hsm.config-path=local.p12\n#mosip.kernel.keymanager.hsm.keystore-type=PKCS12\n#mosip.kernel.keymanager.hsm.keystore-pass=${softhsm.idp.pin}\n\n#Type of keystore, Supported Types: PKCS11, PKCS12, Offline, JCE\nmosip.kernel.keymanager.hsm.keystore-type=PKCS11\n# For PKCS11 provide Path of config file.\n# For PKCS12 keystore type provide the p12/pfx file path. P12 file will be created internally so provide only file path & file name.\n# For Offline & JCE property can be left blank, specified value will be ignored.\nmosip.kernel.keymanager.hsm.config-path=/config/softhsm-application.conf\n# Passkey of keystore for PKCS11, PKCS12\n# For Offline & JCE proer can be left blank. JCE password use other JCE specific properties.\nmosip.kernel.keymanager.hsm.keystore-pass=${softhsm.esignet.security.pin}\n\n\nmosip.kernel.keymanager.certificate.default.common-name=www.mosip.io\nmosip.kernel.keymanager.certificate.default.organizational-unit=MOSIP-TECH-CENTER\nmosip.kernel.keymanager.certificate.default.organization=IITB\nmosip.kernel.keymanager.certificate.default.location=BANGALORE\nmosip.kernel.keymanager.certificate.default.state=KA\nmosip.kernel.keymanager.certificate.default.country=IN\n\nmosip.kernel.keymanager.softhsm.certificate.common-name=www.mosip.io\nmosip.kernel.keymanager.softhsm.certificate.organizational-unit=MOSIP\nmosip.kernel.keymanager.softhsm.certificate.organization=IITB\nmosip.kernel.keymanager.softhsm.certificate.country=IN\n\n# Application Id for PMS master key.\nmosip.kernel.partner.sign.masterkey.application.id=PMS\nmosip.kernel.partner.allowed.domains=DEVICE\n\nmosip.kernel.keymanager-service-validate-url=https://${mosip.hostname}/keymanager/validate\nmosip.kernel.keymanager.jwtsign.validate.json=false\nmosip.keymanager.dao.enabled=false\ncrypto.PrependThumbprint.enable=true\n\nmosip.kernel.keymgr.hsm.health.check.enabled=true\t\nmosip.kernel.keymgr.hsm.health.key.app-id=OIDC_SERVICE\nmosip.kernel.keymgr.hsm.healthkey.ref-id=TRANSACTION_CACHE\nmosip.kernel.keymgr.hsm.health.check.encrypt=true\n\n## -------------------------------------------- IDP-UI config ----------------------------------------------------------\n# NOTE:\n# 1. linked-transaction-expire-in-secs value should be a sum of 'mosip.esignet.authentication-expire-in-secs' and 'linked' cache expire in seconds under mosip.esignet.cache.expire-in-seconds property\n# 2. A new Qrcode will be autogenerated before the expiry of current qr-code, and the time difference in seconds for the same is defined in wallet.qr-code-buffer-in-secs property\n# 3. If esignet is deployed with MOSIP IDA, then 'resend.otp.delay.secs' must be the same as 'mosip.kernel.otp.expiry-time'\n\nmosip.esignet.ui.wallet.config={{'wallet.name': 'walletName', 'wallet.logo-url': '/images/qr_code.png', 'wallet.download-uri': '#', \\\n 'wallet.deep-link-uri': 'inji://landing-page-name?linkCode=LINK_CODE&linkExpireDateTime=LINK_EXPIRE_DT' }}\n\nmosip.esignet.ui.signup.config={'signup.banner': true, 'signup.url': 'https://${mosip.signup.host}/signup'}\n\nmosip.esignet.ui.forgot-password.config={'forgot-password': true, 'forgot-password.url': 'https://${mosip.signup.host}/reset-password'}\n\n## Configuration required to display KBI form.\n# individual-id-field is set with field id which should be considered as an individual ID in the authenticate request.\n# form-details holds the list of field details like below:\n# id -> unique field Id, type -> holds datatype, format -> only supported for date fields, regex -> pattern to validate the input value, maxLength -> number of allowed characters\n# Example: mosip.esignet.authenticator.default.auth-factor.kba.field-details={{'id': '${mosip.esignet.authenticator.default.auth-factor.kba.individual-id-field}', 'type':'text', 'format':'', 'maxLength': 50, 'regex': '^\\\\s*[+-]?(\\\\d+|\\\\d*\\\\.\\\\d+|\\\\d+\\\\.\\\\d*)([Ee][+-]?\\\\d*)?\\\\s*$'},{'id':'fullName', 'type':'text', 'format':'', 'maxLength': 50, 'regex': '^[A-Za-z\\\\s]{1,}[\\\\.]{0,1}[A-Za-z\\\\s]{0,}$'},{'id':'dob', 'type':'date', 'format':'dd/mm/yyyy'}}\nmosip.esignet.authenticator.default.auth-factor.kba.individual-id-field=\nmosip.esignet.authenticator.default.auth-factor.kba.field-details={}\n\n## Configuration Map input to UI at the start of every transaction.\nmosip.esignet.ui.config.key-values={'sbi.env': 'Developer', 'sbi.timeout.DISC': 30, \\\n 'sbi.timeout.DINFO': 30, 'sbi.timeout.CAPTURE': 30, 'sbi.capture.count.face': 1, 'sbi.capture.count.finger': 1, \\\n 'sbi.capture.count.iris': 1, 'sbi.capture.score.face': 70, 'sbi.capture.score.finger':70, 'sbi.capture.score.iris':70, \\\n 'resend.otp.delay.secs': ${mosip.kernel.otp.expiry-time}, 'send.otp.channels' : '${mosip.esignet.authenticator.ida.otp-channels}', \\\n 'captcha.sitekey' : '${mosip.esignet.captcha-validator.site-key}', 'captcha.enable' : '${mosip.esignet.captcha.required}', \\\n 'auth.txnid.length' : '${mosip.esignet.auth-txn-id-length}', 'consent.screen.timeout-in-secs':${mosip.esignet.authentication-expire-in-secs}, \\\n 'consent.screen.timeout-buffer-in-secs': 5, 'linked-transaction-expire-in-secs': 240, 'sbi.port.range': '4501-4600', \\\n 'sbi.bio.subtypes.iris': 'UNKNOWN', 'sbi.bio.subtypes.finger': 'UNKNOWN', 'wallet.qr-code-buffer-in-secs': 10, 'otp.length': ${mosip.esignet.auth-challenge.OTP.max-length}, \\\n 'password.regex': '^.{8,20}$', \\\n 'password.max-length': ${mosip.esignet.auth-challenge.PWD.max-length}, \\\n 'username.regex': '^[0-9]{10,30}$',\\\n 'username.prefix': '', \\\n 'username.postfix': '', \\\n 'username.max-length': 16, \\\n 'username.input-type': 'number', 'wallet.config': ${mosip.esignet.ui.wallet.config}, \\'signup.config': ${mosip.esignet.ui.signup.config}, \\\n 'forgot-password.config': ${mosip.esignet.ui.forgot-password.config}, \\\n 'error.banner.close-timer': 10,\\\n 'auth.factor.kba.individual-id-field' : '${mosip.esignet.authenticator.default.auth-factor.kba.individual-id-field}',\\\n 'auth.factor.kba.field-details': ${mosip.esignet.authenticator.default.auth-factor.kba.field-details} }\n\n## ---------------------------------------------- VCI ------------------------------------------------------------------\n# Used to verify audience in the PoP JWT\nmosip.esignet.vci.identifier=${mosip.esignet.domain.url}\nmosip.esignet.vci.authn.filter-urls={ '${server.servlet.path}/vci/credential' }\n# Change this if the VCI is used with different OAUTH2.0 server\nmosip.esignet.vci.authn.issuer-uri=${mosip.esignet.discovery.issuer-id}\nmosip.esignet.vci.authn.jwk-set-uri=${mosip.esignet.jwks-uri}\n\nmosip.esignet.vci.authn.allowed-audiences={ '${mosip.esignet.domain.url}${server.servlet.path}/vci/credential' }\n\nmosip.esignet.cnonce-expire-seconds=40\nmosip.esignet.vci.supported.jwt-proof-alg={'RS256','PS256'}\nmosip.esignet.vci.key-values={\\\n 'v11' : { \\\n 'credential_issuer': '${mosip.esignet.vci.identifier}', \t\\\n 'credential_endpoint': '${mosipbox.public.url}${server.servlet.path}/vci/credential', \\\n 'credentials_supported': {\\\n {\\\n 'format': 'ldp_vc',\\\n 'id': 'MockVerifiableCredential_ldp', \\\n 'scope' : 'mock_identity_vc_ldp',\\\n 'cryptographic_binding_methods_supported': {'did:jwk'},\\\n 'cryptographic_suites_supported': {'RsaSignature2018'},\\\n 'proof_types_supported': {'jwt'},\\\n 'credential_definition': {\\\n 'type': {'VerifiableCredential','MockVerifiableCredential'},\\\n 'credentialSubject': {\\\n 'name': { 'display': {{'name': 'Given Name', 'locale': 'en' }}}, \\\n 'age': { 'display': {{ 'name': 'Age', 'locale': 'en'}}}\\\n }\\\n },\\\n 'display': {{'name': 'Mock Verifiable Credential by e-Signet', \\\n 'locale': 'en', \\\n 'logo': {'url': '${mosipbox.public.url}/logo.png', 'alt_text': 'a square logo of a MOSIP'},\\\n 'background_color': '#12107c',\\\n 'text_color': '#FFFFFF'}}\\\n },\\\n {\\\n 'format': 'ldp_vc',\\\n 'id': 'MOSIPVerifiableCredential', \\\n 'scope' : 'mosip_identity_vc_ldp',\\\n 'cryptographic_binding_methods_supported': {'did:jwk'},\\\n 'cryptographic_suites_supported': {'RsaSignature2018'},\\\n 'proof_types_supported': {'jwt'},\\\n 'credential_definition': {\\\n 'type': {'VerifiableCredential','MOSIPVerifiableCredential'},\\\n 'credentialSubject': {\\\n 'fullName': { 'display': {{'name': 'Full Name', 'locale': 'en' }}},\\\n 'phone': { 'display': {{'name': 'Phone Number', 'locale': 'en' }}},\\\n 'dateOfBirth': { 'display': {{'name': 'DOB', 'locale': 'en' }}},\\\n 'gender': { 'display': {{'name': 'Gender', 'locale': 'en' }}},\\\n 'residenceStatus': { 'display': {{'name': 'Residence Status', 'locale': 'en' }}},\\\n 'email': { 'display': {{'name': 'Email Id', 'locale': 'en' }}},\\\n 'region': { 'display': {{'name': 'Region', 'locale': 'en' }}},\\\n 'province': { 'display': {{'name': 'Province', 'locale': 'en' }}},\\\n 'city': { 'display': {{'name': 'City', 'locale': 'en' }}},\\\n 'postalCode': { 'display': {{'name': 'Postal Code', 'locale': 'en' }}}\\\n }\\\n },\\\n 'display': {{'name': 'MOSIP Verifiable Credential by e-Signet', \\\n 'locale': 'en', \\\n 'logo': {'url': '${mosipbox.public.url}/logo.png','alt_text': 'a square logo of a MOSIP'},\\\n 'background_color': '#12107c',\\\n 'text_color': '#FFFFFF'}}\\\n }\\\n }\\\n },\\\n 'latest' : {\\\n 'credential_issuer': '${mosip.esignet.vci.identifier}', \t\\\n 'credential_endpoint': '${mosipbox.public.url}${server.servlet.path}/vci/credential', \\\n 'display': {{'name': 'e-Signet', 'locale': 'en'}},\\\n 'credentials_supported' : { \\\n \"MockVerifiableCredential_ldp\" : {\\\n 'format': 'ldp_vc',\\\n 'scope' : 'mock_identity_vc_ldp',\\\n 'cryptographic_binding_methods_supported': {'did:jwk'},\\\n 'cryptographic_suites_supported': {'RsaSignature2018'},\\\n 'proof_types_supported': {'jwt'},\\\n 'credential_definition': {\\\n 'type': {'VerifiableCredential','MockVerifiableCredential'},\\\n 'credentialSubject': {\\\n 'name': { 'display': {{'name': 'Given Name', 'locale': 'en' }}}, \\\n 'age': { 'display': {{ 'name': 'Age', 'locale': 'en'}}}\\\n }},\\\n 'display': {{'name': 'Mock Verifiable Credential by e-Signet', \\\n 'locale': 'en', \\\n 'logo': {'url': '${mosipbox.public.url}/logo.png',\\\n 'alt_text': 'a square logo of a MOSIP'},\\\n 'background_color': '#12107c',\\\n 'text_color': '#FFFFFF'}}\\\n }, \\\n 'MOSIPVerifiableCredential_ldp' : {\\\n 'format': 'ldp_vc',\\\n 'scope' : 'mosip_identity_vc_ldp',\\\n 'cryptographic_binding_methods_supported': {'did:jwk'},\\\n 'cryptographic_suites_supported': {'RsaSignature2018'},\\\n 'proof_types_supported': {'jwt'},\\\n 'credential_definition': {\\\n 'type': {'VerifiableCredential','MOSIPVerifiableCredential'},\\\n 'credentialSubject': {\\\n 'fullName': { 'display': {{'name': 'Full Name', 'locale': 'en' }}},\\\n 'phone': { 'display': {{'name': 'Phone Number', 'locale': 'en' }}},\\\n 'dateOfBirth': { 'display': {{'name': 'DOB', 'locale': 'en' }}},\\\n 'gender': { 'display': {{'name': 'Gender', 'locale': 'en' }}},\\\n 'residenceStatus': { 'display': {{'name': 'Residence Status', 'locale': 'en' }}},\\\n 'email': { 'display': {{'name': 'Email Id', 'locale': 'en' }}},\\\n 'region': { 'display': {{'name': 'Region', 'locale': 'en' }}},\\\n 'province': { 'display': {{'name': 'Province', 'locale': 'en' }}},\\\n 'city': { 'display': {{'name': 'City', 'locale': 'en' }}},\\\n 'postalCode': { 'display': {{'name': 'Postal Code', 'locale': 'en' }}}\\\n }},\\\n 'display': {{'name': 'MOSIP Verifiable Credential by e-Signet', \\\n 'locale': 'en', \\\n 'logo': {'url': '${mosipbox.public.url}/logo.png','alt_text': 'a square logo of a MOSIP'},\\\n 'background_color': '#12107c',\\\n 'text_color': '#FFFFFF'}}\\\n }\\\n }\\\n }\\\n }\n## -------------------------------------------- Others ----------------------------------------------------------\n\n#logging.level.io.mosip.esignet=INFO\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/mosip-config/blob/master/hazelcast_cache.xml", + "title": "hazelcast_cache.xml", + "repo": "mosip/mosip-config", + "file_path": "hazelcast_cache.xml", + "language": "xml", + "content": "\n\n\n \n dev\n \n\n \n 5701\n \n \n 0\n \n \n \n 224.2.2.3\n 54327\n \n \n 127.0.0.1\n \n 127.0.0.1\n \n \n \n my-access-key\n my-secret-key\n \n us-west-1\n \n ec2.amazonaws.com\n \n hazelcast-sg\n type\n hz-nodes\n \n \n us-east1-b,us-east1-c\n \n \n CLIENT_ID\n CLIENT_SECRET\n TENANT_ID\n SUB_ID\n HZLCAST001\n GROUP-NAME\n \n \n packetmanager\n \n \n true\n hazelcast\n \n \n \n \n \n 10.10.1.*\n \n \n \n \n \n PBEWithMD5AndDES\n \n thesalt\n \n thepass\n \n 19\n \n \n \n \n \n \n \n 16\n \n 0\n \n \n true\n \n \n \n 0\n \n 1\n\n \n 0\n\n -1\n\n com.hazelcast.spi.merge.PutIfAbsentMergePolicy\n \n \n \n OBJECT\n\n \n CREATE_ON_UPDATE\n\n \n 1\n \n 0\n \n 300\n \n 300\n \n LRU\n \n 0\n \n 25\n \n 100\n \n com.hazelcast.spi.merge.PutIfAbsentMergePolicy\n\n \n ALWAYS\n\n \n\n \n \n mapName\n 10000\n 0\n \n\n \n cacheName\n 10000\n 0\n \n\n \n \n mapName\n 10\n \n\n \n 1\n SET\n com.hazelcast.spi.merge.PutIfAbsentMergePolicy\n \n\n \n OBJECT\n true\n true\n com.hazelcast.spi.merge.PutIfAbsentMergePolicy\n \n\n \n 1\n com.hazelcast.spi.merge.PutIfAbsentMergePolicy\n \n\n \n 1\n com.hazelcast.spi.merge.PutIfAbsentMergePolicy\n \n\n \n 0\n \n 0\n 0\n 1000\n true\n CANCEL_RUNNING_OPERATION\n \n\n \n 0\n 1\n 0\n \n\n \n 10\n BLOCK\n true\n \n\n \n 10000\n 1\n 0\n 0\n BINARY\n com.hazelcast.spi.merge.PutIfAbsentMergePolicy\n \n\n \n 100\n 600000\n 0\n 0\n true\n \n\n \n com.hazelcast.spi.merge.PutIfAbsentMergePolicy\n \n\n \n com.hazelcast.spi.merge.PutIfAbsentMergePolicy\n \n\n \n\n \n 0\n \n\n \n\n \n\n \n 1\n 0\n HyperLogLogMergePolicy\n \n\n \n 100\n 1\n 16\n com.hazelcast.spi.merge.PutIfAbsentMergePolicy\n \n\n \n 1000\n 1\n \n\n \n 2147483647\n true\n \n\n \n 0\n 0\n 300\n 5\n 14400\n false\n \n 2000\n 5000\n 5\n 100\n 10000\n 100\n 100\n \n \n\n\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/mosip-config/blob/master/hazelcast_default.xml", + "title": "hazelcast_default.xml", + "repo": "mosip/mosip-config", + "file_path": "hazelcast_default.xml", + "language": "xml", + "content": "\n\n\n\n \n false\n slf4j\n \n\n\t\tk8s\n\t\t\n\t\n \n \n \n \n \n \n \n service-hazelcast-server.default\n \n \n \n \n \n\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/mosip-config/blob/master/hotlist-default.properties", + "title": "hotlist-default.properties", + "repo": "mosip/mosip-config", + "file_path": "hotlist-default.properties", + "language": "properties", + "content": "# Follow properites have their values assigned via 'overrides' environment variables of config server docker.\n# DO NOT define these in any of the property files. They must be passed as env variables. Refer to config-server\n# helm chart:\n# db.dbuser.password\n# mosip.hotlist.client.secret\nspring.application.name=HOTLIST\n\n## DB\nmosip.hotlist.db.url=${mosip.database.hostname.override:postgres-postgresql.postgres}\nmosip.hotlist.db.port=${mosip.database.port.override:5432}\nmosip.hotlist.db.db-name=mosip_hotlist\nmosip.hotlist.db.username=hotlistuser\nmosip.hotlist.db.password=${db.dbuser.password}\nmosip.hotlist.db.driverClassName=org.postgresql.Driver\nmosip.hotlist.db.dialect=org.hibernate.dialect.PostgreSQLDialect\n\n## Data validation\nmosip.hotlist.allowedIdTypes=UIN,VID,MACHINE_ID,PARTNER_ID,OPERATOR_ID,CENTER_ID,DEVICE,DEVICE_MODEL,FTM_PUBLIC_KEY,DEVICE_PROVIDER\n\n## Data source\nmosip.hotlist.datasource.driverClassName=${mosip.hotlist.db.driverClassName}\nmosip.hotlist.datasource.username=${mosip.hotlist.db.username}\nmosip.hotlist.datasource.password=${mosip.hotlist.db.password}\nmosip.hotlist.datasource.url=jdbc:postgresql://${mosip.hotlist.db.url}:${mosip.hotlist.db.port}/${mosip.hotlist.db.db-name}\nmosip.hotlist.datasource.dialect=${mosip.hotlist.db.dialect}\n\n#Admin hotlist service authentication details\nmosip.admin.hotlist.auth.client-id=mosip-hotlist-client\nmosip.admin.hotlist.auth.secret-key=${mosip.hotlist.client.secret}\nmosip.admin.hotlist.auth.app-id=hotlist\n\n# Websub\nmosip.hotlist.topic-to-publish=MOSIP_HOTLIST\n\n#Auth Adapter\nmosip.iam.adapter.clientid.HOTLIST=${mosip.admin.hotlist.auth.client-id}\nmosip.iam.adapter.clientsecret.HOTLIST=${mosip.admin.hotlist.auth.secret-key}\nmosip.iam.adapter.appid.HOTLIST=${mosip.admin.hotlist.auth.app-id}\nmosip.authmanager.client-token-endpoint=${mosip.kernel.authmanager.url}/v1/authmanager/authenticate/clientidsecretkey\n\n## Encryption/decyrption\nmosip.hotlist.crypto.app-id=ADMIN_SERVICES\nmosip.hotlist.crypto.ref-id=hotlist_service\n\n## Cleanup schedule\n# Initial delay in Hours\nmosip.hotlist.cleanup-schedule.init-delay=24\n#Fixed delay in which cleanup will be done in Hours\nmosip.hotlist.cleanup-schedule.fixed-rate=24\n\n## REST services\nmosip.idrepo.audit.rest.uri=${mosip.kernel.auditmanager.url}/v1/auditmanager/audits\nmosip.idrepo.audit.rest.httpMethod=POST\nmosip.idrepo.audit.rest.headers.mediaType=application/json\n\nmosip.hotlist.encryptor.rest.uri=${mosip.kernel.keymanager.url}/v1/keymanager/encrypt\nmosip.hotlist.encryptor.rest.httpMethod=POST\nmosip.hotlist.encryptor.rest.headers.mediaType=application/json\nmosip.hotlist.encryptor.rest.timeout=100\n\nmosip.hotlist.decryptor.rest.uri=${mosip.kernel.keymanager.url}/v1/keymanager/decrypt\nmosip.hotlist.decryptor.rest.httpMethod=POST\nmosip.hotlist.decryptor.rest.headers.mediaType=application/json\nmosip.hotlist.decryptor.rest.timeout=100\n\nmosip.hotlist.audit.rest.uri=${mosip.kernel.auditmanager.url}/v1/auditmanager/audits\nmosip.hotlist.audit.rest.httpMethod=POST\nmosip.hotlist.audit.rest.headers.mediaType=application/json\n\n# in minutes\nmosip.iam.adapter.validate-expiry-check-rate=15\n# in minutes\nmosip.iam.adapter.renewal-before-expiry-interval=15\n#this should be false if you don?t use the self token restTemplate from auth adapter true if you do (needed for websubclient).\nmosip.iam.adapter.self-token-renewal-enable=true\nmosip.auth.filter_disable=false\n\n\n\n## Retry configs\n# The retry limit excluding the first attempt before attempting for retries. Default is set to 5.\nkernel.retry.attempts.limit=5\n# The initial interval to be used for exponential backoff in milli seconds. If the exponential backoff is disabled by setting 'kernel.retry.exponential.backoff.multiplier' value as 1, this initial interval will be used as the fixed backoff interval for every retries. Default value is 200 millisecs\nkernel.retry.exponential.backoff.initial.interval.millisecs=100\n# The multiplier for exponential backoff intreval. A double value greater than or equal to 1. Setting to 1 will make it to fixed backoff, more than 1 will apply exponential backoff. Default is 1.0 (fixed backoff). For exponential backoff the suggested value is 1.5 or 2. The next backoff interval is calculated with the formula: NextBackOffInterval = initialInterval * Math.pow(multiplier, retryCount)\nkernel.retry.exponential.backoff.multiplier=1.5\nkernel.retry.exponential.backoff.max.interval.millisecs=1000\n# Whether to traverse to the root cause exception from the exception thrown and use the same root cause to decide whether to retry or not. Default is true.\nkernel.retry.traverse.root.cause.enabled=false\n#Comma separated List of fully qualified Exceptions which are retryable (inclusion list). Their subclasses will also be considered in the evaluation.\nkernel.retry.retryable.exceptions=io.mosip.hotlist.exception.HotlistRetryException\n#Comma separated List of fully qualified Exceptions which are not-retryable (exclusion list). Their subclasses will also be considered in the evaluation.\nkernel.retry.nonretryable.exceptions=\n\n# Roles authorized for hotlist APIs\nmosip.role.admin.hotlist.postHotlistBlock=HOTLIST_ADMIN,HOTLIST_ADMIN\nmosip.role.admin.hotlist.getHotlistStatus=HOTLIST_ADMIN,HOTLIST_ADMIN,REGISTRATION_PROCESSOR,RESIDENT,REGISTRATION_ADMIN,REGISTRATION_SUPERVISOR,REGISTRATION_OFFICER,ID_AUTHENTICATION,ID_REPOSITORY\nmosip.role.admin.hotlist.postHotlistUnblock=HOTLIST_ADMIN,HOTLIST_ADMIN\n\nauth.server.admin.allowed.audience=mosip-hotlist-client,mosip-regproc-client,mosip-ida-client,mosip-idrepo-client\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/mosip-config/blob/master/id-authentication-default.properties", + "title": "id-authentication-default.properties", + "repo": "mosip/mosip-config", + "file_path": "id-authentication-default.properties", + "language": "properties", + "content": "# Follow properites have their values assigned via 'overrides' environment variables of config server docker.\n# DO NOT define these in any of the property files. They must be passed as env variables. Refer to config-server\n# helm chart:\n# db.dbuser.password \n# ida.websub.authtype.callback.secret\n# ida.websub.credential.issue.callback.secret\n# ida.websub.partner.service.callback.secret\n# ida.websub.ca.certificate.callback.secret\n# ida.websub.hotlist.callback.secret\n# mosip.kernel.tokenid.uin.salt\n# mpartner.default.auth.secret\n# mosip.kernel.tokenid.partnercode.salt\n# softhsm.ida.security.pin\n# ida.websub.masterdata.templates.callback.secret\n# ida.websub.masterdata.titles.callback.secret\n\n## Client\n# The Online Verification partner ID associated to the IDA instance.\n# This is used to subscribe to the credential issuance event notification sent by credential service.\n# for the particular Online Verification partner.\n# This credential issueance notification is handled inside Internal Authentication module.\n# The credentials issued to the partner will be as per the data-share policy associated to the partner.\n# TO DO: Change the property key to online-verification-partner-id\nida-auth-partner-id=mpartner-default-auth\n# Kernel auth client ID for IDA\n#Note: since the Online verification Partner ID is used as client ID, for a different IDA instance, this needs to be changed accordingly\n#and also to be added to the 'auth.server.admin.allowed.audience' property of all dependency modules.\nmosip.ida.auth.clientId=${ida-auth-partner-id}\nmosip.ida.auth.secretKey=${mpartner.default.auth.secret}\n \nmosip.ida.auth.appId=ida\n\n## Database\n# Database hostname below is assuming postgres is running inside cluster in 'postgres' namespace\n# If database is external to production, provide the DNS or ip of the host and port \nmosip.ida.database.hostname=${mosip.database.hostname.override:postgres-postgresql.postgres}\nmosip.ida.database.port=${mosip.database.port.override:5432}\nmosip.ida.database.user=idauser\nmosip.ida.database.password=${db.dbuser.password}\n\njavax.persistence.jdbc.driverClassName=org.postgresql.Driver\njavax.persistence.jdbc.driver=org.postgresql.Driver\njavax.persistence.jdbc.url=jdbc:postgresql://${mosip.ida.database.hostname}:${mosip.ida.database.port}/mosip_ida\njavax.persistence.jdbc.user=${mosip.ida.database.user}\njavax.persistence.jdbc.username=${mosip.ida.database.user}\njavax.persistence.jdbc.password=${mosip.ida.database.password}\njavax.persistence.jdbc.schema=ida\njavax.persistence.jdbc.uinHashTable=uin_hash_salt\njavax.persistence.jdbc.uinEncryptTable=uin_encrypt_salt\n\n## Hibernate\nhibernate.dialect=org.hibernate.dialect.PostgreSQLDialect\nhibernate.jdbc.lob.non_contextual_creation=true\nhibernate.hbm2ddl.auto=none\nhibernate.format_sql=true\nhibernate.connection.charSet=utf8\nhibernate.cache.use_second_level_cache=false\nhibernate.cache.use_query_cache=false\nhibernate.cache.use_structured_entries=false\nhibernate.generate_statistics=false\nspring.datasource.initialization-mode=never\nhibernate.temp.use_jdbc_metadata_defaults=false\nspring.jpa.properties.hibernate.jdbc.lob.non_contextual_creation=true\nlog4j.logger.org.hibernate=warn\nhibernate.show_sql=false\n\napplication.id=IDA\napplication.name=ID-Authentication\n\n## Reference ID used for crypto manager in authentication (for request body)\npartner.reference.id=PARTNER\n## Reference ID used for crypto manager in internal authentication (for request body)\ninternal.reference.id=INTERNAL\n## Reference ID used for crypto manager in authentication for biometrics\n## TO DO: Value to be Changed to IDA-BIO\npartner.biometric.reference.id=IDA-FIR\n## Reference ID used for crypto manager in internal authentication for biometrics\ninternal.biometric.reference.id=INTERNAL\n\nidentity-cache.reference.id=IDENTITY_CACHE\nmosip.sign.applicationid=${application.id}\nmosip.sign.refid=SIGN\n\n## Kernel Symmetric Key decryption bytes count for AAD \nida.aad.lastbytes.num=16\n## Kernel Symmetric Key decryption bytes count for Salt \nida.salt.lastbytes.num=12\n\n## Request timeout used across all REST API calls in IDA\nmosip.ida.request.timeout.secs=10\n## Common JSON media type used across all REST API calls in IDA\nmosip.ida.request.mediaType=application/json\n\n## IDA mapping\nida.mapping.json.filename=identity-mapping.json\nmosip.ida.mapping.json-uri=${spring.cloud.config.uri}/${spring.application.name}/${spring.profiles.active}/${spring.cloud.config.label}/${ida.mapping.json.filename}\nida.mapping.property.source=url:${mosip.ida.mapping.json-uri}\n\nidp.amr-acr.mapping.json.filename=amr-acr-mapping.json\nmosip.idp.amr-acr.mapping.json-uri=${spring.cloud.config.uri}/${spring.application.name}/${spring.profiles.active}/${spring.cloud.config.label}/${idp.amr-acr.mapping.json.filename} \nidp.amr-acr.ida.mapping.property.source=${mosip.idp.amr-acr.mapping.json-uri}\n\n# The attribute name in the Mapping Json used to fetch Anonymous profile preferred language attribute\nmosip.preferred.language.attribute.name=preferredLanguage\n# The attribute name in the Mapping Json used to fetch Anonymous profile location attributes\nmosip.location.profile.attribute.name=locationHierarchyForProfiling\n# Used in Child Auth Filter\nmosip.date-of-birth.attribute.name=dateOfBirth\n# Used in DOB matching and Child Auth filter\nmosip.date-of-birth.pattern=yyyy/MM/dd\n\n# The separators for composite ID Attribute such as fullAddress. \n# By default the separator is space.\n# Usage: ida.id.attribute.separator.=\n# For Example, full address attributes are separated with comman (,).\nida.id.attribute.separator.fullAddress=,\n\n## Biosdk\n## Url below assumes the biosdk server is running inside cluster in `biosdk` namespace\nmosip.biosdk.default.service.url=${mosip.mock.biosdk.url}/biosdk-service\n# The fully qualified Class Name of the BIO SDK API implemented for Finger modality\n# This class will be loaded in runtime, the containing jar should be available in classpath\nmosip.biometric.sdk.providers.finger.mosip-ref-impl-sdk-client.classname=io.mosip.biosdk.client.impl.spec_1_0.Client_V_1_0\n# The version of the BIO SDK API implemeted for Finger modality\nmosip.biometric.sdk.providers.finger.mosip-ref-impl-sdk-client.version=0.9\n# The default URL will be taken if no format specified in the extraction or the incoming extraction format is not configured.\n# If the below default configuration is not configured, the one of the configured url will be used as the default URL.\n# If no URL is configured, the default URL will be taken from the environment variable 'mosip_biosdk_service'.\nmosip.biometric.sdk.providers.finger.mosip-ref-impl-sdk-client.format.url.default=${mosip.biosdk.default.service.url}\n# The fully qualified Class Name of the BIO SDK API implemented for Iris modality\n# This class will be loaded in runtime, the containing jar should be available in classpath\nmosip.biometric.sdk.providers.iris.mosip-ref-impl-sdk-client.classname=io.mosip.biosdk.client.impl.spec_1_0.Client_V_1_0\n# The version of the BIO SDK API implemeted for Iris modality\nmosip.biometric.sdk.providers.iris.mosip-ref-impl-sdk-client.version=0.9\nmosip.biometric.sdk.providers.iris.mosip-ref-impl-sdk-client.format.url.default=${mosip.biosdk.default.service.url}\n# The fully qualified Class Name of the BIO SDK API implemented for Face modality\n# This class will be loaded in runtime, the containing jar should be available in classpath\nmosip.biometric.sdk.providers.face.mosip-ref-impl-sdk-client.classname=io.mosip.biosdk.client.impl.spec_1_0.Client_V_1_0\n# The version of the BIO SDK API implemeted for Face modality\nmosip.biometric.sdk.providers.face.mosip-ref-impl-sdk-client.version=0.9\nmosip.biometric.sdk.providers.face.mosip-ref-impl-sdk-client.format.url.default=${mosip.biosdk.default.service.url}\n\n## Kernel-Audit\naudit.rest.uri=${mosip.kernel.auditmanager.url}/v1/auditmanager/audits\naudit.rest.httpMethod=POST\naudit.rest.headers.mediaType=${mosip.ida.request.mediaType}\naudit.rest.timeout=${mosip.ida.request.timeout.secs}\n\n## Kernel OTP Validator\notp-validate.rest.uri=${mosip.kernel.otpmanager.url}/v1/otpmanager/otp/validate\notp-validate.rest.httpMethod=GET\notp-validate.rest.headers.mediaType=${mosip.ida.request.mediaType}\notp-validate.rest.timeout=${mosip.ida.request.timeout.secs}\n\n## Kernel OTP Generator\notp-generate.rest.uri=${mosip.kernel.otpmanager.url}/v1/otpmanager/otp/generate\notp-generate.rest.httpMethod=POST\notp-generate.rest.headers.mediaType=${mosip.ida.request.mediaType}\notp-generate.rest.timeout=${mosip.ida.request.timeout.secs}\n\n## Mail Notification\nmail-notification.rest.uri=${mosip.kernel.notification.url}/v1/notifier/email/send\nmail-notification.rest.httpMethod=POST\nmail-notification.rest.headers.mediaType=multipart/form-data\nmail-notification.rest.timeout=${mosip.ida.request.timeout.secs}\n\n## SMS Notification\nsms-notification.rest.uri=${mosip.kernel.notification.url}/v1/notifier/sms/send\nsms-notification.rest.httpMethod=POST\nsms-notification.rest.headers.mediaType=${mosip.ida.request.mediaType}\nsms-notification.rest.timeout=${mosip.ida.request.timeout.secs}\n\n## Get Identity Data for RID (with type specified as query param) - Used in Internal Auth based on User ID\nrid-uin.rest.uri=${mosip.idrepo.identity.url}/idrepository/v1/identity/idvid/{rid}?type={type}\nrid-uin.rest.httpMethod=GET\nrid-uin.rest.headers.mediaType=${mosip.ida.request.mediaType}\nrid-uin.rest.timeout=${mosip.ida.request.timeout.secs}\n\n## Get Identity Data for RID (without type specified) - Used in Internal Auth based on User ID\nrid-uin-auth.rest.uri=${mosip.idrepo.identity.url}/idrepository/v1/identity/idvid/{rid}\nrid-uin-auth.rest.httpMethod=GET\nrid-uin-auth.rest.headers.mediaType=${mosip.ida.request.mediaType}\nrid-uin-auth.rest.timeout=${mosip.ida.request.timeout.secs}\n\n## Partner service API to validate MISP Lisence Key - Partner ID - Partner API Key combination\nid-pmp-service.rest.uri=${mosip.pms.partnermanager.url}/v1/partnermanager/partners/{partner_id}/apikey/{partner_api_key}/misp/{misp_license_key}/validate?needPartnerCert={need_partner_cert}\nid-pmp-service.rest.httpMethod=GET\nid-pmp-service.rest.headers.mediaType=${mosip.ida.request.mediaType}\nid-pmp-service.rest.timeout=${mosip.ida.request.timeout.secs}\n\n## Data Share API configurations - used to download data from data share URL provided in credential issueance event\ndata-share-get.rest.uri=dummy_url_to_be_replaced_in_runtime\ndata-share-get.rest.httpMethod=GET\ndata-share-get.rest.headers.mediaType=application/octet-stream\ndata-share-get.rest.timeout=10\ndata-share-get-decrypt-ref-id=${ida-auth-partner-id}\n\n## Title Service rest api-GET\nid-masterdata-title-service.rest.uri=${mosip.kernel.masterdata.url}/v1/masterdata/title\nid-masterdata-title-service.rest.httpMethod=GET\nid-masterdata-title-service.rest.headers.mediaType=${mosip.ida.request.mediaType}\nid-masterdata-title-service.rest.timeout=${mosip.ida.request.timeout.secs}\n\n## Master Data - Template Single Language\nid-masterdata-template-service.rest.uri=${mosip.kernel.masterdata.url}/v1/masterdata/templates/{langcode}/{templatetypecode}\nid-masterdata-template-service.rest.httpMethod=GET\nid-masterdata-template-service.rest.headers.mediaType=${mosip.ida.request.mediaType}\nid-masterdata-template-service.rest.timeout=${mosip.ida.request.timeout.secs}\n\n## Master Data - Template Multi language\nid-masterdata-template-service-multilang.rest.uri=${mosip.kernel.masterdata.url}/v1/masterdata/templates/templatetypecodes/{code}\nid-masterdata-template-service-multilang.rest.httpMethod=GET\nid-masterdata-template-service-multilang.rest.headers.mediaType=${mosip.ida.request.mediaType}\nid-masterdata-template-service-multilang.rest.timeout=${mosip.ida.request.timeout.secs}\n\n## Websub\nida-websub-authtype-callback-secret=${ida.websub.authtype.callback.secret}\nida-websub-credential-issue-callback-secret=${ida.websub.credential.issue.callback.secret}\nida-websub-partner-service-callback-secret=${ida.websub.partner.service.callback.secret}\nida-websub-hotlist-callback-secret=${ida.websub.hotlist.callback.secret}\nida-websub-masterdata-templates-callback-secret=${ida.websub.masterdata.templates.callback.secret}\nida-websub-masterdata-titles-callback-secret=${ida.websub.masterdata.titles.callback.secret}\nida-websub-credential-issue-callback-url=\n## Callback url for MISP/Partner change notification events\nida-websub-partner-service-callback-url=${mosip.ida.internal.url}/${server.servlet.context-path}/callback/partnermanagement/{eventType}\nida-websub-partner-service-apikey-approved-callback-relative-url=${server.servlet.context-path}/callback/partnermanagement/apikey_approved\nida-websub-partner-service-partner-updated-callback-relative-url=${server.servlet.context-path}/callback/partnermanagement/partner_updated\nida-websub-partner-service-policy-updated-callback-relative-url=${server.servlet.context-path}/callback/partnermanagement/policy_updated\nida-websub-partner-service-partner-api-key-updated-callback-relative-url=${server.servlet.context-path}/callback/partnermanagement/partner_api_key_updated\nida-websub-partner-service-misp-license-generated-callback-relative-url=${server.servlet.context-path}/callback/partnermanagement/misp_license_generated\nida-websub-partner-service-misp-license-updated-callback-relative-url=${server.servlet.context-path}/callback/partnermanagement/misp_license_updated\nida-websub-partner-service-oidc-client-created-callback-relative-url=${server.servlet.context-path}/callback/partnermanagement/oidc_client_created\nida-websub-partner-service-oidc-client-updated-callback-relative-url=${server.servlet.context-path}/callback/partnermanagement/oidc_client_updated\n\n\n#Delay (in milliseconds) for subscription on application startup to avoid failure during intent verification by hub.\nsubscriptions-delay-on-startup_millisecs=120000\n\n# The time interval in seconds to schedule subscription of topics which is done as a\n# work-around for the bug: MOSIP-9496. By default the\n# this property value is set to 0 that disables this workaround.\n# To enable the resubscrition scheduling, this property should be assigned with a positive\n# number like 1 * 60 * 60 = 3600 for one hour\nida-websub-resubscription-delay-secs=43200\n\ndelay-to-pull-missing-credential-after-topic-subscription_millisecs=60000\n\n## Websub even topics\nida-topic-auth-type-status-updated=${ida-auth-partner-id}/AUTH_TYPE_STATUS_UPDATE\n## Topic for Credential Issueance Event (for UIN/VID create/update events)\nida-topic-credential-issued=${ida-auth-partner-id}/CREDENTIAL_ISSUED\n## Topic for ID Remove Event (UIN blocked / VID revoked events)\nida-topic-remove-id=${ida-auth-partner-id}/REMOVE_ID\n## Topic for ID Deactivate Event (UIN/VID deactivate events)\nida-topic-deactivate-id=${ida-auth-partner-id}/DEACTIVATE_ID\n## Topic for ID Activate Event (UIN/VID activate events)\nida-topic-activate-id=${ida-auth-partner-id}/ACTIVATE_ID\nida-topic-pmp-partner-updated=PARTNER_UPDATED\nida-topic-pmp-partner-api-key-updated=APIKEY_UPDATED\nida-topic-pmp-policy-updated=POLICY_UPDATED\nida-topic-hotlist=MOSIP_HOTLIST\nida-topic-credential-status-update=CREDENTIAL_STATUS_UPDATE\nida-topic-auth-type-status-update-acknowledge=AUTH_TYPE_STATUS_UPDATE_ACK\nida-topic-auth-transaction-status=AUTHENTICATION_TRANSACTION_STATUS\nida-topic-masterdata-templates=MASTERDATA_IDAUTHENTICATION_TEMPLATES\nida-topic-masterdata-titles=MASTERDATA_TITLES\nida-topic-pmp-misp-license-generated=MISP_LICENSE_GENERATED\nida-topic-pmp-misp-license-updated=MISP_LICENSE_UPDATED\nida-topic-pmp-partner-api-key-approved=APIKEY_APPROVED\nida-topic-fraud-analysis=IDA_FRAUD_ANALYTICS\nida-topic-auth-anonymous-profile=ANONYMOUS_PROFILE\nida-topic-pmp-oidc-client-created=OIDC_CLIENT_CREATED\nida-topic-pmp-oidc-client-updated=OIDC_CLIENT_UPDATED\nida-topic-remove-id-status=REMOVE_ID_STATUS\n\n# in minutes\nmosip.iam.adapter.validate-expiry-check-rate=15\n# in minutes\nmosip.iam.adapter.renewal-before-expiry-interval=15\n#this should be false if you don?t use the self token restTemplate from auth adapter true if you do (needed for websubclient).\nmosip.iam.adapter.self-token-renewal-enable=true\nmosip.auth.filter_disable=false\n\n## IDA cache\n## IDA cache Time to live in days - To clear cache scheduled based on the days provided.\n## value <= 0 means cache clearing based on schedule is disabled.\nida-cache-ttl-in-days=1\n## To disable cache, set value to NONE, otherwise SIMPLE to enable cache.\n## Value is based on CacheType enum provided by Spring Boot\nspring.cache.type=SIMPLE\n\n## Function configs\n#The modulo value to be calculated for a UIN/VID used to get salt value to be used in UIN/VID hashing\nida.uin.salt.modulo=1000\n\n## ID demographic normalization\n# This is used to define the seperator for normalizing regex(pattern) and the replacement word. Default is set to '='.\nida.norm.sep==\n####### Demo Name/Address Normalization Regular Expressions and their replacement configurations\n#Format:\n# ida.demo..normalization.regex.[]=${ida.norm.sep}\n# If replacement string is not specified that regular expression will be replaced with empty string\n# Note: The sequence should not break in the middle, otherwise all normalization properties will not be read for the particular type.\n## For eng.\nida.demo.address.normalization.regex.eng[0]=[CcSsDdWwHh]/[Oo]\nida.demo.address.normalization.regex.eng[1]=(M|m|D|d)(rs?)(.)\nida.demo.address.normalization.regex.eng[2]=(N|n)(O|o)(\\\\.)?\nida.demo.address.normalization.regex.eng[3]=[aA][pP][aA][rR][tT][mM][eE][nN][tT]${ida.norm.sep}apt \nida.demo.address.normalization.regex.eng[4]=[sS][tT][rR][eE][eE][tT]${ida.norm.sep}st \nida.demo.address.normalization.regex.eng[5]=[rR][oO][aA][dD]${ida.norm.sep}rd \nida.demo.address.normalization.regex.eng[6]=[mM][aA][iI][nN]${ida.norm.sep}mn \nida.demo.address.normalization.regex.eng[7]=[cC][rR][oO][sS][sS]${ida.norm.sep}crs \nida.demo.address.normalization.regex.eng[8]=[oO][pP][pP][oO][sS][iI][tT][eE]${ida.norm.sep}opp \nida.demo.address.normalization.regex.eng[9]=[mM][aA][rR][kK][eE][tT]${ida.norm.sep}mkt \nida.demo.address.normalization.regex.eng[10]=1[sS][tT]${ida.norm.sep}1 \nida.demo.address.normalization.regex.eng[11]=1[tT][hH]${ida.norm.sep}1 \nida.demo.address.normalization.regex.eng[12]=2[nN][dD]${ida.norm.sep}2 \nida.demo.address.normalization.regex.eng[13]=2[tT][hH]${ida.norm.sep}2 \nida.demo.address.normalization.regex.eng[14]=3[rR][dD]${ida.norm.sep}3 \nida.demo.address.normalization.regex.eng[15]=3[tT][hH]${ida.norm.sep}3 \nida.demo.address.normalization.regex.eng[16]=4[tT][hH]${ida.norm.sep}4 \nida.demo.address.normalization.regex.eng[17]=5[tT][hH]${ida.norm.sep}5 \nida.demo.address.normalization.regex.eng[18]=6[tT][hH]${ida.norm.sep}6 \nida.demo.address.normalization.regex.eng[19]=7[tT][hH]${ida.norm.sep}7 \nida.demo.address.normalization.regex.eng[20]=8[tT][hH]${ida.norm.sep}8 \nida.demo.address.normalization.regex.eng[21]=9[tT][hH]${ida.norm.sep}9 \nida.demo.address.normalization.regex.eng[22]=0[tT][hH]${ida.norm.sep}0 \n# Note: the common normalization attributes will be replaced at the end.\n# Special characters are removed : . , - * ( ) [ ] ` ' / \\ # \"\n# Replace spcial char with space.Trailing space is removed from property. As a workaround first replacing with \" .\" then removing the \".\"\nida.demo.common.normalization.regex.any[0]=[\\\\.|,|\\\\-|\\\\*|\\\\(|\\\\)|\\\\[|\\\\]|`|\\\\'|/|\\\\|#|\\\"]${ida.norm.sep} .\n# Trailing space is removed from property. As a workaround first replacing with \" .\" then removing the \".\"\nida.demo.common.normalization.regex.any[1]=\\\\s+${ida.norm.sep} .\nida.demo.common.normalization.regex.any[2]=\\\\.${ida.norm.sep}\n\n# Language Code\nida.errormessages.default-lang=en\n\n## OTP flooding\n## Configure Time limit for OTP Flooding scenario (in minutes) \notp.request.flooding.duration=1\notp.request.flooding.max-count=100\n## OTP Freezing. When user attempts multiple times with invalid OTP consecutively, it will be allowed only for certain number of attempts as per the theshold. After that it will go to frozen state for the user for the given duration. During the frozen time the OTP Request and validation both will be throwing error. After that it will be unfrozen and both actions will be allowed. Default is 5 if unspecified.\nmosip.ida.otp.validation.attempt.count.threshold=5\n# The duration in minutes for which the OTP will be frozen for a user, after that it it will be unfrozen. Default is 30 mins if unspecified.\nmosip.ida.otp.frozen.duration.minutes=30\n\n## Notification templates\nida.auth.mail.content.template=auth-email-content\nida.auth.mail.subject.template=auth-email-subject\nida.otp.mail.content.template=ida-auth-otp-email-content-template\nida.otp.mail.subject.template=ida-auth-otp-email-subject-template\nida.auth.sms.template=auth-sms\nida.otp.sms.template=ida-auth-otp-sms-template\n\n## UIN/VID/USERID Masking to be done on SMS/EMAIL notification\n## Configure the no of digits to be masked while masking UIN/VID/USERID.\n## For example if UIN is 1234567890 and mask count is 6, masked UIN will be: XXXXXX7890\nnotification.uin.masking.charcount=8\nnotification.date.format=dd-MM-yyyy\nnotification.time.format=HH:mm:ss\n\n## Allowed authentication types for Authentciation/E-KYC/Internal Authentication requests\n## Accepted values otp-request, otp, demo, bio-Finger, bio-Iris, bio-Face\n## Configure authentications permissable for a country\nauth.types.allowed=demo,otp,bio-Finger,bio-Iris,bio-Face,pwd,kbt\n## Configure authentications permissable for e-KYC for a country\nekyc.auth.types.allowed=demo,otp,bio-Finger,bio-Iris,bio-Face\n## Configure authentication types permissable for internal authentication \ninternal.auth.types.allowed=otp,bio-Finger,bio-Iris,bio-Face\n\n## Allowed IdTypes for hotlisting \nmosip.ida.internal.hotlist.idtypes.allowed=UIN,VID,PARTNER_ID,DEVICE,DEVICE_PROVIDER\n\n## Datetime\n#Example allowed date time formats: \"2020-10-23T12:21:38.660Z\" , 2019-03-28T10:01:57.086+05:30\ndatetime.pattern=yyyy-MM-dd'T'HH:mm:ss.SSSXXX\n\n# Request IDs used in IDA REST APIs\nida.api.id.auth=mosip.identity.auth\nida.api.id.kyc=mosip.identity.kyc\nida.api.id.otp=mosip.identity.otp\nida.api.id.staticpin=mosip.identity.staticpin\nida.api.id.vid=mosip.identity.vid\nida.api.id.internal=mosip.identity.auth.internal\nida.api.id.auth.transactions=mosip.identity.authtransactions.read\nida.api.id.otp.internal=mosip.identity.otp.internal\nida.api.id.kycauth=mosip.identity.kycauth\nida.api.id.kycexchange=mosip.identity.kycexchange\n\n## Request versions\nida.api.version.auth=1.0\nida.api.version.kyc=1.0\nida.api.version.otp=1.0\nida.api.version.staticpin=1.0\nida.api.version.vid=1.0\nida.api.version.internal=1.0\nida.api.version.auth.transactions=1.0\nida.api.version.otp.internal=1.0\nida.api.version.kycauth=1.0\nida.api.version.kycexchange=1.0\n\n## Auth response token config\n## Preference to turn on/off of authentication response token for a Country\n## A partner specific policy will govern how the response token is generated, whether it should be Random/Partner or Policy specific\n## TO DO: Remane static.token.enable to auth.token.enable\nstatic.token.enable=true\n\n## Allowed ID Types (allowed values : UIN/VID/USERID) to be supported for Authentication/KYC/OTP Requests\nrequest.idtypes.allowed=UIN,VID,HANDLE\n## The ID types to be supported for Internal Authentication/OTP Requests\nrequest.idtypes.allowed.internalauth=UIN,VID\n\n## Cryptograpic/Signature verificate related configurations\nmosip.ida.internal.thumbprint-validation-required=false\nmosip.ida.internal.trust-validation-required=false\n\n## Kernel retry\n# The retry limit excluding the first attempt before attempting for retries. Default is set to 5.\nkernel.retry.attempts.limit=5\n## The initial interval to be used for exponential backoff in milli seconds. If the exponential backoff is disabled by setting 'kernel.retry.exponential.backoff.multiplier' value as 1, this initial interval will be used as the fixed backoff interval for every retries. Default value is 200 millisecs\nkernel.retry.exponential.backoff.initial.interval.millisecs=100\n## The multiplier for exponential backoff intreval. A double value greater than or equal to 1. Setting to 1 will make it to fixed backoff, more than 1 will apply exponential backoff. Default is 1.0 (fixed backoff). For exponential backoff the suggested value is 1.5 or 2. The next backoff interval is calculated with the formula: NextBackOffInterval = initialInterval * Math.pow(multiplier, retryCount)\nkernel.retry.exponential.backoff.multiplier=1.5\nkernel.retry.exponential.backoff.max.interval.millisecs=1000\n## Whether to traverse to the root cause exception from the exception thrown and use the same root cause to decide whether to retry or not. Default is true.\nkernel.retry.traverse.root.cause.enabled=false\n## Comma separated List of fully qualified Exceptions which are retryable (inclusion list). Their subclasses will also be considered in the evaluation.\nkernel.retry.retryable.exceptions=io.mosip.idrepository.core.exception.IdRepoRetryException,org.springframework.dao.DataIntegrityViolationException,org.hibernate.exception.ConstraintViolationException,org.springframework.orm.ObjectOptimisticLockingFailureExceptionf\n## Comma separated List of fully qualified Exceptions which are not-retryable (exclusion list). Their subclasses will also be considered in the evaluation.\nkernel.retry.nonretryable.exceptions=\n\n## Credential Store batch and retry configurations\n## To disable automatic job launch in startup, setting to false.\nspring.batch.job.enabled=false\n## Chunk size of items to be processed in spring batch. This value also assigned to the thread count, and hence all the items are processed in parellel asynchronusly.\nida.batch.credential.store.chunk.size=5\nida.batch.credential.store.job.delay=1000\n## The retry limit excluding the first attempt before attempting for retries\nida.credential.store.retry.max.limit=10\nida.credential.store.retry.backoff.interval.millisecs=5000\n## The multiplier for exponential backoff intreval. A double value greater than or equal to 1. Setting to 1 will make it to fixed backoff, more than 1 will apply exponential backoff. Default is 1.0 (fixed backoff). For exponential backoff the suggested value is 1.5 or 2. The next backoff interval is calculated with the formula: NextBackOffInterval = initialInterval * Math.pow(multiplier, retryCount)\nida.credential.store.retry.backoff.exponential.multiplier=1.5\nida.credential.store.retry.backoff.exponential.max.interval.millisecs=120000\n\n## Configurations needed for dependent libraries\n## Softhsm\nmosip.kernel.keymanager.certificate.default.common-name=www.mosip.io\nmosip.kernel.keymanager.hsm.config-path=/config/softhsm-application.conf\nmosip.kernel.keymanager.hsm.keystore-type=PKCS11\nmosip.kernel.keymanager.hsm.keystore-pass=${softhsm.ida.security.pin}\n\n## Security - used in Internal Authentication Services by default Kernel Auth Adapter\nmosip.security.csrf-enable=false\nmosip.security.cors-enable=false\nmosip.security.origins=localhost:8080\nmosip.security.secure-cookie=false\n\n## Key-manager\nmosip.root.key.applicationid=ROOT\nmosip.kernel.certificate.sign.algorithm=SHA256withRSA\n\n## Default certificate params\nmosip.kernel.keymanager.certificate.default.organizational-unit=MOSIP-TECH-CENTER\nmosip.kernel.keymanager.certificate.default.organization=IITB\nmosip.kernel.keymanager.certificate.default.location=BANGALORE\nmosip.kernel.keymanager.certificate.default.state=KA\nmosip.kernel.keymanager.certificate.default.country=IN\n\n## Zero Knowledge Master & Public Key identifier.\nmosip.kernel.zkcrypto.masterkey.application.id=${application.id}\nmosip.kernel.zkcrypto.masterkey.reference.id=${identity-cache.reference.id}\nmosip.kernel.zkcrypto.publickey.application.id=${application.id}\nmosip.kernel.zkcrypto.publickey.reference.id=CRED_SERVICE\nmosip.kernel.zkcrypto.wrap.algorithm-name=AES/ECB/NoPadding\nmosip.kernel.zkcrypto.derive.encrypt.algorithm-name=AES/ECB/PKCS5Padding\n\n## Application Id for PMS master key.\nmosip.kernel.partner.sign.masterkey.application.id=PMS\n\n## Kernel salt generator\nmosip.kernel.salt-generator.db.key-alias=javax.persistence.jdbc\nmosip.kernel.salt-generator.schemaName=${javax.persistence.jdbc.schema}\n\n## TokenId generator\nmosip.kernel.tokenid.uin.salt=${mosip.kernel.uin.salt}\nmosip.kernel.tokenid.partnercode.salt=${mosip.kernel.partnercode.salt}\n\n## Partner Management Service allowed partner domains\nmosip.kernel.partner.allowed.domains=AUTH,DEVICE,FTM,MISP\n\n# IAM Adapter\nmosip.iam.adapter.clientid=${mosip.ida.auth.clientId}\nmosip.iam.adapter.clientsecret=${mosip.ida.auth.secretKey}\nmosip.iam.adapter.appid=${mosip.ida.auth.appId}\nmosip.authmanager.client-token-endpoint=${mosip.kernel.authmanager.url}/v1/authmanager/authenticate/clientidsecretkey\n\n## IDA key generator\nkeymanager.persistence.jdbc.driver=org.postgresql.Driver\nkeymanager_database_url=jdbc:postgresql://${mosip.ida.database.hostname}:${mosip.ida.database.port}/mosip_ida\nkeymanager_database_username=${mosip.ida.database.user}\nkeymanager_database_password=${db.dbuser.password}\nmosip.kernel.keymanager.autogen.appids.list=ROOT,${application.id},${mosip.sign.applicationid}:${mosip.sign.refid},${application.id}:${mosip.kernel.zkcrypto.masterkey.reference.id},IDA_KYC_EXCHANGE,IDA_KEY_BINDING,IDA_VCI_EXCHANGE\nmosip.kernel.keymanager.autogen.basekeys.list=${application.id}:${internal.reference.id},${application.id}:${partner.reference.id},${application.id}:${partner.biometric.reference.id},${application.id}:${mosip.kernel.zkcrypto.publickey.reference.id},${application.id}:${ida-auth-partner-id}\nzkcrypto.random.key.generate.count=0\nkeymanager.persistence.jdbc.schema=ida\n\n## TODO: For testing. Revert in production\n#mosip.kernel.keymanager.keystore.keyreference.enable.cache=false\n\n## Admin\n# Configure N time period threshold for accepting auth/OTP/KYC request for a country\nauthrequest.received-time-allowed.seconds=30\n# Configuration for +/- time period adjustment in minutes for the request time validation, so that \n# The requests originating from a system that is not in time-sync will be accepted for the time period\nauthrequest.received-time-adjustment.seconds=30\n#Configuration for time period difference between each biometric segment and digital Id capture\nauthrequest.biometrics.allowed-segment-time-difference-in-seconds=120\n\n# Credential Request API to get Request IDs for the given status, pageStart and page\ncred-request-service-get-request-ids.pageSize=10\ncred-request-service-get-request-ids.statusCode=ISSUED\nida-max-credential-pull-window-days=2\nida-max-websub-messages-pull-window-days=2\ncred-request-service-get-request-ids.rest.uri=${mosip.idrepo.credrequest.generator.url}/v1/credentialrequest/getRequestIds?direction=ASC&orderBy=updateDateTime&pageNumber={pageNumber}&pageSize=${cred-request-service-get-request-ids.pageSize}&statusCode=${cred-request-service-get-request-ids.statusCode}&effectivedtimes={effectivedtimes}\ncred-request-service-get-request-ids.rest.httpMethod=GET\ncred-request-service-get-request-ids.rest.headers.mediaType=${mosip.ida.request.mediaType}\ncred-request-service-get-request-ids.rest.timeout=${mosip.ida.request.timeout.secs}\n\n# Credential Request API to get Request IDs for the given status, pageStart and page\ncred-request-service-retrigger-cred-issuance.rest.uri=${mosip.idrepo.credrequest.generator.url}/v1/credentialrequest/retrigger/{requestId}\ncred-request-service-retrigger-cred-issuance.rest.httpMethod=PUT\ncred-request-service-retrigger-cred-issuance.rest.headers.mediaType=${mosip.ida.request.mediaType}\ncred-request-service-retrigger-cred-issuance.rest.timeout=${mosip.ida.request.timeout.secs}\n\n# Child Auth Filter configurations\nida.child-auth-filter.factors.denied=otp,bio\nida.child-auth-filter.child.max.age=5\n\n# The chunk size of failed message items to be processed in spring batch. This value also assigned to the thread count, and hence all the items are processed in parellel asynchronusly.\nida.fetch.failed.websub.messages.chunk.size=10\n\n## Auth filters\n# Comma Seperated list of fully qualified classes of the auth filters in the order in which they have to be executed.\n# If validation with one filter fails with an error, the rest of the filter in the sequence will be skipped\n# and error will be returned in the auth response.\n\n#Auth Filters for external auth\nida.mosip.external.auth.filter.classes.in.execution.order=io.mosip.authentication.hotlistfilter.impl.PartnerIdHotlistFilterImpl,io.mosip.authentication.hotlistfilter.impl.IndividualIdHotlistFilterImpl,io.mosip.authentication.hotlistfilter.impl.DeviceProviderHotlistFilterImpl,io.mosip.authentication.hotlistfilter.impl.DeviceHotlistFilterImpl,io.mosip.authentication.childauthfilter.impl.ChildAuthFilterImpl,io.mosip.authentication.authtypelockfilter.impl.AuthTypeLockFilterImpl\n#Auth Filters for kyc auth\nida.mosip.internal.auth.filter.classes.in.execution.order=io.mosip.authentication.hotlistfilter.impl.IndividualIdHotlistFilterImpl,io.mosip.authentication.childauthfilter.impl.ChildAuthFilterImpl\n\n## Demo SDK integration\nmosip.demographic.sdk.api.classname=io.mosip.demosdk.client.impl.spec_1_0.Client_V_1_0\nmosip.normalizer.sdk.api.classname=io.mosip.demosdk.client.impl.spec_1_0.Normalizer_V_1_0\n\n#This is the frontend url configured in the open-id system. This url should match the issuer attribute in JWT.\nauth.server.admin.issuer.uri=${keycloak.external.url}/auth/realms/\nauth.server.validate.url=${mosip.kernel.authmanager.url}/v1/authmanager/authorize/admin/validateToken\n\n#This url should be reachable internally to issue token.\nauth-token-generator.rest.issuerUrl=${keycloak.internal.url}/auth/realms/mosip\n\n#Fixed delay in which cleanup will be done in Hours\nmosip.hotlist.cleanup-schedule.fixed-delay-in-hours=24\n\n# The target enviornment. This values should be comma separted.\n#Ex.Staging,Developer\nmosip.ida.allowed.enviromemnts=Staging,Developer,Pre-Production,Production\n# Allowed domain Uris. This values should be comma separted.\n#Ex. https://dev.mosip.net,https://qa2.mosip.net\nmosip.ida.allowed.domain.uris=${mosip.api.internal.url},https://${mosip.esignet.host}\n\nbiometrics.datetime.pattern=yyyy-MM-dd'T'HH:mm:ssXXX\n\n#The list of attributes in identity that are to be decrypted by default\nida-default-identity-filter-attributes=phone,fullName,dateOfBirth,email\n\n#------ Un-encrypted Credential Attributes list -----------\n#The list of attributes in identity that not are Zero Knowledge encrpted while creating the credential in credential service as per the datashare policy. The same credential format is dumped in IDA DB (identity_cache table).\n#These attributes will not be decrypted when fetching the records from IDA DB for Authentication/EKYC/OTP requests.\n#By default all attributes are assumed to be Zero Knowledge encrypted.\n#Specify the attributes here only if they are not encrypted as per the datashare policy.\nida-zero-knowledge-unencrypted-credential-attributes=\n\n#openapi properties to sort tags and operations in Id Authentication\nspringdoc.swagger-ui.tagsSorter=alpha\nspringdoc.swagger-ui.operationsSorter=alpha\n\n# for Fraud management\nmosip.ida.fraud-analysis-enabled=true\n\nmosip.ida.active-async-thread-count=100\n\n# Logging of thread queue done based on below value in ms. Logging is done only if queue value of any one thread group crosses below specified threshold.\nmosip.ida.monitor-thread-queue-in-ms=600000\nmosip.ida.max-thread-queue-threshold=100\n\n## Roles\nmosip.role.idauth.postotp=RESIDENT\nmosip.role.idauth.postauth=REGISTRATION_PROCESSOR,REGISTRATION_ADMIN,REGISTRATION_OFFICER,REGISTRATION_SUPERVISOR,RESIDENT\nmosip.role.idauth.postverifyidentity=REGISTRATION_PROCESSOR,REGISTRATION_ADMIN,REGISTRATION_OFFICER,REGISTRATION_SUPERVISOR,RESIDENT\nmosip.role.idauth.getauthtransactionsindividualid=RESIDENT\nmosip.role.keymanager.postencrypt=INDIVIDUAL,ID_AUTHENTICATION,REGISTRATION_SUPERVISOR,REGISTRATION_OFFICER,REGISTRATION_PROCESSOR,PRE_REGISTRATION_ADMIN,RESIDENT,CREDENTIAL_REQUEST\nmosip.role.keymanager.postdecrypt=INDIVIDUAL,ID_AUTHENTICATION,REGISTRATION_SUPERVISOR,REGISTRATION_OFFICER,REGISTRATION_PROCESSOR,PRE_REGISTRATION_ADMIN,RESIDENT,CREDENTIAL_REQUEST\nmosip.role.keymanager.postencryptwithpin=INDIVIDUAL,ID_AUTHENTICATION,REGISTRATION_SUPERVISOR,REGISTRATION_OFFICER,REGISTRATION_PROCESSOR,PRE_REGISTRATION_ADMIN,RESIDENT\nmosip.role.keymanager.postdecryptwithpin=INDIVIDUAL,ID_AUTHENTICATION,REGISTRATION_SUPERVISOR,REGISTRATION_OFFICER,REGISTRATION_PROCESSOR,PRE_REGISTRATION_ADMIN,RESIDENT\nmosip.role.keymanager.postencryptdt=INDIVIDUAL,ID_AUTHENTICATION,REGISTRATION_SUPERVISOR,REGISTRATION_OFFICER,REGISTRATION_PROCESSOR,PRE_REGISTRATION_ADMIN,RESIDENT\nmosip.role.keymanager.postdecryptdt=INDIVIDUAL,ID_AUTHENTICATION,REGISTRATION_SUPERVISOR,REGISTRATION_OFFICER,REGISTRATION_PROCESSOR,PRE_REGISTRATION_ADMIN,RESIDENT\nmosip.role.keymanager.postgeneratemasterkeyobjecttype=INDIVIDUAL,ID_AUTHENTICATION,REGISTRATION_SUPERVISOR,REGISTRATION_OFFICER,REGISTRATION_PROCESSOR,PRE_REGISTRATION_ADMIN,RESIDENT\nmosip.role.keymanager.getgetcertificate=INDIVIDUAL,ID_AUTHENTICATION,REGISTRATION_SUPERVISOR,REGISTRATION_OFFICER,REGISTRATION_PROCESSOR,PRE_REGISTRATION_ADMIN,RESIDENT,KEY_MAKER\nmosip.role.keymanager.postgeneratecsr=INDIVIDUAL,ID_AUTHENTICATION,REGISTRATION_SUPERVISOR,REGISTRATION_OFFICER,REGISTRATION_PROCESSOR,PRE_REGISTRATION_ADMIN,RESIDENT,KEY_MAKER\nmosip.role.keymanager.postuploadcertificate=INDIVIDUAL,ID_AUTHENTICATION,REGISTRATION_SUPERVISOR,REGISTRATION_OFFICER,REGISTRATION_PROCESSOR,PRE_REGISTRATION_ADMIN,RESIDENT,KEY_MAKER\nmosip.role.keymanager.postuploadotherdomaincertificate=INDIVIDUAL,ID_AUTHENTICATION,REGISTRATION_SUPERVISOR,REGISTRATION_OFFICER,REGISTRATION_PROCESSOR,PRE_REGISTRATION_ADMIN,RESIDENT,KEY_MAKER\nmosip.role.keymanager.postgeneratesymmetrickey=INDIVIDUAL,ID_AUTHENTICATION,REGISTRATION_SUPERVISOR,REGISTRATION_OFFICER,REGISTRATION_PROCESSOR,PRE_REGISTRATION_ADMIN,RESIDENT\nmosip.role.keymanager.putrevokekey=INDIVIDUAL,ID_AUTHENTICATION,REGISTRATION_SUPERVISOR,REGISTRATION_OFFICER,REGISTRATION_PROCESSOR,PRE_REGISTRATION_ADMIN,RESIDENT\nmosip.role.keymanager.postuploadcacertificate=PARTNER_ADMIN\nmosip.role.keymanager.postuploadpartnercertificate=PARTNER_ADMIN,PARTNER\nmosip.role.keymanager.getgetpartnercertificatepartnercertid=PARTNER_ADMIN,PARTNER\nmosip.role.keymanager.postverifycertificatetrust=PARTNER_ADMIN,PARTNER\nmosip.role.keymanager.postsign=INDIVIDUAL,ID_AUTHENTICATION,REGISTRATION_SUPERVISOR,REGISTRATION_OFFICER,REGISTRATION_PROCESSOR,PRE_REGISTRATION_ADMIN,RESIDENT\nmosip.role.keymanager.postvalidate=INDIVIDUAL,ID_AUTHENTICATION,REGISTRATION_SUPERVISOR,REGISTRATION_OFFICER,REGISTRATION_PROCESSOR,PRE_REGISTRATION_ADMIN,RESIDENT\nmosip.role.keymanager.postpdfsign=INDIVIDUAL,ID_AUTHENTICATION,REGISTRATION_SUPERVISOR,REGISTRATION_OFFICER,REGISTRATION_PROCESSOR,PRE_REGISTRATION_ADMIN,RESIDENT\nmosip.role.keymanager.postjwtsign=INDIVIDUAL,ID_AUTHENTICATION,REGISTRATION_SUPERVISOR,REGISTRATION_OFFICER,REGISTRATION_PROCESSOR,PRE_REGISTRATION_ADMIN,RESIDENT\nmosip.role.keymanager.postjwtverify=INDIVIDUAL,ID_AUTHENTICATION,REGISTRATION_SUPERVISOR,REGISTRATION_OFFICER,REGISTRATION_PROCESSOR,PRE_REGISTRATION_ADMIN,RESIDENT\n\n# Secret will be used during kyc token generation.\nmosip.ida.kyc.token.secret=${mosip.ida.kyc.token.secret}\nmosip.ida.kyc.token.expire.time.adjustment.seconds=3000\nmosip.ida.kyc.exchange.default.lang=eng\nmosip.ida.idp.consented.address.subset.attributes=street_address,locality,region,postal_code,country\n\n# Keymanager Application Id for the HSM Health Check key.\nmosip.kernel.keymgr.hsm.health.key.app-id=IDA\n\nmosip.ida.config.server.file.storage.uri=${spring.cloud.config.uri}/${spring.application.name}/${spring.profiles.active}/${spring.cloud.config.label}/\nmosip.ida.vercred.context.url.map={\"https://www.w3.org/ns/odrl.jsonld\" : \"odrl.jsonld\", \"https://www.w3.org/2018/credentials/v1\" : \"cred-v1.jsonld\", \"https://${mosip.api.public.host}/.well-known/mosip-ida-context.json\" : \"mosip-ida-context.json\"}\nmosip.ida.vercred.context.uri=vccontext-ida.jsonld\nmosip.ida.vercred.id.url=https://${mosip.api.public.host}/credentials/\nmosip.ida.vercred.issuer.url=https://${mosip.api.public.host}/.well-known/ida-controller.json\nmosip.ida.vercred.proof.purpose=assertionMethod\nmosip.ida.vercred.proof.type=RsaSignature2018\nmosip.ida.vercred.proof.verificationmethod=https://${mosip.api.public.host}/.well-known/ida-public-key.json\nmosip.ida.vci.supported.cred.types=VerifiableCredential,MOSIPVerifiableCredential\n\n# Regex to validate handles with provided key as the postfix\n# if the input handle is +855345353453@phone then the provided regex is used to validate the input.\nmosip.ida.handle-types.regex={ '@phone' : '^\\\\+91[1-9][0-9]{7,9}@phone$' }\n\n#-------------------------------- Authentication error eventing-------------------------------\n#It enable and disable the bean init of kafka and Authentication error eventing\nmosip.ida.authentication.error.eventing.enabled=true\n#If we enable authentication error eventing as true we need all the below property\nida-topic-authentication-error-eventing=AUTHENTICATION_ERRORS\n# Partner Id for encryption used in ondemand template extraction\nmosip.ida.authentication.error.eventing.encrypt.partner.id=mpartner-default-tempextraction\n#kafka Configuration\nmosip.ida.kafka.bootstrap.servers=kafka-0.kafka-headless.${kafka.profile}:${kafka.port},kafka-1.kafka-headless.${kafka.profile}:${kafka.port},kafka-2.kafka-headless.${kafka.profile}:${kafka.port}\nspring.kafka.admin.properties.allow.auto.create.topics=true\n\nmosip.kernel.keymgr.hsm.health.check.enabled=false\n\n#Spring boot 3.x onwards we need to specify the below property to unmask values in actuator env url\nmanagement.endpoint.env.show-values=ALWAYS\nspring.mvc.trailing-slash-match=false\nspring.batch.jdbc.initialize-schema=embedded\nmanagement.endpoint.env.enabled=true\nwebclient.buffer.max-in-memory-size=10485760\n\nspring.datasource.hikari.maximum-pool-size=50\nspring.datasource.hikari.minimum-idle=10\n\n#----------------------------------------------------end------------------------------------------\n\n# Maximum time (in milliseconds) allowed to establish a TCP connection\nwebclient.connect-timeout-millis=3000\n\n# Maximum time (in seconds) to wait for a response after a successful connection\nwebclient.response-timeout-seconds=5\n\n# Defines how OTP notification requests are processed:\n# 0 = synchronous mode (process immediately)\n# 1 = asynchronous mode (process in background)\nmosip.ida.otp.notification.request.mode=0\n\n# Timeout (in seconds) for sending email notifications\nmosip.ida.email.timeout=15\n\n# Timeout (in seconds) for sending SMS notifications\nmosip.ida.sms.timeout=15\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/mosip-config/blob/master/id-authentication-external-default.properties", + "title": "id-authentication-external-default.properties", + "repo": "mosip/mosip-config", + "file_path": "id-authentication-external-default.properties", + "language": "properties", + "content": "ida-websub-masterdata-templates-callback-relative-url=${server.servlet.context-path}/callback/masterdata/templates\nida-websub-masterdata-templates-callback-url=${mosip.ida.auth.url}${ida-websub-masterdata-templates-callback-relative-url}\nida-websub-masterdata-titles-callback-relative-url=${server.servlet.context-path}/callback/masterdata/titles\nida-websub-masterdata-titles-callback-url=${mosip.ida.auth.url}${ida-websub-masterdata-titles-callback-relative-url}\n\n# Callback url for partner CA certification upload event\nida-websub-ca-cert-callback-relative-url=${server.servlet.context-path}/callback/partnermanagement/ca_certificate\nida-websub-ca-cert-callback-url=${mosip.ida.auth.url}${ida-websub-ca-cert-callback-relative-url}\n\n# Secret for partner CA certification upload callback\nida-websub-ca-certificate-callback-secret=${ida.websub.ca.certificate.callback.secret}\n# Topic for Partner CA Certificate Upload event\nida-topic-pmp-ca-certificate-uploaded=CA_CERTIFICATE_UPLOADED\n\n\nmosip.service-context=${server.servlet.context-path}\nmosip.service.end-points=/**/*\nmosip.service.exclude.auth.allowed.method=GET,POST\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/mosip-config/blob/master/id-authentication-internal-default.properties", + "title": "id-authentication-internal-default.properties", + "repo": "mosip/mosip-config", + "file_path": "id-authentication-internal-default.properties", + "language": "properties", + "content": "ida-websub-masterdata-templates-callback-relative-url=${server.servlet.context-path}/callback/masterdata/templates\nida-websub-masterdata-templates-callback-url=${mosip.ida.internal.url}${ida-websub-masterdata-templates-callback-relative-url}\nida-websub-masterdata-titles-callback-relative-url=${server.servlet.context-path}/callback/masterdata/titles\nida-websub-masterdata-titles-callback-url=${mosip.ida.internal.url}${ida-websub-masterdata-titles-callback-relative-url}\n## Callback url for hotlist event\nida-websub-hotlist-callback-relative-url=${server.servlet.context-path}/callback/hotlist\nida-websub-hotlist-callback-url=${mosip.ida.internal.url}${ida-websub-hotlist-callback-relative-url}\n\nida-websub-auth-type-callback-relative-url=${server.servlet.context-path}/callback/authTypeCallback/${ida-auth-partner-id}\nida-websub-auth-type-callback-url=${mosip.ida.internal.url}${ida-websub-auth-type-callback-relative-url}\n## Callback url for credential issueance event notification, including id remove/deactivate/activate events\nida-websub-idchage-callback-url=${mosip.ida.internal.url}${server.servlet.context-path}/callback/idchange/{eventType}/${ida-auth-partner-id}\nida-websub-idchange-credential-issued-callback-relative-url=${server.servlet.context-path}/callback/idchange/credential_issued/${ida-auth-partner-id}\nida-websub-idchange-remove-id-callback-relative-url=${server.servlet.context-path}/callback/idchange/remove_id/${ida-auth-partner-id}\nida-websub-idchange-deactivate-id-callback-relative-url=${server.servlet.context-path}/callback/idchange/deactivate_id/${ida-auth-partner-id}\nida-websub-idchange-activate-id-callback-relative-url=${server.servlet.context-path}/callback/idchange/activate_id/${ida-auth-partner-id}\n\n# Callback url for partner CA certification upload event\nida-websub-ca-cert-callback-relative-url=${server.servlet.context-path}/callback/partnermanagement/ca_certificate\nida-websub-ca-cert-callback-url=${mosip.ida.internal.url}${ida-websub-ca-cert-callback-relative-url}\n\n# Secret for partner CA certification upload callback\nida-websub-ca-certificate-callback-secret=${ida.websub.ca.certificate.callback.secret}\n# Topic for Partner CA Certificate Upload event\nida-topic-pmp-ca-certificate-uploaded=CA_CERTIFICATE_UPLOADED\n\n# ********* ADMIN Configurations ************\n# Configure N time period threshold for accepting auth/OTP/KYC request for a country\nauthrequest.received-time-allowed.seconds=120\n# Configuration for +/- time period adjustment in minutes for the request time validation, so that\n# The requests originating from a system that is not in time-sync will be accepted for the time period\nauthrequest.received-time-adjustment.seconds=30\n#Configuration for time period difference between each biometric segment and digital Id capture\nauthrequest.biometrics.allowed-segment-time-difference-in-seconds=60\nauth.server.admin.allowed.audience=mosip-resident-client,mosip-regproc-client,mosip-admin-client,mosip-reg-client,mosip-ida-client,mosip-deployment-client\n\n# Configuration to enable the enable/disable the retriggering of missing credential in IDA internal service startup.\n# If the property is not defined, it is disabled by default.\n# Note: if enabled, a setup with more than one pod of ida-internal-service will result in multiple retriggering of credentials by each pods.\n# To avoid that issue, first keep one pod applied the with enabled flag, then disable the configuration and then scale it up.\nida-missing-credential-retrigger-enabled=false\n\n# CredentialStoreTasklet properties\nida.batch.credential.store.thread.count=20\nida.batch.credential.store.page.size=500\n\n# Rest Template properties\nmosip.kernel.http.selftoken.restTemplate.max-connection-per-route=70\nmosip.kernel.http.selftoken.restTemplate.total-max-connections=150\n\n# Property used for enable JDBC batching for improving IDA Internal Batch for identity_cache storage\nspring.jpa.properties.hibernate.jdbc.batch_size=100\nspring.jpa.properties.hibernate.order_inserts=true\nspring.jpa.properties.hibernate.order_updates=true\nspring.jpa.properties.hibernate.jdbc.batch_versioned_data=true\n\n# Hikari properties\n# Minimum idle DB connection required\nspring.datasource.hikari.minimum-idle=10\n# Maximum pool size including used an idle connection\nspring.datasource.hikari.maximum-pool-size=50" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/mosip-config/blob/master/id-authentication-otp-default.properties", + "title": "id-authentication-otp-default.properties", + "repo": "mosip/mosip-config", + "file_path": "id-authentication-otp-default.properties", + "language": "properties", + "content": "ida-websub-masterdata-templates-callback-relative-url=${server.servlet.context-path}/callback/masterdata/templates\nida-websub-masterdata-templates-callback-url=${mosip.ida.otp.url}${ida-websub-masterdata-templates-callback-relative-url}\nida-websub-masterdata-titles-callback-relative-url=${server.servlet.context-path}/callback/masterdata/titles\nida-websub-masterdata-titles-callback-url=${mosip.ida.otp.url}${ida-websub-masterdata-titles-callback-relative-url}\n\n# Callback url for partner CA certification upload event\nida-websub-ca-cert-callback-relative-url=${server.servlet.context-path}/callback/partnermanagement/ca_certificate\nida-websub-ca-cert-callback-url=${mosip.ida.otp.url}${ida-websub-ca-cert-callback-relative-url}\n\n# Secret for partner CA certification upload callback\nida-websub-ca-certificate-callback-secret=${ida.websub.ca.certificate.callback.secret}\n# Topic for Partner CA Certificate Upload event\nida-topic-pmp-ca-certificate-uploaded=CA_CERTIFICATE_UPLOADED\n\n#Endpoints to access without authentication\nmosip.service-context=${server.servlet.context-path}\nmosip.service.end-points=/**/*\nmosip.service.exclude.auth.allowed.method=GET,POST\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/mosip-config/blob/master/id-repository-default.properties", + "title": "id-repository-default.properties", + "repo": "mosip/mosip-config", + "file_path": "id-repository-default.properties", + "language": "properties", + "content": "# Follow properites have their values assigned via 'overrides' environment variables of config server docker.\n# DO NOT define these in any of the property files. They must be passed as env variables. Refer to config-server\n# helm chart:\n# db.dbuser.password \n# mosip.crereq.client.secret\n# mosip.creser.client.secret\n# mosip.regproc.client.secret\n# mosip.kernel.tokenid.uin.salt\n# mosip.kernel.tokenid.partnercode.salt\n# idrepo.websub.vid.credential.update.secret\n# keycloak.internal.url\n# s3.accesskey \n# s3.region\n# s3.secretkey\n\nmanagement.endpoint.restart.enabled=true\n\n# Database hostname below is assuming postgres is running inside cluster in 'postgres' namespace\n# If database is external to production, provide the DNS or ip of the host and port \nmosip.idrepo.db.url=${mosip.database.hostname.override:postgres-postgresql.postgres}\nmosip.idrepo.db.port=${mosip.database.port.override:5432}\nmosip.idrepo.db.identity.db-name=mosip_idrepo\nmosip.idrepo.db.identity.username=idrepouser\nmosip.idrepo.db.identity.password=${db.dbuser.password}\nmosip.idrepo.db.vid.db-name=mosip_idmap\nmosip.idrepo.db.vid.username=idmapuser\nmosip.idrepo.db.vid.password=${db.dbuser.password}\nmosip.idrepo.objectstore.account-name=idrepo\nmosip.idrepo.objectstore.bucket-name=${s3.pretext.value:}idrepo\nmosip.idrepo.objectstore.adapter-name=s3Adapter\n\n#IDRepo identity/vid service authentication details\nmosip.idrepo.auth.client-id=mosip-idrepo-client\nmosip.idrepo.auth.secret-key=${mosip.idrepo.client.secret}\nmosip.idrepo.auth.app-id=idrepo\n\n# For auditing\nmosip.idrepo.application.name=ID-Repository\nmosip.idrepo.application.version.pattern=^v\\\\d+(\\\\.\\\\d+)?$\n# Configuration for +/- time period adjustment in minutes for the request time validation, so that \n#the requests originating from a system that is not in time-sync will be accepted for the time period\nmosip.idrepo.datetime.future-time-adjustment=2\n# Reference IDs of base keys used for encryption/decryption\nmosip.idrepo.crypto.refId.uin=uin\nmosip.idrepo.crypto.refId.uin-data=identity_data\nmosip.idrepo.crypto.refId.demo-doc-data=demographic_data\nmosip.idrepo.crypto.refId.bio-doc-data=biometric_data\n\n\n# Limit the number of async threads created in IDRepo services. This count is divided into 4 thread groups configured in IdRepoConfig.class\nmosip.idrepo.active-async-thread-count=100\n\n# Logging of thread queue done based on below value in ms. Logging is done only if queue value of any one thread group crosses below specified threshold.\nmosip.idrepo.monitor-thread-queue-in-ms=600000\nmosip.idrepo.max-thread-queue-threshold=100\n\n## Kernel retry\n# The retry limit excluding the first attempt before attempting for retries. Default is set to 5.\nkernel.retry.attempts.limit=5\n# The initial interval to be used for exponential backoff in milli seconds. If the exponential backoff is disabled by setting 'kernel.retry.exponential.backoff.multiplier' value as 1, this initial interval will be used as the fixed backoff interval for every retries. Default value is 200 millisecs\nkernel.retry.exponential.backoff.initial.interval.millisecs=100\n# The multiplier for exponential backoff intreval. A double value greater than or equal to 1. Setting to 1 will make it to fixed backoff, more than 1 will apply exponential backoff. Default is 1.0 (fixed backoff). For exponential backoff the suggested value is 1.5 or 2. The next backoff interval is calculated with the formula: NextBackOffInterval = initialInterval * Math.pow(multiplier, retryCount)\nkernel.retry.exponential.backoff.multiplier=1.5\nkernel.retry.exponential.backoff.max.interval.millisecs=1000\n# Whether to traverse to the root cause exception from the exception thrown and use the same root cause to decide whether to retry or not. Default is true.\nkernel.retry.traverse.root.cause.enabled=false\n#Comma separated List of fully qualified Exceptions which are retryable (inclusion list). Their subclasses will also be considered in the evaluation.\nkernel.retry.retryable.exceptions=io.mosip.idrepository.core.exception.IdRepoRetryException\n#Comma separated List of fully qualified Exceptions which are not-retryable (exclusion list). Their subclasses will also be considered in the evaluation.\nkernel.retry.nonretryable.exceptions=\n\n## Identity service\n# Application version expected in the request\nmosip.idrepo.identity.application.version=v1\n# Application ids expected in the requests\nmosip.idrepo.identity.id.create=mosip.id.create\nmosip.idrepo.identity.id.read=mosip.id.read\nmosip.idrepo.identity.id.update=mosip.id.update\nmosip.identity.get.drafts.id=mosip.identity.get.drafts\nmosip.identity.get.drafts.version=1.0\n\n#database mappings for identity service\nmosip.idrepo.identity.db.url=jdbc:postgresql://${mosip.idrepo.db.url}:${mosip.idrepo.db.port}/${mosip.idrepo.db.identity.db-name}\nmosip.idrepo.identity.db.username=${mosip.idrepo.db.identity.username}\nmosip.idrepo.identity.db.password=${mosip.idrepo.db.identity.password}\nmosip.idrepo.identity.db.driverClassName=org.postgresql.Driver\n# Path of UIN expected in the input idrepo request. This path is based on Identity schema.\nmosip.idrepo.identity.json.path=identity.UIN\n# UIN status value which is stored in database for newly inserted UIN/active UINs.\nmosip.idrepo.identity.uin-status.registered=ACTIVATED\n# List of allowed UIN status in ID-Repo \nmosip.idrepo.identity.uin-status=ACTIVATED,BLOCKED,DEACTIVATED \n\n# idobjectvalidator\n# Class name of the referenceValidator. Commenting or removing this property will disable reference validator.\nmosip.kernel.idobjectvalidator.referenceValidator=io.mosip.kernel.idobjectvalidator.impl.IdObjectReferenceValidator\n\n# VID\n# Application version expected in the request\nmosip.idrepo.vid.application.version=v1\n# Application ids expected in the requests\nmosip.idrepo.vid.id.create=mosip.vid.create\nmosip.idrepo.vid.id.read=mosip.vid.read\nmosip.idrepo.vid.id.update=mosip.vid.update\nmosip.idrepo.vid.id.regenerate=mosip.vid.regenerate \nmosip.idrepo.vid.id.reactivate=mosip.vid.reactivate\nmosip.idrepo.vid.id.deactivate=mosip.vid.deactivate\n# Database mapping for VID service\nmosip.idrepo.vid.db.url=jdbc:postgresql://${mosip.idrepo.db.url}:${mosip.idrepo.db.port}/${mosip.idrepo.db.vid.db-name}\nmosip.idrepo.vid.db.username=${mosip.idrepo.db.vid.username}\nmosip.idrepo.vid.db.password=${mosip.idrepo.db.vid.password}\nmosip.idrepo.vid.db.driverClassName=org.postgresql.Driver\n# VID status value which is stored in database for newly inserted VID/active VIDs.\nmosip.idrepo.vid.active-status=ACTIVE\n# VID status for which unlimited txn is not allowed\nmosip.idrepo.vid.unlimited-txn-status=USED\n# VID status which are allowed for VID regeneration\nmosip.idrepo.vid.regenerate.allowed-status=ACTIVE,REVOKED,EXPIRED,USED\n# List of allowed VID status in ID-Repo \nmosip.idrepo.vid.allowedstatus=ACTIVE,REVOKED,EXPIRED,USED,INVALIDATED,DEACTIVATED\n# VID status value which is stored in database for deactivated VIDs. Used in deactivate-all-vids api.\nmosip.idrepo.vid.deactive-status=DEACTIVATED\n# VID status value which is stored in database for reactivated VIDs. Used in reactivate-all-vids api.\nmosip.idrepo.vid.reactive-status=ACTIVE\n\n#RID\n# Application version expected in the request\nmosip.idrepo.rid.get.version=1.0\n# Application ids expected in the requests\nmosip.idrepo.rid.get.id=mosip.idrepo.rid.get\n\n# Config server url\nmosip.idrepo.mosip-config-url=${spring.cloud.config.uri}/${spring.application.name}/${spring.profiles.active}/${spring.cloud.config.label}/\n# VID policy schema against which VID policy is validated\nmosip.idrepo.vid.policy-schema-url=${mosip.idrepo.mosip-config-url}mosip-vid-policy-schema.json\n# VID policy based on which VID is created\nmosip.idrepo.vid.policy-file-url=${mosip.idrepo.mosip-config-url}mosip-vid-policy.json\n\n# Default type of VID to be created automatically while publishing UIN\nmosip.idrepo.draft-vid.default-type-to-create=PERPETUAL\n\n## Rest servies \nmosip.idrepo.audit.rest.uri=${mosip.kernel.auditmanager.url}/v1/auditmanager/audits\nmosip.idrepo.audit.rest.httpMethod=POST\nmosip.idrepo.audit.rest.headers.mediaType=application/json\n\nmosip.idrepo.encryptor.rest.uri=${mosip.kernel.keymanager.url}/v1/keymanager/encrypt\nmosip.idrepo.encryptor.rest.httpMethod=POST\nmosip.idrepo.encryptor.rest.headers.mediaType=application/json\nmosip.idrepo.encryptor.rest.timeout=100\n\nmosip.idrepo.decryptor.rest.uri=${mosip.kernel.keymanager.url}/v1/keymanager/decrypt\nmosip.idrepo.decryptor.rest.httpMethod=POST\nmosip.idrepo.decryptor.rest.headers.mediaType=application/json\nmosip.idrepo.decryptor.rest.timeout=100\n\nmosip.idrepo.vid-service.rest.uri=${mosip.idrepo.vid.url}/idrepository/v1/vid/uin/{uin}\nmosip.idrepo.vid-service.rest.httpMethod=GET\nmosip.idrepo.vid-service.rest.headers.mediaType=application/json\nmosip.idrepo.vid-service.rest.timeout=100\n\nmosip.idrepo.retrieve-uin-by-vid.rest.uri=${mosip.idrepo.vid.url}/idrepository/v1/vid/{vid}\nmosip.idrepo.retrieve-uin-by-vid.rest.httpMethod=GET\nmosip.idrepo.retrieve-uin-by-vid.rest.headers.mediaType=application/json\nmosip.idrepo.retrieve-uin-by-vid.rest.timeout=100\n\n# in minutes\nmosip.iam.adapter.validate-expiry-check-rate=15\n# in minutes\nmosip.iam.adapter.renewal-before-expiry-interval=15\n#this should be false if you don?t use the self token restTemplate from auth adapter true if you do (needed for websubclient).\nmosip.iam.adapter.self-token-renewal-enable=true\nmosip.auth.filter_disable=false\n\nmosip.idrepo.bio-extractor-service.rest.uri=${mosip.mock.biosdk.url}/biosdk-service/{extractionFormat}/extracttemplates\nmosip.idrepo.bio-extractor-service.rest.httpMethod=POST\nmosip.idrepo.bio-extractor-service.rest.headers.mediaType=application/json\nmosip.idrepo.bio-extractor-service.rest.timeout=100\n\nmosip.idrepo.syncdata-service.rest.uri=${mosip.kernel.masterdata.url}/v1/masterdata/idschema/latest\nmosip.idrepo.syncdata-service.rest.httpMethod=GET\nmosip.idrepo.syncdata-service.rest.headers.mediaType=application/json\nmosip.idrepo.syncdata-service.rest.timeout=100\n\nmosip.idrepo.pmp.partner.rest.uri=${mosip.pms.partnermanager.url}/v1/partnermanager/partners?partnerType=Online_Verification_Partner\nmosip.idrepo.pmp.partner.rest.httpMethod=GET\nmosip.idrepo.pmp.partner.rest.headers.mediaType=application/json\nmosip.idrepo.pmp.partner.rest.timeout=100\n\nmosip.idrepo.credential.request.rest.uri=${mosip.idrepo.credrequest.generator.url}/v1/credentialrequest/requestgenerator\nmosip.idrepo.credential.request.rest.httpMethod=POST\nmosip.idrepo.credential.request.rest.headers.mediaType=application/json\nmosip.idrepo.credential.request.rest.timeout=100\n\nmosip.idrepo.credential.cancel-request.rest.uri=${mosip.idrepo.credrequest.generator.url}/v1/credentialrequest/cancel/{requestId}\nmosip.idrepo.credential.cancel-request.rest.httpMethod=GET\nmosip.idrepo.credential.cancel-request.rest.headers.mediaType=application/json\nmosip.idrepo.credential.cancel-request.rest.timeout=100\n\n## Credential status job\n# Fixed delay time after which job will be triggered again to process the created/updated credential details.\nmosip.idrepo.credential-status-update-job.fixed-delay-in-ms=10000\n\n# Dummy partner id used to create a credential request record in credential_request_status.\n# Credential won't be issued for the below provided. id-repository-credential-feeder will utilize\n# the credential request with below partner id to issue credential to new IDA partners.\nidrepo-dummy-online-verification-partner-id=MOVP\n\nmosip.idrepo.retrieve-by-uin.rest.uri=${mosip.idrepo.identity.url}/idrepository/v1/identity/idvid/{uin}\nmosip.idrepo.retrieve-by-uin.rest.httpMethod=GET\nmosip.idrepo.retrieve-by-uin.rest.headers.mediaType=application/json\nmosip.idrepo.retrieve-by-uin.rest.timeout=100\n\nmosip.idrepo.vid-generator.rest.uri=${mosip.kernel.idgenerator.url}/v1/idgenerator/vid\nmosip.idrepo.vid-generator.rest.httpMethod=GET\nmosip.idrepo.vid-generator.rest.headers.mediaType=application/json\nmosip.idrepo.vid-generator.rest.timeout=100\n\n## Websub\nmosip.idrepo.websub.vid-credential-update.callback-url=${mosip.idrepo.identity.url}/idrepository/v1/identity/callback/vid_credential_status_update\nmosip.idrepo.websub.vid-credential-update.topic=VID_CRED_STATUS_UPDATE\nmosip.idrepo.websub.vid-credential-update.secret= ${idrepo.websub.vid.credential.update.secret}\nmosip.idrepo.websub.credential-status-update.topic=CREDENTIAL_STATUS_UPDATE\n\n## Auth adapter\nmosip.iam.adapter.clientid.id-repository=${mosip.idrepo.auth.client-id}\nmosip.iam.adapter.clientsecret.id-repository=${mosip.idrepo.auth.secret-key}\nmosip.iam.adapter.appid.id-repository=${mosip.idrepo.auth.app-id}\nmosip.authmanager.client-token-endpoint=${mosip.kernel.authmanager.url}/v1/authmanager/authenticate/clientidsecretkey\n\nmosip.idrepo.uin-generator.rest.uri=${mosip.kernel.idgenerator.url}/v1/idgenerator/uin\nmosip.idrepo.uin-generator.rest.httpMethod=GET\nmosip.idrepo.uin-generator.rest.headers.mediaType=application/json\nmosip.idrepo.uin-generator.rest.timeout=100\n\nmosip.idrepo.draft-vid.rest.uri=${mosip.idrepo.vid.url}/idrepository/v1/draft/vid\nmosip.idrepo.draft-vid.rest.httpMethod=POST\nmosip.idrepo.draft-vid.rest.headers.mediaType=application/json\nmosip.idrepo.draft-vid.rest.timeout=100\n\nmosip.idrepo.update-vid.rest.uri=${mosip.idrepo.vid.url}/idrepository/v1/vid/{vid}\nmosip.idrepo.update-vid.rest.httpMethod=PATCH\nmosip.idrepo.update-vid.rest.headers.mediaType=application/json\nmosip.idrepo.update-vid.rest.timeout=100\n\n## Credential request generator\nmosip.credential.service.database.hostname=${mosip.database.hostname.override:postgres-postgresql.postgres}\nmosip.credential.service.database.port=${mosip.database.port.override:5432}\n\nmosip.credential.service.jdbc.url=jdbc:postgresql://${mosip.credential.service.database.hostname}:${mosip.credential.service.database.port}/mosip_credential?currentSchema=credential\nmosip.credential.service.jdbc.user=credentialuser\nmosip.credential.service.jdbc.password=${db.dbuser.password}\nmosip.credential.service.jdbc.driver=org.postgresql.Driver\nhibernate.hbm2ddl.auto=none\nhibernate.dialect=org.hibernate.dialect.PostgreSQLDialect\nhibernate.jdbc.lob.non_contextual_creation=true\nhibernate.show_sql=false\n# Hikari properties\n# Minimum idle DB connection required\nspring.datasource.hikari.minimum-idle=8\n# Maximum pool size including used an idle connection\nspring.datasource.hikari.maximum-pool-size=20\n\n# Token generator properties\ncredential.request.token.request.appid=${mosip.idrepo.credential-req-generator.auth.app-id}\ncredential.request.token.request.clientId=${mosip.idrepo.credential-req-generator.auth.client-id}\ncredential.request.token.request.secretKey=${mosip.idrepo.credential-req-generator.auth.secret-key}\ncredential.request.token.request.version=1.0\ncredential.request.token.request.id=io.mosip.credentialrequestgenerator\ncredential.request.token.request.issuerUrl=${keycloak.internal.url}/auth/realms/mosip\nmosip.credential.request.service.id=mosip.credential.request.generator\nmosip.credential.request.datetime.pattern=yyyy-MM-dd'T'HH:mm:ss.SSS'Z'\nmosip.credential.request.service.version=1.0\n\n# Reference Id which is used for encryption/decryption of credential request using keymanager\nmosip.credential.request.crypto-ref-id=credential_request\n\n## Batch job\n# batch job time intervel in miliseconds\nmosip.credential.request.job.timedelay=1000\n#Reprocessing job timeintervel in miliseconds\nmosip.credential.request.reprocess.job.timedelay=1200000\ncredential.request.type=auth\ncredential.request.retry.max.count=10\ncredential.request.reprocess.statuscodes=FAILED,RETRY\n# During performance tuning, value 1000 is considered\ncredential.batch.page.size=250\ncredential.request.process.locktimeout=60000\ncredential.request.reprocess.locktimeout=60000\ncredential.batch.status=NEW\n# During performance tuning, value 100 is considered\ncredential.batch.thread.count=50\n\n## Rest services\nCRDENTIALSERVICE=${mosip.idrepo.credential.service.url}/v1/credentialservice/issue\nKEYBASEDTOKENAPI=${mosip.kernel.authmanager.url}/v1/authmanager/authenticate/clientidsecretkey\nCALLBACKURL=${mosip.idrepo.credrequest.generator.url}/v1/credentialrequest/callback/notifyStatus\nENCRYPTION=${mosip.idrepo.encryptor.rest.uri}\nDECRYPTION=${mosip.idrepo.decryptor.rest.uri}\n\n# Websub\n#Delay (in milliseconds) for subscription on application startup to avoid failure during intent verification by hub.\nsubscription-delay-secs=120000\n# The time interval in seconds to schedule subscription of topics which is done as a\n# work-around , By default the\n# this property value is set to 0 that disables this workaround.\n# To enable the resubscrition scheduling, this property should be assigned with a positive\n# number like 1 * 60 * 60 = 3600 for one hour\nresubscription-delay-secs=43200\nWEBSUBSECRET=test\n\n# Credential service\ncredential.service.token.request.appid=${mosip.idrepo.credential.auth.app-id}\ncredential.service.token.request.clientId=${mosip.idrepo.credential.auth.client-id}\ncredential.service.token.request.secretKey=${mosip.creser.client.secret}\ncredential.service.token.request.id=io.mosip.credentialstore\n# Credential formatter properties \nmosip.credential.vc.datetime.pattern=yyyy-MM-dd'T'HH:mm:ss'Z'\nmosip.credential.service.datetime.pattern=yyyy-MM-dd'T'HH:mm:ss.SSS'Z'\nmosip.credential.service.service.id=mosip.credential.store\nmosip.credential.service.service.version=1.0\ncredential.service.credentialtype.file=CredentialType.json\ncredential.service.mvel.file=credentialdata.mvel\ncredential.service.dob.format=yyyy/MM/dd\nmosip.credential.service.credential.schema=MOSIPVerifiableCredential\nmosip.credential.service.type.name=mosip\nmosip.credential.service.type.namespace=mosip\ncredentialType.formatter.AUTH=IdAuthProvider\ncredentialType.formatter.QRCODE=VerCredProvider\ncredentialType.formatter.MOSIP=CredentialProvider\ncredentialType.formatter.EUIN=VerCredProvider\ncredentialType.formatter.REPRINT=VerCredProvider\ncredentialType.formatter.EUIN_WITH_QR=QrCodeProvider\ncredentialType.formatter.EUIN_WITH_FACEQR=QrCodeProvider\nmosip.credential.service.format.id=http://mosip.io/credentials/\nmosip.credential.service.format.issuer=https://mosip.io/issuers/\nmosip.credential.service.application.id=PARTNER\nmosip.credential.service.includeCertificateHash=true\nmosip.credential.service.includeCertificate=true\nmosip.credential.service.includePayload=false\nmosip.credential.service.share.prependThumbprint=false\nmosip.credential.service.retry.maxAttempts=3\nmosip.credential.service.retry.maxDelay=100\n\nIDREPOGETIDBYID=${mosip.idrepo.identity.url}/idrepository/v1/identity/idvid\nmosip.data.share.protocol=http\nmosip.data.share.internal.domain.name=datashare.datashare\nCREATEDATASHARE=/v1/datashare/create\nKEYMANAGER_JWTSIGN=${mosip.kernel.keymanager.url}/v1/keymanager/jwtSign\nKEYMANAGER_ENCRYPT_PIN=${mosip.kernel.keymanager.url}/v1/keymanager/encryptWithPin\nKEYMANAGER_ENCRYPT_ZK=${mosip.kernel.keymanager.url}/v1/keymanager/zkEncrypt\nPARTNER_POLICY=${mosip.pms.partnermanager.url}/v1/partnermanager/partners/{partnerId}/credentialtype/{credentialType}/policies\nPARTNER_EXTRACTION_POLICY=${mosip.pms.partnermanager.url}/v1/partnermanager/partners/{partnerId}/bioextractors/{policyId}\ncredential.service.token.request.issuerUrl=${keycloak.internal.url}/auth/realms/mosip\n\n# BioSDK service\nmosip.biosdk.default.service.url=${mosip.mock.biosdk.url}/biosdk-service\n# The fully qualified Class Name of the BIO SDK API implemented for Finger modality \n# This class will be loaded in runtime, the containing jar should be available in classpath\nmosip.biometric.sdk.providers.finger.mosip-ref-impl-sdk-client.classname=io.mosip.biosdk.client.impl.spec_1_0.Client_V_1_0\n# The version of the BIO SDK API implemeted for Finger modality\nmosip.biometric.sdk.providers.finger.mosip-ref-impl-sdk-client.version=0.9\nmosip.biometric.sdk.providers.finger.mosip-ref-impl-sdk-client.format.url.mock-1.1=${mosip.biosdk.default.service.url}\n# The default URL will be taken if no format specified in the extraction or the incoming extraction format is not configured. \n# If the below default configuration is not configured, the one of the configured url will be used as the default URL. \n# If no URL is configured, the default URL will be taken from the environment variable 'mosip_biosdk_service'.\nmosip.biometric.sdk.providers.finger.mosip-ref-impl-sdk-client.format.url.default=${mosip.biosdk.default.service.url}\n# Max connection per route for bio-sdk client\nmosip.biometric.sdk.providers.finger.mosip-ref-impl-sdk-client.config.parameter.restTemplate-max-connection-per-route=100\n# Total max connection per route for bio-sdk client\nmosip.biometric.sdk.providers.finger.mosip-ref-impl-sdk-client.config.parameter.restTemplate-total-max-connections=200\nmosip.biometric.sdk.providers.finger.mosip-ref-impl-sdk-client.config.parameter.restTemplate-ssl-bypass=true\n\n# The fully qualified Class Name of the BIO SDK API implemented for Iris modality \n# This class will be loaded in runtime, the containing jar should be available in classpath\nmosip.biometric.sdk.providers.iris.mosip-ref-impl-sdk-client.classname=io.mosip.biosdk.client.impl.spec_1_0.Client_V_1_0\n# The version of the BIO SDK API implemeted for Iris modality\nmosip.biometric.sdk.providers.iris.mosip-ref-impl-sdk-client.version=0.9\nmosip.biometric.sdk.providers.iris.mosip-ref-impl-sdk-client.format.url.mock-1.1=${mosip.biosdk.default.service.url}\nmosip.biometric.sdk.providers.iris.mosip-ref-impl-sdk-client.config.parameter.restTemplate-max-connection-per-route=100\nmosip.biometric.sdk.providers.iris.mosip-ref-impl-sdk-client.config.parameter.restTemplate-total-max-connections=200\nmosip.biometric.sdk.providers.iris.mosip-ref-impl-sdk-client.config.parameter.restTemplate-ssl-bypass=true\n\n# The fully qualified Class Name of the BIO SDK API implemented for Face modality \n# This class will be loaded in runtime, the containing jar should be available in classpath\nmosip.biometric.sdk.providers.face.mosip-ref-impl-sdk-client.classname=io.mosip.biosdk.client.impl.spec_1_0.Client_V_1_0\n# The version of the BIO SDK API implemeted for Face modality\nmosip.biometric.sdk.providers.face.mosip-ref-impl-sdk-client.version=0.9\nmosip.biometric.sdk.providers.face.mosip-ref-impl-sdk-client.format.url.mock-1.1=${mosip.biosdk.default.service.url}\nmosip.biometric.sdk.providers.face.mosip-ref-impl-sdk-client.config.parameter.restTemplate-max-connection-per-route=100\nmosip.biometric.sdk.providers.face.mosip-ref-impl-sdk-client.config.parameter.restTemplate-total-max-connections=200\nmosip.biometric.sdk.providers.face.mosip-ref-impl-sdk-client.config.parameter.restTemplate-ssl-bypass=true\n\n# Credential issuance Event properties\nid-repo-ida-event-type-namespace=mosip\nid-repo-ida-event-type-name=ida\nid-repo-ida-credential-type=auth\nid-repo-ida-credential-recepiant=IDA\n\n# Kernel token ID generator properties\nmosip.kernel.tokenid.uin.salt=${mosip.kernel.uin.salt}\nmosip.kernel.tokenid.partnercode.salt=${mosip.kernel.partnercode.salt}\n\n# Enabling below property will start logging performance logs in identity and vid service\nmosip.idrepo.aspect-logging.enabled=false\n\nauth.server.admin.allowed.audience=${auth.server.admin.allowed.audience.idrepo.override:mosip-regproc-client,mosip-prereg-client,mosip-admin-client,mosip-crereq-client,mosip-creser-client,mosip-datsha-client,mosip-ida-client,mosip-resident-client,mosip-reg-client,mpartner-default-print,mosip-idrepo-client,mpartner-default-auth,mosip-syncdata-client,mosip-masterdata-client,mosip-idrepo-client,mosip-pms-client,mosip-hotlist-client,opencrvs-partner,mpartner-default-digitalcard,mpartner-default-mobile,mosip-signup-client}\n#openapi properties to sort tag and operations of id-repository services\nspringdoc.swagger-ui.tagsSorter=alpha\nspringdoc.swagger-ui.operationsSorter=alpha\n\n# Object store\nobject.store.s3.accesskey=${s3.accesskey}\nobject.store.s3.secretkey=${s3.secretkey}\n## For Minio: object.store.s3.url=http://minio.minio:9000\n## For AWS: object.store.s3.url=s3.${s3.region}.amazonaws.com\nobject.store.s3.url=http://minio.minio:9000\nobject.store.s3.region=${s3.region}\nobject.store.s3.readlimit=10000000\n\n# Roles\nmosip.role.idrepo.credentialrequest.postrequestgenerator=CREDENTIAL_REQUEST,ID_REPOSITORY\nmosip.role.idrepo.credentialrequest.postv2requestgeneratorrid=CREDENTIAL_REQUEST,ID_REPOSITORY\nmosip.role.idrepo.credentialrequest.getcancelrequestid=CREDENTIAL_REQUEST,ID_REPOSITORY\nmosip.role.idrepo.credentialrequest.getgetrequestid=CREDENTIAL_REQUEST\nmosip.role.idrepo.credentialrequest.getgetrequestids=CREDENTIAL_REQUEST\nmosip.role.idrepo.credentialrequest.putretriggerrequestid=CREDENTIAL_REQUEST\nmosip.role.idrepo.credentialservice.postissue=CREDENTIAL_REQUEST\nmosip.role.idrepo.identity.postidrepo=REGISTRATION_PROCESSOR,ID_REPOSITORY\nmosip.role.idrepo.identity.getidvidid=REGISTRATION_PROCESSOR,RESIDENT,REGISTRATION_ADMIN,REGISTRATION_SUPERVISOR,REGISTRATION_OFFICER,ID_AUTHENTICATION,ID_REPOSITORY\nmosip.role.idrepo.identity.patchidrepo=REGISTRATION_PROCESSOR,ID_REPOSITORY\nmosip.role.idrepo.identity.getauthtypesstatusindividualidtypeindividualid=RESIDENT,ID_REPOSITORY\nmosip.role.idrepo.identity.postauthtypesstatus=RESIDENT,ID_REPOSITORY\nmosip.role.idrepo.identity.postdraftcreateregistrationId=REGISTRATION_PROCESSOR,ID_REPOSITORY\nmosip.role.idrepo.identity.patchdraftupdateregistrationId=REGISTRATION_PROCESSOR,ID_REPOSITORY\nmosip.role.idrepo.identity.getdraftpublishregistrationId=REGISTRATION_PROCESSOR,ID_REPOSITORY\nmosip.role.idrepo.identity.deletedraftdiscardregistrationId=REGISTRATION_PROCESSOR,ID_REPOSITORY,RESIDENT\nmosip.role.idrepo.identity.draftregistrationId=REGISTRATION_PROCESSOR,ID_REPOSITORY\nmosip.role.idrepo.identity.getdraftregistrationId=REGISTRATION_PROCESSOR,ID_REPOSITORY\nmosip.role.idrepo.identity.putdraftextractbiometricsregistrationId=REGISTRATION_PROCESSOR,ID_REPOSITORY\nmosip.role.idrepo.identity.remainingUpdateCountByIndividualId=RESIDENT,ID_REPOSITORY\nmosip.role.idrepo.identity.getRidByIndividualId=RESIDENT,ID_REPOSITORY\nmosip.role.idrepo.vid.postvid=RESIDENT,REGISTRATION_PROCESSOR,ID_REPOSITORY\nmosip.role.idrepo.vid.getvid=REGISTRATION_PROCESSOR,ID_AUTHENTICATION,RESIDENT,ID_REPOSITORY\nmosip.role.idrepo.vid.getviduin=REGISTRATION_PROCESSOR,ID_REPOSITORY,RESIDENT\nmosip.role.idrepo.vid.patchvid=ID_AUTHENTICATION,REGISTRATION_PROCESSOR,RESIDENT,ID_REPOSITORY\nmosip.role.idrepo.vid.postvidregenerate=RESIDENT,ID_REPOSITORY\nmosip.role.idrepo.vid.postviddeactivate=RESIDENT,ID_REPOSITORY\nmosip.role.idrepo.vid.postvidreactivate=RESIDENT,ID_REPOSITORY\nmosip.role.idrepo.vid.postdraftvid=REGISTRATION_PROCESSOR,ID_REPOSITORY\nmosip.role.idrepo.identity.getdraftUIN=RESIDENT,ID_REPOSITORY\nmosip.role.idrepo.identity.postidvididv2=REGISTRATION_PROCESSOR,RESIDENT,REGISTRATION_ADMIN,REGISTRATION_SUPERVISOR,REGISTRATION_OFFICER,ID_AUTHENTICATION,ID_REPOSITORY\n\nmosip.mask.function.identityAttributes=convertToMaskData\nmosip.credential.service.fetch-identity.type=bio\n\n#this property is used to enable convention based id eg. if we wanted to share rid as a requestId when credential request is getting generated using credential job.\nmosip.idrepo.credential.request.enable-convention-based-id=${mosip.idrepo.credential.request.enable.convention.based.id.idrepo.override:false}\nmosip.idrepo.credential-request-v2.rest.uri=${mosip.idrepo.credrequest.generator.url}/v1/credentialrequest/v2/requestgenerator/{rid}\nmosip.idrepo.credential-request-v2.rest.httpMethod=POST\nmosip.idrepo.credential-request-v2.rest.headers.mediaType=application/json\nmosip.idrepo.credential-request-v2.rest.timeout=100\n\n# It is recommended to not support UIN based authentication (both external & internal)\n# To stop issuing UIN+credential to IDA set flag to true otherwise set the flag to false to issue UIN+credential to IDA.\nmosip.idrepo.identity.disable-uin-based-credential-request=false\n# Field Id as in the identity schema will be the key and value is the actual postfix to append. Empty values are also supported.\n# This configuration is considered only when mentioned fieldId is marked to be a handle in the identity schema and it is one of the selectedHandle in the ID-object.\nmosip.identity.fieldid.handle-postfix.mapping={:}\nmosip.idrepo.identity.max-request-time-deviation-seconds=60\n#Enable this property only when to check cache log\n#logging.level.org.springframework.cache=TRACE\n# By default, it is false. To enable force merge of data, change it to true.\nmosip.idrepo.create-identity.enable-force-merge=false\n\nmosip.identity.get.excluded.attribute.list=UIN,verifiedAttributes,IDSchemaVersion\n\n#Document size\nmosip.kernel.webclient.exchange.strategy.max-in-memory-size.mbs=10\n\nmosip.role.idrepo.identity.postidvidid=REGISTRATION_PROCESSOR,RESIDENT,REGISTRATION_ADMIN,REGISTRATION_SUPERVISOR,REGISTRATION_OFFICER,ID_AUTHENTICATION,ID_REPOSITORY\nIDREPORETRIEVEIDBYID=${mosip.idrepo.identity.url}/idrepository/v1/identity/idvid/\n# this property is used for update handle fields\nmosip.idrepo.update-identity.fields-to-replace={\"selectedHandles\"}\n\n# Thread pool properties for biometric extraction\nmosip.idrepo.extract.template.core-pool-size=20\nmosip.idrepo.extract.template.max-pool-size=40\nmosip.idrepo.extract.template.queue-capacity=350\n\n## This Property used in Credential-request-generator RestTemplate\nidrepo.default.processor.httpclient.connections.max.per.host=100\nidrepo.default.processor.httpclient.connections.max=700\n\n## This property Used commonly to call Rest API Call\nmosip.kernel.http.selftoken.restTemplate.max-connection-per-route=100\nmosip.kernel.http.selftoken.restTemplate.total-max-connections=700\n\n## This Property used in Idrepo-vid-Service\nmosip.kernel.http.default.restTemplate.max-connection-per-route=100\nmosip.kernel.http.default.restTemplate.total-max-connections=700\n\n## This Property used in Idrepo-Credential-service\nmosip.kernel.http.plain.restTemplate.max-connection-per-route=100\nmosip.kernel.http.plain.restTemplate.total-max-connections=700\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/mosip-config/blob/master/idp-binding-default.properties", + "title": "idp-binding-default.properties", + "repo": "mosip/mosip-config", + "file_path": "idp-binding-default.properties", + "language": "properties", + "content": "# This Source Code Form is subject to the terms of the Mozilla Public\n# License, v. 2.0. If a copy of the MPL was not distributed with this\n# file, You can obtain one at https://mozilla.org/MPL/2.0/.\n\n# Follow properites have their values assigned via 'overrides' environment variables of config server docker.\n# DO NOT define these in any of the property files. They must be passed as env variables. Refer to config-server\n# helm chart:\n# db.dbuser.password\n# keycloak.external.url\n# keycloak.internal.host\n# keycloak.internal.url\n# keycloak.admin.password\n# mosip.auth.client.secret (convention: ..secret)\n# mosip.ida.client.secret\n# mosip.admin.client.secret\n# mosip.reg.client.secret\n# mosip.prereg.client.secret\n# softhsm.kernel.pin\n# softhsm-security-pin\n# email.smtp.host\n# email.smtp.username\n# email.smtp.secret\n# mosip.kernel.tokenid.uin.salt\n# mosip.kernel.tokenid.partnercode.salt\n# mosip.api.internal.url\n# mosip.api.public.url\n# mosipbox.public.url\n\n## -------------------------------------------- IdP Binding ------------------------------------------------------------\nmosip.idp.binding.issuer-id=${mosipbox.public.url}${server.servlet.path}\nmosip.idp.binding.public-key-expire-days=10\nmosip.idp.binding.salt-length=16\n\nmosip.idp.binding.send-binding-otp=SCOPE_send_binding_otp\nmosip.idp.binding.wallet-binding=SCOPE_wallet_binding\nmosip.idp.binding.systeminfo.get-certificate=SCOPE_get_certificate\n\nmosip.idp.binding.auth-ignore-urls=${server.servlet.path}/validate-binding/**,${server.servlet.path}/actuator/**,/favicon.ico,\\\n /v1/notifier/actuator/prometheus,${server.servlet.path}/error,${server.servlet.path}/swagger-ui/**,\\\n ${server.servlet.path}/v3/api-docs/**\n\nspring.security.oauth2.resourceserver.jwt.issuer-uri=${keycloak.external.url}/auth/realms/mosip\nspring.security.oauth2.resourceserver.jwt.jwk-set-uri=${keycloak.external.url}/auth/realms/mosip/protocol/openid-connect/certs\n\nmosip.idp.binding.validate-binding-url=${mosipbox.public.url}${server.servlet.path}/validate-binding\nmosip.idp.binding.encrypt-binding-id=false\n\nmosip.idp.binding.wrapper.impl=MockKeyBindingWrapperService\nmosip.idp.authn.wrapper.validate-binding-url=${mosip.idp.binding.validate-binding-url}\nmosip.idp.binding.key-expire-days=10\n\nmanagement.health.redis.enabled=false\n\n##----------------------------------------- Database properties --------------------------------------------------------\n\nmosip.idp.database.hostname=${mosip.database.hostname.override:postgres-postgresql.postgres}\nmosip.idp.database.port=${mosip.database.port.override:5432}\nspring.datasource.url=jdbc:postgresql://${mosip.idp.database.hostname}:${mosip.idp.database.port}/mosip_idpbinding?currentSchema=idpbinding\nspring.datasource.username=idpbindinguser\nspring.datasource.password=${db.dbuser.password}\n\nspring.jpa.database-platform=org.hibernate.dialect.PostgreSQL95Dialect\nspring.jpa.show-sql=false\nspring.jpa.hibernate.ddl-auto=none\nspring.jpa.properties.hibernate.jdbc.lob.non_contextual_creation=true\n\n#------------------------------------ Key-manager specific properties --------------------------------------------------\n#Crypto asymmetric algorithm name\nmosip.kernel.crypto.asymmetric-algorithm-name=RSA/ECB/OAEPWITHSHA-256ANDMGF1PADDING\n#Crypto symmetric algorithm name\nmosip.kernel.crypto.symmetric-algorithm-name=AES/GCM/PKCS5Padding\n#Keygenerator asymmetric algorithm name\nmosip.kernel.keygenerator.asymmetric-algorithm-name=RSA\n#Keygenerator symmetric algorithm name\nmosip.kernel.keygenerator.symmetric-algorithm-name=AES\n#Asymmetric algorithm key length\nmosip.kernel.keygenerator.asymmetric-key-length=2048\n#Symmetric algorithm key length\nmosip.kernel.keygenerator.symmetric-key-length=256\n#Encrypted data and encrypted symmetric key separator\nmosip.kernel.data-key-splitter=#KEY_SPLITTER#\n#GCM tag length\nmosip.kernel.crypto.gcm-tag-length=128\n#Hash algo name\nmosip.kernel.crypto.hash-algorithm-name=PBKDF2WithHmacSHA512\n#Symmtric key length used in hash\nmosip.kernel.crypto.hash-symmetric-key-length=256\n#No of iterations in hash\nmosip.kernel.crypto.hash-iteration=100000\n#Sign algo name\nmosip.kernel.crypto.sign-algorithm-name=RS256\n#Certificate Sign algo name\nmosip.kernel.certificate.sign.algorithm=SHA256withRSA\n\n#mosip.kernel.keymanager.hsm.config-path=local.p12\n#mosip.kernel.keymanager.hsm.keystore-type=PKCS12\n#mosip.kernel.keymanager.hsm.keystore-pass=${softhsm.idp.pin}\n\n#Type of keystore, Supported Types: PKCS11, PKCS12, Offline, JCE\nmosip.kernel.keymanager.hsm.keystore-type=PKCS11\n# For PKCS11 provide Path of config file.\n# For PKCS12 keystore type provide the p12/pfx file path. P12 file will be created internally so provide only file path & file name.\n# For Offline & JCE property can be left blank, specified value will be ignored.\nmosip.kernel.keymanager.hsm.config-path=/config/softhsm-application.conf\n# Passkey of keystore for PKCS11, PKCS12\n# For Offline & JCE proer can be left blank. JCE password use other JCE specific properties.\nmosip.kernel.keymanager.hsm.keystore-pass=${softhsm.idp.pin}\n\nmosip.kernel.keymanager.certificate.default.common-name=www.mosip.io\nmosip.kernel.keymanager.certificate.default.organizational-unit=MOSIP-TECH-CENTER\nmosip.kernel.keymanager.certificate.default.organization=IITB\nmosip.kernel.keymanager.certificate.default.location=BANGALORE\nmosip.kernel.keymanager.certificate.default.state=KA\nmosip.kernel.keymanager.certificate.default.country=IN\n\nmosip.kernel.keymanager.softhsm.certificate.common-name=www.mosip.io\nmosip.kernel.keymanager.softhsm.certificate.organizational-unit=MOSIP\nmosip.kernel.keymanager.softhsm.certificate.organization=IITB\nmosip.kernel.keymanager.softhsm.certificate.country=IN\n\n# Application Id for PMS master key.\nmosip.kernel.partner.sign.masterkey.application.id=PMS\nmosip.kernel.partner.allowed.domains=DEVICE\n\nmosip.kernel.keymanager-service-validate-url=https://${mosip.hostname}/keymanager/validate\nmosip.kernel.keymanager.jwtsign.validate.json=false\nmosip.keymanager.dao.enabled=false\ncrypto.PrependThumbprint.enable=true" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/mosip-config/blob/master/idp-default.properties", + "title": "idp-default.properties", + "repo": "mosip/mosip-config", + "file_path": "idp-default.properties", + "language": "properties", + "content": "# This Source Code Form is subject to the terms of the Mozilla Public\n# License, v. 2.0. If a copy of the MPL was not distributed with this\n# file, You can obtain one at https://mozilla.org/MPL/2.0/.\n\n# Follow properites have their values assigned via 'overrides' environment variables of config server docker.\n# DO NOT define these in any of the property files. They must be passed as env variables. Refer to config-server\n# helm chart:\n# db.dbuser.password\n# keycloak.external.url\n# keycloak.internal.host\n# keycloak.internal.url\n# keycloak.admin.password\n# mosip.auth.client.secret (convention: ..secret)\n# mosip.ida.client.secret\n# mosip.admin.client.secret\n# mosip.reg.client.secret\n# mosip.prereg.client.secret\n# softhsm.kernel.pin\n# softhsm-security-pin\n# email.smtp.host\n# email.smtp.username\n# email.smtp.secret\n# mosip.kernel.tokenid.uin.salt\n# mosip.kernel.tokenid.partnercode.salt\n# mosip.api.internal.url\n# mosip.api.public.url\n\n## IdP MISP License key\nmosip.idp.misp.license.key=jj8n2cZww2dzZfszKgxyaOWOzq7hPx2snT52MPMA6k5Z5fZ2X3\n\n# Secure endpoints with required authority\nmosip.idp.security.auth.post-urls={'${server.servlet.path}/client-mgmt/**' : {'SCOPE_add_oidc_client'} , \\\n \\ '${server.servlet.path}/system-info/**' : { 'SCOPE_upload_certificate'} }\nmosip.idp.security.auth.put-urls={'${server.servlet.path}/client-mgmt/**' : { 'SCOPE_update_oidc_client'} }\nmosip.idp.security.auth.get-urls={'${server.servlet.path}/system-info/**' : { 'SCOPE_get_certificate'} }\n\n# CSRF token check disabled endpoints\nmosip.idp.security.ignore-csrf-urls=${server.servlet.path}/oidc/**,${server.servlet.path}/oauth/**,\\\n ${server.servlet.path}/actuator/**,/favicon.ico,${server.servlet.path}/error,\\\n ${server.servlet.path}/swagger-ui/**,${server.servlet.path}/v3/api-docs/**,\\\n ${server.servlet.path}/system-info/**,${server.servlet.path}/linked-authorization/link-transaction,\\\n ${server.servlet.path}/linked-authorization/authenticate,${server.servlet.path}/linked-authorization/consent\n\n\n# Authentication ignored endpoint (permit-all)\nmosip.idp.security.ignore-auth-urls=${server.servlet.path}/csrf/**,${server.servlet.path}/authorization/**,\\\n ${server.servlet.path}/linked-authorization/**,${server.servlet.path}/oidc/**,${server.servlet.path}/oauth/**,\\\n ${server.servlet.path}/actuator/**,/favicon.ico,${server.servlet.path}/error,${server.servlet.path}/swagger-ui/**,\\\n ${server.servlet.path}/v3/api-docs/**\n\nmosip.idp.amr-acr-mapping-file-url=${spring_config_url_env}/application/${active_profile_env}/${spring_config_label_env}/amr-acr-mapping.json\n\n#spring.autoconfigure.exclude[0]=org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration\nspring.security.oauth2.resourceserver.jwt.issuer-uri=${keycloak.external.url}/auth/realms/mosip\nspring.security.oauth2.resourceserver.jwt.jwk-set-uri=${keycloak.external.url}/auth/realms/mosip/protocol/openid-connect/certs\n\nmosip.idp.supported-id-regex=\\\\S*\nmosip.idp.reqtime.leeway-minutes=2\n\n#Id and access token validity intervals\nmosip.idp.access-token-expire-seconds=7200\nmosip.idp.id-token-expire-seconds=7200\n\n## link transaction\nmosip.idp.link-code-expire-in-secs=60\nmosip.idp.kafka.linked-session.topic=idp-linked\nmosip.idp.kafka.linked-auth-code.topic=idp-consented\n\n## kafka configurations\nspring.kafka.bootstrap-servers=kafka-0.kafka-headless.${kafka.profile}:${kafka.port},kafka-1.kafka-headless.${kafka.profile}:${kafka.port},kafka-2.kafka-headless.${kafka.profile}:${kafka.port}\nspring.kafka.consumer.group-id=idp-consumer\nspring.kafka.consumer.enable-auto-commit=true\n#spring.kafka.listener.concurrency=1\n\nmosip.idp.audit.wrapper.impl=LoggerAuditService\n\n## ---------------------------------------- IdP (oauth & openid) config -------------------------------------------\n\n## supported scopes\nmosip.idp.supported.authorize.scopes={'identity.readonly','vid.manage','vid.readonly','auth.readonly','auth.method.manage','identity.update','auth.history.readonly','notifications.readonly','notifications.manage','credential.manage','auth.history.manage','card.manage'}\nmosip.idp.supported.openid.scopes={'profile','email','phone'}\nmosip.idp.openid.scope.claims={'profile' : {'name','address','gender','birthdate','picture','email','phone_number','locale','individual_id'},'email' : {'email'}, 'phone' : {'phone_number'}}\n\n## supported authorization processing flow to be used, Currently only supports Authorization Code Flow.\nmosip.idp.supported.response.types={'code'}\n\n## Form of Authorization Grant presented to token endpoint\nmosip.idp.supported.grant.types={'authorization_code'}\n\n## specifies how the Authorization Server displays the authentication and consent user interface pages to the End-User\n# page-The Authorization Server SHOULD display the authentication and consent UI consistent with a full User Agent page view. If the display parameter is not specified, this is the default display mode.\n# popup-The Authorization Server SHOULD display the authentication and consent UI consistent with a popup User Agent window. The popup User Agent window should be of an appropriate size for a login-focused dialog and should not obscure the entire window that it is popping up over.\n# touch-The Authorization Server SHOULD display the authentication and consent UI consistent with a device that leverages a touch interface.\n# wap-The Authorization Server SHOULD display the authentication and consent UI consistent with a \"feature phone\" type display.\nmosip.idp.supported.ui.displays={'page','popup','touch','wap'}\n\n## specifies whether the Authorization Server prompts the End-User for reauthentication and consent\n# none-The Authorization Server MUST NOT display any authentication or consent user interface pages.\n# An error is returned if an End-User is not already authenticated or the Client does not have pre-configured consent\n# for the requested Claims or does not fulfill other conditions for processing the request.\n# The error code will typically be login_required, interaction_required, or another code defined in Section 3.1.2.6.\n# This can be used as a method to check for existing authentication and/or consent.\n# login-The Authorization Server SHOULD prompt the End-User for reauthentication. If it cannot reauthenticate the End-User, \\\n# it MUST return an error, typically login_required.\n# consent-The Authorization Server SHOULD prompt the End-User for consent before returning information to the Client.\n# If it cannot obtain consent, it MUST return an error, typically consent_required.\n# select_account-The Authorization Server SHOULD prompt the End-User to select a user account. This enables an End-User\n# who has multiple accounts at the Authorization Server to select amongst the multiple accounts that they might have current\n# sessions for. If it cannot obtain an account selection choice made by the End-User, it MUST return an error,\n# typically account_selection_required.\nmosip.idp.supported.ui.prompts={'none','login','consent','select_account'}\n\n## Type of the client assertion\nmosip.idp.supported.client.assertion.types={'urn:ietf:params:oauth:client-assertion-type:jwt-bearer'}\n\n## Type of the client authentication methods for token endpoint\nmosip.idp.supported.client.auth.methods={'private_key_jwt'}\n\n## ---------------------------------------- Cache configuration -------------------------------------------\nmosip.idp.cache.secure.individual-id=true\nmosip.idp.cache.store.individual-id=true\nmosip.idp.cache.security.secretkey.reference-id=TRANSACTION_CACHE\nmosip.idp.cache.security.algorithm-name=AES/ECB/PKCS5Padding\n\nmosip.idp.cache.names=clientdetails,preauth,authenticated,authcodegenerated,userinfo,linkcodegenerated,linked,linkedcode,linkedauth,consented\n\n#spring.cache.type=redis\n#spring.cache.cache-names=${mosip.idp.cache.names}\n#spring.redis.host=localhost\n#spring.redis.port=6379\nmanagement.health.redis.enabled=false\n\nspring.cache.type=simple\nmosip.idp.cache.key.hash.algorithm=SHA3-256\nmosip.idp.cache.size={'clientdetails' : 200, 'preauth': 200, 'authenticated': 200, 'authcodegenerated': 200, 'userinfo': 200, \\\n 'linkcodegenerated' : 500, 'linked': 200 , 'linkedcode': 200, 'linkedauth' : 200 , 'consented' :200 }\nmosip.idp.cache.expire-in-seconds={'clientdetails' : 86400, 'preauth': 300, 'authenticated': 300, 'authcodegenerated': 300, \\\n 'userinfo': ${mosip.idp.access-token-expire-seconds}, 'linkcodegenerated' : ${mosip.idp.link-code-expire-in-secs}, \\\n 'linked': 300 , 'linkedcode': ${mosip.idp.link-code-expire-in-secs}, 'linkedauth' : 300, 'consented': 300 }\n\n## ------------------------------------------ Auth Wrapper ------------------------------------------------\n\nmosip.idp.authn.wrapper.impl=IdentityAuthenticationService\nmosip.idp.authn.ida.cert-url=https://${mosip.api.public.host}/mosip-certs/ida-partner.cer\nmosip.idp.authn.ida.kyc-auth-url=${mosip.api.internal.url}/idauthentication/v1/kyc-auth/delegated/${mosip.idp.misp.license.key}/\nmosip.idp.authn.ida.kyc-exchange-url=${mosip.api.internal.url}/idauthentication/v1/kyc-exchange/delegated/${mosip.idp.misp.license.key}/\nmosip.idp.authn.ida.send-otp-url=${mosip.api.internal.url}/idauthentication/v1/otp/${mosip.idp.misp.license.key}/\nmosip.idp.authn.wrapper.ida-domainUri=https://${mosip.idp.host}\nmosip.idp.authn.wrapper.ida-env=Developer\nmosip.idp.authn.ida.otp-channels=email,phone\n\n#mosip.idp.authn.wrapper.impl=MockAuthenticationService\nmosip.idp.authn.mock.impl.token-expire-sec=1800\nmosip.idp.authn.mock.impl.persona-repo=/home/mosip/mock-auth-data\nmosip.idp.authn.mock.impl.policy-repo=/home/mosip/mock-auth-data\nmosip.idp.authn.mock.impl.claims-mapping-file=/home/mosip/mock-auth-data/claims_attributes_mapping.json\n\nmosip.idp.authn.wrapper.validate-binding-url=${mosip.api.internal.url}/v1/idpbinding/validate-binding\n\n\n## ------------------------------------------ Discovery openid-configuration ------------------------------------------------\nmosip.idp.domain.url=https://${mosip.api.public.host}\nmosip.idp.discovery.issuer-id=${mosip.idp.domain.url}${server.servlet.path}\n\nmosip.idp.discovery.key-values={'issuer': '${mosip.idp.discovery.issuer-id}' ,\\\n \\ 'authorization_endpoint': '${mosip.idp.domain.url}${server.servlet.path}/authorize' , \\\n \\ 'token_endpoint': '${mosip.idp.domain.url}${server.servlet.path}/oauth/token' ,\\\n \\ 'userinfo_endpoint' : '${mosip.idp.domain.url}${server.servlet.path}/oidc/userinfo' , \\\n \\ 'registration_endpoint' : '${mosip.idp.domain.url}${server.servlet.path}/client-mgmt/oidc-client' , \\\n \\ 'jwks_uri' : '${mosip.idp.domain.url}${server.servlet.path}/oauth/jwks.json' , \\\n \\ 'scopes_supported' : ${mosip.idp.supported.openid.scopes}, \\\n \\ 'response_types_supported' : ${mosip.idp.supported.response.types}, \\\n \\ 'acr_values_supported' : {'mosip:idp:acr:static-code', 'mosip:idp:acr:generated-code', 'mosip:idp:acr:linked-wallet', 'mosip:idp:acr:biometrics'},\\\n \\ 'userinfo_signing_alg_values_supported' : {'RS256'}, \\\n \\ 'userinfo_encryption_alg_values_supported' : {'RSAXXXXX'},\\\n \\ 'userinfo_encryption_enc_values_supported' : {'A128GCM'}, \\\n \\ 'response_modes_supported' : { 'query' }, \\\n \\ 'token_endpoint_auth_methods_supported' : ${mosip.idp.supported.client.auth.methods}, \\\n \\ 'token_endpoint_auth_signing_alg_values_supported' : {'RS256'}, 'id_token_signing_alg_values_supported' : {'RS256'}, 'claim_types_supported': {'normal'}, \\\n \\ 'claims_supported' : {'name','address','gender','birthdate','picture','email','phone_number','locale','individual_id'}, 'claims_locales_supported' : {'en'}, 'display_values_supported' : ${mosip.idp.supported.ui.displays}, 'ui_locales_supported' : {'en'} }\n\n\n##----------------------------------------- Database properties -------------------------------------------\n\nmosip.idp.database.hostname=${mosip.database.hostname.override:postgres-postgresql.postgres}\nmosip.idp.database.port=${mosip.database.port.override:5432}\nspring.datasource.url=jdbc:postgresql://${mosip.idp.database.hostname}:${mosip.idp.database.port}/mosip_idp?currentSchema=idp\nspring.datasource.username=idpuser\nspring.datasource.password=${db.dbuser.password}\n\nspring.jpa.database-platform=org.hibernate.dialect.PostgreSQL95Dialect\nspring.jpa.show-sql=false\nspring.jpa.hibernate.ddl-auto=none\nspring.jpa.properties.hibernate.jdbc.lob.non_contextual_creation=true\n\n#------------------------------------ Key-manager specific properties --------------------------------------\n#Crypto asymmetric algorithm name\nmosip.kernel.crypto.asymmetric-algorithm-name=RSA/ECB/OAEPWITHSHA-256ANDMGF1PADDING\n#Crypto symmetric algorithm name\nmosip.kernel.crypto.symmetric-algorithm-name=AES/GCM/PKCS5Padding\n#Keygenerator asymmetric algorithm name\nmosip.kernel.keygenerator.asymmetric-algorithm-name=RSA\n#Keygenerator symmetric algorithm name\nmosip.kernel.keygenerator.symmetric-algorithm-name=AES\n#Asymmetric algorithm key length\nmosip.kernel.keygenerator.asymmetric-key-length=2048\n#Symmetric algorithm key length\nmosip.kernel.keygenerator.symmetric-key-length=256\n#Encrypted data and encrypted symmetric key separator\nmosip.kernel.data-key-splitter=#KEY_SPLITTER#\n#GCM tag length\nmosip.kernel.crypto.gcm-tag-length=128\n#Hash algo name\nmosip.kernel.crypto.hash-algorithm-name=PBKDF2WithHmacSHA512\n#Symmtric key length used in hash\nmosip.kernel.crypto.hash-symmetric-key-length=256\n#No of iterations in hash\nmosip.kernel.crypto.hash-iteration=100000\n#Sign algo name\nmosip.kernel.crypto.sign-algorithm-name=RS256\n#Certificate Sign algo name\nmosip.kernel.certificate.sign.algorithm=SHA256withRSA\n\n#mosip.kernel.keymanager.hsm.config-path=local.p12\n#mosip.kernel.keymanager.hsm.keystore-type=PKCS12\n#mosip.kernel.keymanager.hsm.keystore-pass=${softhsm.idp.security.pin}\n\n#Type of keystore, Supported Types: PKCS11, PKCS12, Offline, JCE\nmosip.kernel.keymanager.hsm.keystore-type=PKCS11\n# For PKCS11 provide Path of config file.\n# For PKCS12 keystore type provide the p12/pfx file path. P12 file will be created internally so provide only file path & file name.\n# For Offline & JCE property can be left blank, specified value will be ignored.\nmosip.kernel.keymanager.hsm.config-path=/config/softhsm-application.conf\n# Passkey of keystore for PKCS11, PKCS12\n# For Offline & JCE proer can be left blank. JCE password use other JCE specific properties.\nmosip.kernel.keymanager.hsm.keystore-pass=${softhsm.idp.security.pin}\n\n\nmosip.kernel.keymanager.certificate.default.common-name=www.mosip.io\nmosip.kernel.keymanager.certificate.default.organizational-unit=MOSIP-TECH-CENTER\nmosip.kernel.keymanager.certificate.default.organization=IITB\nmosip.kernel.keymanager.certificate.default.location=BANGALORE\nmosip.kernel.keymanager.certificate.default.state=KA\nmosip.kernel.keymanager.certificate.default.country=IN\n\nmosip.kernel.keymanager.softhsm.certificate.common-name=www.mosip.io\nmosip.kernel.keymanager.softhsm.certificate.organizational-unit=MOSIP\nmosip.kernel.keymanager.softhsm.certificate.organization=IITB\nmosip.kernel.keymanager.softhsm.certificate.country=IN\n\n# Application Id for PMS master key.\nmosip.kernel.partner.sign.masterkey.application.id=PMS\nmosip.kernel.partner.allowed.domains=DEVICE\n\nmosip.kernel.keymanager-service-validate-url=https://${mosip.hostname}/keymanager/validate\nmosip.kernel.keymanager.jwtsign.validate.json=false\nmosip.keymanager.dao.enabled=false\ncrypto.PrependThumbprint.enable=true\n\n## ---------------------------------------------- UI configs ------------------------------------------------------------------\n\nmosip.idp.ui.config.key-values={'sbi.env': 'Developer', 'sbi.timeout.DISC': 30, \\\n 'sbi.timeout.DINFO': 30, 'sbi.timeout.CAPTURE': 30, 'sbi.capture.count.face': 1, 'sbi.capture.count.finger': 1, \\\n 'sbi.capture.count.iris': 1, 'sbi.capture.score.face': 70, 'sbi.capture.score.finger':70, 'sbi.capture.score.iris':70, 'resend.otp.delay.secs': 30, \\\n 'send.otp.channels' : '${mosip.idp.authn.ida.otp-channels}' }\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/mosip-config/blob/master/image-compressor-default.properties", + "title": "image-compressor-default.properties", + "repo": "mosip/mosip-config", + "file_path": "image-compressor-default.properties", + "language": "properties", + "content": "#iam image-compressor-service config\r\nmosip.bio.image.compressor.resize.factor.fx=0.25\r\nmosip.bio.image.compressor.resize.factor.fy=0.25\r\nmosip.bio.image.compressor.compression.ratio=50\r\nbiosdk_class=io.mosip.image.compressor.sdk.impl.ImageCompressorSDKV2\r\nmosip.role.biosdk.getservicestatus=REGISTRATION_PROCESSOR\r\nbiosdk_bioapi_impl=io.mosip.image.compressor.sdk.impl.ImageCompressorSDKV2" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/mosip-config/blob/master/kernel-default.properties", + "title": "kernel-default.properties", + "repo": "mosip/mosip-config", + "file_path": "kernel-default.properties", + "language": "properties", + "content": "# Follow properites have their values assigned via 'overrides' environment variables of config server docker.\n# DO NOT define these in any of the property files. They must be passed as env variables. Refer to config-server\n# helm chart:\n# db.dbuser.password \n# keycloak.external.url\n# keycloak.internal.host\n# keycloak.internal.url\n# keycloak.admin.password\n# mosip.auth.client.secret (convention: ..secret)\n# mosip.ida.client.secret\n# mosip.admin.client.secret\n# mosip.reg.client.secret\n# mosip.prereg.client.secret\n# softhsm.kernel.security.pin\n# email.smtp.host\n# email.smtp.username\n# email.smtp.secret\n# mosip.kernel.tokenid.uin.salt\n# mosip.kernel.tokenid.partnercode.salt\n# mosip.api.internal.url\n\n## Sync data\nmosip.kernel.syncdata.auth-manager-base-uri=${mosip.kernel.authmanager.url}/v1/authmanager\nmosip.kernel.syncdata.auth-manager-roles=/roles\nmosip.kernel.syncdata.auth-user-details=/userdetails\nmosip.kernel.syncdata.syncdata-request-id=SYNCDATA.REQUEST\nmosip.kernel.syncdata.syncdata-version-id=v1.0\n# Name of the file that is present in the config server which has registration specific config.\nmosip.kernel.syncdata.registration-center-config-file=registration-${spring.profiles.active}.properties\n# Name of the file that is present in the config server which has global config.\nmosip.kernel.syncdata.global-config-file=application-${spring.profiles.active}.properties\nmosip.kernel.syncdata.syncjob-base-url=${mosip.kernel.syncdata.syncjob.url}/v1/syncjob/syncjobdef\nmosip.kernel.syncdata-service-idschema-url=${mosip.kernel.masterdata.url}/v1/masterdata/idschema/latest\n\n## SMS notification\nmosip.kernel.sms.enabled=true\nmosip.kernel.sms.country.code=+91\nmosip.kernel.sms.number.length=10\nmosip.kernel.sms.number.min.length=8\nmosip.kernel.sms.number.max.length=10\n#mosip.kernel.sms.gateway : \"infobip\" or \"msg91\"\nmosip.kernel.sms.gateway=${sms.gateway.provider}\n## --msg91 gateway--\nmosip.kernel.sms.authkey=${sms.authkey}\nmosip.kernel.sms.unicode=unicode\nmosip.kernel.sms.api=http://${sms.host}:${sms.port}/sendsms\nmosip.kernel.sms.sender=AD-MOSIP\nmosip.kernel.sms.password=dummy\nmosip.kernel.sms.route=mock\n\n## Email notification\nmosip.kernel.notification.email.from=do-not-reply@mosip.io\nspring.mail.host=${smtp.host}\nspring.mail.username=${smtp.username}\nspring.mail.password=${smtp.secret}\nspring.mail.port=${smtp.port}\nspring.mail.properties.mail.transport.protocol=smtp\nspring.mail.properties.mail.smtp.starttls.required=false\nspring.mail.properties.mail.smtp.starttls.enable=false\nspring.mail.properties.mail.smtp.auth=false\nspring.mail.debug=false\nspring.servlet.multipart.enabled=true\nspring.servlet.multipart.max-file-size=5MB\n\n\n## Keymanager service\n#Type of keystore, Supported Types: PKCS11, PKCS12, Offline, JCE\nmosip.kernel.keymanager.hsm.keystore-type=PKCS11\n# For PKCS11 provide Path of config file.\n# For PKCS12 keystore type provide the p12/pfx file path. P12 file will be created internally so provide only file path & file name.\n# For Offline & JCE property can be left blank, specified value will be ignored.\nmosip.kernel.keymanager.hsm.config-path=/config/softhsm-application.conf\n# Passkey of keystore for PKCS11, PKCS12\n# For Offline & JCE proer can be left blank. JCE password use other JCE specific properties.\nmosip.kernel.keymanager.hsm.keystore-pass=${softhsm.kernel.security.pin}\n# Config to allow use of the resident service module keys for client crypto APIs which is used by resident service to sign uin update packets\nmosip.kernel.client.crypto.use-resident-service-module-key=true\n\n## Auditmanager\nmosip.kernel.auditmanager-service-logs-location=logs/audit.log\n\n## Auth service\nauth.jwt.secret=authjwtsecret\nauth.jwt.base=Mosip-Token\nauth.jwt.expiry=6000000\nauth.token.header=Authorization\nauth.refreshtoken.header=RefreshToken\nauth.jwt.refresh.expiry=86400000\nauth.primary.language=eng\n\notp.manager.api.generate=${mosip.kernel.otpmanager.url}/v1/otpmanager/otp/generate\notp.manager.api.verify=${mosip.kernel.otpmanager.url}/v1/otpmanager/otp/validate\notp.sender.api.email.send=${mosip.kernel.notification.url}/v1/notifier/email/send\notp.sender.api.sms.send=${mosip.kernel.notification.url}/v1/notifier/sms/send\nmasterdata.api.template=${mosip.kernel.masterdata.url}/v1/masterdata/templates/\nmasterdata.api.template.otp=/otp-sms-template\nidrepo.api.getuindetails=${mosip.idrepo.identity.url}/v1/identity/uin/{uin}\n\nmosip.kernel.auth.app.id=auth\nmosip.kernel.auth.client.id=mosip-auth-client\nmosip.kernel.auth.secret.key=${mosip.auth.client.secret}\n\nmosip.kernel.ida.app.id=ida\nmosip.kernel.ida.client.id=mosip-ida-client\nmosip.kernel.ida.secret.key=${mosip.ida.client.secret}\n\n## VID generator service\nmosip.kernel.vid.min-unused-threshold=${mosip.kernel.vid.min.unused.threshold.override:100000}\nmosip.kernel.vid.vids-to-generate=200000\nmosip.kernel.vid.time-to-release-after-expiry=5\nmosip.kernel.vid.pool-population-timeout=10000000\nkernel.vid.revoke-scheduler-type=cron\nkernel.vid.revoke-scheduler-seconds=0\nkernel.vid.revoke-scheduler-minutes=0\nkernel.vid.revoke-scheduler-hours=23\nkernel.vid.revoke-scheduler-days_of_month=*\nkernel.vid.revoke-scheduler-months=*\nkernel.vid.revoke-scheduler-days_of_week=*\nkernel.vid.isolator-scheduler-type=cron\nkernel.vid.isolator-scheduler-seconds=0\nkernel.vid.isolator-scheduler-minutes=0\nkernel.vid.isolator-scheduler-hours=*\nkernel.vid.isolator-scheduler-days_of_month=*\nkernel.vid.isolator-scheduler-months=*\nkernel.vid.isolator-scheduler-days_of_week=*\n\n## PRID properties\nmosip.kernel.prid.min-unused-threshold=1000\nmosip.kernel.prid.prids-to-generate=2000\nmosip.kernel.prid.pool-population-timeout=10000000\nmosip.kernel.prid.sequence-limit=3\nkernel.prid.revoke-scheduler-type=cron\nkernel.prid.revoke-scheduler-seconds=0\nkernel.prid.revoke-scheduler-minutes=0\nkernel.prid.revoke-scheduler-hours=23\nkernel.prid.revoke-scheduler-days_of_month=*\nkernel.prid.revoke-scheduler-months=*\nkernel.prid.revoke-scheduler-days_of_week=*\n\n## Database properties\n# Database hostname below is assuming postgres is running inside cluster in 'postgres' namespace\n# If database is external to production, provide the DNS or ip of the host and port \nmosip.kernel.database.hostname=${mosip.database.hostname.override:postgres-postgresql.postgres}\nmosip.kernel.database.port=${mosip.database.port.override:5432}\n\njavax.persistence.jdbc.driver=org.postgresql.Driver\nhibernate.dialect=org.hibernate.dialect.PostgreSQLDialect\nhibernate.jdbc.lob.non_contextual_creation=true\nhibernate.hbm2ddl.auto=none\nhibernate.show_sql=false\nhibernate.format_sql=false\nhibernate.connection.charSet=utf8\nhibernate.cache.use_second_level_cache=false\nhibernate.cache.use_query_cache=false\nhibernate.cache.use_structured_entries=false\nhibernate.generate_statistics=false\n\nlogging.level.org.hibernate.SQL=ERROR\nlogging.level.org.hibernate.type=ERROR\n\nadmin_database_url=jdbc:postgresql://${mosip.kernel.database.hostname}:${mosip.kernel.database.port}/mosip_kernel\nadmin_database_username=kerneluser\nadmin_database_password=${db.dbuser.password}\n\nsyncjob_database_url=jdbc:postgresql://${mosip.kernel.database.hostname}:${mosip.kernel.database.port}/mosip_master\nsyncjob_database_username=masteruser\nsyncjob_database_password=${db.dbuser.password}\n\naudit_database_url=jdbc:postgresql://${mosip.kernel.database.hostname}:${mosip.kernel.database.port}/mosip_audit\naudit_database_username=audituser\naudit_database_password=${db.dbuser.password}\n\nmasterdata_database_url=jdbc:postgresql://${mosip.kernel.database.hostname}:${mosip.kernel.database.port}/mosip_master\nmasterdata_database_username=masteruser\nmasterdata_database_password=${db.dbuser.password}\n\nuin.swagger.base-url=https://qa.mosip.io\nuin_database_url=jdbc:postgresql://${mosip.kernel.database.hostname}:${mosip.kernel.database.port}/mosip_kernel\nuin_database_username=kerneluser\nuin_database_password=${db.dbuser.password}\nhibernate.current_session_context_class=org.springframework.orm.hibernate5.SpringSessionContext\n\nid_database_url=jdbc:postgresql://${mosip.kernel.database.hostname}:${mosip.kernel.database.port}/mosip_kernel\nid_database_username=kerneluser\nid_database_password=${db.dbuser.password}\n\nvid_database_url=jdbc:postgresql://${mosip.kernel.database.hostname}:${mosip.kernel.database.port}/mosip_kernel\nvid_database_username=kerneluser\nvid_database_password=${db.dbuser.password}\n\nprid_database_url=jdbc:postgresql://${mosip.kernel.database.hostname}:${mosip.kernel.database.port}/mosip_kernel\nprid_database_username=kerneluser\nprid_database_password=${db.dbuser.password}\n\nkeymanager.persistence.jdbc.driver=org.postgresql.Driver\nkeymanager_database_url = jdbc:postgresql://${mosip.kernel.database.hostname}:${mosip.kernel.database.port}/mosip_keymgr\nkeymanager_database_password=${db.dbuser.password}\nkeymanager_database_username= keymgruser\n\notpmanager_database_username=otpuser\notpmanager_database_url=jdbc:postgresql://${mosip.kernel.database.hostname}:${mosip.kernel.database.port}/mosip_otp\notpmanager_database_password=${db.dbuser.password}\n\nsyncdata_database_url=jdbc:postgresql://${mosip.kernel.database.hostname}:${mosip.kernel.database.port}/mosip_master\nsyncdata_database_username=masteruser\nsyncdata_database_password=${db.dbuser.password}\n\nridgenerator_database_username =regprcuser\nridgenerator_database_url =jdbc:postgresql://${mosip.kernel.database.hostname}:${mosip.kernel.database.port}/mosip_regprc\nridgenerator_database_password=${db.dbuser.password}\n\n## Keycloak properties\nmosip.iam.base.url=${keycloak.internal.url}\nmosip.iam.base-url=${mosip.iam.base.url}\nmosip.iam.admin-realm-id=admin\nmosip.iam.default.realm-id=mosip\nmosip.iam.open-id-url=${mosip.iam.base.url}/auth/realms/{realmId}/protocol/openid-connect/\nmosip.iam.realm.operations.base-url=${mosip.iam.base.url}/auth/admin/realms/{realmId}\nmosip.iam.admin-url=${mosip.iam.base.url}/auth/admin/\nmosip.iam.roles-extn-url=realms/mosip/roles\nmosip.iam.users-extn-url=realms/mosip/users\nmosip.iam.role-user-mapping-url=/{userId}/role-mappings/realm\nmosip.iam.role-based-user-url=realms/{realm}/roles/{role-name}/users\nkeycloak.realm=registration-client\nkeycloak.resource=account\nkeycloak.auth-server-url=${mosip.iam.base.url}/auth\nkeycloak.ssl-required=none\nkeycloak.public-client=true\nkeycloak.use-resource-role-mappings=true\nkeycloak.verify-token-audience=true\n\n#This is the endpoint use by ui(browser) based applications to redirect to open-id system. This URL should be reachable through the browser.\nmosip.iam.authorization_endpoint=${keycloak.external.url}/auth/realms/{realmId}/protocol/openid-connect/auth\n\nmosip.iam.token_endpoint=${mosip.iam.base.url}/auth/realms/{realmId}/protocol/openid-connect/token\nmosip.authmanager.base-url=${mosip.kernel.authmanager.url}/v1/authmanager\nmosip.admin.login_flow.name=authorization_code\nmosip.admin.login_flow.response_type=code\nmosip.admin.login_flow.scope=cls\nmosip.admin.clientid=mosip-admin-client\nmosip.admin.clientsecret=${mosip.admin.client.secret}\nmosip.admin.redirecturi=${mosip.authmanager.base-url}/login-redirect/\nmosip.admin_realm_id=mosip\nmosip.iam.master.realm-id=master\nmosip.iam.pre-reg_user_password=mosip\n\n## TODO: Below config is not needed anymore. Need to remove init of db_3_DS in authmanager code. For now, we just\n## point to a valid db.\n#db_3_DS.keycloak.ipaddress= jdbc:postgresql://${mosip.kernel.database.hostname}:${mosip.kernel.database.port}/keycloak\ndb_3_DS.keycloak.ipaddress= jdbc:postgresql://${mosip.kernel.database.hostname}:${mosip.kernel.database.port}/mosip_kernel\ndb_3_DS.keycloak.port=${mosip.kernel.database.port}\ndb_3_DS.keycloak.username=kerneluser\ndb_3_DS.keycloak.password=${db.dbuser.password}\ndb_3_DS.keycloak.driverClassName=org.postgresql.Driver\n\nmosip.keycloak.admin.client.id=admin-cli\nmosip.keycloak.admin.user.id=admin\nmosip.keycloak.admin.secret.key=${keycloak.admin.password}\n\nmosip.iam.impl.basepackage=io.mosip.kernel.auth.defaultimpl\nmosip.auth.adapter.impl.basepackage=io.mosip.kernel.auth.defaultadapter\n\n\nmaster.search.maximum.rows=50\nmosip.level=2\nmosip.kernel.masterdata.audit-url= ${mosip.kernel.auditmanager.url}/v1/auditmanager/audits\nmosip.keycloak.max-no-of-users=20000\n\n## Register device\n# Keymanager runs in separate namespace \"keymanager\"\nmosip.kernel.sign-url=${mosip.kernel.keymanager.url}/v1/keymanager/sign\nmasterdata.registerdevice.timestamp.validate=+10\n\n## Prereg\nmosip.kernel.prereg.realm-id=mosip\nmosip.kernel.prereg.client.id=mosip-prereg-client\nmosip.kernel.prereg.secret.key=${mosip.prereg.client.secret}\n\n## UIN scheduler\nkernel.uin.transfer-scheduler-type=cron\nkernel.uin.transfer-scheduler-seconds=0\nkernel.uin.transfer-scheduler-minutes=0,20,40\nkernel.uin.transfer-scheduler-hours=*\nkernel.uin.transfer-scheduler-days_of_month=*\nkernel.uin.transfer-scheduler-months=*\nkernel.uin.transfer-scheduler-days_of_week=*\n\n## UIN Auth adapter config\nauth.server.admin.validate.url=${mosip.kernel.authmanager.url}/v1/authmanager/authorize/admin/validateToken\n\n\n## Proxy otp\n#mosip.kernel.auth.proxy-otp=false\nmosip.kernel.auth.proxy-otp-value=111111\nmosip.security.provider.name=SunPKCS11-pkcs11-proxy\n\n## identity schema backward compatability ########\nmosip.ui.spec.default.domain=registration-client\n\n## Security properties\nmosip.security.csrf-enable=false\nmosip.security.cors-enable=false\nmosip.security.origins=localhost:8080\nmosip.security.secure-cookie=false\n\n## ROOT key identifier\nmosip.root.key.applicationid=ROOT\n\n## Certificate signing algorithm\nmosip.kernel.certificate.sign.algorithm=SHA256withRSA\n\n## Default certificate params\nmosip.kernel.keymanager.certificate.default.common-name=www.mosip.io\nmosip.kernel.keymanager.certificate.default.organizational-unit=MOSIP-TECH-CENTER\nmosip.kernel.keymanager.certificate.default.organization=IITB\nmosip.kernel.keymanager.certificate.default.location=BANGALORE\nmosip.kernel.keymanager.certificate.default.state=KA\nmosip.kernel.keymanager.certificate.default.country=IN\n\n## Zero Knowledge Master & Public Key identifier.\nmosip.kernel.zkcrypto.masterkey.application.id=KERNEL\nmosip.kernel.zkcrypto.masterkey.reference.id=IDENTITY_CACHE\nmosip.kernel.zkcrypto.publickey.application.id=IDA\nmosip.kernel.zkcrypto.publickey.reference.id=PUBLIC_KEY\nmosip.kernel.zkcrypto.wrap.algorithm-name=AES/ECB/NoPadding\nmosip.kernel.zkcrypto.derive.encrypt.algorithm-name=AES/ECB/PKCS5Padding\n\n## Application Id for PMS master key.\nmosip.kernel.partner.sign.masterkey.application.id=PMS\n\ndatastores=ldap_1_DS,db_1_DS,db_2_DS\n\n## Partner Management Service allowed partner domains\nmosip.kernel.partner.allowed.domains=AUTH,DEVICE,FTM,MISP\n\n## List of keys to auto generate.\nmosip.kernel.keymanager.autogen.appids.list=ROOT,KERNEL:SIGN,PRE_REGISTRATION,REGISTRATION,REGISTRATION_PROCESSOR,ID_REPO,KERNEL:IDENTITY_CACHE,RESIDENT,PMS,ADMIN_SERVICES,DIGITAL_CARD,COMPLIANCE_TOOLKIT\n\n## Random keys required for ZK encrypt.\nzkcrypto.random.key.generate.count=10000\n\nmosip.kernel.keymanager.autogen.basekeys.list=RESIDENT:mpartner-default-resident,COMPLIANCE_TOOLKIT:COMP-FIR\n\n# Keymanager service keystore cache properties\nmosip.kernel.keymanager.keystore.keyreference.enable.cache=false\n\n# API to get machine based on machine id\nmosip.kernel.syncdata-service-machine-url=${mosip.kernel.masterdata.url}/v1/masterdata/machines/%s/eng\n\n# Flag added to choose client crypto implementation in syncdata service\n# Needs to be updated to true in prod deployments\nmosip.syncdata.tpm.required=false\n\nmosip.kernel.registrationclient.app.id=registrationclient\nmosip.kernel.registrationclient.client.id=mosip-reg-client\n# env variable\nmosip.kernel.registrationclient.secret.key=${mosip.reg.client.secret}\n\n# API to fetch auth token and refresh token used by syncdata-service\nmosip.kernel.authtoken.NEW.internal.url=${mosip.kernel.authmanager.url}/v1/authmanager/authenticate/internal/useridPwd\nmosip.kernel.authtoken.OTP.internal.url=${mosip.kernel.authmanager.url}/v1/authmanager/authenticate/internal/userotp\nmosip.kernel.authtoken.REFRESH.internal.url=${mosip.kernel.authmanager.url}/v1/authmanager/authorize/internal/refreshToken/registrationclient\nmosip.kernel.auth.sendotp.url=${mosip.kernel.authmanager.url}/v1/authmanager/authenticate/sendotp\n\n# Sample Additional configuration required for real HSM configured though JCE.\n# Add the required JCE properties with prefix. - \"mosip.kernel.keymanager.hsm.jce\" for the property key\n# mosip.kernel.keymanager.hsm.jce.className=io.mosip.keymanager.hsm.impl.AnyHSMKeyStoreImpl\n# mosip.kernel.keymanager.hsm.jce.keyStoreType=HSMKeyStoreType\n# mosip.kernel.keymanager.hsm.jce.keyStoreFile=AnyRequiredKeyStoreFile\n# mosip.kernel.keymanager.hsm.jce.localKeyStorePwd=HSMPartitionPassword\n\n## syncdata-service websub configuration (cacert sync)\nsyncdata.websub.topic.ca-cert=CA_CERTIFICATE_UPLOADED\n# Secret for partner CA certificate CRUD callback\nsyncdata.websub.callback.secret.ca-cert=secret\n# Callback url for partner CA certificate CRUD event\nsyncdata.websub.callback.url.path.ca-cert=/callback/partner/ca_certificate\nsyncdata.websub.callback.url.ca-cert=${mosip.kernel.syncdata.url}/v1/syncdata/callback/partner/ca_certificate\n# Number of retires on subscription failure\nsyncdata.websub.resubscription.retry.count=3\n# Delay (in milliseconds) for subscription on application startup to avoid failure during intent verification by hub.\nsubscriptions-delay-on-startup=120000\n\n\n# Pause & resume api proeprties\nPACKET_RESUME_API=${mosip.api.internal.url}/registrationprocessor/v1/workflowmanager/workflowaction\nPACKET_PAUSE_API=${mosip.api.internal.url}/registrationprocessor/v1/workflowmanager/workflow/search\nKEYBASEDTOKENAPI=${mosip.kernel.authmanager.url}/v1/authmanager/authenticate/clientidsecretkey\n\n## resubscription and subscription initial delay for masterdata service\nmasterdata.websub.resubscription.delay.millis=48000000\nmasterdata.subscriptions-delay-on-startup=120000\n\n# The time interval in seconds to schedule subscription of topics which is done as a\n# work-around for the bug: MOSIP-9496. By default the\n# this property value is set to 0 that disables this workaround.\n# To enable the resubscrition scheduling, this property should be assigned with a positive\n# number like 1 * 60 * 60 * 1000 = 3600000 for one hour\nsyncdata.websub.resubscription.delay.millis=48000000\n\n## Admin UI\n## this pattern like --> display column : configKey. \n## We can provide multiple values with \";\" separated \nmosip.admin.ui.configs=version:${aplication.configuration.level.version};locationHierarchyLevel:${mosip.recommended.centers.locCode};mandatoryLanguages:${mosip.mandatory-languages};optionalLanguages:${mosip.optional-languages};supportedLanguages: ${mosip.mandatory-languages},${mosip.optional-languages};leftToRightOrientation:${mosip.left_to_right_orientation};rightToLeftOrientation:${mosip.right_to_left_orientation};countryCode:${mosip.country.code};filterValueMaxRecords:${mosip.kernel.filtervalue.max_columns};filterValueMaxCount:{\"default\":${mosip.kernel.filtervalue.max_columns},\"registrationcenters\":500,\"locations\":300}\n\n# Flag to identify the support of no thumbprint in 1.1.3 version.\n# Added this for backward compatability. default is false, means support is not required.\n# Make it to true if support is required.\nmosip.kernel.keymanager.113nothumbprint.support=false\n\n## Used to get IAM user details.\nmosip.kernel.masterdata.auth-manager-base-uri=${mosip.kernel.authmanager.url}/v1/authmanager\nmosip.kernel.masterdata.auth-user-details=/userdetails\n\n\n## scheduler do it's job at 2am\nscheduling.job.cron=0 0 2 * * ?\n\n# masterdata swagger openApi\n#openapi.service.servers[0].url=${mosip.api.internal.url}/${server.servlet.context-path:${server.servlet.path:}}\n#openapi.service.servers[0].description=For Swagger\n\n#To fetch user details based on user id and user name in zone API's \nzone.user.details.url=${mosip.kernel.authmanager.url}/v1/authmanager/userdetails\n\nauth.server.admin.allowed.audience=${auth.server.admin.allowed.audience.kernel.override:mosip-toolkit-android-client,mosip-toolkit-client,mosip-regproc-client,mosip-prereg-client,mosip-admin-client,mosip-crereq-client,mosip-creser-client,mosip-datsha-client,mosip-ida-client,mosip-resident-client,mosip-reg-client,mpartner-default-print,mosip-idrepo-client,mpartner-default-auth,mosip-syncdata-client,mosip-masterdata-client,mosip-idrepo-client,mosip-pms-client,mosip-hotlist-client,mobileid_newlogic,opencrvs-partner,mosip-deployment-client,mpartner-default-digitalcard,mpartner-default-mobile,mosip-signup-client}\nmosip.iam.adapter.appid=admin\nmosip.iam.adapter.clientid=mosip-admin-client\nmosip.iam.adapter.clientsecret=${mosip.admin.client.secret}\n\n#AdminMaster endpoints to access without authentication\nmosip.service-context=/v1/masterdata\nmosip.service.end-points={cipher}dd5737cb38b0d354e925a031d1662cae45feb891135577d72d75017f71a3c72d38d157158eb9e12d8e51ffb3e66e1397eb0e20040939ad145363a00c458f247c53a712c564467770d08b0cab22b967ba71d09e75a4c53492f23bb29e4c529a87787e7652c720b8eb7ce61ffc4ea6efe89be9d85034fcb135582af662290eacc0392ea96c15fef0a20694cd24c553ec3325e1450e4fb6ea773b200fcdc5d097014e7ff1794d93330c40f50fce4c20d15fc9b0ddced67877cf51ecf38d7b3fb352e176fe12956e0e2e1d43ac77dd200085dac1d3e3fe49475d5077b6bff6162c53a2d00fdbc5cd12a0aa983165916cb9cd72b2eff9c8bf7bc92bea2619fc0900b5936655a16a96fe8b188fa06a625760f78b1273a66137228095305ca32093b1fda5faac87b1ae172caa990776fa6dc52f6f1863848b21e42eb1af5ee530f12af7ef94aa8bccb254fe65c69870338e7bae1a95f344c9fcb806ac7801466168c81de7262e1a0bf49c62ee0c3676babbc718ba790e7b9428482443f6e612c9ef497702a79c9a49d47ab98d97a868e7f2ce1b7febc3d09afadbf5555e21234290aaaef94681c78326d7c178316b7d211f2a72dfb5a39e6badda11d4ee42b79c003fdf1d83d72aee288f6c8ad6e5f66c2dae350d50f5aec39360b8cce5e3682ef6f8adb7a6377a9580d420944f98c98390d3a2f7a0682d26991a60e3ab79401c63233c5a18b1902f715ebf595107563d9a60d3280c1baed1777e894660ea1e05b6433e2653af499b286fdb6380b29d32953bd23de2ec8f2c441b0e22c3877f85aa23046e2830fb9f94dced2ee55f107c8160f05bfa5436620898b36d18ae26bd4c7400e3d51f85bad2a81665aa7baf7d10cb792067b600fb0277fb0119aa9186c3d1a2079c56ca999ce1d4930b9ea77f80d88bb2afbb93002b77c3d5f5a895822dacc6038112160bf280d392599c268d504aff4e933fa4308ab50d25793c93fd2a51b1c7d2938219ff84202ae286cb1b9650ec5dfd79dabad2acf2b44fbc08170c097c93a9d663b4c130392bd536d86a87cd11ab074d3db666dcf2f40349d1056ce2708cfcfbcdd868a8073acd9a2241159e64cae84eceabd8acb83afbeeafa822defd7616bfd5801f1976392872f61e637bc21c3db4fe30d6c1de644d2291ce9d48ff1afff9f1ab596620553fd669cfa38dc5ccea6286abbcd93ca8b434b2b6d42129d72e7daa91001d43005d781369c054b36a6158d4f2cc6c6136565733b13cd7d306c715809f2d9a5024abcffbc0ef3b58585b881f6509bd1876b923494445a2a430ddf5e517b49b65647f54a2e10a002224269c78a38b6ddbddc02176d93e1e280cfdefc317efe361babe0eb3688c9d3406c4ef7a1851ddc7d511703b1d4e2c449792abd523c6eadfbfea13cf862478d75196f8133deadc31222fa6be3cd1cac015f2af1865d834bda4e7f3352cc72116d732ed384a0b94237810bf5909ea453f9052aeb0ae6d492e7ed4d2c33145e38a79742ca23294f3dc89e3cafcfbc8349aae712172bd661137ad6179df3bcc1f03b80af7c82b8a1aa91140086e663ff257d8084680c00c9a31f9c96e0b3d350192851c0c279b8159070e5f1f06153d132447fddbbf1dbb7378b84c38dc1c5f2f8cbbfcd8a478f78b1ed6ed44a0d81a88be605b66a5caad776ab1ae7c8a88362efef9b43d261dd292324e173606fabd3b8ade5fce14671d274d33e93f975d12071473fa7b0289a99a151ce67b3070f44001b5d74b3087ad1fbd071605fd62fa5f86454b881fd1ad86bd565b33248d47100d862dcc57dc0e9f673e25b0845b27d06b38c30ca975efb8031444459d776f6221a90fa51b971a4054332411de943afd8b\n\nspring.jpa.properties.hibernate.jdbc.lob.non_contextual_creation=true\n\nmosip.kernel.masterdata.template_idauthentication_event=MASTERDATA_IDAUTHENTICATION_TEMPLATES\nmosip.kernel.masterdata.title_event=MASTERDATA_TITLES\n\n## Roles\nmosip.role.admin.masterdata.getapplicationconfigs=GLOBAL_ADMIN,ZONAL_ADMIN,PRE_REGISTRATION_ADMIN\nmosip.role.admin.masterdata.getconfigs=GLOBAL_ADMIN,ZONAL_ADMIN,PRE_REGISTRATION_ADMIN\nmosip.role.admin.masterdata.getapplicationtypes=GLOBAL_ADMIN,ZONAL_ADMIN,PRE_REGISTRATION_ADMIN\nmosip.role.admin.masterdata.getapplicationtypeslangcode=PRE_REGISTRATION_ADMIN,RESIDENT,GLOBAL_ADMIN,ZONAL_ADMIN,INDIVIDUAL,REGISTRATION_PROCESSOR,PRE_REGISTRATION,REGISTRATION_SUPERVISOR,REGISTRATION_OFFICER,PARTNER,AUTH_PARTNER,PARTNER_ADMIN,DEVICE_PROVIDER,DEVICE_MANAGER\nmosip.role.admin.masterdata.getapplicationtypescodelangcode=RESIDENT,PRE_REGISTRATION_ADMIN,GLOBAL_ADMIN,ZONAL_ADMIN,INDIVIDUAL,REGISTRATION_PROCESSOR,PRE_REGISTRATION,REGISTRATION_SUPERVISOR,REGISTRATION_OFFICER,PARTNER,AUTH_PARTNER,PARTNER_ADMIN,DEVICE_PROVIDER,DEVICE_MANAGER\nmosip.role.admin.masterdata.postapplicationtypes=GLOBAL_ADMIN,ZONAL_ADMIN\nmosip.role.admin.masterdata.getgetbiometricattributesbyauthtype=GLOBAL_ADMIN,ZONAL_ADMIN,PRE_REGISTRATION_ADMIN,REGISTRATION_PROCESSOR\nmosip.role.admin.masterdata.postbiometricattributes=GLOBAL_ADMIN,ZONAL_ADMIN\nmosip.role.admin.masterdata.getbiometrictypes=ZONAL_ADMIN,PRE_REGISTRATION_ADMIN,GLOBAL_ADMIN\nmosip.role.admin.masterdata.getbiometrictypeslangcode=ZONAL_ADMIN,GLOBAL_ADMIN,PRE_REGISTRATION_ADMIN,REGISTRATION_SUPERVISOR,REGISTRATION_PROCESSOR,REGISTRATION_OFFICER\nmosip.role.admin.masterdata.getbiometrictypescodelangcode=ZONAL_ADMIN,PRE_REGISTRATION_ADMIN,GLOBAL_ADMIN,REGISTRATION_SUPERVISOR,REGISTRATION_PROCESSOR,REGISTRATION_OFFICER\nmosip.role.admin.masterdata.postbiometrictypes=ZONAL_ADMIN,GLOBAL_ADMIN\nmosip.role.admin.masterdata.postblocklistedwordswords=ZONAL_ADMIN,GLOBAL_ADMIN,MASTERDATA_ADMIN\nmosip.role.admin.masterdata.postblocklistedwords=GLOBAL_ADMIN,ZONAL_ADMIN,MASTERDATA_ADMIN\nmosip.role.admin.masterdata.putblocklistedwords=GLOBAL_ADMIN,ZONAL_ADMIN,MASTERDATA_ADMIN\nmosip.role.admin.masterdata.putblocklistedwordsdetails=GLOBAL_ADMIN,ZONAL_ADMIN,MASTERDATA_ADMIN\nmosip.role.admin.masterdata.deleteblocklistedwordsword=GLOBAL_ADMIN,ZONAL_ADMIN\nmosip.role.admin.masterdata.getblocklistedwordsall=GLOBAL_ADMIN,PRE_REGISTRATION_ADMIN,ZONAL_ADMIN,MASTERDATA_ADMIN\nmosip.role.admin.masterdata.postblocklistedwordssearch=GLOBAL_ADMIN,ZONAL_ADMIN,MASTERDATA_ADMIN\nmosip.role.admin.masterdata.postblocklistedwordsfiltervalues=GLOBAL_ADMIN,ZONAL_ADMIN,MASTERDATA_ADMIN\nmosip.role.admin.masterdata.patchblocklistedwords=GLOBAL_ADMIN,ZONAL_ADMIN,REGISTRATION_ADMIN,MASTERDATA_ADMIN\nmosip.role.admin.masterdata.getdeviceslanguagecode=ZONAL_ADMIN,GLOBAL_ADMIN,PRE_REGISTRATION_ADMIN,REGISTRATION_PROCESSOR,REGISTRATION_SUPERVISOR,REGISTRATION_OFFICER\nmosip.role.admin.masterdata.getdeviceslanguagecodedevicetype=ZONAL_ADMIN,PRE_REGISTRATION_ADMIN,GLOBAL_ADMIN,REGISTRATION_PROCESSOR,REGISTRATION_SUPERVISOR,REGISTRATION_OFFICER\nmosip.role.admin.masterdata.postdevices=GLOBAL_ADMIN,ZONAL_ADMIN,MASTERDATA_ADMIN\nmosip.role.admin.masterdata.putdevices=ZONAL_ADMIN,GLOBAL_ADMIN,MASTERDATA_ADMIN\nmosip.role.admin.masterdata.getdevicesmappeddevicesregcenterid=ZONAL_ADMIN,PRE_REGISTRATION_ADMIN,GLOBAL_ADMIN,REGISTRATION_PROCESSOR,REGISTRATION_SUPERVISOR,REGISTRATION_OFFICER,MASTERDATA_ADMIN\nmosip.role.admin.masterdata.postdevicessearch=ZONAL_ADMIN,GLOBAL_ADMIN,MASTERDATA_ADMIN\nmosip.role.admin.masterdata.postdevicesfiltervalues=ZONAL_ADMIN,GLOBAL_ADMIN,MASTERDATA_ADMIN\nmosip.role.admin.masterdata.putdevicesdecommissiondeviceid=ZONAL_ADMIN,GLOBAL_ADMIN\nmosip.role.admin.masterdata.patchdevices=ZONAL_ADMIN,GLOBAL_ADMIN,MASTERDATA_ADMIN\nmosip.role.admin.masterdata.getdeviceshistoriesidlangcodeeffdatetimes=REGISTRATION_PROCESSOR,PRE_REGISTRATION_ADMIN,GLOBAL_ADMIN,ZONAL_ADMIN\nmosip.role.admin.masterdata.postdeviceprovider=GLOBAL_ADMIN,ZONAL_ADMIN,PARTNER_ADMIN,PARTNER,AUTH_PARTNER,DEVICE_MANAGER,DEVICE_PROVIDER\nmosip.role.admin.masterdata.putdeviceprovider=GLOBAL_ADMIN,ZONAL_ADMIN,PARTNER_ADMIN,PARTNER,AUTH_PARTNER,DEVICE_MANAGER,DEVICE_PROVIDER\nmosip.role.admin.masterdata.postdeviceprovidermanagementvalidate=ZONAL_ADMIN,GLOBAL_ADMIN,DEVICE_PROVIDER,DEVICE_MANAGER\nmosip.role.admin.masterdata.deletedevicederegisterdevicecode=GLOBAL_ADMIN,ZONAL_ADMIN\nmosip.role.admin.masterdata.putdeviceupdatestatus=GLOBAL_ADMIN,ZONAL_ADMIN\nmosip.role.admin.masterdata.getdevicespecifications=GLOBAL_ADMIN,ZONAL_ADMIN,PRE_REGISTRATION_ADMIN,DEVICE_MANAGER,DEVICE_PROVIDER,PARTNER,AUTH_PARTNER,PARTNER_ADMIN,MASTERDATA_ADMIN\nmosip.role.admin.masterdata.getdevicespecificationsdevicetypecode=ZONAL_ADMIN,GLOBAL_ADMIN,PRE_REGISTRATION_ADMIN,DEVICE_MANAGER,DEVICE_PROVIDER,MASTERDATA_ADMIN\nmosip.role.admin.masterdata.postdevicespecifications=GLOBAL_ADMIN,ZONAL_ADMIN,MASTERDATA_ADMIN\nmosip.role.admin.masterdata.putdevicespecifications=GLOBAL_ADMIN,ZONAL_ADMIN,MASTERDATA_ADMIN\nmosip.role.admin.masterdata.deletedevicespecificationsid=GLOBAL_ADMIN,ZONAL_ADMIN\nmosip.role.admin.masterdata.getdevicespecificationsall=GLOBAL_ADMIN,PRE_REGISTRATION_ADMIN,ZONAL_ADMIN,MASTERDATA_ADMIN\nmosip.role.admin.masterdata.postdevicespecificationssearch=GLOBAL_ADMIN,ZONAL_ADMIN,MASTERDATA_ADMIN\nmosip.role.admin.masterdata.postdevicespecificationsfiltervalues=GLOBAL_ADMIN,ZONAL_ADMIN,MASTERDATA_ADMIN\nmosip.role.admin.masterdata.patchdevicespecifications=GLOBAL_ADMIN,ZONAL_ADMIN,MASTERDATA_ADMIN\nmosip.role.admin.masterdata.postdevicetypes=ZONAL_ADMIN,GLOBAL_ADMIN,MASTERDATA_ADMIN\nmosip.role.admin.masterdata.putdevicetypes=ZONAL_ADMIN,GLOBAL_ADMIN,MASTERDATA_ADMIN\nmosip.role.admin.masterdata.getdevicetypesall=ZONAL_ADMIN,GLOBAL_ADMIN,DEVICE_MANAGER,PRE_REGISTRATION_ADMIN,DEVICE_PROVIDER,MASTERDATA_ADMIN\nmosip.role.admin.masterdata.postdevicetypessearch=ZONAL_ADMIN,GLOBAL_ADMIN,MASTERDATA_ADMIN\nmosip.role.admin.masterdata.postdevicetypesfiltervalues=ZONAL_ADMIN,GLOBAL_ADMIN,MASTERDATA_ADMIN\nmosip.role.admin.masterdata.patchdevicetypes=ZONAL_ADMIN,GLOBAL_ADMIN,MASTERDATA_ADMIN\nmosip.role.admin.masterdata.getdocumentcategorieslangcode=PRE_REGISTRATION_ADMIN,GLOBAL_ADMIN,ZONAL_ADMIN,DEVICE_MANAGER,DEVICE_PROVIDER,PARTNER,PARTNER_ADMIN,RESIDENT,INDIVIDUAL,PRE_REGISTRATION,REGISTRATION_PROCESSOR,REGISTRATION_SUPERVISOR,REGISTRATION_OFFICER,MASTERDATA_ADMIN\nmosip.role.admin.masterdata.getdocumentcategoriescode=PRE_REGISTRATION_ADMIN,GLOBAL_ADMIN,ZONAL_ADMIN,DEVICE_MANAGER,DEVICE_PROVIDER,PARTNER,PARTNER_ADMIN,RESIDENT,INDIVIDUAL,PRE_REGISTRATION,REGISTRATION_PROCESSOR,REGISTRATION_SUPERVISOR,REGISTRATION_OFFICER,MASTERDATA_ADMIN\nmosip.role.admin.masterdata.postdocumentcategories=ZONAL_ADMIN,GLOBAL_ADMIN,MASTERDATA_ADMIN\nmosip.role.admin.masterdata.putdocumentcategories=ZONAL_ADMIN,GLOBAL_ADMIN,MASTERDATA_ADMIN\nmosip.role.admin.masterdata.deletedocumentcategoriescode=ZONAL_ADMIN,GLOBAL_ADMIN\nmosip.role.admin.masterdata.getdocumentcategoriesall=PRE_REGISTRATION_ADMIN,ZONAL_ADMIN,GLOBAL_ADMIN,MASTERDATA_ADMIN\nmosip.role.admin.masterdata.postdocumentcategoriessearch=ZONAL_ADMIN,GLOBAL_ADMIN,MASTERDATA_ADMIN\nmosip.role.admin.masterdata.postdocumentcategoriesfiltervalues=ZONAL_ADMIN,GLOBAL_ADMIN,MASTERDATA_ADMIN\nmosip.role.admin.masterdata.patchdocumentcategories=ZONAL_ADMIN,GLOBAL_ADMIN,MASTERDATA_ADMIN\nmosip.role.admin.masterdata.postdocumenttypes=GLOBAL_ADMIN,ZONAL_ADMIN,MASTERDATA_ADMIN\nmosip.role.admin.masterdata.putdocumenttypes=GLOBAL_ADMIN,ZONAL_ADMIN,MASTERDATA_ADMIN\nmosip.role.admin.masterdata.deletedocumenttypescode=GLOBAL_ADMIN,ZONAL_ADMIN\nmosip.role.admin.masterdata.getdocumenttypesall=PRE_REGISTRATION_ADMIN,GLOBAL_ADMIN,ZONAL_ADMIN,MASTERDATA_ADMIN\nmosip.role.admin.masterdata.postdocumenttypesfiltervalues=GLOBAL_ADMIN,ZONAL_ADMIN,MASTERDATA_ADMIN\nmosip.role.admin.masterdata.postdocumenttypessearch=GLOBAL_ADMIN,ZONAL_ADMIN,MASTERDATA_ADMIN\nmosip.role.admin.masterdata.patchdocumenttypes=GLOBAL_ADMIN,ZONAL_ADMIN,MASTERDATA_ADMIN\nmosip.role.admin.masterdata.getdocumenttypesmissingidslangcode=GLOBAL_ADMIN,PRE_REGISTRATION_ADMIN,ZONAL_ADMIN,MASTERDATA_ADMIN\nmosip.role.admin.masterdata.postdynamicfields=ZONAL_ADMIN,GLOBAL_ADMIN,MASTERDATA_ADMIN\nmosip.role.admin.masterdata.putdynamicfields =ZONAL_ADMIN,GLOBAL_ADMIN,MASTERDATA_ADMIN\nmosip.role.admin.masterdata.patchdynamicfieldsall=GLOBAL_ADMIN,ZONAL_ADMIN,MASTERDATA_ADMIN\nmosip.role.admin.masterdata.patchdynamicfields=GLOBAL_ADMIN,ZONAL_ADMIN,MASTERDATA_ADMIN\nmosip.role.admin.masterdata.deletedynamicfields=GLOBAL_ADMIN,ZONAL_ADMIN\nmosip.role.admin.masterdata.deletedynamicfieldsid=GLOBAL_ADMIN,ZONAL_ADMIN\nmosip.role.admin.masterdata.postdynamicfieldssearch=GLOBAL_ADMIN,ZONAL_ADMIN,MASTERDATA_ADMIN\nmosip.role.admin.masterdata.postfoundationaltrustprovider=ZONAL_ADMIN,GLOBAL_ADMIN,PARTNER,AUTH_PARTNER,PARTNER_ADMIN,DEVICE_PROVIDER,DEVICE_MANAGER\nmosip.role.admin.masterdata.putfoundationaltrustprovider=ZONAL_ADMIN,GLOBAL_ADMIN,PARTNER,AUTH_PARTNER,PARTNER_ADMIN,DEVICE_PROVIDER,DEVICE_MANAGER\nmosip.role.admin.masterdata.postgendertypes=ZONAL_ADMIN,GLOBAL_ADMIN\nmosip.role.admin.masterdata.putgendertypes=ZONAL_ADMIN,GLOBAL_ADMIN\nmosip.role.admin.masterdata.deletegendertypescode=ZONAL_ADMIN,GLOBAL_ADMIN\nmosip.role.admin.masterdata.getgendertypesall=ZONAL_ADMIN,PRE_REGISTRATION_ADMIN,CENTRAL_ADMIN\nmosip.role.admin.masterdata.postgendertypessearch=ZONAL_ADMIN,GLOBAL_ADMIN\nmosip.role.admin.masterdata.postgendertypesfiltervalues=ZONAL_ADMIN,GLOBAL_ADMIN\nmosip.role.admin.masterdata.getholidays=ZONAL_ADMIN,PRE_REGISTRATION_ADMIN,GLOBAL_ADMIN,MASTERDATA_ADMIN\nmosip.role.admin.masterdata.getholidaysholidayid=ZONAL_ADMIN,PRE_REGISTRATION_ADMIN,GLOBAL_ADMIN,MASTERDATA_ADMIN\nmosip.role.admin.masterdata.getholidaysholidayidlangcode=ZONAL_ADMIN,GLOBAL_ADMIN,PRE_REGISTRATION_ADMIN,REGISTRATION_OFFICER,REGISTRATION_PROCESSOR,REGISTRATION_SUPERVISOR,INDIVIDUAL,PRE_REGISTRATION,MASTERDATA_ADMIN\nmosip.role.admin.masterdata.postholidays=ZONAL_ADMIN,GLOBAL_ADMIN,MASTERDATA_ADMIN\nmosip.role.admin.masterdata.putholidays=ZONAL_ADMIN,GLOBAL_ADMIN,MASTERDATA_ADMIN\nmosip.role.admin.masterdata.patchholidays=ZONAL_ADMIN,GLOBAL_ADMIN,MASTERDATA_ADMIN\nmosip.role.admin.masterdata.deleteholidays=ZONAL_ADMIN,GLOBAL_ADMIN\nmosip.role.admin.masterdata.getholidaysall=ZONAL_ADMIN,PRE_REGISTRATION_ADMIN,GLOBAL_ADMIN,MASTERDATA_ADMIN\nmosip.role.admin.masterdata.postholidayssearch=ZONAL_ADMIN,GLOBAL_ADMIN,MASTERDATA_ADMIN\nmosip.role.admin.masterdata.postholidaysfiltervalues=ZONAL_ADMIN,GLOBAL_ADMIN,MASTERDATA_ADMIN\nmosip.role.admin.masterdata.getholidaysmissingidslangcode=ZONAL_ADMIN,PRE_REGISTRATION_ADMIN,GLOBAL_ADMIN,MASTERDATA_ADMIN\nmosip.role.admin.masterdata.postidtypes=ZONAL_ADMIN,GLOBAL_ADMIN\nmosip.role.admin.masterdata.getindividualtypesall=ZONAL_ADMIN,PRE_REGISTRATION_ADMIN,GLOBAL_ADMIN,CENTRAL_ADMIN,REGISTRATION_PROCESSOR\nmosip.role.admin.masterdata.postindividualtypessearch=ZONAL_ADMIN,GLOBAL_ADMIN\nmosip.role.admin.masterdata.postindividualtypesfiltervalues=ZONAL_ADMIN,GLOBAL_ADMIN\nmosip.role.admin.masterdata.postindividualtypes=ZONAL_ADMIN,GLOBAL_ADMIN\nmosip.role.admin.masterdata.putindividualtypes=ZONAL_ADMIN,GLOBAL_ADMIN\nmosip.role.admin.masterdata.postlanguages=ZONAL_ADMIN,GLOBAL_ADMIN\nmosip.role.admin.masterdata.getlocations=ZONAL_ADMIN,PRE_REGISTRATION_ADMIN,GLOBAL_ADMIN\nmosip.role.admin.masterdata.putlocations=ZONAL_ADMIN,GLOBAL_ADMIN\nmosip.role.admin.masterdata.patchlocations=ZONAL_ADMIN,GLOBAL_ADMIN\nmosip.role.admin.masterdata.deletelocationslocationcode=ZONAL_ADMIN,GLOBAL_ADMIN\nmosip.role.admin.masterdata.getlocationsall=ZONAL_ADMIN,PRE_REGISTRATION_ADMIN,GLOBAL_ADMIN\nmosip.role.admin.masterdata.postlocationssearch=ZONAL_ADMIN,GLOBAL_ADMIN,REGISTRATION_ADMIN,MASTERDATA_ADMIN\nmosip.role.admin.masterdata.postlocationsfiltervalues=ZONAL_ADMIN,GLOBAL_ADMIN,MASTERDATA_ADMIN,REGISTRATION_ADMIN\nmosip.role.admin.masterdata.getlocationslevellangcode=ZONAL_ADMIN,PRE_REGISTRATION_ADMIN,GLOBAL_ADMIN\nmosip.role.admin.masterdata.getlocationsmissingidslangcode=ZONAL_ADMIN,PRE_REGISTRATION_ADMIN,GLOBAL_ADMIN\nmosip.role.admin.masterdata.getlocationhierarchylevels=INDIVIDUAL,REGISTRATION_SUPERVISOR,REGISTRATION_OFFICER,REGISTRATION_PROCESSOR,ZONAL_ADMIN,default,GLOBAL_ADMIN,PRE_REGISTRATION,REGISTRATION_ADMIN,REGISTRATION_OPERATOR\nmosip.role.admin.masterdata.getmachinesidlangcode=GLOBAL_ADMIN,ZONAL_ADMIN,REGISTRATION_CLIENT,PRE_REGISTRATION_ADMIN,REGISTRATION_PROCESSOR,RESIDENT\nmosip.role.admin.masterdata.getmachineslangcode=PRE_REGISTRATION_ADMIN,GLOBAL_ADMIN,ZONAL_ADMIN,REGISTRATION_CLIENT,REGISTRATION_PROCESSOR\nmosip.role.admin.masterdata.getmachines=PRE_REGISTRATION_ADMIN,GLOBAL_ADMIN,ZONAL_ADMIN,REGISTRATION_CLIENT,REGISTRATION_PROCESSOR\nmosip.role.admin.masterdata.deletemachinesid=GLOBAL_ADMIN,ZONAL_ADMIN\nmosip.role.admin.masterdata.getmachinesmappedmachinesregcenterid=GLOBAL_ADMIN,PRE_REGISTRATION_ADMIN,ZONAL_ADMIN,REGISTRATION_PROCESSOR,REGISTRATION_SUPERVISOR,REGISTRATION_CLIENT,REGISTRATION_OFFICER\nmosip.role.admin.masterdata.postmachinessearch=GLOBAL_ADMIN,ZONAL_ADMIN,RESIDENT,MASTERDATA_ADMIN\nmosip.role.admin.masterdata.postmachinesfiltervalues=GLOBAL_ADMIN,ZONAL_ADMIN,MASTERDATA_ADMIN\nmosip.role.admin.masterdata.putmachinesdecommissionmachineid=GLOBAL_ADMIN,ZONAL_ADMIN,MASTERDATA_ADMIN\nmosip.role.admin.masterdata.postmachines=GLOBAL_ADMIN,ZONAL_ADMIN,RESIDENT,MASTERDATA_ADMIN\nmosip.role.admin.masterdata.putmachines=GLOBAL_ADMIN,ZONAL_ADMIN,MASTERDATA_ADMIN\nmosip.role.admin.masterdata.patchmachines=GLOBAL_ADMIN,ZONAL_ADMIN,MASTERDATA_ADMIN,RESIDENT\nmosip.role.admin.masterdata.getmachineshistoriesidlangcode=REGISTRATION_PROCESSOR,ZONAL_ADMIN,PRE_REGISTRATION_ADMIN,GLOBAL_ADMIN,MASTERDATA_ADMIN\nmosip.role.admin.masterdata.postmachinespecifications=ZONAL_ADMIN,GLOBAL_ADMIN,MASTERDATA_ADMIN\nmosip.role.admin.masterdata.putmachinespecifications=ZONAL_ADMIN,GLOBAL_ADMIN,MASTERDATA_ADMIN\nmosip.role.admin.masterdata.patchmachinespecifications=ZONAL_ADMIN,GLOBAL_ADMIN,MASTERDATA_ADMIN\nmosip.role.admin.masterdata.deletemachinespecificationsid=ZONAL_ADMIN,GLOBAL_ADMIN\nmosip.role.admin.masterdata.getmachinespecificationsall=ZONAL_ADMIN,PRE_REGISTRATION_ADMIN,GLOBAL_ADMIN,REGISTRATION_OFFICER,REGISTRATION_SUPERVISOR,REGISTRATION_PROCESSOR,MASTERDATA_ADMIN\nmosip.role.admin.masterdata.postmachinespecificationssearch=ZONAL_ADMIN,GLOBAL_ADMIN,MASTERDATA_ADMIN\nmosip.role.admin.masterdata.postmachinespecificationsfiltervalues=ZONAL_ADMIN,GLOBAL_ADMIN,MASTERDATA_ADMIN\nmosip.role.admin.masterdata.postmachinetypes=GLOBAL_ADMIN,ZONAL_ADMIN,MASTERDATA_ADMIN\nmosip.role.admin.masterdata.putmachinetypes=GLOBAL_ADMIN,ZONAL_ADMIN,MASTERDATA_ADMIN\nmosip.role.admin.masterdata.patchmachinetypes=GLOBAL_ADMIN,ZONAL_ADMIN,MASTERDATA_ADMIN\nmosip.role.admin.masterdata.getmachinetypesall=GLOBAL_ADMIN,PRE_REGISTRATION_ADMIN,ZONAL_ADMIN,MASTERDATA_ADMIN\nmosip.role.admin.masterdata.postmachinetypessearch=GLOBAL_ADMIN,ZONAL_ADMIN,MASTERDATA_ADMIN\nmosip.role.admin.masterdata.postmachinetypesfiltervalues=GLOBAL_ADMIN,ZONAL_ADMIN,MASTERDATA_ADMIN\nmosip.role.admin.masterdata.getmodulesidlangcode=GLOBAL_ADMIN,PRE_REGISTRATION_ADMIN,ZONAL_ADMIN\nmosip.role.admin.masterdata.getmoduleslangcode=GLOBAL_ADMIN,PRE_REGISTRATION_ADMIN,ZONAL_ADMIN\nmosip.role.admin.masterdata.postmosipdeviceservice=GLOBAL_ADMIN,ZONAL_ADMIN\nmosip.role.admin.masterdata.putmosipdeviceservice=GLOBAL_ADMIN,ZONAL_ADMIN\nmosip.role.admin.masterdata.postpacketrejectionreasonsreasoncategory=GLOBAL_ADMIN,ZONAL_ADMIN\nmosip.role.admin.masterdata.postpacketrejectionreasonsreasonlist=GLOBAL_ADMIN,ZONAL_ADMIN\nmosip.role.admin.masterdata.getpacketrejectionreasonsreasoncategorycodelangcode=GLOBAL_ADMIN,PRE_REGISTRATION_ADMIN,ZONAL_ADMIN,REGISTRATION_PROCESSOR\nmosip.role.admin.masterdata.getpacketrejectionreasons=GLOBAL_ADMIN,ZONAL_ADMIN,PRE_REGISTRATION_ADMIN,REGISTRATION_PROCESSOR\nmosip.role.admin.masterdata.postpacketresume=REGISTRATION_ADMIN\nmosip.role.admin.masterdata.postpacketsearch=REGISTRATION_ADMIN\nmosip.role.admin.masterdata.getpossiblevaluesfieldname=ZONAL_ADMIN,GLOBAL_ADMIN,REGISTRATION_PROCESSOR,PRE_REGISTRATION_ADMIN\nmosip.role.admin.masterdata.postregistereddevices=GLOBAL_ADMIN,ZONAL_ADMIN\nmosip.role.admin.masterdata.postregistereddevicesderegister=GLOBAL_ADMIN,ZONAL_ADMIN\nmosip.role.admin.masterdata.putregistereddevicesupdatestatus=GLOBAL_ADMIN,ZONAL_ADMIN\nmosip.role.admin.masterdata.getgetlocspecificregistrationcenterslangcode=INDIVIDUAL,REGISTRATION_PROCESSOR,ZONAL_ADMIN,PRE_REGISTRATION_ADMIN,GLOBAL_ADMIN,PRE_REGISTRATION\nmosip.role.admin.masterdata.getgetregistrationcenterholidayslangcode=INDIVIDUAL,PRE_REGISTRATION_ADMIN,REGISTRATION_PROCESSOR,ZONAL_ADMIN,GLOBAL_ADMIN,PRE_REGISTRATION\nmosip.role.admin.masterdata.getgetcoordinatespecificregistrationcenters=INDIVIDUAL,REGISTRATION_PROCESSOR,PRE_REGISTRATION_ADMIN,ZONAL_ADMIN,GLOBAL_ADMIN,PRE_REGISTRATION,RESIDENT\nmosip.role.admin.masterdata.getregistrationcentersidlangcode=INDIVIDUAL,REGISTRATION_PROCESSOR,ZONAL_ADMIN,GLOBAL_ADMIN,PRE_REGISTRATION_ADMIN,PRE_REGISTRATION,RESIDENT\nmosip.role.admin.masterdata.getregistrationcenters=INDIVIDUAL,ZONAL_ADMIN,GLOBAL_ADMIN,PRE_REGISTRATION_ADMIN,PRE_REGISTRATION\nmosip.role.admin.masterdata.getregistrationcentersidlangcodehierarchylevel=INDIVIDUAL,REGISTRATION_PROCESSOR,PRE_REGISTRATION_ADMIN,ZONAL_ADMIN,GLOBAL_ADMIN,PRE_REGISTRATION\nmosip.role.admin.masterdata.getregistrationcenterspagelangcode=INDIVIDUAL,REGISTRATION_PROCESSOR,ZONAL_ADMIN,GLOBAL_ADMIN,PRE_REGISTRATION_ADMIN,PRE_REGISTRATION,RESIDENT\nmosip.role.admin.masterdata.getregistrationcentersvalidateidlangcode=INDIVIDUAL,REGISTRATION_PROCESSOR,ZONAL_ADMIN,GLOBAL_ADMIN,PRE_REGISTRATION_ADMIN,PRE_REGISTRATION\nmosip.role.admin.masterdata.deleteregistrationcentersregistrationcenterid=ZONAL_ADMIN,GLOBAL_ADMIN\nmosip.role.admin.masterdata.getregistrationcenterslangcodehierarchylevelnames=ZONAL_ADMIN,GLOBAL_ADMIN,PRE_REGISTRATION_ADMIN,REGISTRATION_PROCESSOR,INDIVIDUAL,PRE_REGISTRATION,RESIDENT\nmosip.role.admin.masterdata.getregistrationcentersall=ZONAL_ADMIN,PRE_REGISTRATION_ADMIN,GLOBAL_ADMIN\nmosip.role.admin.masterdata.postregistrationcenterssearch=ZONAL_ADMIN,GLOBAL_ADMIN,REGISTRATION_ADMIN\nmosip.role.admin.masterdata.postregistrationcentersfiltervalues=ZONAL_ADMIN,GLOBAL_ADMIN,REGISTRATION_ADMIN\nmosip.role.admin.masterdata.postregistrationcenters=ZONAL_ADMIN,GLOBAL_ADMIN\nmosip.role.admin.masterdata.putregistrationcenters=ZONAL_ADMIN,GLOBAL_ADMIN\nmosip.role.admin.masterdata.putregistrationcentersdecommission=ZONAL_ADMIN,GLOBAL_ADMIN\nmosip.role.admin.masterdata.patchregistrationcenters=ZONAL_ADMIN,GLOBAL_ADMIN\nmosip.role.admin.masterdata.putregistrationcenterslanguage=ZONAL_ADMIN,GLOBAL_ADMIN\nmosip.role.admin.masterdata.putregistrationcentersnonlanguage=ZONAL_ADMIN,GLOBAL_ADMIN\nmosip.role.admin.masterdata.getregistrationcentersmissingids=ZONAL_ADMIN,PRE_REGISTRATION_ADMIN,GLOBAL_ADMIN\nmosip.role.admin.masterdata.getgetzonespecificregistrationcenterslangcode=ZONAL_ADMIN,PRE_REGISTRATION_ADMIN,GLOBAL_ADMIN,MASTERDATA_ADMIN\nmosip.role.admin.masterdata.getregistrationcenterdevicehistoryregcenteriddeviceid=REGISTRATION_PROCESSOR,PRE_REGISTRATION_ADMIN,ZONAL_ADMIN,GLOBAL_ADMIN,MASTERDATA_ADMIN\nmosip.role.admin.masterdata.getregistrationcentershistoryregistrationcenterid=ZONAL_ADMIN,GLOBAL_ADMIN,PRE_REGISTRATION_ADMIN,REGISTRATION_PROCESSOR,MASTERDATA_ADMIN\nmosip.role.admin.masterdata.postregistrationcentertypes=GLOBAL_ADMIN,ZONAL_ADMIN,MASTERDATA_ADMIN\nmosip.role.admin.masterdata.putregistrationcentertypes=GLOBAL_ADMIN,ZONAL_ADMIN,MASTERDATA_ADMIN\nmosip.role.admin.masterdata.deleteregistrationcentertypes=GLOBAL_ADMIN,ZONAL_ADMIN\nmosip.role.admin.masterdata.getregistrationcentertypesall=GLOBAL_ADMIN,PRE_REGISTRATION_ADMIN,ZONAL_ADMIN,INDIVIDUAL,PRE_REGISTRATION,REGISTRATION_PROCESSOR,REGISTRATION_CLIENT,MASTERDATA_ADMIN\nmosip.role.admin.masterdata.postregistrationcentertypesfiltervalues=GLOBAL_ADMIN,ZONAL_ADMIN,MASTERDATA_ADMIN\nmosip.role.admin.masterdata.postregistrationcentertypessearch=GLOBAL_ADMIN,ZONAL_ADMIN,MASTERDATA_ADMIN\nmosip.role.admin.masterdata.patchregistrationcentertypes=GLOBAL_ADMIN,ZONAL_ADMIN,MASTERDATA_ADMIN\nmosip.role.admin.masterdata.getregistrationcentertypesmissingidslangcode=GLOBAL_ADMIN,PRE_REGISTRATION_ADMIN,ZONAL_ADMIN,MASTERDATA_ADMIN\nmosip.role.admin.masterdata.getgetregistrationmachineusermappinghistory=PRE_REGISTRATION_ADMIN,GLOBAL_ADMIN,ZONAL_ADMIN,REGISTRATION_PROCESSOR,MASTERDATA_ADMIN\nmosip.role.admin.masterdata.postidschema=GLOBAL_ADMIN,ZONAL_ADMIN\nmosip.role.admin.masterdata.putidschema=GLOBAL_ADMIN,ZONAL_ADMIN\nmosip.role.admin.masterdata.putidschemapublish=GLOBAL_ADMIN,ZONAL_ADMIN\nmosip.role.admin.masterdata.deleteidschema=GLOBAL_ADMIN,ZONAL_ADMIN\nmosip.role.admin.masterdata.getidschemaall=PRE_REGISTRATION_ADMIN,GLOBAL_ADMIN,ZONAL_ADMIN\nmosip.role.admin.masterdata.getidschemalatest=PRE_REGISTRATION_ADMIN,GLOBAL_ADMIN,ZONAL_ADMIN,REGISTRATION_CLIENT,REGISTRATION_OFFICER,REGISTRATION_PROCESSOR,REGISTRATION_SUPERVISOR,RESIDENT,ID_REPOSITORY\nmosip.role.admin.masterdata.posttemplates=GLOBAL_ADMIN,ZONAL_ADMIN,MASTERDATA_ADMIN\nmosip.role.admin.masterdata.puttemplates=GLOBAL_ADMIN,ZONAL_ADMIN,MASTERDATA_ADMIN\nmosip.role.admin.masterdata.deletetemplatesid=GLOBAL_ADMIN,ZONAL_ADMIN\nmosip.role.admin.masterdata.gettemplatestemplatetypecodescode=PRE_REGISTRATION_ADMIN,GLOBAL_ADMIN,ZONAL_ADMIN,INDIVIDUAL,PRE_REGISTRATION,ID_AUTHENTICATION,AUTH,PRE_REGISTRATION_ADMIN,RESIDENT,PARTNER,AUTH_PARTNER,PARTNER_ADMIN,DEVICE_PROVIDER,DEVICE_MANAGER,REGISTRATION_PROCESSOR,REGISTRATION_SUPERVISOR,REGISTRATION_OFFICER,PRINT_PARTNER,MASTERDATA_ADMIN\nmosip.role.admin.masterdata.gettemplatesall=PRE_REGISTRATION_ADMIN,GLOBAL_ADMIN,ZONAL_ADMIN,MASTERDATA_ADMIN\nmosip.role.admin.masterdata.posttemplatessearch=GLOBAL_ADMIN,ZONAL_ADMIN,MASTERDATA_ADMIN\nmosip.role.admin.masterdata.posttemplatesfiltervalues=GLOBAL_ADMIN,ZONAL_ADMIN,MASTERDATA_ADMIN\nmosip.role.admin.masterdata.patchtemplates=GLOBAL_ADMIN,ZONAL_ADMIN,MASTERDATA_ADMIN\nmosip.role.admin.masterdata.gettemplatesmissingidslangcode=PRE_REGISTRATION_ADMIN,GLOBAL_ADMIN,ZONAL_ADMIN,MASTERDATA_ADMIN\nmosip.role.admin.masterdata.posttemplatefileformats=GLOBAL_ADMIN,ZONAL_ADMIN\nmosip.role.admin.masterdata.puttemplatefileformats=GLOBAL_ADMIN,ZONAL_ADMIN\nmosip.role.admin.masterdata.deletetemplatefileformatscode=GLOBAL_ADMIN,ZONAL_ADMIN\nmosip.role.admin.masterdata.gettemplatefileformatscodelangcode=PRE_REGISTRATION_ADMIN,GLOBAL_ADMIN,ZONAL_ADMIN\nmosip.role.admin.masterdata.gettemplatefileformatslangcode=PRE_REGISTRATION_ADMIN,GLOBAL_ADMIN,ZONAL_ADMIN\nmosip.role.admin.masterdata.patchtemplatefileformats=PRE_REGISTRATION_ADMIN,GLOBAL_ADMIN,ZONAL_ADMIN\nmosip.role.admin.masterdata.posttemplatetypes=GLOBAL_ADMIN,ZONAL_ADMIN\nmosip.role.admin.masterdata.posttitle=GLOBAL_ADMIN,ZONAL_ADMIN\nmosip.role.admin.masterdata.puttitle=GLOBAL_ADMIN,ZONAL_ADMIN\nmosip.role.admin.masterdata.puttitlecode=GLOBAL_ADMIN,ZONAL_ADMIN\nmosip.role.admin.masterdata.gettitleall=PRE_REGISTRATION_ADMIN,GLOBAL_ADMIN,ZONAL_ADMIN\nmosip.role.admin.masterdata.posttitlesearch=GLOBAL_ADMIN,ZONAL_ADMIN\nmosip.role.admin.masterdata.posttitlefiltervalues=GLOBAL_ADMIN,ZONAL_ADMIN\nmosip.role.admin.masterdata.postuispec=GLOBAL_ADMIN,ZONAL_ADMIN,PRE_REGISTRATION_ADMIN\nmosip.role.admin.masterdata.putuispec=GLOBAL_ADMIN,ZONAL_ADMIN,PRE_REGISTRATION_ADMIN\nmosip.role.admin.masterdata.postuispecpublish=GLOBAL_ADMIN,ZONAL_ADMIN,PRE_REGISTRATION_ADMIN\nmosip.role.admin.masterdata.deleteuispec=GLOBAL_ADMIN,ZONAL_ADMIN,PRE_REGISTRATION_ADMIN\nmosip.role.admin.masterdata.getuispecall=PRE_REGISTRATION_ADMIN,GLOBAL_ADMIN,ZONAL_ADMIN,PRE_REGISTRATION_ADMIN\nmosip.role.admin.masterdata.getusersid=PRE_REGISTRATION_ADMIN,ID_AUTHENTICATION,ZONAL_ADMIN,REGISTRATION_OFFICER,REGISTRATION_SUPERVISOR,REGISTRATION_PROCESSOR\nmosip.role.admin.masterdata.getusers=PRE_REGISTRATION_ADMIN,ID_AUTHENTICATION,ZONAL_ADMIN,REGISTRATION_OFFICER,REGISTRATION_SUPERVISOR,REGISTRATION_PROCESSOR\nmosip.role.admin.masterdata.getusercentermapping=PRE_REGISTRATION_ADMIN,GLOBAL_ADMIN,ZONAL_ADMIN\nmosip.role.admin.masterdata.putusercentermapping=GLOBAL_ADMIN,ZONAL_ADMIN\nmosip.role.admin.masterdata.patchusercentermapping=GLOBAL_ADMIN,ZONAL_ADMIN\nmosip.role.admin.masterdata.deleteusersid=GLOBAL_ADMIN,ZONAL_ADMIN\nmosip.role.admin.masterdata.getuserdetails=PRE_REGISTRATION_ADMIN,GLOBAL_ADMIN,ZONAL_ADMIN\nmosip.role.admin.masterdata.getuserssearch=PRE_REGISTRATION_ADMIN,GLOBAL_ADMIN,ZONAL_ADMIN\nmosip.role.admin.masterdata.getusersideffdtimes=INDIVIDUAL,PRE_REGISTRATION_ADMIN,ID_AUTHENTICATION,REGISTRATION_SUPERVISOR,REGISTRATION_OFFICER,REGISTRATION_PROCESSOR,ZONAL_ADMIN,PRE_REGISTRATION,RESIDENT\nmosip.role.admin.masterdata.postvaliddocuments=GLOBAL_ADMIN,ZONAL_ADMIN\nmosip.role.admin.masterdata.deletevaliddocumentsdoccategorycode=GLOBAL_ADMIN,ZONAL_ADMIN\nmosip.role.admin.masterdata.getvaliddocumentsall=GLOBAL_ADMIN,PRE_REGISTRATION_ADMIN,ZONAL_ADMIN,MASTERDATA_ADMIN\nmosip.role.admin.masterdata.postvaliddocumentssearch=GLOBAL_ADMIN,ZONAL_ADMIN\nmosip.role.admin.masterdata.postvaliddocumentsfiltervalues=GLOBAL_ADMIN,ZONAL_ADMIN\nmosip.role.admin.masterdata.putvaliddocumentsmapdoccategorycode=GLOBAL_ADMIN,ZONAL_ADMIN,MASTERDATA_ADMIN\nmosip.role.admin.masterdata.putvaliddocumentsunmapdoccategorycode=GLOBAL_ADMIN,ZONAL_ADMIN,MASTERDATA_ADMIN\nmosip.role.admin.masterdata.getzoneshierarchylangcode=GLOBAL_ADMIN,PRE_REGISTRATION_ADMIN,ZONAL_ADMIN\nmosip.role.admin.masterdata.getzoneszonename=GLOBAL_ADMIN,ZONAL_ADMIN,REGISTRATION_OFFICER,PRE_REGISTRATION_ADMIN,REGISTRATION_PROCESSOR,PRE_REGISTRATION,REGISTRATION_SUPERVISOR,RESIDENT,INDIVIDUAL,ID_AUTHENTICATION\nmosip.role.admin.masterdata.getzonesauthorize=GLOBAL_ADMIN,PRE_REGISTRATION_ADMIN,ZONAL_ADMIN\nmosip.role.admin.masterdata.postzonesfiltervalues=GLOBAL_ADMIN,ZONAL_ADMIN\nmosip.role.admin.masterdata.putzoneuser=GLOBAL_ADMIN,ZONAL_ADMIN\nmosip.role.admin.masterdata.postzoneuser=GLOBAL_ADMIN,ZONAL_ADMIN\nmosip.role.admin.masterdata.deletezoneuseruseridzonecode=GLOBAL_ADMIN,ZONAL_ADMIN\nmosip.role.admin.masterdata.getzoneuserhistoryuserid=ZONAL_ADMIN,REGISTRATION_OFFICER,PRE_REGISTRATION_ADMIN,REGISTRATION_PROCESSOR,PRE_REGISTRATION,REGISTRATION_SUPERVISOR,RESIDENT,INDIVIDUAL,ID_AUTHENTICATION\nmosip.role.admin.masterdata.patchzoneuser=GLOBAL_ADMIN,ZONAL_ADMIN\nmosip.role.admin.masterdata.postzoneusersearch=GLOBAL_ADMIN,ZONAL_ADMIN\nmosip.role.admin.masterdata.getdocumentcategoriesmissingidslangcode=GLOBAL_ADMIN,ZONAL_ADMIN\nmosip.role.admin.masterdata.getdynamicfieldmissingidslangcode=GLOBAL_ADMIN,ZONAL_ADMIN\nmosip.role.admin.masterdata.deletelanguagescode=ZONAL_ADMIN,PRE_REGISTRATION_ADMIN,GLOBAL_ADMIN\nmosip.role.admin.masterdata.patchlanguages=ZONAL_ADMIN,PRE_REGISTRATION_ADMIN,GLOBAL_ADMIN\nmosip.role.admin.masterdata.postdynamicfieldsfiltervalues=ZONAL_ADMIN,GLOBAL_ADMIN\nmosip.role.admin.masterdata.putlanguages=ZONAL_ADMIN,PRE_REGISTRATION_ADMIN,GLOBAL_ADMIN\nmosip.role.kernel.postemailsend=ZONAL_ADMIN,PRE_REGISTRATION_ADMIN,AUTH,ID_AUTHENTICATION,RESIDENT,REGISTRATION_ADMIN,REGISTRATION_OFFICER,REGISTRATION_PROCESSOR,REGISTRATION_SUPERVISOR,INDIVIDUAL\nmosip.role.kernel.postsmssend=PRE_REGISTRATION_ADMIN,AUTH,ID_AUTHENTICATION,RESIDENT,REGISTRATION_ADMIN,REGISTRATION_OFFICER,REGISTRATION_PROCESSOR,REGISTRATION_SUPERVISOR,INDIVIDUAL\nmosip.role.kernel.postotpgenerate=PRE_REGISTRATION_ADMIN,INDIVIDUAL,REGISTRATION_ADMIN,REGISTRATION_SUPERVISOR,ID_AUTHENTICATION,AUTH,RESIDENT,REGISTRATION_OFFICER\nmosip.role.kernel.getotpvalidate=PRE_REGISTRATION_ADMIN,INDIVIDUAL,REGISTRATION_ADMIN,REGISTRATION_SUPERVISOR,ID_AUTHENTICATION,AUTH,RESIDENT,REGISTRATION_OFFICER\nmosip.role.kernel.getgenerateridcenteridmachineid=REGISTRATION_PROCESSOR,RESIDENT\nmosip.role.kernel.postaudits=MASTERDATA_ADMIN,INDIVIDUAL,ID_AUTHENTICATION,REGISTRATION_ADMIN,REGISTRATION_SUPERVISOR,REGISTRATION_OFFICER,REGISTRATION_PROCESSOR,PRE_REGISTRATION,PRE_REGISTRATION_ADMIN,RESIDENT,ZONAL_ADMIN,GLOBAL_ADMIN,ID_REPOSITORY,HOTLIST_ADMIN\nmosip.role.keymanager.postcssign=ZONAL_ADMIN,GLOBAL_ADMIN,INDIVIDUAL,ID_AUTHENTICATION,REGISTRATION_ADMIN,REGISTRATION_SUPERVISOR,REGISTRATION_OFFICER,REGISTRATION_PROCESSOR,PRE_REGISTRATION_ADMIN,RESIDENT\nmosip.role.keymanager.postcsverifysign=ZONAL_ADMIN,GLOBAL_ADMIN,INDIVIDUAL,ID_AUTHENTICATION,REGISTRATION_ADMIN,REGISTRATION_SUPERVISOR,REGISTRATION_OFFICER,REGISTRATION_PROCESSOR,PRE_REGISTRATION_ADMIN,RESIDENT\nmosip.role.keymanager.posttpmencrypt=ZONAL_ADMIN,GLOBAL_ADMIN,INDIVIDUAL,ID_AUTHENTICATION,REGISTRATION_ADMIN,REGISTRATION_SUPERVISOR,REGISTRATION_OFFICER,REGISTRATION_PROCESSOR,PRE_REGISTRATION_ADMIN,RESIDENT\nmosip.role.keymanager.posttpmdecrypt=ZONAL_ADMIN,GLOBAL_ADMIN,INDIVIDUAL,ID_AUTHENTICATION,REGISTRATION_ADMIN,REGISTRATION_SUPERVISOR,REGISTRATION_OFFICER,REGISTRATION_PROCESSOR,PRE_REGISTRATION_ADMIN,RESIDENT\nmosip.role.keymanager.posttpmsigningpublickey=ZONAL_ADMIN,GLOBAL_ADMIN,INDIVIDUAL,ID_AUTHENTICATION,REGISTRATION_ADMIN,REGISTRATION_SUPERVISOR,REGISTRATION_OFFICER,REGISTRATION_PROCESSOR,PRE_REGISTRATION_ADMIN,RESIDENT\nmosip.role.keymanager.posttpmencryptionpublickey=ZONAL_ADMIN,GLOBAL_ADMIN,INDIVIDUAL,ID_AUTHENTICATION,REGISTRATION_ADMIN,REGISTRATION_SUPERVISOR,REGISTRATION_OFFICER,REGISTRATION_PROCESSOR,PRE_REGISTRATION_ADMIN,RESIDENT\nmosip.role.keymanager.postencrypt=ZONAL_ADMIN,GLOBAL_ADMIN,INDIVIDUAL,ID_AUTHENTICATION,REGISTRATION_ADMIN,REGISTRATION_SUPERVISOR,REGISTRATION_OFFICER,REGISTRATION_PROCESSOR,PRE_REGISTRATION_ADMIN,RESIDENT,ID_REPOSITORY,CREDENTIAL_REQUEST,HOTLIST_ADMIN\nmosip.role.keymanager.postdecrypt=ZONAL_ADMIN,GLOBAL_ADMIN,INDIVIDUAL,ID_AUTHENTICATION,REGISTRATION_ADMIN,REGISTRATION_SUPERVISOR,REGISTRATION_OFFICER,REGISTRATION_PROCESSOR,PRE_REGISTRATION_ADMIN,RESIDENT,ID_REPOSITORY,CREDENTIAL_REQUEST,HOTLIST_ADMIN\nmosip.role.keymanager.postencryptwithpin=ZONAL_ADMIN,GLOBAL_ADMIN,INDIVIDUAL,ID_AUTHENTICATION,REGISTRATION_ADMIN,REGISTRATION_SUPERVISOR,REGISTRATION_OFFICER,REGISTRATION_PROCESSOR,PRE_REGISTRATION_ADMIN,RESIDENT\nmosip.role.keymanager.postdecryptwithpin=ZONAL_ADMIN,GLOBAL_ADMIN,INDIVIDUAL,ID_AUTHENTICATION,REGISTRATION_ADMIN,REGISTRATION_SUPERVISOR,REGISTRATION_OFFICER,REGISTRATION_PROCESSOR,PRE_REGISTRATION_ADMIN,RESIDENT\nmosip.role.keymanager.postencryptdt=ZONAL_ADMIN,GLOBAL_ADMIN,INDIVIDUAL,ID_AUTHENTICATION,REGISTRATION_ADMIN,REGISTRATION_SUPERVISOR,REGISTRATION_OFFICER,REGISTRATION_PROCESSOR,PRE_REGISTRATION_ADMIN,RESIDENT\nmosip.role.keymanager.postdecryptdt=ZONAL_ADMIN,GLOBAL_ADMIN,INDIVIDUAL,ID_AUTHENTICATION,REGISTRATION_ADMIN,REGISTRATION_SUPERVISOR,REGISTRATION_OFFICER,REGISTRATION_PROCESSOR,PRE_REGISTRATION_ADMIN,RESIDENT\nmosip.role.keymanager.postgeneratemasterkeyobjecttype=KEY_MAKER,ZONAL_ADMIN,GLOBAL_ADMIN,INDIVIDUAL,ID_AUTHENTICATION,REGISTRATION_ADMIN,REGISTRATION_SUPERVISOR,REGISTRATION_OFFICER,REGISTRATION_PROCESSOR,PRE_REGISTRATION_ADMIN,RESIDENT\nmosip.role.keymanager.getgetcertificate=ZONAL_ADMIN,GLOBAL_ADMIN,INDIVIDUAL,ID_AUTHENTICATION,REGISTRATION_ADMIN,REGISTRATION_SUPERVISOR,REGISTRATION_OFFICER,REGISTRATION_PROCESSOR,PRE_REGISTRATION_ADMIN,RESIDENT,KEY_MAKER\nmosip.role.keymanager.postgeneratecsr=KEY_MAKER,ZONAL_ADMIN,GLOBAL_ADMIN,INDIVIDUAL,ID_AUTHENTICATION,REGISTRATION_ADMIN,REGISTRATION_SUPERVISOR,REGISTRATION_OFFICER,REGISTRATION_PROCESSOR,PRE_REGISTRATION_ADMIN,RESIDENT\nmosip.role.keymanager.postuploadcertificate=KEY_MAKER,ZONAL_ADMIN,GLOBAL_ADMIN,INDIVIDUAL,ID_AUTHENTICATION,REGISTRATION_ADMIN,REGISTRATION_SUPERVISOR,REGISTRATION_OFFICER,REGISTRATION_PROCESSOR,PRE_REGISTRATION_ADMIN,RESIDENT\nmosip.role.keymanager.postuploadotherdomaincertificate=PARTNER_ADMIN,KEY_MAKER,ZONAL_ADMIN,GLOBAL_ADMIN,INDIVIDUAL,ID_AUTHENTICATION,REGISTRATION_ADMIN,REGISTRATION_SUPERVISOR,REGISTRATION_OFFICER,REGISTRATION_PROCESSOR,PRE_REGISTRATION_ADMIN,RESIDENT\nmosip.role.keymanager.postgeneratesymmetrickey=ZONAL_ADMIN,GLOBAL_ADMIN,INDIVIDUAL,ID_AUTHENTICATION,REGISTRATION_ADMIN,REGISTRATION_SUPERVISOR,REGISTRATION_OFFICER,REGISTRATION_PROCESSOR,PRE_REGISTRATION_ADMIN,RESIDENT\nmosip.role.keymanager.putrevokekey=ZONAL_ADMIN,GLOBAL_ADMIN,INDIVIDUAL,ID_AUTHENTICATION,REGISTRATION_ADMIN,REGISTRATION_SUPERVISOR,REGISTRATION_OFFICER,REGISTRATION_PROCESSOR,PRE_REGISTRATION_ADMIN,RESIDENT\nmosip.role.keymanager.postmigratebasekey=KEY_MIGRATION_ADMIN\nmosip.role.keymanager.getzktempcertificate=KEY_MIGRATION_ADMIN\nmosip.role.keymanager.postlicensegenerate=ZONAL_ADMIN,GLOBAL_ADMIN,INDIVIDUAL,ID_AUTHENTICATION,REGISTRATION_ADMIN,REGISTRATION_SUPERVISOR,REGISTRATION_OFFICER,REGISTRATION_PROCESSOR,PRE_REGISTRATION_ADMIN,RESIDENT\nmosip.role.keymanager.postmigratezkkeys=KEY_MIGRATION_ADMIN\nmosip.role.keymanager.postuploadcacertificate=ZONAL_ADMIN,GLOBAL_ADMIN,PARTNER_ADMIN\nmosip.role.keymanager.postuploadpartnercertificate=ZONAL_ADMIN,GLOBAL_ADMIN,PARTNER_ADMIN,PARTNER\nmosip.role.keymanager.getgetpartnercertificatepartnercertid=ZONAL_ADMIN,GLOBAL_ADMIN,PARTNER_ADMIN,PARTNER\nmosip.role.keymanager.postverifycertificatetrust=ZONAL_ADMIN,GLOBAL_ADMIN,PARTNER_ADMIN,PARTNER\nmosip.role.keymanager.postsign=ZONAL_ADMIN,GLOBAL_ADMIN,INDIVIDUAL,ID_AUTHENTICATION,REGISTRATION_ADMIN,REGISTRATION_SUPERVISOR,REGISTRATION_OFFICER,REGISTRATION_PROCESSOR,PRE_REGISTRATION_ADMIN,RESIDENT\nmosip.role.keymanager.postvalidate=ZONAL_ADMIN,GLOBAL_ADMIN,INDIVIDUAL,ID_AUTHENTICATION,REGISTRATION_ADMIN,REGISTRATION_SUPERVISOR,REGISTRATION_OFFICER,REGISTRATION_PROCESSOR,PRE_REGISTRATION_ADMIN,RESIDENT\nmosip.role.keymanager.postpdfsign=ZONAL_ADMIN,GLOBAL_ADMIN,INDIVIDUAL,ID_AUTHENTICATION,REGISTRATION_ADMIN,REGISTRATION_SUPERVISOR,REGISTRATION_OFFICER,REGISTRATION_PROCESSOR,PRE_REGISTRATION_ADMIN,RESIDENT,PRINT_PARTNER,CREDENTIAL_REQUEST\nmosip.role.keymanager.postjwtsign=ZONAL_ADMIN,GLOBAL_ADMIN,INDIVIDUAL,ID_AUTHENTICATION,REGISTRATION_ADMIN,REGISTRATION_SUPERVISOR,REGISTRATION_OFFICER,REGISTRATION_PROCESSOR,PRE_REGISTRATION_ADMIN,RESIDENT\nmosip.role.keymanager.postjwtverify=ZONAL_ADMIN,GLOBAL_ADMIN,INDIVIDUAL,ID_AUTHENTICATION,REGISTRATION_ADMIN,REGISTRATION_SUPERVISOR,REGISTRATION_OFFICER,REGISTRATION_PROCESSOR,PRE_REGISTRATION_ADMIN,RESIDENT\nmosip.role.keymanager.getuinpartnercode=ZONAL_ADMIN,GLOBAL_ADMIN,ID_AUTHENTICATION,RESIDENT\nmosip.role.keymanager.postzkencrypt=ZONAL_ADMIN,GLOBAL_ADMIN,INDIVIDUAL,ID_AUTHENTICATION,REGISTRATION_ADMIN,REGISTRATION_SUPERVISOR,REGISTRATION_OFFICER,REGISTRATION_PROCESSOR,PRE_REGISTRATION_ADMIN,RESIDENT\nmosip.role.keymanager.postzkdecrypt=ZONAL_ADMIN,GLOBAL_ADMIN,INDIVIDUAL,ID_AUTHENTICATION,REGISTRATION_ADMIN,REGISTRATION_SUPERVISOR,REGISTRATION_OFFICER,REGISTRATION_PROCESSOR,PRE_REGISTRATION_ADMIN,RESIDENT\nmosip.role.keymanager.postzkreencryptrandomkey=ZONAL_ADMIN,GLOBAL_ADMIN,INDIVIDUAL,ID_AUTHENTICATION,REGISTRATION_ADMIN,REGISTRATION_SUPERVISOR,REGISTRATION_OFFICER,REGISTRATION_PROCESSOR,PRE_REGISTRATION_ADMIN,RESIDENT\nmosip.role.keymanager.postjwssign=ZONAL_ADMIN,GLOBAL_ADMIN,INDIVIDUAL,ID_AUTHENTICATION,REGISTRATION_ADMIN,REGISTRATION_SUPERVISOR,REGISTRATION_OFFICER,REGISTRATION_PROCESSOR,PRE_REGISTRATION_ADMIN,RESIDENT,CREDENTIAL_ISSUANCE\nmosip.role.keymanager.postcwtsign=ZONAL_ADMIN,GLOBAL_ADMIN,RESIDENT,PRINT_PARTNER,CREDENTIAL_ISSUANCE\nmosip.role.keymanager.postcwtdecode=ZONAL_ADMIN,GLOBAL_ADMIN,RESIDENT,PRINT_PARTNER,CREDENTIAL_ISSUANCE\nmosip.role.keymanager.postcwtverify=ZONAL_ADMIN,GLOBAL_ADMIN,RESIDENT,PRINT_PARTNER,CREDENTIAL_ISSUANCE\nmosip.role.keymanager.postgenerateargon2hash=ZONAL_ADMIN,GLOBAL_ADMIN,INDIVIDUAL,ID_AUTHENTICATION,REGISTRATION_ADMIN,REGISTRATION_SUPERVISOR,REGISTRATION_OFFICER,REGISTRATION_PROCESSOR,PRE_REGISTRATION_ADMIN,RESIDENT\nmosip.role.keymanager.getgetpartnersignedcertificatepartnercertid=ZONAL_ADMIN,GLOBAL_ADMIN,PARTNER_ADMIN,PARTNER\nmosip.role.keymanager.postgetcacertificates=PARTNER_ADMIN\nmosip.role.keymanager.getcacertificatetrustpath=PARTNER_ADMIN\n\nmosip.kernel.keymanager.jwtsign.validate.json=false\n\nauth.allowed.urls=http://localhost:5000/\n\n##These properties are used for validation in kernel-masterdata-service\n#For example, Arabic needs to be added along with english\n#the unicode range of Arabic (Range: 0600–06FF) has to be added inside the square brackets with \\u tag\n#the final value in this case might look like [^a-z\\u0600-\\u06FF]\nmosip.kernel.masterdata.code.validate.regex=[^a-z0-9\\u0600-\\u06FF]\nmosip.kernel.masterdata.name.validate.regex=[^a-zA-Z\\\\u0600-\\\\u06FF\\\\u0B80-\\\\u0BFF\\\\u0C80-\\\\u0CFF\\\\u0900-\\\\u097F]\n\n# query param usd to refer url to redirect after logout\nmosip.iam.post-logout-uri-param-key=post_logout_redirect_uri\n# end session endpoint in OIDC\nmosip.iam.end-session-endpoint-path=/protocol/openid-connect/logout\nmosip.kernel.keymgr.hsm.health.check.enabled=false\n\n# Executor pool for UIN generation\nmosip.kernel.uin.get_executor_pool=100\n# Executor pool for VID generation\nmosip.kernel.vid.get_executor_pool=100\n\n# CA cerificate validation\nmail.executor.core-pool-size=10\nmail.executor.max-pool-size=20\nmail.executor.queue-capacity=2000\nmail.executor.keep-alive-seconds=30\nmail.executor.await-termination-seconds=30\nmail.executor.thread-name-prefix=MailSender-\nsms.executor.core-pool-size=5\nsms.executor.max-pool-size=10\nsms.executor.queue-capacity=1000\nsms.executor.keep-alive-seconds=20\nsms.executor.await-termination-seconds=20\nsms.executor.thread-name-prefix=SmsSender-\n\n# Basic pool configuration\nspring.datasource.hikari.maximum-pool-size=30\nspring.datasource.hikari.minimum-idle=10\n\n# Minimum validity (in months) required for uploading a Partner CA certificate.\nmosip.kernel.partner.cacertificate.upload.minimumvalidity.month=12\n\n# Minimum validity duration (in years) required for Partner Certificates at the time of upload.\nmosip.kernel.partner.issuer.certificate.duration.years=1\n\n# Grace period (in days) allowed as an exception to the minimum issuer certificate duration requirement.\nmosip.kernel.partner.issuer.certificate.allowed.grace.duration=30\n\n# Prefix to prepend to the JWT 'kid'; supports static values or PAYLOAD_ISSUER to derive prefix from the payload 'iss' field.\nmosip.kernel.keymanager.signature.kid.prepend=\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/mosip-config/blob/master/mock-abis-default.properties", + "title": "mock-abis-default.properties", + "repo": "mosip/mosip-config", + "file_path": "mock-abis-default.properties", + "language": "properties", + "content": "# Follow properites have their values assigned via 'overrides' environment variables of config server docker.\n# DO NOT define these in any of the property files. They must be passed as env variables. Refer to config-server\n# helm chart:\n# mosip.regproc.client.secret\nspring.cloud.config.name=mock-abis\nspring.application.name=mock-abis-service\nmanagement.endpoint.health.show-details=always\nmanagement.endpoits.web.exposure.include=info,health,refresh\nserver.port=8081\nabis.return.duplicate=false\n#iam adapter\nauth.server.admin.issuer.uri=${keycloak.external.url}/auth/realms/\nmosip.iam.adapter.appid=abis\nmosip.iam.adapter.clientid=mosip-abis-client\nmosip.iam.adapter.clientsecret=${mosip.abis.client.secret}\nmosip.kernel.auth.adapter.ssl-bypass=true\nmosip.kernel.auth.appid-realm-map={abis:'mosip'}\nmosip.kernel.auth.appids.realm.map={abis:'mosip'}\n#iam adapter disable local end points\nmosip.service.end-points=/**/*\nmosip.service.exclude.auth.allowed.method=GET,POST,DELETE\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/mosip-config/blob/master/mock-identity-system-default.properties", + "title": "mock-identity-system-default.properties", + "repo": "mosip/mosip-config", + "file_path": "mock-identity-system-default.properties", + "language": "properties", + "content": "# This Source Code Form is subject to the terms of the Mozilla Public\n# License, v. 2.0. If a copy of the MPL was not distributed with this\n# file, You can obtain one at https://mozilla.org/MPL/2.0/.\n\n# Follow properites have their values assigned via 'overrides' environment variables of config server docker.\n# DO NOT define these in any of the property files. They must be passed as env variables. Refer to config-server\n# helm chart:\n# db.dbuser.password\n# keycloak.external.url\n# keycloak.internal.host\n# keycloak.internal.url\n# keycloak.admin.password\n# mosip.auth.client.secret (convention: ..secret)\n# mosip.ida.client.secret\n# mosip.admin.client.secret\n# mosip.reg.client.secret\n# mosip.prereg.client.secret\n# softhsm.kernel.pin\n# softhsm-security-pin\n# email.smtp.host\n# email.smtp.username\n# email.smtp.secret\n# mosip.kernel.tokenid.uin.salt\n# mosip.kernel.tokenid.partnercode.salt\n# mosip.api.internal.url\n# mosip.api.public.url\n\n##----------------------------------------- Database properties --------------------------------------------------------\n\nmosip.mockidentitysystem.database.hostname=${mosip.database.hostname.override:postgres-postgresql.postgres}\nmosip.mockidentitysystem.database.port=${mosip.database.port.override:5432}\nspring.datasource.url=jdbc:postgresql://${mosip.mockidentitysystem.database.hostname}:${mosip.mockidentitysystem.database.port}/mosip_mockidentitysystem?currentSchema=mockidentitysystem\nspring.datasource.username=mockidsystemuser\nspring.datasource.password=${db.dbuser.password}\n\n#------------------------------------ Key-manager specific properties --------------------------------------------------\n#Crypto asymmetric algorithm name\nmosip.kernel.crypto.asymmetric-algorithm-name=RSA/ECB/OAEPWITHSHA-256ANDMGF1PADDING\n#Crypto symmetric algorithm name\nmosip.kernel.crypto.symmetric-algorithm-name=AES/GCM/PKCS5Padding\n#Keygenerator asymmetric algorithm name\nmosip.kernel.keygenerator.asymmetric-algorithm-name=RSA\n#Keygenerator symmetric algorithm name\nmosip.kernel.keygenerator.symmetric-algorithm-name=AES\n#Asymmetric algorithm key length\nmosip.kernel.keygenerator.asymmetric-key-length=2048\n#Symmetric algorithm key length\nmosip.kernel.keygenerator.symmetric-key-length=256\n#Encrypted data and encrypted symmetric key separator\nmosip.kernel.data-key-splitter=#KEY_SPLITTER#\n#GCM tag length\nmosip.kernel.crypto.gcm-tag-length=128\n#Hash algo name\nmosip.kernel.crypto.hash-algorithm-name=PBKDF2WithHmacSHA512\n#Symmtric key length used in hash\nmosip.kernel.crypto.hash-symmetric-key-length=256\n#No of iterations in hash\nmosip.kernel.crypto.hash-iteration=100000\n#Sign algo name\nmosip.kernel.crypto.sign-algorithm-name=RS256\n#Certificate Sign algo name\nmosip.kernel.certificate.sign.algorithm=SHA256withRSA\n\n#mosip.kernel.keymanager.hsm.config-path=local.p12\n#mosip.kernel.keymanager.hsm.keystore-type=PKCS12\n#mosip.kernel.keymanager.hsm.keystore-pass=local\n\n#Type of keystore, Supported Types: PKCS11, PKCS12, Offline, JCE\nmosip.kernel.keymanager.hsm.keystore-type=PKCS11\n# For PKCS11 provide Path of config file.\n# For PKCS12 keystore type provide the p12/pfx file path. P12 file will be created internally so provide only file path & file name.\n# For Offline & JCE property can be left blank, specified value will be ignored.\nmosip.kernel.keymanager.hsm.config-path=/config/softhsm-application.conf\n# Passkey of keystore for PKCS11, PKCS12\n# For Offline & JCE proer can be left blank. JCE password use other JCE specific properties.\nmosip.kernel.keymanager.hsm.keystore-pass=${softhsm.mock.identity.system.security.pin}\n\nmosip.kernel.keymanager.certificate.default.common-name=www.mosip.io\nmosip.kernel.keymanager.certificate.default.organizational-unit=MOSIP-TECH-CENTER\nmosip.kernel.keymanager.certificate.default.organization=IITB\nmosip.kernel.keymanager.certificate.default.location=BANGALORE\nmosip.kernel.keymanager.certificate.default.state=KA\nmosip.kernel.keymanager.certificate.default.country=IN\n\nmosip.kernel.keymanager.softhsm.certificate.common-name=www.mosip.io\nmosip.kernel.keymanager.softhsm.certificate.organizational-unit=MOSIP\nmosip.kernel.keymanager.softhsm.certificate.organization=IITB\nmosip.kernel.keymanager.softhsm.certificate.country=IN\n\n# Application Id for PMS master key.\nmosip.kernel.partner.sign.masterkey.application.id=PMS\nmosip.kernel.partner.allowed.domains=DEVICE\n\nmosip.kernel.keymanager-service-validate-url=https://${mosip.hostname}/keymanager/validate\nmosip.kernel.keymanager.jwtsign.validate.json=false\nmosip.keymanager.dao.enabled=false\ncrypto.PrependThumbprint.enable=true\n\nspring.jpa.database-platform=org.hibernate.dialect.PostgreSQL95Dialect\nspring.jpa.show-sql=false\nspring.jpa.hibernate.ddl-auto=none\nspring.jpa.properties.hibernate.jdbc.lob.non_contextual_creation=true\nmosip.esignet.mock.authenticator.ida.otp-channels=email,phone\n\nmosip.kernel.keymgr.hsm.health.check.enabled=false\nmosip.kernel.keymgr.hsm.health.key.app-id=MOCK_AUTHENTICATION_SERVICE\nmosip.kernel.keymgr.hsm.healthkey.ref-id=HEALTH_KEY\n\n##---------------------------------KBA Configurations------------------------------------------------------\n#We can use any field from the IdentityData for KBA\nmosip.esignet.authenticator.auth-factor.kba.field-details={{\"id\":\"individualId\", \"type\":\"text\", \"format\":\"\"},{\"id\":\"email\", \"type\":\"text\", \"format\":\"\"},{\"id\":\"dateOfBirth\", \"type\":\"date\", \"format\":\"yyyy-MM-dd\"}}\nmosip.esignet.authenticator.auth-factor.kba.field-language=eng\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/mosip-config/blob/master/mock-mv-default.properties", + "title": "mock-mv-default.properties", + "repo": "mosip/mosip-config", + "file_path": "mock-mv-default.properties", + "language": "properties", + "content": "## Mock Manual Verification Properties\n# Based on value of below parameter the packets are passed or rejected. Required values are [APPROVED or REJECTED]\nmock.mv.default.decision=APPROVED" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/mosip-config/blob/master/opencrvs-default.properties", + "title": "opencrvs-default.properties", + "repo": "mosip/mosip-config", + "file_path": "opencrvs-default.properties", + "language": "properties", + "content": "# Following properites have their values assigned via 'overrides' environment variables of config server docker.\n# DO NOT define these in any of the property files. They must be passed as env variables. Refer to config-server\n# helm chart:\n# keycloak.internal.url\n\n# Following properties get their values from environment variables of mediator helm chart.\n# DO NOT define the following properties in this file.\n\n# opencrvs.receive.credential.url=\n# mosip.receive.credential.url= \n# opencrvs.auth.url=\n# opencrvs.locations.url=\n# opencrvs.client.id=\n# opencrvs.client.id=\n# opencrvs.client.secret.key=\n# opencrvs.client.sha.secret=\n# mosip.opencrvs.client.id=mosip-opencrvs-client\n# mosip.opencrvs.client.secret.key=\n# mosip.opencrvs.db.datasource.password=\n# mosip.opencrvs.partner.client.id=opencrvs-partner\n# mosip.opencrvs.partner.client.sha.secret=\n# mosip.opencrvs.partner.username=opencrvs-partner\n# mosip.opencrvs.partner.password=\n# mosip.opencrvs.uin.token.partner=opencrvs-auth-partner\n# mosip.opencrvs.death.client.id=mosip-opencrvs-client\n# mosip.opencrvs.death.client.secret=\n\nopenapi.service.server.url=${server.servlet.context-path}\n\nmediator.core.pool.size=20\nmediator.max.pool.size=200\nmediator.queue.capacity=50\n\nopencrvs.datetime.pattern=yyyy-MM-dd'T'HH:mm:ss.SSS'Z'\n\nopencrvs.center.id=45451\nopencrvs.machine.id=45452\nopencrvs.appid=opencrvs\nopencrvs.appName=OPENCRVS\nopencrvs.audit.app.id=${opencrvs.appid}\nopencrvs.audit.app.name=${opencrvs.appName}\nopencrvs.data.lang.code.default=eng\nopencrvs.data.lang.code.mapping=eng:eng|english|en,fra:french|fr|fra|fre,ara:ara|arabic|ar\nopencrvs.data.address.line.mapping=1:1-2|2:2-3|3:3-4\nopencrvs.data.address.line.joiner=\", \"\nopencrvs.data.address.location.mapping=region:state:id|zone:district:id|city:city:direct\nopencrvs.data.dummy.phone=\"9898989898\"\nopencrvs.data.dummy.emailSuffix=\".123@gmail.com\"\n\n# The following process.type should the same one present in provider.packetwriter.opencrvs and provider.packetreader.opencrvs, in application-default.properties\nopencrvs.birth.process.type=OPENCRVS_NEW\n\n# Incase the mediator encounters error creating and uploading the packet, it will reproduce the same if this is true.\nopencrvs.reproduce.on.error=false\nopencrvs.reproduce.on.error.delay.ms=10000\n\nmosip.opencrvs.websub.resubscribe=true\nmosip.opencrvs.websub.resubscribe.init.delay.ms=20000\nmosip.opencrvs.websub.resubscribe.delay.ms=21600000\n \nmosip.opencrvs.privkey.path=/certs/mnt/mosip-priv.key\nopencrvs.mosip.pubkey.path=/certs/mnt/opencrvs-pub.key\n \nkernel.auth.adapter.available=false\n\nmosip.iam.token_endpoint=${keycloak.internal.url}/auth/realms/mosip/protocol/openid-connect/token\nmosip.iam.validate_endpoint=${keycloak.internal.url}/auth/realms/mosip/protocol/openid-connect/userinfo\n\nconfig.server.file.storage.uri=http://config-server.config-server/config/application/default/${spring.cloud.config.label}/\nregistration.processor.identityjson=identity-mapping.json\n\nmosip.registration.processor.registration.sync.id=mosip.registration.sync\nmosip.registration.processor.application.version=1.0\n\nMIDSCHEMAURL=${mosip.kernel.syncdata-service-idschema-url}\nSYNCSERVICE=${mosip.regproc.status.service.url}/registrationprocessor/v1/registrationstatus/sync\nPACKETRECEIVER=${mosip.packet.receiver.url}/registrationprocessor/v1/packetreceiver/registrationpackets\nRIDGENERATION=http://ridgenerator.kernel/v1/ridgenerator/generate/rid\nKEYMANAGER_TOKENID=${mosip.kernel.keymanager.url}/v1/keymanager/tokenid\nIDREPO_IDENTITY=${mosip.idrepo.identity.url}/idrepository/v1/identity/\nIDREPO_VID=${mosip.idrepo.vid.url}/idrepository/v1/vid\n\nIDSchema.Version=0.1\nid.repo.update=mosip.id.update\nobjectstore.crypto.name=OnlinePacketCryptoServiceImpl\n\nobjectstore.adapter.name=PosixAdapter\nobject.store.base.location=./packets/mosip-opencrvs/\n\nmosip.opencrvs.db.datasource.jdbc-url=jdbc:postgresql://${mosip.database.hostname.override:postgres-postgresql.postgres}:${mosip.database.port.override:5432}/mosip_opencrvs\nmosip.opencrvs.db.datasource.username=opencrvsuser\n# mosip.opencrvs.db.datasource.password=\nmosip.opencrvs.db.datasource.birth.transaction.table=opencrvs.birth_transactions\nmosip.opencrvs.db.datasource.cr.by=system\nspring.jpa.properties.hibernate.jdbc.lob.non_contextual_creation=true\n\nmosip.opencrvs.kafka.bootstrap.server=kafka.kafka:9092\nmosip.opencrvs.kafka.topic.name=OPENCRVS_BIRTH_RECORDS\nmosip.opencrvs.kafka.topic.partitions=1\nmosip.opencrvs.kafka.topic.replication.factor=1\nmosip.opencrvs.kafka.admin.request.timeout.ms=2000\nmosip.opencrvs.kafka.consumer.group.id=mediatorReceiver\nmosip.opencrvs.kafka.consumer.poll.interval.ms=1000\nmosip.opencrvs.kafka.consumer.auto.offset.reset=latest\nmosip.opencrvs.kafka.consumer.enable.auto.commit=true\nmosip.opencrvs.kafka.consumer.auto.commit.interval.ms=500\n\nmosip.kernel.crypto.thumbprint.present=true\nmosip.kernel.crypto.thumbprint.length=256\n\nmosip.kernel.crypto.sign-algorithm-name=SHA512withRSA\n\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/mosip-config/blob/master/packet-manager-default.properties", + "title": "packet-manager-default.properties", + "repo": "mosip/mosip-config", + "file_path": "packet-manager-default.properties", + "language": "properties", + "content": "# s3.accesskey\n# s3.region\n# s3.secretkey\n\n# Class name of the referenceValidator. Commenting or removing this property will disable reference validator.\nmosip.kernel.idobjectvalidator.referenceValidator=io.mosip.kernel.idobjectvalidator.impl.IdObjectReferenceValidator\n# The additional fields to be searched apart from demograpgics \npacketmanager.additional.fields.search.from.metainfo=officerBiometricFileName,supervisorBiometricFileName\n\n# Roles\nmosip.role.commons-packet.putcreatepacket=REGISTRATION_PROCESSOR,ONLINE_REGISTRATION_CLIENT\nmosip.role.commons-packet.postaddtag=REGISTRATION_PROCESSOR\nmosip.role.commons-packet.postaddorupdatetag=REGISTRATION_PROCESSOR\nmosip.role.commons-packet.postdeletetag=REGISTRATION_PROCESSOR\nmosip.role.commons-packet.postinfo=REGISTRATION_PROCESSOR\nmosip.role.commons-packet.postgettags=REGISTRATION_PROCESSOR\nmosip.role.commons-packet.postvalidatepacket=REGISTRATION_PROCESSOR\nmosip.role.commons-packet.postaudits=REGISTRATION_PROCESSOR\nmosip.role.commons-packet.postmetainfo=METADATA_READ\nmosip.role.commons-packet.postbiometrics=BIOMETRIC_READ\nmosip.role.commons-packet.postdocument=DOCUMENT_READ\nmosip.role.commons-packet.postsearchfields=DATA_READ\nmosip.role.commons-packet.postsearchfield=DATA_READ\nauth.server.admin.allowed.audience=mosip-regproc-client,mosip-crvs1-client\n\n# Object store\nobject.store.s3.accesskey=${s3.accesskey}\nobject.store.s3.secretkey=${s3.secretkey}\n## For Minio: object.store.s3.url=http://minio.minio:9000\n## For AWS: object.store.s3.url=s3.${s3.region}.amazonaws.com\nobject.store.s3.url=http://minio.minio:9000\nobject.store.s3.region=${s3.region}\nobject.store.s3.readlimit=10000000\n\n# IAM adapter\nmosip.iam.adapter.appid=regproc\nmosip.iam.adapter.clientid=mosip-regproc-client\nmosip.iam.adapter.clientsecret=${mosip.regproc.client.secret}\nmosip.iam.adapter.issuerURL=${keycloak.internal.url}/auth/realms/mosip\n\nmosip.auth.adapter.impl.basepackage=io.mosip.kernel.auth.defaultadapter\n\n##------------------------------------------------------Redis cache properties----------------------------------------------------\n## The following properties will be used only when the redis cache provider jar is available in the loader path of packetmanager service.\nredis.cache.hostname=10.20.20.90\nredis.cache.port=6379\n# Time to live for 2hrs\nspring.cache.redis.time-to-live=7200000\n\n# Rest Template properties\nmosip.kernel.http.selftoken.restTemplate.max-connection-per-route=70\nmosip.kernel.http.selftoken.restTemplate.total-max-connections=500\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/mosip-config/blob/master/partner-management-default.properties", + "title": "partner-management-default.properties", + "repo": "mosip/mosip-config", + "file_path": "partner-management-default.properties", + "language": "properties", + "content": "## Follow properites have their values assigned via 'overrides' environment variables of config server docker.\n## DO NOT define these in any of the property files. They must be passed as env variables. Refer to config-server\n## helm chart:\n## db.dbuser.password\n## mosip.pms.client.secret\n## keycloak.internal.url\n## keycloak.admin.password\n## mosip.api.public.url\n\n## Database\n## Database hostname below is assuming postgres is running inside cluster in 'postgres' namespace\n## If database is external to production, provide the DNS or ip of the host and port\nmosip.pmp.database.hostname=${mosip.database.hostname.override:postgres-postgresql.postgres}\nmosip.pmp.database.port=${mosip.database.port.override:5432}\nmosip.pmp.database.user=pmsuser\nmosip.pmp.database.password=${db.dbuser.password}\n\n## Auth device\nmosip.authdevice.database.hostname=postgres\nmosip.authdevice.database.port=80\nmosip.authdevice.database.user=authdeviceuser\nmosip.authdevice.database.password=${db.dbuser.password}\n\n## Reg device\nmosip.regdevice.database.hostname=postgres\nmosip.regdevice.database.port=80\nmosip.regdevice.database.user=regdeviceuser\nmosip.regdevice.database.password=${db.dbuser.password}\n\n## Hibernate\njavax.persistence.jdbc.driverClassName=org.postgresql.Driver\njavax.persistence.jdbc.driver=org.postgresql.Driver\njavax.persistence.jdbc.url=jdbc:postgresql://${mosip.pmp.database.hostname}:${mosip.pmp.database.port}/mosip_pms\njavax.persistence.jdbc.user=${mosip.pmp.database.user}\njavax.persistence.jdbc.username=${mosip.pmp.database.user}\njavax.persistence.jdbc.password=${mosip.pmp.database.password}\njavax.persistence.jdbc.schema = pms\njavax.persistence.jdbc.uinHashTable=uin_hash_salt\njavax.persistence.jdbc.uinEncryptTable=uin_encrypt_salt\n\n## Hibernate Auth device\nmosip.datasource.authdevice.jdbc.driver=org.postgresql.Driver\nmosip.datasource.authdevice.jdbc.url = jdbc:postgresql://${mosip.authdevice.database.hostname}:${mosip.authdevice.database.port}/mosip_authdevice\nmosip.datasource.authdevice.jdbc.password = ${mosip.authdevice.database.password}\nmosip.datasource.authdevice.jdbc.user = ${mosip.authdevice.database.user}\nmosip.datasource.authdevice.jdbc.schema = authdevice\nmosip.datasource.authdevice.hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect\n\n## Hibernate Reg device\nmosip.datasource.regdevice.jdbc.driver=org.postgresql.Driver\nmosip.datasource.regdevice.jdbc.url = jdbc:postgresql://${mosip.regdevice.database.hostname}:${mosip.regdevice.database.port}/mosip_regdevice\nmosip.datasource.regdevice.jdbc.password = ${mosip.regdevice.database.password}\nmosip.datasource.regdevice.jdbc.user = ${mosip.regdevice.database.user}\nmosip.datasource.regdevice.jdbc.schema = regdevice\nmosip.datasource.regdevice.hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect\n\nhibernate.dialect=org.hibernate.dialect.PostgreSQLDialect\nhibernate.jdbc.lob.non_contextual_creation=true\nhibernate.hbm2ddl.auto=none\nhibernate.show_sql=true\nhibernate.format_sql=true\nhibernate.connection.charSet=utf8\nhibernate.cache.use_second_level_cache=false\nhibernate.cache.use_query_cache=false\nhibernate.cache.use_structured_entries=false\nhibernate.generate_statistics=false\nspring.datasource.initialization-mode=never\n\n## This property is used by kernel-authcodeflowproxy-api to check request is coming from allowed urls not.\nauth.allowed.urls=https://${mosip.pmp.host}/\n\n## Application ID of PMP. Used to upload other domain certs\napplication.id=PARTNER\napplication.name=partner\n\n## To configure starting value or initial value of mispId.\n## ex: if value = 3 ==> mispId starts from 100\n## if value = 4 ==> mispId starts from 1000\nmosip.kernel.mispid.length = 3\nmosip.kernel.idgenerator.misp.license-key-length=50\n## To configure the partner types for which extractors are required. It should be \",\" separated.\npmp.bioextractors.required.partner.types = Credential_Partner,Online_Verification_Partner\nmosip.pmp.misp.license.expiry.period.indays=999999\nmosip.pmp.partner.policy.expiry.period.indays=999999\npmp.policy.expiry.period.indays = 180\npmp.policy.schema.url= https://schemas.mosip.io/v1/auth-policy\n\n## To configure what are the allowed policy types.\n## If we add any new policy type, corresponding schema also needs to be added.\n## format for adding schema configuration for new policy type is as below\n## pmp.policyTypeName.policy.schema(all are in lowercase)= schema url\npmp.allowed.policy.types=Auth,DataShare,CredentialIssuance,MISP\npmp.auth.policy.schema=${mosip.kernel.xsdstorage-uri}auth-policy-schema.json\npmp.datashare.policy.schema=${mosip.kernel.xsdstorage-uri}data-share-policy-schema.json\npmp.credentialissuance.policy.schema=${mosip.kernel.xsdstorage-uri}data-share-policy-schema.json\npmp.misp.policy.schema=${mosip.kernel.xsdstorage-uri}misp-policy-schema.json\n\npmp.misp.valid.email.address.regex=^[\\\\w-\\\\+]+(\\\\.[\\\\w]+)*@[\\\\w-]+(\\\\.[\\\\w]+)*(\\\\.[a-z]{2,})$\npmp.partner.valid.email.address.regex=^[\\\\w-\\\\+]+(\\\\.[\\\\w]+)*@[\\\\w-]+(\\\\.[\\\\w]+)*(\\\\.[a-z]{2,})$\npmp.partner.partnerId.max.length=36\npmp.partner.mobileNumbe.max.length=16\n\n## Time difference between request creation and request processing\nmasterdata.registerdevice.timestamp.validate=+5\n\n## Keymanager\nmosip.kernel.sign-url=${mosip.kernel.keymanager.url}/v1/keymanager/jwtSign\n## Kernel services\nmosip.kernel.masterdata.audit-url=${mosip.kernel.auditmanager.url}/v1/auditmanager/audits\n\n# ApplicationId for partner\nmosip.pmp.auth.appId =partner\n# Kernel auth client ID for partner management services\nmosip.pmp.auth.clientId=mosip-pms-client\n# Kernel auth secret key for partner management services\nmosip.pmp.auth.secretKey= ${mosip.pms.client.secret}\n# Key manager service API's to upload certificates\npms.cert.service.token.request.clientId=${mosip.pmp.auth.clientId}\npms.cert.service.token.request.issuerUrl=${mosip.kernel.authmanager.url}/v1/authmanager/authenticate/clientidsecretkey\npmp.ca.certificaticate.upload.rest.uri=${mosip.kernel.keymanager.url}/v1/keymanager/uploadCACertificate\npmp.partner.certificaticate.upload.rest.uri=${mosip.kernel.keymanager.url}/v1/keymanager/uploadPartnerCertificate\npmp.partner.certificaticate.get.rest.uri=${mosip.kernel.keymanager.url}/v1/keymanager/getPartnerCertificate/{partnerCertId}\npmp-keymanager.upload.other.domain.cert.rest.uri=${mosip.kernel.keymanager.url}/v1/keymanager/uploadOtherDomainCertificate\n\n#Auth token generation\nmosip.iam.adapter.clientid=${mosip.pmp.auth.clientId}\nmosip.iam.adapter.clientsecret=${mosip.pmp.auth.secretKey}\nmosip.iam.adapter.appid=${mosip.pmp.auth.appId}\n\n# Used to get data share url to publish to websub\npmp.certificaticate.datashare.rest.uri=${mosip.datashare.url}/v1/datashare/create\n# Used for generating the datashare url\npms.certs.datashare.policyId=mpolicy-default-cert\npms.certs.datashare.subscriberId=mpartner-default-cert\n\n## Keycloak\n# These configurations are used to create user in keycloak and map to a role.\n# Pre-Condition: All partner types should be created as roles in keycloak.\n\nmosip.iam.realm.operations.base-url = ${keycloak.internal.url}/auth/admin/realms/{realmId}\nmosip.iam.admin-url =${keycloak.internal.url}/auth/admin/\nmosip.iam.admin-realm-id =admin\nmosip.iam.roles-extn-url =realms/mosip/roles\nmosip.iam.users-extn-url = realms/mosip/users\nmosip.iam.role-user-mapping-url =/{userId}/role-mappings/realm\nmosip.iam.open-id-url =${keycloak.internal.url}/auth/realms/{realmId}/protocol/openid-connect/\nmosip.iam.master.realm-id=master\nmosip.iam.default.realm-id=mosip\nmosip.keycloak.admin.client.id=admin-cli\nmosip.keycloak.admin.user.id=admin\nmosip.keycloak.admin.secret.key=${keycloak.admin.password}\n\n## Auth adapter\nauth.server.validate.url=${mosip.kernel.authmanager.url}/v1/authmanager/authorize/admin/validateToken\nauth.server.admin.validate.url=${mosip.kernel.authmanager.url}/v1/authmanager/authorize/admin/validateToken\nauth.server.admin.allowed.audience=mosip-creser-client,mosip-datsha-client,mosip-ida-client,mosip-regproc-client,mosip-admin-client,mosip-reg-client,mosip-pms-client,mosip-resident-client,mosip-idrepo-client,mosip-deployment-client\nauth.jwt.secret=authjwtsecret\nauth.jwt.base=Mosip-Token\n\nmosip.iam.adapter.issuerURL=${keycloak.internal.url}/auth/realms/mosip\nmosip.authmanager.client-token-endpoint=${mosip.kernel.authmanager.url}/v1/authmanager/authenticate/clientidsecretkey\n# in minutes\nmosip.iam.adapter.validate-expiry-check-rate=15\n# in minutes\nmosip.iam.adapter.renewal-before-expiry-interval=15\n#this should be false if you don't use this restTemplate true if you do\nmosip.iam.adapter.self-token-renewal-enable=true\nmosip.auth.filter_disable=false\n\n#To populate required roles which should be allowed in UI.(Roles are nothing but partner types)\nmosip.pms.ui.required.roles=AUTH_PARTNER,DEVICE_PROVIDER,CREDENTIAL_PARTNER,FTM_PROVIDER,MISP_PARTNER,POLICYMANAGER,PARTNER_ADMIN\n\n# To configure misp partner type\nmosip.pms.misp.partner.type=MISP_Partner\n\n# Roles required for accessing partner\nmosip.pms.required.roles=PARTNER_ADMIN,RESIDENT\n\n## Security\nmosip.security.csrf-enable:false\nmosip.security.secure-cookie:false\n\npartner.search.maximum.rows=10\n\n## Allowed credential types which partner can map against to policy\npmp.allowed.credential.types=auth,qrcode,euin,reprint,vercred,opencrvs\n\n## Allowed partner types who can map policies to credential types\npolicy.credential.type.mapping.allowed.partner.types=Credential_Partner,Online_Verification_Partner,Auth_Partner\n\n## Allowed kyc attributes. Used to display in UI\npolicy.allowed.kyc.attributes = {\"fullName\": \"Full Name\",\"middleName\": \"Middle Name\",\"lastName\": \"Last Name\",\"dateOfBirth\": \"DateOfBirth\",\"gender\": \"Gender\",\"phone\": \"phone\"}\n## Used to display in UI\npolicy.auth.allowed.token.types=random,partner,policy\n\n# IAM\nmosip.iam.module.login_flow.name=authorization_code\nmosip.iam.module.clientID=mosip-pms-client\nmosip.iam.module.clientsecret=${mosip.pms.client.secret}\nmosip.iam.module.redirecturi=${mosip.api.internal.url}/v1/partnermanager/login-redirect/\nmosip.iam.module.login_flow.scope=email\nmosip.iam.module.login_flow.response_type=code\nmosip.iam.authorization_endpoint=${keycloak.external.url}/auth/realms/mosip/protocol/openid-connect/auth\nmosip.iam.module.admin_realm_id=mosip\nmosip.pms.filtervalue.max_columns=5000\nmosip.iam.token_endpoint=${keycloak.internal.url}/auth/realms/mosip/protocol/openid-connect/token\nmosip.iam.certs_endpoint=${keycloak.external.url}/auth/realms/mosip/protocol/openid-connect/certs\n\n## Unused properties. TODO: delete them once they are removed from code\npmp.policy.allowed.authtokens.types=random,partner,policy\nmosip.kernel.device.search-url=${mosip.kernel.masterdata.url}/v1/masterdata/devices/search\ntoken.request.appid=admin\ntoken.request.password=mosip\ntoken.request.username=110005\ntoken.request.version=string\ntoken.request.id=v1\ntoken.request.issuerUrl=${mosip.kernel.authmanager.url}/v1/authmanager/authenticate/clientidsecretkey\ntoken.request.clientId=admin\nPASSWORDBASEDTOKENAPI=${mosip.kernel.authmanager.url}/v1/authmanager/authenticate/useridPwd\napplication.env.local=false\n\n# Notifications\nemailResourse.url=${mosip.kernel.notification.url}/v1/notifier/email/send\nresource.template.url=${mosip.kernel.masterdata.url}/v1/masterdata/templates/{langcode}/{templatetypecode}\nnotifications.sent.before.days = 3\npartner.registration.sub-template = partner-reg-sub-template\npartner.reg.content-template=partner-reg-content-template\npartner.status.sub-template=partner-status-sub-template\npartner.status.content-template=partner-status-content-template\npartner.apikey.status.sub-template=partner-apikey-status-sub-template\napikey.status.content-template=apikey-status-content-template\npms.notifications-schedule.init-delay = 24\npms.notifications-schedule.fixed-rate=24\n\npartner.register.as.user.in.iam.enable=false\n\n## Roles\nmosip.role.pms.postpoliciesgroupnew=PARTNER_ADMIN,POLICYMANAGER\nmosip.role.pms.putpoliciesgrouppolicygroupid=PARTNER_ADMIN,POLICYMANAGER\nmosip.role.pms.postpolicies=PARTNER_ADMIN,POLICYMANAGER\nmosip.role.pms.postpoliciespolicyidgrouppublish=PARTNER_ADMIN,POLICYMANAGER\nmosip.role.pms.putpoliciespolicyid=PARTNER_ADMIN,POLICYMANAGER\nmosip.role.pms.patchpoliciespolicyidgrouppolicygroupid=PARTNER_ADMIN,POLICYMANAGER\nmosip.role.pms.getpolicies=PARTNER_ADMIN,POLICYMANAGER\nmosip.role.pms.getpoliciespolicyid=PARTNER_ADMIN,POLICYMANAGER\nmosip.role.pms.getpoliciesapikey=PARTNER_ADMIN,POLICYMANAGER\nmosip.role.pms.getpoliciespolicyidpartnerpartnerid=PARTNER_ADMIN,POLICYMANAGER\nmosip.role.pms.getpoliciesgrouppolicygroupid=PARTNER_ADMIN,POLICYMANAGER\nmosip.role.pms.getpoliciesgroupall=PARTNER_ADMIN,POLICYMANAGER\nmosip.role.pms.postpoliciesgroupsearch=PARTNER_ADMIN,AUTH_PARTNER,CREDENTIAL_PARTNER,PARTNER_ADMIN,POLICYMANAGER\nmosip.role.pms.postpoliciessearch=PARTNER_ADMIN,POLICYMANAGER\nmosip.role.pms.getpoliciesconfigkey=PARTNER_ADMIN,POLICYMANAGER\nmosip.role.pms.postpoliciesgroupfiltervalues=PARTNER_ADMIN,PARTNER,AUTH_PARTNER,CREDENTIAL_PARTNER,POLICYMANAGER,PARTNER,ABIS_PARTNER,FTM_PROVIDER,ONLINE_VERIFICATION_PARTNER,MANUAL_ADJUDICATION\nmosip.role.pms.postpoliciesfiltervalues=PARTNER_ADMIN,PARTNER,AUTH_PARTNER,CREDENTIAL_PARTNER,POLICYMANAGER,PARTNER\nmosip.role.pms.getactivegroupgroupname=AUTH_PARTNER,CREDENTIAL_PARTNER,PARTNER_ADMIN,ONLINE_VERIFICATION_PARTNER,ABIS_PARTNER,MANUAL_ADJUDICATION,POLICYMANAGER\nmosip.role.pms.postdevicedetail=PARTNER_ADMIN,DEVICE_PROVIDER,FTM_PROVIDER\nmosip.role.pms.putdevicedetail=PARTNER_ADMIN,DEVICE_PROVIDER,FTM_PROVIDER\nmosip.role.pms.patchdevicedetail=PARTNER_ADMIN\nmosip.role.pms.postdevicedetailsearch=PARTNER_ADMIN,DEVICE_PROVIDER,FTM_PROVIDER\nmosip.role.pms.postdevicedetaildevicetypesearch=PARTNER_ADMIN,DEVICE_PROVIDER,FTM_PROVIDER\nmosip.role.pms.postdevicedetailfiltervalues=PARTNER_ADMIN,DEVICE_PROVIDER,FTM_PROVIDER\nmosip.role.pms.postdevicedetaildevicetypefiltervalues=PARTNER_ADMIN,DEVICE_PROVIDER,FTM_PROVIDER\nmosip.role.pms.postdevicedetaildevicesubtypefiltervalues=PARTNER_ADMIN,DEVICE_PROVIDER,FTM_PROVIDER\nmosip.role.pms.postftpchipdetail=PARTNER_ADMIN,FTM_PROVIDER\nmosip.role.pms.putftpchipdetail=PARTNER_ADMIN,FTM_PROVIDER\nmosip.role.pms.patchftpchipdetail=PARTNER_ADMIN\nmosip.role.pms.postftpchipdetailuploadcertificate=PARTNER_ADMIN,FTM_PROVIDER\nmosip.role.pms.getftpchipdetailgetpartnercertificate=PARTNER_ADMIN,FTM_PROVIDER\nmosip.role.pms.postftpchipdetailsearch=PARTNER_ADMIN,FTM_PROVIDER\nmosip.role.pms.postsecurebiometricinterface=PARTNER_ADMIN,DEVICE_PROVIDER,FTM_PROVIDER\nmosip.role.pms.putsecurebiometricinterface=PARTNER_ADMIN,DEVICE_PROVIDER,FTM_PROVIDER\nmosip.role.pms.patchsecurebiometricinterface=PARTNER_ADMIN\nmosip.role.pms.postsecurebiometricinterfacesearch=PARTNER_ADMIN,DEVICE_PROVIDER,FTM_PROVIDER\nmosip.role.pms.putsecurebiometricinterfacedevicedetailsmap=PARTNER_ADMIN,DEVICE_PROVIDER,FTM_PROVIDER\nmosip.role.pms.putsecurebiometricinterfacedevicedetailsmapremove=PARTNER_ADMIN,DEVICE_PROVIDER,FTM_PROVIDER\nmosip.role.pms.postsecurebiometricinterfacedevicedetailsmapsearch=PARTNER_ADMIN,DEVICE_PROVIDER,FTM_PROVIDER\nmosip.role.pms.postsecurebiometricinterfacefiltervalues=PARTNER_ADMIN,DEVICE_PROVIDER,FTM_PROVIDER\nmosip.role.pms.postpartnersbioextractors=PARTNER,CREDENTIAL_PARTNER,PARTNER_ADMIN,CREDENTIAL_ISSUANCE,CREATE_SHARE,ONLINE_VERIFICATION_PARTNER\nmosip.role.pms.getpartnersbioextractors=PARTNER,CREDENTIAL_PARTNER,PARTNER_ADMIN,CREDENTIAL_ISSUANCE,CREATE_SHARE,ONLINE_VERIFICATION_PARTNER\nmosip.role.pms.postpartnerscredentialtypepolicies=PARTNER,CREDENTIAL_PARTNER,PARTNER_ADMIN,CREDENTIAL_ISSUANCE,CREATE_SHARE,ONLINE_VERIFICATION_PARTNER\nmosip.role.pms.getpartnerscredentialtypepolicies=PARTNER,CREDENTIAL_PARTNER,PARTNER_ADMIN,CREDENTIAL_ISSUANCE,CREATE_SHARE,ONLINE_VERIFICATION_PARTNER\nmosip.role.pms.postpartnerscontactadd=PARTNER,AUTH_PARTNER,CREDENTIAL_PARTNER,PARTNER_ADMIN,ONLINE_VERIFICATION_PARTNER,DEVICE_PROVIDER,FTM_PROVIDER,ABIS_PARTNER,MANUAL_ADJUDICATION,MISP_PARTNER\nmosip.role.pms.putpartners=PARTNER,AUTH_PARTNER,CREDENTIAL_PARTNER,PARTNER_ADMIN,ONLINE_VERIFICATION_PARTNER,DEVICE_PROVIDER,FTM_PROVIDER,ABIS_PARTNER,MANUAL_ADJUDICATION,MISP_PARTNER\nmosip.role.pms.putpartnersnew=PARTNER,AUTH_PARTNER,CREDENTIAL_PARTNER,PARTNER_ADMIN,ONLINE_VERIFICATION_PARTNER,DEVICE_PROVIDER,FTM_PROVIDER,ABIS_PARTNER,MANUAL_ADJUDICATION,MISP_PARTNER\nmosip.role.pms.getpartnerspartnerid=PARTNER,AUTH_PARTNER,CREDENTIAL_PARTNER,RESIDENT,PARTNER_ADMIN,ONLINE_VERIFICATION_PARTNER,DEVICE_PROVIDER,FTM_PROVIDER,ABIS_PARTNER,SDK_PARTNER,MANUAL_ADJUDICATION,MISP_PARTNER,RESIDENT\nmosip.role.pms.getpartnersapikeyrequest=PARTNER,AUTH_PARTNER,ABIS_PARTNER,CREDENTIAL_PARTNER,PARTNER_ADMIN,ONLINE_VERIFICATION_PARTNER\nmosip.role.pms.postpartnerscacertificateupload=PARTNERMANAGER,PARTNER_ADMIN\nmosip.role.pms.postpartnerscertificateupload=PARTNER,PMS_USER,AUTH_PARTNER,ABIS_PARTNER,SDK_PARTNER,DEVICE_PROVIDER,FTM_PROVIDER,CREDENTIAL_PARTNER,CREDENTIAL_ISSUANCE,ID_AUTHENTICATION,PARTNER_ADMIN,ONLINE_VERIFICATION_PARTNER\nmosip.role.pms.getpartnerscertificate=PARTNER,PMS_USER,AUTH_PARTNER,ABIS_PARTNER,SDK_PARTNER,DEVICE_PROVIDER,FTM_PROVIDER,CREDENTIAL_PARTNER,CREDENTIAL_ISSUANCE,CREATE_SHARE,ID_AUTHENTICATION,PARTNER_ADMIN,ONLINE_VERIFICATION_PARTNER\nmosip.role.pms.postpartnerssearch=PARTNER,PMS_USER,AUTH_PARTNER,ABIS_PARTNER,SDK_PARTNER,DEVICE_PROVIDER,FTM_PROVIDER,PARTNER_ADMIN,CREDENTIAL_PARTNER,ONLINE_VERIFICATION_PARTNER\nmosip.role.pms.postpartnerspartnertypesearch=PARTNER,PMS_USER,AUTH_PARTNER,DEVICE_PROVIDER,FTM_PROVIDER,PARTNER_ADMIN,CREDENTIAL_PARTNER,ONLINE_VERIFICATION_PARTNER\nmosip.role.pms.postpartnersfiltervalues=PARTNER,PMS_USER,AUTH_PARTNER,DEVICE_PROVIDER,FTM_PROVIDER,CREDENTIAL_PARTNER,PARTNER_ADMIN,ONLINE_VERIFICATION_PARTNER,ABIS_PARTNER\nmosip.role.pms.postpartnersapikeyrequestfiltervalues=PARTNER,PARTNER_ADMIN,AUTH_PARTNER,CREDENTIAL_PARTNER,ONLINE_VERIFICATION_PARTNER,ABIS_PARTNER\nmosip.role.pms.postpartnersapikeyrequestsearch=PARTNER,PMS_USER,AUTH_PARTNER,ABIS_PARTNER,CREDENTIAL_PARTNER,PARTNER_ADMIN,ONLINE_VERIFICATION_PARTNER\nmosip.role.pms.postpartnersapikeysearch=PARTNER,PMS_USER,AUTH_PARTNER,ABIS_PARTNER,CREDENTIAL_PARTNER,PARTNER_ADMIN,ONLINE_VERIFICATION_PARTNER\nmosip.role.pms.putpartnerspolicygroup=PARTNER,PMS_USER,AUTH_PARTNER,CREDENTIAL_PARTNER,PARTNER_ADMIN,ONLINE_VERIFICATION_PARTNER\nmosip.role.pms.postpartnerspolicymap=AUTH_PARTNER,ABIS_PARTNER,CREDENTIAL_PARTNER,CREDENTIAL_ISSUANCE,ONLINE_VERIFICATION_PARTNER,PARTNER_ADMIN\nmosip.role.pms.patchpartnersgenerateapikey=AUTH_PARTNER,ABIS_PARTNER,CREDENTIAL_PARTNER,CREDENTIAL_ISSUANCE,ONLINE_VERIFICATION_PARTNER\nmosip.role.pms.putpartnersapikeypolicies=PARTNERMANAGER,PARTNER_ADMIN\nmosip.role.pms.patchpartners=PARTNERMANAGER,PARTNER_ADMIN\nmosip.role.pms.getpartners=PARTNERMANAGER,PARTNER_ADMIN,partnermanager,ID_AUTHENTICATION,REGISTRATION_PROCESSOR,RESIDENT,CREDENTIAL_ISSUANCE,ID_REPOSITORY\nmosip.role.pms.getpartnersnew=PARTNERMANAGER,PARTNER_ADMIN,partnermanager,ID_AUTHENTICATION,REGISTRATION_PROCESSOR,RESIDENT,CREDENTIAL_ISSUANCE,ID_REPOSITORY\nmosip.role.pms.getpartnersapikey=PARTNERMANAGER,PARTNER_ADMIN\nmosip.role.pms.putpartnerspolicymapping=PARTNERMANAGER,PARTNER_ADMIN\nmosip.role.pms.patchpartnerspolicyapikeystatus=PARTNERMANAGER,PARTNER_ADMIN,AUTH_PARTNER,CREDENTIAL_PARTNER,CREDENTIAL_ISSUANCE,ONLINE_VERIFICATION_PARTNER\nmosip.role.pms.postmisplicense=MISP_PARTNER,MISP,PARTNERMANAGER,PARTNER_ADMIN\nmosip.role.pms.putmisplicense=MISP_PARTNER,MISP,PARTNERMANAGER,PARTNER_ADMIN\nmosip.role.pms.getmisplicense=MISP_PARTNER,MISP,PARTNERMANAGER,PARTNER_ADMIN\nmosip.role.pms.getmisplicensekey=PARTNERMANAGER,PARTNER_ADMIN\nmosip.role.pms.postmispfiltervalues=MISP_PARTNER,MISP,PARTNERMANAGER,PARTNER_ADMIN\nmosip.role.pms.postmispsearch=MISP_PARTNER,MISP,PARTNERMANAGER,PARTNER_ADMIN\n\n\n# query param usd to refer url to redirect after logout\nmosip.iam.post-logout-uri-param-key=post_logout_redirect_uri\n# end session endpoint in OIDC\nmosip.iam.end-session-endpoint-path=/protocol/openid-connect/logout\n\n# esignet claims mapping file url\nmosip.pms.esignet.claims-mapping-file-url=${spring_config_url_env}/application/${active_profile_env}/${spring_config_label_env}/identity-mapping.json\n# esignet amr-acr mapping file url\nmosip.pms.esignet.amr-acr-mapping-file-url=${spring_config_url_env}/application/${active_profile_env}/${spring_config_label_env}/amr-acr-mapping.json\n## esignet Service apis for create and update\nmosip.pms.esignet.oidc-client-create-url=${mosip.esignet.service.url}/v1/esignet/client-mgmt/oidc-client\nmosip.pms.esignet.oidc-client-update-url=${mosip.esignet.service.url}/v1/esignet/client-mgmt/oidc-client\n\n#Esignet OAuth Client apis for create and update\nmosip.pms.esignet.oauth-client-create-url=${mosip.esignet.service.url}/v1/esignet/client-mgmt/oauth-client\nmosip.pms.esignet.oauth-client-update-url=${mosip.esignet.service.url}/v1/esignet/client-mgmt/oauth-client\n\n## esignet Service api to fetch the OIDC Client configurations\nmosip.pms.esignet.config-url=${mosip.esignet.service.url}/v1/esignet/oidc/.well-known/openid-configuration\n\n## START - Properties added for PMS 1.2.2.2 (PMS Revamp release)\n\n## Key Manager REST API endpoints\n# Endpoint to retrieve a CA-signed partner certificate.\npmp.partner.original.certificate.get.rest.uri=${mosip.kernel.keymanager.url}/v1/keymanager/getPartnerSignedCertificate/{partnerCertId}\n# Endpoint to retrieve CA and Sub-CA certificates.\npmp.trust.certificates.post.rest.uri=${mosip.kernel.keymanager.url}/v1/keymanager/getCaCertificates\n# Endpoint to retrieve the full trust chain of a certificate.\npmp.download.trust.certificates.get.rest.uri=${mosip.kernel.keymanager.url}/v1/keymanager/getCACertificateTrustPath/{caCertId}\n\n## Role-based access control configurations for PMS endpoints\nmosip.role.pms.getpartnercertificates=AUTH_PARTNER,ABIS_PARTNER,SDK_PARTNER,DEVICE_PROVIDER,FTM_PROVIDER,CREDENTIAL_PARTNER,PARTNER_ADMIN,ONLINE_VERIFICATION_PARTNER\nmosip.role.pms.userconsent=AUTH_PARTNER,ABIS_PARTNER,SDK_PARTNER,DEVICE_PROVIDER,FTM_PROVIDER,CREDENTIAL_PARTNER,PARTNER_ADMIN,ONLINE_VERIFICATION_PARTNER,POLICYMANAGER\nmosip.role.pms.getsbidetails=DEVICE_PROVIDER,PARTNER_ADMIN\nmosip.role.pms.postadddevicetosbi=DEVICE_PROVIDER,PARTNER_ADMIN\nmosip.role.pms.postdevicewithsbimapping=PARTNER_ADMIN\nmosip.role.pms.patchdeactivatedevice=DEVICE_PROVIDER,PARTNER_ADMIN\nmosip.role.pms.patchdeactivatesbi=DEVICE_PROVIDER,PARTNER_ADMIN\nmosip.role.pms.getftmchipdetails=FTM_PROVIDER,PARTNER_ADMIN\nmosip.role.pms.patchdeactivateftm=FTM_PROVIDER,PARTNER_ADMIN\nmosip.role.pms.getoriginalftmcertificate=FTM_PROVIDER,PARTNER_ADMIN\nmosip.role.pms.getpartnerdetails=PARTNER_ADMIN\nmosip.role.pms.getadminpartners=PARTNER_ADMIN\nmosip.role.pms.getallpartnerpolicymappingrequests=PARTNER_ADMIN,AUTH_PARTNER,ABIS_PARTNER,SDK_PARTNER,CREDENTIAL_PARTNER,PARTNER_ADMIN,ONLINE_VERIFICATION_PARTNER\nmosip.role.pms.getoauthpartnersclients=PARTNER_ADMIN,AUTH_PARTNER\nmosip.role.pms.getpartnersapikeyrequests=PARTNER_ADMIN,AUTH_PARTNER\nmosip.role.pms.getpartnersftmchipdetails=PARTNER_ADMIN\nmosip.role.pms.getallsbidetails=PARTNER_ADMIN,DEVICE_PROVIDER\nmosip.role.pms.getalldevicedetails=PARTNER_ADMIN\nmosip.role.pms.gettrustcertificates=PARTNER_ADMIN\nmosip.role.pms.getdownloadtrustcertificates=PARTNER_ADMIN\nmosip.role.pms.getpartnersv3=DEVICE_PROVIDER,FTM_PROVIDER,PARTNER_ADMIN,AUTH_PARTNER,ABIS_PARTNER,SDK_PARTNER,CREDENTIAL_PARTNER,PARTNER_ADMIN,ONLINE_VERIFICATION_PARTNER\n\n## OIDC Client configuration attributes for create and update operations\nmosip.pms.oidc.clients.grantTypes=authorization_code\nmosip.pms.oidc.clients.clientAuthMethods=private_key_jwt\n\n## SSO user session inactivity timeout in minutes (user gets automatically logged out after this period)\nmosip.pms.session.inactivity.timer=25\n## Session reactivation grace period in minutes (time window for user to become active after inactivity timeout)\nmosip.pms.session.inactivity.prompt.timer=5\n## Axios HTTP client timeout in minutes (maximum time to wait for server response before aborting request)\nmosip.pms.axios.timeout=3\n## Maximum number of items to be displayed per page in pagination\nmosip.pms.pagination.items.per.page=8\n\n## SBI properties\n## Maximum number of years allowed for SBI expiry date\nmosip.pms.expiry.date.max.year=10\n## Maximum number of years allowed for SBI created date\nmosip.pms.created.date.max.year=10\n\n## Feature flags to indicate availability of various MOSIP platform endpoints\n# Indicates whether the endpoint to retrieve CA signed partner certificate is available in MOSIP platform\nmosip.pms.ca.signed.partner.certificate.available=true\n# Indicates whether the OIDC client endpoint is available in MOSIP platform\nmosip.pms.oidc.client.available=true\n# Indicates whether the endpoint to retrieve root (CA) and intermediate (Sub-CA) certificates is available in the MOSIP platform.\nmosip.pms.root.and.intermediate.certificates.available=true\n\n## API IDs for PMS endpoints\nmosip.pms.api.id.oauth.clients.get=mosip.pms.oauth.clients.get\nmosip.pms.api.id.partner.certificates.get=mosip.pms.partner.certificates.get\nmosip.pms.api.id.approved.partner.ids.with.policy.groups.get=mosip.pms.approved.partner.ids.with.policy.groups.get\nmosip.pms.api.id.configs.get=mosip.pms.configs.get\nmosip.pms.api.id.auth.partner.api.keys.get=mosip.pms.auth.partner.api.keys.get\nmosip.pms.api.id.user.consent.get=mosip.pms.user.consent.get\nmosip.pms.api.id.user.consent.post=mosip.pms.user.consent.post\nmosip.pms.api.id.original.partner.certificate.get=mosip.pms.original.partner.certificate.get\nmosip.pms.api.id.sbi.details.get=mosip.pms.sbi.details.get\nmosip.pms.api.id.approved.device.provider.ids.get=mosip.pms.approved.device.provider.ids.get\nmosip.pms.api.id.sbi.devices.get=mosip.pms.sbi.devices.get\nmosip.pms.api.id.add.device.to.sbi.id.post=mosip.pms.add.device.to.sbi.id.post\nmosip.pms.api.id.approval.mapping.device.to.sbi.post=mosip.pms.approval.mapping.device.to.sbi.post\nmosip.pms.api.id.deactivate.device.patch=mosip.pms.deactivate.device.patch\nmosip.pms.api.id.deactivate.sbi.patch=mosip.pms.deactivate.sbi.patch\nmosip.pms.api.id.ftm.chip.details.get=mosip.pms.ftm.chip.details.get\nmosip.pms.api.id.approved.ftm.provider.ids.get=mosip.pms.approved.ftm.provider.ids.get\nmosip.pms.api.id.deactivate.ftm.patch=mosip.pms.deactivate.ftm.patch\nmosip.pms.api.id.original.ftm.certificate.get=mosip.pms.original.ftm.certificate.get\nmosip.pms.api.id.partner.details.get=mosip.pms.partner.details.get\nmosip.pms.api.id.admin.partners.get=mosip.pms.admin.partners.get\nmosip.pms.api.id.all.partner.policy.mapping.requests.get=mosip.pms.all.partner.policy.mapping.requests.get\nmosip.pms.api.id.oauth.partners.clients.get=mosip.pms.oauth.partners.clients.get\nmosip.pms.api.id.all.api.key.requests.get=mosip.pms.all.api.key.requests.get\nmosip.pms.api.id.partners.ftm.chip.details.get=mosip.pms.partners.ftm.chip.details.get\nmosip.pms.api.id.all.sbi.details.get=mosip.pms.all.sbi.details.get\nmosip.pms.api.id.get.all.device.details.get=mosip.pms.get.all.device.details.get\nmosip.pms.api.id.trust.certificates.get=mosip.pms.trust.certificates.get\nmosip.pms.api.id.download.trust.certificates.get=mosip.pms.download.trust.certificates.get\nmosip.pms.api.id.partners.v3.get=mosip.pms.partners.v3.get\n## END - Properties added for PMS 1.2.2.2 (PMS Revamp release)" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/mosip-config/blob/master/pms-migration-utility-default.properties", + "title": "pms-migration-utility-default.properties", + "repo": "mosip/mosip-config", + "file_path": "pms-migration-utility-default.properties", + "language": "properties", + "content": "## Follow properites have their values assigned via 'overrides' environment variables of config server docker.\n## DO NOT define these in any of the property files. They must be passed as env variables. Refer to config-server\n## helm chart:\n## keycloak.external.url\n## db.dbuser.password \n## mosip.pms.client.secret\n## keycloak.internal.url\n## keycloak.admin.password\n## mosip.api.public.url\n##mosip.api.internal.host\n\nmosip.api.internal.url=https://${mosip.api.internal.host}\nmosip.kernel.keymanager.url=http://keymanager.keymanager\nmosip.datashare.url=http://datashare.datashare\nmosip.kernel.authmanager.url=http://authmanager.kernel\n\nspring.main.allow-circular-references=true\nservice.token.request.clientId=mosip-pms-client\nservice.token.request.issuerUrl=${mosip.kernel.authmanager.url}/v1/authmanager/authenticate/clientidsecretkey\n\n## allowed values for mosip.pms.utility.run.mode are 'upgrade' for migration and 'cronjob' for running it as cronjob. \nmosip.pms.utility.run.mode=upgrade\n\nmosip.pms.allowed.partner.types=Online_Verification_Partner,Auth_Partner,Device_Provider,MISP_Partner,FTM_Partner\n\nmosip.pms.appId=partner\nmosip.pms.clientId=mosip-pms-client\nmosip.pms.secretKey=${mosip.pms.client.secret}\n\n#Auth token generation\nmosip.iam.adapter.clientid=${mosip.pms.clientId}\nmosip.iam.adapter.clientsecret=${mosip.pms.secretKey}\nmosip.iam.adapter.appid=${mosip.pms.appId}\n\npmp.certificate.get.rest.uri=${mosip.kernel.keymanager.url}/v1/keymanager/getCertificate\npmp.partner.certificate.get.rest.uri=${mosip.kernel.keymanager.url}/v1/keymanager/getPartnerCertificate/{partnerCertId}\n\n## Database\n## Database hostname below is assuming postgres is running inside cluster in 'postgres' namespace\n## If database is external to production, provide the DNS or ip of the host and port \nmosip.pmp.database.hostname=${mosip.database.hostname.override:postgres-postgresql.postgres}\nmosip.pmp.database.port=${mosip.database.port.override:5432}\nmosip.pmp.database.user=pmsuser\nmosip.pmp.database.password=${db.dbuser.password}\n\n## Hibernate\njavax.persistence.jdbc.driverClassName=org.postgresql.Driver\njavax.persistence.jdbc.driver=org.postgresql.Driver\njavax.persistence.jdbc.url=jdbc:postgresql://${mosip.pmp.database.hostname}:${mosip.pmp.database.port}/mosip_pms\njavax.persistence.jdbc.user=${mosip.pmp.database.user}\njavax.persistence.jdbc.username=${mosip.pmp.database.user}\njavax.persistence.jdbc.password=${mosip.pmp.database.password}\njavax.persistence.jdbc.schema = pms\njavax.persistence.jdbc.uinHashTable=uin_hash_salt\njavax.persistence.jdbc.uinEncryptTable=uin_encrypt_salt\n\n\nhibernate.dialect=org.hibernate.dialect.PostgreSQL95Dialect\nhibernate.jdbc.lob.non_contextual_creation=true\nhibernate.hbm2ddl.auto=none\nhibernate.show_sql=false\nhibernate.format_sql=false\nhibernate.connection.charSet=utf8\nhibernate.cache.use_second_level_cache=false\nhibernate.cache.use_query_cache=false\nhibernate.cache.use_structured_entries=false\nhibernate.generate_statistics=false\nspring.datasource.initialization-mode=never\n\n# websub related properties\nmosip.websub.url=http://websub.websub\nwebsub.publish.url=${mosip.websub.url}/hub/\nmosip.auth.filter_disable=false\n\n# Used for generating the datashare url\npms.certs.datashare.policyId=mpolicy-default-cert\npms.certs.datashare.subscriberId=mpartner-default-cert\n\n# Used to get data share url to publish to websub\npmp.certificaticate.datashare.rest.uri=${mosip.datashare.url}/v1/datashare/create\n\nmosip.kernel.auth.appids.realm.map={prereg:'preregistration',ida:'mosip',registrationclient:'mosip',regproc:'mosip',partner:'mosip',resident:'mosip',admin:'mosip',crereq:'mosip',creser:'mosip',datsha:'mosip'}\n\n## Auth adapter\nauth.server.validate.url=${mosip.kernel.authmanager.url}/v1/authmanager/authorize/admin/validateToken\nauth.server.admin.issuer.uri=${keycloak.external.url}/auth/realms/\nauth.server.admin.validate.url=${mosip.kernel.authmanager.url}/v1/authmanager/authorize/admin/validateToken\nauth.server.admin.allowed.audience=mosip-creser-client,mosip-datsha-client,mosip-ida-client,mosip-regproc-client,mosip-admin-client,mosip-reg-client,mosip-pms-client,mosip-resident-client,mosip-idrepo-client,mosip-partner-client,mosip-deployment-client\nauth.jwt.secret=authjwtsecret\nauth.jwt.base=Mosip-Token\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/mosip-config/blob/master/pre-registration-default.properties", + "title": "pre-registration-default.properties", + "repo": "mosip/mosip-config", + "file_path": "pre-registration-default.properties", + "language": "properties", + "content": "# Follow properites have their values assigned via 'overrides' environment variables of config server docker.\n# DO NOT define these in any of the property files. They must be passed as env variables. Refer to config-server\n# helm chart:\n# db.dbuser.password \n# mosip.prereg.client.secret\n# prereg.captcha.site.key\n# prereg.captcha.secret.key\n# keycloak.internal.host\n# keycloak.internal.url\n# s3.accesskey \n# s3.region\n# s3.secretkey\n\n## Database properties\n# Database hostname below is assuming postgres is running inside cluster in 'postgres' namespace\n# If database is external to production, provide the DNS or ip of the host and port \njavax.persistence.jdbc.driver=org.postgresql.Driver\nmosip.database.ip=${mosip.database.hostname.override:postgres-postgresql.postgres}\nmosip.database.port=${mosip.database.port.override:5432}\njavax.persistence.jdbc.url=jdbc:postgresql://${mosip.database.ip}:${mosip.database.port}/mosip_prereg?useSSL=false\njavax.persistence.jdbc.user=prereguser\njavax.persistence.jdbc.password=${db.dbuser.password}\n\n## Hibernate\nhibernate.hbm2ddl.auto=none\nhibernate.show_sql=false\nhibernate.dialect=org.hibernate.dialect.PostgreSQLDialect\nhibernate.jdbc.lob.non_contextual_creation=true\n\nlogging.level.com.zaxxer.hikari=INFO\n\n## Project Version for the API response \nversion=1.0\n\n## Age to be an adult\n## Used in UI to identify the applicant type \nmosip.adult.age=${mosip.kernel.applicant.type.age.limit}\n\n## ID Schema \n## This version is set in the ID object created in pre-registration\nmosip.idschema.version=0.1\n\nmosip.prereg.application.url=http://prereg-application.prereg\n\n## Demographic Service \ndemographic.service.version=v1\ndemographic.service.env=${mosip.prereg.application.url}\ndemographic.service.contextpath=preregistration/${demographic.service.version}\ndemographic.resource.url=${demographic.service.env}/${demographic.service.contextpath}\n# ID values for application APIs\nmosip.preregistration.demographic.create.id=mosip.pre-registration.demographic.create\nmosip.preregistration.demographic.update.id=mosip.pre-registration.demographic.update\nmosip.preregistration.demographic.update.status.id=mosip.pre-registration.demographic.status.update\nmosip.preregistration.demographic.retrieve.basic.id=mosip.pre-registration.demographic.retrieve.basic\nmosip.preregistration.demographic.retrieve.details.id=mosip.pre-registration.demographic.retrieve.details\nmosip.preregistration.demographic.retrieve.status.id=mosip.pre-registration.demographic.retrieve.status\nmosip.preregistration.demographic.retrieve.date.id=mosip.pre-registration.demographic.retrieve.date\nmosip.preregistration.demographic.delete.id=mosip.pre-registration.demographic.delete\n\nmosip.preregistration.demographic.id.create=mosip.pre-registration.demographic.create\nmosip.preregistration.demographic.id.update=mosip.pre-registration.demographic.update\nmosip.preregistration.demographic.id.retrieve.date=mosip.pre-registration.demographic.retrieve.date\nmosip.id.preregistration.demographic.create=mosip.pre-registration.demographic.create\nmosip.id.preregistration.demographic.update=mosip.pre-registration.demographic.update\nmosip.id.preregistration.demographic.retrieve.date=mosip.pre-registration.demographic.retrieve.date\n\nmosip.id.preregistration.lostuin.create=mosip.pre-registration.lostuin.create\nmosip.id.preregistration.lostuin.delete=mosip.pre-registration.lostuin.delete\nmosip.id.preregistration.updateregistration.create=mosip.pre-registration.updateregistration.create\nmosip.id.preregistration.updateregistration.delete=mosip.pre-registration.updateregistration.delete\n\n## Document Service\ndocument.service.version=v1\ndocument.service.env=${mosip.prereg.application.url}\ndocument.service.contextpath=preregistration/${document.service.version}\ndocument.resource.url=${document.service.env}/${document.service.contextpath}\n\n## ID values for document APIs\nmosip.preregistration.document.upload.id=mosip.pre-registration.document.upload\nmosip.preregistration.document.copy.id=mosip.pre-registration.document.copy\nmosip.preregistration.document.fetch.metadata.id=mosip.pre-registration.document.fetch.metadata\nmosip.preregistration.document.fetch.content.id=mosip.pre-registration.document.fetch.content\nmosip.preregistration.document.delete.id=mosip.pre-registration.document.delete\nmosip.preregistration.document.delete.specific.id=mosip.pre-registration.document.delete.specific\nmosip.preregistration.document.id.upload=mosip.pre-registration.document.upload\nmosip.preregistration.document.update.docrefId.id=mosip.preregistration.docrefId.update\n\n## Document properties\n# Maximum size of file allowed uploaded in document service API (in mb)\nmax.file.size=2\n\n# Allowed formats for documents\npreregistration.document.extention=PDF,JPEG,PNG,JPG\n\n## Virus scanner \n## 'true/false' to enable/disable virus scaning during document upload\nmosip.preregistration.document.scan=true\n\n## To store documents\nmosip.kernel.objectstore.account-name=prereg\n\n## Booking Service\nbooking.service.version=v1\n\nmosip.prereg.booking.url=http://prereg-booking.prereg\nbooking.service.env=${mosip.prereg.booking.url}\nbooking.service.contextpath=preregistration/${booking.service.version}\nbooking.resource.url=${booking.service.env}/${booking.service.contextpath}\nappointmentResourse.url=${booking.resource.url}\nmosip.preregistration.booking.availability.sync.id=mosip.pre-registration.appointment.availability.sync\nmosip.preregistration.booking.book.id=mosip.pre-registration.booking.book\nmosip.preregistration.booking.fetch.booking.id=mosip.pre-registration.appointment.fetch\nmosip.preregistration.booking.cancel.id=mosip.pre-registration.appointment.cancel\nmosip.preregistration.booking.delete.id=mosip.preregistration.booking.delete\nmosip.preregistration.booking.fetch.availability.id=mosip.pre-registration.appointment.availability\nmosip.preregistration.booking.fetchPreidByDate.id=mosip.pre-registration.appointment.ids\nmosip.preregistration.booking.availability.increase.id=mosip.preregistration.booking.availability.increase\nmosip.preregistration.booking.availability.check.id=mosip.preregistration.booking.availability.check\nmosip.preregistration.booking.delete.old.id=mosip.preregistration.booking.delete.old\nmosip.preregistration.booking.exception.id=mosip.preregistration.booking.parse.exception\nmosip.preregistration.booking.id.book=mosip.pre-registration.booking.book\n\n# Sync\nmosip.preregistration.sync.sign.appid=KERNEL\nmosip.preregistration.sync.sign.refid=SIGN\n\n## Booking \n## Sync every n days \npreregistration.availability.sync=30\n## Number of days for which booking slots will be available. Should be lesser than or equal to preregistration.availability.sync days. \npreregistration.availability.noOfDays=140\n## Gap between the date of booking and the first appointment date to be shown\n## Ex: If a user has logged in pre-reg application today then, he can select booking slots after n days\npreregistration.booking.offset=2\n## Number of hours from the appointment time before which an appicant can change/re-book the appointment\npreregistration.timespan.rebook=0\n## Number of hours before the appointment time before which an applicant can cancel an appointment \npreregistration.timespan.cancel=0\n\n## Time Zone \n# Not used anymore. \n# preregistration.country.specific.zoneId=GMT+05:30\n\n## Batch job service\nbatch.service.version=v1\nbatch.service.env=http://prereg-batchjob.prereg\nbatch.service.contextpath=preregistration/${batch.service.version}/batch\nbatch.resource.url=${batch.service.env}/${batch.service.contextpath}\n## Id values of batch job service\nmosip.preregistration.batchjob.service.consumed.id=mosip.pre-registration.batchjob.service.consumed\nmosip.preregistration.batchjob.service.expired.id=mosip.pre-registration.batchjob.service.expired\n\n# Batch Job Service used to fetch token from key cloak\nmosip.batch.token.authmanager.appId=prereg\nmosip.batch.token.authmanager.userName=mosip-prereg-client\nmosip.batch.token.authmanager.password=${mosip.prereg.client.secret}\nmosip.batch.token.authmanager.url=${kernel.auth.env}/${masterdata.service.version}/${kernel.auth.contextpath}/authenticate/clientidsecretkey\nmosip.batch.token.request.id=\n\n## Determines the Time of the day, batch job should be intiated\npreregistration.job.schedule.cron.consumedStatusJob=0 0 0 * * ?\npreregistration.job.schedule.cron.slotavailability=0 0 0 * * ?\npreregistration.job.schedule.cron.expiredStatusJob=0 0 0 * * ?\npreregistration.job.schedule.cron.updateApplicationsBookingJob=0 0 * ? * *\npreregistration.job.schedule.cron.purgeExpiredRegCenterSlots=0 0 0 * * ?\n\n# Map to decide code for days of the week. Used by BatchJob\nmosip.kernel.masterdata.day.codes.map={SUNDAY:'101', MONDAY:'102', TUESDAY:'103', WEDNESDAY:'104', THURSDAY:'105', FRIDAY:'106', SATURDAY:'107'}\n\n## Schema name for batch job table\nspring.batch.tablePrefix=PREREG.BATCH_\n## Booking service URL for creating time slots\nbookingAvailablity.url=${booking.resource.url}/appointment/availability/sync\n##BatchJob-service URL for updating the consumed status\nupdateConsumedStatus.url=${batch.resource.url}/consumedStatus\n#BatchJob-service URL for updating to expiredStatus\nexpiredStatus.url=${batch.resource.url}/expiredStatus\nbatch.appointment.cancel=${mosip.prereg.application.url}/preregistration/v1/internal/applications/appointment/{preRegistrationId}\n\n## Login service\nmosip.pre.reg.clientId=mosip.pre.reg.clientId\nid-masterdata-template-service-multilang.rest.uri=${mosip.kernel.masterdata.url}/v1/masterdata/templates/{langcode}/{templatetypecode}\n\n## Masterdata service\n## Base url is only used for masterdata. We give the in-cluster url here\nmosip.base.url=${mosip.kernel.masterdata.url}\nmasterdata.service.version=v1\nmasterdata.service.env=${mosip.kernel.masterdata.url}\nmasterdata.service.contextpath=masterdata\nmasterdata.resource.url=${masterdata.service.env}/${masterdata.service.version}/${masterdata.service.contextpath}\nregCenter.url=${masterdata.resource.url}/registrationcenters\nholiday.url=${masterdata.resource.url}/getregistrationcenterholidays/\nholiday.exceptional.url=${masterdata.resource.url}/exceptionalholidays/\nworking.day.url=${masterdata.resource.url}/workingdays/\nmosip.kernel.masterdata.validdoc.rest.uri=${masterdata.resource.url}/validdocuments/all?pageSize=50\n##Kernel Service URL for fetching templates\nresource.template.url=${masterdata.resource.url}/templates\nmosip.pre-registration.notification.id=mosip.pre-registration.notification.notify\n\n## Notification templates for various scenarios\nemail.acknowledgement.template=Email-Acknowledgement\nemail.acknowledgement.subject.template=Acknowledgement-email-subject\nsms.acknowledgement.template=SMS-Acknowledgement\ncancel.appoinment.template=cancel-appointment\ncancel.appointment.email.subject=cancel-appointment-email-subject\n\n#Properties for Notification Template Attribute $ApplicationDetails\nmosip.prereg.applicationdetails.eng= pre registration\nmosip.updateregistration.applicationdetails.eng= booking to update registration\nmosip.lostuin.applicationdetails.eng= booking to retrieve the lost UIN\n\nmosip.prereg.applicationdetails.fra= préinscription\nmosip.updateregistration.applicationdetails.fra= réservation pour mettre à jour linscription\nmosip.lostuin.applicationdetails.fra= réservation pour récupérer lUIN perdu\n\nmosip.prereg.applicationdetails.ara= \\u0627\\u0644\\u062A\\u0633\\u062C\\u064A\\u0644 \\u0627\\u0644\\u0645\\u0633\\u0628\\u0642\nmosip.updateregistration.applicationdetails.ara= \\u0627\\u0644\\u062D\\u062C\\u0632 \\u0644\\u062A\\u062D\\u062F\\u064A\\u062B \\u0627\\u0644\\u062A\\u0633\\u062C\\u064A\\u0644\nmosip.lostuin.applicationdetails.ara= \\u0627\\u0644\\u062D\\u062C\\u0632 \\u0644\\u0627\\u0633\\u062A\\u0631\\u062F\\u0627\\u062F UIN \\u0627\\u0644\\u0645\\u0641\\u0642\\u0648\\u062F\n\n## Notification service\nnotification.service.version=v1\nnotification.service.env=${mosip.prereg.application.url}\nnotification.service.contextpath=preregistration/${notification.service.version}\n#notification.url=${notification.service.env}/${notification.service.version}/${notification.service.contextpath}/notification\nnotification.url=${notification.service.env}/${notification.service.contextpath}/internal/notification\nmosip.pre-registration.notification.id.send=mosip.pre-registration.notification.notify\n# TimeZone to get an Email or SMS Templates\n# timeZone=Asia/Calcutta\n\n## Email service \nemail.service.env=${mosip.kernel.notification.url}\nemail.service.contextpath=notifier\n#Kernel Service URL for Sending Emails\nemailResourse.url=${email.service.env}/${masterdata.service.version}/${email.service.contextpath}/email/send\n\n## SMS service\nsms.service.env=${mosip.kernel.notification.url}\nsms.service.contextpath=notifier\n#Kernel service URL for sending SMS\nsmsResourse.url=${sms.service.env}/${masterdata.service.version}/${sms.service.contextpath}/sms/send\n\n## Audit service \naudit.service.env=${mosip.kernel.auditmanager.url}\naudit.service.contextpath=auditmanager\naudit.url=${audit.service.env}/${masterdata.service.version}/${audit.service.contextpath}/audits\n\n## Crypto service \ncrypto.service.env=${mosip.kernel.keymanager.url}\ncrypto.service.contextpath=keymanager\n## Kernel Service URL for Encryption and decryption \ncryptoResource.url=${crypto.service.env}/${masterdata.service.version}/${crypto.service.contextpath}\npreregistration.crypto.applicationId=PRE_REGISTRATION\npreregistration.crypto.referenceId=INDIVIDUAL\npreregistration.crypto.PrependThumbprint=false\n\n## KeyCloak \n## Both below fields must match with what is there on Keycloak properties \nclientId=mosip-prereg-client\nsecretKey=${mosip.prereg.client.secret}\n\n## Used for Key Creating KeyCloak session\nuserIdType=USERID\nappId=prereg\n\n## Auth service \nkernel.auth.env=${mosip.kernel.auditmanager.url}\nkernel.auth.contextpath=authmanager\nauth.server.validate.url=${mosip.kernel.authmanager.url}/v1/authmanager/authorize/admin/validateToken\nauth.server.admin.allowed.audience=mosip-regproc-client,mosip-prereg-client,mosip-admin-client,mosip-reg-client\n\n## PRID service \nkernel.prid.env=${mosip.kernel.pridgenerator.url}\nkernel.prid.contextpath=pridgenerator\nmosip.io.prid.url=${kernel.prid.env}/${masterdata.service.version}/${kernel.prid.contextpath}/prid\n\n## Syncdata service\nlatestidschema.service.contextpath=latestidschema\n##fetch the latest ID Schema for the ID object validator\nmosip.preregistration.id-schema=${mosip.kernel.syncdata.url}/v1/syncdata/latestidschema\nsyncdata.resource.url=${mosip.kernel.syncdata.url}/v1/syncdata\n\n## OTP \nsendOtp.resource.url=${kernel.auth.env}/${masterdata.service.version}/${kernel.auth.contextpath}\notpChannel.mobile=phone\notpChannel.email=email\nsecret_url.id=string\nsecret_url.requesttime=2018-12-10T06:12:52.994Z\nsecret_url.version=string\notp.request.flooding.duration=1\notp.request.flooding.max-count=3\ndatetime.pattern=yyyy-MM-dd'T'HH:mm:ss.SSSXXX\nmail-notification.rest.uri=${mosip.kernel.notification.url}/v1/notifier/email/send\nsms-notification.rest.uri=${mosip.kernel.notification.url}/v1/notifier/sms/send\notp-generate.rest.uri=${mosip.kernel.otpmanager.url}/v1/otpmanager/otp/generate\npre.reg.login.otp.sms.template=otp-sms-template\npre.reg.login.otp.mail.subject.template=OTP-email-subject-template\npre.reg.login.otp.mail.content.template=OTP-email-content-template\npre.reg.login.otp.validation-attempt-threshold=10\n\n## Login service \nmosip.preregistration.login.service.version=1.0\nmosip.preregistration.sendotp.id=mosip.pre-registration.login.sendotp\nmosip.preregistration.validateotp.id=mosip.pre-registration.login.useridotp\nmosip.id.preregistration.sendotp=mosip.pre-registration.login.sendotp\nmosip.id.preregistration.validateotp=mosip.pre-registration.login.useridotp\nmosip.preregistration.invalidatetoken.id=mosip.pre-registration.login.invalidate\nmosip.preregistration.config.id=mosip.pre-registration.login.config\nmosip.preregistration.login.id.sendotp=mosip.pre-registration.login.sendotp\nmosip.preregistration.login.id.validateotp=mosip.pre-registration.login.useridotp\nmosip.preregistration.login.id.invalidatetoken=mosip.pre-registration.login.invalidate\nmosip.preregistration.login.id.config=mosip.pre-registration.login.config\n\niam.base.url=${keycloak.internal.url}\nauth-token-generator.rest.issuerUrl=${iam.base.url}/auth/realms/mosip\nvalidationStatus=success\ncontext=auth-otp\nprereg.auth.jwt.secret=Yn2kjibddFAWtnPJ2AFlL8WXmohJMCvigQggaEypa5E=\nprereg.auth.jwt.token.expiration=3600\nprereg.auth.jwt.token.roles=INDIVIDUAL\n\n## ID object validation\nmosip.kernel.idobjectvalidator.masterdata.documentcategories.lang.rest.uri=${masterdata.resource.url}/documentcategories/{langcode}\nmosip.kernel.idobjectvalidator.masterdata.languages.rest.uri=${masterdata.resource.url}/languages\n#mosip.kernel.idobjectvalidator.masterdata.gendertypes.rest.uri=${masterdata.resource.url}/gendertypes\nmosip.kernel.idobjectvalidator.masterdata.documentcategories.rest.uri=${masterdata.resource.url}/documentcategories\nmosip.kernel.idobjectvalidator.masterdata.documenttypes.rest.uri=${masterdata.resource.url}/documenttypes/{documentcategorycode}/{langcode}\nmosip.kernel.idobjectvalidator.masterdata.locations.rest.uri=${masterdata.resource.url}/locations/{langcode}\nmosip.kernel.idobjectvalidator.masterdata.locationhierarchy.rest.uri=${masterdata.resource.url}/locations/locationhierarchy/{hierarchyname}\n## Class name of the referenceValidator. Commenting or removing this property will disable reference validator.\nmosip.kernel.idobjectvalidator.referenceValidator=io.mosip.kernel.idobjectvalidator.impl.IdObjectReferenceValidator\n\n## Configurations file names \nglobal.config.file=application-${spring.profiles.active}.properties\npre.reg.config.file=pre-registration-${spring.profiles.active}.properties\n## Mapping file for Pre-registration & ID Object\npreregistration.config.identityjson=identity-mapping.json \n\n# Verify where it is used\npreregistration.response = response\npreregistration.identity.name=fullName\npreregistration.demographicDetails=demographicDetails\npreregistration.identity.email=email\npreregistration.identity.phone=phone\npreregistration.identity=identity \n\n## QR code service\nmosip.pre-registration.qrcode.generate.id=mosip.pre-registration.qrcode.generate\nmosip.pre-registration.qrcode.service.version=1.0\nqrversion=V1\nmosip.pre-registration.qrcode.id.generate=mosip.pre-registration.qrcode.generate\nmosip.id.pre-registration.qrcode.generate=mosip.pre-registration.qrcode.generate\n\n## Data sync with registration client\nmosip.id.preregistration.datasync.fetch.ids=mosip.pre-registration.datasync.fetch.ids\n## id for storing consumed pre-registration ids API\nmosip.id.preregistration.datasync.store=mosip.pre-registration.datasync.store\n## id for get preregistration id API\nmosip.id.preregistration.datasync.fetch=mosip.pre-registration.datasync.fetch\n\n## Verify \npoa.url=proofOfAddress\npoi.url=proofOfIdentity\npod.url=proofOfDateOfBirth\npor.url=proofOfRelationship\n\n## Transliteration service\n## Determines request & response id of transliteration-service\nmosip.pre-registration.transliteration.transliterate.id=mosip.pre-registration.transliteration.transliterate\nmosip.id.pre-registration.transliteration.transliterate=mosip.pre-registration.transliteration.transliterate\nmosip.lang.traslate.adapter.impl.basepackage = io.mosip.kernel.transliteration.icu4j\n\n## List of keys which UI will consume\nui.config.params=preregistration.availability.sync,preregistration.availability.noOfDays,mosip.id.validation.identity.email,mosip.id.validation.identity.postalCode,mosip.id.validation.identity.phone,mosip.id.validation.identity.dateOfBirth,mosip.id.validation.identity.referenceIdentityNumber,mosip.default.dob.month,mosip.default.dob.day,mosip.kernel.otp.expiry-time,mosip.kernel.otp.validation-attempt-threshold,mosip.kernel.otp.default-length,mosip.kernel.sms.number.length,mosip.kernel.pin.length,preregistration.max.file.size,preregistration.recommended.centers.locCode,preregistration.nearby.centers,mosip.login.mode,preregistration.workflow.demographic,preregistration.workflow.documentupload,preregistration.workflow.booking,preregistration.auto.logout,preregistration.timespan.cancel,preregistration.timespan.rebook,preregistration.booking.offset,mosip.right_to_left_orientation,mosip.left_to_right_orientation,mosip.id.validation.identity.age,mosip.id.validation.identity.fullName.[*].value,mosip.id.validation.identity.addressLine1.[*].value,preregistration.documentupload.allowed.file.type,preregistration.documentupload.allowed.file.nameLength,preregistration.documentupload.allowed.file.size,mosip.preregistration.auto.logout.idle,mosip.preregistration.auto.logout.timeout,mosip.preregistration.auto.logout.ping,mosip.country.code,mosip.notificationtype,mosip.kernel.idobjectvalidator.masterdata.locations.locationNotAvailable,mosip.preregistration.captcha.sitekey,mosip.adult.age,mosip.idschema.version,mosip.preregistration.captcha.enable,preregistration.identity.name,preregistration.ui.version,preregistration.contact.email,preregistration.contact.phone\n\n## This config is used for loading recommended centers based on the value of the config. \n## The value depicts the location hierarchy code of the hierarchy based on which the recommended centers is loaded\npreregistration.recommended.centers.locCode=5\n## The Registration centers will be searched based on the distance value from the Geo location identified\npreregistration.nearby.centers=2000\n## Determines file upload type allowed in UI\npreregistration.documentupload.allowed.file.type = application/pdf,image/jpeg,image/png,image/jpg\n# Determines the file name length(with extension) allowed in UI\npreregistration.documentupload.allowed.file.nameLength = 50\n# Determines maximum size of file allowed uploaded in document service api (in bytes)\npreregistration.documentupload.allowed.file.size = 2000000\n# Determines idle condition(in seconds)\nmosip.preregistration.auto.logout.idle=180\n# Determines pop up timer(in seconds)\nmosip.preregistration.auto.logout.timeout=60\npreregistration.ui.version=1.2.0\n\npreregistration.contact.email=contact@dev.mosip.net\npreregistration.contact.phone=9999999999\n\nmosip.preregistration.anonymous-profile-username=admin\n\n# Determines to maintain iternal cycle & make sure value is not null (any value greater than zero)\nmosip.preregistration.auto.logout.ping=30\n\nmosip.id.validation.identity.dateOfBirth=^\\d{4}[\\-\\/\\s]?((((0[13578])|(1[02]))[\\-\\/\\s]?(([0-2][0-9])|(3[01])))|(((0[469])|(11))[\\-\\/\\s]?(([0-2][0-9])|(30)))|(02[\\-\\/\\s]?[0-2][0-9]))$\nmosip.id.validation.identity.email=^[\\\\w-\\\\+]+(\\\\.[\\\\w]+)*@[\\\\w-]+(\\\\.[\\\\w]+)*(\\\\.[a-zA-Z]{2,})$\nmosip.id.validation.identity.phone=^([6-9]{1})([0-9]{9})$\n\n## Captcha service\n## Configuration for google re-captcha\nmosip.preregistration.captcha.enable=${mosip.preregistration.captcha.enable.override:true}\nmosip.preregistration.captcha.id.validate=mosip.pre-registration.captcha.id.validate\nmosip.preregistration.captcha.sitekey=${prereg.captcha.site.key}\nmosip.preregistration.captcha.secretkey=${prereg.captcha.secret.key}\nmosip.preregistration.captcha.resourse.url=https://${mosip.api.internal.host}/v1/captcha/validatecaptcha\n#mosip.preregistration.captcha.resourse.url=http://captcha.captcha/v1/captcha/validatecaptcha\nmosip.preregistration.captcha.recaptcha.verify.url=https://www.google.com/recaptcha/api/siteverify\n\n## Security \nmosip.security.csrf-enable:false\nmosip.security.cors-enable:false\n# Comma Separated Allowed Origins\nmosip.security.origins:localhost:8080,localhost:4200,${mosip.api.internal.url}\nmosip.security.secure-cookie:false\n\n## for prereg booking notification name validation\npreregistration.notification.nameFormat=fullName\n\n## Minio\nobject.store.s3.use.account.as.bucketname=true\n\n## Spring cache\nspring.cache.type=none\n\nmosip.preregistration.appointment.getavailablity.url=${mosip.prereg.booking.url}/preregistration/v1/appointment/availability/{registrationCenterId}\nmosip.preregistration.appointment.book.url=${mosip.prereg.booking.url}/preregistration/v1/appointment/{preRegistrationId}\nmosip.preregistration.appointment.multi.book.url=${mosip.prereg.booking.url}/preregistration/v1/appointment\nmosip.preregistration.applications.status.get = mosip.preregistration.applications.status\nmosip.preregistration.applications.details.get = mosip.preregistration.applications.detail.info\nmosip.preregistration.uispec.latest=mosip.preregistration.uispec.latest\nmosip.preregistration.uispec.all=mosip.preregistration.uispec.all\n\npreregistration.cookie.contextpath=/\n\n# To generate token from keycloak. Use by kernel auth adapter.\nmosip.iam.adapter.clientid=mosip-prereg-client\nmosip.iam.adapter.clientsecret=${mosip.prereg.client.secret}\n\n# mosip.prereg.client.secret\nmosip.iam.adapter.appid=prereg\n\n# To generate token from keycloak in PreReg Data Sync Service. Used by kernel auth adapter.\nmosip.iam.adapter.clientid.pre-registration-datasync-service=mosip-reg-client\nmosip.iam.adapter.clientsecret.pre-registration-datasync-service=${mosip.reg.client.secret}\nmosip.iam.adapter.appid.pre-registration-datasync-service=registrationclient\n\n#the custom auth provider component names list\nmosip.security.authentication.provider.beans.list.pre-registration-application-service=customJWTAuthProvider\nmosip.security.authentication.provider.beans.list.pre-registration-booking-service=customJWTAuthProvider\n\n# Object store\n\nobject.store.s3.accesskey=${s3.accesskey}\nobject.store.s3.secretkey=${s3.secretkey}\n## For Minio: object.store.s3.url=http://minio.minio:9000\n## For AWS: object.store.s3.url=s3.${s3.region}.amazonaws.com\nobject.store.s3.url=http://minio.minio:9000\nobject.store.s3.region=${s3.region}\nobject.store.s3.readlimit=10000000\n\n# Roles\nmosip.role.prereg.postapplications=INDIVIDUAL,REGISTRATION_OFFICER,REGISTRATION_SUPERVISOR,REGISTRATION_ADMIN\nmosip.role.prereg.putapplications=INDIVIDUAL,REGISTRATION_OFFICER,REGISTRATION_SUPERVISOR,REGISTRATION_ADMIN\nmosip.role.prereg.getapplications=REGISTRATION_OFFICER,INDIVIDUAL,REGISTRATION_SUPERVISOR,REGISTRATION_ADMIN,PRE_REGISTRATION_ADMIN\nmosip.role.prereg.putapplicationsstatus=REGISTRATION_OFFICER,INDIVIDUAL,REGISTRATION_SUPERVISOR,REGISTRATION_ADMIN,PRE_REGISTRATION_ADMIN\nmosip.role.prereg.getapplicationsall=REGISTRATION_OFFICER,INDIVIDUAL,REGISTRATION_SUPERVISOR,REGISTRATION_ADMIN\nmosip.role.prereg.getapplicationsstatus=REGISTRATION_OFFICER,INDIVIDUAL,REGISTRATION_SUPERVISOR,REGISTRATION_ADMIN,PRE_REGISTRATION_ADMIN\nmosip.role.prereg.deleteapplications=INDIVIDUAL,REGISTRATION_OFFICER,REGISTRATION_SUPERVISOR,REGISTRATION_ADMIN\nmosip.role.prereg.postapplicationsupdatedtime=REGISTRATION_OFFICER,INDIVIDUAL,REGISTRATION_SUPERVISOR,REGISTRATION_ADMIN,REGISTRATION_PROCESSOR\nmosip.role.prereg.getapplicationsconfig=INDIVIDUAL\nmosip.role.prereg.getapplicationsinfo=REGISTRATION_OFFICER,INDIVIDUAL,REGISTRATION_SUPERVISOR,REGISTRATION_ADMIN,PRE_REGISTRATION_ADMIN\nmosip.role.prereg.postlogaudit=REGISTRATION_OFFICER,INDIVIDUAL,REGISTRATION_SUPERVISOR,REGISTRATION_ADMIN\nmosip.role.prereg.postdocumentspreregistrationid=INDIVIDUAL\nmosip.role.prereg.putdocumentspreregistrationid=INDIVIDUAL\nmosip.role.prereg.getdocumentsdocumentid=REGISTRATION_OFFICER,REGISTRATION_SUPERVISOR,REGISTRATION_ADMIN,INDIVIDUAL\nmosip.role.prereg.getdocumentspreregistrationid=REGISTRATION_OFFICER,INDIVIDUAL\nmosip.role.prereg.deletedocumentsdocumentid=INDIVIDUAL\nmosip.role.prereg.deletedocumentspreregistrationid=INDIVIDUAL\nmosip.role.prereg.putdocumentsdocumentid=INDIVIDUAL,REGISTRATION_OFFICER,REGISTRATION_SUPERVISOR,REGISTRATION_ADMIN\nmosip.role.prereg.postqrcodegenerate=INDIVIDUAL\nmosip.role.prereg.getrefreshconfig=PRE_REGISTRATION_ADMIN\nmosip.role.prereg.postnotificationnotify=REGISTRATION_OFFICER,INDIVIDUAL,PRE_REGISTRATION_ADMIN\nmosip.role.prereg.postnotification=INDIVIDUAL,PRE_REGISTRATION_ADMIN\nmosip.role.prereg.posttransliterationtransliterate=REGISTRATION_OFFICER,REGISTRATION_SUPERVISOR,REGISTRATION_ADMIN,INDIVIDUAL\nmosip.role.prereg.getuispeclatest=REGISTRATION_OFFICER,REGISTRATION_SUPERVISOR,REGISTRATION_ADMIN,INDIVIDUAL\nmosip.role.prereg.getuispecall=REGISTRATION_OFFICER,REGISTRATION_SUPERVISOR,REGISTRATION_ADMIN,INDIVIDUAL\nmosip.role.prereg.postpreregsync=REGISTRATION_OFFICER,REGISTRATION_SUPERVISOR,REGISTRATION_ADMIN\nmosip.role.prereg.getsyncpreregistrationid=REGISTRATION_OFFICER,REGISTRATION_SUPERVISOR,REGISTRATION_ADMIN\nmosip.role.prereg.getsyncpreregistrationidmachineid=REGISTRATION_OFFICER,REGISTRATION_SUPERVISOR,REGISTRATION_ADMIN\nmosip.role.prereg.postsyncconsumedpreregids=REGISTRATION_OFFICER,REGISTRATION_SUPERVISOR,REGISTRATION_ADMIN,REGISTRATION_PROCESSOR\nmosip.role.prereg.cancelappointmentpreregid=REGISTRATION_OFFICER,INDIVIDUAL,PRE_REGISTRATION_ADMIN\nmosip.role.prereg.deleteappointmentpreregid=REGISTRATION_OFFICER,INDIVIDUAL,PRE_REGISTRATION_ADMIN\nmosip.role.prereg.getappointmentavailability=INDIVIDUAL\nmosip.role.prereg.postappointmentpreregistrationid=INDIVIDUAL\nmosip.role.prereg.postappointment=INDIVIDUAL\nmosip.role.prereg.getappointmentpreregistrationid=REGISTRATION_OFFICER,REGISTRATION_SUPERVISOR,REGISTRATION_ADMIN,PRE_REGISTRATION_ADMIN,INDIVIDUAL\nmosip.role.prereg.putappointmentpreregistrationid=INDIVIDUAL,PRE_REGISTRATION_ADMIN\nmosip.role.prereg.putbatchappointmentpreregistrationid=PRE_REGISTRATION_ADMIN,REGISTRATION_SUPERVISOR\nmosip.role.prereg.deleteappointment=INDIVIDUAL,PRE_REGISTRATION_ADMIN\nmosip.role.prereg.getappointmentpreregistrationidregistrationcenterid=INDIVIDUAL,REGISTRATION_OFFICER,REGISTRATION_SUPERVISOR,REGISTRATION_ADMIN\nmosip.role.prereg.getappointmentregistrationcenterid=INDIVIDUAL,REGISTRATION_OFFICER,REGISTRATION_SUPERVISOR,REGISTRATION_ADMIN\n\nregistrationcenter.centerdetail.rest.uri=${mosip.base.url}/v1/masterdata/registrationcenters\n\nspring.datasource.hikari.minimum-idle=12\nspring.datasource.hikari.maximum-pool-size=30\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/mosip-config/blob/master/print-default.properties", + "title": "print-default.properties", + "repo": "mosip/mosip-config", + "file_path": "print-default.properties", + "language": "properties", + "content": "# Follow properites have their values assigned via 'overrides' environment variables of config server docker.\n# DO NOT define these in any of the property files. They must be passed as env variables. Refer to config-server\n# helm chart:\n# mosip.regproc.client.secret\n# print.websub.hub.secret\n\n## Websub\nmosip.event.hubURL=${mosip.websub.url}/hub/\nmosip.partner.id=mpartner-default-print\nmosip.datashare.partner.id=mpartner-default-resident\nmosip.datashare.policy.id=mpolicy-default-resident\n## This callback is called by Websub to notify print\nmosip.event.callBackUrl=http://print-service.print${server.servlet.context-path}/print/callback/notifyPrint\n\nmosip.event.topic=${mosip.partner.id}/CREDENTIAL_ISSUED\nmosip.event.secret=${print.websub.hub.secret}\ncsrf.disabled=true\nmosip.event.delay-millisecs=120000\nprint-websub-resubscription-delay-millisecs=21600000\nregistration.processor.print.textfile=registration-processor-print-text-file.json\n\n# Audit service\nAUDIT=${mosip.kernel.auditmanager.url}/v1/auditmanager/audits\nmosip.kernel.pdf_owner_password=123456\n\n## Auth service\nauthmanager.base.url=${mosip.kernel.authmanager.url}\nKEYBASEDTOKENAPI=${authmanager.base.url}/v1/authmanager/authenticate/clientidsecretkey\n\n## Master data services\nMASTER=${mosip.kernel.masterdata.url}/v1/masterdata\nTEMPLATES=${MASTER}/templates\n\nmosip.print.application.version=1.0\nmosip.print.datetime.pattern=yyyy-MM-dd'T'HH:mm:ss.SSS'Z'\n\n## Encrypt services\nPDFSIGN=${mosip.kernel.keymanager.url}/v1/keymanager/pdf/sign\n\n\nmosip.print.service.id=mosip.print\nmosip.print.service.uincard.password=postalCode|fullName\nmosip.print.uin.header.length=75\n\n## Rectangle coordinates for pfd signataured data\nmosip.print.service.uincard.lowerleftx=73\nmosip.print.service.uincard.lowerlefty=100\nmosip.print.service.uincard.upperrightx=300\nmosip.print.service.uincard.upperrighty=300\nmosip.print.service.uincard.signature.reason=\"signing\"\n\n\n## Kernel Crypto signature\nregistration.processor.signature.isEnabled=true\n\n## Country specific\nmosip.country.code=MOR\nmosip.supported-languages=eng,ara,fra\nmosip.template-language=eng\nmosip.optional-languages=ara,fra\nmosip.mandatory-languages=eng\n\n## CBEFF util\n# Cbeff XSD file name in config server\nmosip.kernel.xsdfile=mosip-cbeff.xsd\n\nmosip.kernel.applicant.type.age.limit=5\n\nmosip.kernel.pin.length=6\n\n## Token id\n## length of the token id\nmosip.kernel.tokenid.length=36\n\n## log level\nlogging.level.io.mosip=INFO\nlogging.level.io.mosip.kernel.auth.defaultadapter.filter=INFO\n\n## tomcat access logs\nserver.tomcat.accesslog.enabled=true\nserver.tomcat.accesslog.directory=/dev\nserver.tomcat.accesslog.prefix=stdout\nserver.tomcat.accesslog.buffered=false\nserver.tomcat.accesslog.suffix=\nserver.tomcat.accesslog.file-date-format=\nserver.tomcat.accesslog.pattern={\"@timestamp\":\"%{yyyy-MM-dd'T'HH:mm:ss.SSS'Z'}t\",\"level\":\"ACCESS\",\"level_value\":70000,\"traceId\":\"%{X-B3-TraceId}i\",\"statusCode\":%s,\"req.requestURI\":\"%U\",\"bytesSent\":%b,\"timeTaken\":%T,\"appName\":\"${spring.application.name}\"}\nserver.tomcat.accesslog.className=io.mosip.kernel.core.logger.config.SleuthValve\nregistration.processor.unMaskedUin.length=5\n\nIDSchema.Version=1.0\nregistration.processor.identityjson=identity-mapping.json\nregistration.processor.demographic.identity=identity\nCREATEDATASHARE=${mosip.datashare.url}/v1/datashare/create\nDECRYPTPINBASSED=${mosip.kernel.keymanager.url}/v1/keymanager/decryptWithPin\nmosip.print.prependThumbprint=true\n\n# websub authentication\nmosip.iam.adapter.clientid=mpartner-default-print\nmosip.iam.adapter.clientsecret=${mpartner.default.print.secret}\nmosip.iam.adapter.appid=admin\nmosip.iam.adapter.issuerURL=${keycloak.internal.url}/auth/realms/mosip\nmosip.authmanager.base-url=${mosip.kernel.authmanager.url}/v1/authmanager\nmosip.authmanager.client-token-endpoint=${mosip.authmanager.base-url}/authenticate/clientidsecretkey\n# in minutes\n\nmosip.iam.adapter.validate-expiry-check-rate=1440\n\n# in minutes\nmosip.iam.adapter.renewal-before-expiry-interval=1440\n\n#this should be false if you don?t use this restTemplate true if you do\n\nmosip.iam.adapter.self-token-renewal-enable=true\nmosip.auth.filter_disable=false\nmosip.auth.adapter.impl.basepackage=io.mosip.kernel.auth.defaultadapter\n\n# p12 file\nmosip.print.crypto.p12.filename=partner.p12\n## password hardcoded in print service. TODO: Make it configurable.\nmosip.print.crypto.p12.password=password@123\nmosip.print.crypto.p12.alias=partner\n\n# verifiable credential\nmosip.print.verify.credentials.flag=true\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/mosip-config/blob/master/registration-default.properties", + "title": "registration-default.properties", + "repo": "mosip/mosip-config", + "file_path": "registration-default.properties", + "language": "properties", + "content": "#Fingerprint retry attempts. Possible values 1 to 10\nmosip.registration.num_of_fingerprint_retries=3\n\n#Iris retry attempts. Possible values 1 to 10\nmosip.registration.num_of_iris_retries=3\n\n#Face retry attempts. Possible values 1 to 10\nmosip.registration.num_of_face_retries=3\n\n#Maximum no. of days without running the Master Sync Job beyond which client is frozen for registration\nmosip.registration.masterSyncJob.frequency=190\n\n#Maximum no. of days without running the Pre-Registration Sync Job beyond which client is frozen for registration\nmosip.registration.preRegistrationDataSyncJob.frequency=190\n\n#Maximum no. of days without running the Packet Sync Status Job beyond which client is frozen for registration\nmosip.registration.packetSyncStatusJob.frequency=190\n\n#Maximum no. of days without running the Key Policy Sync Job beyond which client is frozen for registration\nmosip.registration.keyPolicySyncJob.frequency=190\n\n#Maximum no. of days without running the Registration Deletion Job beyond which client is frozen for registration\nmosip.registration.registrationDeletionJob.frequency=190\n\n#Maximum no. of days without running the Configuration Sync Job beyond which client is frozen for registration\nmosip.registration.synchConfigDataJob.frequency=190\n\n#Maximum no. of days without running the Audit Logs Deletion Job beyond which client is frozen for registration\nmosip.registration.deleteAuditLogsJob.frequency=190\n\n#Maximum no. of days without running Registration User Mapping Sync Job beyond which client is frozen for registration\nmosip.registration.regUserMappingSyncJob.frequency=190\n\n#Maximum no. of days without running Pre-Registration Packet Deletion beyond which client is frozen for registration\nmosip.registration.preRegistrationPacketDeletionJob.frequency=190\n\n#Maximum no. of days without running Registration Packet Sync Job beyond which client is frozen for registration\nmosip.registration.registrationPacketSyncJob.frequency=190\n\n#Maximum no. of packets pending EOD approval beyond which client is frozen for registration\nmosip.registration.packet.maximum.count.offline.frequency=70\n\n#ObjectStore Adapter\nobjectstore.adapter.name=PosixAdapter\n\n#referenceId for kernel certificate\nmosip.sign.refid=SIGNATUREKEY\n\n#packet creation - online/offline\nobjectstore.crypto.name=OfflinePacketCryptoServiceImpl\n\n#Packet store location \nobject.store.base.location=../packets\n\n#The Distance Parameter for GPS Verification\nmosip.registration.distance.from.machine.to.center=900000\n\n#Frequency of geo-location capture\n#N - System will capture the lattitue and longitude of machine every time when a new registration is performed \n#Y- Captures only single time in a day\nmosip.registration.geo.capture.frequency=n\n\n#Admin Setting to turn Document Scan On or Off. If y, documents scan view is turned on. If n, documents scan view turned off.\nmosip.registration.document_enable_flag=y\n\n#Reviewer Authentication for Biometric Exceptions. If y, iris is turned on. If n, iris is turned off.\nmosip.registration.reviewer_authentication_configuration=Y\n\n#Maximum length of the Password to be entered\nmosip.registration.username_pwd_length=50\n\n#Validate the score of captured fingerprint. Used by fingerprint capture device.\nmosip.registration.finger_print_score=80\n\n#Timeout used in MDM request.\nmosip.registration.capture_time_out=10000\n\n#Max Document size in Bytes allowed to be uploaded\nmosip.registration.document_size=2000000\n\n#pre-reg id fetch time span\n#No. of days before appointment date for consuming the pre-registration data\nmosip.registration.pre_reg_no_of_days_limit=7\n\n#-----Scanner Settings - options used by jfreescane implementation ----\n\n#Scanner DPI\nmosip.registration.document_scanner_dpi=75\n\n#Scanner Brightness\nmosip.registration.document_scanner_brightness=10\n\n#Sanner Contrast\nmosip.registration.document_scanner_contrast=10\n\n#File Type of the Document Scanned\nmosip.registration.document_scanner_doctype=PDF\n\n#Enable or Disable UIN Update Feature. If y, UIN Update feature will be available, else will not be available.\nmosip.registration.uin_update_config_flag=Y\n\n#Enable or disable the Lost UIN feature. If set to y, Lost UIN feature will be available in Registration Client\nmosip.registration.lost_uin_disable_flag = Y\n\n\n#Maximum no. of packets pending EOD approval beyond which client is frozen for registration\nmosip.registration.reg_pak_max_cnt_apprv_limit=100\n\n#Maximum no. of days for a packet pending EOD approval beyond which client is frozen for registration\nmosip.registration.reg_pak_max_time_apprv_limit=50\n\n#Enable supervisor authentication feature. If y, supervisor approval will be enabled, else, will be disbaled\nmosip.registration.supervisor_approval_config_flag=Y\n\n#No. of days beyond audit creation date to delete audits\nmosip.registration.audit_log_deletion_configured_days=10\n\n#No. of days beyond registration date to delete registration packet\nmosip.registration.reg_deletion_configured_days=1\n\n#No. of days beyond appointment date to delete unconsumed pre-registration data\nmosip.registration.pre_reg_deletion_configured_days=1\n\n#Maximum duration to which registration is permitted without sync of master dat\nmosip.registration.sync_transaction_no_of_days_limit=5\n\n#Allowed number of invalid login attempts\nmosip.registration.invalid_login_count=50\n\n#Used to configure the time (in minutes) for locking account after crossing configured invalid login count\nmosip.registration.invalid_login_time=2\n\n#----GPS Device Connection----\n\n#Enable GPS device for capturing the geo-location. If y, GPS device will be enabled. If n, GPS device will be disabled.\nmosip.registration.gps_device_enable_flag=N\n\n#Model of the GPS Device\nmosip.registration.gps_device_model=GPSBU343Connector\n\n#Timeout for connecting to GPS device\nmosip.registration.gps_port_timeout=1000\n\n#GPS Serial Port in Linux machine\nmosip.registration.gps_serial_port_linux=/dev/ttyusb0\n\n#GPS Serial Port in Windows machine\nmosip.registration.gps_serial_port_windows=\n\n#Maximum no. of days for approved packet pending to be synced to server beyond which client is frozen for registration\nmosip.registration.last_export_registration_config_time=100\n\n\n#----Default Values to be used for Auditing----\n\n#Application ID\nmosip.registration.audit_application_id=REG\n\n#Application Name\nmosip.registration.audit_application_name=REGISTRATION\n\n#Default HOST IP Address, if unable to get the Host IP address\nmosip.registration.audit_default_host_ip=120.0.0.0\n\n#Default Host Name, if unable to get the Host Name\nmosip.registration.audit_default_host_name=localhost\n\n\n#Registration Packet Local Storage File Path\nmosip.registration.registration_packet_store_location=..//PacketStore\n\n#Maximum age limit\nmosip.registration.max_age=200\n\n#CRON value for scheduling the Jobs\nmosip.registration.sync_jobs_restart_freq=0 0 */11 ? * *\n\n#File Storage Location to store the downloaded Pre-Registration Packets in local system\nmosip.registration.registration_pre_reg_packet_location=..//PreRegPacketStore\n\n#Mode of Communicating the OTP to User. Possible Values email or mobile\nmosip.registration.otp_channels=email\n\n#Time in Seconds for forced log-out of user, if user is idle for the specified duration\nmosip.registration.idle_time = 900\n\n#Time in Seconds to diplay the warning message pop-up to user, if user is idle for the specified duration\nmosip.registration.refreshed_login_time = 600\n\n#----Threshold Quality Value for capturing the Finger Slaps. Values can be from 1 to 100---\n\n#Threshold Quality for Left Slap\nmosip.registration.leftslap_fingerprint_threshold=40\n\n#Threshold Quality for Right Slap\nmosip.registration.rightslap_fingerprint_threshold=40\n\n#Threshold Quality for Thumbs\nmosip.registration.thumbs_fingerprint_threshold=40\n\n#Thereshold Quality Value for IRIS capture\nmosip.registration.iris_threshold=60\n\n#Threshold Quality Value for Face capture\nmosip.registration.face_threshold=90\n\n#Maximum number of days where Registration or UIN Update or Lost UIN will be allowed without updating the Registration Client Software\nmosip.registration.softwareUpdateCheck_configured_frequency = 300\n\n#Enable or Disable the Scanner Device for Document Scanning.\nmosip.registration.document_scanner_enabled=No\n\n#Application ID of the Registration Client required for Authentication Web-Service. Should not be modified.\nmosip.registration.app.id=registrationclient\n\n#For CBEFF 2.0. Value of the Organization attribute to be provided in BIR Field. Should not be modified\nmosip.registration.cbeff_format_org = Mosip\n\n#For CBEFF 2.0. Value of the Quality Algorithm Name attribute to be provided in BIR Field. Should not be modified\nmosip.registration.cbeff_algorithm_org = HMAC\n\n#For CBEFF 2.0. Value of the Quality Algorithm Type attribute to be provided in BIR Field. Should not be modified\nmosip.registration.cbeff_algorithm_type = SHA-256\n\n#Minimum disk space required to create a packet(in MB)\nmosip.registration.disk_space_size=5\n\n#Admin Setting to turn local deduplication check On or Off. If y, dedupe check is turned on. If n, dedupe check is truned off.\nmosip.registration.mds.deduplication.enable.flag=Y\n\n#Threshold quality for Fingerprint biometric authentication\nmosip.fingerprint_authentication.quality_score=30\n\n#Threshold quality for Iris biometric authentication\nmosip.iris_authentication.quality_score=30\n\n#Threshold quality for Face biometric authentication\nmosip.face_authentication.quality_score=30\n\n\n#Jobs\n#offline jobs, which will be not part of manual sync\n#Add by comma (,) separator if to add more jobs\nmosip.registration.jobs.offline =DEL_J00013,RDJ_J00010,ADJ_J00012,PVS_J00015\n\n#Untagged jobs, which will be not part of manual sync but only from scheduler\n#Add by comma (,) separator if to add more jobs\nmosip.registration.jobs.unTagged =PDS_J00003\n\n#restart jobs, which requests application to be restarted post the job success\n#Add by comma (,) separator if to add more jobs\nmosip.registration.jobs.restart =RCS_J00005\n\n#Registration batch jobs scheduler : If value ‘Y’ or ‘y’ means enabled, else disabled\nmosip.registration.jobs.scheduler.enable = Y\n\n\n#MDM properties\n#host has to be clarified whether nedd to be in config or hardcoded\nmosip.registration.mdm.host=127.0.0.1\n#portRangeFrom and portRangeTo are mandate,portRangeTo can be same are greater than then portRangeFrom\nmosip.registration.mdm.portRangeFrom=4501\nmosip.registration.mdm.portRangeTo=4600\n\nmosip.biometric.sdk.providers.finger.mockvendor.classname=io.mosip.mock.sdk.impl.SampleSDK\nmosip.biometric.sdk.providers.finger.mockvendor.version=0.9\nmosip.biometric.sdk.providers.finger.mockvendor.args=\nmosip.biometric.sdk.providers.finger.mockvendor.threshold=60\nmosip.biometric.sdk.providers.iris.mockvendor.classname=io.mosip.mock.sdk.impl.SampleSDK\nmosip.biometric.sdk.providers.iris.mockvendor.version=0.9\nmosip.biometric.sdk.providers.iris.mockvendor.args=\nmosip.biometric.sdk.providers.iris.mockvendor.threshold=60\nmosip.biometric.sdk.providers.face.mockvendor.classname=io.mosip.mock.sdk.impl.SampleSDK\nmosip.biometric.sdk.providers.face.mockvendor.version=0.9\nmosip.biometric.sdk.providers.face.mockvendor.args=\nmosip.biometric.sdk.providers.face.mockvendor.threshold=60\n\n## SDK configurations\n#SDK implementation class for finger modality\nmosip.biometric.sdk.provider.finger.classname=io.mosip.mock.sdk.impl.SampleSDK\n#SDK API version\nmosip.biometric.sdk.provider.finger.version=0.9\n#SDK implementation class consturctor args - comma separated\nmosip.biometric.sdk.provider.finger.args=\n#SDK initialization args\n#mosip.biometric.sdk.provider.finger.= is also supported, this will be passed as initparams\n#Quality threshold used by SDK to match modality\nmosip.biometric.sdk.provider.finger.threshold=60\n\n#SDK implementation class for iris\nmosip.biometric.sdk.provider.iris.classname=io.mosip.mock.sdk.impl.SampleSDK\n#SDK API version\nmosip.biometric.sdk.provider.iris.version=0.9\n#SDK implementation class consturctor args - comma separated\nmosip.biometric.sdk.provider.iris.args=\n#SDK initialization args\n#mosip.biometric.sdk.provider.iris.= is also supported, this will be passed as initparams\n#Quality threshold used by SDK to match modality\nmosip.biometric.sdk.provider.iris.threshold=60\n\n#SDK implementation class for face\nmosip.biometric.sdk.provider.face.classname=io.mosip.mock.sdk.impl.SampleSDK\n#SDK API version\nmosip.biometric.sdk.provider.face.version=0.9\n#SDK implementation class consturctor args - comma separated\nmosip.biometric.sdk.provider.face.args=\n#SDK initialization args\n#mosip.biometric.sdk.provider.face.= is also supported, this will be passed as initparams\n#Quality threshold used by SDK to match modality\nmosip.biometric.sdk.provider.face.threshold=60\n\n\n#----Kernel's ID Object Validator Component. Identity object have to be validated in local----\n\n#Storage Location of the Identity Schema. LOCAL specifies the schema is stored within the application. Should not be modified\nmosip.kernel.idobjectvalidator.file-storage-uri=LOCAL\n\n#File name of the Identity Schema. Should not be modified\nmosip.kernel.idobjectvalidator.schema-name=mosip-identity-json-schema.json\n\n#Property Source of the Identity Schema. Should not be modified\nmosip.kernel.idobjectvalidator.property-source=LOCAL\n\n#----For Transliteration Component----\n\n#Language Code for Arabic Language. Should not be modified\nmosip.kernel.transliteration.arabic-language-code=${mosip.kernel.transliteration.arabic-language-code}\n\n#Language Code for French Language. Should not be modified\nmosip.kernel.transliteration.franch-language-code=${mosip.kernel.transliteration.franch-language-code}\n\n#Language Code for English Language. Should not be modified\nmosip.kernel.transliteration.english-language-code=${mosip.kernel.transliteration.english-language-code}\n\n#----For CBEFF Component----\n\n#CBEFF XSD Storage URI. Should not be modified\nmosip.kernel.xsdstorage-uri = LOCAL\n\n#CBEFF XSD File Location. Should not be modified\nmosip.kernel.xsdfile = LOCAL\n\n#----JSON Validator Component----\n\n#Property Source of the Identity Schema. LOCAL specifies the schema is stored within the application. Should not be modified\nmosip.kernel.jsonvalidator.property-source = LOCAL\n\n#Storage Location of the Identity Schema. LOCAL specifies the schema is stored within the application. Should not be modified\nmosip.kernel.jsonvalidator.file-storage-uri=LOCAL\n\n#----Properties required for Kernel's Auth-Service Component----\n\n#JWT Secret. Should not be modified\nauth.jwt.secret=authjwtsecret\n\n#JWT Base. Should not be modified\nauth.jwt.base=Mosip-Token\n\nmosip.kernel.packetmanager.cbeff_only_unique_tags=Y\n\n## ---------------------------------------------------\n\nmosip.registration.operator.onboarding.bioattributes=leftLittle,leftRing,leftMiddle,leftIndex,leftThumb,rightLittle,rightRing,rightMiddle,rightIndex,rightThumb,leftEye,rightEye,face\n\n#Check quality score of biometrics with SDK\nmosip.registration.quality_check_with_sdk=N\n\n#Replace MDS quality score of biometrics with SDK Quality Score\nmosip.registration.replace_sdk_quality_score=N\n\n#URL for reset password\n#mosip.registration.reset_password_url=${mosip.api.internal.url}/keycloak/auth/realms/mosip/account/\nmosip.registration.reset_password_url=${keycloak.external.url}/auth/realms/mosip/account\n#Flag to check / bypass device cert validation\n\nmosip.registration.onboard_yourself_url=https://docs.mosip.io/platform/modules/registration-client/first-user-registration-and-onboarding\nmosip.registration.registering_individual_url=https://docs.mosip.io/platform/modules/registration-client/registration-packet\nmosip.registration.sync_data_url=https://docs.mosip.io/platform/modules/registration-client/registration-functionality\nmosip.registration.mapping_devices_url=https://docs.mosip.io/platform/modules/registration-client/device-integration-specifications\nmosip.registration.uploading_data_url=https://docs.mosip.io/platform/modules/registration-client/ui-specification-for-registration-client\nmosip.registration.updating_biometrics_url=https://docs.mosip.io/platform/modules/registration-client/guide-to-configure-mosip-for-biometrics\n\nmosip.registration.mdm.validate.trust=true\n\n#Batch size for RID Sync Job\nmosip.registration.rid_sync_batch_size=5\n\n#Batch size for Packet Upload Job\nmosip.registration.packet_upload_batch_size=5\n\n#used to fill env in the MDM rcapture request\nmosip.registration.server_profile=Staging\n\n#Batch size for Packet Status Search Job\nmosip.registration.status_sync_batch_size=5\n\n# domain used for MDM trust validation\n# For L1 devices this should be FTM\nmosip.registration.mdm.trust.domain.rcapture=DEVICE\nmosip.registration.mdm.trust.domain.digitalId=DEVICE\nmosip.registration.mdm.trust.domain.deviceinfo=DEVICE\n\n# Below age ranges map should contain proper age group name and age range, any overlap of the age \n# range will result in a random behaviour of tagging. In range, upper and lower values are inclusive.\nmosip.regproc.packet.classifier.tagging.agegroup.ranges={'INFANT':'0-5','MINOR':'6-17','ADULT':'18-200'}\n\n# On every Pre-reg application fetch in registration page, clears all the captured data prior to pre-reg application fetch\n# set the field id's which should not be cleared after Pre-reg application fetch\n# it is comma separated list of field ids\nmosip.registration.fields.to.retain.post.prid.fetch=consent,consentText,preferredLang\n\n\n## Connection and read timeouts for MDM requests in millis\nmosip.registration.mdm.connection.timeout=10000\nmosip.registration.mdm.RCAPTURE.connection.timeout=40000\nmosip.registration.mdm.MOSIPDINFO.connection.timeout=5000\nmosip.registration.mdm.MOSIPDISC.connection.timeout=5000\n\nmosip.registration.HTTP_API_READ_TIMEOUT=60000\nmosip.registration.HTTP_API_WRITE_TIMEOUT=60000\n\n## Global properties\nmosip.right_to_left_orientation=${mosip.right_to_left_orientation}\nmosip.left_to_right_orientation=${mosip.left_to_right_orientation}\nmosip.mandatory-languages=${mosip.mandatory-languages}\nmosip.optional-languages=${mosip.optional-languages}\nmosip.min-languages.count=${mosip.min-languages.count}\nmosip.max-languages.count=${mosip.max-languages.count}\nmosip.kernel.keygenerator.symmetric-key-length=${mosip.kernel.keygenerator.symmetric-key-length}\nmosip.kernel.keygenerator.asymmetric-key-length=${mosip.kernel.keygenerator.asymmetric-key-length}\nmosip.kernel.keygenerator.asymmetric-algorithm-name=${mosip.kernel.keygenerator.asymmetric-algorithm-name}\nmosip.kernel.keygenerator.symmetric-algorithm-name=${mosip.kernel.keygenerator.symmetric-algorithm-name}\nmosip.kernel.crypto.symmetric-algorithm-name=${mosip.kernel.crypto.symmetric-algorithm-name}\nmosip.kernel.crypto.asymmetric-algorithm-name=${mosip.kernel.crypto.asymmetric-algorithm-name}\nmosip.kernel.crypto.gcm-tag-length=${mosip.kernel.crypto.gcm-tag-length}\nmosip.kernel.crypto.hash-symmetric-key-length=${mosip.kernel.crypto.hash-symmetric-key-length}\nmosip.kernel.crypto.hash-algorithm-name=${mosip.kernel.crypto.hash-algorithm-name}\nmosip.kernel.crypto.sign-algorithm-name=${mosip.kernel.crypto.sign-algorithm-name}\nmosip.kernel.crypto.hash-iteration=${mosip.kernel.crypto.hash-iteration}\nmosip.kernel.data-key-splitter=${mosip.kernel.data-key-splitter}\nmosip.kernel.signature.signature-request-id=${mosip.kernel.signature.signature-request-id}\nmosip.kernel.signature.signature-version-id=${mosip.kernel.signature.signature-version-id}\nmosip.kernel.prid.restricted-numbers=${mosip.kernel.prid.restricted-numbers}\nmosip.kernel.prid.length=${mosip.kernel.prid.length}\nmosip.kernel.prid.sequence-limit=${mosip.kernel.prid.sequence-limit}\nmosip.kernel.prid.repeating-block-limit=${mosip.kernel.prid.repeating-block-limit}\nmosip.kernel.prid.repeating-limit=${mosip.kernel.prid.repeating-limit}\nmosip.kernel.prid.not-start-with=${mosip.kernel.prid.not-start-with}\nmosip.kernel.uin.length=${mosip.kernel.uin.length}\nmosip.kernel.uin.restricted-numbers=${mosip.kernel.uin.restricted-numbers}\nmosip.kernel.uin.length.repeating-block-limit=${mosip.kernel.uin.length.repeating-block-limit}\nmosip.kernel.uin.length.sequence-limit=${mosip.kernel.uin.length.sequence-limit}\nmosip.kernel.uin.length.repeating-limit=${mosip.kernel.uin.length.repeating-limit}\nmosip.kernel.uin.length.conjugative-even-digits-limit=${mosip.kernel.uin.length.conjugative-even-digits-limit}\nmosip.kernel.uin.length.reverse-digits-limit=${mosip.kernel.uin.length.reverse-digits-limit}\nmosip.kernel.uin.length.digits-limit=${mosip.kernel.uin.length.digits-limit}\nmosip.kernel.vid.restricted-numbers=${mosip.kernel.vid.restricted-numbers}\nmosip.kernel.vid.not-start-with=${mosip.kernel.vid.not-start-with}\nmosip.kernel.vid.length.repeating-limit=${mosip.kernel.vid.length.repeating-limit}\nmosip.kernel.vid.length.repeating-block-limit=${mosip.kernel.vid.length.repeating-block-limit}\nmosip.kernel.vid.length.sequence-limit=${mosip.kernel.vid.length.sequence-limit}\nmosip.kernel.vid.length=${mosip.kernel.vid.length}\nmosip.kernel.registrationcenterid.length=${mosip.kernel.registrationcenterid.length}\nmosip.kernel.machineid.length=${mosip.kernel.machineid.length}\n## RID\nmosip.kernel.rid.length=${mosip.kernel.rid.length}\nmosip.kernel.rid.timestamp-length=${mosip.kernel.rid.timestamp-length}\nmosip.kernel.rid.sequence-length=${mosip.kernel.rid.sequence-length}\n## Virus scanner\n# Here we specify the Kubernetes service name if clamav runs inside cluster\nmosip.kernel.virus-scanner.host=${mosip.kernel.virus-scanner.host}\nmosip.kernel.virus-scanner.port=${mosip.kernel.virus-scanner.port}\nmosip.kernel.otp.expiry-time=${mosip.kernel.otp.expiry-time}\n## end of global properties\n\n#Property to support version upgrade. Version upgrade includes software upgrade and DB upgrade. During the DB upgrade, the DB scripts execution will be done based on the order of versions mentioned here.\n#While adding a new version here, please make sure that the releaseOrder is incremented sequentially.\n#The Manifest-Version in MANIFEST.MF in the backup folder which is created during software upgrade will be used as the previously installed version,\n# if nothing is found in the \"mosip.reg.services.current.version\".\n#After each DB migration script execution, the \"mosip.reg.services.current.version\" in the global-config will be updated to the version to which DB is migrated.\n#Note: 1.2.0.1-SNAPSHOT is retained, instead of 1.2.0.1 as the configuration was tagged with \"1.2.0.1-SNAPSHOT\" keyname during 1.2.0.2 stable release. Change in this keyname will lead to failure in identifying a migrated DB version.\n#Note: SI or country deployments should modify the version-mappings as per their release versions matching to MOSIP versions. DO NOT change the \"dbVersion\" or the \"releaseOrder\".\nmosip.registration.verion.upgrade.version-mappings={ \"1.1.4\":{ \"dbVersion\":\"1.1.4\", \"releaseOrder\":1}, \"1.1.5\":{ \"dbVersion\":\"1.1.5\", \"releaseOrder\":2}, \"1.1.5.5-P1\":{ \"dbVersion\":\"1.1.5.5\", \"releaseOrder\":3}, \"1.2.0.1-SNAPSHOT\":{ \"dbVersion\":\"1.2.0.1\", \"releaseOrder\":4, \"fullSyncEntities\":\"DynamicFieldDto\"}}\n\n## backward compatibility fields\nmosip.registration.uin.update.configured.fields=test\nmosip.primary-language=${mosip.primary-language}\nmosip.secondary-language=${mosip.secondary-language}\nmosip.registration.ideal_time=900\nmosip.kernel.applicant.type.age.limit=${mosip.kernel.applicant.type.age.limit}\n\n# Properties to set the handles, these handles can be used to login to resident portal on successful UIN generation\n# These handles should match with ID Schema in the environment\n# it is comma separated list of field ids\nmosip.registration.default-selected-handle-fields=\n\n# Parameters required for Backward Compatibility\n# These parameters needed for supporting previous versions of registration clients in case of upgraded env.\n\nmosip.registration.mdm.hostProtocol=http\nmosip.mdm.enabled=TRUE\nmosip.registration.ui_sync_data=y\nmosip.registration.Login_Credentials_Sync.frequency=190\nmosip.registration.consent_fra=\"Je comprends que les données recueillies à mon sujet lors de la enregistrement par ladite autorité comprennent mon -
    • nom
    • Date de naissance
    • genre
    • adresse
    • coordonnées
    • Documents
    Je comprends également que ces informations seront stockées et traitées dans le but de vérifier mon identité afin d'accéder à divers services, ou de se conformer à une obligation légale. Je donne mon consentement pour la collecte de ces données à cette fin.\"\nmosip.camera.resolution.width=2592\nmosip.registration.eod_process_config_flag=Y\nmosip.id.validation.identity.CNIENumber=^([0-9]{10,30})$\nmosip.registration.important_guidelines_eng=COUNTRY TO DEFINE THE TEXT OF GUIDELINES\nmosip.registration.mds.iris.dedup.enable.flag=N\nmosip.registration.mds.face.dedup.enable.flag=N\nmosip.registration.consent_eng=I understand that the data collected about me during registration by the said authority includes my -
    • Name
    • Date of birth
    • Gender
    • Address
    • Contact details
    • Documents
    I also understand that this information will be stored and processed for the purpose of verifying my identity in order to access various services, or to comply with a legal obligation. I give my consent for the collection of this data for this purpose. \nmosip.registration.cbeff_only_unique_tags=Y\ncurrent_mdm_spec=0.9.2\nmosip.registration.re_capture_time=10\nmosip.registration.fingerprint_enable_flag=Y\nmosip.registration.mds.fingerprint.dedup.enable.flag=N\nmosip.registration.important_guidelines_ara=COUNTRY TO DEFINE THE TEXT OF GUIDELINES\nmosip.registration.webcam_name=logitech\nmosip.registration.User_Role_Setup_Sync.frequency=190\nmosip.registration.face_recapture_time=5\nmosip.registration.key_policy_sync_threshold_value=1\nmosip.registration.send_notification_disable_flag=y\nmosip.registration.mdm.contextPath=\nmosip.registration.face_enable_flag=Y\nmosip.registration.important_guidelines_fra=COUNTRY TO DEFINE THE TEXT OF GUIDELINES\nmosip.id.validation.identity.referenceIdentityNumber=^([0-9]{10,30})$\nmosip.camera.resolution.height=1944\nmosip.registration.consent_ara=\" أدرك أن البيانات التي تم جمعها عني أثناء التسجيل من قِبل السلطة المذكورة تتضمن بياناتي -
    • الاسم
    • تاريخ الميلاد
    • نوع الجنس
    • العنوان
    • تفاصيل الاتصال
    • الوثائق
    كما أفهم أنه سيتم تخزين هذه المعلومات ومعالجتها بغرض التحقق من هويتي من أجل الوصول إلى خدمات مختلفة، أو الامتثال لالتزام قانوني. وأوافق على جمع هذه البيانات لهذا الغرض. \"\nmosip.registration.iris_enable_flag=Y\nmosip.registration.user_on_board_threshold_limit=1\nmosip.registration.quality_score=60\nmosip.registration.webcam_library_name=sarxos\nmosip.registration.DOCUMENT_SCANNER_DEPTH=100\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/mosip-config/blob/master/registration-processor-camel-routes-activate-default.xml", + "title": "registration-processor-camel-routes-activate-default.xml", + "repo": "mosip/mosip-config", + "file_path": "registration-processor-camel-routes-activate-default.xml", + "language": "xml", + "content": "\n \n securezone-notification activated route\">\n \n securezone-notification activated-route ${bodyAs(String)}\" />\n \n \n $.[?(@['isValid'] == false && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == true && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == false && @['internalError'] == false)]\n \n \n \n \n \n \n \n packet-uploader activated route\">\n \n packet-uploader activated route ${bodyAs(String)}\" />\n \n \n $.[?(@['isValid'] == false && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == true && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == false && @['internalError'] == false)]\n \n \n \n \n \n \n \n \n uin-generator activated route\">\n \n uin-generator activated route ${bodyAs(String)}\" />\n \n \n $.[?(@['isValid'] == false && @['internalError'] == true)]\n \n \n\n \n \n $.[?(@['isValid'] == true && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == false && @['internalError'] == false)]\n \n \n \n \n \n \n \n \n \n biometric-extraction-stage activated route\">\n \n biometric-extraction-stage route ${bodyAs(String)}\" />\n \n \n $.[?(@['isValid'] == false && @['internalError'] == true)]\n \n \n \n \n $.[?(@['isValid'] == true && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == false && @['internalError'] == false)]\n \n \n \n \n \n \n \n \n \n finalization-stage activated route\">\n \n finalization-stage route ${bodyAs(String)}\" />\n \n \n $.[?(@['isValid'] == false && @['internalError'] == true)]\n \n \n \n \n $.[?(@['isValid'] == true && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == false && @['internalError'] == false)]\n \n \n \n \n \n \n \n \n \n activated route\">\n \n activated route ${bodyAs(String)}\" />\n \n \n $.[?(@['isValid'] == false && @['internalError'] == true)]\n \n \n \n \n $.[?(@['isValid'] == true && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == false && @['internalError'] == false)]\n \n \n \n \n \n \n \n \n \n\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/mosip-config/blob/master/registration-processor-camel-routes-backward-compatibility-default.xml", + "title": "registration-processor-camel-routes-backward-compatibility-default.xml", + "repo": "mosip/mosip-config", + "file_path": "registration-processor-camel-routes-backward-compatibility-default.xml", + "language": "xml", + "content": "\n\n credential-requestor-bus-in route\">\n \n credential-requestor-bus-in route ${bodyAs(String)}\" />\n \n \n\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/mosip-config/blob/master/registration-processor-camel-routes-biometric-correction-default.xml", + "title": "registration-processor-camel-routes-biometric-correction-default.xml", + "repo": "mosip/mosip-config", + "file_path": "registration-processor-camel-routes-biometric-correction-default.xml", + "language": "xml", + "content": "\n securezone-notification biometric_correction route\">\n \n securezone-notification biometric_correction ${bodyAs(String)}\" />\n \n \n $.[?(@['isValid'] == false && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == true && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == false && @['internalError'] == false)]\n \n \n \n \n \n \n \n packet-uploader biometric_correction route\">\n \n packet-uploader biometric_correction route ${bodyAs(String)}\" />\n \n \n $.[?(@['isValid'] == false && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == true && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == false && @['internalError'] == false)]\n \n \n \n \n \n \n \n packet-validator biometric_correction route\">\n \n packet-validator biometric_correction route ${bodyAs(String)}\" />\n \n \n $.[?(@['isValid'] == false && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == true && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == false && @['internalError'] == false)]\n \n \n \n \n \n \n \n packet-classifier biometric_correction route\">\n \n packet-classifier new route ${bodyAs(String)}\" />\n \n \n $.[?(@['isValid'] == false && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == true && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == false && @['internalError'] == false)]\n \n \n \n \n \n \n \n cmd-validator biometric_correction route\">\n \n cmd-validator biometric_correction route ${bodyAs(String)}\" />\n \n \n $.[?(@['isValid'] == false && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == true && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == false && @['internalError'] == false)]\n \n \n \n \n \n \n \n operator-validator biometric_correction route\">\n \n operator-validator/supervisor-validator biometric_correction route ${bodyAs(String)}\" />\n \n \n $.[?(@['isValid'] == false && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == true && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == false && @['internalError'] == false)]\n \n \n \n $.[?(@['tags']['META_INFO-OPERATIONS_DATA-officerId'] != '' && @['tags']['META_INFO-OPERATIONS_DATA-officerId'] != '--TAG_VALUE_NOT_AVAILABLE--')]\n \n \n \n $.[?(@['tags']['META_INFO-OPERATIONS_DATA-supervisorId'] != '' && @['tags']['META_INFO-OPERATIONS_DATA-supervisorId'] != '--TAG_VALUE_NOT_AVAILABLE--')]\n \n \n \n \n \n \n \n supervisor-validator biometric_correction route\">\n \n supervisor-validator/introducer-validator/demo-dedupe biometric_correction route ${bodyAs(String)}\" />\n \n \n $.[?(@['isValid'] == false && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == true && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == false && @['internalError'] == false)]\n \n \n \n $.[?(@['tags']['META_INFO-OPERATIONS_DATA-supervisorId'] != '' && @['tags']['META_INFO-OPERATIONS_DATA-supervisorId'] != '--TAG_VALUE_NOT_AVAILABLE--')]\n \n \n \n $.[?(@['tags']['AGE_GROUP'] == 'INFANT' || @['tags']['AGE_GROUP'] == 'MINOR' || @['tags']['INTRODUCER_AVAILABILITY'] == 'true')]\n \n \n \n \n \n \n \n introducer-validator biometric_correction route\">\n \n introducer-validator/demo-dedupe biometric_correction route ${bodyAs(String)}\" />\n \n \n $.[?(@['isValid'] == false && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == true && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == false && @['internalError'] == false)]\n \n \n \n $.[?(@['tags']['AGE_GROUP'] == 'INFANT' || @['tags']['AGE_GROUP'] == 'MINOR' || @['tags']['INTRODUCER_AVAILABILITY'] == 'true')]\n \n \n \n \n \n \n \n resume parent biometric_correction route\">\n \n resume parent biometric_correction route ${bodyAs(String)}\" />\n \n \n $.[?(@['isValid'] == false && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == true && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == false && @['internalError'] == false)]\n \n \n \n \n \n \n \n \n\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/mosip-config/blob/master/registration-processor-camel-routes-crvs_death-default.xml", + "title": "registration-processor-camel-routes-crvs_death-default.xml", + "repo": "mosip/mosip-config", + "file_path": "registration-processor-camel-routes-crvs_death-default.xml", + "language": "xml", + "content": "\n \n packet-validator crvs_death route\">\n \n packet-validator crvs_death route ${bodyAs(String)}\" />\n \n \n $.[?(@['isValid'] == false && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == true && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == false && @['internalError'] == false)]\n \n \n \n \n \n \n \n \n packet-classifier crvs_death route\">\n \n packet-classifier crvs_death route ${bodyAs(String)}\" />\n \n \n $.[?(@['isValid'] == false && @['internalError'] == true)]\n \n \n \n \n $.[?(@['isValid'] == true && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == false && @['internalError'] == false)]\n \n \n \n \n \n \n \n \n cmd-validator crvs_death route\">\n \n cmd-validator crvs_death route ${bodyAs(String)}\" />\n \n \n $.[?(@['isValid'] == false && @['internalError'] == true)]\n \n \n \n \n $.[?(@['isValid'] == true && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == false && @['internalError'] == false)]\n \n \n \n \n \n \n \n \n operator-validator crvs_death route\">\n \n operator-validator/supervisor-validator crvs_death route ${bodyAs(String)}\" />\n \n \n $.[?(@['isValid'] == false && @['internalError'] == true)]\n \n \n \n \n $.[?(@['isValid'] == true && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == false && @['internalError'] == false)]\n \n \n \n \n $.[?(@['tags']['META_INFO-OPERATIONS_DATA-officerId'] != '' && @['tags']['META_INFO-OPERATIONS_DATA-officerId'] != '--TAG_VALUE_NOT_AVAILABLE--')]\n \n \n \n $.[?(@['tags']['META_INFO-OPERATIONS_DATA-supervisorId'] != '' && @['tags']['META_INFO-OPERATIONS_DATA-supervisorId'] != '--TAG_VALUE_NOT_AVAILABLE--')]\n \n \n \n \n \n \n \n \n supervisor-validator crvs_death route\">\n \n supervisor-validator/introducer-validator/uin-generator crvs_death route ${bodyAs(String)}\" />\n \n \n $.[?(@['isValid'] == false && @['internalError'] == true)]\n \n \n \n \n $.[?(@['isValid'] == true && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == false && @['internalError'] == false)]\n \n \n \n \n $.[?(@['tags']['META_INFO-OPERATIONS_DATA-supervisorId'] != '' && @['tags']['META_INFO-OPERATIONS_DATA-supervisorId'] != '--TAG_VALUE_NOT_AVAILABLE--')]\n \n \n \n \n \n \n \n \n \n introducer-validator crvs_death route\">\n \n introducer-validator/uin-generator-stage crvs_death route ${bodyAs(String)}\" />\n \n \n $.[?(@['isValid'] == false && @['internalError'] == true)]\n \n \n \n \n $.[?(@['isValid'] == true && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == false && @['internalError'] == false)]\n \n \n \n \n \n \n \n \n \n \n uin-generator crvs_death route\">\n \n uin-generator crvs_death route ${bodyAs(String)}\" />\n \n \n $.[?(@['isValid'] == false && @['internalError'] == true)]\n \n \n \n \n $.[?(@['isValid'] == true && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == false && @['internalError'] == false)]\n \n \n \n \n \n \n \n \n \n finalization-stage crvs_death route\">\n \n finalization-stage crvs_death route ${bodyAs(String)}\" />\n \n \n $.[?(@['isValid'] == false && @['internalError'] == true)]\n \n \n \n \n $.[?(@['isValid'] == true && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == false && @['internalError'] == false)]\n \n \n \n \n \n \n \n \n crvs_death route\">\n \n crvs_death route ${bodyAs(String)}\" />\n \n \n $.[?(@['isValid'] == false && @['internalError'] == true)]\n \n \n \n \n $.[?(@['isValid'] == true && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == false && @['internalError'] == false)]\n \n \n \n \n \n \n \n \n \n\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/mosip-config/blob/master/registration-processor-camel-routes-deactivate-default.xml", + "title": "registration-processor-camel-routes-deactivate-default.xml", + "repo": "mosip/mosip-config", + "file_path": "registration-processor-camel-routes-deactivate-default.xml", + "language": "xml", + "content": "\n \n securezone-notification deactivated route\">\n \n securezone-notification deactivated-route ${bodyAs(String)}\" />\n \n \n $.[?(@['isValid'] == false && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == true && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == false && @['internalError'] == false)]\n \n \n \n \n \n \n \n packet-uploader deactivated route\">\n \n packet-uploader deactivated route ${bodyAs(String)}\" />\n \n \n $.[?(@['isValid'] == false && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == true && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == false && @['internalError'] == false)]\n \n \n \n \n \n \n \n \n uin-generator deactivated route\">\n \n uin-generator deactivated route ${bodyAs(String)}\" />\n \n \n $.[?(@['isValid'] == false && @['internalError'] == true)]\n \n \n \n \n $.[?(@['isValid'] == true && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == false && @['internalError'] == false)]\n \n \n \n \n \n \n \n \n \n biometric-extraction-stage deactivated route\">\n \n biometric-extraction-stage route ${bodyAs(String)}\" />\n \n \n $.[?(@['isValid'] == false && @['internalError'] == true)]\n \n \n \n \n $.[?(@['isValid'] == true && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == false && @['internalError'] == false)]\n \n \n \n \n \n \n \n \n \n finalization-stage deactivated route\">\n \n finalization-stage route ${bodyAs(String)}\" />\n \n \n $.[?(@['isValid'] == false && @['internalError'] == true)]\n \n \n \n \n $.[?(@['isValid'] == true && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == false && @['internalError'] == false)]\n \n \n \n \n \n \n \n \n\t \n deactivated route\">\n \n deactivated route ${bodyAs(String)}\" />\n \n \n $.[?(@['isValid'] == false && @['internalError'] == true)]\n \n \n \n \n $.[?(@['isValid'] == true && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == false && @['internalError'] == false)]\n \n \n \n \n \n\t\t\t\n \n \n \n\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/mosip-config/blob/master/registration-processor-camel-routes-infant-crvs_new-default.xml", + "title": "registration-processor-camel-routes-infant-crvs_new-default.xml", + "repo": "mosip/mosip-config", + "file_path": "registration-processor-camel-routes-infant-crvs_new-default.xml", + "language": "xml", + "content": "\n \n packet-validator crvs_new route\">\n \n packet-validator crvs_new route ${bodyAs(String)}\" />\n \n \n $.[?(@['isValid'] == false && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == true && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == false && @['internalError'] == false)]\n \n \n \n \n \n \n \n \n packet-classifier crvs_new route\">\n \n packet-classifier crvs_new route ${bodyAs(String)}\" />\n \n \n $.[?(@['isValid'] == false && @['internalError'] == true)]\n \n \n \n \n $.[?(@['isValid'] == true && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == false && @['internalError'] == false)]\n \n \n \n \n \n \n \n \n \n cmd-validator crvs_new route\">\n \n cmd-validator crvs_new route ${bodyAs(String)}\" />\n \n \n $.[?(@['isValid'] == false && @['internalError'] == true)]\n \n \n \n \n $.[?(@['isValid'] == true && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == false && @['internalError'] == false)]\n \n \n \n \n \n \n \n \n operator-validator crvs_new route\">\n \n operator-validator/supervisor-validator crvs_new route ${bodyAs(String)}\" />\n \n \n $.[?(@['isValid'] == false && @['internalError'] == true)]\n \n \n \n \n $.[?(@['isValid'] == true && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == false && @['internalError'] == false)]\n \n \n \n \n $.[?(@['tags']['AGE_GROUP'] != 'INFANT')]\n \n \n \n \n \n $.[?(@['tags']['META_INFO-OPERATIONS_DATA-officerId'] != '' && @['tags']['META_INFO-OPERATIONS_DATA-officerId'] != '--TAG_VALUE_NOT_AVAILABLE--')]\n \n \n \n $.[?(@['tags']['META_INFO-OPERATIONS_DATA-supervisorId'] != '' && @['tags']['META_INFO-OPERATIONS_DATA-supervisorId'] != '--TAG_VALUE_NOT_AVAILABLE--')]\n \n \n \n \n \n \n \n \n supervisor-validator crvs_new route\">\n \n supervisor-validator/introducer-validator/demo-dedupe crvs_new route ${bodyAs(String)}\" />\n \n \n $.[?(@['isValid'] == false && @['internalError'] == true)]\n \n \n \n \n $.[?(@['isValid'] == true && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == false && @['internalError'] == false)]\n \n \n \n \n $.[?(@['tags']['META_INFO-OPERATIONS_DATA-supervisorId'] != '' && @['tags']['META_INFO-OPERATIONS_DATA-supervisorId'] != '--TAG_VALUE_NOT_AVAILABLE--')]\n \n \n \n \n \n \n \n \n \n introducer-validator crvs_new route\">\n \n introducer-validator/demo-dedupe crvs_new route ${bodyAs(String)}\" />\n \n \n $.[?(@['isValid'] == false && @['internalError'] == true)]\n \n \n \n \n $.[?(@['isValid'] == true && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == false && @['internalError'] == false)]\n \n \n \n \n \n \n \n \n \n \n demo-dedupe crvs_new route\">\n \n demo-dedupe crvs_new route ${bodyAs(String)}\" />\n \n \n $.[?(@['isValid'] == false && @['internalError'] == true)]\n \n \n \n \n $.[?(@['isValid'] == true && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == false && @['internalError'] == false)]\n \n \n \n \n \n \n \n \n uin-generator crvs_new route\">\n \n uin-generator crvs_new route ${bodyAs(String)}\" />\n \n \n $.[?(@['isValid'] == false && @['internalError'] == true)]\n \n \n \n \n $.[?(@['isValid'] == false && @['internalError'] == false)]\n \n \n \n \n $.[?(@['isValid'] == false && @['internalError'] == false)]\n \n \n \n \n \n \n \n \n \n finalization-stage crvs_new route\">\n \n finalization-stage crvs_new route ${bodyAs(String)}\" />\n \n \n $.[?(@['isValid'] == false && @['internalError'] == true)]\n \n \n \n \n $.[?(@['isValid'] == true && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == false && @['internalError'] == false)]\n \n \n \n \n \n \n \n \n \n \n credential-requestor-stage crvs_new route\">\n \n credential-requestor-stage crvs_new route ${bodyAs(String)}\" />\n \n \n $.[?(@['isValid'] == false && @['internalError'] == true)]\n \n \n \n \n $.[?(@['isValid'] == true && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == false && @['internalError'] == false)]\n \n \n \n \n \n \n \n \n crvs_new route\">\n \n crvs_new route ${bodyAs(String)}\" />\n \n \n $.[?(@['isValid'] == false && @['internalError'] == true)]\n \n \n \n \n $.[?(@['isValid'] == true && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == false && @['internalError'] == false)]\n \n \n \n \n \n \n \n \n \n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/mosip-config/blob/master/registration-processor-camel-routes-lost-default.xml", + "title": "registration-processor-camel-routes-lost-default.xml", + "repo": "mosip/mosip-config", + "file_path": "registration-processor-camel-routes-lost-default.xml", + "language": "xml", + "content": "\n \n securezone-notification lost route\">\n \n securezone-notification ${bodyAs(String)}\" />\n \n \n $.[?(@['isValid'] == false && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == true && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == false && @['internalError'] == false)]\n \n \n \n \n \n \n \n \n packet-uploader lost route\">\n \n packet-uploader lost route ${bodyAs(String)}\" />\n \n \n $.[?(@['isValid'] == false && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == true && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == false && @['internalError'] == false)]\n \n \n \n \n \n \n \n \n packet-validator lost route\">\n \n packet-validator lost route ${bodyAs(String)}\" />\n \n \n $.[?(@['isValid'] == false && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == true && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == false && @['internalError'] == false)]\n \n \n \n \n \n \n \n \n packet-classifier lost route\">\n \n packet-classifier lost route ${bodyAs(String)}\" />\n \n \n $.[?(@['isValid'] == false && @['internalError'] == true)]\n \n \n \n \n $.[?(@['isValid'] == true && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == false && @['internalError'] == false)]\n \n \n \n \n \n \n \n \n \n cmd-validator lost route\">\n \n cmd-validator lost route ${bodyAs(String)}\" />\n \n \n $.[?(@['isValid'] == false && @['internalError'] == true)]\n \n \n \n \n $.[?(@['isValid'] == true && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == false && @['internalError'] == false)]\n \n \n \n \n \n \n \n \n operator-validator lost route\">\n \n operator-validator/supervisor-validator lost route ${bodyAs(String)}\" />\n \n \n $.[?(@['isValid'] == false && @['internalError'] == true)]\n \n \n \n \n $.[?(@['isValid'] == true && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == false && @['internalError'] == false)]\n \n \n \n \n $.[?(@['tags']['META_INFO-OPERATIONS_DATA-officerId'] != '' && @['tags']['META_INFO-OPERATIONS_DATA-officerId'] != '--TAG_VALUE_NOT_AVAILABLE--')]\n \n \n \n $.[?(@['tags']['META_INFO-OPERATIONS_DATA-supervisorId'] != '' && @['tags']['META_INFO-OPERATIONS_DATA-supervisorId'] != '--TAG_VALUE_NOT_AVAILABLE--')]\n \n \n \n \n \n \n \n \n supervisor-validator lost route\">\n \n supervisor-validator/bio-dedupe lost route ${bodyAs(String)}\" />\n \n \n $.[?(@['isValid'] == false && @['internalError'] == true)]\n \n \n \n \n $.[?(@['isValid'] == true && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == false && @['internalError'] == false)]\n \n \n \n \n $.[?(@['tags']['META_INFO-OPERATIONS_DATA-supervisorId'] != '' && @['tags']['META_INFO-OPERATIONS_DATA-supervisorId'] != '--TAG_VALUE_NOT_AVAILABLE--')]\n \n \n \n \n \n \n \n introducer-validator lost route\">\n \n introducer-validator/quality-classifier lost route ${bodyAs(String)}\" />\n \n \n $.[?(@['isValid'] == false && @['internalError'] == true)]\n \n \n \n \n $.[?(@['isValid'] == true && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == false && @['internalError'] == false)]\n \n \n \n \n $.[?(@['tags']['AGE_GROUP'] == 'INFANT' || @['tags']['AGE_GROUP'] == 'MINOR' || @['tags']['INTRODUCER_AVAILABILITY'] == 'true')]\n \n \n \n \n \n \n \n quality-classifier lost route\">\n \n quality-classifier lost route ${bodyAs(String)}\" />\n \n \n $.[?(@['isValid'] == false && @['internalError'] == true)]\n \n \n \n \n $.[?(@['isValid'] == true && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == false && @['internalError'] == false)]\n \n \n \n \n \n \n \n \n bio-dedupe lost route\">\n \n bio-dedupe lost route ${bodyAs(String)}\" />\n \n \n $.[?(@['isValid'] == false && @['internalError'] == true)]\n \n \n \n \n $.[?(@['isValid'] == true && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == false && @['internalError'] == false)]\n \n \n \n \n $.[?(@['tags']['BIOMETRIC_CORRECTION_FLOW_STATUS'] in ['FAILED'] || @['tags']['BIOMETRIC_CORRECTION_FLOW_STATUS'] in ['REJECTED'])]\n BIOMETRIC_CORRECTION\n 1296000\n \n \n \n $.[?(@['tags']['Biometric_Quality-Iris'] in ['level-4','level-5','level-6','level-7','level-8','level-9','level-10','--Biometrics-Not-Available--'] && @['tags']['Biometric_Quality-Finger'] in ['level-4','level-5','level-6','level-7','level-8','level-9','level-10','--Biometrics-Not-Available--'] && @['tags']['Biometric_Quality-Face'] in ['level-4','level-5','level-6','level-7','level-8','level-9','level-10','--Biometrics-Not-Available--'])]\n \n \n \n $.[?(@['tags']['Biometric_Quality-Iris'] in ['level-1','level-2','level-3'] || @['tags']['Biometric_Quality-Finger'] in ['level-1','level-2','level-3'] || @['tags']['Biometric_Quality-Face'] in ['level-1','level-2','level-3'])]\n BIOMETRIC_CORRECTION\n \n 1296000\n \n \n \n \n \n \n \n \n uin-generation lost route\">\n \n uin-generation lost route ${bodyAs(String)}\" />\n \n \n $.[?(@['isValid'] == false && @['internalError'] == true)]\n \n \n \n \n $.[?(@['isValid'] == true && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == false && @['internalError'] == false)]\n \n \n \n \n $.[?(@['messageBusAddress']['address'] == 'verification-bus-in')]\n \n \n \n $.[?(@['messageBusAddress']['address'] == 'abis-handler-bus-in')]\n \n \n \n $.[?(@['messageBusAddress']['address'] == 'manual-adjudication-bus-in')]\n \n \n \n \n \n \n \n uin-generator lost route\">\n \n uin-generator lost route ${bodyAs(String)}\" />\n \n \n $.[?(@['isValid'] == false && @['internalError'] == true)]\n \n \n \n \n $.[?(@['isValid'] == true && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == false && @['internalError'] == false)]\n \n \n \n \n \n \n \n \n abis-middleware lost route\">\n \n abis-middleware lost route ${bodyAs(String)}\" />\n \n \n $.[?(@['isValid'] == false && @['internalError'] == true)]\n \n \n \n \n $.[?(@['isValid'] == true && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == false && @['internalError'] == false)]\n \n \n \n \n $.[?(@['messageBusAddress']['address'] == 'abis-middle-ware-bus-in')]\n \n \n \n $.[?(@['messageBusAddress']['address'] == 'bio-dedupe-bus-in')]\n \n \n\t\t \n \n \n \n \n \n abis-handler lost route\">\n \n abis-handler lost route ${bodyAs(String)}\" />\n \n $.[?(@['isValid'] == false && @['internalError'] == true)]\n \n \n \n \n $.[?(@['isValid'] == true && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == false && @['internalError'] == false)]\n \n \n \n \n \n \n \n uin-generation lost route\">\n \n uin-generation lost route ${bodyAs(String)}\" />\n \n \n $.[?(@['isValid'] == false && @['internalError'] == true)]\n \n \n \n \n $.[?(@['isValid'] == true && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == false && @['internalError'] == false)]\n \n \n \n \n \n \n \n \n\t\n biometric-extraction-stage lost route\">\n \n biometric-extraction-stage route ${bodyAs(String)}\" />\n \n \n $.[?(@['isValid'] == false && @['internalError'] == true)]\n \n \n \n \n $.[?(@['isValid'] == true && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == false && @['internalError'] == false)]\n \n \n \n \n \n \n \n \n \n finalization-stage lost route\">\n \n finalization-stage route ${bodyAs(String)}\" />\n \n \n $.[?(@['isValid'] == false && @['internalError'] == true)]\n \n \n \n \n $.[?(@['isValid'] == true && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == false && @['internalError'] == false)]\n \n \n \n \n \n \n \n \n\t \n credential-requestor-stage lost route\">\n \n credential-requestor-stage lost route ${bodyAs(String)}\" />\n \n \n $.[?(@['isValid'] == false && @['internalError'] == true)]\n \n \n \n \n $.[?(@['isValid'] == true && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == false && @['internalError'] == false)]\n \n \n \n \n \n \n \n \n lost route\">\n \n route ${bodyAs(String)}\" />\n \n \n $.[?(@['isValid'] == false && @['internalError'] == true)]\n \n \n \n \n $.[?(@['isValid'] == true && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == false && @['internalError'] == false)]\n \n \n \n \n \n \n \n \n \n\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/mosip-config/blob/master/registration-processor-camel-routes-new-default.xml", + "title": "registration-processor-camel-routes-new-default.xml", + "repo": "mosip/mosip-config", + "file_path": "registration-processor-camel-routes-new-default.xml", + "language": "xml", + "content": "\n securezone-notification new route\">\n \n securezone-notification new ${bodyAs(String)}\" />\n \n \n $.[?(@['isValid'] == false && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == true && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == false && @['internalError'] == false)]\n \n \n \n \n \n \n \n \n packet-uploader new route\">\n \n packet-uploader new route ${bodyAs(String)}\" />\n \n \n $.[?(@['isValid'] == false && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == true && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == false && @['internalError'] == false)]\n \n \n \n \n \n \n \n \n packet-validator new route\">\n \n packet-validator new route ${bodyAs(String)}\" />\n \n \n $.[?(@['isValid'] == false && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == true && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == false && @['internalError'] == false)]\n \n \n \n \n \n \n \n \n packet-classifier new route\">\n \n packet-classifier new route ${bodyAs(String)}\" />\n \n \n $.[?(@['isValid'] == false && @['internalError'] == true)]\n \n \n \n \n $.[?(@['isValid'] == true && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == false && @['internalError'] == false)]\n \n \n \n \n \n \n \n \n \n cmd-validator new route\">\n \n quality-classifier new route ${bodyAs(String)}\" />\n \n \n $.[?(@['isValid'] == false && @['internalError'] == true)]\n \n \n \n \n $.[?(@['isValid'] == true && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == false && @['internalError'] == false)]\n \n \n \n \n \n \n \n \n operator-validator new route\">\n \n operator-validator/supervisor-validator new route ${bodyAs(String)}\" />\n \n \n $.[?(@['isValid'] == false && @['internalError'] == true)]\n \n \n \n \n $.[?(@['isValid'] == true && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == false && @['internalError'] == false)]\n \n \n \n \n $.[?(@['tags']['META_INFO-OPERATIONS_DATA-officerId'] != '' && @['tags']['META_INFO-OPERATIONS_DATA-officerId'] != '--TAG_VALUE_NOT_AVAILABLE--')]\n \n \n \n $.[?(@['tags']['META_INFO-OPERATIONS_DATA-supervisorId'] != '' && @['tags']['META_INFO-OPERATIONS_DATA-supervisorId'] != '--TAG_VALUE_NOT_AVAILABLE--')]\n \n \n \n \n \n \n \n \n supervisor-validator new route\">\n \n supervisor-validator/introducer-validator/demo-dedupe new route ${bodyAs(String)}\" />\n \n \n $.[?(@['isValid'] == false && @['internalError'] == true)]\n \n \n \n \n $.[?(@['isValid'] == true && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == false && @['internalError'] == false)]\n \n \n \n \n $.[?(@['tags']['META_INFO-OPERATIONS_DATA-supervisorId'] != '' && @['tags']['META_INFO-OPERATIONS_DATA-supervisorId'] != '--TAG_VALUE_NOT_AVAILABLE--')]\n \n \n \n $.[?(@['tags']['AGE_GROUP'] == 'INFANT' || @['tags']['AGE_GROUP'] == 'MINOR' || @['tags']['INTRODUCER_AVAILABILITY'] == 'true')]\n \n \n \n \n \n \n \n introducer-validator new route\">\n \n introducer-validator/demo-dedupe new route ${bodyAs(String)}\" />\n \n \n $.[?(@['isValid'] == false && @['internalError'] == true)]\n \n \n \n \n $.[?(@['isValid'] == true && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == false && @['internalError'] == false)]\n \n \n \n \n $.[?(@['tags']['AGE_GROUP'] == 'INFANT' || @['tags']['AGE_GROUP'] == 'MINOR' || @['tags']['INTRODUCER_AVAILABILITY'] == 'true')]\n \n \n \n \n \n \n \n quality-classifier new route\">\n \n quality-classifier new route ${bodyAs(String)}\" />\n \n \n $.[?(@['isValid'] == false && @['internalError'] == true)]\n \n \n \n \n $.[?(@['isValid'] == true && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == false && @['internalError'] == false)]\n \n \n \n \n \n \n \n \n demo-dedupe new route\">\n \n demo-dedupe new route ${bodyAs(String)}\" />\n \n \n $.[?(@['isValid'] == false && @['internalError'] == true)]\n \n \n \n \n $.[?(@['isValid'] == true && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == false && @['internalError'] == false)]\n \n \n \n \n $.[?(@['tags']['BIOMETRIC_CORRECTION_FLOW_STATUS'] in ['FAILED'] || @['tags']['BIOMETRIC_CORRECTION_FLOW_STATUS'] in ['REJECTED'])]\n BIOMETRIC_CORRECTION\n 1296000\n \n \n \n $.[?(@['tags']['Biometric_Quality-Iris'] in ['level-4','level-5','level-6','level-7','level-8','level-9','level-10','--Biometrics-Not-Available--'] && @['tags']['Biometric_Quality-Finger'] in ['level-4','level-5','level-6','level-7','level-8','level-9','level-10','--Biometrics-Not-Available--'] && @['tags']['Biometric_Quality-Face'] in ['level-4','level-5','level-6','level-7','level-8','level-9','level-10','--Biometrics-Not-Available--'])]\n \n \n \n $.[?(@['tags']['Biometric_Quality-Iris'] in ['level-1','level-2','level-3'] || @['tags']['Biometric_Quality-Finger'] in ['level-1','level-2','level-3'] || @['tags']['Biometric_Quality-Face'] in ['level-1','level-2','level-3'])]\n BIOMETRIC_CORRECTION\n \n 1296000\n \n \n \n \n \n \n \n \n bio-dedupe new route\">\n \n bio-dedupe new route ${bodyAs(String)}\" />\n \n \n $.[?(@['isValid'] == false && @['internalError'] == true)]\n \n \n \n \n $.[?(@['isValid'] == false && @['internalError'] == false)]\n \n \n \n \n $.[?(@['tags']['EXCEPTION_BIOMETRICS'] != 'LL,LR,LM,LI,LT,RL,RR,RM,RI,RT,LE,RE' && @['isValid'] == true && @['messageBusAddress']['address'] == 'abis-handler-bus-in' && @['internalError'] == false)]\n \n \n \n $.[?(@['messageBusAddress']['address'] == 'manual-adjudication-bus-in')]\n \n \n\t\t \n $.[?(@['tags']['AGE_GROUP'] == 'INFANT')]\n \n \n\t\t \n $.[?(@['tags']['EXCEPTION_BIOMETRICS'] == 'LL,LR,LM,LI,LT,RL,RR,RM,RI,RT,LE,RE' && @['isValid'] == true && @['internalError'] == false)]\n \n \n\t\t \n $.[?(@['tags']['EXCEPTION_BIOMETRICS'] != 'LL,LR,LM,LI,LT,RL,RR,RM,RI,RT,LE,RE' && @['isValid'] == true && @['internalError'] == false)]\n \n \n\t\t \n $.[?(@['tags']['AGE_GROUP'] == 'INFANT')]\n \n \n \n \n \n \n \n \n abis-middleware new route\">\n \n abis-middleware new route ${bodyAs(String)}\" />\n \n \n $.[?(@['isValid'] == false && @['internalError'] == true)]\n \n \n \n \n $.[?(@['isValid'] == true && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == false && @['internalError'] == false)]\n \n \n \n \n $.[?(@['messageBusAddress']['address'] == 'abis-middle-ware-bus-in')]\n \n \n \n $.[?(@['messageBusAddress']['address'] == 'demo-dedupe-bus-in')]\n \n \n \n $.[?(@['messageBusAddress']['address'] == 'bio-dedupe-bus-in')]\n \n \n\t\t \n \n \n \n \n \n uin-generation new route\">\n \n uin-generation new route ${bodyAs(String)}\" />\n \n \n $.[?(@['isValid'] == false && @['internalError'] == true)]\n \n \n \n \n $.[?(@['isValid'] == true && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == false && @['internalError'] == false)]\n \n \n \n \n $.[?(@['messageBusAddress']['address'] == 'verification-bus-in')]\n \n \n \n $.[?(@['messageBusAddress']['address'] == 'abis-handler-bus-in')]\n \n \n \n $.[?(@['messageBusAddress']['address'] == 'manual-adjudication-bus-in')]\n \n \n \n \n \n \n \n uin-generator new route\">\n \n uin-generator new route ${bodyAs(String)}\" />\n \n \n $.[?(@['isValid'] == false && @['internalError'] == true)]\n \n \n \n \n $.[?(@['isValid'] == true && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == false && @['internalError'] == false)]\n \n \n \n \n \n \n \n \n abis-handler new route\">\n \n abis-handler new route ${bodyAs(String)}\" />\n \n \n $.[?(@['isValid'] == false && @['internalError'] == true)]\n \n \n \n \n $.[?(@['isValid'] == true && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == false && @['internalError'] == false)]\n \n \n \n \n \n \n \n \n uin-generation new route\">\n \n uin-generation new route ${bodyAs(String)}\" />\n \n \n $.[?(@['isValid'] == false && @['internalError'] == true)]\n \n \n \n \n $.[?(@['isValid'] == true && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == false && @['internalError'] == false)]\n \n \n \n \n \n \n \n \n \n biometric-extraction-stage new route\">\n \n biometric-extraction-stage route ${bodyAs(String)}\" />\n \n \n $.[?(@['isValid'] == false && @['internalError'] == true)]\n \n \n \n \n $.[?(@['isValid'] == true && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == false && @['internalError'] == false)]\n \n \n \n \n \n \n \n \n \n \n finalization-stage new route\">\n \n finalization-stage route ${bodyAs(String)}\" />\n \n \n $.[?(@['isValid'] == false && @['internalError'] == true)]\n \n \n \n \n $.[?(@['isValid'] == true && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == false && @['internalError'] == false)]\n \n \n \n \n \n \n \n \n \n credential-requestor-stage new route\">\n \n credential-requestor-stage route ${bodyAs(String)}\" />\n \n \n $.[?(@['isValid'] == false && @['internalError'] == true)]\n \n \n \n \n $.[?(@['isValid'] == true && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == false && @['internalError'] == false)]\n \n \n \n \n \n \n \n \n new route\">\n \n route ${bodyAs(String)}\" />\n \n \n $.[?(@['isValid'] == false && @['internalError'] == true)]\n \n \n \n \n $.[?(@['isValid'] == true && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == false && @['internalError'] == false)]\n \n \n \n \n \n \n \n \n \n\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/mosip-config/blob/master/registration-processor-camel-routes-opencrvs_new-default.xml", + "title": "registration-processor-camel-routes-opencrvs_new-default.xml", + "repo": "mosip/mosip-config", + "file_path": "registration-processor-camel-routes-opencrvs_new-default.xml", + "language": "xml", + "content": "\n securezone-notification opencrvs_new route\">\n \n securezone-notification opencrvs_new ${bodyAs(String)}\" />\n \n \n $.[?(@['isValid'] == false && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == true && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == false && @['internalError'] == false)]\n \n \n \n \n \n \n \n packet-uploader opencrvs_new route\">\n \n packet-uploader opencrvs_new route ${bodyAs(String)}\" />\n \n \n $.[?(@['isValid'] == false && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == true && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == false && @['internalError'] == false)]\n \n \n \n \n \n \n \n packet-validator opencrvs_new route\">\n \n packet-validator opencrvs_new route ${bodyAs(String)}\" />\n \n \n $.[?(@['isValid'] == false && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == true && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == false && @['internalError'] == false)]\n \n \n \n \n \n \n \n packet-classifier opencrvs_new route\">\n \n packet-classifier opencrvs_new route ${bodyAs(String)}\" />\n \n \n $.[?(@['isValid'] == false && @['internalError'] == true)]\n \n \n \n \n $.[?(@['isValid'] == true && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == false && @['internalError'] == false)]\n \n \n \n \n \n \n \n \n demo-dedupe opencrvs_new route\">\n \n introducer-validator/demo-dedupe opencrvs_new route ${bodyAs(String)}\" />\n \n \n $.[?(@['isValid'] == false && @['internalError'] == true)]\n \n \n \n \n $.[?(@['isValid'] == true && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == false && @['internalError'] == false)]\n \n \n \n \n $.[?((@['tags']['AGE_GROUP'] == 'INFANT' || @['tags']['AGE_GROUP'] == 'MINOR') && @['tags']['INTRODUCER_AVAILABILITY'] == 'true')]\n \n \n \n \n \n \n \n demo-dedupe opencrvs_new route\">\n \n demo-dedupe opencrvs_new route ${bodyAs(String)}\" />\n \n \n $.[?(@['isValid'] == false && @['internalError'] == true)]\n \n \n \n \n $.[?(@['isValid'] == true && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == false && @['internalError'] == false)]\n \n \n \n \n \n \n \n \n uin-generator opencrvs_new route\">\n \n uin-generator opencrvs_new route ${bodyAs(String)}\" />\n \n \n $.[?(@['isValid'] == false && @['internalError'] == true)]\n \n \n \n \n $.[?(@['isValid'] == true && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == false && @['internalError'] == false)]\n \n \n \n\t\t \n $.[?(@['tags']['AGE_GROUP'] == 'INFANT')]\n \n \n\t\t \n $.[?(@['tags']['EXCEPTION_BIOMETRICS'] == 'LL,LR,LM,LI,LT,RL,RR,RM,RI,RT,LE,RE' && @['isValid'] == true && @['internalError'] == false)]\n \n \n\t\t \n $.[?(@['tags']['EXCEPTION_BIOMETRICS'] != 'LL,LR,LM,LI,LT,RL,RR,RM,RI,RT,LE,RE' && @['isValid'] == true && @['internalError'] == false)]\n \n \n \n \n \n \n \n \n uin-generator opencrvs_new route\">\n \n uin-generator opencrvs_new route ${bodyAs(String)}\" />\n \n \n $.[?(@['isValid'] == false && @['internalError'] == true)]\n \n \n \n \n $.[?(@['isValid'] == true && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == false && @['internalError'] == false)]\n \n \n \n \n \n \n \n \n finalization opencrvs_new route\">\n \n finalization opencrvs_new route ${bodyAs(String)}\" />\n \n \n $.[?(@['isValid'] == false && @['internalError'] == true)]\n \n \n \n \n $.[?(@['isValid'] == true && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == false && @['internalError'] == false)]\n \n \n \n \n \n \n \n \n \n credential-requestor-stage opencrvs_new route\">\n \n credential-requestor-stage opencrvs_new route ${bodyAs(String)}\" />\n \n \n $.[?(@['isValid'] == false && @['internalError'] == true)]\n \n \n \n \n $.[?(@['isValid'] == true && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == false && @['internalError'] == false)]\n \n \n \n \n \n \n \n \n opencrvs-stage opencrvs_new route\">\n \n opencrvs-stage opencrvs_new route ${bodyAs(String)}\" />\n \n \n $.[?(@['isValid'] == false && @['internalError'] == true)]\n \n \n \n \n $.[?(@['isValid'] == true && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == false && @['internalError'] == false)]\n \n \n \n \n \n \n \n \n opencrvs_new route\">\n \n opencrvs_new route ${bodyAs(String)}\" />\n \n \n $.[?(@['isValid'] == true && @['internalError'] == true)]\n \n \n \n \n \n \n \n \n\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/mosip-config/blob/master/registration-processor-camel-routes-res-reprint-default.xml", + "title": "registration-processor-camel-routes-res-reprint-default.xml", + "repo": "mosip/mosip-config", + "file_path": "registration-processor-camel-routes-res-reprint-default.xml", + "language": "xml", + "content": "\n \n securezone-notification res_reprint route\">\n \n securezone-notification res_reprint ${bodyAs(String)}\" />\n \n \n $.[?(@['isValid'] == false && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == true && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == false && @['internalError'] == false)]\n \n \n \n \n \n \n \n \n packet-uploader res_reprint route\">\n \n packet-uploader res_reprint route ${bodyAs(String)}\" />\n \n \n $.[?(@['isValid'] == false && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == true && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == false && @['internalError'] == false)]\n \n \n \n \n \n \n \n \n credential-requestor-stage res_reprint route\">\n \n credential-requestor-stage res_reprint route ${bodyAs(String)}\" />\n \n \n $.[?(@['isValid'] == false && @['internalError'] == true)]\n \n \n \n \n $.[?(@['isValid'] == true && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == false && @['internalError'] == false)]\n \n \n \n \n \n \n \n \n res_reprint route\">\n \n route ${bodyAs(String)}\" />\n \n \n $.[?(@['isValid'] == false && @['internalError'] == true)]\n \n \n \n \n $.[?(@['isValid'] == true && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == false && @['internalError'] == false)]\n \n \n \n \n \n \n \n \n \n\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/mosip-config/blob/master/registration-processor-camel-routes-res-update-default.xml", + "title": "registration-processor-camel-routes-res-update-default.xml", + "repo": "mosip/mosip-config", + "file_path": "registration-processor-camel-routes-res-update-default.xml", + "language": "xml", + "content": "\n \n securezone-notification res_update route\">\n \n securezone-notification res_update ${bodyAs(String)}\" />\n \n \n $.[?(@['isValid'] == false && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == true && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == false && @['internalError'] == false)]\n \n \n \n \n \n \n \n \n packet-uploader res_update route\">\n \n packet-uploader res_update route ${bodyAs(String)}\" />\n \n \n $.[?(@['isValid'] == false && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == true && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == false && @['internalError'] == false)]\n \n \n \n \n \n \n \n \n packet-validator res_update route\">\n \n packet-validator res_update route ${bodyAs(String)}\" />\n \n \n $.[?(@['isValid'] == false && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == true && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == false && @['internalError'] == false)]\n \n \n \n \n \n \n \n demo-dedupe res_update route\">\n \n demo-dedupe res_update route ${bodyAs(String)}\" />\n \n \n $.[?(@['isValid'] == false && @['internalError'] == true)]\n \n \n \n \n $.[?(@['isValid'] == true && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == false && @['internalError'] == false)]\n \n \n \n \n \n \n \n \n uin-generation res_update route\">\n \n uin-generation res_update route ${bodyAs(String)}\" />\n \n \n $.[?(@['isValid'] == false && @['internalError'] == true)]\n \n \n \n \n $.[?(@['isValid'] == true && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == false && @['internalError'] == false)]\n \n \n \n \n $.[?(@['messageBusAddress']['address'] == 'abis-handler-bus-in')]\n \n \n \n \n \n \n \n abis-middleware res_update route\">\n \n abis-middleware res_update route ${bodyAs(String)}\" />\n \n \n $.[?(@['isValid'] == false && @['internalError'] == true)]\n \n \n \n \n $.[?(@['isValid'] == true && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == false && @['internalError'] == false)]\n \n \n \n \n $.[?(@['messageBusAddress']['address'] == 'abis-middle-ware-bus-in')]\n \n \n \n $.[?(@['messageBusAddress']['address'] == 'demo-dedupe-bus-in')]\n \n \n \n $.[?(@['messageBusAddress']['address'] == 'bio-dedupe-bus-in')]\n \n \n\t\t \n \n \n \n \n \n uin-generation res_update route\">\n \n uin-generation res_update route ${bodyAs(String)}\" />\n \n \n $.[?(@['isValid'] == false && @['internalError'] == true)]\n \n \n \n \n $.[?(@['isValid'] == true && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == false && @['internalError'] == false)]\n \n \n \n \n \n \n \n \n\t\n biometric-extraction-stage res_update route\">\n \n biometric-extraction-stage route ${bodyAs(String)}\" />\n \n \n $.[?(@['isValid'] == false && @['internalError'] == true)]\n \n \n \n \n $.[?(@['isValid'] == true && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == false && @['internalError'] == false)]\n \n \n \n \n \n \n \n \n \n finalization-stage res_update route\">\n \n finalization-stage route ${bodyAs(String)}\" />\n \n \n $.[?(@['isValid'] == false && @['internalError'] == true)]\n \n \n \n \n $.[?(@['isValid'] == true && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == false && @['internalError'] == false)]\n \n \n \n \n \n \n \n \n\t \n credential-requestor-stage res_update route\">\n \n credential-requestor-stage res_update route ${bodyAs(String)}\" />\n \n \n $.[?(@['isValid'] == false && @['internalError'] == true)]\n \n \n \n \n $.[?(@['isValid'] == true && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == false && @['internalError'] == false)]\n \n \n \n \n \n \n \n \n res_update route\">\n \n route ${bodyAs(String)}\" />\n \n \n $.[?(@['isValid'] == false && @['internalError'] == true)]\n \n \n \n \n $.[?(@['isValid'] == true && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == false && @['internalError'] == false)]\n \n \n \n \n \n \n \n \n \n\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/mosip-config/blob/master/registration-processor-camel-routes-update-default.xml", + "title": "registration-processor-camel-routes-update-default.xml", + "repo": "mosip/mosip-config", + "file_path": "registration-processor-camel-routes-update-default.xml", + "language": "xml", + "content": "\n \n securezone-notification update route\">\n \n securezone-notification update ${bodyAs(String)}\" />\n \n \n $.[?(@['isValid'] == false && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == true && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == false && @['internalError'] == false)]\n \n \n \n \n \n \n \n \n packet-uploader update route\">\n \n packet-uploader update route ${bodyAs(String)}\" />\n \n \n $.[?(@['isValid'] == false && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == true && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == false && @['internalError'] == false)]\n \n \n \n \n \n \n \n \n packet-validator update route\">\n \n packet-validator update route ${bodyAs(String)}\" />\n \n \n $.[?(@['isValid'] == false && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == true && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == false && @['internalError'] == false)]\n \n \n \n \n \n \n \n \n packet-classifier update route\">\n \n packet-classifier update route ${bodyAs(String)}\" />\n \n \n $.[?(@['isValid'] == false && @['internalError'] == true)]\n \n \n \n \n $.[?(@['isValid'] == true && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == false && @['internalError'] == false)]\n \n \n \n \n \n \n \n \n cmd-validator update route\">\n \n quality-classifier update route ${bodyAs(String)}\" />\n \n \n $.[?(@['isValid'] == false && @['internalError'] == true)]\n \n \n \n \n $.[?(@['isValid'] == true && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == false && @['internalError'] == false)]\n \n \n \n \n \n \n \n \n operator-validator update route\">\n \n operator-validator/supervisor-validator update route ${bodyAs(String)}\" />\n \n \n $.[?(@['isValid'] == false && @['internalError'] == true)]\n \n \n \n \n $.[?(@['isValid'] == true && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == false && @['internalError'] == false)]\n \n \n \n \n $.[?(@['tags']['META_INFO-OPERATIONS_DATA-officerId'] != '' && @['tags']['META_INFO-OPERATIONS_DATA-officerId'] != '--TAG_VALUE_NOT_AVAILABLE--')]\n \n \n \n $.[?(@['tags']['META_INFO-OPERATIONS_DATA-supervisorId'] != '' && @['tags']['META_INFO-OPERATIONS_DATA-supervisorId'] != '--TAG_VALUE_NOT_AVAILABLE--')]\n \n \n \n \n \n \n \n \n supervisor-validator update route\">\n \n supervisor-validator/introducer-validator/biometric-authentication-stage update route ${bodyAs(String)}\" />\n \n \n $.[?(@['isValid'] == false && @['internalError'] == true)]\n \n \n \n \n $.[?(@['isValid'] == true && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == false && @['internalError'] == false)]\n \n \n \n \n $.[?(@['tags']['META_INFO-OPERATIONS_DATA-supervisorId'] != '' && @['tags']['META_INFO-OPERATIONS_DATA-supervisorId'] != '--TAG_VALUE_NOT_AVAILABLE--')]\n \n \n \n $.[?(@['tags']['AGE_GROUP'] == 'INFANT' || @['tags']['AGE_GROUP'] == 'MINOR' || @['tags']['INTRODUCER_AVAILABILITY'] == 'true')]\n \n \n \n \n \n \n \n introducer-validator update route\">\n \n introducer-validator/biometric-authentication-stage update route ${bodyAs(String)}\" />\n \n \n $.[?(@['isValid'] == false && @['internalError'] == true)]\n \n \n \n \n $.[?(@['isValid'] == true && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == false && @['internalError'] == false)]\n \n \n \n \n $.[?(@['tags']['AGE_GROUP'] == 'INFANT' || @['tags']['AGE_GROUP'] == 'MINOR' || @['tags']['INTRODUCER_AVAILABILITY'] == 'true')]\n \n \n \n \n \n \n \n quality-classifier update route\">\n \n quality-classifier update route ${bodyAs(String)}\" />\n \n \n $.[?(@['isValid'] == false && @['internalError'] == true)]\n \n \n \n \n $.[?(@['isValid'] == true && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == false && @['internalError'] == false)]\n \n \n \n \n \n \n \n \n biometric-authentication update route\">\n \n biometric-authentication update route ${bodyAs(String)}\" />\n \n \n $.[?(@['isValid'] == false && @['internalError'] == true)]\n \n \n \n \n $.[?(@['isValid'] == true && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == false && @['internalError'] == false)]\n \n \n \n \n $.[?(@['tags']['BIOMETRIC_CORRECTION_FLOW_STATUS'] in ['FAILED'] || @['tags']['BIOMETRIC_CORRECTION_FLOW_STATUS'] in ['REJECTED'])]\n BIOMETRIC_CORRECTION\n 1296000\n \n \n \n $.[?(@['tags']['Biometric_Quality-Iris'] in ['level-4','level-5','level-6','level-7','level-8','level-9','level-10','--Biometrics-Not-Available--'] && @['tags']['Biometric_Quality-Finger'] in ['level-4','level-5','level-6','level-7','level-8','level-9','level-10','--Biometrics-Not-Available--'] && @['tags']['Biometric_Quality-Face'] in ['level-4','level-5','level-6','level-7','level-8','level-9','level-10','--Biometrics-Not-Available--'])]\n \n \n \n $.[?(@['tags']['Biometric_Quality-Iris'] in ['level-1','level-2','level-3'] || @['tags']['Biometric_Quality-Finger'] in ['level-1','level-2','level-3'] || @['tags']['Biometric_Quality-Face'] in ['level-1','level-2','level-3'])]\n BIOMETRIC_CORRECTION\n \n 1296000\n \n \n \n \n \n \n \n \n demo-dedupe update route\">\n \n demo-dedupe update route ${bodyAs(String)}\" />\n \n \n $.[?(@['isValid'] == false && @['internalError'] == true)]\n \n \n \n \n $.[?(@['isValid'] == true && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == false && @['internalError'] == false)]\n \n \n \n \n \n \n \n \n bio-dedupe update update route\">\n \n bio-dedupe update route ${bodyAs(String)}\" />\n \n \n $.[?(@['isValid'] == false && @['internalError'] == true)]\n \n \n \n \n $.[?(@['isValid'] == true && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == false && @['internalError'] == false)]\n \n \n \n \n $.[?(@['tags']['EXCEPTION_BIOMETRICS'] != 'LL,LR,LM,LI,LT,RL,RR,RM,RI,RT,LE,RE' && @['isValid'] == true && @['messageBusAddress']['address'] == 'abis-handler-bus-in' && @['internalError'] == false)]\n \n \n \n $.[?(@['messageBusAddress']['address'] == 'manual-adjudication-bus-in')]\n \n \n\t\t \n $.[?(@['tags']['AGE_GROUP'] == 'INFANT')]\n \n \n\t\t \n $.[?(@['tags']['EXCEPTION_BIOMETRICS'] == 'LL,LR,LM,LI,LT,RL,RR,RM,RI,RT,LE,RE' && @['isValid'] == true && @['internalError'] == false)]\n \n \n\t\t \n $.[?(@['tags']['EXCEPTION_BIOMETRICS'] != 'LL,LR,LM,LI,LT,RL,RR,RM,RI,RT,LE,RE' && @['isValid'] == true && @['internalError'] == false)]\n \n \n \n \n \n \n \n \n abis-middleware update route\">\n \n abis-middleware update route ${bodyAs(String)}\" />\n \n \n $.[?(@['isValid'] == false && @['internalError'] == true)]\n \n \n \n \n $.[?(@['isValid'] == true && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == false && @['internalError'] == false)]\n \n \n \n \n $.[?(@['messageBusAddress']['address'] == 'abis-middle-ware-bus-in')]\n \n \n \n $.[?(@['messageBusAddress']['address'] == 'demo-dedupe-bus-in')]\n \n \n \n $.[?(@['messageBusAddress']['address'] == 'bio-dedupe-bus-in')]\n \n \n\t\t \n \n \n \n \n \n uin-generation update route\">\n \n uin-generation update route ${bodyAs(String)}\" />\n \n \n $.[?(@['isValid'] == false && @['internalError'] == true)]\n \n \n \n \n $.[?(@['isValid'] == true && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == false && @['internalError'] == false)]\n \n \n \n \n $.[?(@['messageBusAddress']['address'] == 'verification-bus-in')]\n \n \n \n $.[?(@['messageBusAddress']['address'] == 'abis-handler-bus-in')]\n \n \n \n $.[?(@['messageBusAddress']['address'] == 'manual-adjudication-bus-in')]\n \n \n \n \n \n \n \n uin-generator update route\">\n \n uin-generator update route ${bodyAs(String)}\" />\n \n \n $.[?(@['isValid'] == false && @['internalError'] == true)]\n \n \n \n \n $.[?(@['isValid'] == true && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == false && @['internalError'] == false)]\n \n \n \n \n \n \n \n \n abis-handler update route\">\n \n abis-handler update route ${bodyAs(String)}\" />\n \n \n $.[?(@['isValid'] == false && @['internalError'] == true)]\n \n \n \n \n $.[?(@['isValid'] == true && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == false && @['internalError'] == false)]\n \n \n \n \n \n \n \n \n uin-generation update route\">\n \n uin-generation update route ${bodyAs(String)}\" />\n \n \n $.[?(@['isValid'] == false && @['internalError'] == true)]\n \n \n \n \n $.[?(@['isValid'] == true && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == false && @['internalError'] == false)]\n \n \n \n \n \n \n \n \n\t\n biometric-extraction-stage update route\">\n \n biometric-extraction-stage route ${bodyAs(String)}\" />\n \n \n $.[?(@['isValid'] == false && @['internalError'] == true)]\n \n \n \n \n $.[?(@['isValid'] == true && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == false && @['internalError'] == false)]\n \n \n \n \n \n \n \n \n \n finalization-stage update route\">\n \n finalization-stage route ${bodyAs(String)}\" />\n \n \n $.[?(@['isValid'] == false && @['internalError'] == true)]\n \n \n \n \n $.[?(@['isValid'] == true && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == false && @['internalError'] == false)]\n \n \n \n \n \n \n \n \n\t \n credential-requestor-stage update route\">\n \n credential-requestor-stage update route ${bodyAs(String)}\" />\n \n \n $.[?(@['isValid'] == false && @['internalError'] == true)]\n \n \n \n \n $.[?(@['isValid'] == true && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == false && @['internalError'] == false)]\n \n \n \n \n \n \n \n \n update route\">\n \n route ${bodyAs(String)}\" />\n \n \n $.[?(@['isValid'] == false && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == true && @['internalError'] == true)]\n \n \n \n $.[?(@['isValid'] == false && @['internalError'] == false)]\n \n \n \n \n \n \n \n \n\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/mosip-config/blob/master/resident-default.properties", + "title": "resident-default.properties", + "repo": "mosip/mosip-config", + "file_path": "resident-default.properties", + "language": "properties", + "content": "# Follow properites have their values assigned via 'overrides' environment variables of config server docker.\n# DO NOT define these in any of the property files. They must be passed as env variables. Refer to config-server\n# helm chart:\n# keycloak.internal.url\n# resident.captcha.site.key\n# resident.captcha.secret.key\n# mosip.resident.client.secret\n# mosip.regproc.client.secret\n# keycloak.internal.url.\n\nlogging.level.io.mosip.resident=INFO\n# It's used to debug enabled LoggingFilter - this will print the request details such as URL, headers and body for debugging purpose. Default is false.\n#logging.level.io.mosip.resident.config.LoggingInterceptor=INFO\n#resident.rest.template.logging.interceptor.filter.enabled=false\n\nresident.logging.filter.enabled=false\nlogging.level.io.mosip.resident.filter=INFO\n\n# Whether to enable logging - this will print the repository method calls for debugging purpose. Default is true.\nresident.db.logging.aspect.enabled=false\nlogging.level.io.mosip.resident.aspect.DatabaseLoggingAspect=INFO\n\n#URL pattern for logging filter. For example, \"/callback/*\" .Defaults to \"/*\".\nresident.logging.filter.url.pattern=/*\n# Whether to enable WebsubCallbackRequestDecoratorFilter. Default is true.\nresident.websub.request.decorator.filter.enabled=true\n# Websub topic subscription topics\nsubscriptions-delay-on-startup_millisecs=120000\nre-subscription-interval-in-seconds=43200\n\n#--------------APIs ID and Version --------------\n#------------Request IDs---------------------\n# The request IDs used in Resident REST APIs\nmosip.resident.api.id.otp.request=mosip.identity.otp.internal\nmosip.resident.api.id.auth=mosip.identity.auth.internal\nauth.internal.id=mosip.identity.auth.internal\nmosip.registration.processor.print.id=mosip.registration.print\nvid.create.id=mosip.vid.create\nresident.vid.id=mosip.resident.vid\nresident.vid.id.generate=mosip.resident.vid.generate\nresident.vid.policy.id=mosip.resident.vid.policy\nresident.vid.get.id=mosip.resident.vid.get\nauth.type.status.id=mosip.identity.authtype.status.update\nresident.authlock.id=mosip.resident.authlock\nresident.checkstatus.id=mosip.resident.checkstatus\nresident.euin.id=mosip.resident.euin\nresident.printuin.id=mosip.resident.printuin\nresident.uin.id=mosip.resident.uin\nresident.rid.id=mosip.resident.rid\nresident.updateuin.id=mosip.resident.updateuin\nresident.authunlock.id=mosip.resident.authunlock\nresident.authhistory.id=mosip.resident.authhistory\nresident.authLockStatusUpdateV2.id=mosip.resident.auth.lock.unlock\nresident.service.history.id=mosip.service.history.get\nresident.document.upload.id=mosip.resident.document.upload\nresident.document.get.id=mosip.resident.document.get\nresident.document.list.id=mosip.resident.document.list\nresident.service.pin.status.id=mosip.resident.pin.status\nresident.service.unpin.status.id=mosip.resident.unpin.status\nresident.document.delete.id=mosip.resident.document.delete\nresident.contact.details.update.id=mosip.resident.contact.details.update.id\nresident.contact.details.send.otp.id=mosip.resident.contact.details.send.otp.id\nmosip.resident.service.status.check.id=mosip.registration.external.status\nresident.service.unreadnotificationlist.id=mosip.resident.service.history.unread\nresident.service.event.id=mosip.resident.event.status\nresident.identity.info.id=mosip.resident.identity.info\nresident.share.credential.id=mosip.resident.share.credential\nvid.revoke.id=mosip.vid.update\nresident.revokevid.id=mosip.resident.vidstatus\nmosip.resident.revokevid.id=mosip.resident.vid.revoke\nmosip.resident.grievance.ticket.request.id=mosip.resident.grievance.ticket.request\nresident.channel.verification.status.id=mosip.resident.channel.verification.status\nresident.event.ack.download.id=mosip.resident.event.ack.download\nresident.download.card.eventid.id =mosip.resident.download.card.eventid\nmosip.resident.request.vid.card.id=mosip.resident.request.vid.card\nmosip.credential.request.service.id=mosip.credential.request.service.id\nmosip.resident.checkstatus.individualid.id=mosip.resident.check-stage-status\nmosip.resident.download.personalized.card.id=mosip.resident.download.personalized.card\nmosip.resident.transliteration.transliterate.id=mosip.resident.transliteration.transliterate\nresident.ui.properties.id=resident.ui.properties\nmosip.resident.identity.auth.internal.id=mosip.identity.auth.internal\nmosip.resident.user.profile.id=mosip.resident.profile\nresident.download.reg.centers.list.id=mosip.resident.download.reg.centers.list\nresident.download.nearest.reg.centers.id=mosip.resident.download.nearest.reg.centers\nresident.download.supporting.documents.id=mosip.resident.download.supporting.documents\nresident.send.card.id=mosip.resident.send.card\nresident.pinned.eventid.id=mosip.resident.pinned.eventid\nresident.unpinned.eventid.id=mosip.resident.unpinned.eventid\nresident.auth.proxy.partners.id=mosip.resident.auth.proxy.partners\nresident.events.eventid.id=mosip.resident.events.eventid\nresident.notification.id=mosip.resident.notification.get\nresident.profile.id=mosip.resident.profile.get\nresident.notification.click.id=mosip.resident.notification.click\nmosip.credential.store.id=mosip.credential.store\nresident.vids.id=mosip.resident.vids.get\nmosip.resident.download.uin.card=mosip.resident.download.uin.card\nmosip.registration.processor.registration.sync.id=mosip.registration.sync\nid.repo.update=mosip.id.update\nmosip.resident.get.pending.drafts=mosip.resident.get.pending.drafts\nmosip.resident.discard.pending.drafts=mosip.resident.discard.pending.drafts\n\n#------------Request Versions---------------------\n# The request versions used in Resident REST APIs\nmosip.resident.api.version.otp.request=1.0\nmosip.resident.api.version.auth=1.0\nauth.internal.version=1.0\nmosip.registration.processor.application.version=1.0\nmosip.resident.create.vid.version=v1\nresident.vid.version=v1\nresident.vid.version.new=1.0\nresident.revokevid.version=v1\nresident.revokevid.version.new=1.0\nresident.version.new=1.0\nresident.checkstatus.version=v1\nresident.authLockStatusUpdateV2.version=1.0\nresident.service.history.version=1.0\nresident.document.get.version=1.0\nresident.document.list.version=1.0\nresident.service.pin.status.version=v1\nresident.service.unpin.status.version=v1\nresident.document.delete.version=1.0\nmosip.resident.service.status.check.version=1.0\nresident.service.event.version=1.0\nresident.identity.info.version=1.0\nresident.share.credential.version=1.0\nmosip.resident.request.response.version=1.0\nmosip.resident.grievance.ticket.request.version=1.0\nresident.channel.verification.status.version=1.0\nresident.event.ack.download.version=1.0\nresident.download.card.eventid.version=1.0\nmosip.resident.request.vid.card.version=1.0\nmosip.credential.request.service.version=1.0\nmosip.resident.checkstatus.individualid.version=1.0\nresident.ui.properties.version=1.0\nmosip.resident.get.pending.drafts.version=1.0\nmosip.resident.discard.pending.drafts.version=1.0\n\n#Database config\nmosip.resident.database.hostname=${mosip.database.hostname.override:postgres-postgresql.postgres}\nmosip.resident.database.port=${mosip.database.port.override:5432}\n\njavax.persistence.jdbc.driver=org.postgresql.Driver\njavax.persistence.jdbc.url=jdbc:postgresql://${mosip.resident.database.hostname}:${mosip.resident.database.port}/mosip_resident\njavax.persistence.jdbc.user=residentuser\njavax.persistence.jdbc.password=${db.dbuser.password}\n\nmosip-prereg-host=${mosip.prereg.host}\nmosip-prereg-ui-url=https://${mosip-prereg-host}/pre-registration-ui/\n\n## Token generation\ntoken.request.id=io.mosip.resident\ntoken.request.version=1.0\nresident.appid=resident\nresident.clientId=mosip-resident-client\nresident.secretKey=${mosip.resident.client.secret}\n# Below is defined in application properties\ntoken.request.issuerUrl=${mosip.keycloak.issuerUrl}\n\n## Partner related details\nmosip.ida.partner.type=Online_Verification_Partner\nida.online-verification-partner-id=mpartner-default-auth\nidrepo-dummy-online-verification-partner-id=MOVP\nresident.share-credential.partner.type=Auth_Partner\nresident.authentication-request.partner.type=Auth_Partner\nresident.order-physical-card.partner.type=Print_Partner\n\n#DB properties to skip automatic table creation in startup\nhibernate.show_sql=true\nhibernate.hbm2ddl.auto=none\nhibernate.temp.use_jdbc_metadata_defaults=false\nhibernate.jdbc.lob.non_contextual_creation = true\nspring.jpa.properties.hibernate.temp.use_jdbc_metadata_defaults=false\n\n\n## Auth Services\nIDA_INTERNAL=${mosip.ida.internal.url}/idauthentication/v1/internal\nINTERNALAUTH=${IDA_INTERNAL}/auth\nINTERNALAUTHTRANSACTIONS=${IDA_INTERNAL}/authTransactions\nKERNELENCRYPTIONSERVICE=${IDA_INTERNAL}/getCertificate\nOTP_GEN_URL=${IDA_INTERNAL}/otp\nKERNELAUTHMANAGER=${mosip.kernel.authmanager.url}/v1/authmanager/authenticate/clientidsecretkey\n\n## Credential Req & service calls\nCREDENTIAL_STATUS_URL=${mosip.idrepo.credrequest.generator.url}/v1/credentialrequest/get/\nCREDENTIAL_REQ_URL=${mosip.idrepo.credrequest.generator.url}/v1/credentialrequest/requestgenerator\nCREDENTIAL_CANCELREQ_URL=${mosip.idrepo.credrequest.generator.url}/v1/credentialrequest/cancel/\nCREDENTIAL_TYPES_URL=${mosip.idrepo.credential.service.url}/v1/credentialservice/types\n\n## IdRepo identity Service calls\nIDREPO_IDENTITY=${mosip.idrepo.identity.url}/idrepository/v1/identity\nIDREPOSITORY=${IDREPO_IDENTITY}/\nIDREPOGETIDBYUIN=${IDREPO_IDENTITY}/idvid\nIDREPOGETIDBYRID=${IDREPO_IDENTITY}/idvid\nIDREPO_IDENTITY_URL=${IDREPO_IDENTITY}/idvid/{id}\nGET_RID_BY_INDIVIDUAL_ID=${IDREPO_IDENTITY}/rid/{individualId}\nIDREPO_IDENTITY_UPDATE_COUNT=${IDREPO_IDENTITY}/{individualId}/update-counts\nAUTHTYPESTATUSUPDATE=${IDREPO_IDENTITY}/authtypes/status\nIDREPO_IDENTITY_GET_DRAFT_UIN=${IDREPO_IDENTITY}/draft/uin/{UIN}\nIDREPO_IDENTITY_DISCARD_DRAFT=${IDREPO_IDENTITY}/draft/discard/\n\n## IdRepo vid Service calls\nIDREPO_VID=${mosip.idrepo.vid.url}/idrepository/v1/vid\nCREATEVID=${IDREPO_VID}\nGETUINBYVID=${IDREPO_VID}\nIDAUTHCREATEVID=${IDREPO_VID}\nIDAUTHREVOKEVID=${IDREPO_VID}\nRETRIEVE_VIDS=${IDREPO_VID}/uin/\n\n## Key manager\nKEYMANAGER=${mosip.kernel.keymanager.url}/v1/keymanager\nENCRYPTURL=${KEYMANAGER}/encrypt\nDECRYPT_API_URL=${KEYMANAGER}/decrypt\nmosip.resident.keymanager.encrypt-uri=${KEYMANAGER}/encrypt\nmosip.resident.keymanager.decrypt-uri=${KEYMANAGER}/decrypt\nPACKETSIGNPUBLICKEY=${KEYMANAGER}/tpmsigning/publickey\nmosip.keymanager.jwt.sign.end.point=${KEYMANAGER}/jwtSign\nPDFSIGN=${KEYMANAGER}/pdf/sign\n\n## Master Data api calls\nMASTER=${mosip.kernel.masterdata.url}/v1/masterdata\nTEMPLATES=${MASTER}/templates\nMACHINEDETAILS=${MASTER}/machines\nMACHINESEARCH=${MASTER}/machines/search\nMACHINECREATE=${MASTER}/machines\nCENTERDETAILS=${MASTER}/registrationcenters\nMACHINESTATUSUPDATE=${MASTER}/machines\nVALID_DOCUMENT_BY_LANGCODE_URL=${MASTER}/validdocuments/{langCode}\nLOCATION_HIERARCHY_LEVEL_BY_LANGCODE_URL=${MASTER}/locationHierarchyLevels/{langcode}\nLOCATION_HIERARCHY=${MASTER}/locationHierarchyLevels\nIMMEDIATE_CHILDREN_BY_LOCATIONCODE_AND_LANGCODE_URL=${MASTER}/locations/immediatechildren/{locationcode}/{langcode}\nLOCATION_INFO_BY_LOCCODE_AND_LANGCODE_URL=${MASTER}/locations/info/{locationcode}/{langcode}\nIMMEDIATE_CHILDREN_BY_LOCATION_CODE=${MASTER}/locations/immediatechildren\nREGISTRATION_CENTER_FOR_LOCATION_CODE_URL=${MASTER}/registrationcenters/{langcode}/{hierarchylevel}/names\nREGISTRATION_CENTER_BY_LOCATION_TYPE_AND_SEARCH_TEXT_PAGINATED_URL=${MASTER}/registrationcenters/page/{langcode}/{hierarchylevel}/{name}\nCOORDINATE_SPECIFIC_REGISTRATION_CENTERS_URL=${MASTER}/getcoordinatespecificregistrationcenters/{langcode}/{longitude}/{latitude}/{proximitydistance}\nAPPLICANT_VALID_DOCUMENT_URL=${MASTER}/applicanttype/{applicantId}/languages\nWORKING_DAYS_BY_REGISTRATION_ID=${MASTER}/workingdays/{registrationCenterID}/{langCode}\nLATEST_ID_SCHEMA_URL =${MASTER}/idschema/latest\nTEMPLATES_BY_LANGCODE_AND_TEMPLATETYPECODE_URL=${MASTER}/templates/{langcode}/{templatetypecode}\nDYNAMIC_FIELD_BASED_ON_LANG_CODE_AND_FIELD_NAME=${MASTER}/dynamicfields/{fieldName}/{langcode}\nDYNAMIC_FIELD_BASED_ON_FIELD_NAME=${MASTER}/dynamicfields/{fieldName}\nDOCUMENT_TYPE_BY_DOCUMENT_CATEGORY_AND_LANG_CODE=${MASTER}/documenttypes/{documentcategorycode}/{langcode}\n\n## Notification service\nSMSNOTIFIER=${mosip.kernel.notification.url}/v1/notifier/sms/send\nEMAILNOTIFIER=${mosip.kernel.notification.url}/v1/notifier/email/send\nresident.notification.emails=mosiptestuser@gmail.com\nresident.notification.message=Notification has been sent to the provided contact detail(s)\n\n## Partner manager service URLs\nPMS_PARTNER_MANAGER=${mosip.pms.partnermanager.url}/v1/partnermanager\nPOLICY_REQ_URL=${PMS_PARTNER_MANAGER}/partners/{partnerId}/credentialtype/{credentialType}/policies\nPARTNER_API_URL=${PMS_PARTNER_MANAGER}/partners\nPARTNER_DETAILS_NEW_URL=${PMS_PARTNER_MANAGER}/partners/v2\nmosip.pms.pmp.partner.rest.uri=${PMS_PARTNER_MANAGER}/partners?partnerType=${mosip.ida.partner.type}\n\n## Reg-proc service calls\nREGPROCPRINT=http://regproc-group7.regproc/registrationprocessor/v1/print/uincard\nSYNCSERVICE=${mosip.regproc.status.service.url}/registrationprocessor/v1/registrationstatus/sync\nPACKETRECEIVER=${mosip.packet.receiver.url}/registrationprocessor/v1/packetreceiver/registrationpackets\nGET_RID_STATUS=${mosip.regproc.transaction.service.url}/registrationprocessor/v1/registrationtransaction/search/{rid}\nREGISTRATIONSTATUSSEARCH=${mosip.regproc.status.service.url}/registrationprocessor/v1/registrationstatus/externalstatus/search\n\n## Resident API calls\nmosip.service-context=${server.servlet.context-path}\nRESIDENT_SERVICE=${mosip.resident.url}${mosip.service-context}\nRESIDENT_REQ_CREDENTIAL_URL=${RESIDENT_SERVICE}/req/credential/status/\nGET_ORDER_STATUS_URL=${RESIDENT_SERVICE}/mock/print-partner/check-order-status\nmosip.resident.download-card.url=${mosip.api.public.url}${mosip.service-context}/download-card/event/{eventId}\nmosip.resident.grievance.url=${mosip.api.public.url}${mosip.service-context}/mock/external/grievance/redressel?name={name}&emailId={email}&phoneNo={phone}&eventId={eventId}\n\n## other service calls\nMIDSCHEMAURL=${mosip.kernel.syncdata.url}/v1/syncdata/latestidschema\nDIGITAL_CARD_STATUS_URL=${mosip.digitalcard.service.url}/v1/digitalcard/\nRIDGENERATION=${mosip.kernel.ridgenerator.url}/v1/ridgenerator/generate/rid\notp-generate.rest.uri=${mosip.kernel.otpmanager.url}/v1/otpmanager/otp/generate\nmosip.resident.service.mock.pdf.url=https://uidai.gov.in/images/New_eAadhaar1.pdf\nmosip.kernel.masterdata.audit-url=${mosip.kernel.auditmanager.url}/v1/auditmanager/audits\n\n## Config data\nresident.datetime.pattern=yyyy-MM-dd'T'HH:mm:ss.SSS'Z'\n\n# Comma separated values of allowed auth types\nauth.types.allowed=otp-email,otp-phone,demo,bio-FINGER,bio-IRIS,bio-FACE\n\n# auth-type unlock duration\nresident.auth-type.default.unlock.duration.seconds=100\n\n# Template type codes for allowed Auth-type list (auth.types.allowed)-\nresident.otp-email.template.property.attribute.list=mosip.otp-email.template.property\nresident.otp-phone.template.property.attribute.list=mosip.otp-phone.template.property\nresident.demo.template.property.attribute.list=mosip.demo.template.property\nresident.bio-FINGER.template.property.attribute.list=mosip.bio-finger.template.property\nresident.bio-IRIS.template.property.attribute.list=mosip.bio-iris.template.property\nresident.bio-FACE.template.property.attribute.list=mosip.bio-face.template.property\n\n# Template type codes for Auth-type status-\nresident.UNLOCKED.template.property.attribute.list=mosip.unlocked.template.property\nresident.LOCKED.template.property.attribute.list=mosip.locked.template.property\n\n#Validation properties\nmosip.id.validation.identity.email=^[\\\\w-\\\\+]+(\\\\.[\\\\w]+)*@[\\\\w-]+(\\\\.[\\\\w]+)*(\\\\.[a-zA-Z]{2,})$\nresident.grievance-redressal.alt-email.chars.limit=128\nresident.grievance-redressal.alt-phone.chars.limit=64\nresident.grievance-redressal.comments.chars.limit=1024\nresident.share-credential.purpose.chars.limit=1024\nmosip.resident.eid.length=16\nmosip.resident.eventid.searchtext.length=${mosip.resident.eid.length}\nresident.message.allowed.special.char.regex=^[\\\\r\\\\nA-Za-z0-9 .,'-]+$\nresident.purpose.allowed.special.char.regex=^[\\\\r\\\\nA-Za-z0-9 .,'-]+$\nresident.id.allowed.special.char.regex=^[0-9]+$\nresident.document.validation.transaction-id.regex=^[0-9]{10}$\nresident.document.validation.document-id.regex=^[A-Za-z0-9-]{20,}$\nresident.validation.is-numeric.regex=^[0-9]+$\nresident.otp.validation.transaction-id.regex=^[0-9]{10}$\nresident.validation.event-id.regex=^[0-9]{${mosip.resident.eid.length}}$\n\n## Security\nmosip.security.csrf-enable:false\nmosip.security.secure-cookie:false\n\nIDSchema.Version=0.1\n\nid.repo.vidType=Perpetual\ntoken.request.appid=resident\ntoken.request.clientId=mosip-resident-client\ntoken.request.secretKey=${mosip.resident.client.secret}\nobjectstore.adapter.name=PosixAdapter\n\n#TODO remove reg-client service accunt in production env\nauth.server.admin.allowed.audience=mosip-resident-client,mosip-reg-client,${mosip.iam.module.clientID}\n\n#Mapping Identity json to map with the applicant id json\nregistration.processor.identityjson=identity-mapping.json\n\n#machine creation and search configs\nresident.update-uin.machine-name-prefix = resident_machine_\nresident.update-uin.machine-spec-id = RESIDENT-1\nresident.update-uin.machine-zone-code = MOR\nresident.center.id=10001\nresident.machine.id=10080\n\n#Auth Adapter rest template authentication configs\nmosip.iam.adapter.appid=resident\nmosip.iam.adapter.clientid=mosip-resident-client\nmosip.iam.adapter.clientsecret=${mosip.resident.client.secret}\n\n\n## The exclusion list of URL patterns that should not be part of authentication and authorization\nmosip.service.end-points=/**/req/otp,/**/proxy/**,/**/validate-otp,/**/channel/verification-status/**,/**/req/credential/**,/**/req/card/*,/**/req/auth-history,/**/rid/check-status,/**/req/auth-lock,/**/req/auth-unlock,/**/req/update-uin,/**/req/print-uin,/**/req/euin,/**/credential/types,/**/req/policy/**,/**/aid/status,/**/individualId/otp,/**/mock/**,/**/callback/**,/**/download-card,/**/download/registration-centers-list/**,/**/download/supporting-documents/**,/**/vid/policy,/**/vid,/vid/**,/**/download/nearestRegistrationcenters/**,/**/authorize/admin/validateToken,/**/logout/user,/**/aid-stage/**\n\nmosip.service.exclude.auth.allowed.method=POST,GET,PATCH,PUT\n\nmosip.ida.env=Production\nmosip.ida.domain-url=${mosipbox.public.url}\n\n## Captcha service\n## Configuration for google re-captcha\nmosip.resident.captcha.enable=false\nmosip.resident.captcha.id.validate=mosip.resident.captcha.id.validate\nmosip.resident.captcha.sitekey=${resident.captcha.site.key}\nmosip.resident.captcha.secretkey=${resident.captcha.secret.key}\nmosip.resident.captcha.resourse.url=http://resident-captcha.resident/resident/v1/captcha/validatecaptcha\nmosip.resident.captcha.recaptcha.verify.url=https://www.google.com/recaptcha/api/siteverify\n\n\n#Comma separated values of property keys to be exposed to /proxy/config/ui-properties API\n\nresident.ui.propertyKeys=mosip.mandatory-languages,mosip.optional-languages,mosip.utc-datetime-pattern,mosip.iam.adapter.clientid,resident.datetime.pattern,mosip.resident.api.id.otp.request,mosip.resident.api.id.auth,mosip.resident.api.version.otp.request,mosip.resident.api.version.auth,mosip-prereg-host,mosip-prereg-ui-url,auth.types.allowed,resident.view.history.serviceType.filters,resident.view.history.status.filters,resident.auth-type.default.unlock.duration.seconds,mosip.resident.grievance.url,mosip.api.public.host,mosip.resident.captcha.sitekey,mosip.resident.captcha.secretkey,mosip.webui.auto.logout.idle,mosip.webui.auto.logout.ping,mosip.webui.auto.logout.timeout,mosip.resident.download.registration.centre.file.name.convention,mosip.resident.download.supporting.document.file.name.convention,mosip.resident.download.personalized.card.naming.convention,mosip.resident.ack.manage_my_vid.name.convention,mosip.resident.ack.secure_my_id.name.convention,mosip.resident.ack.personalised_card.name.convention,mosip.resident.ack.update_my_data.name.convention,mosip.resident.ack.share_credential.name.convention,mosip.resident.ack.order_physical_card.name.convention,mosip.resident.ack.name.convention,mosip.resident.uin.card.name.convention,mosip.resident.vid.card.name.convention,mosip.resident.download.service.history.file.name.convention,mosip.resident.download.nearest.registration.centre.file.name.convention,auth.internal.id,auth.internal.version,mosip.registration.processor.print.id,mosip.registration.processor.application.version,vid.create.id,mosip.resident.create.vid.version,resident.vid.version,resident.vid.version.new,resident.revokevid.version,resident.revokevid.version.new,resident.vid.id,resident.vid.id.generate,resident.vid.policy.id,resident.vid.get.id,auth.type.status.id,resident.authlock.id,resident.checkstatus.id,resident.checkstatus.version,resident.euin.id,resident.printuin.id,resident.uin.id,resident.rid.id,resident.updateuin.id,resident.authunlock.id,resident.authhistory.id,resident.authLockStatusUpdateV2.id,resident.authLockStatusUpdateV2.version,resident.service.history.id,resident.service.history.version,resident.document.upload.id,resident.document.get.id,resident.document.get.version,resident.document.list.id,resident.document.list.version,resident.service.pin.status.id,resident.service.pin.status.version,resident.service.unpin.status.id,resident.service.unpin.status.version,resident.document.delete.id,resident.document.delete.version,resident.contact.details.update.id,resident.contact.details.send.otp.id,mosip.resident.service.status.check.id,mosip.resident.service.status.check.version,resident.service.unreadnotificationlist.id,resident.service.event.id,resident.service.event.version,resident.identity.info.id,resident.identity.info.version,resident.share.credential.id,resident.share.credential.version,mosip.resident.request.response.version,vid.revoke.id,resident.revokevid.id,mosip.resident.revokevid.id,mosip.resident.grievance.ticket.request.id,mosip.resident.grievance.ticket.request.version,resident.channel.verification.status.id,resident.channel.verification.status.version,resident.event.ack.download.id,resident.event.ack.download.version,resident.download.card.eventid.id ,resident.download.card.eventid.version,mosip.resident.request.vid.card.id,mosip.resident.request.vid.card.version,mosip.credential.request.service.id,mosip.credential.request.service.version,mosip.resident.checkstatus.individualid.id,mosip.resident.checkstatus.individualid.version,mosip.resident.download.personalized.card.id,mosip.resident.transliteration.transliterate.id,resident.ui.properties.id,resident.ui.properties.version,resident.nearby.centers.distance.meters,resident.ui.notification.update.interval.seconds,mosip.kernel.otp.expiry-time,resident.grievance-redressal.alt-email.chars.limit,resident.grievance-redressal.alt-phone.chars.limit,resident.grievance-redressal.comments.chars.limit,resident.share-credential.purpose.chars.limit,mosip.resident.eventid.searchtext.length,mosip.kernel.uin.length,mosip.kernel.vid.length,mosip.kernel.rid.length,mosip.resident.eid.length,mosip.kernel.otp.default-length,resident.message.allowed.special.char.regex,resident.purpose.allowed.special.char.regex,resident.id.allowed.special.char.regex,resident.version.new,mosip.resident.identity.auth.internal.id,resident.validation.event-id.regex,resident.document.validation.transaction-id.regex,resident.document.validation.document-id.regex,resident.validation.is-numeric.regex,resident.otp.validation.transaction-id.regex,,mosip.resident.captcha.enable,resident.download.reg.centers.list.id,resident.download.nearest.reg.centers.id,resident.download.supporting.documents.id,resident.send.card.id,resident.pinned.eventid.id,resident.unpinned.eventid.id,resident.auth.proxy.partners.id,resident.events.eventid.id,resident.notification.id,resident.profile.id,resident.notification.click.id,mosip.credential.store.id,resident.vids.id,mosip.resident.zoom,mosip.resident.maxZoom,mosip.resident.minZoom,resident.update-uin.machine-zone-code\n\n\nauth.allowed.urls=https://${mosip.resident.host}/,https://${mosip.resident.host}/resident-ui/,https://${mosip.resident.host}/resident-ui/**\n\n\n###########################################################\n# IdP config\n# Note: When enabling MOSIP E-Signet comment Mock Keycloak config, vise versa.\n################## MOSIP E-Signet config\nmosip.iam.module.clientID=${resident.oidc.clientid}\nmosip.iam.module.clientsecret=\nmosip.iam.base.url=https://${mosip.esignet.host}/v1/esignet\nmosip.iam.authorization_endpoint=https://${mosip.esignet.host}/authorize\nmosip.iam.token_endpoint=${mosip.iam.base.url}/oauth/v2/token\nmosip.iam.userinfo_endpoint=${mosip.iam.base.url}/oidc/userinfo\nmosip.iam.certs_endpoint=${mosip.iam.base.url}/oauth/.well-known/jwks.json\nauth.server.admin.issuer.uri=${mosip.iam.base.url}\nauth.server.admin.issuer.domain.validate=true\nauth.server.admin.oidc.userinfo.url=${mosip.iam.userinfo_endpoint}\nmosip.iam.module.token.endpoint.private-key-jwt.auth.enabled=true\nmosip.iam.module.token.endpoint.private-key-jwt.expiry.seconds=7200\nmosip.resident.oidc.userinfo.jwt.signed=true\n# AuthAdaptor ValdidateTokenHelper: This property will directly apply the certs URL without need for constructing the path from issuer URL.\n# This is useful to keep a different certs URL for integrating with MOSIP IdP for offline token validation.\nauth.server.admin.oidc.certs.url=${mosip.iam.certs_endpoint}\nmosip.iam.logout.offline=true\nauth.server.admin.validate.url=\nmosip.resident.oidc.userinfo.jwt.verify.enabled=false\n################### MOSIP E-Signet config ends\n\n################### Mock-keycloak IdP config\n#mosip.iam.module.clientID=mosip-resident-client\n#mosip.iam.module.clientsecret=${mosip.resident.client.secret}\n#mosip.iam.authorization_endpoint=${keycloak.external.url}/auth/realms/mosip/protocol/openid-connect/auth\n#mosip.iam.token_endpoint=${keycloak.external.url}/auth/realms/mosip/protocol/openid-connect/token\n#mosip.iam.userinfo_endpoint=${keycloak.external.url}/auth/realms/mosip/protocol/openid-connect/userinfo\n#mosip.iam.certs_endpoint=${keycloak.external.url}/auth/realms/mosip/protocol/openid-connect/certs\n#mosip.iam.module.token.endpoint.private-key-jwt.auth.enabled=false\n#mosip.resident.oidc.userinfo.jwt.signed=false\n################### Mock-keycloak IdP config ends\n###########################################################\n\n\n## IAM\nmosip.iam.module.redirecturi=${mosip.api.internal.url}/resident/v1/login-redirect/\n#mosip.iam.module.redirecturi=${tempuri}/v1/admin/login-redirect/\nmosip.iam.module.login_flow.name=authorization_code\n#mosip.iam.module.login_flow.scope=cls\nmosip.iam.module.login_flow.scope=openid profile Manage-Identity-Data Manage-VID Manage-Authentication Manage-Service-Requests Manage-Credentials\nmosip.iam.module.login_flow.claims={\"userinfo\":{\"name\":{\"essential\":true},\"picture\":{\"essential\":true},\"email\":{\"essential\":true},\"phone_number\":{\"essential\":true},\"individual_id\":{\"essential\":true}}}\nmosip.iam.module.login_flow.response_type=code\nmosip.iam.module.admin_realm_id=mosip\n\n## User-info claim attributes in open-id-connect based login with UIN/VID in MOSIP-IDP\nmosip.resident.identity.claim.individual-id=individual_id\nmosip.resident.identity.claim.ida-token=ida_token\n\n## Scopes\nmosip.scope.resident.getinputattributevalues=Manage-Identity-Data\nmosip.scope.resident.patchrevokevid=Manage-VID\nmosip.scope.resident.postgeneratevid=Manage-VID\nmosip.scope.resident.getvids=Manage-VID\nmosip.scope.resident.getAuthTransactions=Manage-Service-Requests\nmosip.scope.resident.postAuthTypeUnlock=Manage-Authentication\nmosip.scope.resident.postAuthTypeStatus=Manage-Authentication\nmosip.scope.resident.getAuthLockStatus=Manage-Authentication\nmosip.scope.resident.patchUpdateUin=Manage-Identity-Data\nmosip.scope.resident.getServiceAuthHistoryRoles=Manage-Service-Requests\nmosip.scope.resident.postSendPhysicalCard=Manage-Credentials\nmosip.scope.resident.getUnreadServiceList=Manage-Service-Requests\nmosip.scope.resident.getNotificationCount=\nmosip.scope.resident.getNotificationClick=Manage-Service-Requests\nmosip.scope.resident.getupdatedttimes=Manage-Service-Requests\nmosip.scope.resident.postRequestDownloadPersonalizedCard=Manage-Credentials\nmosip.scope.resident.postRequestShareCredWithPartner=Manage-Credentials\nmosip.scope.resident.postUnPinStatus=Manage-Service-Requests\nmosip.scope.resident.postPinStatus=Manage-Service-Requests\nmosip.scope.resident.getDownloadCard=Manage-Credentials\nmosip.scope.resident.postPersonalizedCard=Manage-Credentials\nmosip.scope.resident.getOrderRedirect=Manage-Credentials\n\n\n## Key manager encryption/decryption configuration\nAPPLICATION_Id=RESIDENT\nPARTNER_REFERENCE_Id=mpartner-default-resident\nmosip.resident.keymanager.application-name=RESIDENT\nmosip.resident.keymanager.reference-id=resident_document\nmosip.datashare.application.id=PARTNER\nmosip.datashare.reference.id=mparter-default-euin\nmosip.resident.oidc.keymanager.reference.id=IDP_USER_INFO\nmosip.resident.sign.pdf.application.id=KERNEL\nmosip.resident.sign.pdf.reference.id=SIGN\n\n## Object Store configuration\nmosip.resident.object.store.account-name=resident\nmosip.resident.object.store.bucket-name=${object.store.s3.bucket-name-prefix}resident\nmosip.resident.object.store.adapter-name=s3Adapter\nobject.store.s3.use.account.as.bucketname=true\nobject.store.s3.accesskey=${s3.accesskey}\nobject.store.s3.secretkey=${s3.secretkey}\n## For Minio:\nobject.store.s3.url=http://minio.minio:9000\n## For AWS:\n#object.store.s3.url=s3.${s3.region}.amazonaws.com\nobject.store.s3.region=${s3.region}\nobject.store.s3.readlimit=10000000\n\n# Virus Scanner configuration\nmosip.resident.virus-scanner.enabled=true\n\n# VID Policy url\nmosip.resident.vid-policy-url=${config.server.file.storage.uri}mosip-vid-policy.json\n\n# Resident UI Schema JSON file name\nresident-ui-schema-file-name-prefix=resident-ui\n# IDA Mapping JSON file URI\nresident-ui-schema-file-url=${config.server.file.storage.uri}${resident-ui-schema-file-name-prefix}\n# Resident UI Schema JSON file property source\nresident-ui-schema-file-source-prefix=url:${resident-ui-schema-file-url}\n\n\n# Identity Mapping JSON file name\nidentity-mapping-file-name=identity-mapping.json\n# IDA Mapping JSON file URI\nidentity-mapping-file-url=${config.server.file.storage.uri}${identity-mapping-file-name} \n# Identity Mapping JSON file property source\nidentity-mapping-file-source=url:${identity-mapping-file-url}\n\n# amr-acr JSON file name\namr-acr.json.filename=amr-acr-mapping.json\n\n# Identity Data format MVEL file name\nresident-data-format-mvel-file-name=credentialdata.mvel\nresident-data-format-mvel-file-url=${config.server.file.storage.uri}${resident-data-format-mvel-file-name} \nresident-data-format-mvel-file-source=url:${resident-data-format-mvel-file-url}\n\n\n# WebSub Topic and callback propertis for auth type status event\nresident.websub.authtype-status.secret=${resident.websub.authtype.status.secret}\nresident.websub.authtype-status.topic=AUTH_TYPE_STATUS_UPDATE_ACK\nresident.websub.callback.authtype-status.relative.url=${server.servlet.context-path}/callback/authTypeCallback\nresident.websub.callback.authtype-status.url=${mosip.api.internal.url}${resident.websub.callback.authtype-status.relative.url}\n\n# Callback properties for AuthTransactionStatus\nresident.websub.authTransaction-status.secret=${resident.websub.auth.transaction.status.secret}\nresident.websub.authTransaction-status.topic=AUTHENTICATION_TRANSACTION_STATUS\nresident.websub.callback.authTransaction-status.relative.url=${server.servlet.context-path}/callback/authTransaction\nresident.websub.callback.authTransaction-status.url=${mosip.api.internal.url}${resident.websub.callback.authTransaction-status.relative.url}\n\n# WebSub Topic and callback propertis for credential status event\nresident.websub.credential-status.secret=${resident.websub.credential.status.update.secret}\nresident.websub.credential-status.topic=CREDENTIAL_STATUS_UPDATE\nresident.websub.callback.credential-status.relative.url=${server.servlet.context-path}/callback/credentialStatusUpdate\nresident.websub.callback.credential-status.url=${mosip.api.internal.url}${resident.websub.callback.credential-status.relative.url}\n\n# WebSub Topic and callback propertis for regproc complete workflow event\nresident.websub.regproc.workflow.complete.secret=${resident.websub.regproc.workflow.complete.secret}\nmosip.regproc.workflow.complete.topic=REGISTRATION_PROCESSOR_WORKFLOW_COMPLETED_EVENT\nresident.websub.callback.regproc.workflow.complete.relative.url=${server.servlet.context-path}/callback/regprocworkflow\nresident.websub.callback.regproc.workflow.complete.url=${mosip.api.internal.url}${resident.websub.callback.regproc.workflow.complete.relative.url}\n\n\n#--------------------------------TokenId generator---------------------------------------------------#\nmosip.kernel.tokenid.uin.salt=${mosip.kernel.uin.salt}\nmosip.kernel.tokenid.partnercode.salt=${mosip.kernel.partnercode.salt}\n#------------------------------------\n\n\n#Mask functions\nresident.email.mask.function=maskEmail\nresident.phone.mask.function=maskPhone\nresident.data.mask.function=convertToMaskData\n\n# Batch job configuration for credential status update\nmosip.resident.update.service.status.job.enabled=false\nmosip.resident.update.service.status.job.initial-delay=60000\n#Interval for checking the credential status for async requests. Note, this is done as a fallback though credential status update is hanlded in resident service via websub notification.\nmosip.resident.update.service.status.job.interval.millisecs=600000\n\n\n# Template type codes for email subject\nresident.template.email.subject.request-received.DOWNLOAD_PERSONALIZED_CARD=cust-and-down-my-card-request-received-email-subject\nresident.template.email.subject.success.DOWNLOAD_PERSONALIZED_CARD=cust-and-down-my-card-success-email-subject\nresident.template.email.subject.failure.DOWNLOAD_PERSONALIZED_CARD=cust-and-down-my-card-failure-email-subject\n\nresident.template.email.subject.request-received.ORDER_PHYSICAL_CARD=order-a-physical-card-request-received-email-subject\nresident.template.email.subject.success.ORDER_PHYSICAL_CARD=order-a-physical-card-success-email-subject\nresident.template.email.subject.failure.ORDER_PHYSICAL_CARD=order-a-physical-card-failure-email-subject\n\nresident.template.email.subject.request-received.SHARE_CRED_WITH_PARTNER=share-cred-with-partner-request-received-email-subject\nresident.template.email.subject.success.SHARE_CRED_WITH_PARTNER=share-cred-with-partner-success-email-subject\nresident.template.email.subject.failure.SHARE_CRED_WITH_PARTNER=share-cred-with-partner-failure-email-subject\n\nresident.template.email.subject.request-received.AUTH_TYPE_LOCK_UNLOCK=lock-unlock-auth-request-received-email-subject\nresident.template.email.subject.success.AUTH_TYPE_LOCK_UNLOCK=lock-unlock-auth-success-email-subject\nresident.template.email.subject.failure.AUTH_TYPE_LOCK_UNLOCK=lock-unlock-auth-failure-email-subject\n\nresident.template.email.subject.request-received.UPDATE_MY_UIN=update-demo-data-request-received-email-subject\nresident.template.email.subject.success.UPDATE_MY_UIN=update-demo-data-success-email-subject\nresident.template.email.subject.failure.UPDATE_MY_UIN=update-demo-data-failure-email-subject\nresident.template.email.subject.regproc-success.UPDATE_MY_UIN=update-demo-data-regproc-success-email-subject\nresident.template.email.subject.regproc-failure.UPDATE_MY_UIN=update-demo-data-regproc-failure-email-subject\nresident.template.email.subject.cancelled.UPDATE_MY_UIN=update-demo-data-discarded-email-subject\n\nresident.template.email.subject.request-received.GENERATE_VID=gen-or-revoke-vid-request-received-email-subject\nresident.template.email.subject.success.GENERATE_VID=gen-or-revoke-vid-success-email-subject\nresident.template.email.subject.failure.GENERATE_VID=gen-or-revoke-vid-failure-email-subject\n\nresident.template.email.subject.request-received.REVOKE_VID=gen-or-revoke-vid-request-received-email-subject\nresident.template.email.subject.success.REVOKE_VID=gen-or-revoke-vid-success-email-subject\nresident.template.email.subject.failure.REVOKE_VID=gen-or-revoke-vid-failure-email-subject\n\nresident.template.email.subject.request-received.VID_CARD_DOWNLOAD=vid-card-download-request-received-email-subject\nresident.template.email.subject.success.VID_CARD_DOWNLOAD=vid-card-download-success-email-subject\nresident.template.email.subject.failure.VID_CARD_DOWNLOAD=vid-card-download-failure-email-subject\n\nresident.template.email.subject.request-received.GET_MY_ID=get-my-uin-card-request-received-email-subject\nresident.template.email.subject.success.GET_MY_ID=get-my-uin-card-success-email-subject\nresident.template.email.subject.failure.GET_MY_ID=get-my-uin-card-failure-email-subject\n\nresident.template.email.subject.request-received.VALIDATE_OTP=verify-my-phone-email-request-received-email-subject\nresident.template.email.subject.success.VALIDATE_OTP=verify-my-phone-email-success-email-subject\nresident.template.email.subject.failure.VALIDATE_OTP=verify-my-phone-email-failure-email-subject\n\nresident.template.email.subject.success.SEND_OTP=receive-otp-mail-subject\n\n# Template type codes for email content\nresident.template.email.content.request-received.DOWNLOAD_PERSONALIZED_CARD=cust-and-down-my-card-request-received-email-content\nresident.template.email.content.success.DOWNLOAD_PERSONALIZED_CARD=cust-and-down-my-card-success-email-content\nresident.template.email.content.failure.DOWNLOAD_PERSONALIZED_CARD=cust-and-down-my-card-failure-email-content\n\nresident.template.email.content.request-received.ORDER_PHYSICAL_CARD=order-a-physical-card-request-received-email-content\nresident.template.email.content.success.ORDER_PHYSICAL_CARD=order-a-physical-card-success-email-content\nresident.template.email.content.failure.ORDER_PHYSICAL_CARD=order-a-physical-card-failure-email-content\n\nresident.template.email.content.request-received.SHARE_CRED_WITH_PARTNER=share-cred-with-partner-request-received-email-content\nresident.template.email.content.success.SHARE_CRED_WITH_PARTNER=share-cred-with-partner-success-email-content\nresident.template.email.content.failure.SHARE_CRED_WITH_PARTNER=share-cred-with-partner-failure-email-content\n\nresident.template.email.content.request-received.AUTH_TYPE_LOCK_UNLOCK=lock-unlock-auth-request-received-email-content\nresident.template.email.content.success.AUTH_TYPE_LOCK_UNLOCK=lock-unlock-auth-success-email-content\nresident.template.email.content.failure.AUTH_TYPE_LOCK_UNLOCK=lock-unlock-auth-failure-email-content\n\nresident.template.email.content.request-received.UPDATE_MY_UIN=update-demo-data-request-received-email-content\nresident.template.email.content.success.UPDATE_MY_UIN=update-demo-data-success-email-content\nresident.template.email.content.failure.UPDATE_MY_UIN=update-demo-data-failure-email-content\nresident.template.email.content.regproc-success.UPDATE_MY_UIN=update-demo-data-regproc-success-email-content\nresident.template.email.content.regproc-failure.UPDATE_MY_UIN=update-demo-data-regproc-failure-email-content\nresident.template.email.content.cancelled.UPDATE_MY_UIN=update-demo-data-discarded-email-content\n\nresident.template.email.content.request-received.GENERATE_VID=gen-or-revoke-vid-request-received-email-content\nresident.template.email.content.success.GENERATE_VID=gen-or-revoke-vid-success-email-content\nresident.template.email.content.failure.GENERATE_VID=gen-or-revoke-vid-failure-email-content\n\nresident.template.email.content.request-received.REVOKE_VID=gen-or-revoke-vid-request-received-email-content\nresident.template.email.content.success.REVOKE_VID=gen-or-revoke-vid-success-email-content\nresident.template.email.content.failure.REVOKE_VID=gen-or-revoke-vid-failure-email-content\n\nresident.template.email.content.request-received.VID_CARD_DOWNLOAD=vid-card-download-request-received-email-content\nresident.template.email.content.success.VID_CARD_DOWNLOAD=vid-card-download-success-email-content\nresident.template.email.content.failure.VID_CARD_DOWNLOAD=vid-card-download-failure-email-content\n\nresident.template.email.content.request-received.GET_MY_ID=get-my-uin-card-request-received-email-content\nresident.template.email.content.success.GET_MY_ID=get-my-uin-card-success-email-content\nresident.template.email.content.failure.GET_MY_ID=get-my-uin-card-failure-email-content\n\nresident.template.email.content.request-received.VALIDATE_OTP=verify-my-phone-email-request-received-email-content\nresident.template.email.content.success.VALIDATE_OTP=verify-my-phone-email-success-email-content\nresident.template.email.content.failure.VALIDATE_OTP=verify-my-phone-email-failure-email-content\n\nresident.template.email.content.success.SEND_OTP=receive-otp-mail-content\n\n# Template type codes for sms content\nresident.template.sms.request-received.DOWNLOAD_PERSONALIZED_CARD=cust-and-down-my-card-request-received_SMS\nresident.template.sms.success.DOWNLOAD_PERSONALIZED_CARD=cust-and-down-my-card-success_SMS\nresident.template.sms.failure.DOWNLOAD_PERSONALIZED_CARD=cust-and-down-my-card-failure_SMS\n\nresident.template.sms.request-received.ORDER_PHYSICAL_CARD=order-a-physical-card-request-received_SMS\nresident.template.sms.success.ORDER_PHYSICAL_CARD=order-a-physical-card-success_SMS\nresident.template.sms.failure.ORDER_PHYSICAL_CARD=order-a-physical-card-failure_SMS\n\nresident.template.sms.request-received.SHARE_CRED_WITH_PARTNER=share-cred-with-partner-request-received_SMS\nresident.template.sms.success.SHARE_CRED_WITH_PARTNER=share-cred-with-partner-success_SMS\nresident.template.sms.failure.SHARE_CRED_WITH_PARTNER=share-cred-with-partner-failure_SMS\n\nresident.template.sms.request-received.AUTH_TYPE_LOCK_UNLOCK=lock-unlock-auth-request-received_SMS\nresident.template.sms.success.AUTH_TYPE_LOCK_UNLOCK=lock-unlock-auth-success_SMS\nresident.template.sms.failure.AUTH_TYPE_LOCK_UNLOCK=lock-unlock-auth-failure_SMS\n\nresident.template.sms.request-received.UPDATE_MY_UIN=update-demo-data-request-received_SMS\nresident.template.sms.success.UPDATE_MY_UIN=update-demo-data-success_SMS\nresident.template.sms.failure.UPDATE_MY_UIN=update-demo-data-failure_SMS\nresident.template.sms.regproc-success.UPDATE_MY_UIN=update-demo-data-regproc-success_SMS\nresident.template.sms.regproc-failure.UPDATE_MY_UIN=update-demo-data-regproc-failure_SMS\nresident.template.sms.cancelled.UPDATE_MY_UIN=update-demo-data-discarded-SMS\n\nresident.template.sms.request-received.GENERATE_VID=gen-or-revoke-vid-request-received_SMS\nresident.template.sms.success.GENERATE_VID=gen-or-revoke-vid-success_SMS\nresident.template.sms.failure.GENERATE_VID=gen-or-revoke-vid-failure_SMS\n\nresident.template.sms.request-received.REVOKE_VID=gen-or-revoke-vid-request-received_SMS\nresident.template.sms.success.REVOKE_VID=gen-or-revoke-vid-success_SMS\nresident.template.sms.failure.REVOKE_VID=gen-or-revoke-vid-failure_SMS\n\nresident.template.sms.request-received.VID_CARD_DOWNLOAD=vid-card-download-request-received_SMS\nresident.template.sms.success.VID_CARD_DOWNLOAD=vid-card-download-success_SMS\nresident.template.sms.failure.VID_CARD_DOWNLOAD=vid-card-download-failure_SMS\n\nresident.template.sms.request-received.GET_MY_ID=get-my-uin-card-request-received_SMS\nresident.template.sms.success.GET_MY_ID=get-my-uin-card-success_SMS\nresident.template.sms.failure.GET_MY_ID=get-my-uin-card-failure_SMS\n\nresident.template.sms.request-received.VALIDATE_OTP=verify-my-phone-email-request-received_SMS\nresident.template.sms.success.VALIDATE_OTP=verify-my-phone-email-success_SMS\nresident.template.sms.failure.VALIDATE_OTP=verify-my-phone-email-failure_SMS\n\nresident.template.sms.success.SEND_OTP=receive-otp\n\n# Template type codes for purpose (success) content\nresident.template.purpose.success.DOWNLOAD_PERSONALIZED_CARD=cust-and-down-my-card-positive-purpose\nresident.template.purpose.success.ORDER_PHYSICAL_CARD=order-a-physical-card-positive purpose\nresident.template.purpose.success.SHARE_CRED_WITH_PARTNER=share-cred-with-partner-positive-purpose\nresident.template.purpose.success.AUTH_TYPE_LOCK_UNLOCK=lock-unlock-auth-positive-purpose\nresident.template.purpose.success.UPDATE_MY_UIN=update-demo-data-positive-purpose\nresident.template.purpose.success.GENERATE_VID=gen-or-revoke-vid-positive-purpose\nresident.template.purpose.success.REVOKE_VID=gen-or-revoke-vid-positive-purpose\nresident.template.purpose.success.GET_MY_ID=get-my-uin-card-positive-purpose\nresident.template.purpose.success.VALIDATE_OTP=verify-my-phone-email-positive-purpose\nresident.template.purpose.success.VID_CARD_DOWNLOAD=vid-card-download-positive-purpose\nresident.template.purpose.success.AUTHENTICATION_REQUEST=authentication-request-positive-purpose\n\n# Template type codes for purpose (in-progress/failure) content\nresident.template.purpose.failure.DOWNLOAD_PERSONALIZED_CARD=cust-and-down-my-card-negative-purpose\nresident.template.purpose.failure.ORDER_PHYSICAL_CARD=order-a-physical-card-negative purpose\nresident.template.purpose.failure.SHARE_CRED_WITH_PARTNER=share-cred-with-partner-negative-purpose\nresident.template.purpose.failure.AUTH_TYPE_LOCK_UNLOCK=lock-unlock-auth-negative-purpose\nresident.template.purpose.failure.UPDATE_MY_UIN=update-demo-data-negative-purpose\nresident.template.purpose.failure.GENERATE_VID=gen-or-revoke-vid-negative-purpose\nresident.template.purpose.failure.REVOKE_VID=gen-or-revoke-vid-negative-purpose\nresident.template.purpose.failure.GET_MY_ID=get-my-uin-card-negative-purpose\nresident.template.purpose.failure.VALIDATE_OTP=verify-my-phone-email-negative-purpose\nresident.template.purpose.failure.VID_CARD_DOWNLOAD=vid-card-download-negative-purpose\nresident.template.purpose.failure.AUTHENTICATION_REQUEST=authentication-request-negative-purpose\n\n# Template type codes for purpose (cancelled) content\nresident.template.purpose.cancelled.UPDATE_MY_UIN=update-demo-data-cancelled-purpose\n\n# Template type codes for purpose(Identity updated) content\nresident.template.purpose.regproc-success.UPDATE_MY_UIN=update-demo-data-regproc-success-purpose\n\n# Template type codes for summary (success) content\nresident.template.summary.success.DOWNLOAD_PERSONALIZED_CARD=cust-and-down-my-card-success-summary\nresident.template.summary.success.ORDER_PHYSICAL_CARD=order-a-physical-card-success-summary\nresident.template.summary.success.SHARE_CRED_WITH_PARTNER=share-cred-with-partner-success-summary\nresident.template.summary.success.AUTH_TYPE_LOCK_UNLOCK=lock-unlock-auth-success-summary\nresident.template.summary.success.UPDATE_MY_UIN=update-demo-data-success-summary\nresident.template.summary.success.GENERATE_VID=gen-or-revoke-vid-success-summary\nresident.template.summary.success.REVOKE_VID=gen-or-revoke-vid-success-summary\nresident.template.summary.success.GET_MY_ID=get-my-uin-card-success-summary\nresident.template.summary.success.VALIDATE_OTP=verify-my-phone-email-success-summary\nresident.template.summary.success.VID_CARD_DOWNLOAD=vid-card-download-positive-summary\nresident.template.summary.success.AUTHENTICATION_REQUEST=authentication-request-positive-summary\n\n# Template type code for summary (cancelled) content\nresident.template.summary.cancelled.UPDATE_MY_UIN=update-demo-data-cancelled-summary\n\n# Template type code for summary (regproc-success) content\nresident.template.summary.regproc-success.UPDATE_MY_UIN=update-demo-data-regproc-success-summary\n\n# Template type codes for acknowledgement PDFs\nresident.template.ack.share-cred-with-partner=acknowledgement-share-cred-with-partner\nresident.template.ack.manage-my-vid=acknowledgement-manage-my-vid\nresident.template.ack.order-a-physical-card=acknowledgement-order-a-physical-card\nresident.template.ack.download-a-personalized-card=acknowledgement-download-a-personalized-card\nresident.template.ack.update-demographic-data=acknowledgement-update-demographic-data\nresident.template.ack.verify-email-id-or-phone-number=acknowledgement-verify-email-id-or-phone-number\nresident.template.ack.secure-my-id=acknowledgement-secure-my-id\nresident.template.ack.authentication.request=acknowledgment-authentication-request\nresident.template.ack.get.my.id=acknowledgment-get-my-id\nresident.template.ack.vid.card.download=acknowledgment-vid-card-download\n\n# Template type codes for list of supporting documents, service history, registration centers and vid card\nresident.template.support-docs-list=supporting-docs-list\nmosip.resident.service.history.template.type.code=service-history-type\nresident.template.registration.centers.list=registration-centers-list\nmosip.resident.vid.card.template.property=vid-card-type\n\n# Template required properties\nresident.template.date.pattern=dd-MM-yyyy\nresident.template.time.pattern=HH:mm:ss\nresident.ui.track-service-request-url=https://${mosip.resident.host}/#/uinservices/trackservicerequest?eid=\n\n# View history filters\nresident.view.history.serviceType.filters=ALL,AUTHENTICATION_REQUEST,SERVICE_REQUEST,DATA_UPDATE_REQUEST,ID_MANAGEMENT_REQUEST,DATA_SHARE_REQUEST\nresident.view.history.status.filters=ALL,SUCCESS,IN_PROGRESS,FAILED,CANCELED\n\n# Maximum data to download in a PDF\nresident.service-history.download.max.count=100\nresident.registration-centers.download.max.count=100\n\n## The Registration centers will be searched based on the distance value in meters from the Geo location identified\nresident.nearby.centers.distance.meters=2000\n\n# Page size in Bell Icon Notification list and View history\nresident.notifications.default.page.size=100\nresident.view-history.default.page.size=10\n\n#to get id_token in cookie and validate it\nauth.validate.id-token=true\nidToken=id_token\nauth.token.header=Authorization\nmosip.resident.access_token.auth_mode.claim-name=acr\nmosip.resident.oidc.id_token.ida_token.claim-name=sub\nmosip.resident.oidc.auth_token.expiry.claim-name=exp\nmosip.resident.oidc.userinfo.encryption.enabled=false\n\nmosip.client.assertion.reference.id=\nmosip.include.payload=true\nmosip.include.certificate=true\nmosip.include.cert.hash=false\n\n\n# Rectangle coordinates for PDF signatured data\nmosip.resident.service.uincard.lowerleftx=73\nmosip.resident.service.uincard.lowerlefty=100\nmosip.resident.service.uincard.upperrightx=300\nmosip.resident.service.uincard.upperrighty=300\nmosip.resident.service.uincard.signature.reason=\"Digitally Signed\"\n\nmosip.client.assertion.type=urn:ietf:params:oauth:client-assertion-type:jwt-bearer\n\n#method name to create password\nresident.create.password.method.name=getPassword\n\nresident.ui.notification.update.interval.seconds=30\nresident.ui.datetime.pattern.default=yyyy-MM-dd HH:mm:ss\nresident.filename.datetime.pattern.default=yyyy-MM-dd'T'HH_mm_ss\n\n#File name for the downloaded PDFs. \"eventId\" and \"timestamp\" are configurable. If they are removed from below property then they will be removed from file name also.\nmosip.resident.download.registration.centre.file.name.convention=Registration_centers_{timestamp}\nmosip.resident.download.supporting.document.file.name.convention=Supporting_documents_{timestamp}\nmosip.resident.download.personalized.card.naming.convention=Personalised_card_{eventId}_{timestamp}\nmosip.resident.ack.manage_my_vid.name.convention=Ack_{featureName}_{eventId}_{timestamp}\nmosip.resident.ack.secure_my_id.name.convention=Ack_{featureName}_{eventId}_{timestamp}\nmosip.resident.ack.personalised_card.name.convention=Ack_{featureName}_{eventId}_{timestamp}\nmosip.resident.ack.update_my_data.name.convention=Ack_{featureName}_{eventId}_{timestamp}\nmosip.resident.ack.share_credential.name.convention=Ack_{featureName}_{eventId}_{timestamp}\nmosip.resident.ack.order_physical_card.name.convention=Ack_{featureName}_{eventId}_{timestamp}\nmosip.resident.ack.name.convention=Ack_{featureName}_{eventId}_{timestamp}\nmosip.resident.uin.card.name.convention=UIN_{eventId}_{timestamp}\nmosip.resident.vid.card.name.convention=VID_{eventId}_{timestamp}\nmosip.resident.download.service.history.file.name.convention=View_history_{timestamp}\nmosip.resident.download.nearest.registration.centre.file.name.convention=Registration_centers_{timestamp}\nmosip.resident.download.card.naming.convention=Get_my_UIN_{timestamp}\n\n# Credential request config for sharing credential to partner\nmosip.resident.request.credential.credentialType=vercred\n#mosip.resident.request.credential.credentialType=euin\n\n#Temporarily uncommented below 2 properties for testing release 1201 branch in env.\nmosip.resident.request.credential.isEncrypt=true\nmosip.resident.request.credential.encryption.key=${mosip.resident.request.credential.encryption.key}\n\nmosip.digital.card.credential.type=PDFCard\nmosip.credential.issuer=mpartner-default-digitalcard\n\n# Claim names\nmosip.resident.name.token.claim-name=name\nmosip.resident.photo.token.claim-photo=picture\nmosip.resident.individual.id.claim.name=individual_id\nmosip.resident.email.token.claim-email=email\nmosip.resident.phone.token.claim-phone=phone_number\n\n# Value based properties\notpChannel.email=email\notpChannel.mobile=phone\nmosip.idrepo.vid.reactive-status=ACTIVE\nresident.dateofbirth.pattern=yyyy/MM/dd\nmosip.resident.photo.attribute.name=photo\nmosip.resident.order.card.payment.enabled=true\nresident.update.preferred.language.by.name=true\nresident.documents.category=individualBiometrics\nmosip.resident.schema.attribute-name=attributeName\nmosip.resident.applicant.name.property=applicantName\nmosip.resident.authentication.mode.property=authenticationMode\nresident.attribute.names.without.documents.required=preferredLanguage,email,phone\nresident.additional.identity.attribute.to.fetch=UIN,email,phone,dateOfBirth,fullName,photo\n\n\n## OTP flooding\n## Configure Time limit for OTP Flooding scenario (in minutes)\notp.request.flooding.duration=1\notp.request.flooding.max-count=100\n\n\n# Maximum file size and allowed file types for uploading document\nmosip.max.file.upload.size.in.bytes=2306867\nmosip.allowed.extension=pdf,jpeg,png,jpg\n\n\n# Reg-proc packet status codes\nresident.success.packet-status-code.list=PROCESSED,SUCCESS,UIN_GENERATED\nresident.in-progress.packet-status-code.list=PROCESSING,REREGISTER,RESEND,RECEIVED,UPLOAD_PENDING,AWAITING_INFORMATION,REPROCESS\nresident.failure.packet-status-code.list=REJECTED,FAILED,REPROCESS_FAILED\n\n# Reg-proc packet transaction type codes\nresident.REQUEST_RECEIVED.packet-transaction-type-code.list=PACKET_RECEIVER,VIRUS_SCAN,SECUREZONE_NOTIFICATION,UPLOAD_PACKET,VALIDATE_PACKET,PACKET_CLASSIFICATION\nresident.VALIDATION_STAGE.packet-transaction-type-code.list=CMD_VALIDATION,OPERATOR_VALIDATION,QUALITY_CLASSIFIER,SUPERVISOR_VALIDATION,INTRODUCER_VALIDATION,BIOMETRIC_AUTHENTICATION,EXTERNAL_INTEGRATION\nresident.VERIFICATION_STAGE.packet-transaction-type-code.list=DEMOGRAPHIC_VERIFICATION,MANUAL_ADJUDICATION,VERIFICATION,BIOGRAPHIC_VERIFICATION\nresident.UIN_GENERATION_STAGE.packet-transaction-type-code.list=UIN_GENERATOR,BIOMETRIC_EXTRACTION,NOTIFICATION,FINALIZATION,PACKET_REPROCESS\nresident.CARD_READY_TO_DOWNLOAD.packet-transaction-type-code.list=PRINT_SERVICE,PRINT_POSTAL_SERVICE,PRINT\n\nsequence-order=Request received, Validation stage, Verification stage, Uin generation stage, Card ready to download\n\n\n##Synchronous events\n\nresident.request.success.status.list.AUTHENTICATION_REQUEST=AUTHENTICATION_SUCCESSFUL,Y\nresident.request.failed.status.list.AUTHENTICATION_REQUEST=AUTHENTICATION_FAILED,N\nresident.request.cancelled.status.list.AUTHENTICATION_REQUEST=\n\nresident.request.new.status.list.DOWNLOAD_PERSONALIZED_CARD=NEW\nresident.batchjob.process.success.status.list.DOWNLOAD_PERSONALIZED_CARD=CARD_DOWNLOADED\nresident.request.failed.status.list.DOWNLOAD_PERSONALIZED_CARD=FAILED\nresident.request.cancelled.status.list.DOWNLOAD_PERSONALIZED_CARD=\n\nresident.request.new.status.list.GET_MY_ID=NEW\nresident.request.in-progress.status.list.GET_MY_ID=OTP_REQUESTED\nresident.request.success.status.list.GET_MY_ID=CARD_DOWNLOADED,OTP_VERIFIED\nresident.request.failed.status.list.GET_MY_ID=FAILED\nresident.request.cancelled.status.list.GET_MY_ID=\n\nresident.request.new.status.list.BOOK_AN_APPOINTMENT=\nresident.request.success.status.list.BOOK_AN_APPOINTMENT=\nresident.request.failed.status.list.BOOK_AN_APPOINTMENT=\nresident.request.cancelled.status.list.BOOK_AN_APPOINTMENT=\n\nresident.request.new.status.list.GENERATE_VID=NEW\nresident.request.success.status.list.GENERATE_VID=VID_GENERATED\nresident.request.failed.status.list.GENERATE_VID=FAILED\nresident.request.cancelled.status.list.GENERATE_VID=\n\nresident.request.new.status.list.REVOKE_VID=NEW\nresident.request.success.status.list.REVOKE_VID=VID_REVOKED\nresident.request.failed.status.list.REVOKE_VID=FAILED\nresident.request.cancelled.status.list.REVOKE_VID=\n\nresident.request.new.status.list.SEND_OTP=\nresident.request.success.status.list.SEND_OTP=\nresident.request.failed.status.list.SEND_OTP=\nresident.request.cancelled.status.list.SEND_OTP=\n\nresident.request.new.status.list.VALIDATE_OTP=OTP_REQUESTED\nresident.request.success.status.list.VALIDATE_OTP=OTP_VERIFIED\nresident.request.failed.status.list.VALIDATE_OTP=OTP_VERIFICATION_FAILED\nresident.request.cancelled.status.list.VALIDATE_OTP=\n\nresident.request.new.status.list.DEFAULT=\nresident.request.success.status.list.DEFAULT=\nresident.request.failed.status.list.DEFAULT=\nresident.request.cancelled.status.list.DEFAULT=\n\n\n# Asyc Request Types\nresident.async.request.types=VID_CARD_DOWNLOAD,ORDER_PHYSICAL_CARD,SHARE_CRED_WITH_PARTNER,UPDATE_MY_UIN\n\n##Asynchronous events\n\nresident.request.new.status.list.SHARE_CRED_WITH_PARTNER=NEW\nresident.request.in-progress.status.list.SHARE_CRED_WITH_PARTNER=ISSUED\nresident.request.success.status.list.SHARE_CRED_WITH_PARTNER=RECEIVED,DATA_SHARED_SUCCESSFULLY,STORED\nresident.request.failed.status.list.SHARE_CRED_WITH_PARTNER=FAILED\nresident.request.cancelled.status.list.SHARE_CRED_WITH_PARTNER=\nresident.request.notification.status.list.SHARE_CRED_WITH_PARTNER=FAILED,RECEIVED,DATA_SHARED_SUCCESSFULLY,STORED\n\nresident.request.new.status.list.ORDER_PHYSICAL_CARD=NEW\nresident.request.in-progress.status.list.ORDER_PHYSICAL_CARD=PAYMENT_CONFIRMED,ISSUED,PRINTING,IN_TRANSIT\nresident.request.success.status.list.ORDER_PHYSICAL_CARD=CARD_DELIVERED\nresident.request.failed.status.list.ORDER_PHYSICAL_CARD=FAILED,PAYMENT_FAILED\nresident.request.cancelled.status.list.ORDER_PHYSICAL_CARD=\nresident.request.notification.status.list.ORDER_PHYSICAL_CARD=PAYMENT_CONFIRMED,ISSUED,PRINTING,IN_TRANSIT,CARD_DELIVERED,FAILED,PAYMENT_FAILED,CARD_DELIVERED\n\nresident.request.new.status.list.UPDATE_MY_UIN=NEW\nresident.request.in-progress.status.list.UPDATE_MY_UIN=PROCESSING,PAUSED,RESUMABLE,REPROCESS,PAUSED_FOR_ADDITIONAL_INFO,IDENTITY_UPDATED\nresident.request.success.status.list.UPDATE_MY_UIN=PROCESSED,DATA_UPDATED,STORED,CARD_READY_TO_DOWNLOAD,CARD_DOWNLOADED\nresident.request.failed.status.list.UPDATE_MY_UIN=FAILED,REJECTED,REPROCESS_FAILED\nresident.request.cancelled.status.list.UPDATE_MY_UIN=CANCELED\nresident.request.notification.status.list.UPDATE_MY_UIN=PROCESSED,DATA_UPDATED,STORED,CARD_READY_TO_DOWNLOAD,CARD_DOWNLOADED,FAILED,REJECTED,REPROCESS_FAILED,IDENTITY_UPDATED\n\nresident.request.new.status.list.AUTH_TYPE_LOCK_UNLOCK=NEW\nresident.request.in-progress.status.list.AUTH_TYPE_LOCK_UNLOCK=\nresident.request.success.status.list.AUTH_TYPE_LOCK_UNLOCK=COMPLETED\nresident.request.failed.status.list.AUTH_TYPE_LOCK_UNLOCK=FAILED\nresident.request.cancelled.status.list.AUTH_TYPE_LOCK_UNLOCK=\nresident.request.notification.status.list.AUTH_TYPE_LOCK_UNLOCK=COMPLETED,FAILED\n\nresident.request.new.status.list.VID_CARD_DOWNLOAD=NEW\nresident.request.in-progress.status.list.VID_CARD_DOWNLOAD=ISSUED\nresident.request.success.status.list.VID_CARD_DOWNLOAD=STORED,CARD_READY_TO_DOWNLOAD,CARD_DOWNLOADED\nresident.request.failed.status.list.VID_CARD_DOWNLOAD=FAILED\nresident.request.cancelled.status.list.VID_CARD_DOWNLOAD=\nresident.request.notification.status.list.VID_CARD_DOWNLOAD=STORED,CARD_READY_TO_DOWNLOAD,CARD_DOWNLOADED,FAILED\n\n\n# define property name in below format-\n#resident..template.property.attribute.list\nresident.PHONE.template.property.attribute.list=mosip.phone.template.property\nresident.EMAIL.template.property.attribute.list=mosip.email.template.property\nresident.GENERATE_VID.template.property.attribute.list=mosip.generated.template.property\nresident.REVOKE_VID.template.property.attribute.list=mosip.revoked.template.property\n\n# template type codes for event status code\nresident.event.status.SUCCESS.template.property=mosip.event.status.success.template\nresident.event.status.FAILED.template.property=mosip.event.status.failed.template\nresident.event.status.IN_PROGRESS.template.property=mosip.event.status.inprogress.template\nresident.event.status.CANCELED.template.property=mosip.event.status.cancelled.template\n\n# template type codes for event types\n# define property name in below format-\n# resident.event.type..template.property\nresident.event.type.AUTHENTICATION_REQUEST.template.property=mosip.event.type.AUTHENTICATION_REQUEST\nresident.event.type.SHARE_CRED_WITH_PARTNER.template.property=mosip.event.type.SHARE_CRED_WITH_PARTNER\nresident.event.type.DOWNLOAD_PERSONALIZED_CARD.template.property=mosip.event.type.DOWNLOAD_PERSONALIZED_CARD\nresident.event.type.ORDER_PHYSICAL_CARD.template.property=mosip.event.type.ORDER_PHYSICAL_CARD\nresident.event.type.GET_MY_ID.template.property=mosip.event.type.GET_MY_ID\nresident.event.type.UPDATE_MY_UIN.template.property=mosip.event.type.UPDATE_MY_UIN\nresident.event.type.GENERATE_VID.template.property=mosip.event.type.GENERATE_VID\nresident.event.type.REVOKE_VID.template.property=mosip.event.type.REVOKE_VID\nresident.event.type.AUTH_TYPE_LOCK_UNLOCK.template.property=mosip.event.type.AUTH_TYPE_LOCK_UNLOCK\nresident.event.type.VID_CARD_DOWNLOAD.template.property=mosip.event.type.VID_CARD_DOWNLOAD\nresident.event.type.SEND_OTP.template.property=mosip.event.type.SEND_OTP\nresident.event.type.VALIDATE_OTP.template.property=mosip.event.type.VALIDATE_OTP\nresident.event.type.DEFAULT.template.property=mosip.event.type.DEFAULT\n\n# template type codes for service types\n# define property name in below format-\n# resident.service-type..template.property\nresident.service-type.AUTHENTICATION_REQUEST.template.property=mosip.service.type.AUTHENTICATION_REQUEST\nresident.service-type.SERVICE_REQUEST.template.property=mosip.service.type.SERVICE_REQUEST\nresident.service-type.DATA_UPDATE_REQUEST.template.property=mosip.service.type.DATA_UPDATE_REQUEST\nresident.service-type.ID_MANAGEMENT_REQUEST.template.property=mosip.service.type.ID_MANAGEMENT_REQUEST\nresident.service-type.DATA_SHARE_REQUEST.template.property=mosip.service.type.DATA_SHARE_REQUEST\nresident.service-type.ASYNC.template.property=mosip.service.type.ASYNC\n\nresident.ALL.template.property=mosip.template.ALL\nresident.UNKNOWN.template.property=mosip.template.UNKNOWN\n\n# template type codes for id-authentication request types description\n# define property name in below format-\n# resident.id-auth.request-type...descr\nresident.id-auth.request-type.OTP-REQUEST.SUCCESS.descr=mosip.ida.auth-request.OTP-REQUEST.Y.descr\nresident.id-auth.request-type.OTP-AUTH.SUCCESS.descr=mosip.ida.auth-request.OTP-AUTH.Y.descr\nresident.id-auth.request-type.DEMO-AUTH.SUCCESS.descr=mosip.ida.auth-request.DEMO-AUTH.Y.descr\nresident.id-auth.request-type.FINGERPRINT-AUTH.SUCCESS.descr=mosip.ida.auth-request.FINGERPRINT-AUTH.Y.descr\nresident.id-auth.request-type.IRIS-AUTH.SUCCESS.descr=mosip.ida.auth-request.IRIS-AUTH.Y.descr\nresident.id-auth.request-type.FACE-AUTH.SUCCESS.descr=mosip.ida.auth-request.FACE-AUTH.Y.descr\nresident.id-auth.request-type.STATIC-PIN-AUTH.SUCCESS.descr=mosip.ida.auth-request.STATIC-PIN-AUTH.Y.descr\nresident.id-auth.request-type.STATIC-PIN-STORAGE.SUCCESS.descr=mosip.ida.auth-request.STATIC-PIN-STORAGE.Y.descr\nresident.id-auth.request-type.EKYC-AUTH.SUCCESS.descr=mosip.ida.auth-request.EKYC-AUTH.Y.descr\nresident.id-auth.request-type.KYC-AUTH.SUCCESS.descr=mosip.ida.auth-request.KYC-AUTH.Y.descr\nresident.id-auth.request-type.KYC-EXCHANGE.SUCCESS.descr=mosip.ida.auth-request.KYC-EXCHANGE.Y.descr\nresident.id-auth.request-type.IDENTITY-KEY-BINDING.SUCCESS.descr=mosip.ida.auth-request.IDENTITY-KEY-BINDING.Y.descr\nresident.id-auth.request-type.TOKEN-REQUEST.SUCCESS.descr=mosip.ida.auth-request.TOKEN-REQUEST.Y.descr\nresident.id-auth.request-type.TOKEN-AUTH.SUCCESS.descr=mosip.ida.auth-request.TOKEN-AUTH.Y.descr\nresident.id-auth.request-type.UNKNOWN.SUCCESS.descr=mosip.ida.auth-request.UNKNOWN.Y.descr\nresident.id-auth.request-type.OTP-REQUEST.FAILED.descr=mosip.ida.auth-request.OTP-REQUEST.N.descr\nresident.id-auth.request-type.OTP-AUTH.FAILED.descr=mosip.ida.auth-request.OTP-AUTH.N.descr\nresident.id-auth.request-type.DEMO-AUTH.FAILED.descr=mosip.ida.auth-request.DEMO-AUTH.N.descr\nresident.id-auth.request-type.FINGERPRINT-AUTH.FAILED.descr=mosip.ida.auth-request.FINGERPRINT-AUTH.N.descr\nresident.id-auth.request-type.IRIS-AUTH.FAILED.descr=mosip.ida.auth-request.IRIS-AUTH.N.descr\nresident.id-auth.request-type.FACE-AUTH.FAILED.descr=mosip.ida.auth-request.FACE-AUTH.N.descr\nresident.id-auth.request-type.STATIC-PIN-AUTH.FAILED.descr=mosip.ida.auth-request.STATIC-PIN-AUTH.N.descr\nresident.id-auth.request-type.STATIC-PIN-STORAGE.FAILED.descr=mosip.ida.auth-request.STATIC-PIN-STORAGE.N.descr\nresident.id-auth.request-type.EKYC-AUTH.FAILED.descr=mosip.ida.auth-request.EKYC-AUTH.N.descr\nresident.id-auth.request-type.KYC-AUTH.FAILED.descr=mosip.ida.auth-request.KYC-AUTH.N.descr\nresident.id-auth.request-type.KYC-EXCHANGE.FAILED.descr=mosip.ida.auth-request.KYC-EXCHANGE.N.descr\nresident.id-auth.request-type.IDENTITY-KEY-BINDING.FAILED.descr=mosip.ida.auth-request.IDENTITY-KEY-BINDING.N.descr\nresident.id-auth.request-type.TOKEN-REQUEST.FAILED.descr=mosip.ida.auth-request.TOKEN-REQUEST.N.descr\nresident.id-auth.request-type.TOKEN-AUTH.FAILED.descr=mosip.ida.auth-request.TOKEN-AUTH.N.descr\nresident.id-auth.request-type.UNKNOWN.FAILED.descr=mosip.ida.auth-request.UNKNOWN.N.descr\n\n# template type codes for authentication modes (authTypeCode)\n# define property name in below format-\n# resident.auth-type-code..code\nresident.auth-type-code.OTP-REQUEST.code=mosip.auth-type-code.OTP-REQUEST\nresident.auth-type-code.OTP-AUTH.code=mosip.auth-type-code.OTP-AUTH\nresident.auth-type-code.DEMO-AUTH.code=mosip.auth-type-code.DEMO-AUTH\nresident.auth-type-code.FINGERPRINT-AUTH.code=mosip.auth-type-code.FINGERPRINT-AUTH\nresident.auth-type-code.IRIS-AUTH.code=mosip.auth-type-code.IRIS-AUTH\nresident.auth-type-code.FACE-AUTH.code=mosip.auth-type-code.FACE-AUTH\nresident.auth-type-code.STATIC-PIN-AUTH.code=mosip.auth-type-code.STATIC-PIN-AUTH\nresident.auth-type-code.STATIC-PIN-STORAGE.code=mosip.auth-type-code.STATIC-PIN-STORAGE\nresident.auth-type-code.EKYC-AUTH.code=mosip.auth-type-code.EKYC-AUTH\nresident.auth-type-code.KYC-AUTH.code=mosip.auth-type-code.KYC-AUTH\nresident.auth-type-code.KYC-EXCHANGE.code=mosip.auth-type-code.KYC-EXCHANGE\nresident.auth-type-code.IDENTITY-KEY-BINDING.code=mosip.auth-type-code.IDENTITY-KEY-BINDING\nresident.auth-type-code.TOKEN-REQUEST.code=mosip.auth-type-code.TOKEN-REQUEST\nresident.auth-type-code.TOKEN-AUTH.code=mosip.auth-type-code.TOKEN-AUTH\nresident.auth-type-code.PWD.code=mosip.auth-type-code.PWD\nresident.auth-type-code.PIN.code=mosip.auth-type-code.PIN\nresident.auth-type-code.OTP.code=mosip.auth-type-code.OTP\nresident.auth-type-code.Wallet.code=mosip.auth-type-code.Wallet\nresident.auth-type-code.L1-bio-device.code=mosip.auth-type-code.L1-bio-device\n\n# Below property will retrieve VID when requested. Default is false so, UIN will be retrieved.\n# Endpoints using below property- /individualId/otp, /aid/status\n#resident.flag.use-vid-only=true\n\n# Class name of the referenceValidator. Commenting or removing this property will disable reference validator.\nmosip.kernel.idobjectvalidator.referenceValidator=io.mosip.kernel.idobjectvalidator.impl.IdObjectReferenceValidator\n\n\nspring.servlet.multipart.max-file-size=10MB\n\n\n# for validating request time as per before & after time limit (in seconds) in contact-details/update API.\nresident.future.time.limit=60\nresident.past.time.limit=60\n\n# The java.time.format.FormatStyle enum to use for date time formatting based on locale. Allowed values with examples are:\n# * FULL ('Tuesday, April 12, 1952 AD' or '3:30:42pm PST'),\n# * LONG('January 12, 1952'),\n# * MEDIUM ('Jan 12, 1952'),\n# * SHORT ('12.13.52' or '3:30pm').\n# Default value is MEDIUM. For more details refer to the enum.\nresident.date.time.formmatting.style=MEDIUM\nresident.date.time.replace.special.chars={\" \": \"_\", \",\" : \"\", \":\" : \".\"}\n\n#cache expiration times are in milliseconds.\nresident.cache.expiry.time.millisec.templateCache=86400000\nresident.cache.expiry.time.millisec.partnerCache=86400000\nresident.cache.expiry.time.millisec.getValidDocumentByLangCode=86400000\nresident.cache.expiry.time.millisec.getLocationHierarchyLevelByLangCode=86400000\nresident.cache.expiry.time.millisec.getImmediateChildrenByLocCodeAndLangCode=86400000\nresident.cache.expiry.time.millisec.getLocationDetailsByLocCodeAndLangCode=86400000\nresident.cache.expiry.time.millisec.getCoordinateSpecificRegistrationCenters=86400000\nresident.cache.expiry.time.millisec.getApplicantValidDocument=86400000\nresident.cache.expiry.time.millisec.getRegistrationCentersByHierarchyLevel=86400000\nresident.cache.expiry.time.millisec.getRegistrationCenterByHierarchyLevelAndTextPaginated=86400000\nresident.cache.expiry.time.millisec.getRegistrationCenterWorkingDays=86400000\nresident.cache.expiry.time.millisec.getLatestIdSchema=86400000\nresident.cache.expiry.time.millisec.getGenderCodeByGenderTypeAndLangCode=86400000\nresident.cache.expiry.time.millisec.getDocumentTypesByDocumentCategoryAndLangCode=86400000\nresident.cache.expiry.time.millisec.getDynamicFieldBasedOnLangCodeAndFieldName=86400000\nresident.cache.expiry.time.millisec.getCenterDetails=86400000\nresident.cache.expiry.time.millisec.getImmediateChildrenByLocCode=86400000\nresident.cache.expiry.time.millisec.getLocationHierarchyLevels=86400000\nresident.cache.expiry.time.millisec.getAllDynamicFieldByName=86400000\nresident.cache.expiry.time.millisec.getNameValueFromIdentityMapping=86400000\n\n# Separators\n# Usage: resident.attribute.separator.=\nresident.attribute.separator.fullAddress=, \n\n# Limit the number of async threads created in Resident services. This count is divided into 4 thread groups configured in 'io.mosip.resident.config.Config' class\nmosip.resident.async-core-pool-size=100\nmosip.resident.async-max-pool-size=100\n\n# Logo property\n# This property is used in all downloaded PDF files.\nmosip.pdf.header.logo.url=https://mosip.io/images/mosipn-logo.png\n\n# These properties is used in reg-center feature for map zoom in & out.\nmosip.resident.zoom=14\nmosip.resident.maxZoom=18\nmosip.resident.minZoom=5\n\n# Transliteration work around property since eng to fra directly is not supported in icu4j.This can be added for any other unsupported language also.\n# For example resident-transliteration-workaround-for-- = fromLanguageCode-intermediateLanguageCode-toLanguageCode\n# For Intermediate language code transliteration should work in both ways.\nresident-transliteration-workaround-for-eng-fra=eng-hin,hin-fra\nresident-transliteration-workaround-for-eng-spa=eng-hin,hin-spa\n\n# Reg-processer-credential-partner-policy-url\nmosip.resident.reg-processer-credential-partner-policy-url=${config.server.file.storage.uri}registration-processor-credential-partners.json\n\nhibernate.dialect=org.hibernate.dialect.PostgreSQLDialect\n\n## Keymanager service\n## below properties are added because resident service using keygenerator and for bean creation these properties required.\n#Type of keystore, Supported Types: PKCS11, PKCS12, Offline, JCE\nmosip.kernel.keymanager.hsm.keystore-type=OFFLINE\n# For PKCS11 provide Path of config file.\n# For PKCS12 keystore type provide the p12/pfx file path. P12 file will be created internally so provide only file path & file name.\n# For Offline & JCE property can be left blank, specified value will be ignored.\nmosip.kernel.keymanager.hsm.config-path=\n# Passkey of keystore for PKCS11, PKCS12\n# For Offline & JCE proer can be left blank. JCE password use other JCE specific properties.\nmosip.kernel.keymanager.hsm.keystore-pass=\n\nmosip.identity.get.excluded.attribute.list=UIN,verifiedAttributes,IDSchemaVersion\n\nspring.datasource.hikari.minimum-idle=15\nspring.datasource.hikari.maximum-pool-size=45\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/mosip-config/blob/master/signup-default.properties", + "title": "signup-default.properties", + "repo": "mosip/mosip-config", + "file_path": "signup-default.properties", + "language": "properties", + "content": "#----------------------------------------------------------------------------------------------------------------------------\n# challenge.timeout, resend-delay are count as seconds\nmosip.signup.id-schema.version=0.2\nmosip.signup.identifier.regex=^\\\\+855[1-9]\\\\d{7,8}$\nmosip.signup.identifier.prefix=+855\nmosip.signup.supported-languages={'khm','eng'}\nmosip.signup.default-language=khm\nmosip.signup.password.pattern=^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[\\\\x5F\\\\W])(?=.{8,20})[a-zA-Z0-9\\\\x5F\\\\W]{8,20}$\nmosip.signup.password.max-length=20\nmosip.signup.generate-challenge.blocked.timeout=300\nmosip.signup.challenge.timeout=60\nmosip.signup.audit.description.max-length=2048\nmosip.signup.password.min-length=8\nmosip.signup.fullname.pattern=^[\\\\u1780-\\\\u17FF\\\\u19E0-\\\\u19FF\\\\u1A00-\\\\u1A9F\\\\u0020]{1,30}$\n\n## Time given to generate and verify the challenge in seconds.\n## Default resend delay is 60 seconds, with 3 attempts, so 60*3=180 seconds.\n## Adding 60 seconds for the default generate challenge 180+60=240\n## Adding 10 seconds buffer to default 240 seconds = 250 seconds.\n## so 250 seconds is the Generate and verify cookie max age.\nmosip.signup.unauthenticated.txn.timeout=250\nmosip.signup.challenge.resend-attempt=3\nmosip.signup.challenge.verification-attempt=3\nmosip.signup.challenge.resend-delay=${mosip.signup.challenge.timeout}\n\n## Time given to complete registration and get back the status of the registration in seconds.\n## Considering 5 minutes(300 seconds) to complete registration form and submit.\n## Default status request limit is 10 with 20 seconds request delay, 10*20=200 seconds\n## so 300+200=500 seconds is the authentication cookie max age.\nmosip.signup.verified.txn.timeout=300\nmosip.signup.status-check.txn.timeout=200\nmosip.signup.status.request.delay=20\nmosip.signup.status.request.limit=10\nmosip.signup.task.core.pool.size=2\nmosip.signup.task.max.pool.size=4\n\n## ------------------------------------- challenge configuration -------------------------------------------------------\n\nmosip.signup.supported.generate-challenge-type=OTP\nmosip.signup.supported.challenge-format-types={'alpha-numeric', 'base64url-encoded-json'}\nmosip.signup.supported.challenge-types={'OTP', 'KBA'}\nmosip.signup.supported.challenge.otp.length=6\n\n## ------------------------------------- Cache configuration -----------------------------------------------------------\nmosip.signup.cache.symmetric-algorithm-name=AES/CFB/PKCS5Padding\nspring.cache.type=simple\n\n#spring.cache.type=redis\n#spring.cache.cache-names=${mosip.esignet.cache.names}\n#spring.redis.host=localhost\n#spring.redis.port=6379\nmanagement.health.redis.enabled=false\n\nmosip.esignet.cache.names=challenge_generated,challenge_verified,status_check,blocked_identifier,keystore,key_alias\nmosip.esignet.cache.size={'challenge_generated': 200, \\\n 'challenge_verified': 200,\\\n 'status_check': 200,\\\n 'blocked_identifier':2000,\\\n 'keystore' : 10, \\\n 'key_alias' : 1 }\n\n## Note: keystore TTL should be more than the key_alias cache TTL.\n## So that key rotation happens before the actual key is removed from the keystore cache.\nmosip.esignet.cache.expire-in-seconds={'challenge_generated': ${mosip.signup.unauthenticated.txn.timeout},\\\n 'challenge_verified': ${mosip.signup.verified.txn.timeout},\\\n 'status_check': ${mosip.signup.status-check.txn.timeout}, \\\n 'blocked_identifier': ${mosip.signup.generate-challenge.blocked.timeout},\\\n 'keystore' : 600, \\\n 'key_alias' : 300 }\n\n## ------------------------------------- Auth adapter ------------------------------------------------------------------\n\nauth.server.validate.url=${mosip.kernel.authmanager.url}/v1/authmanager/authorize/admin/validateToken\nauth.server.admin.issuer.uri=${keycloak.external.url}/auth/realms/\nauth-token-generator.rest.issuerUrl=${keycloak.internal.url}/auth/realms/mosip\nmosip.keycloak.issuerUrl=${keycloak.internal.url}/auth/realms/mosip\nmosip.auth.adapter.impl.basepackage=io.mosip.kernel.auth.defaultadapter\nmosip.kernel.auth.adapter.ssl-bypass=true\nmosip.kernel.auth.appid-realm-map={admin:'mosip',crereq:'mosip',creser:'mosip',idrepo:'mosip', signup:'mosip'}\nmosip.kernel.auth.appids.realm.map={admin:'mosip',crereq:'mosip',creser:'mosip',idrepo:'mosip','regproc':'mosip', signup:'mosip'}\n\nmosip.iam.adapter.clientid=mosip-signup-client\nmosip.iam.adapter.clientsecret=${mosip.signup.client.secret}\nmosip.iam.adapter.appid=signup\nmosip.iam.adapter.issuerURL=${keycloak.external.url}/auth/realms/mosip\nmosip.authmanager.client-token-endpoint=${mosip.kernel.authmanager.url}/v1/authmanager/authenticate/clientidsecretkey\nmosip.iam.adapter.validate-expiry-check-rate=15\nmosip.iam.adapter.renewal-before-expiry-interval=15\nmosip.iam.adapter.self-token-renewal-enable=true\n\nmosip.service-context=${server.servlet.context-path}\nmosip.service.end-points=/**/*\nmosip.service.exclude.auth.allowed.method=GET,POST\n\nmosip.security.csrf-enable=true\nmosip.security.cors-enable=true\n\n## -------------------------- External endpoints -----------------------------------------------------------------------\n\nmosip.signup.generate-challenge.endpoint=http://otpmanager.kernel/v1/otpmanager/otp/generate\nmosip.signup.get-identity.endpoint=http://identity.idrepo/idrepository/v1/identity/idvid/%s@phone?type=demo&idType=HANDLE\nmosip.signup.identity.endpoint=http://identity.idrepo/idrepository/v1/identity/\nmosip.signup.generate-hash.endpoint=http://keymanager.keymanager/v1/keymanager/generateArgon2Hash\nmosip.signup.get-uin.endpoint=http://idgenerator.kernel/v1/idgenerator/uin\nmosip.signup.send-notification.endpoint=http://notifier.kernel/v1/notifier/sms/send\nmosip.signup.get-registration-status.endpoint=http://credentialrequest.idrepo/v1/credentialrequest/get/{applicationId}\nmosip.signup.audit-endpoint=http://auditmanager.kernel/v1/auditmanager/audits\nmosip.signup.add-identity.request.id=mosip.id.create\nmosip.signup.update-identity.request.id=mosip.id.update\nmosip.signup.identity.request.version=v1\n\n## --------------------------------- captcha validator------------------------------------------------------------------\nmosip.signup.send-challenge.captcha-required=true\nmosip.signup.integration.captcha-validator=GoogleRecaptchaValidatorService\nmosip.signup.captcha-validator.url=https://www.google.com/recaptcha/api/siteverify\nmosip.signup.captcha-validator.site-key=${signup.captcha.site.key}\nmosip.signup.captcha-validator.secret=${signup.captcha.secret.key}\n\n## ----------------------------- UI-Config -----------------------------------------------------------------------------\n\n# Only after current challenge timeout we should enable resend in the UI.\n# In this case timeout and resend-delay should be same always.\nmosip.signup.ui.config.key-values={\\\n'identifier.pattern': '${mosip.signup.identifier.regex}', \\\n'identifier.prefix': '${mosip.signup.identifier.prefix}', \\\n'captcha.site.key': '${mosip.signup.captcha-validator.site-key}', \\\n'otp.length': ${mosip.signup.supported.challenge.otp.length}, \\\n'password.pattern': '${mosip.signup.password.pattern}', \\\n'password.length.max': ${mosip.signup.password.max-length}, \\\n'password.length.min': ${mosip.signup.password.min-length}, \\\n'challenge.timeout': ${mosip.signup.challenge.resend-delay}, \\\n'resend.attempts': ${mosip.signup.challenge.resend-attempt}, \\\n'resend.delay': ${mosip.signup.challenge.resend-delay}, \\\n'fullname.pattern': '${mosip.signup.fullname.pattern}', \\\n'status.request.delay': ${mosip.signup.status.request.delay}, \\\n'status.request.limit': ${mosip.signup.status.request.limit}, \\\n'popup.timeout': 10, \\\n'signin.redirect-url': 'https://${mosip.esignet.host}/authorize', \\\n'identifier.allowed.characters': '^[0-9]+', \\\n'identifier.length.min': 8, \\\n'identifier.length.max': 9, \\\n'fullname.allowed.characters': '^[\\\\u1780-\\\\u17FF\\\\u19E0-\\\\u19FF\\\\u1A00-\\\\u1A9F\\\\u0020]', \\\n'fullname.length.min': 1, \\\n'fullname.length.max': 30, \\\n'otp.blocked' : ${mosip.signup.generate-challenge.blocked.timeout}, \\\n'send-challenge.captcha.required': ${mosip.signup.send-challenge.captcha-required}\n}\n\n## ----------------------------- Notification templates -----------------------------------------------------------------------------\n\n# Default charset encoding ISO-8859-1 does not support khmer language characters, so templates in khm language are base64 encoded.\nmosip.signup.sms-notification-template.encoded-langcodes={'khm'}\nmosip.signup.sms-notification-template.send-otp.khm=4Z6U4Z+S4Z6a4Z6+IHtjaGFsbGVuZ2V9IOGeiuGevuGemOGfkuGelOGeuOGeleGfkuGekeGfgOGehOGeleGfkuGekeGetuGej+Gfi+GeguGejuGek+GeuCBLaElEIOGemuGelOGen+Gfi+GeouGfkuGek+GegOGflA==\nmosip.signup.sms-notification-template.send-otp.eng=Use {challenge} to verify your KhID account.\nmosip.signup.sms-notification-template.registration.khm=4Z6i4Z+S4Z6T4Z6A4Z6U4Z624Z6T4Z6F4Z674Z+H4Z6I4Z+S4Z6Y4Z+E4Z+H4Z6C4Z6O4Z6T4Z64IEtoSUQg4Z6K4Z+E4Z6Z4Z6H4Z+E4Z6C4Z6H4Z+Q4Z6Z4Z+U\nmosip.signup.sms-notification-template.registration.eng=You successfully registered to KhID account.\nmosip.signup.sms-notification-template.forgot-password.khm=4Z6i4Z+S4Z6T4Z6A4Z6U4Z624Z6T4Z6V4Z+S4Z6b4Z624Z6f4Z+L4Z6U4Z+S4Z6K4Z684Z6a4Z6W4Z624Z6A4Z+S4Z6Z4Z6f4Z6Y4Z+S4Z6E4Z624Z6P4Z+LIEtoSUQg4Z6K4Z+E4Z6Z4Z6H4Z+E4Z6C4Z6H4Z+Q4Z6Z4Z+U\nmosip.signup.sms-notification-template.forgot-password.eng=You successfully changed KhID password.\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/mosip-config/blob/master/syncdata-default.properties", + "title": "syncdata-default.properties", + "repo": "mosip/mosip-config", + "file_path": "syncdata-default.properties", + "language": "properties", + "content": "# Follow properites have their values assigned via 'overrides' environment variables of config server docker.\n# DO NOT define these in any of the property files. They must be passed as env variables. Refer to config-server\n# helm chart:\n# db.dbuser.password \n# keycloak.internal.host\n# keycloak.internal.url\n# keycloak.admin.password\n# mosip.auth.client.secret (convention: .)\n# mosip.ida.client.secret\n# mosip.admin.client.secret\n# mosip.reg.client.secret\n# mosip.prereg.client.secret\n# mosip.syncdata.client.secret\n# softhsm.kernel.security.pin\n\n## Sync data\nmosip.kernel.syncdata.auth-manager-base-uri=${mosip.kernel.authmanager.url}/v1/authmanager\nmosip.kernel.syncdata.auth-manager-roles=/roles\nmosip.kernel.syncdata.auth-user-details=/userdetails\nmosip.kernel.syncdata.syncdata-request-id=SYNCDATA.REQUEST\nmosip.kernel.syncdata.syncdata-version-id=v1.0\n# Name of the file that is present in the config server which has registration specific config.\nmosip.kernel.syncdata.registration-center-config-file=registration-${spring.profiles.active}.properties\n# Name of the file that is present in the config server which has global config.\nmosip.kernel.syncdata.global-config-file=application-${spring.profiles.active}.properties\nmosip.kernel.syncdata.syncjob-base-url=${mosip.kernel.syncdata.syncjob.url}/v1/syncjob/syncjobdef\nmosip.kernel.syncdata-service-idschema-url=${mosip.kernel.masterdata.url}/v1/masterdata/idschema/latest\n\n## SMS notification\nmosip.kernel.sms.enabled=false\nmosip.kernel.sms.country.code=91\nmosip.kernel.sms.number.length=10\n#mosip.kernel.sms.gateway : \"infobip\" or \"msg91\"\nmosip.kernel.sms.gateway=gateway\n## --msg91 gateway--\nmosip.kernel.sms.api=smsapi\nmosip.kernel.sms.authkey=authkey\nmosip.kernel.sms.route=route\nmosip.kernel.sms.sender=sender\nmosip.kernel.sms.unicode=unicode\n\n## Email notification\nmosip.kernel.notification.email.from=mosipuser@gmail.com\nspring.mail.host=smtphost\nspring.mail.username=username\nspring.mail.password=password\nspring.mail.port=587\nspring.mail.properties.mail.transport.protocol=smtp\nspring.mail.properties.mail.smtp.starttls.required=true\nspring.mail.properties.mail.smtp.starttls.enable=true\nspring.mail.properties.mail.smtp.auth=true\nspring.mail.debug=false\nspring.servlet.multipart.enabled=true\nspring.servlet.multipart.max-file-size=5MB\n\n## Keymanager service\n#Type of keystore, Supported Types: PKCS11, PKCS12, Offline, JCE\nmosip.kernel.keymanager.hsm.keystore-type=OFFLINE\n# For PKCS11 provide Path of config file.\n# For PKCS12 keystore type provide the p12/pfx file path. P12 file will be created internally so provide only file path & file name.\n# For Offline & JCE property can be left blank, specified value will be ignored.\nmosip.kernel.keymanager.hsm.config-path=/config/softhsm-application.conf\n# Passkey of keystore for PKCS11, PKCS12\n# For Offline & JCE proer can be left blank. JCE password use other JCE specific properties.\nmosip.kernel.keymanager.hsm.keystore-pass=${softhsm.kernel.security.pin}\n\n## Auditmanager\nmosip.kernel.auditmanager-service-logs-location=logs/audit.log\n\n## Auth service\nauth.jwt.secret=authjwtsecret\nauth.jwt.base=Mosip-Token\nauth.jwt.expiry=6000000\nauth.token.header=Authorization\nauth.refreshtoken.header=RefreshToken\nauth.jwt.refresh.expiry=86400000\nauth.primary.language=eng\n\notp.manager.api.generate=${mosip.kernel.otpmanager.url}/v1/otpmanager/otp/generate\notp.manager.api.verify=${mosip.kernel.otpmanager.url}/v1/otpmanager/otp/validate\notp.sender.api.email.send=${mosip.kernel.notification.url}/v1/notifier/email/send\notp.sender.api.sms.send={mosip.kernel.notification.url}/v1/notifier/sms/send\nmasterdata.api.template=${mosip.kernel.masterdata.url}/v1/masterdata/templates/\nmasterdata.api.template.otp=/otp-sms-template\nidrepo.api.getuindetails=${mosip.idrepo.identity.url}/v1/identity/uin/{uin}\n\nmosip.kernel.auth.app.id=auth\nmosip.kernel.auth.client.id=mosip-auth-client\nmosip.kernel.auth.secret.key=${mosip.auth.client.secret}\n\nmosip.kernel.ida.app.id=ida\nmosip.kernel.ida.client.id=mosip-ida-client\nmosip.kernel.ida.secret.key=${mosip.ida.client.secret}\n\n## Token id salts\nmosip.kernel.tokenid.uin.salt=${mosip.kernel.uin.salt}\nmosip.kernel.tokenid.partnercode.salt=${mosip.kernel.partnercode.salt}\n\n## VID generator service\nmosip.kernel.vid.min-unused-threshold=100000\nmosip.kernel.vid.vids-to-generate=200000\nmosip.kernel.vid.time-to-release-after-expiry=5\nmosip.kernel.vid.pool-population-timeout=10000000\nkernel.vid.revoke-scheduler-type=cron\nkernel.vid.revoke-scheduler-seconds=0\nkernel.vid.revoke-scheduler-minutes=0\nkernel.vid.revoke-scheduler-hours=23\nkernel.vid.revoke-scheduler-days_of_month=*\nkernel.vid.revoke-scheduler-months=*\nkernel.vid.revoke-scheduler-days_of_week=*\nkernel.vid.isolator-scheduler-type=cron\nkernel.vid.isolator-scheduler-seconds=0\nkernel.vid.isolator-scheduler-minutes=0\nkernel.vid.isolator-scheduler-hours=*\nkernel.vid.isolator-scheduler-days_of_month=*\nkernel.vid.isolator-scheduler-months=*\nkernel.vid.isolator-scheduler-days_of_week=*\n\n## PRID properties\nmosip.kernel.prid.min-unused-threshold=1000\nmosip.kernel.prid.prids-to-generate=2000\nmosip.kernel.prid.pool-population-timeout=10000000\nmosip.kernel.prid.sequence-limit=3\nkernel.prid.revoke-scheduler-type=cron\nkernel.prid.revoke-scheduler-seconds=0\nkernel.prid.revoke-scheduler-minutes=0\nkernel.prid.revoke-scheduler-hours=23\nkernel.prid.revoke-scheduler-days_of_month=*\nkernel.prid.revoke-scheduler-months=*\nkernel.prid.revoke-scheduler-days_of_week=*\n\n## Database properties\n# Database hostname below is assuming postgres is running inside cluster in 'postgres' namespace\n# If database is external to production, provide the DNS or ip of the host and port \nmosip.kernel.database.hostname=${mosip.database.hostname.override:postgres-postgresql.postgres}\nmosip.kernel.database.port=${mosip.database.port.override:5432}\n\njavax.persistence.jdbc.driver=org.postgresql.Driver\nhibernate.dialect=org.hibernate.dialect.PostgreSQLDialect\nhibernate.jdbc.lob.non_contextual_creation=true\nhibernate.hbm2ddl.auto=none\nhibernate.show_sql=false\nhibernate.format_sql=false\nhibernate.connection.charSet=utf8\nhibernate.cache.use_second_level_cache=false\nhibernate.cache.use_query_cache=false\nhibernate.cache.use_structured_entries=false\nhibernate.generate_statistics=false\n\nlogging.level.org.hibernate.SQL=ERROR\nlogging.level.org.hibernate.type=ERROR\n\nadmin_database_url=jdbc:postgresql://${mosip.kernel.database.hostname}:${mosip.kernel.database.port}/mosip_kernel\nadmin_database_username=kerneluser\nadmin_database_password=${db.dbuser.password}\n\nsyncjob_database_url=jdbc:postgresql://${mosip.kernel.database.hostname}:${mosip.kernel.database.port}/mosip_master\nsyncjob_database_username=masteruser\nsyncjob_database_password=${db.dbuser.password}\n\naudit_database_url=jdbc:postgresql://${mosip.kernel.database.hostname}:${mosip.kernel.database.port}/mosip_audit\naudit_database_username=audituser\naudit_database_password=${db.dbuser.password}\n\nmasterdata_database_url=jdbc:postgresql://${mosip.kernel.database.hostname}:${mosip.kernel.database.port}/mosip_master\nmasterdata_database_username=masteruser\nmasterdata_database_password=${db.dbuser.password}\n\nuin.swagger.base-url=https://qa.mosip.io\nuin_database_url=jdbc:postgresql://${mosip.kernel.database.hostname}:${mosip.kernel.database.port}/mosip_kernel\nuin_database_username=kerneluser\nuin_database_password=${db.dbuser.password}\nhibernate.current_session_context_class=org.springframework.orm.hibernate5.SpringSessionContext\n\nid_database_url=jdbc:postgresql://${mosip.kernel.database.hostname}:${mosip.kernel.database.port}/mosip_kernel\nid_database_username=kerneluser\nid_database_password=${db.dbuser.password}\n\nvid_database_url=jdbc:postgresql://${mosip.kernel.database.hostname}:${mosip.kernel.database.port}/mosip_kernel\nvid_database_username=kerneluser\nvid_database_password=${db.dbuser.password}\n\nprid_database_url=jdbc:postgresql://${mosip.kernel.database.hostname}:${mosip.kernel.database.port}/mosip_kernel\nprid_database_username=kerneluser\nprid_database_password=${db.dbuser.password}\n\nkeymanager.persistence.jdbc.driver=org.postgresql.Driver\nkeymanager_database_url = jdbc:postgresql://${mosip.kernel.database.hostname}:${mosip.kernel.database.port}/mosip_keymgr\nkeymanager_database_password=${db.dbuser.password}\nkeymanager_database_username= keymgruser\n\notpmanager_database_username = kerneluser\notpmanager_database_url = jdbc:postgresql://${mosip.kernel.database.hostname}:${mosip.kernel.database.port}/mosip_kernel\notpmanager_database_password=${db.dbuser.password}\n\nsyncdata_database_url=jdbc:postgresql://${mosip.kernel.database.hostname}:${mosip.kernel.database.port}/mosip_master\nsyncdata_database_username=masteruser\nsyncdata_database_password=${db.dbuser.password}\n\nlicensekeymanager.persistence.jdbc.driver=org.postgresql.Driver\nlicensekeymanager_database_url=jdbc:postgresql://${mosip.kernel.database.hostname}:${mosip.kernel.database.port}/mosip_master\nlicensekeymanager_database_username=masteruser\nlicensekeymanager_database_password=${db.dbuser.password}\n\nridgenerator_database_username =regprcuser\nridgenerator_database_url =jdbc:postgresql://${mosip.kernel.database.hostname}:${mosip.kernel.database.port}/mosip_regprc\nridgenerator_database_password=${db.dbuser.password}\n\n## Keycloak properties\nmosip.iam.base-url=${keycloak.internal.url}\nmosip.iam.admin-realm-id=admin\nmosip.iam.default.realm-id=mosip\nmosip.iam.open-id-url =${keycloak.internal.url}/auth/realms/{realmId}/protocol/openid-connect/\nmosip.iam.realm.operations.base-url=${keycloak.internal.url}/admin/realms/{realmId}\nmosip.iam.admin-url=${keycloak.internal.url}/admin/\nmosip.iam.roles-extn-url=realms/mosip/roles\nmosip.iam.users-extn-url=realms/mosip/users\nmosip.iam.role-user-mapping-url=/{userId}/role-mappings/realm\nmosip.iam.role-based-user-url=realms/{realm}/roles/{role-name}/users\n#Self token resttemplate related to configuration\nmosip.iam.adapter.clientid=mosip-syncdata-client\nmosip.iam.adapter.clientsecret=${mosip.syncdata.client.secret}\nmosip.iam.adapter.appid=registrationclient\nmosip.iam.adapter.issuerURL=${keycloak.internal.url}/auth/realms/mosip\nmosip.authmanager.client-token-endpoint=${mosip.authmanager.base-url}/authenticate/clientidsecretkey\nmosip.iam.adapter.validate-expiry-check-rate=15\nmosip.iam.adapter.renewal-before-expiry-interval=15\nmosip.iam.adapter.self-token-renewal-enable=true\n\nkeycloak.realm=registration-client\nkeycloak.resource=account\nkeycloak.auth-server-url=${keycloak.internal.url}/auth\nkeycloak.ssl-required=none\nkeycloak.public-client=true\nkeycloak.use-resource-role-mappings=true\nkeycloak.verify-token-audience=true\n\nmosip.iam.authorization_endpoint=${keycloak.internal.url}/auth/realms/{realmId}/protocol/openid-connect/auth\nmosip.iam.token_endpoint=${keycloak.internal.url}/auth/realms/{realmId}/protocol/openid-connect/token\nmosip.admin.login_flow.name=authorization_code\nmosip.admin.login_flow.response_type=code\nmosip.admin.login_flow.scope=cls\nmosip.admin.clientid=mosip-admin-client\nmosip.admin.clientsecret={cipher}46b4a98aac7347e6a2d4f723e281cfd1e7b859100cc17494fc7ed9fb357a6cd9\nmosip.admin.redirecturi=${mosip.authmanager.base-url}/login-redirect/\nmosip.admin_realm_id=mosip\nmosip.iam.master.realm-id=master\nmosip.iam.pre-reg_user_password=mosip\n\n## TODO: Below config is not needed anymore. Need to remove init of db_3_DS in authmanager code. For now, we just\n## point to a valid db.\n#db_3_DS.keycloak.ipaddress= jdbc:postgresql://${mosip.kernel.database.hostname}:${mosip.kernel.database.port}/keycloak\ndb_3_DS.keycloak.ipaddress= jdbc:postgresql://${mosip.kernel.database.hostname}:${mosip.kernel.database.port}/mosip_kernel\ndb_3_DS.keycloak.port=${mosip.kernel.database.port}\ndb_3_DS.keycloak.username=kerneluser\ndb_3_DS.keycloak.password=${db.dbuser.password}\ndb_3_DS.keycloak.driverClassName=org.postgresql.Driver\n\nmosip.keycloak.admin.client.id=admin-cli\nmosip.keycloak.admin.user.id=admin\nmosip.keycloak.admin.secret.key=${keycloak.admin.password}\n\nmosip.iam.impl.basepackage=io.mosip.kernel.auth.defaultimpl\nmosip.auth.adapter.impl.basepackage=io.mosip.kernel.auth.defaultadapter\n\nmosip.authmanager.base-url=${mosip.kernel.authmanager.url}/v1/authmanager\n\nmaster.search.maximum.rows=50\nmosip.level=2\nmosip.kernel.masterdata.audit-url= ${mosip.kernel.auditmanager.url}/v1/auditmanager/audits\nmosip.keycloak.max-no-of-users=20000\n\n## Register device\nmosip.kernel.keymanager-service-sign-url=${mosip.kernel.keymanager.url}/v1/keymanager/jwtSign\nmasterdata.registerdevice.timestamp.validate=+10\n\n## Prereg\nmosip.kernel.prereg.realm-id=mosip\nmosip.kernel.prereg.client.id=mosip-prereg-client\nmosip.kernel.prereg.secret.key=${mosip.prereg.client.secret}\n\n## UIN scheduler\nkernel.uin.transfer-scheduler-type=cron\nkernel.uin.transfer-scheduler-seconds=0\nkernel.uin.transfer-scheduler-minutes=48\nkernel.uin.transfer-scheduler-hours=17\nkernel.uin.transfer-scheduler-days_of_month=*\nkernel.uin.transfer-scheduler-months=*\nkernel.uin.transfer-scheduler-days_of_week=*\n\n## UIN Auth adapter config\nauth.server.admin.validate.url=${mosip.kernel.authmanager.url}/v1/authmanager/authorize/admin/validateToken\nauth.server.admin.allowed.audience=mosip-regproc-client,mosip-prereg-client,mosip-admin-client,mosip-reg-client,mosip-resident-client\n\n## Proxy otp\nmosip.kernel.auth.proxy-otp-value=111111\nmosip.security.provider.name=SunPKCS11-pkcs11-proxy\n\n## identity schema backward compatability ########\nmosip.ui.spec.default.domain=registration-client\n\n#### Required for admin UI ##############\n## this pattern like --> display column : configKey. \n## We can provide multiple values with \";\" separated \nmosip.admin.ui.configs=version:${aplication.configuration.level.version};locationHierarchyLevel:${mosip.recommended.centers.locCode};mandatoryLanguages:${mosip.mandatory-languages};optionalLanguages:${mosip.optional-languages};supportedLanguages: ${mosip.mandatory-languages},${mosip.optional-languages};leftToRightOrientation:${mosip.left_to_right_orientation};rightToLeftOrientation:${mosip.right_to_left_orientation};countryCode:${mosip.country.code}\n\n## Used to get IAM user details. \nmosip.kernel.masterdata.auth-manager-base-uri=${mosip.kernel.authmanager.url}/v1/authmanager\nmosip.kernel.masterdata.auth-user-details=/userdetails\n## Security properties\nmosip.security.csrf-enable=false\nmosip.security.cors-enable=false\nmosip.security.origins=localhost:8080\nmosip.security.secure-cookie=false\n\n## ROOT key identifier\nmosip.root.key.applicationid=ROOT\n\n## Certificate signing algorithm\nmosip.kernel.certificate.sign.algorithm=SHA256withRSA\n\n## Default certificate params\nmosip.kernel.keymanager.certificate.default.common-name=www.mosip.io\nmosip.kernel.keymanager.certificate.default.organizational-unit=MOSIP-TECH-CENTER\nmosip.kernel.keymanager.certificate.default.organization=IITB\nmosip.kernel.keymanager.certificate.default.location=BANGALORE\nmosip.kernel.keymanager.certificate.default.state=KA\nmosip.kernel.keymanager.certificate.default.country=IN\n\n## Zero Knowledge Master & Public Key identifier.\nmosip.kernel.zkcrypto.masterkey.application.id=KERNEL\nmosip.kernel.zkcrypto.masterkey.reference.id=IDENTITY_CACHE\nmosip.kernel.zkcrypto.publickey.application.id=IDA\nmosip.kernel.zkcrypto.publickey.reference.id=PUBLIC_KEY\nmosip.kernel.zkcrypto.wrap.algorithm-name=AES/ECB/NoPadding\nmosip.kernel.zkcrypto.derive.encrypt.algorithm-name=AES/ECB/PKCS5Padding\n\n## Application Id for PMS master key.\nmosip.kernel.partner.sign.masterkey.application.id=PMS\n\ndatastores=ldap_1_DS,db_1_DS,db_2_DS\n\n## Partner Management Service allowed partner domains\nmosip.kernel.partner.allowed.domains=AUTH,DEVICE,FTM\n\n## List of keys to auto generate.\nmosip.kernel.keymanager.autogen.appids.list=ROOT,KERNEL:SIGN,PRE_REGISTRATION,REGISTRATION,REGISTRATION_PROCESSOR,ID_REPO,KERNEL:IDENTITY_CACHE,RESIDENT,PMS\n\n## Random keys required for ZK encrypt.\nzkcrypto.random.key.generate.count=10000\n\nmosip.kernel.keymanager.autogen.basekeys.list=RESIDENT:mpartner-default-resident\n\n# Keymanager service keystore cache properties\nmosip.kernel.keymanager.keystore.keyreference.enable.cache=true\n\n# API to get machine based on machine id\nmosip.kernel.syncdata-service-machine-url=${mosip.kernel.masterdata.url}/v1/masterdata/machines/%s\n\n# Flag added to choose client crypto implementation in syncdata service\n# Needs to be updated to true in prod deployments\nmosip.syncdata.tpm.required=false\n\nmosip.kernel.registrationclient.app.id=registrationclient\nmosip.kernel.registrationclient.client.id=mosip-reg-client\n# env variable\nmosip.kernel.registrationclient.secret.key=${mosip.reg.client.secret}\n\n# API to fetch auth token and refresh token used by syncdata-service\nmosip.kernel.authtoken.NEW.internal.url=${mosip.kernel.authmanager.url}/v1/authmanager/authenticate/internal/useridPwd\nmosip.kernel.authtoken.OTP.internal.url=${mosip.kernel.authmanager.url}/v1/authmanager/authenticate/internal/userotp\nmosip.kernel.authtoken.REFRESH.internal.url=${mosip.kernel.authmanager.url}/v1/authmanager/authorize/internal/refreshToken/registrationclient\nmosip.kernel.auth.sendotp.url=${mosip.kernel.authmanager.url}/v1/authmanager/authenticate/sendotp\n\n# Sample Additional configuration required for real HSM configured though JCE.\n# Add the required JCE properties with prefix. - \"mosip.kernel.keymanager.hsm.jce\" for the property key\n# mosip.kernel.keymanager.hsm.jce.className=io.mosip.keymanager.hsm.impl.AnyHSMKeyStoreImpl\n# mosip.kernel.keymanager.hsm.jce.keyStoreType=HSMKeyStoreType\n# mosip.kernel.keymanager.hsm.jce.keyStoreFile=AnyRequiredKeyStoreFile\n# mosip.kernel.keymanager.hsm.jce.localKeyStorePwd=HSMPartitionPassword\n\n## syncdata-service websub configuration (cacert sync)\nsyncdata.websub.topic.ca-cert=CA_CERTIFICATE_UPLOADED\n# Secret for partner CA certificate CRUD callback\nsyncdata.websub.callback.secret.ca-cert=secret\n# Callback url for partner CA certificate CRUD event\nsyncdata.websub.callback.url.path.ca-cert=/websub/callback/cacert\nsyncdata.websub.callback.url.ca-cert=${mosip.kernel.syncdata.url}/v1/syncdata/websub/callback/cacert\n# Number of retires on subscription failure\nsyncdata.websub.resubscription.retry.count=3\n# The time interval in seconds to schedule subscription of topics which is done as a\n# work-around for the bug: MOSIP-9496. By default the\n# this property value is set to 0 that disables this workaround.\n# To enable the resubscrition scheduling, this property should be assigned with a positive\n# number like 1 * 60 * 60 = 3600 for one hour\nsyncdata.websub.resubscription.delay.millis=43200000\nsubscriptions-delay-on-startup=120000\n\n#Property to fetch location hierarchies during client settings sync\nmosip.kernel.masterdata.locationhierarchylevels.uri=${mosip.kernel.masterdata.url}/v1/masterdata/locationHierarchyLevels\n# Flag to identify the support of no thumbprint in 1.1.3 version. \n# Added this for backward compatability. default is false, means support is not required.\n# Make it to true if support is required.\nmosip.kernel.keymanager.113nothumbprint.support=false\n\nmosip.sync.entity.url.APPLICANTTYPE.MVEL=${mosip.api.internal.url}/v1/syncdata/scripts/applicanttype.mvel\nmosip.sync.entity.auth-required.APPLICANTTYPE.MVEL=true\nmosip.sync.entity.auth-token.APPLICANTTYPE.MVEL=Authorization:OAUTH\nmosip.sync.entity.encrypted.APPLICANTTYPE.MVEL=false\nmosip.sync.entity.headers.APPLICANTTYPE.MVEL=Content-Type:text/plain;charset=UTF-8\nmosip.sync.entity.only-on-fullsync.APPLICANTTYPE.MVEL=false\n\nspring.jpa.properties.hibernate.jdbc.lob.non_contextual_creation=true\n\nsyncdata.cache.evict.delta-sync.cron=0 0/15 * * * *\nsyncdata.cache.snapshot.cron=0 0 23 * * * \n\nmosip.kernel.keymanager-service-publickey-url=${mosip.kernel.keymanager.url}/v1/keymanager/getCertificate?applicationId={applicationId}\n\nmosip.kernel.keymanager.unique.identifier.autoupdate=false\n\n# This property needs to be set to true if 1.1.4 version of regclient is running. \n# If set to true, in clientsettings sync, the values for tables Gender and IndividualType will be fetched from their individual tables.\n# If false, they will be fetched from dynamic_field table, which is not supported by 1.1.4 version of regclient.\nmosip.syncdata.regclient.support114=false\n\n## Roles\nmosip.role.admin.syncdata.getclientsettings=REGISTRATION_SUPERVISOR,REGISTRATION_OFFICER,REGISTRATION_ADMIN,default\nmosip.role.admin.syncdata.getpublickeyapplicationid=REGISTRATION_SUPERVISOR,REGISTRATION_OFFICER,REGISTRATION_ADMIN,default\nmosip.role.admin.syncdata.gettpmpublickeyverify=REGISTRATION_SUPERVISOR,REGISTRATION_OFFICER,REGISTRATION_ADMIN,default\nmosip.role.admin.syncdata.getlatestidschema=REGISTRATION_SUPERVISOR,REGISTRATION_OFFICER,REGISTRATION_ADMIN,default,PRE_REGISTRATION_ADMIN,REGISTRATION_PROCESSOR,INDIVIDUAL,RESIDENT,ID_AUTHENTICATION\nmosip.role.admin.syncdata.getgetcertificate=REGISTRATION_SUPERVISOR,REGISTRATION_OFFICER,REGISTRATION_ADMIN,default,KEY_MAKER\nmosip.role.admin.syncdata.gettpmpublickeymachineid=REGISTRATION_SUPERVISOR,REGISTRATION_OFFICER,REGISTRATION_ADMIN,default,REGISTRATION_PROCESSOR,GLOBAL_ADMIN\nmosip.role.admin.syncdata.getconfigskeyIndex=REGISTRATION_SUPERVISOR,REGISTRATION_OFFICER,REGISTRATION_ADMIN,default\nmosip.role.admin.syncdata.getuserdetails=REGISTRATION_SUPERVISOR,REGISTRATION_OFFICER,REGISTRATION_ADMIN,default\nmosip.role.admin.syncdata.getgetcacertificates=REGISTRATION_SUPERVISOR,REGISTRATION_OFFICER,REGISTRATION_ADMIN,default\nmosip.role.admin.syncdata.getv2clientsettings=REGISTRATION_SUPERVISOR,REGISTRATION_OFFICER,REGISTRATION_ADMIN,default\nmosip.role.admin.syncdata.getclientsettingsentityIdentifier=REGISTRATION_SUPERVISOR,REGISTRATION_OFFICER,default\nmosip.role.admin.syncdata.getscriptsscriptName=REGISTRATION_SUPERVISOR,REGISTRATION_OFFICER,default\n\nlogging.level.io.mosip=INFO\n\n## disable HSM health check\nmosip.kernel.keymgr.hsm.health.check.enabled=false\n#temp fix required for 1.1.4 reg-client (Tag mismatch error)\nmosip.kernel.client.crypto.iv-length=16\nmosip.kernel.client.crypto.aad-length=12\n\nspring.datasource.hikari.maximum-pool-size=30\nspring.datasource.hikari.minimum-idle=10\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/device/authdevice/service/impl/DeviceDetailServiceImpl.java", + "title": "DeviceDetailServiceImpl.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/device/authdevice/service/impl/DeviceDetailServiceImpl.java", + "language": "java", + "content": "package io.mosip.pms.device.authdevice.service.impl;\n\nimport java.sql.Timestamp;\nimport java.time.LocalDateTime;\nimport java.time.ZoneId;\nimport java.util.ArrayList;\nimport java.util.List;\nimport java.util.Objects;\nimport java.util.Optional;\nimport java.util.Map;\nimport java.util.Set;\n\nimport io.mosip.kernel.core.authmanager.authadapter.model.AuthUserDetails;\nimport io.mosip.kernel.core.logger.spi.Logger;\nimport io.mosip.pms.common.dto.PageResponseV2Dto;\nimport io.mosip.pms.common.entity.DeviceDetailSBI;\nimport io.mosip.pms.common.entity.DeviceDetailSBIPK;\nimport io.mosip.pms.device.authdevice.entity.DeviceDetailEntity;\nimport io.mosip.pms.common.repository.DeviceDetailSbiRepository;\nimport io.mosip.pms.device.authdevice.repository.DeviceDetailSummaryRepository;\nimport io.mosip.pms.common.response.dto.ResponseWrapperV2;\nimport io.mosip.pms.common.util.PMSLogger;\nimport io.mosip.pms.device.dto.DeviceDetailFilterDto;\nimport io.mosip.pms.device.dto.DeviceDetailSummaryDto;\nimport io.mosip.pms.device.util.DeviceHelper;\nimport io.mosip.pms.partner.constant.ErrorCode;\nimport io.mosip.pms.partner.constant.PartnerConstants;\nimport io.mosip.pms.partner.exception.PartnerServiceException;\nimport io.mosip.pms.partner.request.dto.SbiAndDeviceMappingRequestDto;\nimport io.mosip.pms.device.response.dto.DeviceDetailResponseDto;\nimport io.mosip.pms.partner.util.PartnerHelper;\nimport io.mosip.pms.partner.util.MultiPartnerUtil;\nimport io.mosip.pms.partner.util.PartnerUtil;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.beans.factory.annotation.Value;\nimport org.springframework.data.domain.Page;\nimport org.springframework.data.domain.PageRequest;\nimport org.springframework.data.domain.Pageable;\nimport org.springframework.data.domain.Sort;\nimport org.springframework.security.core.Authentication;\nimport org.springframework.security.core.context.SecurityContextHolder;\nimport org.springframework.stereotype.Service;\nimport org.springframework.transaction.annotation.Transactional;\n\nimport io.mosip.kernel.core.util.EmptyCheckUtils;\nimport io.mosip.pms.common.constant.CommonConstant;\nimport io.mosip.pms.common.dto.DeviceFilterValueDto;\nimport io.mosip.pms.common.dto.FilterData;\nimport io.mosip.pms.common.dto.FilterDto;\nimport io.mosip.pms.common.dto.PageResponseDto;\nimport io.mosip.pms.common.dto.SearchFilter;\nimport io.mosip.pms.common.entity.Partner;\nimport io.mosip.pms.common.exception.RequestException;\nimport io.mosip.pms.common.helper.FilterHelper;\nimport io.mosip.pms.common.helper.SearchHelper;\nimport io.mosip.pms.common.repository.PartnerServiceRepository;\nimport io.mosip.pms.common.util.MapperUtils;\nimport io.mosip.pms.common.util.PageUtils;\nimport io.mosip.pms.common.validator.FilterColumnValidator;\nimport io.mosip.pms.device.authdevice.entity.DeviceDetail;\nimport io.mosip.pms.device.authdevice.entity.RegistrationDeviceSubType;\nimport io.mosip.pms.device.authdevice.entity.RegistrationDeviceType;\nimport io.mosip.pms.device.authdevice.repository.DeviceDetailRepository;\nimport io.mosip.pms.device.authdevice.repository.RegistrationDeviceSubTypeRepository;\nimport io.mosip.pms.device.authdevice.service.DeviceDetailService;\nimport io.mosip.pms.device.constant.DeviceConstant;\nimport io.mosip.pms.device.constant.DeviceDetailExceptionsConstant;\nimport io.mosip.pms.device.request.dto.DeviceDetailDto;\nimport io.mosip.pms.device.request.dto.DeviceDetailUpdateDto;\nimport io.mosip.pms.device.request.dto.DeviceSearchDto;\nimport io.mosip.pms.device.request.dto.DeactivateDeviceRequestDto;\nimport io.mosip.pms.device.request.dto.UpdateDeviceDetailStatusDto;\nimport io.mosip.pms.device.response.dto.ColumnCodeValue;\nimport io.mosip.pms.device.response.dto.DeviceDetailSearchResponseDto;\nimport io.mosip.pms.device.response.dto.FilterResponseCodeDto;\nimport io.mosip.pms.device.response.dto.IdDto;\nimport io.mosip.pms.device.response.dto.RegistrationSubTypeDto;\nimport io.mosip.pms.device.util.AuditUtil;\nimport io.mosip.pms.device.util.DeviceUtil;\n\n@Service\n@Transactional\npublic class DeviceDetailServiceImpl implements DeviceDetailService {\n\n\tprivate static final Logger LOGGER = PMSLogger.getLogger(DeviceDetailServiceImpl.class);\n\tpublic static final String BLANK_STRING = \"\";\n\tpublic static final String VERSION = \"1.0\";\n\tpublic static final String APPROVED = \"approved\";\n\n\t@Value(\"${mosip.pms.api.id.deactivate.device.patch}\")\n\tprivate String patchDeactivateDevice;\n\n\t@Value(\"${mosip.pms.api.id.get.all.device.details.get}\")\n\tprivate String getAllDeviceDetailsId;\n\n\t@Value(\"${mosip.pms.api.id.approval.mapping.device.to.sbi.post}\")\n\tprivate String postApprovalMappingDeviceToSbiId;\n\n\t@Autowired\n\tDeviceDetailSbiRepository deviceDetailSbiRepository;\n\n\t@Autowired\n\tPartnerHelper partnerHelper;\n\t\n\t@Autowired\n\tFilterColumnValidator filterColumnValidator;\n\n\t@Autowired\n\tFilterHelper filterHelper;\n\t\n\t@Autowired\n\tAuditUtil auditUtil;\n\n\t@Autowired\n\tDeviceDetailRepository deviceDetailRepository;\n\n\t@Autowired\n\tRegistrationDeviceSubTypeRepository registrationDeviceSubTypeRepository;\n\n\t@Autowired\n\tPartnerServiceRepository partnerRepository;\n\t\n\t@Autowired\n\tSearchHelper searchHelper;\n\n\t@Autowired\n\tDeviceDetailSummaryRepository deviceDetailSummaryRepository;\n\t\n\t@Autowired\n\tprivate PageUtils pageUtils;\n\n\t@Autowired\n\tDeviceHelper deviceHelper;\n\n\t@Override\n\tpublic IdDto createDeviceDetails(DeviceDetailDto deviceDetailDto) {\n\t\tDeviceDetail entity = new DeviceDetail();\n\t\tDeviceDetail deviceDetail = null;\n\t\tIdDto dto = new IdDto();\n\n\t\tRegistrationDeviceSubType registrationDeviceSubType = registrationDeviceSubTypeRepository\n\t\t\t\t.findByCodeAndTypeCodeAndIsDeletedFalseorIsDeletedIsNullAndIsActiveTrue(\n\t\t\t\t\t\tdeviceDetailDto.getDeviceSubTypeCode(), deviceDetailDto.getDeviceTypeCode());\n\t\tif (registrationDeviceSubType == null) {\n\t\t\tauditUtil.auditRequest(\n\t\t\t\t\tString.format(DeviceConstant.FAILURE_CREATE, DeviceDetail.class.getCanonicalName()),\n\t\t\t\t\tDeviceConstant.AUDIT_SYSTEM,\n\t\t\t\t\tString.format(DeviceConstant.FAILURE_DESC,\n\t\t\t\t\t\t\tDeviceDetailExceptionsConstant.REG_DEVICE_SUB_TYPE_NOT_FOUND.getErrorCode(),\n\t\t\t\t\t\t\tDeviceDetailExceptionsConstant.REG_DEVICE_SUB_TYPE_NOT_FOUND.getErrorMessage()),\n\t\t\t\t\t\"AUT-002\", deviceDetailDto.getDeviceProviderId(), \"partnerId\");\n\t\t\tthrow new RequestException(DeviceDetailExceptionsConstant.REG_DEVICE_SUB_TYPE_NOT_FOUND.getErrorCode(),\n\t\t\t\t\tDeviceDetailExceptionsConstant.REG_DEVICE_SUB_TYPE_NOT_FOUND.getErrorMessage());\n\t\t} else {\n\t\t\tentity.setDeviceSubTypeCode(registrationDeviceSubType.getCode());\n\t\t\tentity.setDeviceTypeCode(registrationDeviceSubType.getDeviceTypeCode());\n\t\t}\n\t\tPartner partner = partnerRepository.findByIdAndIsDeletedFalseorIsDeletedIsNullAndIsActiveTrue(\n\t\t\t\tdeviceDetailDto.getDeviceProviderId()); \n\t\tif (partner == null) {\n\t\t\tauditUtil.auditRequest(\n\t\t\t\t\tString.format(DeviceConstant.FAILURE_CREATE, DeviceDetail.class.getCanonicalName()),\n\t\t\t\t\tDeviceConstant.AUDIT_SYSTEM,\n\t\t\t\t\tString.format(DeviceConstant.FAILURE_DESC,\n\t\t\t\t\t\t\tDeviceDetailExceptionsConstant.DEVICE_PROVIDER_NOT_FOUND.getErrorCode(),\n\t\t\t\t\t\t\tDeviceDetailExceptionsConstant.DEVICE_PROVIDER_NOT_FOUND.getErrorMessage()),\n\t\t\t\t\t\"AUT-003\", deviceDetailDto.getDeviceProviderId(), \"partnerId\");\n\t\t\tthrow new RequestException(DeviceDetailExceptionsConstant.DEVICE_PROVIDER_NOT_FOUND.getErrorCode(),\n\t\t\t\t\tDeviceDetailExceptionsConstant.DEVICE_PROVIDER_NOT_FOUND.getErrorMessage());\n\t\t}\n\t\tentity.setPartnerOrganizationName(partner.getName());\n\t\tif (deviceDetailRepository.findUniqueDeviceDetail(PartnerUtil.trimAndReplace(deviceDetailDto.getMake()), PartnerUtil.trimAndReplace(deviceDetailDto.getModel()),\n\t\t\t\tdeviceDetailDto.getDeviceProviderId(), deviceDetailDto.getDeviceSubTypeCode(),\n\t\t\t\tdeviceDetailDto.getDeviceTypeCode()) != null) {\n\t\t\tauditUtil.auditRequest(\n\t\t\t\t\tString.format(DeviceConstant.FAILURE_CREATE, DeviceDetail.class.getCanonicalName()),\n\t\t\t\t\tDeviceConstant.AUDIT_SYSTEM,\n\t\t\t\t\tString.format(DeviceConstant.FAILURE_DESC,\n\t\t\t\t\t\t\tDeviceDetailExceptionsConstant.DEVICE_DETAIL_EXIST.getErrorCode(),\n\t\t\t\t\t\t\tDeviceDetailExceptionsConstant.DEVICE_DETAIL_EXIST.getErrorMessage()),\n\t\t\t\t\t\"AUT-004\", deviceDetailDto.getDeviceProviderId(), \"partnerId\");\n\t\t\tthrow new RequestException(DeviceDetailExceptionsConstant.DEVICE_DETAIL_EXIST.getErrorCode(),\n\t\t\t\t\tDeviceDetailExceptionsConstant.DEVICE_DETAIL_EXIST.getErrorMessage());\n\t\t}\n\t\tentity = deviceHelper.getCreateMapping(entity, deviceDetailDto);\n\t\tdeviceDetail = deviceDetailRepository.save(entity);\n\t\tdto.setId(deviceDetail.getId());\n\t\treturn dto;\n\t}\n\n\t@Override\n\tpublic IdDto updateDeviceDetails(DeviceDetailUpdateDto deviceDetailDto) {\n\t\tDeviceDetail entity = new DeviceDetail();\n\t\tDeviceDetail deviceDetail = null;\n\t\tIdDto dto = new IdDto();\n\t\tentity = deviceDetailRepository.findByIdAndIsDeletedFalseOrIsDeletedIsNull(deviceDetailDto.getId());\n\t\tif (entity == null) {\n\t\t\tauditUtil.auditRequest(\n\t\t\t\t\tString.format(DeviceConstant.FAILURE_UPDATE, DeviceDetail.class.getCanonicalName()),\n\t\t\t\t\tDeviceConstant.AUDIT_SYSTEM,\n\t\t\t\t\tString.format(DeviceConstant.FAILURE_DESC,\n\t\t\t\t\t\t\tDeviceDetailExceptionsConstant.DEVICE_DETAIL_NOT_FOUND.getErrorCode(),\n\t\t\t\t\t\t\tDeviceDetailExceptionsConstant.DEVICE_DETAIL_NOT_FOUND.getErrorMessage()),\n\t\t\t\t\t\"AUT-008\", deviceDetailDto.getId(), \"deviceDetailId\");\n\t\t\tthrow new RequestException(DeviceDetailExceptionsConstant.DEVICE_DETAIL_NOT_FOUND.getErrorCode(), String\n\t\t\t\t\t.format(DeviceDetailExceptionsConstant.DEVICE_DETAIL_NOT_FOUND.getErrorMessage(), dto.getId()));\n\t\t}\n\t\tRegistrationDeviceSubType registrationDeviceSubType = registrationDeviceSubTypeRepository\n\t\t\t\t.findByCodeAndTypeCodeAndIsDeletedFalseorIsDeletedIsNullAndIsActiveTrue(\n\t\t\t\t\t\tdeviceDetailDto.getDeviceSubTypeCode(), deviceDetailDto.getDeviceTypeCode());\n\t\tif (registrationDeviceSubType == null) {\n\t\t\tauditUtil.auditRequest(\n\t\t\t\t\tString.format(DeviceConstant.FAILURE_UPDATE, DeviceDetail.class.getCanonicalName()),\n\t\t\t\t\tDeviceConstant.AUDIT_SYSTEM,\n\t\t\t\t\tString.format(DeviceConstant.FAILURE_DESC,\n\t\t\t\t\t\t\tDeviceDetailExceptionsConstant.REG_DEVICE_SUB_TYPE_NOT_FOUND.getErrorCode(),\n\t\t\t\t\t\t\tDeviceDetailExceptionsConstant.REG_DEVICE_SUB_TYPE_NOT_FOUND.getErrorMessage()),\n\t\t\t\t\t\"AUT-009\", deviceDetailDto.getId(), \"deviceDetailId\");\n\t\t\tthrow new RequestException(DeviceDetailExceptionsConstant.REG_DEVICE_SUB_TYPE_NOT_FOUND.getErrorCode(),\n\t\t\t\t\tDeviceDetailExceptionsConstant.REG_DEVICE_SUB_TYPE_NOT_FOUND.getErrorMessage());\n\t\t} else {\n\t\t\tentity.setDeviceSubTypeCode(registrationDeviceSubType.getCode());\n\t\t\tentity.setDeviceTypeCode(registrationDeviceSubType.getDeviceTypeCode());\n\t\t}\n\t\tentity = getUpdateMapping(entity, deviceDetailDto);\n\t\tdeviceDetail = deviceDetailRepository.save(entity);\n\t\tdto.setId(deviceDetail.getId());\n\t\treturn dto;\n\t}\n\n\tprivate DeviceDetail getUpdateMapping(DeviceDetail deviceDetail, DeviceDetailUpdateDto deviceDetailDto) {\n\t\tdeviceDetail.setId(deviceDetailDto.getId());\n\n\t\tAuthentication authN = SecurityContextHolder.getContext().getAuthentication();\n\t\tif (!EmptyCheckUtils.isNullEmpty(authN)) {\n\t\t\tdeviceDetail.setUpdBy(authN.getName());\n\t\t}\n\t\tdeviceDetail.setUpdDtimes(LocalDateTime.now(ZoneId.of(\"UTC\")));\t\t\n\t\tdeviceDetail.setMake(deviceDetailDto.getMake());\n\t\tdeviceDetail.setModel(deviceDetailDto.getModel());\t\t\n\t\treturn deviceDetail;\n\n\t}\n\n\t@Override\n\tpublic String updateDeviceDetailStatus(UpdateDeviceDetailStatusDto deviceDetails) {\n\t\tDeviceDetail entity = deviceDetailRepository.findByIdAndIsDeletedFalseOrIsDeletedIsNull(deviceDetails.getId());\n\t\tif (entity == null) {\n\t\t\tauditUtil.auditRequest(\n\t\t\t\t\tString.format(DeviceConstant.FAILURE_UPDATE, DeviceDetail.class.getCanonicalName()),\n\t\t\t\t\tDeviceConstant.AUDIT_SYSTEM,\n\t\t\t\t\tString.format(DeviceConstant.FAILURE_DESC,\n\t\t\t\t\t\t\tDeviceDetailExceptionsConstant.DEVICE_DETAIL_NOT_FOUND.getErrorCode(),\n\t\t\t\t\t\t\tDeviceDetailExceptionsConstant.DEVICE_DETAIL_NOT_FOUND.getErrorMessage()),\n\t\t\t\t\t\"AUT-008\", deviceDetails.getId(), \"deviceDetailId\");\n\t\t\tthrow new RequestException(DeviceDetailExceptionsConstant.DEVICE_DETAIL_NOT_FOUND.getErrorCode(),\n\t\t\t\t\tString.format(DeviceDetailExceptionsConstant.DEVICE_DETAIL_NOT_FOUND.getErrorMessage(),\n\t\t\t\t\t\t\tdeviceDetails.getId()));\n\t\t}\n\t\tAuthentication authN = SecurityContextHolder.getContext().getAuthentication();\n\t\tif (!EmptyCheckUtils.isNullEmpty(authN)) {\n\t\t\tentity.setUpdBy(authN.getName());\n\t\t\tentity.setUpdDtimes(LocalDateTime.now(ZoneId.of(\"UTC\")));\n\t\t}\n\n\t\tif (deviceDetails.getApprovalStatus().equals(DeviceConstant.APPROVE)) {\n\t\t\tentity.setApprovalStatus(CommonConstant.APPROVED);\n\t\t\tentity.setIsActive(true);\n\t\t\tdeviceDetailRepository.save(entity);\n\t\t\treturn \"Device details approved successfully.\";\n\t\t}\n\t\tif (deviceDetails.getApprovalStatus().equals(DeviceConstant.REJECT)) {\n\t\t\tentity.setApprovalStatus(CommonConstant.REJECTED);\n\t\t\tentity.setIsActive(false);\n\t\t\tdeviceDetailRepository.save(entity);\n\t\t\treturn \"Device details rejected successfully.\";\n\t\t}\n\n\t\tauditUtil.auditRequest(\n\t\t\t\tString.format(DeviceConstant.STATUS_UPDATE_FAILURE, DeviceDetail.class.getCanonicalName()),\n\t\t\t\tDeviceConstant.AUDIT_SYSTEM,\n\t\t\t\tString.format(DeviceConstant.FAILURE_DESC,\n\t\t\t\t\t\tDeviceDetailExceptionsConstant.DEVICE_STATUS_CODE.getErrorCode(),\n\t\t\t\t\t\tDeviceDetailExceptionsConstant.DEVICE_STATUS_CODE.getErrorMessage()),\n\t\t\t\t\"AUT-008\", deviceDetails.getId(), \"deviceDetailId\");\n\t\tthrow new RequestException(DeviceDetailExceptionsConstant.DEVICE_STATUS_CODE.getErrorCode(), String\n\t\t\t\t.format(DeviceDetailExceptionsConstant.DEVICE_STATUS_CODE.getErrorMessage(), deviceDetails.getId()));\n\t}\n\n\t@Override\n\tpublic PageResponseDto searchDeviceDetails(Class entity,\n\t\t\tDeviceSearchDto dto) {\n\t\tList deviceDetails = new ArrayList<>();\n\t\tPageResponseDto pageDto = new PageResponseDto<>();\n\t\tOptional searchFilter = dto.getFilters().stream()\n\t\t\t\t.filter(cn -> cn.getColumnName().equalsIgnoreCase(\"partnerOrganizationName\")).findFirst();\n\t\tif (searchFilter.isPresent()) {\n\t\t\tdto.getFilters().removeIf(f -> f.getColumnName().equalsIgnoreCase(\"partnerOrganizationName\"));\n\t\t\tList filters = new ArrayList<>();\n\t\t\tSearchFilter partnerSearch = new SearchFilter();\n\t\t\tpartnerSearch.setColumnName(\"deviceProviderId\");\n\t\t\tList partnersFromDb = partnerRepository.findByNameIgnoreCase(searchFilter.get().getValue());\n\t\t\tif(!partnersFromDb.isEmpty()) {\n\t\t\t\tpartnerSearch.setValues(partnersFromDb);\n\t\t\t\tpartnerSearch.setType(\"in\");\n\t\t\t\tfilters.addAll(dto.getFilters());\n\t\t\t\tfilters.add(partnerSearch);\n\t\t\t\tdto.setFilters(filters);\n\t\t\t} else {\n\t\t\t\treturn new PageResponseDto<>();\n\t\t\t}\n\t\t}\n\t\tPage page = searchHelper.search(entity, dto, \"deviceProviderId\");\n\t\tif (page.getContent() != null && !page.getContent().isEmpty()) {\n\t\t\tdeviceDetails = MapperUtils.mapAll(page.getContent(), DeviceDetailSearchResponseDto.class);\n\t\t\tpageDto = pageUtils.sortPage(deviceDetails, dto.getSort(), dto.getPagination(), page.getTotalElements());\n\t\t}\n\t\treturn pageDto;\n\t}\n\n\t@Override\n\tpublic PageResponseDto searchDeviceType(Class entity, DeviceSearchDto dto) {\n\t\tList deviceSubTypes = new ArrayList<>();\n\t\tPageResponseDto pageDto = new PageResponseDto<>();\n\t\tPage page = searchHelper.search(entity, dto, null);\n\t\tif (page.getContent() != null && !page.getContent().isEmpty()) {\n\t\t\tdeviceSubTypes = MapperUtils.mapAll(page.getContent(), RegistrationSubTypeDto.class);\n\t\t\tpageDto = pageUtils.sortPage(deviceSubTypes, dto.getSort(), dto.getPagination(),page.getTotalElements());\n\t\t}\n\t\treturn pageDto;\n\t}\n\n\t@Override\n\tpublic FilterResponseCodeDto deviceFilterValues(DeviceFilterValueDto deviceFilterValueDto) {\n\t\tFilterResponseCodeDto filterResponseDto = new FilterResponseCodeDto();\n\t\tList columnValueList = new ArrayList<>();\n\t\tif (filterColumnValidator.validate(FilterDto.class, deviceFilterValueDto.getFilters(), DeviceDetail.class)) {\n\t\t\tfor (FilterDto filterDto : deviceFilterValueDto.getFilters()) {\t\t\t\t\n\t\t\t\tfilterDto.setColumnName(filterDto.getColumnName() + \",\" + \"make\" + \",\" + \"model\");\n\t\t\t\tList filterValues = filterHelper.filterValuesWithCode(DeviceDetail.class,\n\t\t\t\t\t\tfilterDto, deviceFilterValueDto, \"id\");\n\t\t\t\tfilterValues.forEach(filterValue -> {\n\t\t\t\t\tColumnCodeValue columnValue = new ColumnCodeValue();\n\t\t\t\t\tcolumnValue.setFieldCode(filterValue.getFieldCode());\n\t\t\t\t\tcolumnValue.setFieldID(filterDto.getColumnName().split(\",\")[0]);\n\t\t\t\t\tcolumnValue.setFieldValue(filterValue.getFieldValue());\n\t\t\t\t\tcolumnValueList.add(columnValue);\n\t\t\t\t});\n\t\t\t}\n\t\t\tfilterResponseDto.setFilters(columnValueList);\n\t\t}\n\t\treturn filterResponseDto;\n\t}\n\t\n\t/**\n\t * \n\t * @param deviceFilterValueDto\n\t * @return\n\t */\n\t@Override\n\tpublic FilterResponseCodeDto deviceTypeFilterValues(DeviceFilterValueDto deviceFilterValueDto) {\n\t\tFilterResponseCodeDto filterResponseDto = new FilterResponseCodeDto();\n\t\tList columnValueList = new ArrayList<>();\n\t\tif (filterColumnValidator.validate(FilterDto.class, deviceFilterValueDto.getFilters(), RegistrationDeviceType.class)) {\n\t\t\tfor (FilterDto filterDto : deviceFilterValueDto.getFilters()) {\n\t\t\t\tList filterValues = filterHelper.filterValuesWithCode(RegistrationDeviceType.class,\n\t\t\t\t\t\tfilterDto, deviceFilterValueDto, \"code\");\n\t\t\t\tfilterValues.forEach(filterValue -> {\n\t\t\t\t\tColumnCodeValue columnValue = new ColumnCodeValue();\n\t\t\t\t\tcolumnValue.setFieldCode(filterValue.getFieldCode());\n\t\t\t\t\tcolumnValue.setFieldID(filterDto.getColumnName());\n\t\t\t\t\tcolumnValue.setFieldValue(filterValue.getFieldValue());\n\t\t\t\t\tcolumnValueList.add(columnValue);\n\t\t\t\t});\n\t\t\t}\n\t\t\tfilterResponseDto.setFilters(columnValueList);\n\t\t}\n\t\treturn filterResponseDto;\n\t}\n\t\n\t/**\n\t * \n\t * @param deviceFilterValueDto\n\t * @return\n\t */\n\t@Override\n\tpublic FilterResponseCodeDto deviceSubTypeFilterValues(DeviceFilterValueDto deviceFilterValueDto) {\n\t\tFilterResponseCodeDto filterResponseDto = new FilterResponseCodeDto();\n\t\tList columnValueList = new ArrayList<>();\n\t\tif (filterColumnValidator.validate(FilterDto.class, deviceFilterValueDto.getFilters(), RegistrationDeviceSubType.class)) {\n\t\t\tfor (FilterDto filterDto : deviceFilterValueDto.getFilters()) {\n\t\t\t\tList filterValues = filterHelper.filterValuesWithCode(RegistrationDeviceSubType.class,\n\t\t\t\t\t\tfilterDto, deviceFilterValueDto, \"code\");\n\t\t\t\tfilterValues.forEach(filterValue -> {\n\t\t\t\t\tColumnCodeValue columnValue = new ColumnCodeValue();\n\t\t\t\t\tcolumnValue.setFieldCode(filterValue.getFieldCode());\n\t\t\t\t\tcolumnValue.setFieldID(filterDto.getColumnName());\n\t\t\t\t\tcolumnValue.setFieldValue(filterValue.getFieldValue());\n\t\t\t\t\tcolumnValueList.add(columnValue);\n\t\t\t\t});\n\t\t\t}\n\t\t\tfilterResponseDto.setFilters(columnValueList);\n\t\t}\n\t\treturn filterResponseDto;\n\t}\n\n\tpublic static void validatePartnerId(Partner partner, String userId) {\n\t\tif (Objects.isNull(partner.getId()) || partner.getId().equals(BLANK_STRING)) {\n\t\t\tLOGGER.info(\"Partner Id is null or empty for user id : \" + userId);\n\t\t\tthrow new PartnerServiceException(ErrorCode.PARTNER_ID_NOT_EXISTS.getErrorCode(),\n\t\t\t\t\tErrorCode.PARTNER_ID_NOT_EXISTS.getErrorMessage());\n\t\t}\n\t}\n\n\t@Override\n\tpublic ResponseWrapperV2 deactivateDevice(String deviceDetailId, DeactivateDeviceRequestDto requestDto) {\n\t\tResponseWrapperV2 responseWrapper = new ResponseWrapperV2<>();\n\t\ttry {\n\t\t\tString status = requestDto.getStatus();\n\t\t\tif (Objects.isNull(status) || status.equals(BLANK_STRING) || !status.equals(PartnerConstants.DEACTIVATE)) {\n\t\t\t\tLOGGER.info(status + \" : is Invalid Input Parameter, it should be (De-Activate)\");\n\t\t\t\tthrow new PartnerServiceException(ErrorCode.DEACTIVATE_STATUS_CODE.getErrorCode(),\n\t\t\t\t\t\tErrorCode.DEACTIVATE_STATUS_CODE.getErrorMessage());\n\t\t\t}\n\t\t\tString userId = getUserId();\n\t\t\tList partnerList = partnerRepository.findByUserId(userId);\n\t\t\tif (partnerList.isEmpty()) {\n\t\t\t\tLOGGER.info(\"sessionId\", \"idType\", \"id\", \"User id does not exist.\");\n\t\t\t\tthrow new PartnerServiceException(ErrorCode.USER_ID_NOT_EXISTS.getErrorCode(),\n\t\t\t\t\t\tErrorCode.USER_ID_NOT_EXISTS.getErrorMessage());\n\t\t\t}\n\t\t\tif (Objects.isNull(deviceDetailId)) {\n\t\t\t\tLOGGER.info(\"sessionId\", \"idType\", \"id\", \"Device id is null.\");\n\t\t\t\tthrow new PartnerServiceException(ErrorCode.INVALID_DEVICE_ID.getErrorCode(),\n\t\t\t\t\t\tErrorCode.INVALID_DEVICE_ID.getErrorMessage());\n\t\t\t}\n\t\t\tOptional deviceDetail = deviceDetailRepository.findById(deviceDetailId);\n\t\t\tif (!deviceDetail.isPresent()) {\n\t\t\t\tLOGGER.error(\"Device not exists with id {}\", deviceDetailId);\n\t\t\t\tthrow new PartnerServiceException(ErrorCode.DEVICE_NOT_EXISTS.getErrorCode(),\n\t\t\t\t\t\tErrorCode.DEVICE_NOT_EXISTS.getErrorMessage());\n\t\t\t}\n\t\t\tDeviceDetail device = deviceDetail.get();\n\t\t\tboolean isAdmin = partnerHelper.isPartnerAdmin(authUserDetails().getAuthorities().toString());\n\t\t\tif (!isAdmin) {\n\t\t\t\tPartner partnerDetails = getAssociatedPartner(partnerList, device.getDeviceProviderId(), userId);\n\t\t\t\tpartnerHelper.checkIfPartnerIsNotActive(partnerDetails);\n\t\t\t}\n\t\t\tif (!device.getApprovalStatus().equals(APPROVED)) {\n\t\t\t\tLOGGER.error(\"Unable to deactivate device with id {}\", device.getId());\n\t\t\t\tthrow new PartnerServiceException(ErrorCode.DEVICE_NOT_APPROVED.getErrorCode(),\n\t\t\t\t\t\tErrorCode.DEVICE_NOT_APPROVED.getErrorMessage());\n\t\t\t}\n\t\t\tif (device.getApprovalStatus().equals(APPROVED) && !device.getIsActive()) {\n\t\t\t\tLOGGER.error(\"Unable to deactivate device with id {}\", device.getId());\n\t\t\t\tthrow new PartnerServiceException(ErrorCode.DEVICE_ALREADY_DEACTIVATED.getErrorCode(),\n\t\t\t\t\t\tErrorCode.DEVICE_ALREADY_DEACTIVATED.getErrorMessage());\n\t\t\t}\n\n\t\t\tDeviceDetailResponseDto deviceDetailResponseDto = new DeviceDetailResponseDto();\n\n\t\t\tdevice.setIsActive(false);\n\t\t\tdevice.setUpdDtimes(LocalDateTime.now());\n\t\t\tdevice.setUpdBy(getUserId());\n\t\t\tDeviceDetail updatedDetail = deviceDetailRepository.save(device);\n\t\t\tdeviceDetailResponseDto.setDeviceId(updatedDetail.getId());\n\t\t\tdeviceDetailResponseDto.setStatus(updatedDetail.getApprovalStatus());\n\t\t\tdeviceDetailResponseDto.setActive(updatedDetail.getIsActive());\n\n\t\t\tresponseWrapper.setResponse(deviceDetailResponseDto);\n\n\t\t} catch (PartnerServiceException ex) {\n\t\t\tLOGGER.info(\"sessionId\", \"idType\", \"id\", \"In deactivateDevice method of DeviceDetailServiceImpl - \" + ex.getMessage());\n\t\t\tresponseWrapper.setErrors(MultiPartnerUtil.setErrorResponse(ex.getErrorCode(), ex.getErrorText()));\n\t\t} catch (Exception ex) {\n\t\t\tLOGGER.debug(\"sessionId\", \"idType\", \"id\", ex.getStackTrace());\n\t\t\tLOGGER.error(\"sessionId\", \"idType\", \"id\",\n\t\t\t\t\t\"In deactivateDevice method of DeviceDetailServiceImpl - \" + ex.getMessage());\n\t\t\tString errorCode = ErrorCode.DEACTIVATE_DEVICE_ERROR.getErrorCode();\n\t\t\tString errorMessage = ErrorCode.DEACTIVATE_DEVICE_ERROR.getErrorMessage();\n\t\t\tresponseWrapper.setErrors(MultiPartnerUtil.setErrorResponse(errorCode, errorMessage));\n\t\t}\n\t\tresponseWrapper.setId(patchDeactivateDevice);\n\t\tresponseWrapper.setVersion(VERSION);\n\t\treturn responseWrapper;\n\t}\n\n\t@Override\n\tpublic ResponseWrapperV2 approveOrRejectMappingDeviceToSbi(String deviceId, SbiAndDeviceMappingRequestDto requestDto) {\n\t\tResponseWrapperV2 responseWrapper = new ResponseWrapperV2<>();\n\t\ttry {\n\t\t\tString partnerId = requestDto.getPartnerId();\n\t\t\tString sbiId = requestDto.getSbiId();\n String status = requestDto.getStatus();\n\t\t\tif (Objects.isNull(partnerId) || Objects.isNull(deviceId) || Objects.isNull(status)) {\n\t\t\t\tLOGGER.info(\"sessionId\", \"idType\", \"id\", \"Partner/Device id does not exist.\");\n\t\t\t\tthrow new PartnerServiceException(ErrorCode.INVALID_REQUEST_PARAM.getErrorCode(),\n\t\t\t\t\t\tErrorCode.INVALID_REQUEST_PARAM.getErrorMessage());\n\t\t\t}\n\t\t\tif (!Set.of(DeviceConstant.APPROVED, DeviceConstant.REJECTED).contains(status)) {\n\t\t\t\tthrow new PartnerServiceException(ErrorCode.APPROVE_REJECT_STATUS_CODE.getErrorCode(),\n\t\t\t\t\t\tErrorCode.APPROVE_REJECT_STATUS_CODE.getErrorMessage());\n\t\t\t}\n\t\t\tif (Objects.isNull(sbiId)) {\n\t\t\t\tLOGGER.info(\"sessionId\", \"idType\", \"id\", \"SBI id is null.\");\n\t\t\t\tif (status.equals(DeviceConstant.APPROVED)) {\n\t\t\t\t\tthrow new PartnerServiceException(ErrorCode.NO_SBI_FOUND_FOR_APPROVE.getErrorCode(),\n\t\t\t\t\t\t\tErrorCode.NO_SBI_FOUND_FOR_APPROVE.getErrorMessage());\n\t\t\t\t} else {\n\t\t\t\t\tthrow new PartnerServiceException(ErrorCode.NO_SBI_FOUND_FOR_REJECT.getErrorCode(),\n\t\t\t\t\t\t\tErrorCode.NO_SBI_FOUND_FOR_REJECT.getErrorMessage());\n\t\t\t\t}\n\t\t\t}\n\t\t\t// validate sbi and device mapping\n\t\t\tpartnerHelper.validateSbiDeviceMapping(partnerId, sbiId, deviceId);\n\n\t\t\tDeviceDetailSBI deviceDetailSBI = deviceDetailSbiRepository.findByDeviceProviderIdAndSbiIdAndDeviceDetailId(partnerId, sbiId, deviceId);\n\t\t\tif (Objects.isNull(deviceDetailSBI)) {\n\t\t\t\tLOGGER.info(\"sessionId\", \"idType\", \"id\", \"SBI and Device mapping already exists in DB.\");\n\t\t\t\tthrow new PartnerServiceException(ErrorCode.SBI_DEVICE_MAPPING_NOT_EXISTS.getErrorCode(),\n\t\t\t\t\t\tErrorCode.SBI_DEVICE_MAPPING_NOT_EXISTS.getErrorMessage());\n\t\t\t}\n\n\t\t\tUpdateDeviceDetailStatusDto deviceDetails = new UpdateDeviceDetailStatusDto();\n\t\t\tdeviceDetails.setId(deviceId);\n\t\t\tif (status.equals(DeviceConstant.REJECTED)) {\n\t\t\t\tdeviceDetails.setApprovalStatus(DeviceConstant.REJECT);\n\t\t\t} else {\n\t\t\t\tdeviceDetails.setApprovalStatus(DeviceConstant.APPROVE);\n\t\t\t}\n\t\t\tupdateDeviceDetailStatus(deviceDetails);\n\n\t\t\tdeviceDetailSBI.setIsActive(true);\n\t\t\tdeviceDetailSBI.setUpdDtimes(Timestamp.valueOf(LocalDateTime.now()));\n\t\t\tdeviceDetailSBI.setUpdBy(getUserId());\n\t\t\tdeviceDetailSbiRepository.save(deviceDetailSBI);\n\t\t\tLOGGER.info(\"sessionId\", \"idType\", \"id\", \"updated device mapping to sbi successfully in Db.\");\n\t\t\tresponseWrapper.setResponse(true);\n\t\t} catch (PartnerServiceException ex) {\n\t\t\tLOGGER.info(\"sessionId\", \"idType\", \"id\", \"In approveOrRejectMappingDeviceToSbi method of DeviceDetailServiceImpl - \" + ex.getMessage());\n\t\t\tresponseWrapper.setErrors(MultiPartnerUtil.setErrorResponse(ex.getErrorCode(), ex.getErrorText()));\n\t\t} catch (Exception ex) {\n\t\t\tLOGGER.debug(\"sessionId\", \"idType\", \"id\", ex.getStackTrace());\n\t\t\tLOGGER.error(\"sessionId\", \"idType\", \"id\",\n\t\t\t\t\t\"In approveOrRejectMappingDeviceToSbi method of DeviceDetailServiceImplN - \" + ex.getMessage());\n\t\t\tString errorCode = ErrorCode.APPROVE_OR_REJECT_DEVICE_WITH_SBI_MAPPING_ERROR.getErrorCode();\n\t\t\tString errorMessage = ErrorCode.APPROVE_OR_REJECT_DEVICE_WITH_SBI_MAPPING_ERROR.getErrorMessage();\n\t\t\tresponseWrapper.setErrors(MultiPartnerUtil.setErrorResponse(errorCode, errorMessage));\n\t\t}\n\t\tresponseWrapper.setId(postApprovalMappingDeviceToSbiId);\n\t\tresponseWrapper.setVersion(VERSION);\n\t\treturn responseWrapper;\n\t}\n\n\tpublic Partner getAssociatedPartner (List partnerList, String deviceProviderId, String userId) {\n\t\tboolean deviceProviderExist = false;\n\t\tPartner partnerDetails = null;\n\t\tfor (Partner partner : partnerList) {\n\t\t\tif (partner.getId().equals(deviceProviderId)) {\n\t\t\t\tvalidatePartnerId(partner, userId);\n\t\t\t\tdeviceProviderExist = true;\n\t\t\t\tpartnerDetails = partner;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif (!deviceProviderExist) {\n\t\t\tLOGGER.info(\"sessionId\", \"idType\", \"id\", \"Device is not associated with user.\");\n\t\t\tthrow new PartnerServiceException(ErrorCode.DEVICE_NOT_ASSOCIATED_WITH_USER.getErrorCode(),\n\t\t\t\t\tErrorCode.DEVICE_NOT_ASSOCIATED_WITH_USER.getErrorMessage());\n\t\t}\n\t\treturn partnerDetails;\n\t}\n\n\t@Override\n\tpublic ResponseWrapperV2> getAllDeviceDetails(String sortFieldName, String sortType, Integer pageNo, Integer pageSize, DeviceDetailFilterDto filterDto) {\n\t\tResponseWrapperV2> responseWrapper = new ResponseWrapperV2<>();\n\t\ttry {\n\t\t\tPageResponseV2Dto pageResponseV2Dto = new PageResponseV2Dto<>();\n\t\t\t// Pagination\n\t\t\tPageable pageable = PageRequest.of(pageNo, pageSize);\n\n\t\t\t// Fetch all device details\n\t\t\tPage page = getDeviceDetails(sortFieldName, sortType, pageNo, pageSize, filterDto, pageable);\n\n\t\t\tif (Objects.nonNull(page) && !page.getContent().isEmpty()) {\n\t\t\t\tList deviceDetailSummaryDtoList = MapperUtils.mapAll(page.getContent(), DeviceDetailSummaryDto.class);\n\t\t\t\tpageResponseV2Dto.setPageNo(pageNo);\n\t\t\t\tpageResponseV2Dto.setPageSize(pageSize);\n\t\t\t\tpageResponseV2Dto.setTotalResults(page.getTotalElements());\n\t\t\t\tpageResponseV2Dto.setData(deviceDetailSummaryDtoList);\n\t\t\t}\n\t\t\tresponseWrapper.setResponse(pageResponseV2Dto);\n\t\t} catch (PartnerServiceException ex) {\n\t\t\tLOGGER.info(\"sessionId\", \"idType\", \"id\", \"In getAllDevices method of DeviceDetailServiceImpl - \" + ex.getMessage());\n\t\t\tresponseWrapper.setErrors(MultiPartnerUtil.setErrorResponse(ex.getErrorCode(), ex.getErrorText()));\n\t\t} catch (Exception ex) {\n\t\t\tLOGGER.debug(\"sessionId\", \"idType\", \"id\", ex.getStackTrace());\n\t\t\tLOGGER.error(\"sessionId\", \"idType\", \"id\",\n\t\t\t\t\t\"In getAllDevices method of DeviceDetailServiceImpl - \" + ex.getMessage());\n\t\t\tString errorCode = ErrorCode.GET_ALL_DEVICE_DETAILS_FETCH_ERROR.getErrorCode();\n\t\t\tString errorMessage = ErrorCode.GET_ALL_DEVICE_DETAILS_FETCH_ERROR.getErrorMessage();\n\t\t\tresponseWrapper.setErrors(MultiPartnerUtil.setErrorResponse(errorCode, errorMessage));\n\t\t}\n\t\tresponseWrapper.setId(getAllDeviceDetailsId);\n\t\tresponseWrapper.setVersion(VERSION);\n\t\treturn responseWrapper;\n\t}\n\n\tprivate Page getDeviceDetails(String sortFieldName, String sortType, Integer pageNo, Integer pageSize, DeviceDetailFilterDto filterDto, Pageable pageable) {\n\t\t//Sorting\n\t\tif (Objects.nonNull(sortFieldName) && Objects.nonNull(sortType)) {\n\t\t\t//sorting handling for the 'status' field\n\t\t\tif (sortFieldName.equals(\"status\") && sortType.equalsIgnoreCase(PartnerConstants.ASC)) {\n\t\t\t\treturn deviceDetailSummaryRepository.\n\t\t\t\t\t\tgetSummaryOfAllDeviceDetailsByStatusAsc(filterDto.getPartnerId(), filterDto.getOrgName(), filterDto.getDeviceType(),\n\t\t\t\t\t\t\t\tfilterDto.getDeviceSubType(), filterDto.getStatus(), filterDto.getMake(), filterDto.getModel(),\n\t\t\t\t\t\t\t\tfilterDto.getSbiId(), filterDto.getSbiVersion(), filterDto.getDeviceId(), pageable);\n\t\t\t} else if (sortFieldName.equals(\"status\") && sortType.equalsIgnoreCase(PartnerConstants.DESC)) {\n\t\t\t\treturn deviceDetailSummaryRepository.\n\t\t\t\t\t\tgetSummaryOfAllDeviceDetailsByStatusDesc(filterDto.getPartnerId(), filterDto.getOrgName(), filterDto.getDeviceType(),\n\t\t\t\t\t\t\t\tfilterDto.getDeviceSubType(), filterDto.getStatus(), filterDto.getMake(), filterDto.getModel(),\n\t\t\t\t\t\t\t\tfilterDto.getSbiId(), filterDto.getSbiVersion(), filterDto.getDeviceId(), pageable);\n\t\t\t}\n\t\t\t//Sorting for other fields\n\t\t\tSort sort = partnerHelper.getSortingRequest(getSortColumn(partnerHelper.deviceAliasToColumnMap, sortFieldName), sortType);\n\t\t\tpageable = PageRequest.of(pageNo, pageSize, sort);\n\t\t}\n\t\t//Default\n\t\treturn deviceDetailSummaryRepository.\n\t\t\t\tgetSummaryOfAllDeviceDetails(filterDto.getPartnerId(), filterDto.getOrgName(), filterDto.getDeviceType(),\n\t\t\t\t\t\tfilterDto.getDeviceSubType(), filterDto.getStatus(), filterDto.getMake(), filterDto.getModel(),\n\t\t\t\t\t\tfilterDto.getSbiId(), filterDto.getSbiVersion(), filterDto.getDeviceId(), pageable);\n\t}\n\n\tpublic String getSortColumn(Map aliasToColumnMap, String alias) {\n\t\treturn aliasToColumnMap.getOrDefault(alias, alias); // Return alias if no match found\n\t}\n\n\tprivate AuthUserDetails authUserDetails() {\n\t\treturn (AuthUserDetails) SecurityContextHolder.getContext().getAuthentication().getPrincipal();\n\t}\n\n\tprivate String getUserId() {\n\t\tString userId = authUserDetails().getUserId();\n\t\treturn userId;\n\t}\n\n\tpublic static String getCertificateName(String subjectDN) {\n\t\tString[] parts = subjectDN.split(\",\");\n\t\tfor (String part : parts) {\n\t\t\tif (part.trim().startsWith(\"CN=\")) {\n\t\t\t\treturn part.trim().substring(3);\n\t\t\t}\n\t\t}\n\t\treturn BLANK_STRING;\n\t}\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/device/authdevice/service/impl/FTPChipDetailServiceImpl.java", + "title": "FTPChipDetailServiceImpl.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/device/authdevice/service/impl/FTPChipDetailServiceImpl.java", + "language": "java", + "content": "package io.mosip.pms.device.authdevice.service.impl;\n\nimport java.io.ByteArrayInputStream;\nimport java.io.IOException;\nimport java.security.cert.Certificate;\nimport java.security.cert.CertificateException;\nimport java.security.cert.CertificateFactory;\nimport java.security.cert.X509Certificate;\nimport java.time.LocalDateTime;\nimport java.time.ZoneId;\nimport java.util.*;\n\nimport io.mosip.kernel.core.authmanager.authadapter.model.AuthUserDetails;\nimport io.mosip.pms.common.dto.PageResponseV2Dto;\nimport io.mosip.pms.common.response.dto.ResponseWrapperV2;\nimport io.mosip.pms.device.authdevice.entity.FtmDetailSummaryEntity;\nimport io.mosip.pms.device.authdevice.repository.FtmDetailsSummaryRepository;\nimport io.mosip.pms.device.dto.FtmChipDetailsDto;\nimport io.mosip.pms.device.dto.FtmChipFilterDto;\nimport io.mosip.pms.device.response.dto.*;\nimport io.mosip.pms.partner.constant.PartnerConstants;\nimport io.mosip.pms.partner.response.dto.FtmCertificateDownloadResponseDto;\nimport io.mosip.pms.partner.util.MultiPartnerUtil;\nimport io.mosip.pms.partner.util.PartnerHelper;\nimport io.mosip.pms.partner.util.PartnerUtil;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.beans.factory.annotation.Value;\nimport org.springframework.core.env.Environment;\nimport org.springframework.core.io.ByteArrayResource;\nimport org.springframework.data.domain.Page;\nimport org.springframework.data.domain.PageRequest;\nimport org.springframework.data.domain.Pageable;\nimport org.springframework.data.domain.Sort;\nimport org.springframework.http.MediaType;\nimport org.springframework.security.core.Authentication;\nimport org.springframework.security.core.context.SecurityContextHolder;\nimport org.springframework.stereotype.Component;\nimport org.springframework.transaction.annotation.Transactional;\nimport org.springframework.util.LinkedMultiValueMap;\nimport org.springframework.util.MultiValueMap;\n\nimport com.fasterxml.jackson.core.JsonParseException;\nimport com.fasterxml.jackson.core.JsonProcessingException;\nimport com.fasterxml.jackson.databind.JsonMappingException;\nimport com.fasterxml.jackson.databind.ObjectMapper;\n\nimport io.mosip.kernel.core.logger.spi.Logger;\nimport io.mosip.kernel.core.util.CryptoUtil;\nimport io.mosip.kernel.core.util.EmptyCheckUtils;\nimport io.mosip.pms.common.constant.ApiAccessibleExceptionConstant;\nimport io.mosip.pms.common.constant.CommonConstant;\nimport io.mosip.pms.common.constant.EventType;\nimport io.mosip.pms.common.dto.PageResponseDto;\nimport io.mosip.pms.common.dto.Type;\nimport io.mosip.pms.common.entity.Partner;\nimport io.mosip.pms.common.exception.ApiAccessibleException;\nimport io.mosip.pms.common.exception.RequestException;\nimport io.mosip.pms.common.helper.SearchHelper;\nimport io.mosip.pms.common.helper.WebSubPublisher;\nimport io.mosip.pms.common.repository.PartnerServiceRepository;\nimport io.mosip.pms.common.request.dto.RequestWrapper;\nimport io.mosip.pms.common.util.MapperUtils;\nimport io.mosip.pms.common.util.PMSLogger;\nimport io.mosip.pms.common.util.RestUtil;\nimport io.mosip.pms.device.authdevice.entity.FTPChipDetail;\nimport io.mosip.pms.device.authdevice.repository.FTPChipDetailRepository;\nimport io.mosip.pms.device.authdevice.service.FtpChipDetailService;\nimport io.mosip.pms.device.constant.DeviceConstant;\nimport io.mosip.pms.device.constant.FoundationalTrustProviderErrorMessages;\nimport io.mosip.pms.device.request.dto.DeviceSearchDto;\nimport io.mosip.pms.device.request.dto.DeactivateFtmRequestDto;\nimport io.mosip.pms.device.request.dto.FtpCertificateRequestDto;\nimport io.mosip.pms.device.request.dto.FtpChipCertDownloadRequestDto;\nimport io.mosip.pms.device.request.dto.FtpChipCertificateRequestDto;\nimport io.mosip.pms.device.request.dto.FtpChipDetailDto;\nimport io.mosip.pms.device.request.dto.FtpChipDetailStatusDto;\nimport io.mosip.pms.device.request.dto.FtpChipDetailUpdateDto;\nimport io.mosip.pms.device.util.AuditUtil;\nimport io.mosip.pms.device.util.DeviceUtil;\nimport io.mosip.pms.partner.constant.ErrorCode;\nimport io.mosip.pms.partner.dto.DataShareResponseDto;\nimport io.mosip.pms.partner.exception.PartnerServiceException;\n\n@Component\n@Transactional\npublic class FTPChipDetailServiceImpl implements FtpChipDetailService {\n\t\n\tprivate static final Logger LOGGER = PMSLogger.getLogger(FTPChipDetailServiceImpl.class);\n\t\n\tprivate static final String BEGIN_CERTIFICATE = \"-----BEGIN CERTIFICATE-----\";\n\t\n\tprivate static final String END_CERTIFICATE = \"-----END CERTIFICATE-----\";\n \n\tprivate final static String LINE_SEPARATOR = \"\\n\";\n\t\n\t@Autowired\n\tSearchHelper searchHelper;\n\t\n\t@Autowired\n\tAuditUtil auditUtil;\n\t\n\t@Autowired\n\tRestUtil restUtil;\n\t\n\t@Autowired\n\tprivate Environment environment;\n\t\n\t@Autowired\n\tFTPChipDetailRepository ftpChipDetailRepository;\n\t\n\t@Autowired\n\tPartnerServiceRepository partnerServiceRepository;\n\n\t@Autowired\n\tPartnerServiceRepository partnerRepository;\n\n\t@Autowired\n\tFtmDetailsSummaryRepository ftmDetailsSummaryRepository;\n\t\n\t@Autowired\n\tprivate ObjectMapper mapper;\n\n\t@Autowired\n\tPartnerHelper partnerHelper;\n\n\tprivate static final String ERRORS = \"errors\";\n\n\tprivate static final String ERRORCODE = \"errorCode\";\n\n\tprivate static final String ERRORMESSAGE = \"message\";\n\n\tpublic static final String VERSION = \"1.0\";\n\n\tpublic static final String APPROVED = \"approved\";\n\n\tpublic static final String DEACTIVATED = \"deactivated\";\n\n\tpublic static final String PENDING_APPROVAL = \"pending_approval\";\n\n\tpublic static final String BLANK_STRING = \"\";\n\t@Value(\"${pms.certs.datashare.subscriberId}\")\n\tprivate String subscriberId;\n\t\n\t@Value(\"${pms.certs.datashare.policyId}\")\n\tprivate String policyId;\n\n\t@Value(\"${mosip.pms.api.id.deactivate.ftm.patch}\")\n\tprivate String patchDeactivateFtm;\n\n\t@Value(\"${mosip.pms.api.id.original.ftm.certificate.get}\")\n\tprivate String getOriginalFtmCertificateId;\n\n\t@Value(\"${mosip.pms.api.id.partners.ftm.chip.details.get}\")\n\tprivate String getPartnersFtmChipDetailsId;\n\n\t@Value(\"${mosip.pms.api.id.ftm.chip.details.get}\")\n\tprivate String getFtmChipDetailsId;\n\n\t@Value(\"${mosip.pms.ca.signed.partner.certificate.available}\")\n\tprivate Boolean isCaSignedPartnerCertificateAvailable;\n\n\t@Value(\"${mosip.pms.id.generation.max.retries}\")\n\tprivate int maxRetries;\n\n\t@Autowired\n\tprivate WebSubPublisher webSubPublisher;\n\t\n\t@Override\n\tpublic IdDto createFtpChipDetails(FtpChipDetailDto chipDetails) {\n\t\tPartner partnerFromDb = partnerServiceRepository.findByIdAndIsDeletedFalseorIsDeletedIsNullAndIsActiveTrue(chipDetails.getFtpProviderId());\n\t\tif(partnerFromDb == null) {\n\t\t\tauditUtil.auditRequest(\n\t\t\t\t\tString.format(\n\t\t\t\t\t\t\tDeviceConstant.FAILURE_CREATE, FtpChipDetailDto.class.getCanonicalName()),\n\t\t\t\t\tDeviceConstant.AUDIT_SYSTEM,\n\t\t\t\t\tString.format(DeviceConstant.FAILURE_DESC,\n\t\t\t\t\t\t\tFoundationalTrustProviderErrorMessages.FTP_PROVIDER_NOT_EXISTS.getErrorCode(),\n\t\t\t\t\t\t\tFoundationalTrustProviderErrorMessages.FTP_PROVIDER_NOT_EXISTS.getErrorMessage()),\n\t\t\t\t\t\"AUT-003\", chipDetails.getFtpProviderId(), \"partnerId\");\n\t\t\tthrow new RequestException(FoundationalTrustProviderErrorMessages.FTP_PROVIDER_NOT_EXISTS.getErrorCode(),\n\t\t\t\t\tFoundationalTrustProviderErrorMessages.FTP_PROVIDER_NOT_EXISTS.getErrorMessage());\n\n\t\t}\n\t\tFTPChipDetail uniqueChipDetail = ftpChipDetailRepository.findByUniqueKey(chipDetails.getFtpProviderId(),\n\t\t\t\tPartnerUtil.trimAndReplace(chipDetails.getMake()), PartnerUtil.trimAndReplace(chipDetails.getModel()));\n\t\tif(uniqueChipDetail != null){\n\t\t\tauditUtil.auditRequest(\n\t\t\t\t\tString.format(\n\t\t\t\t\t\t\tDeviceConstant.FAILURE_CREATE, FtpChipDetailUpdateDto.class.getCanonicalName()),\n\t\t\t\t\tDeviceConstant.AUDIT_SYSTEM,\n\t\t\t\t\tString.format(DeviceConstant.FAILURE_DESC,\n\t\t\t\t\t\t\tFoundationalTrustProviderErrorMessages.FTP_PROVIDER_MAKE_MODEL_EXISTS.getErrorCode(),\n\t\t\t\t\t\t\tFoundationalTrustProviderErrorMessages.FTP_PROVIDER_MAKE_MODEL_EXISTS.getErrorMessage()),\n\t\t\t\t\t\"AUT-003\", chipDetails.getFtpProviderId(), \"partnerId\");\n\t\t\tthrow new RequestException(FoundationalTrustProviderErrorMessages.FTP_PROVIDER_MAKE_MODEL_EXISTS.getErrorCode(),\n\t\t\t\t\tFoundationalTrustProviderErrorMessages.FTP_PROVIDER_MAKE_MODEL_EXISTS.getErrorMessage());\t\t\n\t\t\t\n\t\t}\n\t\tAuthentication authN = SecurityContextHolder.getContext().getAuthentication();\n\t\tFTPChipDetail chipDetail = new FTPChipDetail();\n\t\tif (!EmptyCheckUtils.isNullEmpty(authN)) {\t\t\t\n\t\t\tchipDetail.setCrBy(authN.getName());\n\t\t}\t\t\n\t\tchipDetail.setActive(false);\n\t\tchipDetail.setDeleted(false);\n\t\tchipDetail.setCrDtimes(LocalDateTime.now());\n\t\tchipDetail.setFtpProviderId(chipDetails.getFtpProviderId());\n\t\tString ftpChipDetailId = DeviceUtil.generateId();\n\t\tint attempts = 0;\n\n\t\twhile (ftpChipDetailRepository.existsById(ftpChipDetailId)) {\n\t\t\tif (attempts >= maxRetries) {\n\t\t\t\tLOGGER.error(\"Failed to generate unique {} (field: '{}') for entity '{}' after {} attempts\", \"FTP Chip Detail ID\",\n\t\t\t\t\t\t\"ftpChipDetailId\", chipDetail.getClass().getSimpleName(), maxRetries);\n\t\t\t\tauditUtil.auditRequest(\n\t\t\t\t\t\tString.format(\n\t\t\t\t\t\t\t\tDeviceConstant.FAILURE_CREATE, FtpChipDetailUpdateDto.class.getCanonicalName()),\n\t\t\t\t\t\tDeviceConstant.AUDIT_SYSTEM,\n\t\t\t\t\t\tString.format(DeviceConstant.FAILURE_DESC,\n\t\t\t\t\t\t\t\tFoundationalTrustProviderErrorMessages.FTP_CHIP_DETAIL_ID_GENERATION_FAILURE.getErrorCode(),\n\t\t\t\t\t\t\t\tFoundationalTrustProviderErrorMessages.FTP_CHIP_DETAIL_ID_GENERATION_FAILURE.getErrorMessage()),\n\t\t\t\t\t\t\"AUT-003\", chipDetails.getFtpProviderId(), \"ftpChipId\");\n\t\t\t\tthrow new PartnerServiceException(\n\t\t\t\t\t\tErrorCode.UNABLE_TO_GENERATE_UNIQUE_ID.getErrorCode(),\n\t\t\t\t\t\tString.format(ErrorCode.UNABLE_TO_GENERATE_UNIQUE_ID.getErrorMessage(), \"FTP Chip Detail ID\", \"ftpChipDetailId\", chipDetail.getClass().getSimpleName(), maxRetries)\n\t\t\t\t);\n\t\t\t}\n\t\t\tftpChipDetailId = DeviceUtil.generateId();\n\t\t\tattempts++;\n\t\t}\n\n\t\tchipDetail.setFtpChipDetailId(ftpChipDetailId);\n\t\tchipDetail.setMake(chipDetails.getMake());\n\t\tchipDetail.setModel(chipDetails.getModel());\n\t\tchipDetail.setPartnerOrganizationName(partnerFromDb.getName());\n\t\tchipDetail.setApprovalStatus(CommonConstant.PENDING_CERT_UPLOAD);\n\t\tftpChipDetailRepository.save(chipDetail);\n\t\tIdDto response = new IdDto();\n\t\tresponse.setId(chipDetail.getFtpChipDetailId());\n\t\treturn response;\n\t}\n\n\t@Override\n\tpublic IdDto updateFtpChipDetails(FtpChipDetailUpdateDto chipDetails) {\n\t\tOptional chipDetail = ftpChipDetailRepository.findById(chipDetails.getFtpChipDetailId());\n\t\tif(chipDetail.isEmpty()) {\n\t\t\tauditUtil.auditRequest(\n\t\t\t\t\tString.format(\n\t\t\t\t\t\t\tDeviceConstant.FAILURE_CREATE, FtpChipDetailUpdateDto.class.getCanonicalName()),\n\t\t\t\t\tDeviceConstant.AUDIT_SYSTEM,\n\t\t\t\t\tString.format(DeviceConstant.FAILURE_DESC,\n\t\t\t\t\t\t\tFoundationalTrustProviderErrorMessages.FTP_CHIP_ID_NOT_EXISTS.getErrorCode(),\n\t\t\t\t\t\t\tFoundationalTrustProviderErrorMessages.FTP_CHIP_ID_NOT_EXISTS.getErrorMessage()),\n\t\t\t\t\t\"AUT-003\", chipDetails.getFtpChipDetailId(), \"ftpChipId\");\n\t\t\tthrow new RequestException(FoundationalTrustProviderErrorMessages.FTP_CHIP_ID_NOT_EXISTS.getErrorCode(),\n\t\t\t\t\tFoundationalTrustProviderErrorMessages.FTP_CHIP_ID_NOT_EXISTS.getErrorMessage());\t\t\t\n\t\t}\n\t\tFTPChipDetail uniqueChipDetail = ftpChipDetailRepository.findByUniqueKey(chipDetail.get().getFtpProviderId(),\n\t\t\t\tchipDetails.getMake(), chipDetails.getModel());\n\t\tif(uniqueChipDetail != null && !chipDetail.get().getFtpChipDetailId().equals(uniqueChipDetail.getFtpChipDetailId())){\n\t\t\tauditUtil.auditRequest(\n\t\t\t\t\tString.format(\n\t\t\t\t\t\t\tDeviceConstant.FAILURE_CREATE, FtpChipDetailUpdateDto.class.getCanonicalName()),\n\t\t\t\t\tDeviceConstant.AUDIT_SYSTEM,\n\t\t\t\t\tString.format(DeviceConstant.FAILURE_DESC,\n\t\t\t\t\t\t\tFoundationalTrustProviderErrorMessages.FTP_PROVIDER_MAKE_MODEL_EXISTS.getErrorCode(),\n\t\t\t\t\t\t\tFoundationalTrustProviderErrorMessages.FTP_PROVIDER_MAKE_MODEL_EXISTS.getErrorMessage()),\n\t\t\t\t\t\"AUT-003\", chipDetails.getFtpChipDetailId(), \"ftpChipId\");\n\t\t\tthrow new RequestException(FoundationalTrustProviderErrorMessages.FTP_PROVIDER_MAKE_MODEL_EXISTS.getErrorCode(),\n\t\t\t\t\tFoundationalTrustProviderErrorMessages.FTP_PROVIDER_MAKE_MODEL_EXISTS.getErrorMessage());\t\t\n\t\t\t\n\t\t}\n\t\tAuthentication authN = SecurityContextHolder.getContext().getAuthentication();\n\t\tFTPChipDetail updateObject = chipDetail.get();\t\t\n\t\tif (!EmptyCheckUtils.isNullEmpty(authN)) {\n\t\t\tupdateObject.setUpdBy(authN.getName());\n\t\t}\n\t\tupdateObject.setUpdDtimes(LocalDateTime.now());\n\t\tupdateObject.setMake(chipDetails.getMake());\n\t\tupdateObject.setModel(chipDetails.getModel());\n\t\tftpChipDetailRepository.save(updateObject);\n\t\tIdDto response = new IdDto();\n\t\tresponse.setId(updateObject.getFtpChipDetailId());\n\t\treturn response;\n\t}\n\n\t@Override\n\tpublic String updateFtpChipDetailStatus(FtpChipDetailStatusDto chipDetails) {\n\t\tOptional chipDetail = ftpChipDetailRepository.findById(chipDetails.getFtpChipDetailId());\n\t\tif(chipDetail.isEmpty()) {\n\t\t\tauditUtil.auditRequest(\n\t\t\t\t\tString.format(\n\t\t\t\t\t\t\tDeviceConstant.FAILURE_CREATE, FtpChipDetailStatusDto.class.getCanonicalName()),\n\t\t\t\t\tDeviceConstant.AUDIT_SYSTEM,\n\t\t\t\t\tString.format(DeviceConstant.FAILURE_DESC,\n\t\t\t\t\t\t\tFoundationalTrustProviderErrorMessages.FTP_CHIP_ID_NOT_EXISTS.getErrorCode(),\n\t\t\t\t\t\t\tFoundationalTrustProviderErrorMessages.FTP_CHIP_ID_NOT_EXISTS.getErrorMessage()),\n\t\t\t\t\t\"AUT-003\", chipDetails.getFtpChipDetailId(), \"ftpChipId\");\n\t\t\tthrow new RequestException(FoundationalTrustProviderErrorMessages.FTP_CHIP_ID_NOT_EXISTS.getErrorCode(),\n\t\t\t\t\tFoundationalTrustProviderErrorMessages.FTP_CHIP_ID_NOT_EXISTS.getErrorMessage());\n\t\t}\n\t\tif(chipDetail.get().getCertificateAlias() == null && chipDetails.getApprovalStatus()) {\n\t\t\tauditUtil.auditRequest(\n\t\t\t\t\tString.format(\n\t\t\t\t\t\t\tDeviceConstant.FAILURE_CREATE, FtpChipDetailStatusDto.class.getCanonicalName()),\n\t\t\t\t\tDeviceConstant.AUDIT_SYSTEM,\n\t\t\t\t\tString.format(DeviceConstant.FAILURE_DESC,\n\t\t\t\t\t\t\tFoundationalTrustProviderErrorMessages.FTP_CERT_NOT_UPLOADED.getErrorCode(),\n\t\t\t\t\t\t\tFoundationalTrustProviderErrorMessages.FTP_CERT_NOT_UPLOADED.getErrorMessage()),\n\t\t\t\t\t\"AUT-003\", chipDetails.getFtpChipDetailId(), \"ftpChipId\");\n\t\t\tthrow new RequestException(FoundationalTrustProviderErrorMessages.FTP_CERT_NOT_UPLOADED.getErrorCode(),\n\t\t\t\t\tFoundationalTrustProviderErrorMessages.FTP_CERT_NOT_UPLOADED.getErrorMessage());\n\t\t}\n\t\tFTPChipDetail updateObject = chipDetail.get();\n\t\tAuthentication authN = SecurityContextHolder.getContext().getAuthentication();\n\t\tif (!EmptyCheckUtils.isNullEmpty(authN)) {\n\t\t\tupdateObject.setUpdBy(authN.getName());\n\t\t}\n\t\tupdateObject.setUpdDtimes(LocalDateTime.now());\n\t\tupdateObject.setActive(chipDetails.getApprovalStatus());\n\t\tupdateObject.setApprovalStatus(\n\t\t\t\tchipDetails.getApprovalStatus() == true ? CommonConstant.APPROVED : CommonConstant.REJECTED);\n\t\tftpChipDetailRepository.save(updateObject);\n\t\treturn \"Status updated successfully.\";\n\t}\n\n\t@SuppressWarnings(\"unchecked\")\n\t@Override\n\tpublic FtpCertificateResponseDto uploadCertificate(FtpChipCertificateRequestDto ftpChipCertRequestDto)\n\t\t\tthrows JsonParseException, JsonMappingException, JsonProcessingException, IOException {\n\t\tPartner partnerFromDb = partnerServiceRepository.findByIdAndIsDeletedFalseorIsDeletedIsNullAndIsActiveTrue(ftpChipCertRequestDto.getFtpProviderId());\n\t\tif(partnerFromDb == null) {\n\t\t\tauditUtil.auditRequest(\n\t\t\t\t\tString.format(\n\t\t\t\t\t\t\tDeviceConstant.FAILURE_CREATE, FtpChipDetailUpdateDto.class.getCanonicalName()),\n\t\t\t\t\tDeviceConstant.AUDIT_SYSTEM,\n\t\t\t\t\tString.format(DeviceConstant.FAILURE_DESC,\n\t\t\t\t\t\t\tFoundationalTrustProviderErrorMessages.FTP_PROVIDER_NOT_EXISTS.getErrorCode(),\n\t\t\t\t\t\t\tFoundationalTrustProviderErrorMessages.FTP_PROVIDER_NOT_EXISTS.getErrorMessage()),\n\t\t\t\t\t\"AUT-003\", ftpChipCertRequestDto.getFtpChipDeatilId(), \"ftpChipId\");\n\t\t\tthrow new RequestException(FoundationalTrustProviderErrorMessages.FTP_PROVIDER_NOT_EXISTS.getErrorCode(),\n\t\t\t\t\tFoundationalTrustProviderErrorMessages.FTP_PROVIDER_NOT_EXISTS.getErrorMessage());\n\t\t}\n\t\tOptional chipDetail = ftpChipDetailRepository.findById(ftpChipCertRequestDto.getFtpChipDeatilId());\n\t\tif(chipDetail.isEmpty()) {\n\t\t\tauditUtil.auditRequest(\n\t\t\t\t\tString.format(\n\t\t\t\t\t\t\tDeviceConstant.FAILURE_CREATE, FtpChipDetailUpdateDto.class.getCanonicalName()),\n\t\t\t\t\tDeviceConstant.AUDIT_SYSTEM,\n\t\t\t\t\tString.format(DeviceConstant.FAILURE_DESC,\n\t\t\t\t\t\t\tFoundationalTrustProviderErrorMessages.FTP_CHIP_ID_NOT_EXISTS.getErrorCode(),\n\t\t\t\t\t\t\tFoundationalTrustProviderErrorMessages.FTP_CHIP_ID_NOT_EXISTS.getErrorMessage()),\n\t\t\t\t\t\"AUT-003\", ftpChipCertRequestDto.getFtpChipDeatilId(), \"ftpChipId\");\n\t\t\tthrow new RequestException(FoundationalTrustProviderErrorMessages.FTP_CHIP_ID_NOT_EXISTS.getErrorCode(),\n\t\t\t\t\tFoundationalTrustProviderErrorMessages.FTP_CHIP_ID_NOT_EXISTS.getErrorMessage());\t\t\t\n\t\t}\n\t\tif(!chipDetail.get().getFtpProviderId().equals(ftpChipCertRequestDto.getFtpProviderId())) {\n\t\t\tauditUtil.auditRequest(\n\t\t\t\t\tString.format(\n\t\t\t\t\t\t\tDeviceConstant.FAILURE_CREATE, FtpChipDetailUpdateDto.class.getCanonicalName()),\n\t\t\t\t\tDeviceConstant.AUDIT_SYSTEM,\n\t\t\t\t\tString.format(DeviceConstant.FAILURE_DESC,\n\t\t\t\t\t\t\tFoundationalTrustProviderErrorMessages.FTP_CHIP_ID_PROVIDER_ID_NOT_MATCHED.getErrorCode(),\n\t\t\t\t\t\t\tFoundationalTrustProviderErrorMessages.FTP_CHIP_ID_PROVIDER_ID_NOT_MATCHED.getErrorMessage()),\n\t\t\t\t\t\"AUT-003\", ftpChipCertRequestDto.getFtpChipDeatilId(), \"ftpChipId\");\n\t\t\tthrow new RequestException(FoundationalTrustProviderErrorMessages.FTP_CHIP_ID_PROVIDER_ID_NOT_MATCHED.getErrorCode(),\n\t\t\t\t\tFoundationalTrustProviderErrorMessages.FTP_CHIP_ID_PROVIDER_ID_NOT_MATCHED.getErrorMessage());\t\t\n\t\t\t\n\t\t}\n\t\tif (!chipDetail.get().getApprovalStatus().equals(APPROVED) && !chipDetail.get().getApprovalStatus().equals(CommonConstant.PENDING_CERT_UPLOAD)){\n\t\t\tthrow new RequestException(FoundationalTrustProviderErrorMessages.INVALID_FTP_CHIP_STATUS.getErrorCode(),\n\t\t\t\t\tFoundationalTrustProviderErrorMessages.INVALID_FTP_CHIP_STATUS.getErrorMessage());\n\t\t}\n\t\tif (chipDetail.get().getApprovalStatus().equals(APPROVED) && !chipDetail.get().isActive()){\n\t\t\tthrow new RequestException(FoundationalTrustProviderErrorMessages.FTP_CHIP_DEACTIVATED.getErrorCode(),\n\t\t\t\t\tFoundationalTrustProviderErrorMessages.FTP_CHIP_DEACTIVATED.getErrorMessage());\n\t\t}\n\t\tFtpCertificateRequestDto certRequest = new FtpCertificateRequestDto();\n\t\tcertRequest.setCertificateData(ftpChipCertRequestDto.getCertificateData());\n\t\tcertRequest.setOrganizationName(ftpChipCertRequestDto.getOrganizationName());\n\t\tcertRequest.setPartnerDomain(ftpChipCertRequestDto.getPartnerDomain());\n\t\tcertRequest.setPartnerId(chipDetail.get().getFtpChipDetailId());\n\t\tcertRequest.setPartnerType(partnerFromDb.getPartnerTypeCode());\n\t\tRequestWrapper request = new RequestWrapper<>();\n\t\trequest.setRequest(certRequest);\n\t\tMap uploadApiResponse = restUtil.postApi(environment.getProperty(\"pmp.partner.certificaticate.upload.rest.uri\"), null, \"\", \"\",\n\t\t\t\tMediaType.APPLICATION_JSON, request, Map.class);\n\t\tif(uploadApiResponse == null) {\n\t\t\tthrow new ApiAccessibleException(ApiAccessibleExceptionConstant.API_NULL_RESPONSE_EXCEPTION.getErrorCode(),\n\t\t\t\t\tApiAccessibleExceptionConstant.API_NULL_RESPONSE_EXCEPTION.getErrorMessage());\t\t\t\n\t\t}\n\t\tif(uploadApiResponse.containsKey(ERRORS) && uploadApiResponse.get(ERRORS) != null) {\n\t\t\tList> certServiceErrorList = (List>) uploadApiResponse.get(ERRORS);\n\t\t\tif(!certServiceErrorList.isEmpty()) {\n\t\t\t\tthrow new ApiAccessibleException(certServiceErrorList.get(0).get(ERRORCODE).toString(),certServiceErrorList.get(0).get(ERRORMESSAGE).toString());\n\t\t\t}else {\n\t\t\t\tthrow new ApiAccessibleException(ApiAccessibleExceptionConstant.UNABLE_TO_PROCESS.getErrorCode(),\n\t\t\t\t\t\tApiAccessibleExceptionConstant.UNABLE_TO_PROCESS.getErrorMessage());\n\t\t\t}\n\t\t}\n\t\tFtpCertificateResponseDto responseObject = mapper.readValue(mapper.writeValueAsString(uploadApiResponse.get(\"response\")), FtpCertificateResponseDto.class);\n\t\tFTPChipDetail updateObject = chipDetail.get();\n\t\tupdateObject.setCertificateAlias(responseObject.getCertificateId());\n\t\tAuthentication authN = SecurityContextHolder.getContext().getAuthentication();\n\t\tif (!EmptyCheckUtils.isNullEmpty(authN)) {\n\t\t\tupdateObject.setUpdBy(authN.getName());\n\t\t}\n\t\tupdateObject.setApprovalStatus(CommonConstant.PENDING_APPROVAL);\n\t\tupdateObject.setActive(false);\n\t\tupdateObject.setUpdDtimes(LocalDateTime.now());\n\t\tftpChipDetailRepository.save(updateObject);\n\t\ttry {\n\t\t\tresponseObject.setCertificateId(getPartnerCertFromChain(responseObject.getSignedCertificateData()));\n\t\t} catch (Exception ex) {\n\t\t\tLOGGER.error(\"Error occured while extracting the leaf cert\", ex.getMessage());\n\t\t\tthrow new PartnerServiceException(ErrorCode.P7B_CERTDATA_ERROR.getErrorCode(),\n\t\t\t\t\tErrorCode.P7B_CERTDATA_ERROR.getErrorMessage());\n\t\t}\n\t\tnotify(getDataShareurl(responseObject.getSignedCertificateData()), ftpChipCertRequestDto.getPartnerDomain());\n\t\treturn responseObject;\n\t}\n\n\t@SuppressWarnings(\"unchecked\")\n\t@Override\n\tpublic FtpCertDownloadResponeDto getCertificate(FtpChipCertDownloadRequestDto certDownloadRequestDto)\n\t\t\tthrows JsonParseException, JsonMappingException, JsonProcessingException, IOException {\n\t\tOptional chipDetail = ftpChipDetailRepository.findById(certDownloadRequestDto.getFtpChipDetailId());\n\t\tif(chipDetail.isEmpty()) {\n\t\t\tauditUtil.auditRequest(\n\t\t\t\t\tString.format(\n\t\t\t\t\t\t\tDeviceConstant.FAILURE_CREATE, FtpChipCertDownloadRequestDto.class.getCanonicalName()),\n\t\t\t\t\tDeviceConstant.AUDIT_SYSTEM,\n\t\t\t\t\tString.format(DeviceConstant.FAILURE_DESC,\n\t\t\t\t\t\t\tFoundationalTrustProviderErrorMessages.FTP_CHIP_ID_NOT_EXISTS.getErrorCode(),\n\t\t\t\t\t\t\tFoundationalTrustProviderErrorMessages.FTP_CHIP_ID_NOT_EXISTS.getErrorMessage()),\n\t\t\t\t\t\"AUT-003\", certDownloadRequestDto.getFtpChipDetailId(), \"ftpChipId\");\n\t\t\tthrow new RequestException(FoundationalTrustProviderErrorMessages.FTP_CHIP_ID_NOT_EXISTS.getErrorCode(),\n\t\t\t\t\tFoundationalTrustProviderErrorMessages.FTP_CHIP_ID_NOT_EXISTS.getErrorMessage());\t\t\t\n\t\t}\n\t\tif(chipDetail.get().getCertificateAlias() == null) {\n\t\t\tauditUtil.auditRequest(\n\t\t\t\t\tString.format(\n\t\t\t\t\t\t\tDeviceConstant.FAILURE_CREATE, FtpChipCertDownloadRequestDto.class.getCanonicalName()),\n\t\t\t\t\tDeviceConstant.AUDIT_SYSTEM,\n\t\t\t\t\tString.format(DeviceConstant.FAILURE_DESC,\n\t\t\t\t\t\t\tFoundationalTrustProviderErrorMessages.FTP_CERT_NOT_UPLOADED.getErrorCode(),\n\t\t\t\t\t\t\tFoundationalTrustProviderErrorMessages.FTP_CERT_NOT_UPLOADED.getErrorMessage()),\n\t\t\t\t\t\"AUT-003\", certDownloadRequestDto.getFtpChipDetailId(), \"ftpChipId\");\n\t\t\tthrow new RequestException(FoundationalTrustProviderErrorMessages.FTP_CERT_NOT_UPLOADED.getErrorCode(),\n\t\t\t\t\tFoundationalTrustProviderErrorMessages.FTP_CERT_NOT_UPLOADED.getErrorMessage());\t\t\n\t\n\t\t}\n\t\tFtpCertDownloadResponeDto responseObject = null;\n\t\tMap pathsegments = new HashMap<>();\n\t\tpathsegments.put(\"partnerCertId\", chipDetail.get().getCertificateAlias());\n\t\tMap getApiResponse = restUtil.getApi(environment.getProperty(\"pmp.partner.certificaticate.get.rest.uri\"), pathsegments, Map.class);\n\n\t\tif(getApiResponse.get(\"response\") == null && getApiResponse.containsKey(ERRORS)) {\n\t\t\tList> certServiceErrorList = (List>) getApiResponse.get(ERRORS);\n\t\t\tif(!certServiceErrorList.isEmpty()) {\n\t\t\t\tthrow new ApiAccessibleException(certServiceErrorList.get(0).get(ERRORCODE).toString(),certServiceErrorList.get(0).get(ERRORMESSAGE).toString());\n\t\t\t}else {\n\t\t\t\tthrow new ApiAccessibleException(ApiAccessibleExceptionConstant.UNABLE_TO_PROCESS.getErrorCode(),\n\t\t\t\t\t\tApiAccessibleExceptionConstant.UNABLE_TO_PROCESS.getErrorMessage());\n\t\t\t}\n\t\t}\n\t\tif(getApiResponse.get(\"response\") == null) {\n\t\t\tthrow new ApiAccessibleException(ApiAccessibleExceptionConstant.API_NULL_RESPONSE_EXCEPTION.getErrorCode(),\n\t\t\t\t\tApiAccessibleExceptionConstant.API_NULL_RESPONSE_EXCEPTION.getErrorMessage());\t\t\t\n\t\t}\n\t\tresponseObject = mapper.readValue(mapper.writeValueAsString(getApiResponse.get(\"response\")), FtpCertDownloadResponeDto.class);\n\t\treturn responseObject;\n\t}\n\n\t@Override\n\tpublic FTPChipDetail getFtpChipDeatils(String ftpChipId) {\n\t\tOptional chipDetail = ftpChipDetailRepository.findById(ftpChipId);\n\t\tif(chipDetail.isEmpty()) {\n\t\t\treturn null;\n\t\t}\n\t\treturn chipDetail.get();\n\t}\n\n\t@Override\n\tpublic PageResponseDto searchFTPChipDetails(Class entity, DeviceSearchDto dto) {\n\t\tList partners=new ArrayList<>();\n\t\tPageResponseDto pageDto = new PageResponseDto<>();\t\t\n\t\tPage page =searchHelper.search(entity, dto, \"ftpProviderId\");\n\t\tif (page.getContent() != null && !page.getContent().isEmpty()) {\n\t\t\t partners=MapperUtils.mapAll(page.getContent(), FTPSearchResponseDto.class);\n\t\t}\n\t\tpageDto.setData(partners);\n\t\tpageDto.setFromRecord(0);\n\t\tpageDto.setToRecord(page.getContent().size());\n\t\tpageDto.setTotalRecord(page.getContent().size());\n\t\treturn pageDto;\n\t}\n\t\n\t/**\n\t * Method to extract the leaf certificate from complete chain of a certificate.\n\t * @param certChain\n\t * @return\n\t * @throws Exception\n\t */\n\tprivate String getPartnerCertFromChain(String certChain) throws Exception {\n\t\tbyte[] p7bBytes = CryptoUtil.decodeURLSafeBase64(certChain);\n\t\ttry (ByteArrayInputStream certStream = new ByteArrayInputStream(p7bBytes)) {\n\t\t\tCertificateFactory cf = CertificateFactory.getInstance(\"X.509\");\n\t\t\tCollection p7bCertList = cf.generateCertificates(certStream);\n\t\t\tList certList = new ArrayList<>();\n\t\t\tp7bCertList.forEach(cert -> {\n\t\t\t\tcertList.add((Certificate) cert);\n\t\t\t});\n\t\t\tBase64.Encoder base64Encoder = Base64.getMimeEncoder(64, LINE_SEPARATOR.getBytes());\n\t\t\tbyte[] certificateData = certList.get(0).getEncoded();\n\t\t\tString encodedCertificateData = new String(base64Encoder.encode(certificateData));\n\t\t\tStringBuilder leafSignedCert = new StringBuilder();\n\t\t\tleafSignedCert.append(BEGIN_CERTIFICATE);\n\t\t\tleafSignedCert.append(LINE_SEPARATOR);\n\t\t\tleafSignedCert.append(encodedCertificateData);\n\t\t\tleafSignedCert.append(LINE_SEPARATOR);\n\t\t\tleafSignedCert.append(END_CERTIFICATE);\n\t\t\treturn leafSignedCert.toString();\n\t\t} catch (CertificateException | IOException exp) {\n\t\t\tLOGGER.error(\"Error Parsing P7B Certificate data.\", exp);\n\t\t\tthrow new PartnerServiceException(ErrorCode.P7B_CERTDATA_PARSING_ERROR.getErrorCode(),\n\t\t\t\t\tErrorCode.P7B_CERTDATA_PARSING_ERROR.getErrorMessage());\n\t\t}\n\t}\n\t\n\t/**\n\t * \n\t * @param certsChain\n\t * @return\n\t */\n\tprivate String getDataShareurl(String certsChain) {\n\t\tMultiValueMap map = new LinkedMultiValueMap<>();\n\t\tString fileName = \"certsChain\";\n\t\tmap.add(\"name\", fileName);\n\t\tmap.add(\"filename\", fileName);\n\t\tByteArrayResource contentsAsResource = new ByteArrayResource(certsChain.getBytes()) {\n\t\t\t@Override\n\t\t\tpublic String getFilename() {\n\t\t\t\treturn fileName;\n\t\t\t}\n\t\t};\n\t\tmap.add(\"file\", contentsAsResource);\n\t\tList pathSegments = new ArrayList<>();\n\t\tpathSegments.add(policyId);\n\t\tpathSegments.add(subscriberId);\n\t\tDataShareResponseDto response = restUtil.postApi(\n\t\t\t\tenvironment.getProperty(\"pmp.certificaticate.datashare.rest.uri\"), pathSegments, \"\", \"\",\n\t\t\t\tMediaType.MULTIPART_FORM_DATA, map, DataShareResponseDto.class);\n\t\tif (response == null) {\n\t\t\tthrow new PartnerServiceException(ErrorCode.DATASHARE_RESPONSE_NULL.getErrorCode(),\n\t\t\t\t\tErrorCode.DATASHARE_RESPONSE_NULL.getErrorMessage());\n\t\t}\n\t\tif ((response.getErrors() != null && response.getErrors().size() > 0)) {\n\t\t\tthrow new PartnerServiceException(response.getErrors().get(0).getErrorCode(),\n\t\t\t\t\tresponse.getErrors().get(0).getMessage());\n\t\t}\n\t\tSystem.out.println(response.getDataShare().getUrl());\n\t\treturn response.getDataShare().getUrl();\n\t}\n\t\n\t/**\n\t * \n\t * @param certData\n\t * @param partnerDomain\n\t */\n\tprivate void notify(String certData, String partnerDomain) {\n\t\tType type = new Type();\n\t\ttype.setName(\"PartnerServiceImpl\");\n\t\ttype.setNamespace(\"io.mosip.pms.device.authdevice.service.impl.FTPChipDetailServiceImpl\");\n\t\tMap data = new HashMap<>();\n\t\tdata.put(\"certChainDatashareUrl\", certData);\n\t\tdata.put(\"partnerDomain\", partnerDomain);\n\t\twebSubPublisher.notify(EventType.CA_CERTIFICATE_UPLOADED, data, type);\n\t}\n\n\t@Override\n\tpublic ResponseWrapperV2 deactivateFtm(String ftmId, DeactivateFtmRequestDto requestDto) {\n\t\tResponseWrapperV2 responseWrapper = new ResponseWrapperV2<>();\n\t\ttry {\n\t\t\tString status = requestDto.getStatus();\n\t\t\tif (Objects.isNull(status) || status.equals(BLANK_STRING) || !status.equals(PartnerConstants.DEACTIVATE)) {\n\t\t\t\tLOGGER.info(status + \" : is Invalid Input Parameter, it should be (De-Activate)\");\n\t\t\t\tthrow new PartnerServiceException(ErrorCode.DEACTIVATE_STATUS_CODE.getErrorCode(),\n\t\t\t\t\t\tErrorCode.DEACTIVATE_STATUS_CODE.getErrorMessage());\n\t\t\t}\n\t\t\tString userId = getUserId();\n\t\t\tList partnerList = partnerRepository.findByUserId(userId);\n\t\t\tif (partnerList.isEmpty()) {\n\t\t\t\tLOGGER.info(\"sessionId\", \"idType\", \"id\", \"User id does not exist.\");\n\t\t\t\tthrow new PartnerServiceException(ErrorCode.USER_ID_NOT_EXISTS.getErrorCode(),\n\t\t\t\t\t\tErrorCode.USER_ID_NOT_EXISTS.getErrorMessage());\n\t\t\t}\n\t\t\tvalidateFtmId(ftmId);\n\t\t\tOptional ftmChipDetail = ftpChipDetailRepository.findById(ftmId);\n\t\t\tvalidateFtmChipDetail(ftmChipDetail);\n\n\t\t\tFTPChipDetail ftm = ftmChipDetail.get();\n\n\t\t\tboolean isAdmin = partnerHelper.isPartnerAdmin(authUserDetails().getAuthorities().toString());\n\t\t\tif(!isAdmin){\n\t\t\t\tPartner partnerDetails = getAssociatedPartner(partnerList, ftm, userId);\n\t\t\t\tpartnerHelper.checkIfPartnerIsNotActive(partnerDetails);\n\t\t\t}\n\n\t\t\tif (!ftm.getApprovalStatus().equals(APPROVED)) {\n\t\t\t\tLOGGER.error(\"Unable to deactivate FTM with id {}\", ftm.getFtpChipDetailId());\n\t\t\t\tthrow new PartnerServiceException(ErrorCode.FTM_NOT_APPROVED.getErrorCode(),\n\t\t\t\t\t\tErrorCode.FTM_NOT_APPROVED.getErrorMessage());\n\t\t\t}\n\t\t\tif (ftm.getApprovalStatus().equals(APPROVED) && !ftm.isActive()) {\n\t\t\t\tLOGGER.error(\"Unable to deactivate FTM with id {}\", ftm.getFtpChipDetailId());\n\t\t\t\tthrow new PartnerServiceException(ErrorCode.FTM_ALREADY_DEACTIVATED.getErrorCode(),\n\t\t\t\t\t\tErrorCode.FTM_ALREADY_DEACTIVATED.getErrorMessage());\n\t\t\t}\n\t\t\tFtmDetailResponseDto ftmDetailResponseDto = new FtmDetailResponseDto();\n\n\t\t\tftm.setActive(false);\n\t\t\tftm.setUpdDtimes(LocalDateTime.now());\n\t\t\tftm.setUpdBy(getUserId());\n\t\t\tFTPChipDetail updatedDetail = ftpChipDetailRepository.save(ftm);\n\t\t\tftmDetailResponseDto.setFtmId(updatedDetail.getFtpChipDetailId());\n\t\t\tftmDetailResponseDto.setStatus(updatedDetail.getApprovalStatus());\n\t\t\tftmDetailResponseDto.setActive(updatedDetail.isActive());\n\n\t\t\tresponseWrapper.setResponse(ftmDetailResponseDto);\n\t\t} catch (PartnerServiceException ex) {\n\t\t\tLOGGER.info(\"sessionId\", \"idType\", \"id\", \"In deactivateFtm method of FTPChipDetailServiceImpl - \" + ex.getMessage());\n\t\t\tresponseWrapper.setErrors(MultiPartnerUtil.setErrorResponse(ex.getErrorCode(), ex.getErrorText()));\n\t\t} catch (Exception ex) {\n\t\t\tLOGGER.debug(\"sessionId\", \"idType\", \"id\", ex.getStackTrace());\n\t\t\tLOGGER.error(\"sessionId\", \"idType\", \"id\",\n\t\t\t\t\t\"In deactivateFtm method of FTPChipDetailServiceImpl - \" + ex.getMessage());\n\t\t\tString errorCode = ErrorCode.DEACTIVATE_FTM_ERROR.getErrorCode();\n\t\t\tString errorMessage = ErrorCode.DEACTIVATE_FTM_ERROR.getErrorMessage();\n\t\t\tresponseWrapper.setErrors(MultiPartnerUtil.setErrorResponse(errorCode, errorMessage));\n\t\t}\n\t\tresponseWrapper.setId(patchDeactivateFtm);\n\t\tresponseWrapper.setVersion(VERSION);\n\t\treturn responseWrapper;\n\t}\n\n\t@Override\n\tpublic ResponseWrapperV2 getFtmCertificateData(String ftmId) {\n\t\tResponseWrapperV2 responseWrapper = new ResponseWrapperV2<>();\n\t\ttry {\n\t\t\tString userId = getUserId();\n\t\t\tList partnerList = partnerRepository.findByUserId(userId);\n\t\t\tif (partnerList.isEmpty()) {\n\t\t\t\tLOGGER.error(\"sessionId\", \"idType\", \"id\", \"User id does not exists.\");\n\t\t\t\tthrow new PartnerServiceException(ErrorCode.USER_ID_NOT_EXISTS.getErrorCode(),\n\t\t\t\t\t\tErrorCode.USER_ID_NOT_EXISTS.getErrorMessage());\n\t\t\t}\n\t\t\tvalidateFtmId(ftmId);\n\t\t\tOptional ftmChipDetail = ftpChipDetailRepository.findById(ftmId);\n\t\t\tvalidateFtmChipDetail(ftmChipDetail);\n\n\t\t\tFTPChipDetail ftm = ftmChipDetail.get();\n\n\t\t\tboolean isAdmin = partnerHelper.isPartnerAdmin(authUserDetails().getAuthorities().toString());\n\t\t\tif(!isAdmin){\n\t\t\t\tPartner partnerDetails = getAssociatedPartner(partnerList, ftm, userId);\n\t\t\t\tpartnerHelper.checkIfPartnerIsNotActive(partnerDetails);\n\t\t\t}\n\n\t\t\tif (!(ftm.getApprovalStatus().equals(PENDING_APPROVAL) || ftm.getApprovalStatus().equals(APPROVED))) {\n\t\t\t\tLOGGER.error(\"Unable to download original FTM certificate with id {}\", ftm.getFtpChipDetailId());\n\t\t\t\tthrow new PartnerServiceException(ErrorCode.DOWNLOAD_CERTIFICATE_FTM_INVALID_STATUS.getErrorCode(),\n\t\t\t\t\t\tErrorCode.DOWNLOAD_CERTIFICATE_FTM_INVALID_STATUS.getErrorMessage());\n\t\t\t}\n\t\t\tif (ftm.getApprovalStatus().equals(APPROVED) && !ftm.isActive()) {\n\t\t\t\tLOGGER.error(\"Unable to download original FTM certificate with id {}\", ftm.getFtpChipDetailId());\n\t\t\t\tthrow new PartnerServiceException(ErrorCode.DOWNLOAD_CERTIFICATE_FTM_DEACTIVATED_ERROR.getErrorCode(),\n\t\t\t\t\t\tErrorCode.DOWNLOAD_CERTIFICATE_FTM_DEACTIVATED_ERROR.getErrorMessage());\n\t\t\t}\n\n\t\t\t// Download only if the FTM is approved or pending_approval status.\n\t\t\tFtmCertificateDownloadResponseDto responseObject = null;\n\t\t\tresponseObject = partnerHelper.getCertificate(ftm.getCertificateAlias(), \"pmp.partner.original.certificate.get.rest.uri\", FtmCertificateDownloadResponseDto.class);\n\t\t\tpartnerHelper.populateFtmCertificateExpiryState(responseObject);\n\t\t\tresponseWrapper.setResponse(responseObject);\n\t\t} catch (ApiAccessibleException ex) {\n\t\t\tLOGGER.info(\"sessionId\", \"idType\", \"id\", \"In getFtmCertificateData method of FTPChipDetailServiceImpl - \" + ex.getMessage());\n\t\t\tresponseWrapper.setErrors(MultiPartnerUtil.setErrorResponse(ex.getErrorCode(), ex.getErrorText()));\n\t\t} catch (PartnerServiceException ex) {\n\t\t\tLOGGER.info(\"sessionId\", \"idType\", \"id\", \"In getFtmCertificateData method of FTPChipDetailServiceImpl - \" + ex.getMessage());\n\t\t\tresponseWrapper.setErrors(MultiPartnerUtil.setErrorResponse(ex.getErrorCode(), ex.getErrorText()));\n\t\t} catch (Exception ex) {\n\t\t\tLOGGER.debug(\"sessionId\", \"idType\", \"id\", ex.getStackTrace());\n\t\t\tLOGGER.error(\"sessionId\", \"idType\", \"id\",\n\t\t\t\t\t\"In getFtmCertificateData method of FTPChipDetailServiceImpl - \" + ex.getMessage());\n\t\t\tString errorCode = ErrorCode.UNABLE_TO_DOWNLOAD_ORIGINAL_FTM_CERTIFICATE.getErrorCode();\n\t\t\tString errorMessage = ErrorCode.UNABLE_TO_DOWNLOAD_ORIGINAL_FTM_CERTIFICATE.getErrorMessage();\n\t\t\tresponseWrapper.setErrors(MultiPartnerUtil.setErrorResponse(errorCode, errorMessage));\n\t\t}\n\t\tresponseWrapper.setId(getOriginalFtmCertificateId);\n\t\tresponseWrapper.setVersion(VERSION);\n\t\treturn responseWrapper;\n\t}\n\n\t@Override\n\tpublic ResponseWrapperV2> getPartnersFtmChipDetails(String sortFieldName, String sortType, Integer pageNo, Integer pageSize, FtmChipFilterDto filterDto) {\n\t\tResponseWrapperV2> responseWrapper = new ResponseWrapperV2<>();\n\t\ttry {\n\t\t\tPageResponseV2Dto pageResponseV2Dto = new PageResponseV2Dto();\n\t\t\t// Pagination\n\t\t\tPageable pageable = PageRequest.of(pageNo, pageSize);\n\n\t\t\t// Fetch the FTM chip details\n\t\t\tPage page = getFtmChipDetails(sortFieldName, sortType, pageNo, pageSize, filterDto, pageable);\n\t\t\tif (Objects.nonNull(page) && !page.getContent().isEmpty()) {\n\t\t\t\tList ftmDetailSummaryDtoList = MapperUtils.mapAll(page.getContent(), FtmDetailSummaryDto.class);\n\t\t\t\tpageResponseV2Dto.setPageNo(pageNo);\n\t\t\t\tpageResponseV2Dto.setPageSize(pageSize);\n\t\t\t\tpageResponseV2Dto.setTotalResults(page.getTotalElements());\n\t\t\t\tpageResponseV2Dto.setData(ftmDetailSummaryDtoList);\n\t\t\t}\n\t\t\tresponseWrapper.setResponse(pageResponseV2Dto);\n\t\t} catch (PartnerServiceException ex) {\n\t\t\tLOGGER.info(\"sessionId\", \"idType\", \"id\", \"In getPartnersFtmChipDetails method of FTPChipDetailServiceImpl - \" + ex.getMessage());\n\t\t\tresponseWrapper.setErrors(MultiPartnerUtil.setErrorResponse(ex.getErrorCode(), ex.getErrorText()));\n\t\t} catch (Exception ex) {\n\t\t\tLOGGER.debug(\"sessionId\", \"idType\", \"id\", ex.getStackTrace());\n\t\t\tLOGGER.error(\"sessionId\", \"idType\", \"id\",\n\t\t\t\t\t\"In getPartnersFtmChipDetails method of FTPChipDetailServiceImpl - \" + ex.getMessage());\n\t\t\tString errorCode = ErrorCode.FTM_CHIP_DETAILS_LIST_FETCH_ERROR.getErrorCode();\n\t\t\tString errorMessage = ErrorCode.FTM_CHIP_DETAILS_LIST_FETCH_ERROR.getErrorMessage();\n\t\t\tresponseWrapper.setErrors(MultiPartnerUtil.setErrorResponse(errorCode, errorMessage));\n\t\t}\n\t\tresponseWrapper.setId(getPartnersFtmChipDetailsId);\n\t\tresponseWrapper.setVersion(VERSION);\n\t\treturn responseWrapper;\n\t}\n\n\tprivate Page getFtmChipDetails(String sortFieldName, String sortType, Integer pageNo,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t Integer pageSize, FtmChipFilterDto filterDto, Pageable pageable) {\n\t\t//Sorting\n\t\tif (Objects.nonNull(sortFieldName) && Objects.nonNull(sortType)) {\n\t\t\t//sorting handling for the 'status' field\n\t\t\tif (sortFieldName.equals(\"status\") && sortType.equalsIgnoreCase(PartnerConstants.ASC)) {\n\t\t\t\treturn ftmDetailsSummaryRepository.\n\t\t\t\t\t\tgetSummaryOfPartnersFtmDetailsByStatusAsc(filterDto.getPartnerId(), filterDto.getOrgName(),\n\t\t\t\t\t\t\t\tfilterDto.getFtmId(), filterDto.getMake(), filterDto.getModel(), filterDto.getStatus(), pageable);\n\t\t\t} else if (sortFieldName.equals(\"status\") && sortType.equalsIgnoreCase(PartnerConstants.DESC)) {\n\t\t\t\treturn ftmDetailsSummaryRepository.\n\t\t\t\t\t\tgetSummaryOfPartnersFtmDetailsByStatusDesc(filterDto.getPartnerId(), filterDto.getOrgName(),\n\t\t\t\t\t\t\t\tfilterDto.getFtmId(), filterDto.getMake(), filterDto.getModel(), filterDto.getStatus(), pageable);\n\t\t\t}\n\t\t\t//Sorting for other fields\n\t\t\tSort sort = partnerHelper.getSortingRequest(getSortColumn(partnerHelper.ftmAliasToColumnMap, sortFieldName), sortType);\n\t\t\tpageable = PageRequest.of(pageNo, pageSize, sort);\n\t\t}\n\t\t//Default\n\t\treturn ftmDetailsSummaryRepository.getSummaryOfPartnersFtmDetails(filterDto.getPartnerId(), filterDto.getOrgName(),\n\t\t\t\tfilterDto.getFtmId(), filterDto.getMake(), filterDto.getModel(), filterDto.getStatus(), pageable);\n\t}\n\n\t@Override\n\tpublic ResponseWrapperV2> ftmChipDetail() {\n\t\tResponseWrapperV2> responseWrapper = new ResponseWrapperV2<>();\n\t\ttry {\n\t\t\tString userId = getUserId();\n\t\t\tList partnerList = partnerRepository.findByUserId(userId);\n\t\t\tList ftmChipDetailsDtoList = new ArrayList<>();\n\t\t\tif (!partnerList.isEmpty()) {\n\t\t\t\tfor (Partner partner : partnerList) {\n\t\t\t\t\tif (partnerHelper.checkIfPartnerIsFtmPartner(partner)) {\n\t\t\t\t\t\tpartnerHelper.validatePartnerId(partner, userId);\n\t\t\t\t\t\tString partnerStatus = getPartnerStatus(partner);\n\t\t\t\t\t\tList ftpChipDetailList = ftpChipDetailRepository.findByProviderId(partner.getId());\n\t\t\t\t\t\tif(!ftpChipDetailList.isEmpty()) {\n\t\t\t\t\t\t\tfor(FTPChipDetail ftpChipDetail: ftpChipDetailList) {\n\t\t\t\t\t\t\t\tFtmChipDetailsDto ftmChipDetailsDto = new FtmChipDetailsDto();\n\t\t\t\t\t\t\t\t// Get certificate data if available\n\t\t\t\t\t\t\t\tif (ftpChipDetail.getCertificateAlias() != null) {\n\t\t\t\t\t\t\t\t\tftmChipDetailsDto.setIsCertificateAvailable(true);\n\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\tif (isCaSignedPartnerCertificateAvailable) {\n\t\t\t\t\t\t\t\t\t\t\tFtmCertificateDownloadResponseDto responseObject = partnerHelper.getCertificate(ftpChipDetail.getCertificateAlias(), \"pmp.partner.original.certificate.get.rest.uri\", FtmCertificateDownloadResponseDto.class);\n\t\t\t\t\t\t\t\t\t\t\tpartnerHelper.populateFtmCertificateExpiryState(responseObject);\n\t\t\t\t\t\t\t\t\t\t\tftmChipDetailsDto.setCertificateUploadDateTime(responseObject.getMosipSignedCertUploadDateTime());\n\t\t\t\t\t\t\t\t\t\t\tftmChipDetailsDto.setCertificateExpiryDateTime(responseObject.getCaSignedCertExpiryDateTime());\n\t\t\t\t\t\t\t\t\t\t\tftmChipDetailsDto.setIsCertificateExpired(responseObject.getIsCaSignedCertificateExpired());\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\tFtpCertDownloadResponeDto responeDto = partnerHelper.getCertificate(ftpChipDetail.getCertificateAlias(), \"pmp.partner.certificaticate.get.rest.uri\", FtpCertDownloadResponeDto.class);\n\t\t\t\t\t\t\t\t\t\t\tX509Certificate cert = MultiPartnerUtil.decodeCertificateData(responeDto.getCertificateData());\n\t\t\t\t\t\t\t\t\t\t\tftmChipDetailsDto.setCertificateUploadDateTime(cert.getNotBefore().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime());\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t} catch (ApiAccessibleException ex) {\n\t\t\t\t\t\t\t\t\t\tif (ex.getErrorCode().equals(\"KER-PCM-012\")) {\n\t\t\t\t\t\t\t\t\t\t\tLOGGER.info(\"Error from keymgr: \" + ex.getMessage());\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\tthrow new ApiAccessibleException(ex.getErrorCode(), ex.getMessage());\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tftmChipDetailsDto.setIsCertificateAvailable(false);\n\t\t\t\t\t\t\t\t\tftmChipDetailsDto.setIsCertificateExpired(false);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tftmChipDetailsDto.setFtmId(ftpChipDetail.getFtpChipDetailId());\n\t\t\t\t\t\t\t\tftmChipDetailsDto.setPartnerId(ftpChipDetail.getFtpProviderId());\n\t\t\t\t\t\t\t\tftmChipDetailsDto.setPartnerStatus(partnerStatus);\n\t\t\t\t\t\t\t\tftmChipDetailsDto.setMake(ftpChipDetail.getMake());\n\t\t\t\t\t\t\t\tftmChipDetailsDto.setModel(ftpChipDetail.getModel());\n\t\t\t\t\t\t\t\tftmChipDetailsDto.setStatus(ftpChipDetail.getApprovalStatus());\n\t\t\t\t\t\t\t\tftmChipDetailsDto.setIsActive(ftpChipDetail.isActive());\n\t\t\t\t\t\t\t\tftmChipDetailsDto.setCreatedDateTime(ftpChipDetail.getCrDtimes());\n\t\t\t\t\t\t\t\tftmChipDetailsDtoList.add(ftmChipDetailsDto);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tresponseWrapper.setResponse(ftmChipDetailsDtoList);\n\t\t} catch (ApiAccessibleException ex) {\n\t\t\tLOGGER.info(\"sessionId\", \"idType\", \"id\", \"In ftmChipDetails method of FTPChipDetailServiceImpl - \" + ex.getMessage());\n\t\t\tresponseWrapper.setErrors(MultiPartnerUtil.setErrorResponse(ex.getErrorCode(), ex.getErrorText()));\n\t\t} catch (PartnerServiceException ex) {\n\t\t\tLOGGER.info(\"sessionId\", \"idType\", \"id\", \"In ftmChipDetail method of FTPChipDetailServiceImpl - \" + ex.getMessage());\n\t\t\tresponseWrapper.setErrors(MultiPartnerUtil.setErrorResponse(ex.getErrorCode(), ex.getErrorText()));\n\t\t} catch (Exception ex) {\n\t\t\tLOGGER.debug(\"sessionId\", \"idType\", \"id\", ex.getStackTrace());\n\t\t\tLOGGER.error(\"sessionId\", \"idType\", \"id\",\n\t\t\t\t\t\"In ftmChipDetail method of FTPChipDetailServiceImpl - \" + ex.getMessage());\n\t\t\tString errorCode = ErrorCode.FTM_CHIP_DETAILS_LIST_FETCH_ERROR.getErrorCode();\n\t\t\tString errorMessage = ErrorCode.FTM_CHIP_DETAILS_LIST_FETCH_ERROR.getErrorMessage();\n\t\t\tresponseWrapper.setErrors(MultiPartnerUtil.setErrorResponse(errorCode, errorMessage));\n\t\t}\n\t\tresponseWrapper.setId(getFtmChipDetailsId);\n\t\tresponseWrapper.setVersion(VERSION);\n\t\treturn responseWrapper;\n\t}\n\n\tpublic String getPartnerStatus(Partner partner) {\n\t\tif(partner.getApprovalStatus().equals(APPROVED) && partner.getIsActive()) {\n\t\t\treturn APPROVED;\n\t\t} else if (partner.getApprovalStatus().equals(APPROVED) && !partner.getIsActive()) {\n\t\t\treturn DEACTIVATED;\n\t\t} else {\n\t\t\treturn partner.getApprovalStatus();\n\t\t}\n\t}\n\n\tpublic String getSortColumn(Map aliasToColumnMap, String alias) {\n\t\treturn aliasToColumnMap.getOrDefault(alias, alias); // Return alias if no match found\n\t}\n\n\tpublic static void validateFtmId(String ftmId) {\n\t\tif (Objects.isNull(ftmId) || ftmId.equals(BLANK_STRING)) {\n\t\t\tLOGGER.info(\"sessionId\", \"idType\", \"id\", \"FTM id is null or empty.\");\n\t\t\tthrow new PartnerServiceException(ErrorCode.INVALID_FTM_ID.getErrorCode(),\n\t\t\t\t\tErrorCode.INVALID_FTM_ID.getErrorMessage());\n\t\t}\n\t}\n\n\tpublic static void validateFtmChipDetail(Optional ftmChipDetail) {\n\t\tif (!ftmChipDetail.isPresent()) {\n\t\t\tLOGGER.error(\"FTM Details not exists\");\n\t\t\tthrow new PartnerServiceException(ErrorCode.FTM_NOT_EXISTS.getErrorCode(),\n\t\t\t\t\tErrorCode.FTM_NOT_EXISTS.getErrorMessage());\n\t\t}\n\t}\n\n\tpublic Partner getAssociatedPartner(List partnerList, FTPChipDetail ftm, String userId) {\n\t\tString ftmProviderId = ftm.getFtpProviderId();\n\t\tboolean ftmProviderExist = false;\n\t\tPartner partnerDetails = null;\n\n\t\tfor (Partner partner : partnerList) {\n\t\t\tif (partner.getId().equals(ftmProviderId)) {\n\t\t\t\tvalidatePartnerId(partner, userId);\n\t\t\t\tftmProviderExist = true;\n\t\t\t\tpartnerDetails = partner;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tif (!ftmProviderExist) {\n\t\t\tLOGGER.info(\"sessionId\", \"idType\", \"id\", \"FTM is not associated with user.\");\n\t\t\tthrow new PartnerServiceException(ErrorCode.FTM_NOT_ASSOCIATED_WITH_USER.getErrorCode(),\n\t\t\t\t\tErrorCode.FTM_NOT_ASSOCIATED_WITH_USER.getErrorMessage());\n\t\t}\n\n\t\treturn partnerDetails;\n\t}\n\n\tpublic static void validatePartnerId(Partner partner, String userId) {\n\t\tif (Objects.isNull(partner.getId()) || partner.getId().equals(BLANK_STRING)) {\n\t\t\tLOGGER.info(\"Partner Id is null or empty for user id : \" + userId);\n\t\t\tthrow new PartnerServiceException(ErrorCode.PARTNER_ID_NOT_EXISTS.getErrorCode(),\n\t\t\t\t\tErrorCode.PARTNER_ID_NOT_EXISTS.getErrorMessage());\n\t\t}\n\t}\n\n\tprivate AuthUserDetails authUserDetails() {\n\t\treturn (AuthUserDetails) SecurityContextHolder.getContext().getAuthentication().getPrincipal();\n\t}\n\n\tprivate String getUserId() {\n\t\tString userId = authUserDetails().getUserId();\n\t\treturn userId;\n\t}\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/device/authdevice/service/impl/SecureBiometricInterfaceServiceImpl.java", + "title": "SecureBiometricInterfaceServiceImpl.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/device/authdevice/service/impl/SecureBiometricInterfaceServiceImpl.java", + "language": "java", + "content": "package io.mosip.pms.device.authdevice.service.impl;\n\nimport java.sql.Timestamp;\nimport java.time.LocalDate;\nimport java.time.LocalDateTime;\nimport java.time.ZoneId;\nimport java.util.ArrayList;\nimport java.util.List;\nimport java.util.Optional;\nimport java.util.UUID;\nimport java.util.Objects;\nimport java.util.Map;\nimport java.util.stream.Collectors;\n\nimport io.mosip.kernel.core.authmanager.authadapter.model.AuthUserDetails;\nimport io.mosip.kernel.core.logger.spi.Logger;\nimport io.mosip.pms.common.response.dto.ResponseWrapperV2;\nimport io.mosip.pms.common.util.MapperUtils;\nimport io.mosip.pms.common.util.PMSLogger;\nimport io.mosip.pms.device.authdevice.entity.SbiSummaryEntity;\nimport io.mosip.pms.device.authdevice.repository.SbiSummaryRepository;\nimport io.mosip.pms.device.dto.SbiFilterDto;\nimport io.mosip.pms.device.util.DeviceHelper;\nimport io.mosip.pms.device.util.DeviceUtil;\nimport io.mosip.pms.partner.constant.ErrorCode;\nimport io.mosip.pms.partner.constant.PartnerConstants;\nimport io.mosip.pms.partner.dto.DeviceDto;\nimport io.mosip.pms.device.dto.SbiDetailsDto;\nimport io.mosip.pms.partner.exception.PartnerServiceException;\nimport io.mosip.pms.device.response.dto.SbiDetailsResponseDto;\nimport io.mosip.pms.partner.util.MultiPartnerUtil;\nimport io.mosip.pms.partner.util.PartnerHelper;\nimport io.mosip.pms.partner.util.PartnerUtil;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.beans.factory.annotation.Value;\nimport org.springframework.data.domain.Page;\nimport org.springframework.data.domain.PageRequest;\nimport org.springframework.data.domain.Pageable;\nimport org.springframework.data.domain.Sort;\nimport org.springframework.security.core.Authentication;\nimport org.springframework.security.core.context.SecurityContextHolder;\nimport org.springframework.stereotype.Component;\nimport org.springframework.transaction.annotation.Transactional;\n\nimport io.mosip.kernel.core.util.EmptyCheckUtils;\nimport io.mosip.pms.common.constant.CommonConstant;\nimport io.mosip.pms.common.dto.FilterData;\nimport io.mosip.pms.common.dto.FilterDto;\nimport io.mosip.pms.common.dto.FilterValueDto;\nimport io.mosip.pms.common.dto.PageResponseDto;\nimport io.mosip.pms.common.dto.SearchFilter;\nimport io.mosip.pms.common.dto.PageResponseV2Dto;\nimport io.mosip.pms.common.entity.DeviceDetailSBI;\nimport io.mosip.pms.common.entity.DeviceDetailSBIPK;\nimport io.mosip.pms.common.entity.Partner;\nimport io.mosip.pms.common.exception.RequestException;\nimport io.mosip.pms.common.helper.FilterHelper;\nimport io.mosip.pms.common.helper.SearchHelper;\nimport io.mosip.pms.common.repository.DeviceDetailSbiRepository;\nimport io.mosip.pms.common.repository.PartnerServiceRepository;\nimport io.mosip.pms.common.util.PageUtils;\nimport io.mosip.pms.common.validator.FilterColumnValidator;\nimport io.mosip.pms.device.authdevice.entity.DeviceDetail;\nimport io.mosip.pms.device.authdevice.entity.SecureBiometricInterface;\nimport io.mosip.pms.device.authdevice.entity.SecureBiometricInterfaceHistory;\nimport io.mosip.pms.device.authdevice.entity.RegistrationDeviceSubType;\nimport io.mosip.pms.device.authdevice.repository.DeviceDetailRepository;\nimport io.mosip.pms.device.authdevice.repository.SecureBiometricInterfaceHistoryRepository;\nimport io.mosip.pms.device.authdevice.repository.SecureBiometricInterfaceRepository;\nimport io.mosip.pms.device.authdevice.repository.RegistrationDeviceSubTypeRepository;\nimport io.mosip.pms.device.authdevice.service.SecureBiometricInterfaceService;\nimport io.mosip.pms.device.constant.DeviceConstant;\nimport io.mosip.pms.device.constant.DeviceDetailExceptionsConstant;\nimport io.mosip.pms.device.constant.SecureBiometricInterfaceConstant;\nimport io.mosip.pms.device.request.dto.DeviceDetailSBIMappingDto;\nimport io.mosip.pms.device.request.dto.DeviceSearchDto;\nimport io.mosip.pms.device.request.dto.SecureBiometricInterfaceCreateDto;\nimport io.mosip.pms.device.request.dto.SecureBiometricInterfaceStatusUpdateDto;\nimport io.mosip.pms.device.request.dto.SecureBiometricInterfaceUpdateDto;\nimport io.mosip.pms.device.request.dto.DeviceDetailDto;\nimport io.mosip.pms.device.request.dto.DeactivateSbiRequestDto;\nimport io.mosip.pms.device.response.dto.ColumnCodeValue;\nimport io.mosip.pms.device.response.dto.FilterResponseCodeDto;\nimport io.mosip.pms.device.response.dto.IdDto;\nimport io.mosip.pms.device.response.dto.MappedDeviceDetailsReponse;\nimport io.mosip.pms.device.response.dto.SbiSearchResponseDto;\nimport io.mosip.pms.device.response.dto.SbiSummaryDto;\nimport io.mosip.pms.device.util.AuditUtil;\n\n@Component\n@Transactional\npublic class SecureBiometricInterfaceServiceImpl implements SecureBiometricInterfaceService {\n\n\tprivate static final Logger LOGGER = PMSLogger.getLogger(SecureBiometricInterfaceServiceImpl.class);\n\tpublic static final String BLANK_STRING = \"\";\n\tpublic static final String VERSION = \"1.0\";\n\tpublic static final String DEVICE_PROVIDER = \"Device_Provider\";\n\tpublic static final String APPROVED = \"approved\";\n\tpublic static final String REJECTED = \"rejected\";\n\tpublic static final String PENDING_APPROVAL = \"pending_approval\";\n\n\t@Value(\"${mosip.pms.api.id.sbi.devices.get}\")\n\tprivate String getSbiDevicesId;\n\n\t@Value(\"${mosip.pms.api.id.deactivate.sbi.patch}\")\n\tprivate String patchDeactivateSbi;\n\n\t@Value(\"${mosip.pms.api.id.all.sbi.details.get}\")\n\tprivate String getAllSbiDetails;\n\n\t@Value(\"${mosip.pms.api.id.sbi.details.get}\")\n\tprivate String getSbiDetailsId;\n\n\t@Value(\"${mosip.pms.api.id.add.device.to.sbi.id.post}\")\n\tprivate String postAddDeviceToSbi;\n\n\t@Autowired\n\tDeviceDetailRepository deviceDetailRepository;\n\n\t@Autowired\n\tRegistrationDeviceSubTypeRepository registrationDeviceSubTypeRepository;\n\n\t@Autowired\n\tAuditUtil auditUtil;\n\n\t@Autowired\n\tSecureBiometricInterfaceRepository sbiRepository;\n\n\t@Autowired\n\tSecureBiometricInterfaceHistoryRepository sbiHistoryRepository;\n\n\t@Autowired\n\tSearchHelper searchHelper;\n\n\t@Autowired\n\tprivate PageUtils pageUtils;\n\t\n\t@Autowired\n\tPartnerServiceRepository partnerRepository;\n\t\n\t@Autowired\n\tDeviceDetailSbiRepository deviceDetailSbiRepository;\n\n\t@Autowired\n\tSbiSummaryRepository sbiSummaryRepository;\n\n\t@Autowired\n\tFilterColumnValidator filterColumnValidator;\n\n\t@Autowired\n\tFilterHelper filterHelper;\n\n\t@Autowired\n\tPartnerHelper partnerHelper;\n\n\t@Autowired\n\tDeviceHelper deviceHelper;\n\n\t@Value(\"${mosip.pms.expiry.date.max.year}\")\n\tprivate int maxAllowedExpiryYear;\n\n\t@Value(\"${mosip.pms.created.date.max.year}\")\n\tprivate int maxAllowedCreatedYear;\n\t\n\t@Override\n\tpublic IdDto createSecureBiometricInterface(SecureBiometricInterfaceCreateDto sbiDto) {\n\t\tSecureBiometricInterface sbi = null;\n\t\tSecureBiometricInterface entity = new SecureBiometricInterface();\n\t\tIdDto dto = new IdDto();\n\t\tvalidateDates(sbiDto.getSwCreateDateTime(),sbiDto.getSwExpiryDateTime());\n\t\tPartner partner = partnerRepository.findByIdAndIsDeletedFalseorIsDeletedIsNullAndIsActiveTrue(\n\t\t\t\tsbiDto.getProviderId());\n\t\tif (partner == null) {\n\t\t\tauditUtil.auditRequest(\n\t\t\t\t\tString.format(DeviceConstant.FAILURE_CREATE, SecureBiometricInterface.class.getCanonicalName()),\n\t\t\t\t\tDeviceConstant.AUDIT_SYSTEM,\n\t\t\t\t\tString.format(DeviceConstant.FAILURE_DESC,\n\t\t\t\t\t\t\tDeviceDetailExceptionsConstant.DEVICE_PROVIDER_NOT_FOUND.getErrorCode(),\n\t\t\t\t\t\t\tDeviceDetailExceptionsConstant.DEVICE_PROVIDER_NOT_FOUND.getErrorMessage()),\n\t\t\t\t\t\"AUT-003\", sbiDto.getProviderId(), \"partnerId\");\n\t\t\tthrow new RequestException(DeviceDetailExceptionsConstant.DEVICE_PROVIDER_NOT_FOUND.getErrorCode(),\n\t\t\t\t\tDeviceDetailExceptionsConstant.DEVICE_PROVIDER_NOT_FOUND.getErrorMessage());\n\t\t}\t\t\n\t\tList existsRecordsFromDb = sbiRepository.findByProviderIdAndSwVersion(sbiDto.getProviderId(), PartnerUtil.trimAndReplace(sbiDto.getSwVersion()));\n\t\tif(existsRecordsFromDb.size() > 0) {\n\t\t\tauditUtil.auditRequest(\n\t\t\t\t\tString.format(DeviceConstant.FAILURE_CREATE, SecureBiometricInterface.class.getCanonicalName()),\n\t\t\t\t\tDeviceConstant.AUDIT_SYSTEM,\n\t\t\t\t\tString.format(DeviceConstant.FAILURE_DESC,\n\t\t\t\t\t\t\tSecureBiometricInterfaceConstant.SBI_RECORDS_EXISTS.getErrorCode(),\n\t\t\t\t\t\t\tSecureBiometricInterfaceConstant.SBI_RECORDS_EXISTS.getErrorMessage()),\n\t\t\t\t\t\"AUT-005\", sbiDto.getProviderId(), \"partnerId\");\n\t\t\tthrow new RequestException(SecureBiometricInterfaceConstant.SBI_RECORDS_EXISTS.getErrorCode(),\n\t\t\t\t\tSecureBiometricInterfaceConstant.SBI_RECORDS_EXISTS.getErrorMessage());\n\t\t}\n\t\tentity.setProviderId(partner.getId());\n\t\tentity.setPartnerOrgName(partner.getName());\n\t\tString id = UUID.randomUUID().toString();\n\t\tentity.setId(id);\n\t\tbyte[] swNinaryHashArr = sbiDto.getSwBinaryHash().getBytes();\n\t\tentity.setSwBinaryHash(swNinaryHashArr);\n\t\tentity.setActive(false);\n\t\tentity.setDeleted(false);\n\t\tentity = getCreateMapping(entity, sbiDto);\n\t\tsbi = sbiRepository.save(entity);\n\t\tdto.setId(sbi.getId());\n\t\tSecureBiometricInterfaceHistory history = new SecureBiometricInterfaceHistory();\n\t\thistory = getCreateHistoryMapping(history, sbi);\n\t\tsbiHistoryRepository.save(history);\n\t\treturn dto;\n\t}\n\n\tprivate SecureBiometricInterface getCreateMapping(SecureBiometricInterface entity,\n\t\t\tSecureBiometricInterfaceCreateDto dto) {\n\t\tentity.setActive(false);\n\t\tentity.setDeleted(false);\n\t\tentity.setApprovalStatus(CommonConstant.PENDING_APPROVAL);\n\t\tAuthentication authN = SecurityContextHolder.getContext().getAuthentication();\n\t\tif (!EmptyCheckUtils.isNullEmpty(authN)) {\n\t\t\tentity.setCrBy(authN.getName());\n\t\t}\n\t\tentity.setCrDtimes(LocalDateTime.now(ZoneId.of(\"UTC\")));\n\t\tentity.setSwVersion(dto.getSwVersion());\n\t\tentity.setSwCreateDateTime(dto.getSwCreateDateTime());\n\t\tentity.setSwExpiryDateTime(dto.getSwExpiryDateTime());\n\n\t\treturn entity;\n\n\t}\n\n\tprivate SecureBiometricInterfaceHistory getCreateHistoryMapping(SecureBiometricInterfaceHistory historyEntity,\n\t\t\tSecureBiometricInterface entity) {\n\t\thistoryEntity.setId(entity.getId());\n\t\thistoryEntity.setActive(entity.isActive());\n\t\thistoryEntity.setDeleted(entity.isDeleted() == null ? false: entity.isDeleted());\n\t\thistoryEntity.setApprovalStatus(entity.getApprovalStatus());\n\t\thistoryEntity.setCrBy(entity.getCrBy());\n\t\thistoryEntity.setEffectDateTime(entity.getCrDtimes());\n\t\thistoryEntity.setCrDtimes(entity.getCrDtimes());\n\t\thistoryEntity.setSwVersion(entity.getSwVersion());\n\t\thistoryEntity.setSwCreateDateTime(entity.getSwCreateDateTime());\n\t\thistoryEntity.setSwExpiryDateTime(entity.getSwExpiryDateTime());\n\t\thistoryEntity.setSwBinaryHAsh(entity.getSwBinaryHash());\n\t\thistoryEntity.setProviderId(entity.getProviderId());\n\t\thistoryEntity.setPartnerOrgName(entity.getPartnerOrgName());\n\t\treturn historyEntity;\n\n\t}\n\n\t@Override\n\tpublic IdDto updateSecureBiometricInterface(SecureBiometricInterfaceUpdateDto sbiupdateDto) {\n\t\tSecureBiometricInterface sbi = null;\n\t\tSecureBiometricInterface entity = new SecureBiometricInterface();\n\t\tIdDto dto = new IdDto();\n\t\tvalidateDates(sbiupdateDto.getSwCreateDateTime(), sbiupdateDto.getSwExpiryDateTime());\n\t\tentity = sbiRepository.findByIdAndIsDeletedFalseOrIsDeletedIsNull(sbiupdateDto.getId());\n\t\tif (entity == null) {\n\t\t\tauditUtil.auditRequest(\n\t\t\t\t\tString.format(DeviceConstant.FAILURE_UPDATE, SecureBiometricInterface.class.getCanonicalName()),\n\t\t\t\t\tDeviceConstant.AUDIT_SYSTEM,\n\t\t\t\t\tString.format(DeviceConstant.FAILURE_DESC,\n\t\t\t\t\t\t\tSecureBiometricInterfaceConstant.SBI_NOT_FOUND.getErrorCode(), String.format(\n\t\t\t\t\t\t\t\t\tSecureBiometricInterfaceConstant.SBI_NOT_FOUND.getErrorMessage(), dto.getId())),\n\t\t\t\t\t\"AUT-016\", sbiupdateDto.getId(), \"sbiId\");\n\t\t\tthrow new RequestException(SecureBiometricInterfaceConstant.SBI_NOT_FOUND.getErrorCode(),\n\t\t\t\t\tString.format(SecureBiometricInterfaceConstant.SBI_NOT_FOUND.getErrorMessage(), dto.getId()));\n\t\t}\t\t\n\t\tList existsRecordsFromDb = sbiRepository.findByProviderIdAndSwVersion(entity.getProviderId(), sbiupdateDto.getSwVersion());\n\t\tif(!existsRecordsFromDb.isEmpty() && !existsRecordsFromDb.stream().anyMatch(s->s.getId().equals(sbiupdateDto.getId()))) {\n\t\t\tauditUtil.auditRequest(\n\t\t\t\t\tString.format(DeviceConstant.FAILURE_CREATE, SecureBiometricInterface.class.getCanonicalName()),\n\t\t\t\t\tDeviceConstant.AUDIT_SYSTEM,\n\t\t\t\t\tString.format(DeviceConstant.FAILURE_DESC,\n\t\t\t\t\t\t\tSecureBiometricInterfaceConstant.SBI_RECORDS_EXISTS.getErrorCode(),\n\t\t\t\t\t\t\tSecureBiometricInterfaceConstant.SBI_RECORDS_EXISTS.getErrorMessage()),\n\t\t\t\t\t\"AUT-005\", sbiupdateDto.getId(), \"sbiId\");\n\t\t\tthrow new RequestException(SecureBiometricInterfaceConstant.SBI_RECORDS_EXISTS.getErrorCode(),\n\t\t\t\t\tSecureBiometricInterfaceConstant.SBI_RECORDS_EXISTS.getErrorMessage());\n\t\t}\n\t\tentity.setId(sbiupdateDto.getId());\n\t\tbyte[] swNinaryHashArr = sbiupdateDto.getSwBinaryHash().getBytes();\n\t\tentity.setSwBinaryHash(swNinaryHashArr);\t\t\n\t\tentity = getUpdateMapping(entity, sbiupdateDto);\n\t\tsbi = sbiRepository.save(entity);\n\t\tdto.setId(sbi.getId());\n\t\tSecureBiometricInterfaceHistory history = new SecureBiometricInterfaceHistory();\n\t\thistory = getUpdateHistoryMapping(history, sbi);\n\t\tsbiHistoryRepository.save(history);\n\t\treturn dto;\n\t}\n\n\tprivate SecureBiometricInterface getUpdateMapping(SecureBiometricInterface entity,\n\t\t\tSecureBiometricInterfaceUpdateDto dto) {\n\t\tentity.setActive(dto.getIsActive());\n\t\tAuthentication authN = SecurityContextHolder.getContext().getAuthentication();\n\t\tif (!EmptyCheckUtils.isNullEmpty(authN)) {\n\t\t\tentity.setUpdBy(authN.getName());\n\t\t}\n\t\tentity.setDeleted(false);\n\t\tentity.setUpdDtimes(LocalDateTime.now(ZoneId.of(\"UTC\")));\n\t\tentity.setSwVersion(dto.getSwVersion());\n\t\tentity.setSwCreateDateTime(dto.getSwCreateDateTime());\n\t\tentity.setSwExpiryDateTime(dto.getSwExpiryDateTime());\n\t\treturn entity;\n\t}\n\n\tprivate SecureBiometricInterfaceHistory getUpdateHistoryMapping(SecureBiometricInterfaceHistory historyEntity,\n\t\t\tSecureBiometricInterface entity) {\n\t\thistoryEntity.setId(entity.getId());\n\t\thistoryEntity.setActive(entity.isActive());\n\t\thistoryEntity.setApprovalStatus(entity.getApprovalStatus());\n\t\thistoryEntity.setCrBy(entity.getUpdBy());\n\t\thistoryEntity.setEffectDateTime(entity.getUpdDtimes());\n\t\thistoryEntity.setCrDtimes(entity.getUpdDtimes());\n\t\thistoryEntity.setSwVersion(entity.getSwVersion());\n\t\thistoryEntity.setSwCreateDateTime(entity.getSwCreateDateTime());\n\t\thistoryEntity.setSwExpiryDateTime(entity.getSwExpiryDateTime());\n\t\thistoryEntity.setSwBinaryHAsh(entity.getSwBinaryHash());\n\t\thistoryEntity.setProviderId(entity.getProviderId());\n\t\thistoryEntity.setPartnerOrgName(entity.getPartnerOrgName());\n\t\treturn historyEntity;\n\t}\n\n\t@Override\n\tpublic String updateSecureBiometricInterfaceStatus(\n\t\t\tSecureBiometricInterfaceStatusUpdateDto secureBiometricInterfaceDto) {\n\t\tSecureBiometricInterface entity = sbiRepository\n\t\t\t\t.findByIdAndIsDeletedFalseOrIsDeletedIsNull(secureBiometricInterfaceDto.getId());\n\t\tif (entity == null) {\n\t\t\tauditUtil.auditRequest(\n\t\t\t\t\tString.format(DeviceConstant.FAILURE_UPDATE, SecureBiometricInterface.class.getCanonicalName()),\n\t\t\t\t\tDeviceConstant.AUDIT_SYSTEM,\n\t\t\t\t\tString.format(DeviceConstant.FAILURE_DESC,\n\t\t\t\t\t\t\tSecureBiometricInterfaceConstant.SBI_NOT_FOUND.getErrorCode(),\n\t\t\t\t\t\t\tString.format(SecureBiometricInterfaceConstant.SBI_NOT_FOUND.getErrorMessage(),\n\t\t\t\t\t\t\t\t\tsecureBiometricInterfaceDto.getId())),\n\t\t\t\t\t\"AUT-016\", secureBiometricInterfaceDto.getId(), \"sbiId\");\n\t\t\tthrow new RequestException(SecureBiometricInterfaceConstant.SBI_NOT_FOUND.getErrorCode(),\n\t\t\t\t\tString.format(SecureBiometricInterfaceConstant.SBI_NOT_FOUND.getErrorMessage(),\n\t\t\t\t\t\t\tsecureBiometricInterfaceDto.getId()));\n\t\t}\n\t\tif (entity.getApprovalStatus().equals(DeviceConstant.APPROVED) && entity.isActive()) {\n\t\t\tauditUtil.auditRequest(\n\t\t\t\t\tString.format(DeviceConstant.FAILURE_UPDATE, SecureBiometricInterface.class.getCanonicalName()),\n\t\t\t\t\tDeviceConstant.AUDIT_SYSTEM,\n\t\t\t\t\tString.format(DeviceConstant.FAILURE_DESC,\n\t\t\t\t\t\t\tSecureBiometricInterfaceConstant.SBI_ALREADY_APPROVED.getErrorCode(),\n\t\t\t\t\t\t\tString.format(SecureBiometricInterfaceConstant.SBI_ALREADY_APPROVED.getErrorMessage(),\n\t\t\t\t\t\t\t\t\tsecureBiometricInterfaceDto.getId())),\n\t\t\t\t\t\"AUT-016\", secureBiometricInterfaceDto.getId(), \"sbiId\");\n\t\t\tthrow new RequestException(SecureBiometricInterfaceConstant.SBI_ALREADY_APPROVED.getErrorCode(),\n\t\t\t\t\tString.format(SecureBiometricInterfaceConstant.SBI_ALREADY_APPROVED.getErrorMessage(),\n\t\t\t\t\t\t\tsecureBiometricInterfaceDto.getId()));\n\t\t}\n\t\tif (entity.getApprovalStatus().equals(DeviceConstant.REJECTED)) {\n\t\t\tauditUtil.auditRequest(\n\t\t\t\t\tString.format(DeviceConstant.FAILURE_UPDATE, SecureBiometricInterface.class.getCanonicalName()),\n\t\t\t\t\tDeviceConstant.AUDIT_SYSTEM,\n\t\t\t\t\tString.format(DeviceConstant.FAILURE_DESC,\n\t\t\t\t\t\t\tSecureBiometricInterfaceConstant.SBI_ALREADY_REJECTED.getErrorCode(),\n\t\t\t\t\t\t\tString.format(SecureBiometricInterfaceConstant.SBI_ALREADY_REJECTED.getErrorMessage(),\n\t\t\t\t\t\t\t\t\tsecureBiometricInterfaceDto.getId())),\n\t\t\t\t\t\"AUT-016\", secureBiometricInterfaceDto.getId(), \"sbiId\");\n\t\t\tthrow new RequestException(SecureBiometricInterfaceConstant.SBI_ALREADY_REJECTED.getErrorCode(),\n\t\t\t\t\tString.format(SecureBiometricInterfaceConstant.SBI_ALREADY_REJECTED.getErrorMessage(),\n\t\t\t\t\t\t\tsecureBiometricInterfaceDto.getId()));\n\t\t}\n\n\t\tAuthentication authN = SecurityContextHolder.getContext().getAuthentication();\n\t\tif (!EmptyCheckUtils.isNullEmpty(authN)) {\n\t\t\tentity.setUpdBy(authN.getName());\n\t\t\tentity.setUpdDtimes(LocalDateTime.now(ZoneId.of(\"UTC\")));\n\t\t}\n\n\t\tif (secureBiometricInterfaceDto.getApprovalStatus().equals(DeviceConstant.APPROVE)) {\n\t\t\tentity.setApprovalStatus(CommonConstant.APPROVED);\n\t\t\tentity.setActive(true);\n\t\t\tSecureBiometricInterfaceHistory history = new SecureBiometricInterfaceHistory();\n\t\t\thistory = getUpdateHistoryMapping(history, entity);\n\t\t\tsbiHistoryRepository.save(history);\n\t\t\tsbiRepository.save(entity);\n\t\t\treturn \"Secure biometric details approved successfully.\";\n\t\t}\n\t\tif (secureBiometricInterfaceDto.getApprovalStatus().equals(DeviceConstant.REJECT)) {\n\t\t\tentity.setApprovalStatus(CommonConstant.REJECTED);\n\t\t\tentity.setActive(false);\n\t\t\tSecureBiometricInterfaceHistory history = new SecureBiometricInterfaceHistory();\n\t\t\thistory = getUpdateHistoryMapping(history, entity);\n\t\t\tsbiHistoryRepository.save(history);\n\t\t\tsbiRepository.save(entity);\n\t\t\treturn \"Secure biometric details rejected successfully.\";\n\t\t}\n\n\t\tauditUtil.auditRequest(\n\t\t\t\tString.format(DeviceConstant.STATUS_UPDATE_FAILURE, DeviceDetail.class.getCanonicalName()),\n\t\t\t\tDeviceConstant.AUDIT_SYSTEM,\n\t\t\t\tString.format(DeviceConstant.FAILURE_DESC,\n\t\t\t\t\t\tSecureBiometricInterfaceConstant.SBI_STATUS_CODE.getErrorCode(),\n\t\t\t\t\t\tSecureBiometricInterfaceConstant.SBI_STATUS_CODE.getErrorMessage()),\n\t\t\t\t\"AUT-008\", secureBiometricInterfaceDto.getId(), \"sbiId\");\n\t\tthrow new RequestException(SecureBiometricInterfaceConstant.SBI_STATUS_CODE.getErrorCode(),\n\t\t\t\tString.format(SecureBiometricInterfaceConstant.SBI_STATUS_CODE.getErrorMessage(),\n\t\t\t\t\t\tsecureBiometricInterfaceDto.getId()));\n\t}\n\t\n\t@Override\n\tpublic PageResponseDto searchSecureBiometricInterface(Class entity,\n\t\t\tDeviceSearchDto dto) {\n\t\tList sbis = new ArrayList<>();\n\t\tPageResponseDto pageDto = new PageResponseDto<>();\t\t\n\t\tPage page = searchHelper.search(SecureBiometricInterface.class, dto, \"providerId\");\n\t\tif (page.getContent() != null && !page.getContent().isEmpty()) {\n\t\t\t sbis=mapSbiResponse(page.getContent());\n\t\t\t pageDto = pageUtils.sortPage(sbis, dto.getSort(), dto.getPagination(),page.getTotalElements());\n\t\t}\n\t\treturn pageDto;\n\t}\t\n\n\t/**\n\t * \n\t * @param sbiDetails\n\t * @return\n\t */\n\tprivate List mapSbiResponse(List sbiDetails){\n\t\tList response = new ArrayList<>();\n\t\tsbiDetails.forEach(sbi->{\n\t\t\tSbiSearchResponseDto dto = new SbiSearchResponseDto();\t\t\t\t\n\t\t\tdto.setCrBy(sbi.getCrBy());\n\t\t\tdto.setCrDtimes(sbi.getCrDtimes());\n\t\t\tdto.setDelDtimes(sbi.getDelDtimes());\n\t\t\tdto.setUpdBy(sbi.getUpdBy());\n\t\t\tdto.setUpdDtimes(sbi.getUpdDtimes());\n\t\t\tdto.setIsActive(sbi.isActive());\n\t\t\tdto.setDeleted(sbi.isDeleted() == null ? false : sbi.isDeleted());\n\t\t\tdto.setApprovalStatus(sbi.getApprovalStatus());\n\t\t\tdto.setProviderId(sbi.getProviderId());\n\t\t\tdto.setPartnerOrganizationName(sbi.getPartnerOrgName());\n\t\t\tdto.setId(sbi.getId());\n\t\t\tdto.setSwBinaryHash(sbi.getSwBinaryHash());\n\t\t\tdto.setSwCreateDateTime(sbi.getSwCreateDateTime());\n\t\t\tdto.setSwExpiryDateTime(sbi.getSwExpiryDateTime());\n\t\t\tdto.setSwVersion(sbi.getSwVersion());\n\t\t\tresponse.add(dto);\n\t\t});\n\t\treturn response;\n\t}\t\n\t\n\t/**\n\t * Validates the 2 dates\n\t * @param fromDate\n\t * @param toDate\n\t */\n\tprivate void validateDates(LocalDateTime fromDate, LocalDateTime toDate) {\n\t\t// Check if fromDate is in the future\n\t\tif (fromDate.toLocalDate().isAfter(LocalDate.now())) {\n\t\t\tauditUtil.auditRequest(\n\t\t\t\t\tString.format(DeviceConstant.FAILURE_CREATE, SecureBiometricInterface.class.getCanonicalName()),\n\t\t\t\t\tDeviceConstant.AUDIT_SYSTEM,\n\t\t\t\t\tString.format(DeviceConstant.FAILURE_DESC,\n\t\t\t\t\t\t\tSecureBiometricInterfaceConstant.SWCREATEDDATE_SHOULD_BE_PAST_OR_TODAY.getErrorCode(),\n\t\t\t\t\t\t\tSecureBiometricInterfaceConstant.SWCREATEDDATE_SHOULD_BE_PAST_OR_TODAY\n\t\t\t\t\t\t\t\t\t.getErrorMessage()),\n\t\t\t\t\t\"AUT-015\");\n\t\t\tthrow new RequestException(\n\t\t\t\t\tSecureBiometricInterfaceConstant.SWCREATEDDATE_SHOULD_BE_PAST_OR_TODAY.getErrorCode(),\n\t\t\t\t\tSecureBiometricInterfaceConstant.SWCREATEDDATE_SHOULD_BE_PAST_OR_TODAY.getErrorMessage());\n\t\t}\n\t\t// Check if toDate is before or on today's date\n\t\tif (toDate.toLocalDate().isBefore(LocalDate.now()) || toDate.toLocalDate().isEqual(LocalDate.now())) {\n\t\t\tauditUtil.auditRequest(\n\t\t\t\t\tString.format(DeviceConstant.FAILURE_CREATE, SecureBiometricInterface.class.getCanonicalName()),\n\t\t\t\t\tDeviceConstant.AUDIT_SYSTEM,\n\t\t\t\t\tString.format(DeviceConstant.FAILURE_DESC,\n\t\t\t\t\t\t\tSecureBiometricInterfaceConstant.EXPIRYDATE_SHOULD_BE_GREATERTHAN_TODAYSDATE.getErrorCode(),\n\t\t\t\t\t\t\tSecureBiometricInterfaceConstant.EXPIRYDATE_SHOULD_BE_GREATERTHAN_TODAYSDATE\n\t\t\t\t\t\t\t\t\t.getErrorMessage()),\n\t\t\t\t\t\"AUT-015\");\n\t\t\tthrow new RequestException(\n\t\t\t\t\tSecureBiometricInterfaceConstant.EXPIRYDATE_SHOULD_BE_GREATERTHAN_TODAYSDATE.getErrorCode(),\n\t\t\t\t\tSecureBiometricInterfaceConstant.EXPIRYDATE_SHOULD_BE_GREATERTHAN_TODAYSDATE.getErrorMessage());\n\t\t}\n\t\t// Check if fromDate is less than 10 years from today\n\t\tLocalDate maxCreatedYear = LocalDate.now().minusYears(maxAllowedCreatedYear);\n\t\tif (fromDate.toLocalDate().isBefore(maxCreatedYear)) {\n\t\t\tauditUtil.auditRequest(\n\t\t\t\t\tString.format(DeviceConstant.FAILURE_CREATE, SecureBiometricInterface.class.getCanonicalName()),\n\t\t\t\t\tDeviceConstant.AUDIT_SYSTEM,\n\t\t\t\t\tString.format(DeviceConstant.FAILURE_DESC,\n\t\t\t\t\t\t\tSecureBiometricInterfaceConstant.CREATEDDATE_SHOULD_NOT_BE_LESS_THAN_TEN_YEARS.getErrorCode(),\n\t\t\t\t\t\t\tSecureBiometricInterfaceConstant.CREATEDDATE_SHOULD_NOT_BE_LESS_THAN_TEN_YEARS.getErrorMessage(), maxAllowedCreatedYear),\n\t\t\t\t\t\"AUT-015\");\n\t\t\tthrow new RequestException(\n\t\t\t\t\tSecureBiometricInterfaceConstant.CREATEDDATE_SHOULD_NOT_BE_LESS_THAN_TEN_YEARS.getErrorCode(),\n\t\t\t\t\tString.format(SecureBiometricInterfaceConstant.CREATEDDATE_SHOULD_NOT_BE_LESS_THAN_TEN_YEARS.getErrorMessage(), maxAllowedCreatedYear));\n\t\t}\n\t\t// Check if toDate is more than 10 years from today\n\t\tLocalDate maxExpiryYear = LocalDate.now().plusYears(maxAllowedExpiryYear);\n\t\tif (toDate.toLocalDate().isAfter(maxExpiryYear)) {\n\t\t\tauditUtil.auditRequest(\n\t\t\t\t\tString.format(DeviceConstant.FAILURE_CREATE, SecureBiometricInterface.class.getCanonicalName()),\n\t\t\t\t\tDeviceConstant.AUDIT_SYSTEM,\n\t\t\t\t\tString.format(DeviceConstant.FAILURE_DESC,\n\t\t\t\t\t\t\tSecureBiometricInterfaceConstant.EXPIRYDATE_SHOULD_NOT_BE_GREATER_THAN_TEN_YEARS.getErrorCode(),\n\t\t\t\t\t\t\tSecureBiometricInterfaceConstant.EXPIRYDATE_SHOULD_NOT_BE_GREATER_THAN_TEN_YEARS.getErrorMessage(), maxAllowedExpiryYear),\n\t\t\t\t\t\"AUT-015\");\n\t\t\tthrow new RequestException(\n\t\t\t\t\tSecureBiometricInterfaceConstant.EXPIRYDATE_SHOULD_NOT_BE_GREATER_THAN_TEN_YEARS.getErrorCode(),\n\t\t\t\t\tString.format(SecureBiometricInterfaceConstant.EXPIRYDATE_SHOULD_NOT_BE_GREATER_THAN_TEN_YEARS.getErrorMessage(), maxAllowedExpiryYear));\n\t\t}\n\t}\n\n\t@Override\n\tpublic String mapDeviceDetailAndSbi(DeviceDetailSBIMappingDto input) {\n\t\tDeviceDetailSBI deviceDetailFromDb = deviceDetailSbiRepository.findByDeviceDetailAndSbi(input.getDeviceDetailId(), input.getSbiId());\n\t\tif(deviceDetailFromDb != null) {\n\t\t\treturn \"Mapping already exists\";\t\t\t\n\t\t}\n\t\tDeviceDetail validDeviceDetail = deviceDetailRepository.findByIdAndIsDeletedFalseOrIsDeletedIsNull(input.getDeviceDetailId());\n\t\tif (validDeviceDetail == null) {\n\t\t\tauditUtil.auditRequest(\n\t\t\t\t\tString.format(DeviceConstant.FAILURE_UPDATE, DeviceDetail.class.getCanonicalName()),\n\t\t\t\t\tDeviceConstant.AUDIT_SYSTEM,\n\t\t\t\t\tString.format(DeviceConstant.FAILURE_DESC,\n\t\t\t\t\t\t\tDeviceDetailExceptionsConstant.DEVICE_DETAIL_NOT_FOUND.getErrorCode(),\n\t\t\t\t\t\t\tDeviceDetailExceptionsConstant.DEVICE_DETAIL_NOT_FOUND.getErrorMessage()),\n\t\t\t\t\t\"AUT-008\", input.getSbiId(), \"sbiId\");\n\t\t\tthrow new RequestException(DeviceDetailExceptionsConstant.DEVICE_DETAIL_NOT_FOUND.getErrorCode(), String\n\t\t\t\t\t.format(DeviceDetailExceptionsConstant.DEVICE_DETAIL_NOT_FOUND.getErrorMessage(), input.getDeviceDetailId()));\n\t\t}\n\t\tif(!validDeviceDetail.getIsActive() && validDeviceDetail.getApprovalStatus().equalsIgnoreCase(CommonConstant.REJECTED)) {\n\t\t\tauditUtil.auditRequest(\n\t\t\t\t\tString.format(DeviceConstant.FAILURE_UPDATE, DeviceDetail.class.getCanonicalName()),\n\t\t\t\t\tDeviceConstant.AUDIT_SYSTEM,\n\t\t\t\t\tString.format(DeviceConstant.FAILURE_DESC,\n\t\t\t\t\t\t\tDeviceDetailExceptionsConstant.DEVICE_DETAIL_REJECTED.getErrorCode(),\n\t\t\t\t\t\t\tDeviceDetailExceptionsConstant.DEVICE_DETAIL_REJECTED.getErrorMessage()),\n\t\t\t\t\t\"AUT-008\", input.getSbiId(), \"sbiId\");\n\t\t\tthrow new RequestException(DeviceDetailExceptionsConstant.DEVICE_DETAIL_REJECTED.getErrorCode(), String\n\t\t\t\t\t.format(DeviceDetailExceptionsConstant.DEVICE_DETAIL_REJECTED.getErrorMessage(), input.getDeviceDetailId()));\n\t\t}\n\t\tif(!validDeviceDetail.getIsActive()) {\n\t\t\tauditUtil.auditRequest(\n\t\t\t\t\tString.format(DeviceConstant.FAILURE_UPDATE, DeviceDetail.class.getCanonicalName()),\n\t\t\t\t\tDeviceConstant.AUDIT_SYSTEM,\n\t\t\t\t\tString.format(DeviceConstant.FAILURE_DESC,\n\t\t\t\t\t\t\tDeviceDetailExceptionsConstant.DEVICE_DETAIL_NOT_APPROVED.getErrorCode(),\n\t\t\t\t\t\t\tDeviceDetailExceptionsConstant.DEVICE_DETAIL_NOT_APPROVED.getErrorMessage()),\n\t\t\t\t\t\"AUT-008\", input.getSbiId(), \"sbiId\");\n\t\t\tthrow new RequestException(DeviceDetailExceptionsConstant.DEVICE_DETAIL_NOT_APPROVED.getErrorCode(), String\n\t\t\t\t\t.format(DeviceDetailExceptionsConstant.DEVICE_DETAIL_NOT_APPROVED.getErrorMessage(), input.getDeviceDetailId()));\n\t\t}\n\t\tSecureBiometricInterface validSbi = sbiRepository.findByIdAndIsDeletedFalseOrIsDeletedIsNull(input.getSbiId());\n\t\tif (validSbi == null) {\n\t\t\tauditUtil.auditRequest(\n\t\t\t\t\tString.format(DeviceConstant.FAILURE_UPDATE, SecureBiometricInterface.class.getCanonicalName()),\n\t\t\t\t\tDeviceConstant.AUDIT_SYSTEM,\n\t\t\t\t\tString.format(DeviceConstant.FAILURE_DESC,\n\t\t\t\t\t\t\tSecureBiometricInterfaceConstant.SBI_NOT_FOUND.getErrorCode(), String.format(\n\t\t\t\t\t\t\t\t\tSecureBiometricInterfaceConstant.SBI_NOT_FOUND.getErrorMessage(), input.getSbiId())),\n\t\t\t\t\t\"AUT-016\", input.getSbiId(), \"sbiId\");\n\t\t\tthrow new RequestException(SecureBiometricInterfaceConstant.SBI_NOT_FOUND.getErrorCode(),\n\t\t\t\t\tString.format(SecureBiometricInterfaceConstant.SBI_NOT_FOUND.getErrorMessage(), input.getSbiId()));\n\t\t}\t\t\n\t\tif (!validSbi.isActive()) {\n\t\t\tauditUtil.auditRequest(\n\t\t\t\t\tString.format(DeviceConstant.FAILURE_UPDATE, SecureBiometricInterface.class.getCanonicalName()),\n\t\t\t\t\tDeviceConstant.AUDIT_SYSTEM,\n\t\t\t\t\tString.format(DeviceConstant.FAILURE_DESC,\n\t\t\t\t\t\t\tSecureBiometricInterfaceConstant.SBI_NOT_FOUND.getErrorCode(), String.format(\n\t\t\t\t\t\t\t\t\tSecureBiometricInterfaceConstant.SBI_NOT_FOUND.getErrorMessage(), input.getSbiId())),\n\t\t\t\t\t\"AUT-016\", input.getSbiId(), \"sbiId\");\n\t\t\tthrow new RequestException(SecureBiometricInterfaceConstant.SBI_NOT_APPROVED.getErrorCode(),\n\t\t\t\t\tString.format(SecureBiometricInterfaceConstant.SBI_NOT_APPROVED.getErrorMessage(), input.getSbiId()));\n\t\t}\n\t\tif (validSbi.getSwExpiryDateTime().toLocalDate().isBefore(LocalDate.now())) {\n\t\t\tauditUtil.auditRequest(\n\t\t\t\t\tString.format(DeviceConstant.FAILURE_UPDATE, SecureBiometricInterface.class.getCanonicalName()),\n\t\t\t\t\tDeviceConstant.AUDIT_SYSTEM,\n\t\t\t\t\tString.format(DeviceConstant.FAILURE_DESC,\n\t\t\t\t\t\t\tSecureBiometricInterfaceConstant.SBI_NOT_FOUND.getErrorCode(), String.format(\n\t\t\t\t\t\t\t\t\tSecureBiometricInterfaceConstant.SBI_NOT_FOUND.getErrorMessage(), input.getSbiId())),\n\t\t\t\t\t\"AUT-016\", input.getSbiId(), \"sbiId\");\n\t\t\tthrow new RequestException(SecureBiometricInterfaceConstant.SBI_EXPIRED.getErrorCode(),\n\t\t\t\t\tString.format(SecureBiometricInterfaceConstant.SBI_EXPIRED.getErrorMessage(), input.getSbiId()));\n\t\t}\n\t\tif(!validDeviceDetail.getDeviceProviderId().equals(validSbi.getProviderId())) {\n\t\t\tauditUtil.auditRequest(\n\t\t\t\t\tString.format(DeviceConstant.FAILURE_UPDATE, SecureBiometricInterface.class.getCanonicalName()),\n\t\t\t\t\tDeviceConstant.AUDIT_SYSTEM,\n\t\t\t\t\tString.format(DeviceConstant.FAILURE_DESC,\n\t\t\t\t\t\t\tSecureBiometricInterfaceConstant.DD_SBI_PROVIDER_NOT_MATCHING.getErrorCode(), String.format(\n\t\t\t\t\t\t\t\t\tSecureBiometricInterfaceConstant.DD_SBI_PROVIDER_NOT_MATCHING.getErrorMessage(), input.getSbiId())),\n\t\t\t\t\t\"AUT-016\", input.getSbiId(), \"sbiId\");\n\t\t\tthrow new RequestException(SecureBiometricInterfaceConstant.DD_SBI_PROVIDER_NOT_MATCHING.getErrorCode(),\n\t\t\t\t\tString.format(SecureBiometricInterfaceConstant.DD_SBI_PROVIDER_NOT_MATCHING.getErrorMessage(), input.getSbiId()));\t\t\t\n\t\t}\n\t\t\n\t\tDeviceDetailSBI deviceDetailSbiMapping = new DeviceDetailSBI();\n\t\tAuthentication authN = SecurityContextHolder.getContext().getAuthentication();\n\t\tif(authN !=null) {\n\t\t\tdeviceDetailSbiMapping.setCrBy(authN.getName());\n\t\t}\n\t\tdeviceDetailSbiMapping.setProviderId(validSbi.getProviderId());\n\t\tdeviceDetailSbiMapping.setCrDtimes(Timestamp.valueOf(LocalDateTime.now()));\n\t\tDeviceDetailSBIPK deviceDetailSBIKey = new DeviceDetailSBIPK();\n\t\tdeviceDetailSBIKey.setDeviceDetailId(input.getDeviceDetailId());\n\t\tdeviceDetailSBIKey.setSbiId(validSbi.getId());\n\t\tdeviceDetailSbiMapping.setId(deviceDetailSBIKey);\n\t\tdeviceDetailSbiMapping.setIsActive(true);\n\t\tdeviceDetailSbiMapping.setIsDeleted(false);\n\t\tdeviceDetailSbiMapping.setPartnerName(validSbi.getPartnerOrgName());\n\t\tdeviceDetailSbiRepository.save(deviceDetailSbiMapping);\n\t\treturn \"Success\";\n\t}\n\n\t@Override\n\tpublic String deleteDeviceDetailAndSbiMapping(DeviceDetailSBIMappingDto input) {\n\t\tDeviceDetailSBI deviceDetailFromDb = deviceDetailSbiRepository.findByDeviceDetailAndSbi(input.getDeviceDetailId(), input.getSbiId());\n\t\tif(deviceDetailFromDb == null) {\n\t\t\tauditUtil.auditRequest(\n\t\t\t\t\tString.format(DeviceConstant.FAILURE_UPDATE, SecureBiometricInterface.class.getCanonicalName()),\n\t\t\t\t\tDeviceConstant.AUDIT_SYSTEM,\n\t\t\t\t\tString.format(DeviceConstant.FAILURE_DESC,\n\t\t\t\t\t\t\tSecureBiometricInterfaceConstant.DD_SBI_MAPPING_NOT_EXISTS.getErrorCode(), String.format(\n\t\t\t\t\t\t\t\t\tSecureBiometricInterfaceConstant.DD_SBI_MAPPING_NOT_EXISTS.getErrorMessage(), input.getSbiId())),\n\t\t\t\t\t\"AUT-016\", input.getSbiId(), \"sbiId\");\n\t\t\tthrow new RequestException(SecureBiometricInterfaceConstant.DD_SBI_MAPPING_NOT_EXISTS.getErrorCode(),\n\t\t\t\t\tString.format(SecureBiometricInterfaceConstant.DD_SBI_MAPPING_NOT_EXISTS.getErrorMessage(), input.getSbiId()));\t\t\t\n\t\t\t\n\t\t}\n\t\tdeviceDetailSbiRepository.delete(deviceDetailFromDb);\n\t\treturn \"Success\";\n\t}\n\t\n\t@Override\n\tpublic PageResponseDto searchMappedDeviceDetails(Class entity, DeviceSearchDto dto) {\t\t\n\t\tPageResponseDto pageDto = new PageResponseDto<>();\t\n\t\tList mappedRecords = new ArrayList<>();\n\t\tOptional deviceDetailSearchFilter = dto.getFilters().stream()\n\t\t\t\t.filter(cn -> cn.getColumnName().equalsIgnoreCase(\"deviceDetailId\")).findFirst();\t\t\n\t\tdto.getFilters().removeIf(f->f.getColumnName().equalsIgnoreCase(\"deviceDetailId\"));\t\t\n\t\tPage page = searchHelper.search(DeviceDetailSBI.class, dto, \"providerId\");\n\t\tif (page.getContent() != null && !page.getContent().isEmpty()) {\n\t\t\tif(deviceDetailSearchFilter.isPresent()) {\n\t\t\t\tString idValue = deviceDetailSearchFilter.get().getValue();\n\t\t\t\tmappedRecords = mapMappedDeviceDetailsResponse(page.getContent().stream().filter(\n\t\t\t\t\t\tf -> f.getId().getDeviceDetailId().equals(idValue))\n\t\t\t\t\t\t.collect(Collectors.toList()));\n\n\t\t\t}else {\n\t\t\t\tmappedRecords=mapMappedDeviceDetailsResponse(page.getContent());\n\t\t\t}\n\t\t\t pageDto = pageUtils.sortPage(mappedRecords, dto.getSort(), dto.getPagination(),page.getTotalElements());\n\t\t}\n\t\treturn pageDto;\n\t}\n\t\n\tprivate List mapMappedDeviceDetailsResponse(List mappedDeviceDetails) {\n\t\tList response = new ArrayList<>();\n\t\tList allDeviceDetails = deviceDetailRepository.findAll();\n\t\tList allSBIs = sbiRepository.findAll();\n\t\tmappedDeviceDetails.forEach(sbi->{\n\t\t\tMappedDeviceDetailsReponse output = new MappedDeviceDetailsReponse();\n\t\t\tDeviceDetail deviceDetail = allDeviceDetails.stream().filter(f->f.getId().equals(sbi.getId().getDeviceDetailId())).findFirst().get();\n\t\t\tSecureBiometricInterface secureBioInterface = allSBIs.stream().filter(f->f.getId().equals(sbi.getId().getSbiId())).findFirst().get();\n\t\t\toutput.setCrBy(sbi.getCrBy());\n\t\t\toutput.setCrDtimes(sbi.getCrDtimes());\t\t\t\n\t\t\toutput.setDeviceDetailId(sbi.getId().getDeviceDetailId());\n\t\t\toutput.setDeviceSubTypeCode(deviceDetail.getDeviceSubTypeCode());\n\t\t\toutput.setDeviceTypeCode(deviceDetail.getDeviceTypeCode());\n\t\t\toutput.setMake(deviceDetail.getMake());\n\t\t\toutput.setModel(deviceDetail.getModel());\n\t\t\toutput.setProviderId(sbi.getProviderId());\n\t\t\toutput.setProviderName(sbi.getPartnerName());\n\t\t\toutput.setSbiId(sbi.getId().getSbiId());\n\t\t\toutput.setSwBinaryHash(secureBioInterface.getSwBinaryHash());\n\t\t\toutput.setSwVersion(secureBioInterface.getSwVersion());\t\t\t\n\t\t\tresponse.add(output);\n\t\t});\n\t\treturn response;\n\t}\n\n\t@Override\n\tpublic FilterResponseCodeDto filterValues(FilterValueDto filterValueDto) {\n\t\tFilterResponseCodeDto filterResponseDto = new FilterResponseCodeDto();\n\t\tList columnValueList = new ArrayList<>();\n\t\tif (filterColumnValidator.validate(FilterDto.class, filterValueDto.getFilters(), SecureBiometricInterface.class)) {\n\t\t\tfor (FilterDto filterDto : filterValueDto.getFilters()) {\n\t\t\t\tList filterValues = filterHelper.filterValuesWithCode(SecureBiometricInterface.class,\n\t\t\t\t\t\tfilterDto, filterValueDto, \"id\");\n\t\t\t\tfilterValues.forEach(filterValue -> {\n\t\t\t\t\tColumnCodeValue columnValue = new ColumnCodeValue();\n\t\t\t\t\tcolumnValue.setFieldCode(filterValue.getFieldCode());\n\t\t\t\t\tcolumnValue.setFieldID(filterDto.getColumnName().split(\",\")[0]);\n\t\t\t\t\tcolumnValue.setFieldValue(filterValue.getFieldValue());\n\t\t\t\t\tcolumnValueList.add(columnValue);\n\t\t\t\t});\n\t\t\t}\n\t\t\tfilterResponseDto.setFilters(columnValueList);\n\t\t}\n\t\treturn filterResponseDto;\n\t}\n\n\t@Override\n\tpublic ResponseWrapperV2 addDeviceToSbi(DeviceDetailDto deviceDetailDto, String sbiId) {\n\t\tResponseWrapperV2 responseWrapper = new ResponseWrapperV2<>();\n\t\tString deviceId = null;\n\t\ttry {\n\t\t\tString partnerId = deviceDetailDto.getDeviceProviderId();\n\t\t\tString userId = getUserId();\n\t\t\tList partnerList = partnerRepository.findByUserId(userId);\n\t\t\tif (partnerList.isEmpty()) {\n\t\t\t\tLOGGER.info(\"sessionId\", \"idType\", \"id\", \"User id does not exist.\");\n\t\t\t\tthrow new PartnerServiceException(ErrorCode.USER_ID_NOT_EXISTS.getErrorCode(),\n\t\t\t\t\t\tErrorCode.USER_ID_NOT_EXISTS.getErrorMessage());\n\t\t\t}\n\t\t\t// check if partnerId is associated with user\n\t\t\tboolean partnerIdExists = false;\n\t\t\tString partnerOrgname = BLANK_STRING;\n\t\t\tfor (Partner partner : partnerList) {\n\t\t\t\tif (partner.getId().equals(partnerId)) {\n\t\t\t\t\tpartnerHelper.validatePartnerId(partner, userId);\n\t\t\t\t\tpartnerIdExists = true;\n\t\t\t\t\tpartnerOrgname = partner.getName();\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!partnerIdExists) {\n\t\t\t\tLOGGER.info(\"sessionId\", \"idType\", \"id\", \"Partner id is not associated with user.\");\n\t\t\t\tthrow new PartnerServiceException(ErrorCode.PARTNER_ID_NOT_ASSOCIATED_WITH_USER.getErrorCode(),\n\t\t\t\t\t\tErrorCode.PARTNER_ID_NOT_ASSOCIATED_WITH_USER.getErrorMessage());\n\t\t\t}\n\t\t\tIdDto dto = createDeviceDetails(deviceDetailDto);\n\t\t\tdeviceId = dto.getId();\n\t\t\taddInactiveMappingDeviceToSbi(sbiId, deviceId, partnerId, partnerOrgname, userId);\n\t\t\tresponseWrapper.setResponse(dto);\n\t\t} catch (PartnerServiceException ex) {\n\t\t\tLOGGER.info(\"sessionId\", \"idType\", \"id\", \"In addDeviceToSbi method of SecureBiometricInterfaceServiceImpl - \" + ex.getMessage());\n\t\t\tif (Objects.nonNull(deviceId) && !deviceId.equals(BLANK_STRING)) {\n\t\t\t\tdeleteDeviceDetail(deviceId);\n\t\t\t}\n\t\t\tresponseWrapper.setErrors(MultiPartnerUtil.setErrorResponse(ex.getErrorCode(), ex.getErrorText()));\n\t\t} catch (Exception ex) {\n\t\t\tLOGGER.debug(\"sessionId\", \"idType\", \"id\", ex.getStackTrace());\n\t\t\tLOGGER.error(\"sessionId\", \"idType\", \"id\",\n\t\t\t\t\t\"In addDeviceToSbi method of SecureBiometricInterfaceServiceImpl - \" + ex.getMessage());\n\t\t\tif (Objects.nonNull(deviceId) && !deviceId.equals(BLANK_STRING)) {\n\t\t\t\tdeleteDeviceDetail(deviceId);\n\t\t\t}\n\t\t\tString errorCode = ErrorCode.CREATE_DEVICE_ERROR.getErrorCode();\n\t\t\tString errorMessage = ErrorCode.CREATE_DEVICE_ERROR.getErrorMessage();\n\t\t\tresponseWrapper.setErrors(MultiPartnerUtil.setErrorResponse(errorCode, errorMessage));\n\t\t}\n\t\tresponseWrapper.setId(postAddDeviceToSbi);\n\t\tresponseWrapper.setVersion(VERSION);\n\t\treturn responseWrapper;\n\t}\n\n\tprivate IdDto createDeviceDetails(DeviceDetailDto deviceDetailDto) {\n\t\tDeviceDetail entity = new DeviceDetail();\n\t\tDeviceDetail deviceDetail = null;\n\t\tIdDto dto = new IdDto();\n\t\tRegistrationDeviceSubType registrationDeviceSubType = registrationDeviceSubTypeRepository\n\t\t\t\t.findByCodeAndTypeCodeAndIsDeletedFalseorIsDeletedIsNullAndIsActiveTrue(\n\t\t\t\t\t\tdeviceDetailDto.getDeviceSubTypeCode(), deviceDetailDto.getDeviceTypeCode());\n\t\tif (registrationDeviceSubType == null) {\n\t\t\tthrow new PartnerServiceException(DeviceDetailExceptionsConstant.REG_DEVICE_SUB_TYPE_NOT_FOUND.getErrorCode(),\n\t\t\t\t\tDeviceDetailExceptionsConstant.REG_DEVICE_SUB_TYPE_NOT_FOUND.getErrorMessage());\n\t\t} else {\n\t\t\tentity.setDeviceSubTypeCode(registrationDeviceSubType.getCode());\n\t\t\tentity.setDeviceTypeCode(registrationDeviceSubType.getDeviceTypeCode());\n\t\t}\n\t\tPartner partner = partnerRepository.findByIdAndIsDeletedFalseorIsDeletedIsNullAndIsActiveTrue(\n\t\t\t\tdeviceDetailDto.getDeviceProviderId());\n\t\tif (partner == null) {\n\t\t\tthrow new PartnerServiceException(DeviceDetailExceptionsConstant.DEVICE_PROVIDER_NOT_FOUND.getErrorCode(),\n\t\t\t\t\tDeviceDetailExceptionsConstant.DEVICE_PROVIDER_NOT_FOUND.getErrorMessage());\n\t\t}\n\t\tentity.setPartnerOrganizationName(partner.getName());\n\t\tif (deviceDetailRepository.findUniqueDeviceDetail(PartnerUtil.trimAndReplace(deviceDetailDto.getMake()), PartnerUtil.trimAndReplace(deviceDetailDto.getModel()),\n\t\t\t\tdeviceDetailDto.getDeviceProviderId(), deviceDetailDto.getDeviceSubTypeCode(),\n\t\t\t\tdeviceDetailDto.getDeviceTypeCode()) != null) {\n\t\t\tthrow new PartnerServiceException(DeviceDetailExceptionsConstant.DEVICE_DETAIL_EXIST.getErrorCode(),\n\t\t\t\t\tDeviceDetailExceptionsConstant.DEVICE_DETAIL_EXIST.getErrorMessage());\n\t\t}\n\t\tentity = deviceHelper.getCreateMapping(entity, deviceDetailDto);\n\t\tdeviceDetail = deviceDetailRepository.save(entity);\n\t\tdto.setId(deviceDetail.getId());\n\t\treturn dto;\n\t}\n\n\tprivate void addInactiveMappingDeviceToSbi(String sbiId, String deviceId, String partnerId, String orgName, String userId) {\n\t\tDeviceDetailSBI deviceDetailSBI = deviceDetailSbiRepository.findByDeviceProviderIdAndSbiIdAndDeviceDetailId(partnerId, sbiId, deviceId);\n\t\tif (Objects.nonNull(deviceDetailSBI)){\n\t\t\tLOGGER.info(\"sessionId\", \"idType\", \"id\", \"SBI and Device mapping already exists in DB.\");\n\t\t\tthrow new PartnerServiceException(ErrorCode.SBI_DEVICE_MAPPING_ALREADY_EXIST.getErrorCode(),\n\t\t\t\t\tErrorCode.SBI_DEVICE_MAPPING_ALREADY_EXIST.getErrorMessage());\n\t\t}\n\n\t\t// validate sbi and device mapping\n\t\tpartnerHelper.validateSbiDeviceMapping(partnerId, sbiId, deviceId);\n\n\t\tDeviceDetailSBI entity = new DeviceDetailSBI();\n\n\t\tDeviceDetailSBIPK pk = new DeviceDetailSBIPK();\n\t\tpk.setSbiId(sbiId);\n\t\tpk.setDeviceDetailId(deviceId);\n\n\t\tentity.setId(pk);\n\t\tentity.setProviderId(partnerId);\n\t\tentity.setPartnerName(orgName);\n\t\tentity.setIsActive(false);\n\t\tentity.setIsDeleted(false);\n\t\tentity.setCrBy(userId);\n\t\tentity.setCrDtimes(Timestamp.valueOf(LocalDateTime.now()));\n\n\t\tDeviceDetailSBI savedEntity = deviceDetailSbiRepository.save(entity);\n\t\tLOGGER.info(\"sessionId\", \"idType\", \"id\", \"saved inactive device mapping to sbi successfully in Db.\");\n\t}\n\n\tprivate void deleteDeviceDetail(String deviceDetailId) {\n\t\ttry {\n\t\t\tOptional deviceDetail = deviceDetailRepository.findById(deviceDetailId);\n\t\t\tif (deviceDetail.isPresent()) {\n\t\t\t\tList deviceDetailSBIList = deviceDetailSbiRepository.findByDeviceDetailId(deviceDetailId);\n\t\t\t\tif (deviceDetailSBIList.isEmpty()) {\n\t\t\t\t\tdeviceDetailRepository.deleteById(deviceDetailId);\n\t\t\t\t\tLOGGER.info(\"sessionId\", \"idType\", \"id\", \"Device detail with id \" + deviceDetailId + \" deleted successfully.\");\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (Exception e) {\n\t\t\tLOGGER.error(\"sessionId\", \"idType\", \"id\", \"Error while deleting device detail with id \" + deviceDetailId + \": \" + e.getMessage());\n\t\t}\n\t}\n\n\t@Override\n\tpublic ResponseWrapperV2> getAllDevicesForSbi(String sbiId) {\n\t\tResponseWrapperV2> responseWrapper = new ResponseWrapperV2<>();\n\t\ttry {\n\t\t\tString userId = getUserId();\n\t\t\tList partnerList = partnerRepository.findByUserId(userId);\n\n\t\t\tif (partnerList.isEmpty()) {\n\t\t\t\tLOGGER.info(\"sessionId\", \"idType\", \"id\", \"User id does not exist.\");\n\t\t\t\tthrow new PartnerServiceException(ErrorCode.USER_ID_NOT_EXISTS.getErrorCode(),\n\t\t\t\t\t\tErrorCode.USER_ID_NOT_EXISTS.getErrorMessage());\n\t\t\t}\n\n\t\t\tOptional secureBiometricInterface = sbiRepository.findById(sbiId);\n\n\t\t\tif (secureBiometricInterface.isEmpty()) {\n\t\t\t\tLOGGER.info(\"sessionId\", \"idType\", \"id\", \"Sbi is not associated with partner Id.\");\n\t\t\t\tthrow new PartnerServiceException(ErrorCode.SBI_NOT_EXISTS.getErrorCode(),\n\t\t\t\t\t\tErrorCode.SBI_NOT_EXISTS.getErrorMessage());\n\t\t\t}\n\n\t\t\tSecureBiometricInterface sbi = secureBiometricInterface.get();\n\t\t\t// check if partnerId is associated with user\n\t\t\tboolean partnerIdExists = false;\n\t\t\tfor (Partner partner : partnerList) {\n\t\t\t\tif (partner.getId().equals(sbi.getProviderId())) {\n\t\t\t\t\tpartnerHelper.validatePartnerId(partner, userId);\n\t\t\t\t\tvalidateDevicePartnerType(partner, userId);\n\t\t\t\t\tpartnerIdExists = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!partnerIdExists) {\n\t\t\t\tLOGGER.info(\"sessionId\", \"idType\", \"id\", \"Partner id is not associated with user.\");\n\t\t\t\tthrow new PartnerServiceException(ErrorCode.SBI_NOT_ASSOCIATED_WITH_USER.getErrorCode(),\n\t\t\t\t\t\tErrorCode.SBI_NOT_ASSOCIATED_WITH_USER.getErrorMessage());\n\t\t\t}\n\t\t\t// fetch devices list\n\t\t\tList deviceDetailSBIList = deviceDetailSbiRepository.findByDeviceProviderIdAndSbiId(sbi.getProviderId(), sbiId);\n\t\t\tif (!deviceDetailSBIList.isEmpty()) {\n\t\t\t\tList deviceDtoList = new ArrayList<>();\n\t\t\t\tfor (DeviceDetailSBI deviceDetailSBI : deviceDetailSBIList) {\n\t\t\t\t\tOptional optionalDeviceDetail = deviceDetailRepository.\n\t\t\t\t\t\t\tfindByIdAndDeviceProviderId(deviceDetailSBI.getId().getDeviceDetailId(), deviceDetailSBI.getProviderId());\n\t\t\t\t\tif (optionalDeviceDetail.isPresent()) {\n\t\t\t\t\t\tDeviceDetail deviceDetail = optionalDeviceDetail.get();\n\t\t\t\t\t\tDeviceDto deviceDto = new DeviceDto();\n\t\t\t\t\t\tdeviceDto.setDeviceId(deviceDetail.getId());\n\t\t\t\t\t\tdeviceDto.setDeviceTypeCode(deviceDetail.getDeviceTypeCode());\n\t\t\t\t\t\tdeviceDto.setDeviceSubTypeCode(deviceDetail.getDeviceSubTypeCode());\n\t\t\t\t\t\tdeviceDto.setDeviceProviderId(deviceDetail.getDeviceProviderId());\n\t\t\t\t\t\tdeviceDto.setMake(deviceDetail.getMake());\n\t\t\t\t\t\tdeviceDto.setModel(deviceDetail.getModel());\n\t\t\t\t\t\tdeviceDto.setStatus(deviceDetail.getApprovalStatus());\n\t\t\t\t\t\tdeviceDto.setActive(deviceDetail.getIsActive());\n\t\t\t\t\t\tdeviceDto.setCreatedDateTime(deviceDetail.getCrDtimes());\n\n\t\t\t\t\t\tdeviceDtoList.add(deviceDto);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tresponseWrapper.setResponse(deviceDtoList);\n\t\t\t}\n\t\t} catch (PartnerServiceException ex) {\n\t\t\tLOGGER.info(\"sessionId\", \"idType\", \"id\", \"In getAllDevicesForSbi method of SecureBiometricInterfaceServiceImpl - \" + ex.getMessage());\n\t\t\tresponseWrapper.setErrors(MultiPartnerUtil.setErrorResponse(ex.getErrorCode(), ex.getErrorText()));\n\t\t} catch (Exception ex) {\n\t\t\tLOGGER.debug(\"sessionId\", \"idType\", \"id\", ex.getStackTrace());\n\t\t\tLOGGER.error(\"sessionId\", \"idType\", \"id\",\n\t\t\t\t\t\"In getAllDevicesForSbi method of SecureBiometricInterfaceServiceImpl - \" + ex.getMessage());\n\t\t\tString errorCode = ErrorCode.DEVICES_LIST_FOR_SBI_FETCH_ERROR.getErrorCode();\n\t\t\tString errorMessage = ErrorCode.DEVICES_LIST_FOR_SBI_FETCH_ERROR.getErrorMessage();\n\t\t\tresponseWrapper.setErrors(MultiPartnerUtil.setErrorResponse(errorCode, errorMessage));\n\t\t}\n\t\tresponseWrapper.setId(getSbiDevicesId);\n\t\tresponseWrapper.setVersion(VERSION);\n\t\treturn responseWrapper;\n\t}\n\n\tprivate void validateDevicePartnerType(Partner partner, String userId) {\n\t\tif (!partner.getPartnerTypeCode().equals(DEVICE_PROVIDER)) {\n\t\t\tLOGGER.info(\"Invalid Partner type for partner id : \" + partner.getId());\n\t\t\tthrow new PartnerServiceException(ErrorCode.INVALID_DEVICE_PARTNER_TYPE.getErrorCode(),\n\t\t\t\t\tErrorCode.INVALID_DEVICE_PARTNER_TYPE.getErrorMessage());\n\t\t}\n\t}\n\n\t@Override\n\tpublic ResponseWrapperV2 deactivateSbi(String sbiId, DeactivateSbiRequestDto requestDto) {\n\t\tResponseWrapperV2 responseWrapper = new ResponseWrapperV2<>();\n\t\ttry {\n\t\t\tString status = requestDto.getStatus();\n\t\t\tif (Objects.isNull(status) || status.equals(BLANK_STRING) || !status.equals(PartnerConstants.DEACTIVATE)) {\n\t\t\t\tLOGGER.info(status + \" : is Invalid Input Parameter, it should be (De-Activate)\");\n\t\t\t\tthrow new PartnerServiceException(ErrorCode.DEACTIVATE_STATUS_CODE.getErrorCode(),\n\t\t\t\t\t\tErrorCode.DEACTIVATE_STATUS_CODE.getErrorMessage());\n\t\t\t}\n\t\t\tString userId = getUserId();\n\t\t\tList partnerList = partnerRepository.findByUserId(userId);\n\t\t\tif (partnerList.isEmpty()) {\n\t\t\t\tLOGGER.info(\"sessionId\", \"idType\", \"id\", \"User id does not exist.\");\n\t\t\t\tthrow new PartnerServiceException(ErrorCode.USER_ID_NOT_EXISTS.getErrorCode(),\n\t\t\t\t\t\tErrorCode.USER_ID_NOT_EXISTS.getErrorMessage());\n\t\t\t}\n\n\t\t\tif (Objects.isNull(sbiId)) {\n\t\t\t\tLOGGER.info(\"sessionId\", \"idType\", \"id\", \"SBI id is null.\");\n\t\t\t\tthrow new PartnerServiceException(ErrorCode.INVALID_SBI_ID.getErrorCode(),\n\t\t\t\t\t\tErrorCode.INVALID_SBI_ID.getErrorMessage());\n\t\t\t}\n\t\t\tOptional secureBiometricInterface = sbiRepository.findById(sbiId);\n\t\t\tif (!secureBiometricInterface.isPresent()) {\n\t\t\t\tLOGGER.error(\"SBI not exists with id {}\", sbiId);\n\t\t\t\tthrow new PartnerServiceException(ErrorCode.SBI_NOT_EXISTS.getErrorCode(),\n\t\t\t\t\t\tErrorCode.SBI_NOT_EXISTS.getErrorMessage());\n\t\t\t}\n\t\t\tSecureBiometricInterface sbi = secureBiometricInterface.get();\n\n\t\t\tboolean isAdmin = partnerHelper.isPartnerAdmin(authUserDetails().getAuthorities().toString());\n\t\t\tif (!isAdmin) {\n\t\t\t\tPartner partnerDetails = getAssociatedPartner(partnerList, sbi.getProviderId(), userId);\n\t\t\t\tpartnerHelper.checkIfPartnerIsNotActive(partnerDetails);\n\t\t\t}\n\t\t\tif (!sbi.getApprovalStatus().equals(APPROVED)) {\n\t\t\t\tLOGGER.error(\"Unable to deactivate sbi with id {}\", sbi.getId());\n\t\t\t\tthrow new PartnerServiceException(ErrorCode.SBI_NOT_APPROVED.getErrorCode(),\n\t\t\t\t\t\tErrorCode.SBI_NOT_APPROVED.getErrorMessage());\n\t\t\t}\n\t\t\tif (sbi.getApprovalStatus().equals(APPROVED) && !sbi.isActive()) {\n\t\t\t\tLOGGER.error(\"Unable to deactivate sbi with id {}\", sbi.getId());\n\t\t\t\tthrow new PartnerServiceException(ErrorCode.SBI_ALREADY_DEACTIVATED.getErrorCode(),\n\t\t\t\t\t\tErrorCode.SBI_ALREADY_DEACTIVATED.getErrorMessage());\n\t\t\t}\n\t\t\t// Deactivate approved devices\n\t\t\tList approvedDevices = deviceDetailRepository.findApprovedDevicesBySbiId(sbiId);\n\t\t\tif (!approvedDevices.isEmpty()) {\n\t\t\t\tfor (DeviceDetail deviceDetail : approvedDevices) {\n\t\t\t\t\tdeviceDetail.setIsActive(false);\n\t\t\t\t\tdeviceDetail.setUpdDtimes(LocalDateTime.now());\n\t\t\t\t\tdeviceDetail.setUpdBy(getUserId());\n\t\t\t\t\tdeviceDetailRepository.save(deviceDetail);\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Reject pending_approval devices\n\t\t\tList pendingApprovalDevices = deviceDetailRepository.findPendingApprovalDevicesBySbiId(sbiId);\n\t\t\tif (!pendingApprovalDevices.isEmpty()) {\n\t\t\t\tfor (DeviceDetail deviceDetail : pendingApprovalDevices) {\n\t\t\t\t\tdeviceDetail.setApprovalStatus(REJECTED);\n\t\t\t\t\tdeviceDetail.setUpdDtimes(LocalDateTime.now());\n\t\t\t\t\tdeviceDetail.setUpdBy(getUserId());\n\t\t\t\t\tdeviceDetailRepository.save(deviceDetail);\n\t\t\t\t}\n\t\t\t}\n\t\t\tsbi.setActive(false);\n\t\t\tsbi.setUpdDtimes(LocalDateTime.now());\n\t\t\tsbi.setUpdBy(getUserId());\n\t\t\tSecureBiometricInterface updatedSbi = sbiRepository.save(sbi);\n\t\t\tSbiDetailsResponseDto sbiDetailsResponseDto = new SbiDetailsResponseDto();\n\n\t\t\tsbiDetailsResponseDto.setSbiId(updatedSbi.getId());\n\t\t\tsbiDetailsResponseDto.setSbiVersion(updatedSbi.getSwVersion());\n\t\t\tsbiDetailsResponseDto.setStatus(updatedSbi.getApprovalStatus());\n\t\t\tsbiDetailsResponseDto.setActive(updatedSbi.isActive());\n\n\t\t\tresponseWrapper.setResponse(sbiDetailsResponseDto);\n\t\t} catch (PartnerServiceException ex) {\n\t\t\tLOGGER.info(\"sessionId\", \"idType\", \"id\", \"In deactivateSbi method of SecureBiometricInterfaceServiceImpl - \" + ex.getMessage());\n\t\t\tresponseWrapper.setErrors(MultiPartnerUtil.setErrorResponse(ex.getErrorCode(), ex.getErrorText()));\n\t\t} catch (Exception ex) {\n\t\t\tLOGGER.debug(\"sessionId\", \"idType\", \"id\", ex.getStackTrace());\n\t\t\tLOGGER.error(\"sessionId\", \"idType\", \"id\",\n\t\t\t\t\t\"In deactivateSbi method of SecureBiometricInterfaceServiceImpl - \" + ex.getMessage());\n\t\t\tString errorCode = ErrorCode.DEACTIVATE_SBI_ERROR.getErrorCode();\n\t\t\tString errorMessage = ErrorCode.DEACTIVATE_SBI_ERROR.getErrorMessage();\n\t\t\tresponseWrapper.setErrors(MultiPartnerUtil.setErrorResponse(errorCode, errorMessage));\n\t\t}\n\t\tresponseWrapper.setId(patchDeactivateSbi);\n\t\tresponseWrapper.setVersion(VERSION);\n\t\treturn responseWrapper;\n\t}\n\n\tpublic Partner getAssociatedPartner (List partnerList, String sbiProviderId, String userId) {\n\t\tboolean sbiProviderExist = false;\n\t\tPartner partnerDetails = null;\n\t\tfor (Partner partner : partnerList) {\n\t\t\tif (partner.getId().equals(sbiProviderId)) {\n\t\t\t\tpartnerHelper.validatePartnerId(partner, userId);\n\t\t\t\tsbiProviderExist = true;\n\t\t\t\tpartnerDetails = partner;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif (!sbiProviderExist) {\n\t\t\tLOGGER.info(\"sessionId\", \"idType\", \"id\", \"SBI is not associated with user.\");\n\t\t\tthrow new PartnerServiceException(ErrorCode.SBI_NOT_ASSOCIATED_WITH_USER.getErrorCode(),\n\t\t\t\t\tErrorCode.SBI_NOT_ASSOCIATED_WITH_USER.getErrorMessage());\n\t\t}\n\t\treturn partnerDetails;\n\t}\n\n\t@Override\n\tpublic ResponseWrapperV2> getAllSbiDetails(String sortFieldName, String sortType, Integer pageNo, Integer pageSize, SbiFilterDto filterDto) {\n\t\tResponseWrapperV2> responseWrapper = new ResponseWrapperV2<>();\n\t\ttry {\n\t\t\tPageResponseV2Dto pageResponseV2Dto = new PageResponseV2Dto<>();\n\t\t\tboolean isPartnerAdmin = partnerHelper.isPartnerAdmin(authUserDetails().getAuthorities().toString());\n\t\t\tList partnerIdList = null;\n\t\t\tif (!isPartnerAdmin) {\n\t\t\t\tString userId = getUserId();\n\t\t\t\tList partnerList = partnerRepository.findByUserId(userId);\n\t\t\t\tif (partnerList.isEmpty()) {\n\t\t\t\t\tLOGGER.info(\"sessionId\", \"idType\", \"id\", \"User id does not exists.\");\n\t\t\t\t\tthrow new PartnerServiceException(io.mosip.pms.partner.constant.ErrorCode.USER_ID_NOT_EXISTS.getErrorCode(),\n\t\t\t\t\t\t\tio.mosip.pms.partner.constant.ErrorCode.USER_ID_NOT_EXISTS.getErrorMessage());\n\t\t\t\t}\n\t\t\t\tpartnerIdList = new ArrayList<>();\n\t\t\t\tfor (Partner partner : partnerList) {\n\t\t\t\t\tpartnerHelper.validatePartnerId(partner, userId);\n\t\t\t\t\tpartnerIdList.add(partner.getId());\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tPageable pageable = Pageable.unpaged();\n\n\t\t\t// Pagination\n\t\t\tboolean isPaginationEnabled = (pageNo != null && pageSize != null);\n\t\t\tif (isPaginationEnabled) {\n\t\t\t\tpageable = PageRequest.of(pageNo, pageSize);\n\t\t\t}\n\n\t\t\t// Fetch the SBI details\n\t\t\tPage page = getSbiDetails(sortFieldName, sortType, pageNo, pageSize, filterDto, pageable, partnerIdList, isPartnerAdmin);\n\t\t\tif (Objects.nonNull(page) && !page.getContent().isEmpty()) {\n\t\t\t\tList sbiSummaryDtoList = MapperUtils.mapAll(page.getContent(), SbiSummaryDto.class);\n\t\t\t\tpageResponseV2Dto.setPageNo(page.getNumber());\n\t\t\t\tpageResponseV2Dto.setPageSize(page.getSize());\n\t\t\t\tpageResponseV2Dto.setTotalResults(page.getTotalElements());\n\t\t\t\tpageResponseV2Dto.setData(sbiSummaryDtoList);\n\t\t\t}\n\t\t\tresponseWrapper.setResponse(pageResponseV2Dto);\n\t\t} catch (PartnerServiceException ex) {\n\t\t\tLOGGER.info(\"sessionId\", \"idType\", \"id\", \"In getAllSbiDetails method of SecureBiometricInterfaceServiceImpl - \" + ex.getMessage());\n\t\t\tresponseWrapper.setErrors(MultiPartnerUtil.setErrorResponse(ex.getErrorCode(), ex.getErrorText()));\n\t\t} catch (Exception ex) {\n\t\t\tLOGGER.debug(\"sessionId\", \"idType\", \"id\", ex.getStackTrace());\n\t\t\tLOGGER.error(\"sessionId\", \"idType\", \"id\",\n\t\t\t\t\t\"In getAllSbiDetails method of SecureBiometricInterfaceServiceImpl - \" + ex.getMessage());\n\t\t\tString errorCode = ErrorCode.SBI_DETAILS_LIST_FETCH_ERROR.getErrorCode();\n\t\t\tString errorMessage = ErrorCode.SBI_DETAILS_LIST_FETCH_ERROR.getErrorMessage();\n\t\t\tresponseWrapper.setErrors(MultiPartnerUtil.setErrorResponse(errorCode, errorMessage));\n\t\t}\n\t\tresponseWrapper.setId(getAllSbiDetails);\n\t\tresponseWrapper.setVersion(VERSION);\n\t\treturn responseWrapper;\n\t}\n\n\tprivate Page getSbiDetails(String sortFieldName, String sortType, Integer pageNo, Integer pageSize, SbiFilterDto filterDto, Pageable pageable, List partnerIdList, boolean isPartnerAdmin) {\n\t\t// Sorting\n\t\tif (Objects.nonNull(sortFieldName) && Objects.nonNull(sortType)) {\n\t\t\tString sortKey = sortFieldName + \"_\" + sortType.toLowerCase();\n\t\t\tswitch (sortKey) {\n\t\t\t\tcase \"status_asc\":\n\t\t\t\t\treturn sbiSummaryRepository.getSummaryOfSbiDetailsByStatusAsc(\n\t\t\t\t\t\t\tfilterDto.getPartnerId(), filterDto.getOrgName(), filterDto.getSbiId(),\n\t\t\t\t\t\t\tfilterDto.getSbiVersion(), filterDto.getStatus(),\n\t\t\t\t\t\t\tfilterDto.getSbiExpiryStatus(), partnerIdList, isPartnerAdmin, pageable);\n\n\t\t\t\tcase \"status_desc\":\n\t\t\t\t\treturn sbiSummaryRepository.getSummaryOfSbiDetailsByStatusDesc(\n\t\t\t\t\t\t\tfilterDto.getPartnerId(), filterDto.getOrgName(), filterDto.getSbiId(),\n\t\t\t\t\t\t\tfilterDto.getSbiVersion(), filterDto.getStatus(),\n\t\t\t\t\t\t\tfilterDto.getSbiExpiryStatus(), partnerIdList, isPartnerAdmin, pageable);\n\n\t\t\t\tcase \"sbiExpiryStatus_asc\":\n\t\t\t\t\treturn sbiSummaryRepository.getSummaryOfSbiDetailsByExpiryStatusAsc(\n\t\t\t\t\t\t\tfilterDto.getPartnerId(), filterDto.getOrgName(), filterDto.getSbiId(),\n\t\t\t\t\t\t\tfilterDto.getSbiVersion(), filterDto.getStatus(),\n\t\t\t\t\t\t\tfilterDto.getSbiExpiryStatus(), partnerIdList, isPartnerAdmin, pageable);\n\n\t\t\t\tcase \"sbiExpiryStatus_desc\":\n\t\t\t\t\treturn sbiSummaryRepository.getSummaryOfSbiDetailsByExpiryStatusDesc(\n\t\t\t\t\t\t\tfilterDto.getPartnerId(), filterDto.getOrgName(), filterDto.getSbiId(),\n\t\t\t\t\t\t\tfilterDto.getSbiVersion(), filterDto.getStatus(),\n\t\t\t\t\t\t\tfilterDto.getSbiExpiryStatus(), partnerIdList, isPartnerAdmin, pageable);\n\n\t\t\t\tcase \"countOfAssociatedDevices_asc\":\n\t\t\t\t\treturn sbiSummaryRepository.getSummaryOfSbiDetailsByDevicesCountAsc(\n\t\t\t\t\t\t\tfilterDto.getPartnerId(), filterDto.getOrgName(), filterDto.getSbiId(),\n\t\t\t\t\t\t\tfilterDto.getSbiVersion(), filterDto.getStatus(),\n\t\t\t\t\t\t\tfilterDto.getSbiExpiryStatus(), partnerIdList, isPartnerAdmin, pageable);\n\n\t\t\t\tcase \"countOfAssociatedDevices_desc\":\n\t\t\t\t\treturn sbiSummaryRepository.getSummaryOfSbiDetailsByDevicesCountDesc(\n\t\t\t\t\t\t\tfilterDto.getPartnerId(), filterDto.getOrgName(), filterDto.getSbiId(),\n\t\t\t\t\t\t\tfilterDto.getSbiVersion(), filterDto.getStatus(),\n\t\t\t\t\t\t\tfilterDto.getSbiExpiryStatus(), partnerIdList, isPartnerAdmin, pageable);\n\n\t\t\t\tdefault:\n\t\t\t\t\t// generic sorting logic for other fields\n\t\t\t\t\tSort sort = partnerHelper.getSortingRequest(\n\t\t\t\t\t\t\tgetSortColumn(partnerHelper.sbiAliasToColumnMap, sortFieldName), sortType);\n\t\t\t\t\tpageable = PageRequest.of(pageNo, pageSize, sort);\n\t\t\t}\n\t\t}\n\t\treturn sbiSummaryRepository.getSummaryOfSbiDetails(\n\t\t\t\tfilterDto.getPartnerId(), filterDto.getOrgName(), filterDto.getSbiId(),\n\t\t\t\tfilterDto.getSbiVersion(), filterDto.getStatus(),\n\t\t\t\tfilterDto.getSbiExpiryStatus(), partnerIdList, isPartnerAdmin, pageable);\n\t}\n\n\tpublic String getSortColumn(Map aliasToColumnMap, String alias) {\n\t\treturn aliasToColumnMap.getOrDefault(alias, alias); // Return alias if no match found\n\t}\n\n\tprivate AuthUserDetails authUserDetails() {\n\t\treturn (AuthUserDetails) SecurityContextHolder.getContext().getAuthentication().getPrincipal();\n\t}\n\n\tprivate String getUserId() {\n\t\tString userId = authUserDetails().getUserId();\n\t\treturn userId;\n\t}\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/device/constant/DeviceDetailExceptionsConstant.java", + "title": "DeviceDetailExceptionsConstant.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/device/constant/DeviceDetailExceptionsConstant.java", + "language": "java", + "content": "package io.mosip.pms.device.constant;\n\npublic enum DeviceDetailExceptionsConstant {\n\n\tREG_DEVICE_SUB_TYPE_NOT_FOUND(\"PMS_AUT_001\",\"Reg Device Sub Type Code not found in the list of Reg Device Sub Types\"), \n\tDEVICE_PROVIDER_NOT_FOUND(\"PMS_AUT_002\",\"This partner has been inactivated by Partner admin\"),\n\tDEVICE_DETAIL_EXIST(\"PMS_AUT_003\",\"Device Details already exists\"),\n\tDUPLICATE_REQUEST(\"PMS_AUT_004\",\"Duplicate request received\"), \n\tDEVICE_DETAIL_NOT_FOUND(\"PMS_AUT_005\",\"Device detail for id %s does not exist\"),\n\tDEVICE_STATUS_CODE(\"PMS_AUT_025\",\"ApprovalStatus should be Activate / De-activate\"),\n\tDEVICE_DETAIL_NOT_APPROVED(\"PMS_AUT_027\",\"Device details for id %s are not yet approved. Please provide approved details.\"),\n\tDEVICE_DETAIL_REJECTED(\"PMS_AUT_028\",\"Device details for id %s are rejected. Cann't use same details for mapping.\"),\n\tDEVICE_DETAIL_ID_GENERATION_FAILURE(\"PMS_AUT_029\", \"Failed to generate a unique Device Detail ID\");\n\t\n\t/**\n\t * The error code.\n\t */\n\tprivate String errorCode;\n\n\t/**\n\t * The error message.\n\t */\n\tprivate String errorMessage;\n\n\t/**\n\t * Constructor for partnerIdExceptionConstant.\n\t * \n\t * @param errorCode\n\t * the errorCode.\n\t * @param errorMessage\n\t * the errorMessage.\n\t */\n\tDeviceDetailExceptionsConstant(String errorCode, String errorMessage) {\n\t\tthis.errorCode = errorCode;\n\t\tthis.errorMessage = errorMessage;\n\t}\n\n\t/**\n\t * Getter for error code.\n\t * \n\t * @return the error code.\n\t */\n\tpublic String getErrorCode() {\n\t\treturn errorCode;\n\t}\n\n\t/**\n\t * Getter for error message.\n\t * \n\t * @return the error message.\n\t */\n\tpublic String getErrorMessage() {\n\t\treturn errorMessage;\n\t}\n\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/device/constant/DeviceValidationErrorCode.java", + "title": "DeviceValidationErrorCode.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/device/constant/DeviceValidationErrorCode.java", + "language": "java", + "content": "package io.mosip.pms.device.constant;\n\npublic enum DeviceValidationErrorCode {\n\n\tDEVICE_DOES_NOT_EXIST(\"ADM-DPM-001\", \"Device is marked Inactive or not found\"),\n\tDEVICE_REVOKED_OR_RETIRED(\"ADM-DPM-002\", \"Device is revoked/retired\"),\n\tDATABASE_EXCEPTION(\"ADM-DPM-009\", \"Error occurred while checking a Device Details %s\"),\n\tDEVICE_PROVIDER_NOT_EXIST(\"ADM-DPM-003\", \"Device Provider does not exist\"),\n\tDEVICE_PROVIDER_INACTIVE(\"ADM-DPM-004\", \"Device Provider is marked Inactive or not found\"),\n\tMDS_DOES_NOT_EXIST(\"ADM-DPM-005\", \"deviceServiceVersion not found\"),\n\tMDS_INACTIVE_STATE(\"ADM-DPM-006\", \"MDS in inactive state\"),\n\tSOFTWARE_VERSION_IS_NOT_A_MATCH(\"ADM-DPM-007\", \"Software version does not match against the Device Details\"),\n\tPROVIDER_AND_DEVICE_CODE_NOT_MAPPED(\"ADM-DPM-008\", \"Device code does not match against - %s\"),\n\tPROVIDER_AND_TYPE_MAPPED(\"ADM-DPM-008\", \"Device code does not match against - type\"),\n\tPROVIDER_AND_SUBTYPE_MAPPED(\"ADM-DPM-008\", \"Device code does not match against - subType\"),\n\tDEVICE_PROVIDER_INSERTION_EXCEPTION(\"ADM-DPM-012\", \"Error occurred while registering Device Provider\"),\n\tDEVICE_PROVIDER_EXIST(\"ADM-DPM-011\", \"%s Device Provider already exist\"),\n\tDEVICE_PROVIDER_UPDATE_EXCEPTION(\"ADM-DPM-014\", \"Error occurred while updating a Device Provider\"),\n\tDEVICE_PROVIDER_DEVICE_CODE_NOT_MAPPED(\"ADM-DPM-015\", \"Device code not mapped against device provider\"),\n\tNO_SUCH_FIELD_EXCEPTION(\"ADM-DPM-016\", \"No such field present\");\n\n\tprivate final String errorCode;\n\tprivate final String errorMessage;\n\n\tprivate DeviceValidationErrorCode(final String errorCode, final String errorMessage) {\n\t\tthis.errorCode = errorCode;\n\t\tthis.errorMessage = errorMessage;\n\t}\n\n\tpublic String getErrorCode() {\n\t\treturn errorCode;\n\t}\n\n\tpublic String getErrorMessage() {\n\t\treturn errorMessage;\n\t}\n\n}" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/device/constant/RegisteredDeviceErrorCode.java", + "title": "RegisteredDeviceErrorCode.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/device/constant/RegisteredDeviceErrorCode.java", + "language": "java", + "content": "package io.mosip.pms.device.constant;\n\npublic enum RegisteredDeviceErrorCode {\n\tFOUNDATIONAL_VALUE(\"PMS_AUT_008\", \"Error occured while validating Foundational\"), \n\tPURPOSE_VALIDATION_EXCEPTION(\"PMS_AUT_009\", \"Error occured while validating Foundational\"),\n\tCERTIFICATION_LEVEL_VALIDATION_EXCEPTION(\"PMS_AUT_010\", \"Error occured while validating Certification Level\"),\n\tDEVICE_DATA_NOT_EXIST(\"PMS_AUT_011\", \"Device data can't be null\"),\n\tTIMESTAMP_AFTER_CURRENTTIME(\"PMS_AUT_012\", \"Time Stamp input is %s min after the current timestamp\"),\n\tTIMESTAMP_BEFORE_CURRENTTIME(\"PMS_AUT_013\", \"Time Stamp input is %s min before the current timestamp\"),\n\tDEVICE_DETAIL_NOT_EXIST(\"PMS_AUT_014\", \"Device Detail does not exist in the list of Registered Device Details\"),\n\tSERIALNO_DEVICEDETAIL_ALREADY_EXIST(\"PMS_AUT_015\", \"Serial no and Device detail already exist\"),\n\tREGISTERED_DEVICE_INSERTION_EXCEPTION(\"PMS_AUT_016\", \"error occured while saving data\"),\n\tDEVICE_REGISTER_NOT_FOUND_EXCEPTION(\"PMS_AUT_016\", \"Registered device not found\"), \n\tDEVICE_DE_REGISTERED_ALREADY(\"PMS_AUT_024\", \"device already deregistered\"),\n\tDEVICE_CODE_EXCEEDS_LENGTH(\"PMS_AUT_025\", \"device code greater than the accepted length\"),\n\tINVALID_ENV(\"PMS_AUT_024\", \"invalid environment\"),\n\tDEVICE_REGISTER_DELETED_EXCEPTION(\"PMS_AUT_017\", \"error occured while de registering device\"),\n\tDEVICE_DETAIL_NOT_FOUND(\"PMS_AUT_018\", \"device detail not found\"),\n\tFTP_NOT_FOUND(\"PMS_AUT_019\", \"FTP not found\"), \n\tREGISTERED_DEVICE_SIGN_VALIDATION_EXCEPTION(\"PMS_AUT_021\", \"error occured while doing signature validation\"),\n\tREGISTERED_DEVICE_SIGN_VALIDATION_FAILURE(\"PMS_AUT_022\", \" signature validation failed -\"),\n\tSERIALNUM_NOT_EXIST(\"PMS_AUT_020\", \"serial number does not exist\"),\n\tAPI_RESOURCE_EXCEPTION(\"PMS_AUT_023\",\"error occured while fetching api resource -->\"),\n\tFOUNDATIONAL_ID_MANDATORY(\"PMS_AUT_030\",\"If certification level received is L1 then foundationalTrustProviderId should not be null or empty\"),\n\tTIMESTAMP_CANNOTBE_NULL(\"PMS_AUT_031\",\"Device info timestamp cannot be null.\"),\n\tRESPONSE_SIGN_FAILED(\"PMS_AUT_032\",\"Error while signing the response\");\n\t\n\n\tprivate final String errorCode;\n\tprivate final String errorMessage;\n\n\tprivate RegisteredDeviceErrorCode(final String errorCode, final String errorMessage) {\n\t\tthis.errorCode = errorCode;\n\t\tthis.errorMessage = errorMessage;\n\t}\n\n\tpublic String getErrorCode() {\n\t\treturn errorCode;\n\t}\n\n\tpublic String getErrorMessage() {\n\t\treturn errorMessage;\n\t}\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/device/controller/DeviceDetailController.java", + "title": "DeviceDetailController.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/device/controller/DeviceDetailController.java", + "language": "java", + "content": "package io.mosip.pms.device.controller;\n\nimport javax.validation.Valid;\nimport javax.validation.constraints.NotBlank;\n\nimport io.mosip.pms.common.dto.PageResponseV2Dto;\nimport io.mosip.pms.common.request.dto.RequestWrapperV2;\nimport io.mosip.pms.common.response.dto.ResponseWrapperV2;\nimport io.mosip.pms.device.dto.DeviceDetailFilterDto;\nimport io.mosip.pms.device.dto.DeviceDetailSummaryDto;\nimport io.mosip.pms.partner.request.dto.SbiAndDeviceMappingRequestDto;\nimport io.mosip.pms.device.response.dto.DeviceDetailResponseDto;\nimport io.mosip.pms.partner.util.PartnerHelper;\nimport io.mosip.pms.common.util.RequestValidator;\nimport io.swagger.v3.oas.annotations.Parameter;\nimport io.swagger.v3.oas.annotations.enums.ParameterIn;\nimport io.swagger.v3.oas.annotations.media.Content;\nimport io.swagger.v3.oas.annotations.media.Schema;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.beans.factory.annotation.Value;\nimport org.springframework.http.ResponseEntity;\nimport org.springframework.security.access.prepost.PreAuthorize;\nimport org.springframework.web.bind.annotation.PatchMapping;\nimport org.springframework.web.bind.annotation.PostMapping;\nimport org.springframework.web.bind.annotation.PutMapping;\nimport org.springframework.web.bind.annotation.RequestBody;\nimport org.springframework.web.bind.annotation.RequestMapping;\nimport org.springframework.web.bind.annotation.RestController;\nimport org.springframework.web.bind.annotation.GetMapping;\nimport org.springframework.web.bind.annotation.RequestParam;\nimport org.springframework.web.bind.annotation.PathVariable;\n\nimport io.mosip.kernel.core.http.ResponseFilter;\nimport io.mosip.pms.common.dto.DeviceFilterValueDto;\nimport io.mosip.pms.common.dto.PageResponseDto;\nimport io.mosip.pms.common.request.dto.RequestWrapper;\nimport io.mosip.pms.common.response.dto.ResponseWrapper;\nimport io.mosip.pms.device.authdevice.entity.DeviceDetail;\nimport io.mosip.pms.device.authdevice.entity.RegistrationDeviceSubType;\nimport io.mosip.pms.device.authdevice.service.DeviceDetailService;\nimport io.mosip.pms.device.constant.DeviceConstant;\nimport io.mosip.pms.device.request.dto.DeviceDetailDto;\nimport io.mosip.pms.device.request.dto.DeviceDetailUpdateDto;\nimport io.mosip.pms.device.request.dto.DeviceSearchDto;\nimport io.mosip.pms.device.request.dto.DeactivateDeviceRequestDto;\nimport io.mosip.pms.device.request.dto.UpdateDeviceDetailStatusDto;\nimport io.mosip.pms.device.response.dto.DeviceDetailSearchResponseDto;\nimport io.mosip.pms.device.response.dto.FilterResponseCodeDto;\nimport io.mosip.pms.device.response.dto.IdDto;\nimport io.mosip.pms.device.response.dto.RegistrationSubTypeDto;\nimport io.mosip.pms.device.util.AuditUtil;\nimport io.swagger.annotations.Api;\nimport io.swagger.annotations.ApiResponse;\nimport io.swagger.annotations.ApiResponses;\nimport io.swagger.v3.oas.annotations.Operation;\n\nimport java.util.Optional;\n\n@RestController\n@RequestMapping(value = \"/devicedetail\")\n@Api(tags = { \"DeviceDetail\" })\npublic class DeviceDetailController {\n\n\t@Value(\"${mosip.pms.api.id.approval.mapping.device.to.sbi.post}\")\n\tprivate String postApprovalMappingDeviceToSbiId;\n\n\t@Value(\"${mosip.pms.api.id.deactivate.device.patch}\")\n\tprivate String patchDeactivateDevice;\n\t\n\t@Autowired\n\tAuditUtil auditUtil;\n\t\n\t@Autowired\t\n\tDeviceDetailService deviceDetaillService;\n\n\t@Autowired\n\tPartnerHelper partnerHelper;\n\n\t@Autowired\n\tRequestValidator requestValidator;\n\n\t/*\n\t * This endpoint has been deprecated since the release-1.2.2.0\n\t * It has been replaced by the new POST /securebiometricinterface/{sbiId}/devices endpoint.\n\t * The functionality provided by this API is now available in the new endpoint.\n\t * Please use the new endpoint for all future requests.\n\t */\n\t@Deprecated(since = \"release-1.2.2.0\")\n\t@PreAuthorize(\"hasAnyRole(@authorizedRoles.getPostdevicedetail())\")\n\t@ResponseFilter\n\t@PostMapping\n\t@Operation(summary = \"Service to save DeviceDetail - deprecated since release-1.2.2.0.\", description = \"This endpoint has been deprecated since the release-1.2.2.0 and replaced by the POST /securebiometricinterface/{sbiId}/devices endpoint.\")\n\t@ApiResponses({ @ApiResponse(code = 201, message = \"When DeviceDetail successfully created\"),\n\t\t\t@ApiResponse(code = 400, message = \"When Request body passed is null or invalid\"),\n\t\t\t@ApiResponse(code = 500, message = \"While creating DeviceDetail any error occured\") })\n\tpublic ResponseWrapper createDeviceDetail(\n\t\t\t@Valid @RequestBody RequestWrapper deviceDetailRequestDto) {\n\t\tauditUtil.auditRequest(\n\t\t\t\tDeviceConstant.CREATE_API_IS_CALLED + DeviceDetailDto.class.getCanonicalName(),\n\t\t\t\tDeviceConstant.AUDIT_SYSTEM,\n\t\t\t\tDeviceConstant.CREATE_API_IS_CALLED + DeviceDetailDto.class.getCanonicalName(),\n\t\t\t\t\"AUT-001\", deviceDetailRequestDto.getRequest().getDeviceProviderId(), \"partnerId\");\n\t\tResponseWrapper responseWrapper = new ResponseWrapper<>();\n\t\tresponseWrapper\n\t\t.setResponse(deviceDetaillService.createDeviceDetails(deviceDetailRequestDto.getRequest()));\n\t\tauditUtil.auditRequest(\n\t\t\t\tString.format(DeviceConstant.SUCCESSFUL_CREATE , DeviceDetailDto.class.getCanonicalName()),\n\t\t\t\tDeviceConstant.AUDIT_SYSTEM,\n\t\t\t\tString.format(DeviceConstant.SUCCESSFUL_CREATE , DeviceDetailDto.class.getCanonicalName()),\n\t\t\t\t\"AUT-005\", deviceDetailRequestDto.getRequest().getDeviceProviderId(), \"partnerId\");\n\t\treturn responseWrapper;\n\n\t}\n\n\t/*\n\t * This endpoint has been deprecated since the release-1.2.2.0\n\t */\n\t@Deprecated(since = \"release-1.2.2.0\")\n\t@PreAuthorize(\"hasAnyRole(@authorizedRoles.getPutdevicedetail())\")\n\t@ResponseFilter\n\t@PutMapping\n\t@Operation(summary = \"Service to update DeviceDetails - deprecated since release-1.2.2.0.\", description = \"This endpoint has been deprecated since release-1.2.2.0.\")\n\t@ApiResponses({ @ApiResponse(code = 201, message = \"When DeviceDetail successfully updated\"),\n\t\t\t@ApiResponse(code = 400, message = \"When Request body passed is null or invalid\"),\n\t\t\t@ApiResponse(code = 500, message = \"While updating DeviceDetail any error occured\") })\n\tpublic ResponseWrapper updateDeviceDetail(\n\t\t\t@Valid @RequestBody RequestWrapper deviceDetailRequestDto) {\n\t\tauditUtil.auditRequest(\n\t\t\t\tDeviceConstant.UPDATE_API_IS_CALLED + DeviceDetailDto.class.getCanonicalName(),\n\t\t\t\tDeviceConstant.AUDIT_SYSTEM,\n\t\t\t\tDeviceConstant.UPDATE_API_IS_CALLED + DeviceDetailDto.class.getCanonicalName(),\n\t\t\t\t\"AUT-006\", deviceDetailRequestDto.getRequest().getId(), \"deviceDetailId\");\n\t\tResponseWrapper responseWrapper = new ResponseWrapper<>();\n\t\tresponseWrapper\n\t\t.setResponse(deviceDetaillService.updateDeviceDetails(deviceDetailRequestDto.getRequest()));\n\t\tauditUtil.auditRequest(\n\t\t\t\tString.format(DeviceConstant.SUCCESSFUL_UPDATE , DeviceDetailDto.class.getCanonicalName()),\n\t\t\t\tDeviceConstant.AUDIT_SYSTEM,\n\t\t\t\tString.format(DeviceConstant.SUCCESSFUL_UPDATE , DeviceDetailDto.class.getCanonicalName()),\n\t\t\t\t\"AUT-007\", deviceDetailRequestDto.getRequest().getId(), \"deviceDetailId\");\n\t\treturn responseWrapper;\n\t}\n\n\t/*\n\t * This endpoint has been deprecated since the release-1.2.2.0\n\t * It has been replaced by the new PATCH devicedetail/{id}/approval endpoint.\n\t * The functionality provided by this API is now available in the new endpoint.\n\t * Please use the new endpoint for all future requests.\n\t */\n\t@Deprecated(since = \"release-1.2.2.0\")\n\t@PreAuthorize(\"hasAnyRole(@authorizedRoles.getPatchdevicedetail())\")\n\t@ResponseFilter\n\t@PatchMapping\n\t@Operation(summary = \"Service to approve/reject DeviceDetail - deprecated since release-1.2.2.0.\",\n\t\t\tdescription = \"This endpoint has been deprecated since the release-1.2.2.0 and replaced by the PATCH /devicedetail/{id}/approval endpoint.\")\n\t@ApiResponses({ @ApiResponse(code = 201, message = \"When DeviceDetail successfully approved/rejected\"),\n\t\t\t@ApiResponse(code = 400, message = \"When Request body passed is null or invalid\"),\n\t\t\t@ApiResponse(code = 500, message = \"While approving/rejecting DeviceDetail any error occured\") })\n\tpublic ResponseWrapper approveDeviceDetails(\n\t\t\t@Valid @RequestBody RequestWrapper deviceDetailRequestDto){\n\t\tauditUtil.auditRequest(\n\t\t\t\tDeviceConstant.STATUS_UPDATE_API_IS_CALLED + UpdateDeviceDetailStatusDto.class.getCanonicalName(),\n\t\t\t\tDeviceConstant.AUDIT_SYSTEM,\n\t\t\t\tDeviceConstant.STATUS_UPDATE_API_IS_CALLED + UpdateDeviceDetailStatusDto.class.getCanonicalName(),\n\t\t\t\t\"AUT-006\", deviceDetailRequestDto.getRequest().getId(), \"deviceDetailId\");\n\t\tResponseWrapper responseWrapper = new ResponseWrapper<>();\n\t\tresponseWrapper\n\t\t.setResponse(deviceDetaillService.updateDeviceDetailStatus(deviceDetailRequestDto.getRequest()));\n\t\tauditUtil.auditRequest(\n\t\t\t\tString.format(DeviceConstant.SUCCESSFUL_UPDATE , UpdateDeviceDetailStatusDto.class.getCanonicalName()),\n\t\t\t\tDeviceConstant.AUDIT_SYSTEM,\n\t\t\t\tString.format(DeviceConstant.SUCCESSFUL_UPDATE , UpdateDeviceDetailStatusDto.class.getCanonicalName()),\n\t\t\t\t\"AUT-007\", deviceDetailRequestDto.getRequest().getId(), \"deviceDetailId\");\n\n\t\treturn responseWrapper;\n\t}\n\n\t/*\n\t * This endpoint has been deprecated since the release-1.2.2.0\n\t * It has been replaced by the new GET /devicedetail/search/v2 endpoint.\n\t * The functionality provided by this API is now available in the new endpoint.\n\t * Please use the new endpoint for all future requests.\n\t */\n\t@Deprecated(since = \"release-1.2.2.0\")\n\t@ResponseFilter\n\t@PostMapping(\"/search\")\n\t@PreAuthorize(\"hasAnyRole(@authorizedRoles.getPostdevicedetailsearch())\")\n\t@Operation(summary = \"Service to search DeviceDetails - deprecated since release-1.2.2.0.\",\n\t\t\tdescription = \"This endpoint has been deprecated since the release-1.2.2.0 and replaced by the GET /devicedetail endpoint.\")\n\tpublic ResponseWrapper> searchDeviceDetails(\n\t\t\t@RequestBody @Valid RequestWrapper request) {\n\t\tResponseWrapper> responseWrapper = new ResponseWrapper<>();\n\t\tresponseWrapper.setResponse(deviceDetaillService.searchDeviceDetails(DeviceDetail.class, request.getRequest()));\n\t\treturn responseWrapper;\n\t}\n\t\n\t@ResponseFilter\n\t@PostMapping(\"/deviceType/search\")\n\t@PreAuthorize(\"hasAnyRole(@authorizedRoles.getPostdevicedetaildevicetypesearch())\")\n\t@Operation(summary = \"Service to search DeviceTypes\", description = \"service to search DeviceTypes\")\n\tpublic ResponseWrapper> searchDeviceType(\n\t\t\t@RequestBody @Valid RequestWrapper request) {\n\t\tResponseWrapper> responseWrapper = new ResponseWrapper<>();\n\t\tresponseWrapper.setResponse(deviceDetaillService.searchDeviceType(RegistrationDeviceSubType.class, request.getRequest()));\n\t\treturn responseWrapper;\n\t}\n\n\t/*\n\t * This endpoint has been deprecated since the release-1.2.2.0\n\t * It has been replaced by the new GET /devicedetail/search/v2 endpoint.\n\t * The functionality provided by this API is now available in the new endpoint.\n\t * Please use the new endpoint for all future requests.\n\t */\n\t@Deprecated(since = \"release-1.2.2.0\")\n\t@ResponseFilter\n\t@PostMapping(\"/filtervalues\")\n\t@PreAuthorize(\"hasAnyRole(@authorizedRoles.getPostdevicedetailfiltervalues())\")\n\t@Operation(summary = \"Service to filter DeviceDetails - deprecated since release-1.2.2.0.\",\n\t\t\tdescription = \"This endpoint has been deprecated since the release-1.2.2.0 and replaced by the GET /devicedetail endpoint.\")\n\tpublic ResponseWrapper filterValues(\n\t\t\t@RequestBody @Valid RequestWrapper request) {\n\t\tResponseWrapper responseWrapper = new ResponseWrapper<>();\n\t\tresponseWrapper.setResponse(deviceDetaillService.deviceFilterValues(request.getRequest()));\n\t\treturn responseWrapper;\n\n\t}\n\t\n\t@ResponseFilter\n\t@PostMapping(\"/deviceType/filtervalues\")\n\t@PreAuthorize(\"hasAnyRole(@authorizedRoles.getPostdevicedetaildevicetypefiltervalues())\")\n\t@Operation(summary = \"Service to filter DeviceTypes\", description = \"Service to filter DeviceTypes\")\n\tpublic ResponseWrapper filterDeviceType(\n\t\t\t@RequestBody @Valid RequestWrapper request) {\n\t\tResponseWrapper responseWrapper = new ResponseWrapper<>();\n\t\tresponseWrapper.setResponse(deviceDetaillService.deviceTypeFilterValues(request.getRequest()));\n\t\treturn responseWrapper;\n\t}\n\t\n\t@ResponseFilter\n\t@PostMapping(\"/deviceSubType/filtervalues\")\n\t@PreAuthorize(\"hasAnyRole(@authorizedRoles.getPostdevicedetaildevicesubtypefiltervalues())\")\n\t@Operation(summary = \"Service to filter DeviceSubTypes\", description = \"Service to filter DeviceSubTypes\")\n\tpublic ResponseWrapper filterDeviceSubType(\n\t\t\t@RequestBody @Valid RequestWrapper request) {\n\t\tResponseWrapper responseWrapper = new ResponseWrapper<>();\n\t\tresponseWrapper.setResponse(deviceDetaillService.deviceSubTypeFilterValues(request.getRequest()));\n\t\treturn responseWrapper;\n\t}\n\n\t@PreAuthorize(\"hasAnyRole(@authorizedRoles.getPatchdeactivatedevice())\")\n\t@PatchMapping(value = \"/{deviceId}\")\n\t@Operation(summary = \"This endpoint deactivates a Device based on the Device Id.\",\n\tdescription = \"Available since release-1.2.2.0. This endpoint is configured for the roles DEVICE_PROVIDER or PARTNER_ADMIN.\")\n\t@io.swagger.v3.oas.annotations.responses.ApiResponses(value = {\n\t\t\t@io.swagger.v3.oas.annotations.responses.ApiResponse(responseCode = \"200\", description = \"OK\"),\n\t\t\t@io.swagger.v3.oas.annotations.responses.ApiResponse(responseCode = \"401\", description = \"Unauthorized\", content = @Content(schema = @Schema(hidden = true))),\n\t\t\t@io.swagger.v3.oas.annotations.responses.ApiResponse(responseCode = \"403\", description = \"Forbidden\", content = @Content(schema = @Schema(hidden = true)))\n\t})\n\tpublic ResponseWrapperV2 deactivateDevice(@PathVariable(\"deviceId\") @NotBlank String deviceId, @RequestBody @Valid RequestWrapperV2\n\t\t\trequestWrapper) {\n\t\tOptional> validationResponse = requestValidator.validate(patchDeactivateDevice, requestWrapper);\n\t\tif (validationResponse.isPresent()) {\n\t\t\treturn validationResponse.get();\n\t\t}\n\t\treturn deviceDetaillService.deactivateDevice(deviceId, requestWrapper.getRequest());\n\t}\n\n\t@PreAuthorize(\"hasAnyRole(@authorizedRoles.getPostdevicewithsbimapping())\")\n\t@PostMapping(value = \"/{id}/approval\")\n\t@Operation(summary = \"This endpoint is for the Partner Admin user to approve or reject a Device and activate the mapping between the Device and the SBI.\",\n\t\t\tdescription = \"Available since release-1.2.2.0. It is configured for the role PARTNER_ADMIN\")\n\t@io.swagger.v3.oas.annotations.responses.ApiResponses(value = {\n\t\t\t@io.swagger.v3.oas.annotations.responses.ApiResponse(responseCode = \"200\", description = \"OK\"),\n\t\t\t@io.swagger.v3.oas.annotations.responses.ApiResponse(responseCode = \"401\", description = \"Unauthorized\", content = @Content(schema = @Schema(hidden = true))),\n\t\t\t@io.swagger.v3.oas.annotations.responses.ApiResponse(responseCode = \"403\", description = \"Forbidden\", content = @Content(schema = @Schema(hidden = true)))\n\t})\n\tpublic ResponseWrapperV2 approveOrRejectMappingDeviceToSbi(@PathVariable(\"id\") String deviceId, @RequestBody @Valid RequestWrapperV2 requestWrapper) {\n\t\tOptional> validationResponse = requestValidator.validate(postApprovalMappingDeviceToSbiId, requestWrapper);\n\t\tif (validationResponse.isPresent()) {\n\t\t\treturn validationResponse.get();\n\t\t}\n\t\treturn deviceDetaillService.approveOrRejectMappingDeviceToSbi(deviceId, requestWrapper.getRequest());\n\t}\n\n\t@PreAuthorize(\"hasAnyRole(@authorizedRoles.getGetalldevicedetails())\")\n\t@GetMapping\n\t@Operation(summary = \"This endpoint retrieves a list of all the Devices.\",\n\tdescription = \"Available since release-1.2.2.0. This endpoint supports pagination, sorting, and filtering. It is configured for the role PARTNER_ADMIN.\")\n\t@io.swagger.v3.oas.annotations.responses.ApiResponses(value = {\n\t\t\t@io.swagger.v3.oas.annotations.responses.ApiResponse(responseCode = \"200\", description = \"OK\"),\n\t\t\t@io.swagger.v3.oas.annotations.responses.ApiResponse(responseCode = \"401\", description = \"Unauthorized\", content = @Content(schema = @Schema(hidden = true))),\n\t\t\t@io.swagger.v3.oas.annotations.responses.ApiResponse(responseCode = \"403\", description = \"Forbidden\", content = @Content(schema = @Schema(hidden = true)))\n\t})\n\tpublic ResponseWrapperV2> getAllDeviceDetails(\n\t\t\t@RequestParam(value = \"sortFieldName\", required = false) String sortFieldName,\n\t\t\t@RequestParam(value = \"sortType\", required = false) String sortType,\n\t\t\t@RequestParam(value = \"pageNo\", defaultValue = \"0\") Integer pageNo,\n\t\t\t@RequestParam(value = \"pageSize\", defaultValue = \"8\") Integer pageSize,\n\t\t\t@RequestParam(value = \"partnerId\", required = false) String partnerId,\n\t\t\t@RequestParam(value = \"orgName\", required = false) String orgName,\n\t\t\t@RequestParam(value = \"deviceType\", required = false) String deviceType,\n\t\t\t@RequestParam(value = \"deviceSubType\", required = false) String deviceSubType,\n\t\t\t@Parameter(\n\t\t\t\t\tdescription = \"Status of device\",\n\t\t\t\t\tin = ParameterIn.QUERY,\n\t\t\t\t\tschema = @Schema(allowableValues = {\"approved\", \"rejected\", \"pending_approval\", \"deactivated\"})\n\t\t\t)\n\t\t\t@RequestParam(value = \"status\", required = false) String status,\n\t\t\t@RequestParam(value = \"make\", required = false) String make,\n\t\t\t@RequestParam(value = \"model\", required = false) String model,\n\t\t\t@RequestParam(value = \"sbiId\", required = false) String sbiId,\n\t\t\t@RequestParam(value = \"sbiVersion\", required = false) String sbiVersion,\n\t\t\t@RequestParam(value = \"deviceId\", required = false) String deviceId\n\t) {\n\t\tpartnerHelper.validateRequestParameters(partnerHelper.deviceAliasToColumnMap, sortFieldName, sortType, pageNo, pageSize);\n\t\tDeviceDetailFilterDto filterDto = new DeviceDetailFilterDto();\n\t\tif (partnerId != null) {\n\t\t\tfilterDto.setPartnerId(partnerId.toLowerCase());\n\t\t}\n\t\tif (deviceType != null) {\n\t\t\tfilterDto.setDeviceType(deviceType.toLowerCase());\n\t\t}\n\t\tif (orgName != null) {\n\t\t\tfilterDto.setOrgName(orgName.toLowerCase());\n\t\t}\n\t\tif (status != null) {\n\t\t\tfilterDto.setStatus(status);\n\t\t}\n\t\tif (deviceSubType != null) {\n\t\t\tfilterDto.setDeviceSubType(deviceSubType.toLowerCase());\n\t\t}\n\t\tif (make != null) {\n\t\t\tfilterDto.setMake(make.toLowerCase());\n\t\t}\n\t\tif (model != null) {\n\t\t\tfilterDto.setModel(model.toLowerCase());\n\t\t}\n\t\tif (sbiId != null) {\n\t\t\tfilterDto.setSbiId(sbiId.toLowerCase());\n\t\t}\n\t\tif (sbiVersion != null) {\n\t\t\tfilterDto.setSbiVersion(sbiVersion.toLowerCase());\n\t\t}\n\t\tif (deviceId != null) {\n\t\t\tfilterDto.setDeviceId(deviceId.toLowerCase());\n\t\t}\n\t\treturn deviceDetaillService.getAllDeviceDetails(sortFieldName, sortType, pageNo, pageSize, filterDto);\n\t}\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/device/controller/FTPChipDetailController.java", + "title": "FTPChipDetailController.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/device/controller/FTPChipDetailController.java", + "language": "java", + "content": "package io.mosip.pms.device.controller;\n\nimport java.io.IOException;\nimport java.security.cert.CertificateException;\nimport java.util.List;\nimport java.util.Optional;\n\nimport javax.validation.Valid;\nimport javax.validation.constraints.NotBlank;\nimport javax.validation.constraints.NotNull;\n\nimport io.mosip.pms.common.dto.PageResponseV2Dto;\nimport io.mosip.pms.common.request.dto.RequestWrapperV2;\nimport io.mosip.pms.common.response.dto.ResponseWrapperV2;\nimport io.mosip.pms.device.dto.FtmChipDetailsDto;\nimport io.mosip.pms.device.dto.FtmChipFilterDto;\nimport io.mosip.pms.device.request.dto.*;\nimport io.mosip.pms.device.response.dto.*;\nimport io.mosip.pms.partner.response.dto.FtmCertificateDownloadResponseDto;\nimport io.mosip.pms.partner.util.FeatureAvailabilityUtil;\nimport io.mosip.pms.partner.util.PartnerHelper;\nimport io.mosip.pms.common.util.RequestValidator;\nimport io.swagger.v3.oas.annotations.Parameter;\nimport io.swagger.v3.oas.annotations.enums.ParameterIn;\nimport io.swagger.v3.oas.annotations.media.Content;\nimport io.swagger.v3.oas.annotations.media.Schema;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.beans.factory.annotation.Value;\nimport org.springframework.http.ResponseEntity;\nimport org.springframework.security.access.prepost.PreAuthorize;\nimport org.springframework.web.bind.annotation.PatchMapping;\nimport org.springframework.web.bind.annotation.PathVariable;\nimport org.springframework.web.bind.annotation.PostMapping;\nimport org.springframework.web.bind.annotation.PutMapping;\nimport org.springframework.web.bind.annotation.RequestBody;\nimport org.springframework.web.bind.annotation.RequestMapping;\nimport org.springframework.web.bind.annotation.RequestMethod;\nimport org.springframework.web.bind.annotation.RestController;\nimport org.springframework.web.bind.annotation.GetMapping;\nimport org.springframework.web.bind.annotation.RequestParam;\n\nimport com.fasterxml.jackson.core.JsonParseException;\nimport com.fasterxml.jackson.core.JsonProcessingException;\nimport com.fasterxml.jackson.databind.JsonMappingException;\n\nimport io.mosip.kernel.core.http.ResponseFilter;\nimport io.mosip.pms.common.dto.PageResponseDto;\nimport io.mosip.pms.common.request.dto.RequestWrapper;\nimport io.mosip.pms.common.response.dto.ResponseWrapper;\nimport io.mosip.pms.device.authdevice.entity.FTPChipDetail;\nimport io.mosip.pms.device.authdevice.service.FtpChipDetailService;\nimport io.mosip.pms.device.constant.DeviceConstant;\nimport io.mosip.pms.device.util.AuditUtil;\nimport io.swagger.annotations.Api;\nimport io.swagger.annotations.ApiParam;\nimport io.swagger.annotations.ApiResponse;\nimport io.swagger.annotations.ApiResponses;\nimport io.swagger.v3.oas.annotations.Operation;\n\n@RestController\n@RequestMapping(value = \"/ftpchipdetail\")\n@Api(tags = { \"FTPChipDetail\" })\npublic class FTPChipDetailController {\n\t\n\t@Autowired\n\tAuditUtil auditUtil;\n\t\n\t@Autowired\t\n\tFtpChipDetailService ftpChipDetaillService;\n\n\t@Autowired\n\tPartnerHelper partnerHelper;\n\n\t@Autowired\n\tRequestValidator requestValidator;\n\n\t@Autowired\n\tFeatureAvailabilityUtil featureAvailabilityUtil;\n\n\t@Value(\"${mosip.pms.api.id.deactivate.ftm.patch}\")\n\tprivate String patchDeactivateFtm;\n\n\t/**\n\t * Post API to insert a new row of ftpChipDetail data\n\t * \n\t * @param chipDetailRequestDto input parameter chipDetailRequestDto\n\t * \n\t * @return ResponseEntity DeviceDetail which is inserted successfully\n\t * {@link ResponseEntity}\n\t */\n\t@PreAuthorize(\"hasAnyRole(@authorizedRoles.getPostftpchipdetail())\")\n\t@ResponseFilter\n\t@PostMapping\n\t@Operation(summary = \"Service to save ftpChipDetail\", description = \"Saves ftpChipDetail and return ftpChipDetail id\")\n\t@ApiResponses({ @ApiResponse(code = 201, message = \"When ftpChipDetail successfully created\"),\n\t\t\t@ApiResponse(code = 400, message = \"When Request body passed is null or invalid\"),\n\t\t\t@ApiResponse(code = 500, message = \"While creating ftpChipDetail any error occured\") })\n\tpublic ResponseWrapper createDeviceDetail(\n\t\t\t@Valid @RequestBody RequestWrapper chipDetailRequestDto) {\n\t\tauditUtil.auditRequest(\n\t\t\t\tDeviceConstant.CREATE_API_IS_CALLED + FtpChipDetailDto.class.getCanonicalName(),\n\t\t\t\tDeviceConstant.AUDIT_SYSTEM,\n\t\t\t\tDeviceConstant.CREATE_API_IS_CALLED + FtpChipDetailDto.class.getCanonicalName(),\n\t\t\t\t\"AUT-001\", chipDetailRequestDto.getRequest().getFtpProviderId(), \"partnerId\");\n\t\tResponseWrapper responseWrapper = new ResponseWrapper<>();\n\t\tresponseWrapper\n\t\t.setResponse(ftpChipDetaillService.createFtpChipDetails(chipDetailRequestDto.getRequest()));\n\t\tauditUtil.auditRequest(\n\t\t\t\tString.format(DeviceConstant.SUCCESSFUL_CREATE , FtpChipDetailDto.class.getCanonicalName()),\n\t\t\t\tDeviceConstant.AUDIT_SYSTEM,\n\t\t\t\tString.format(DeviceConstant.SUCCESSFUL_CREATE , FtpChipDetailDto.class.getCanonicalName()),\n\t\t\t\t\"AUT-005\", chipDetailRequestDto.getRequest().getFtpProviderId(), \"partnerId\");\n\t\treturn responseWrapper;\n\n\t}\n\n\t/*\n\t * This endpoint has been deprecated since the release-1.2.2.0\n\t */\n\t@Deprecated(since = \"release-1.2.2.0\")\n\t@PreAuthorize(\"hasAnyRole(@authorizedRoles.getPutftpchipdetail())\")\n\t@ResponseFilter\n\t@PutMapping\n\t@Operation(summary = \"Service to update ftp chip detail - deprecated since release-1.2.2.0.\", description = \"This endpoint has been deprecated since release-1.2.2.0.\")\n\t@ApiResponses({ @ApiResponse(code = 201, message = \"When ftp chip detail successfully updated\"),\n\t\t\t@ApiResponse(code = 400, message = \"When Request body passed is null or invalid\"),\n\t\t\t@ApiResponse(code = 500, message = \"While updating ftp chip detail any error occured\") })\n\tpublic ResponseWrapper updateDeviceDetail(\n\t\t\t@Valid @RequestBody RequestWrapper ftpChipDetailRequestDto) {\n\t\tauditUtil.auditRequest(\n\t\t\t\tDeviceConstant.UPDATE_API_IS_CALLED + FtpChipDetailUpdateDto.class.getCanonicalName(),\n\t\t\t\tDeviceConstant.AUDIT_SYSTEM,\n\t\t\t\tDeviceConstant.UPDATE_API_IS_CALLED + FtpChipDetailUpdateDto.class.getCanonicalName(),\n\t\t\t\t\"AUT-006\", ftpChipDetailRequestDto.getRequest().getFtpChipDetailId(), \"ftpChipDetailId\");\n\t\tResponseWrapper responseWrapper = new ResponseWrapper<>();\n\t\tresponseWrapper\n\t\t.setResponse(ftpChipDetaillService.updateFtpChipDetails(ftpChipDetailRequestDto.getRequest()));\n\t\tauditUtil.auditRequest(\n\t\t\t\tString.format(DeviceConstant.SUCCESSFUL_UPDATE , FtpChipDetailUpdateDto.class.getCanonicalName()),\n\t\t\t\tDeviceConstant.AUDIT_SYSTEM,\n\t\t\t\tString.format(DeviceConstant.SUCCESSFUL_UPDATE , FtpChipDetailUpdateDto.class.getCanonicalName()),\n\t\t\t\t\"AUT-007\", ftpChipDetailRequestDto.getRequest().getFtpChipDetailId(), \"ftpChipDetailId\");\n\t\treturn responseWrapper;\n\t}\n\t\n\t/**\n\t * \n\t * @param deviceDetailRequestDto\n\t * @return\n\t */\n\t@PreAuthorize(\"hasAnyRole(@authorizedRoles.getPatchftpchipdetail())\")\n\t@ResponseFilter\n\t@PatchMapping\n\t@Operation(summary = \"Service to approve/reject ftp chip detail\", description = \"Approve ftp chip detail and returns success message\")\n\t@ApiResponses({ @ApiResponse(code = 201, message = \"When ftp chip detail successfully approved/rejected\"),\n\t\t\t@ApiResponse(code = 400, message = \"When Request body passed is null or invalid\"),\n\t\t\t@ApiResponse(code = 500, message = \"While approving/rejecting ftp chip detail any error occured\") })\n\tpublic ResponseWrapper approveDeviceDetails(\n\t\t\t@Valid @RequestBody RequestWrapper chipDetailRequestDto){\t\t\n\t\tauditUtil.auditRequest(\n\t\t\t\tDeviceConstant.STATUS_UPDATE_API_IS_CALLED + FtpChipDetailStatusDto.class.getCanonicalName(),\n\t\t\t\tDeviceConstant.AUDIT_SYSTEM,\n\t\t\t\tDeviceConstant.STATUS_UPDATE_API_IS_CALLED + FtpChipDetailStatusDto.class.getCanonicalName(),\n\t\t\t\t\"AUT-006\", chipDetailRequestDto.getRequest().getFtpChipDetailId(), \"ftpChipDetailId\");\n\t\tResponseWrapper responseWrapper = new ResponseWrapper<>();\n\t\tresponseWrapper\n\t\t.setResponse(ftpChipDetaillService.updateFtpChipDetailStatus(chipDetailRequestDto.getRequest()));\n\t\tauditUtil.auditRequest(\n\t\t\t\tString.format(DeviceConstant.SUCCESSFUL_UPDATE , FtpChipDetailStatusDto.class.getCanonicalName()),\n\t\t\t\tDeviceConstant.AUDIT_SYSTEM,\n\t\t\t\tString.format(DeviceConstant.SUCCESSFUL_UPDATE , FtpChipDetailStatusDto.class.getCanonicalName()),\n\t\t\t\t\"AUT-007\", chipDetailRequestDto.getRequest().getFtpChipDetailId(), \"ftpChipDetailId\");\n\n\t\treturn responseWrapper;\n\t}\n\t\n\t/**\n\t * To Upload FTP Chip Certificate.\n\t * \n\t * @param partnerCertRequestDto {@link FtpChipCertificateRequestDto} request\n\t * @return {@link PartnerCertificateResponseDto} signed certificate response\n\t * @throws IOException \n\t * @throws JsonProcessingException \n\t * @throws JsonMappingException \n\t * @throws JsonParseException \n\t */\n\t@PreAuthorize(\"hasAnyRole(@authorizedRoles.getPostftpchipdetailuploadcertificate())\")\n\t@RequestMapping(value = \"/uploadcertificate\", method = RequestMethod.POST)\n\t@Operation(summary = \"Service to upload certificate of ftp chip\", description = \"uploads the ftp chip certificate and returns success message\")\n\tpublic ResponseWrapper uploadPartnerCertificate(\n\t\t\t@ApiParam(\"Upload Partner Certificates.\") @RequestBody @Valid RequestWrapper partnerCertRequestDto) throws JsonParseException, JsonMappingException, JsonProcessingException, IOException {\n\t\tauditUtil.auditRequest(\n\t\t\t\tDeviceConstant.CERTIFICATE_UPLOAD_API_IS_CALLED + FtpChipCertificateRequestDto.class.getCanonicalName(),\n\t\t\t\tDeviceConstant.AUDIT_SYSTEM,\n\t\t\t\tDeviceConstant.CERTIFICATE_UPLOAD_API_IS_CALLED + FtpChipCertificateRequestDto.class.getCanonicalName(),\n\t\t\t\t\"AUT-006\", partnerCertRequestDto.getRequest().getFtpChipDeatilId(), \"ftpChipDetailId\");\n\t\tResponseWrapper response = new ResponseWrapper<>();\n\t\tresponse.setResponse(ftpChipDetaillService.uploadCertificate(partnerCertRequestDto.getRequest()));\n\t\tauditUtil.auditRequest(\n\t\t\t\tString.format(DeviceConstant.SUCCESSFUL_UPLOAD , FtpChipDetailStatusDto.class.getCanonicalName()),\n\t\t\t\tDeviceConstant.AUDIT_SYSTEM,\n\t\t\t\tString.format(DeviceConstant.SUCCESSFUL_UPLOAD , FtpChipDetailStatusDto.class.getCanonicalName()),\n\t\t\t\t\"AUT-007\", partnerCertRequestDto.getRequest().getFtpChipDeatilId(), \"ftpChipDetailId\");\n\t\treturn response;\n\t}\n\t\n /**\n\t * To Download Partner Certificate.\n\t * \n\t * @param certDownloadRequestDto {@link FtpCertDownloadRequestDto} request\n\t * @return {@link PartnerCertDownloadResponeDto} encrypted Data\n * @throws IOException \n * @throws JsonProcessingException \n * @throws JsonMappingException \n * @throws JsonParseException \n\t */\n\t@PreAuthorize(\"hasAnyRole(@authorizedRoles.getGetftpchipdetailgetpartnercertificate())\")\n\t@RequestMapping(value = \"/getPartnerCertificate/{ftpChipDetailId}\", method = RequestMethod.GET)\n\t@Operation(summary = \"Service to get certificate of ftp chip\", description = \"Returns the ftp chip certificate\")\n\tpublic ResponseWrapper getPartnerCertificate(\n\t\t\t@ApiParam(\"To download re-signed ftp chip certificate.\") @PathVariable(\"ftpChipDetailId\") @NotNull String ftpChipDetailId) throws JsonParseException, JsonMappingException, JsonProcessingException, IOException {\t\t\n\t\tResponseWrapper response = new ResponseWrapper<>();\n\t\tFtpChipCertDownloadRequestDto requestDto = new FtpChipCertDownloadRequestDto();\n\t\trequestDto.setFtpChipDetailId(ftpChipDetailId);\n\t\tauditUtil.auditRequest(\n\t\t\t\tDeviceConstant.GET_CERTIFICATE_API_IS_CALLED + FtpChipCertificateRequestDto.class.getCanonicalName(),\n\t\t\t\tDeviceConstant.AUDIT_SYSTEM,\n\t\t\t\tDeviceConstant.GET_CERTIFICATE_API_IS_CALLED + FtpChipCertificateRequestDto.class.getCanonicalName(),\n\t\t\t\t\"AUT-006\", ftpChipDetailId, \"ftpChipDetailId\");\n\n\t\tif(ftpChipDetaillService.getFtpChipDeatils(ftpChipDetailId) != null) {\n\t\t\tresponse.setResponse(ftpChipDetaillService.getCertificate(requestDto));\n\t\t}\n\t\tauditUtil.auditRequest(\n\t\t\t\tString.format(DeviceConstant.SUCCESSFUL_DOWNLOAD , FtpChipDetailStatusDto.class.getCanonicalName()),\n\t\t\t\tDeviceConstant.AUDIT_SYSTEM,\n\t\t\t\tString.format(DeviceConstant.SUCCESSFUL_DOWNLOAD , FtpChipDetailStatusDto.class.getCanonicalName()),\n\t\t\t\t\"AUT-007\", ftpChipDetailId, \"ftpChipDetailId\");\n\t\treturn response;\n }\n\n\t/*\n\t * This endpoint has been deprecated since the release-1.2.2.0\n\t * It has been replaced by the new GET /ftpchipdetail/v2 endpoint.\n\t * The functionality provided by this API is now available in the new endpoint.\n\t * Please use the new endpoint for all future requests.\n\t */\n\t@Deprecated(since = \"release-1.2.2.0\")\n\t@ResponseFilter\n\t@PostMapping(\"/search\")\n\t@PreAuthorize(\"hasAnyRole(@authorizedRoles.getPostftpchipdetailsearch())\")\n\t@Operation(summary = \"Service to search ftp chip details - deprecated since release-1.2.2.0.\",\n\t\t\tdescription = \"This endpoint has been deprecated since the release-1.2.2.0 and replaced by the GET /ftpchipdetail/v2 endpoint.\")\n\tpublic ResponseWrapper> searchFtpChipDetails(\n\t\t\t@RequestBody @Valid RequestWrapper request) {\n\t\tResponseWrapper> responseWrapper = new ResponseWrapper<>();\n\t\tresponseWrapper.setResponse(ftpChipDetaillService.searchFTPChipDetails(FTPChipDetail.class, request.getRequest()));\n\t\treturn responseWrapper;\n\t}\n\n\t@PreAuthorize(\"hasAnyRole(@authorizedRoles.getPatchdeactivateftm())\")\n\t@PatchMapping(value = \"/{ftmId}\")\n\t@Operation(summary = \"This endpoint deactivates the FTM chip details based on the FTM chip details Id.\",\n\tdescription = \"Available since release-1.2.2.0. This endpoint is configured for the roles FTM_PROVIDER or PARTNER_ADMIN.\")\n\t@io.swagger.v3.oas.annotations.responses.ApiResponses(value = {\n\t\t\t@io.swagger.v3.oas.annotations.responses.ApiResponse(responseCode = \"200\", description = \"OK\"),\n\t\t\t@io.swagger.v3.oas.annotations.responses.ApiResponse(responseCode = \"401\", description = \"Unauthorized\", content = @Content(schema = @Schema(hidden = true))),\n\t\t\t@io.swagger.v3.oas.annotations.responses.ApiResponse(responseCode = \"403\", description = \"Forbidden\", content = @Content(schema = @Schema(hidden = true)))\n\t})\n\tpublic ResponseWrapperV2 deactivateFtm(@PathVariable(\"ftmId\") @NotBlank String ftmId, @RequestBody @Valid RequestWrapperV2\n\t\t\trequestWrapper) {\n\t\tOptional> validationResponse = requestValidator.validate(patchDeactivateFtm, requestWrapper);\n\t\tif (validationResponse.isPresent()) {\n\t\t\treturn validationResponse.get();\n\t\t}\n\t\treturn ftpChipDetaillService.deactivateFtm(ftmId, requestWrapper.getRequest());\n\t}\n\n\t@PreAuthorize(\"hasAnyRole(@authorizedRoles.getGetoriginalftmcertificate())\")\n\t@RequestMapping(value = \"/{ftmId}/certificate-data\", method = RequestMethod.GET)\n\t@Operation(summary = \"This endpoint fetches both the CA signed certificate uploaded by the FTM Chip Provider and the MOSIP signed certificate generated by PMS\",\n\t\t\tdescription = \"Available since release-1.2.2.0. The endpoint is configured for the roles FTM_PROVIDER or PARTNER_ADMIN.\")\n\t@io.swagger.v3.oas.annotations.responses.ApiResponses(value = {@io.swagger.v3.oas.annotations.responses.ApiResponse(responseCode = \"200\", description = \"OK\"),\n\t\t\t@io.swagger.v3.oas.annotations.responses.ApiResponse(responseCode = \"401\", description = \"Unauthorized\", content = @Content(schema = @Schema(hidden = true))),\n\t\t\t@io.swagger.v3.oas.annotations.responses.ApiResponse(responseCode = \"403\", description = \"Forbidden\", content = @Content(schema = @Schema(hidden = true)))})\n\tpublic ResponseWrapperV2 getFtmCertificateData(\n\t\t\t@ApiParam(\"To download original FTM certificate.\") @PathVariable(\"ftmId\") @NotNull String ftmId) throws JsonParseException, JsonMappingException, JsonProcessingException, IOException, CertificateException {\n\t\tfeatureAvailabilityUtil.validateCaSignedPartnerCertificateFeatureEnabled();\n\t\treturn ftpChipDetaillService.getFtmCertificateData(ftmId);\n\t}\n\n\t@PreAuthorize(\"hasAnyRole(@authorizedRoles.getGetpartnersftmchipdetails())\")\n\t@GetMapping(value = \"/v2\")\n\t@Operation(summary = \"This endpoint retrieves a list of all FTM Chip details created by all the FTM Providers.\",\n\tdescription = \"Available since release-1.2.2.0. This endpoint supports pagination, sorting, and filtering. It is configured for the role PARTNER_ADMIN.\")\n\t@io.swagger.v3.oas.annotations.responses.ApiResponses(value = {\n\t\t\t@io.swagger.v3.oas.annotations.responses.ApiResponse(responseCode = \"200\", description = \"OK\"),\n\t\t\t@io.swagger.v3.oas.annotations.responses.ApiResponse(responseCode = \"401\", description = \"Unauthorized\", content = @Content(schema = @Schema(hidden = true))),\n\t\t\t@io.swagger.v3.oas.annotations.responses.ApiResponse(responseCode = \"403\", description = \"Forbidden\", content = @Content(schema = @Schema(hidden = true)))\n\t})\n\tResponseWrapperV2> getPartnersFtmChipDetails(\n\t\t\t@RequestParam(value = \"sortFieldName\", required = false) String sortFieldName,\n\t\t\t@RequestParam(value = \"sortType\", required = false) String sortType,\n\t\t\t@RequestParam(value = \"pageNo\", defaultValue = \"0\") Integer pageNo,\n\t\t\t@RequestParam(value = \"pageSize\", defaultValue = \"8\") Integer pageSize,\n\t\t\t@RequestParam(value = \"partnerId\", required = false) String partnerId,\n\t\t\t@RequestParam(value = \"orgName\", required = false) String orgName,\n\t\t\t@RequestParam(value = \"ftmId\", required = false) String ftmId,\n\t\t\t@RequestParam(value = \"make\", required = false) String make,\n\t\t\t@RequestParam(value = \"model\", required = false) String model,\n\t\t\t@Parameter(\n\t\t\t\t\tdescription = \"Status of FTM\",\n\t\t\t\t\tin = ParameterIn.QUERY,\n\t\t\t\t\tschema = @Schema(allowableValues = {\"approved\", \"rejected\", \"pending_cert_upload\", \"pending_approval\", \"deactivated\"})\n\t\t\t)\n\t\t\t@RequestParam(value = \"status\", required = false) String status\n\t) {\n\t\tpartnerHelper.validateRequestParameters(partnerHelper.ftmAliasToColumnMap, sortFieldName, sortType, pageNo, pageSize);\n\t\tFtmChipFilterDto filterDto = new FtmChipFilterDto();\n\t\tif (partnerId != null) {\n\t\t\tfilterDto.setPartnerId(partnerId.toLowerCase());\n\t\t}\n\t\tif (orgName != null) {\n\t\t\tfilterDto.setOrgName(orgName.toLowerCase());\n\t\t}\n\t\tif (ftmId != null) {\n\t\t\tfilterDto.setFtmId(ftmId.toLowerCase());\n\t\t}\n\t\tif (make != null) {\n\t\t\tfilterDto.setMake(make.toLowerCase());\n\t\t}\n\t\tif (model != null) {\n\t\t\tfilterDto.setModel(model.toLowerCase());\n\t\t}\n\t\tif (status != null) {\n\t\t\tfilterDto.setStatus(status);\n\t\t}\n\t\treturn ftpChipDetaillService.getPartnersFtmChipDetails(sortFieldName, sortType, pageNo, pageSize, filterDto);\n\t}\n\n\t@PreAuthorize(\"hasAnyRole(@authorizedRoles.getGetftmchipdetails())\")\n\t@GetMapping\n\t@Operation(summary = \"This endpoint retrieves a list of all FTM Chip details created by all the FTM Providers associated with the logged in user.\"\n\t, description = \"Available since release-1.2.2.0. This endpoint is configured for the roles FTM_PROVIDER or PARTNER_ADMIN.\")\n\t@io.swagger.v3.oas.annotations.responses.ApiResponses(value = {@io.swagger.v3.oas.annotations.responses.ApiResponse(responseCode = \"200\", description = \"OK\"),\n\t\t\t@io.swagger.v3.oas.annotations.responses.ApiResponse(responseCode = \"401\", description = \"Unauthorized\", content = @Content(schema = @Schema(hidden = true))),\n\t\t\t@io.swagger.v3.oas.annotations.responses.ApiResponse(responseCode = \"403\", description = \"Forbidden\", content = @Content(schema = @Schema(hidden = true)))})\n\tpublic ResponseWrapperV2> ftmChipDetail() {\n\t\treturn ftpChipDetaillService.ftmChipDetail();\n\t}\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/device/controller/SecureBiometricInterfaceController.java", + "title": "SecureBiometricInterfaceController.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/device/controller/SecureBiometricInterfaceController.java", + "language": "java", + "content": "package io.mosip.pms.device.controller;\n\nimport javax.validation.Valid;\nimport javax.validation.constraints.NotBlank;\n\nimport io.mosip.pms.common.dto.PageResponseV2Dto;\nimport io.mosip.pms.common.request.dto.RequestWrapperV2;\nimport io.mosip.pms.common.response.dto.ResponseWrapperV2;\nimport io.mosip.pms.device.dto.SbiFilterDto;\nimport io.mosip.pms.partner.dto.DeviceDto;\nimport io.mosip.pms.device.response.dto.SbiDetailsResponseDto;\nimport io.mosip.pms.device.dto.SbiDetailsDto;\nimport io.mosip.pms.partner.util.PartnerHelper;\nimport io.mosip.pms.common.util.RequestValidator;\nimport io.swagger.v3.oas.annotations.Parameter;\nimport io.swagger.v3.oas.annotations.enums.ParameterIn;\nimport io.swagger.v3.oas.annotations.media.Content;\nimport io.swagger.v3.oas.annotations.media.Schema;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.beans.factory.annotation.Value;\nimport org.springframework.security.access.prepost.PreAuthorize;\nimport org.springframework.web.bind.annotation.PatchMapping;\nimport org.springframework.web.bind.annotation.PostMapping;\nimport org.springframework.web.bind.annotation.PutMapping;\nimport org.springframework.web.bind.annotation.RequestBody;\nimport org.springframework.web.bind.annotation.RequestMapping;\nimport org.springframework.web.bind.annotation.RestController;\nimport org.springframework.web.bind.annotation.GetMapping;\nimport org.springframework.web.bind.annotation.PathVariable;\nimport org.springframework.web.bind.annotation.RequestParam;\n\nimport io.mosip.kernel.core.http.ResponseFilter;\nimport io.mosip.pms.common.dto.FilterValueDto;\nimport io.mosip.pms.common.dto.PageResponseDto;\nimport io.mosip.pms.common.entity.DeviceDetailSBI;\nimport io.mosip.pms.common.request.dto.RequestWrapper;\nimport io.mosip.pms.common.response.dto.ResponseWrapper;\nimport io.mosip.pms.device.authdevice.entity.SecureBiometricInterface;\nimport io.mosip.pms.device.authdevice.service.SecureBiometricInterfaceService;\nimport io.mosip.pms.device.constant.DeviceConstant;\nimport io.mosip.pms.device.request.dto.DeviceDetailSBIMappingDto;\nimport io.mosip.pms.device.request.dto.DeviceSearchDto;\nimport io.mosip.pms.device.request.dto.DeactivateSbiRequestDto;\nimport io.mosip.pms.device.request.dto.SecureBiometricInterfaceCreateDto;\nimport io.mosip.pms.device.request.dto.SecureBiometricInterfaceStatusUpdateDto;\nimport io.mosip.pms.device.request.dto.SecureBiometricInterfaceUpdateDto;\nimport io.mosip.pms.device.request.dto.UpdateDeviceDetailStatusDto;\nimport io.mosip.pms.device.request.dto.DeviceDetailDto;\nimport io.mosip.pms.device.response.dto.FilterResponseCodeDto;\nimport io.mosip.pms.device.response.dto.IdDto;\nimport io.mosip.pms.device.response.dto.MappedDeviceDetailsReponse;\nimport io.mosip.pms.device.response.dto.SbiSearchResponseDto;\nimport io.mosip.pms.device.response.dto.SbiSummaryDto;\nimport io.mosip.pms.device.util.AuditUtil;\nimport io.swagger.annotations.Api;\nimport io.swagger.annotations.ApiResponse;\nimport io.swagger.annotations.ApiResponses;\nimport io.swagger.v3.oas.annotations.Operation;\n\nimport java.util.List;\nimport java.util.Optional;\n\n@RestController\n@RequestMapping(value = \"/securebiometricinterface\")\n@Api(tags = { \"SecureBiometricInterface\" })\npublic class SecureBiometricInterfaceController {\n\n\t@Value(\"${mosip.pms.api.id.add.device.to.sbi.id.post}\")\n\tprivate String postAddDeviceToSbi;\n\n\t@Value(\"${mosip.pms.api.id.deactivate.sbi.patch}\")\n\tprivate String patchDeactivateSbi;\n\n\t@Autowired\n\tSecureBiometricInterfaceService secureBiometricInterface;\n\n\t@Autowired\n\tAuditUtil auditUtil;\n\n\t@Autowired\n\tPartnerHelper partnerHelper;\n\n\t@Autowired\n\tRequestValidator requestValidator;\n\n\t@PreAuthorize(\"hasAnyRole(@authorizedRoles.getPostsecurebiometricinterface())\")\n\t@ResponseFilter\n\t@PostMapping\n\t@Operation(summary = \"Service to save SecureBiometricInterface details\", description = \"Saves SecureBiometricInterface details and return SBI id\")\n\t@ApiResponses({ @ApiResponse(code = 201, message = \"When SecureBiometricInterfaceCreateDto successfully created\"),\n\t\t\t@ApiResponse(code = 400, message = \"When Request body passed is null or invalid\"),\n\t\t\t@ApiResponse(code = 500, message = \"While creating SecureBiometricInterfaceCreateDto any error occured\") })\n\tpublic ResponseWrapper SecureBiometricInterface(\n\t\t\t@Valid @RequestBody RequestWrapper secureBiometricInterfaceCreateDto) {\n\t\tauditUtil.auditRequest(\n\t\t\t\tDeviceConstant.CREATE_API_IS_CALLED + SecureBiometricInterfaceCreateDto.class.getCanonicalName(),\n\t\t\t\tDeviceConstant.AUDIT_SYSTEM,\n\t\t\t\tDeviceConstant.CREATE_API_IS_CALLED + SecureBiometricInterfaceCreateDto.class.getCanonicalName(),\n\t\t\t\t\"AUT-011\", secureBiometricInterfaceCreateDto.getRequest().getProviderId(), \"partnerId\");\n\t\tResponseWrapper responseWrapper = new ResponseWrapper<>();\n\t\tresponseWrapper.setResponse(secureBiometricInterface\n\t\t\t\t.createSecureBiometricInterface(secureBiometricInterfaceCreateDto.getRequest()));\n\t\tauditUtil.auditRequest(\n\t\t\t\tString.format(DeviceConstant.SUCCESSFUL_CREATE,\n\t\t\t\t\t\tSecureBiometricInterfaceCreateDto.class.getCanonicalName()),\n\t\t\t\tDeviceConstant.AUDIT_SYSTEM, String.format(DeviceConstant.SUCCESSFUL_CREATE,\n\t\t\t\t\t\tSecureBiometricInterfaceCreateDto.class.getCanonicalName()),\n\t\t\t\t\"AUT-012\", secureBiometricInterfaceCreateDto.getRequest().getProviderId(), \"partnerId\");\n\t\treturn responseWrapper;\n\n\t}\n\n\t/*\n\t * This endpoint has been deprecated since the release-1.2.2.0\n\t */\n\t@Deprecated(since = \"release-1.2.2.0\")\n\t@PreAuthorize(\"hasAnyRole(@authorizedRoles.getPutsecurebiometricinterface())\")\n\t@ResponseFilter\n\t@PutMapping\n\t@Operation(summary = \"Service to update SecureBiometricInterface - deprecated since release-1.2.2.0.\",\n\t\t\tdescription = \"This endpoint has been deprecated since release-1.2.2.0.\")\n\t@ApiResponses({ @ApiResponse(code = 201, message = \"When SecureBiometricInterface successfully updated\"),\n\t\t\t@ApiResponse(code = 400, message = \"When Request body passed is null or invalid\"),\n\t\t\t@ApiResponse(code = 500, message = \"While updating SecureBiometricInterface any error occured\") })\n\tpublic ResponseWrapper updateSecureBiometricInterface(\n\t\t\t@Valid @RequestBody RequestWrapper secureBiometricInterfaceUpdateDto) {\n\t\tauditUtil.auditRequest(\n\t\t\t\tDeviceConstant.UPDATE_API_IS_CALLED + SecureBiometricInterfaceUpdateDto.class.getCanonicalName(),\n\t\t\t\tDeviceConstant.AUDIT_SYSTEM,\n\t\t\t\tDeviceConstant.UPDATE_API_IS_CALLED + SecureBiometricInterfaceUpdateDto.class.getCanonicalName(),\n\t\t\t\t\"AUT-013\", secureBiometricInterfaceUpdateDto.getRequest().getId(), \"sbiId\");\n\t\tResponseWrapper responseWrapper = new ResponseWrapper<>();\n\t\tresponseWrapper.setResponse(secureBiometricInterface\n\t\t\t\t.updateSecureBiometricInterface(secureBiometricInterfaceUpdateDto.getRequest()));\n\t\tauditUtil.auditRequest(\n\t\t\t\tString.format(DeviceConstant.SUCCESSFUL_UPDATE,\n\t\t\t\t\t\tSecureBiometricInterfaceUpdateDto.class.getCanonicalName()),\n\t\t\t\tDeviceConstant.AUDIT_SYSTEM, String.format(DeviceConstant.SUCCESSFUL_UPDATE,\n\t\t\t\t\t\tSecureBiometricInterfaceUpdateDto.class.getCanonicalName()),\n\t\t\t\t\"AUT-012\", secureBiometricInterfaceUpdateDto.getRequest().getId(), \"sbiId\");\n\t\treturn responseWrapper;\n\t}\n\n\t@PreAuthorize(\"hasAnyRole(@authorizedRoles.getPatchsecurebiometricinterface())\")\n\t@ResponseFilter\n\t@PatchMapping\n\t@Operation(summary = \"Service to approve/reject SecureBiometricInterface\", description = \"Approve SecureBiometricInterface and returns success message\")\n\t@ApiResponses({ @ApiResponse(code = 201, message = \"When SecureBiometricInterface successfully approved/rejected\"),\n\t\t\t@ApiResponse(code = 400, message = \"When Request body passed is null or invalid\"),\n\t\t\t@ApiResponse(code = 500, message = \"While approving/rejecting DeviceDetail any error occured\") })\n\tpublic ResponseWrapper approveSecureBiometricInterface(\n\t\t\t@Valid @RequestBody RequestWrapper secureBiometricInterfaceStatusUpdateDto) {\n\t\tauditUtil.auditRequest(\n\t\t\t\tDeviceConstant.STATUS_UPDATE_API_IS_CALLED + UpdateDeviceDetailStatusDto.class.getCanonicalName(),\n\t\t\t\tDeviceConstant.AUDIT_SYSTEM,\n\t\t\t\tDeviceConstant.STATUS_UPDATE_API_IS_CALLED + UpdateDeviceDetailStatusDto.class.getCanonicalName(),\n\t\t\t\t\"AUT-006\", secureBiometricInterfaceStatusUpdateDto.getRequest().getId(), \"sbiId\");\n\t\tResponseWrapper responseWrapper = new ResponseWrapper<>();\n\t\tresponseWrapper.setResponse(secureBiometricInterface\n\t\t\t\t.updateSecureBiometricInterfaceStatus(secureBiometricInterfaceStatusUpdateDto.getRequest()));\n\t\tauditUtil.auditRequest(\n\t\t\t\tString.format(DeviceConstant.SUCCESSFUL_UPDATE, UpdateDeviceDetailStatusDto.class.getCanonicalName()),\n\t\t\t\tDeviceConstant.AUDIT_SYSTEM,\n\t\t\t\tString.format(DeviceConstant.SUCCESSFUL_UPDATE, UpdateDeviceDetailStatusDto.class.getCanonicalName()),\n\t\t\t\t\"AUT-007\", secureBiometricInterfaceStatusUpdateDto.getRequest().getId(), \"sbiId\");\n\n\t\treturn responseWrapper;\n\t}\n\n\t/*\n\t * This endpoint has been deprecated since the release-1.2.2.0\n\t * It has been replaced by the new GET /securebiometricinterface endpoint.\n\t * The functionality provided by this API is now available in the new endpoint.\n\t * Please use the new endpoint for all future requests.\n\t */\n\t@Deprecated(since = \"release-1.2.2.0\")\n\t@ResponseFilter\n\t@PostMapping(\"/search\")\n\t@PreAuthorize(\"hasAnyRole(@authorizedRoles.getPostsecurebiometricinterfacesearch())\")\n\t@Operation(summary = \"Service to search SecureBiometricInterface details - deprecated since release-1.2.2.0.\",\n\t\t\tdescription = \"This endpoint has been deprecated since the release-1.2.2.0 and replaced by the GET /securebiometricinterface endpoint.\")\n\tpublic ResponseWrapper> searchSecureBiometric(\n\t\t\t@RequestBody @Valid RequestWrapper request) {\n\t\tResponseWrapper> responseWrapper = new ResponseWrapper<>();\n\t\tresponseWrapper.setResponse(secureBiometricInterface\n\t\t\t\t.searchSecureBiometricInterface(SecureBiometricInterface.class, request.getRequest()));\n\t\treturn responseWrapper;\n\t}\n\n\t/*\n\t * This endpoint has been deprecated since the release-1.2.2.0\n\t * It has been replaced by the new POST /securebiometricinterface/{sbiId}/devices endpoint.\n\t * The functionality provided by this API is now available in the new endpoint.\n\t * Please use the new endpoint for all future requests.\n\t */\n\t@Deprecated(since = \"release-1.2.2.0\")\n\t@ResponseFilter\n\t@PutMapping(\"/devicedetails/map\")\n\t@PreAuthorize(\"hasAnyRole(@authorizedRoles.getPutsecurebiometricinterfacedevicedetailsmap())\")\n\t@Operation(summary = \"Service to map device details with sbi - deprecated since release-1.2.2.0.\",\n\t\t\tdescription = \"This endpoint has been deprecated since the release-1.2.2.0 and replaced by the POST /securebiometricinterface/{sbiId}/devices endpoint.\")\n\tpublic ResponseWrapper mapDeviceDetails(\n\t\t\t@RequestBody @Valid RequestWrapper request) {\n\t\tResponseWrapper responseWrapper = new ResponseWrapper<>();\n\t\tresponseWrapper.setResponse(secureBiometricInterface.mapDeviceDetailAndSbi(request.getRequest()));\n\t\treturn responseWrapper;\n\t}\n\n\t/*\n\t * This endpoint has been deprecated since the release-1.2.2.0\n\t */\n\t@Deprecated(since = \"release-1.2.2.0\")\n\t@ResponseFilter\n\t@PutMapping(\"/devicedetails/map/remove\")\n\t@PreAuthorize(\"hasAnyRole(@authorizedRoles.getPutsecurebiometricinterfacedevicedetailsmapremove())\")\n\t@Operation(summary = \"Service to remove mapped device details with sbi - deprecated since release-1.2.2.0.\",\n\t\t\tdescription = \"This endpoint has been deprecated since release-1.2.2.0.\")\n\tpublic ResponseWrapper removeMappedDeviceDetails(\n\t\t\t@RequestBody @Valid RequestWrapper request) {\n\t\tResponseWrapper responseWrapper = new ResponseWrapper<>();\n\t\tresponseWrapper.setResponse(secureBiometricInterface.deleteDeviceDetailAndSbiMapping(request.getRequest()));\n\t\treturn responseWrapper;\n\t}\n\n\t/*\n\t * This endpoint has been deprecated since the release-1.2.2.0\n\t * It has been replaced by the new GET /securebiometricinterface/{sbiId}/devices endpoint.\n\t * The functionality provided by this API is now available in the new endpoint.\n\t * Please use the new endpoint for all future requests.\n\t */\n\t@Deprecated(since = \"release-1.2.2.0\")\n\t@ResponseFilter\n\t@PostMapping(\"/devicedetails/map/search\")\n\t@PreAuthorize(\"hasAnyRole(@authorizedRoles.getPostsecurebiometricinterfacedevicedetailsmapsearch())\")\n\t@Operation(summary = \"Service to search mapped device details and SecureBiometricInterface details - deprecated since release-1.2.2.0.\",\n\t\t\tdescription = \"This endpoint has been deprecated since the release-1.2.2.0 and replaced by the GET /securebiometricinterface/{sbiId}/devices endpoint.\")\n\tpublic ResponseWrapper> searchMappedDeviceDetails(\n\t\t\t@RequestBody @Valid RequestWrapper request) {\n\t\tResponseWrapper> responseWrapper = new ResponseWrapper<>();\n\t\tresponseWrapper.setResponse(\n\t\t\t\tsecureBiometricInterface.searchMappedDeviceDetails(DeviceDetailSBI.class, request.getRequest()));\n\t\treturn responseWrapper;\n\t}\n\n\t/*\n\t * This endpoint has been deprecated since the release-1.2.2.0\n\t * It has been replaced by the new GET /securebiometricinterface endpoint.\n\t * The functionality provided by this API is now available in the new endpoint.\n\t * Please use the new endpoint for all future requests.\n\t */\n\t@Deprecated(since = \"release-1.2.2.0\")\n\t@ResponseFilter\n\t@PostMapping(\"/filtervalues\")\n\t@PreAuthorize(\"hasAnyRole(@authorizedRoles.getPostsecurebiometricinterfacefiltervalues())\")\n\t@Operation(summary = \"Service to filter SBI's - deprecated since release-1.2.2.0.\",\n\t\t\tdescription = \"This endpoint has been deprecated since the release-1.2.2.0 and replaced by the GET /securebiometricinterface endpoint.\")\n\tpublic ResponseWrapper filterValues(\n\t\t\t@RequestBody @Valid RequestWrapper request) {\n\t\tResponseWrapper responseWrapper = new ResponseWrapper<>();\n\t\tresponseWrapper.setResponse(secureBiometricInterface.filterValues(request.getRequest()));\n\t\treturn responseWrapper;\n\t}\n\n\t@PreAuthorize(\"hasAnyRole(@authorizedRoles.getPostadddevicetosbi())\")\n\t@PostMapping(value = \"/{sbiId}/devices\")\n\t@Operation(summary = \"This endpoint adds a new Device and creates an inactive mapping between the device and the given SBI.\", \n\tdescription = \"Available since release-1.2.2.0. This endpoint is configured for the roles DEVICE_PROVIDER or PARTNER_ADMIN.\")\n\t@io.swagger.v3.oas.annotations.responses.ApiResponses(value = {\n\t\t\t@io.swagger.v3.oas.annotations.responses.ApiResponse(responseCode = \"200\", description = \"OK\"),\n\t\t\t@io.swagger.v3.oas.annotations.responses.ApiResponse(responseCode = \"401\", description = \"Unauthorized\", content = @Content(schema = @Schema(hidden = true))),\n\t\t\t@io.swagger.v3.oas.annotations.responses.ApiResponse(responseCode = \"403\", description = \"Forbidden\", content = @Content(schema = @Schema(hidden = true)))\n\t})\n\tpublic ResponseWrapperV2 addDeviceToSbi(@PathVariable(\"sbiId\") @NotBlank String sbiId, @RequestBody @Valid RequestWrapperV2 requestWrapper) {\n\t\tOptional> validationResponse = requestValidator.validate(postAddDeviceToSbi, requestWrapper);\n\t\tif (validationResponse.isPresent()) {\n\t\t\treturn validationResponse.get();\n\t\t}\n\t\treturn secureBiometricInterface.addDeviceToSbi(requestWrapper.getRequest(), sbiId);\n\t}\n\n\t@PreAuthorize(\"hasAnyRole(@authorizedRoles.getGetsbidetails())\")\n\t@GetMapping(value = \"/{sbiId}/devices\")\n\t@Operation(summary = \"This endpoint fetches the list of Devices associated with a given SBI Id\", \n\tdescription = \"Available since release-1.2.2.0. This endpoint is configured for the roles DEVICE_PROVIDER or PARTNER_ADMIN.\")\n\t@io.swagger.v3.oas.annotations.responses.ApiResponses(value = {\n\t\t\t@io.swagger.v3.oas.annotations.responses.ApiResponse(responseCode = \"200\", description = \"OK\"),\n\t\t\t@io.swagger.v3.oas.annotations.responses.ApiResponse(responseCode = \"401\", description = \"Unauthorized\", content = @Content(schema = @Schema(hidden = true))),\n\t\t\t@io.swagger.v3.oas.annotations.responses.ApiResponse(responseCode = \"403\", description = \"Forbidden\", content = @Content(schema = @Schema(hidden = true)))\n\t})\n\tpublic ResponseWrapperV2> getAllDevicesForSbi(@PathVariable String sbiId) {\n\t\treturn secureBiometricInterface.getAllDevicesForSbi(sbiId);\n\t}\n\n\t@PreAuthorize(\"hasAnyRole(@authorizedRoles.getPatchdeactivatesbi())\")\n\t@PatchMapping(value = \"/{sbiId}\")\n\t@Operation(summary = \"This endpoint deactivates an SBI along with associated Devices.\",\n\t\t\tdescription = \"Available since release-1.2.2.0. This endpoint is configured for the roles DEVICE_PROVIDER or PARTNER_ADMIN.\")\n\t@io.swagger.v3.oas.annotations.responses.ApiResponses(value = {\n\t\t\t@io.swagger.v3.oas.annotations.responses.ApiResponse(responseCode = \"200\", description = \"OK\"),\n\t\t\t@io.swagger.v3.oas.annotations.responses.ApiResponse(responseCode = \"401\", description = \"Unauthorized\", content = @Content(schema = @Schema(hidden = true))),\n\t\t\t@io.swagger.v3.oas.annotations.responses.ApiResponse(responseCode = \"403\", description = \"Forbidden\", content = @Content(schema = @Schema(hidden = true)))\n\t})\n\tpublic ResponseWrapperV2 deactivateSbi(@PathVariable(\"sbiId\") @NotBlank String sbiId, @RequestBody @Valid RequestWrapperV2\n\t\t\trequestWrapper) {\n\t\tOptional> validationResponse = requestValidator.validate(patchDeactivateSbi, requestWrapper);\n\t\tif (validationResponse.isPresent()) {\n\t\t\treturn validationResponse.get();\n\t\t}\n\t\treturn secureBiometricInterface.deactivateSbi(sbiId, requestWrapper.getRequest());\n\t}\n\n\t@PreAuthorize(\"hasAnyRole(@authorizedRoles.getGetallsbidetails())\")\n\t@GetMapping\n\t@Operation(summary = \"This endpoint retrieves a list of all SBIs created by the Device Providers.\",\n\tdescription = \"Available since release-1.2.2.0. This endpoint supports pagination, sorting, and and filtering based on optional query parameters. If the token used to access this endpoint, does not have the PARTNER_ADMIN role, then it will fetch all SBIs created by all the partners associated with the logged in user only. If the token used to access this endpoint, has PARTNER_ADMIN role, then it will fetch all the SBIs created by all the partners.\")\n\t@io.swagger.v3.oas.annotations.responses.ApiResponses(value = {\n\t\t\t@io.swagger.v3.oas.annotations.responses.ApiResponse(responseCode = \"200\", description = \"OK\"),\n\t\t\t@io.swagger.v3.oas.annotations.responses.ApiResponse(responseCode = \"401\", description = \"Unauthorized\", content = @Content(schema = @Schema(hidden = true))),\n\t\t\t@io.swagger.v3.oas.annotations.responses.ApiResponse(responseCode = \"403\", description = \"Forbidden\", content = @Content(schema = @Schema(hidden = true)))\n\t})\n\tResponseWrapperV2> getAllSbiDetails(\n\t\t\t@RequestParam(value = \"sortFieldName\", required = false) String sortFieldName,\n\t\t\t@RequestParam(value = \"sortType\", required = false) String sortType,\n\t\t\t@RequestParam(value = \"pageNo\", required = false) Integer pageNo,\n\t\t\t@RequestParam(value = \"pageSize\", required = false) Integer pageSize,\n\t\t\t@RequestParam(value = \"partnerId\", required = false) String partnerId,\n\t\t\t@RequestParam(value = \"orgName\", required = false) String orgName,\n\t\t\t@RequestParam(value = \"sbiId\", required = false) String sbiId,\n\t\t\t@RequestParam(value = \"sbiVersion\", required = false) String sbiVersion,\n\t\t\t@Parameter(\n\t\t\t\t\tdescription = \"Status of SBI\",\n\t\t\t\t\tin = ParameterIn.QUERY,\n\t\t\t\t\tschema = @Schema(allowableValues = {\"approved\", \"rejected\", \"pending_approval\", \"deactivated\"})\n\t\t\t)\n\t\t\t@RequestParam(value = \"status\", required = false) String status,\n\t\t\t@Parameter(\n\t\t\t\t\tdescription = \"Status of SBI based on expiry date time\",\n\t\t\t\t\tin = ParameterIn.QUERY,\n\t\t\t\t\tschema = @Schema(allowableValues = {\"expired\", \"valid\"})\n\t\t\t)\n\t\t\t@RequestParam(value = \"sbiExpiryStatus\", required = false) String sbiExpiryStatus\n\t) {\n\t\tpartnerHelper.validateRequestParameters(partnerHelper.sbiAliasToColumnMap, sortFieldName, sortType, pageNo, pageSize);\n\t\tSbiFilterDto filterDto = new SbiFilterDto();\n\t\tif (partnerId != null) {\n\t\t\tfilterDto.setPartnerId(partnerId.toLowerCase());\n\t\t}\n\t\tif (orgName != null) {\n\t\t\tfilterDto.setOrgName(orgName.toLowerCase());\n\t\t}\n\t\tif (sbiId != null) {\n\t\t\tfilterDto.setSbiId(sbiId.toLowerCase());\n\t\t}\n\t\tif (sbiVersion != null) {\n\t\t\tfilterDto.setSbiVersion(sbiVersion.toLowerCase());\n\t\t}\n\t\tif (status != null) {\n\t\t\tfilterDto.setStatus(status);\n\t\t}\n\t\tif (sbiExpiryStatus != null) {\n\t\t\tfilterDto.setSbiExpiryStatus(sbiExpiryStatus);\n\t\t}\n\t\treturn secureBiometricInterface.getAllSbiDetails(sortFieldName, sortType, pageNo, pageSize, filterDto);\n\t}\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/device/exception/BaseUncheckedException.java", + "title": "BaseUncheckedException.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/device/exception/BaseUncheckedException.java", + "language": "java", + "content": "package io.mosip.pms.device.exception;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\n/**\n * This is the base class for all MOSIP unchecked exceptions.\n * \n * {@code BaseUncheckedException} is the superclass of those exceptions that can\n * be thrown during the normal operation of the Java Virtual Machine.\n *\n *

    \n * {@code RuntimeException} and its subclasses are unchecked\n * exceptions. Unchecked exceptions do not need to be declared in\n * a method or constructor's {@code throws} clause if they can be thrown by the\n * execution of the method or constructor and propagate outside the method or\n * constructor boundary.\n *\n * @author sanjeev.shrivastava Compile-Time Checking of Exceptions\n */\n\npublic class BaseUncheckedException extends RuntimeException {\n\n\tprivate static final long serialVersionUID = -875003872780128394L;\n\tpublic static final String EMPTY_SPACE = \" \";\n\tprivate final List infoItems = new ArrayList<>();\n\n\t/**\n\t * Constructs a new unchecked exception\n\t */\n\tpublic BaseUncheckedException() {\n\t\tsuper();\n\t}\n\n\t/**\n\t * Constructs a new checked exception with errorMessage\n\t * \n\t * @param errorMessage the detail message.\n\t */\n\tpublic BaseUncheckedException(String errorMessage) {\n\t\tsuper(errorMessage);\n\t}\n\n\t/**\n\t * Constructs a new unchecked exception with the specified detail message and\n\t * error code.\n\t *\n\t * @param errorMessage the detail message.\n\t * @param errorCode the error code.\n\t * \n\t */\n\tpublic BaseUncheckedException(String errorCode, String errorMessage) {\n\t\tsuper(errorCode + \" --> \" + errorMessage);\n\t\taddInfo(errorCode, errorMessage);\n\t}\n\n\t/**\n\t * Constructs a new unchecked exception with the specified detail message and\n\t * error code and error cause.\n\t *\n\t * \n\t * @param errorCode the error code\n\t * @param errorMessage the detail message.\n\t * @param rootCause the specified cause\n\t */\n\tpublic BaseUncheckedException(String errorCode, String errorMessage, Throwable rootCause) {\n\t\tsuper(errorCode + \" --> \" + errorMessage, rootCause);\n\t\taddInfo(errorCode, errorMessage);\n\t\tif (rootCause instanceof BaseUncheckedException) {\n\t\t\tBaseUncheckedException bue = (BaseUncheckedException) rootCause;\n\t\t\tinfoItems.addAll(bue.infoItems);\n\t\t}\n\t}\n\n\t/*\n\t * Returns a String object that can be used to get the exception message.\n\t * \n\t * @see java.lang.Throwable#getMessage()\n\t */\n\t@Override\n\tpublic String getMessage() {\n\t\treturn buildMessage(super.getMessage(), getCause());\n\t\t\n\t}\n\n\t/**\n\t * This method add the information of error code and error message.\n\t * \n\t * @param errorCode the error code\n\t * @param errorText the detail message.\n\t * @return the instance of current BaseCheckedException\n\t */\n\tpublic BaseUncheckedException addInfo(String errorCode, String errorText) {\n\t\tthis.infoItems.add(new InfoItem(errorCode, errorText));\n\t\treturn this;\n\t}\n\n\t/**\n\t * Returns the list of error codes.\n\t * \n\t * @return the list of error codes\n\t */\n\tpublic List getCodes() {\n\t\tList codes = new ArrayList<>();\n\n\t\tfor (int i = this.infoItems.size() - 1; i >= 0; i--) {\n\t\t\tcodes.add(this.infoItems.get(i).errorCode);\n\t\t}\n\n\t\treturn codes;\n\t}\n\n\t/**\n\t * Returns the list of exception messages.\n\t * \n\t * @return the list of exception messages\n\t */\n\tpublic List getErrorTexts() {\n\t\tList errorTexts = new ArrayList<>();\n\n\t\tfor (int i = this.infoItems.size() - 1; i >= 0; i--) {\n\t\t\terrorTexts.add(this.infoItems.get(i).errorText);\n\t\t}\n\n\t\treturn errorTexts;\n\t}\n\n\t/**\n\t * Return the last error code.\n\t * \n\t * @return the last error code\n\t */\n\tpublic String getErrorCode() {\n\t\treturn infoItems.get(0).errorCode;\n\t}\n\n\t/**\n\t * Return the last exception message.\n\t * \n\t * @return the last exception message\n\t */\n\tpublic String getErrorText() {\n\t\treturn infoItems.get(0).errorText;\n\t}\n\t\n\tpublic static String buildMessage(String message, Throwable cause) {\n\t\tif (cause != null) {\n\t\t\tStringBuilder sb = new StringBuilder();\n\t\t\tif (message != null) {\n\t\t\t\tsb.append(message).append(\"; \");\n\t\t\t}\n\t\t\tsb.append(\"\\n\");\n\t\t\tsb.append(\"nested exception is \").append(cause);\n\t\t\treturn sb.toString();\n\t\t} else {\n\t\t\treturn message;\n\t\t}\n\t\t}\n\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/device/exception/DeviceServiceException.java", + "title": "DeviceServiceException.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/device/exception/DeviceServiceException.java", + "language": "java", + "content": "package io.mosip.pms.device.exception;\n\nimport io.mosip.kernel.core.exception.BaseUncheckedException;\n\npublic class DeviceServiceException extends BaseUncheckedException {\n\n\t/**\n\t * \n\t */\n\tprivate static final long serialVersionUID = 5802805689689326166L;\n\n\tpublic DeviceServiceException(String errorCode, String errorMessage) {\n\t\tsuper(errorCode, errorMessage);\n\t}\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/device/exception/DeviceValidationException.java", + "title": "DeviceValidationException.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/device/exception/DeviceValidationException.java", + "language": "java", + "content": "package io.mosip.pms.device.exception;\n\nimport java.util.List;\n\n\nimport io.mosip.kernel.core.exception.ServiceError;\n\npublic class DeviceValidationException extends BaseUncheckedException {\n\t\n\tprivate static final long serialVersionUID = 8764526395763989084L;\n\n\tprivate List errors;\n\n\tpublic DeviceValidationException(List errors) {\n\t\tthis.errors = errors;\n\t}\n\n\tpublic List getErrors() {\n\t\treturn errors;\n\t}\n\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/exception/PartnerServiceResponseExceptionHandler.java", + "title": "PartnerServiceResponseExceptionHandler.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/exception/PartnerServiceResponseExceptionHandler.java", + "language": "java", + "content": "package io.mosip.pms.exception;\n\nimport java.io.IOException;\nimport java.time.LocalDateTime;\nimport java.time.ZoneId;\nimport java.util.ArrayList;\nimport java.util.LinkedHashMap;\nimport java.util.List;\nimport java.util.Map;\n\nimport javax.servlet.http.HttpServletRequest;\n\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.http.HttpHeaders;\nimport org.springframework.http.HttpStatus;\nimport org.springframework.http.ResponseEntity;\nimport org.springframework.validation.FieldError;\nimport org.springframework.web.bind.MethodArgumentNotValidException;\nimport org.springframework.web.bind.annotation.ExceptionHandler;\nimport org.springframework.web.bind.annotation.RestControllerAdvice;\nimport org.springframework.web.context.request.WebRequest;\nimport org.springframework.web.servlet.mvc.method.annotation.ResponseEntityExceptionHandler;\nimport org.springframework.web.util.ContentCachingRequestWrapper;\n\nimport com.fasterxml.jackson.databind.JsonNode;\nimport com.fasterxml.jackson.databind.ObjectMapper;\n\nimport io.mosip.kernel.core.authmanager.exception.AuthZException;\nimport io.mosip.kernel.core.exception.ServiceError;\nimport io.mosip.pms.common.exception.ApiAccessibleException;\nimport io.mosip.pms.common.exception.ValidationException;\nimport io.mosip.pms.common.request.dto.ErrorResponse;\nimport io.mosip.pms.common.response.dto.ResponseWrapper;\nimport io.mosip.pms.common.response.dto.ValidateResponseWrapper;\nimport io.mosip.pms.device.exception.DeviceServiceException;\nimport io.mosip.pms.device.exception.DeviceValidationException;\nimport io.mosip.pms.partner.constant.ErrorCode;\nimport io.mosip.pms.partner.exception.PartnerServiceException;\nimport io.mosip.pms.partner.manager.exception.PartnerManagerServiceException;\nimport io.mosip.pms.partner.misp.exception.MISPServiceException;\n\n@RestControllerAdvice\npublic class PartnerServiceResponseExceptionHandler extends ResponseEntityExceptionHandler {\n\n\t@Autowired\n\tprivate ObjectMapper objectMapper;\n\n\tString msg = \"mosip.partnermanagement\";\n\tString version = \"1.0\";\n\n\t@Override\n\tprotected ResponseEntity handleMethodArgumentNotValid(MethodArgumentNotValidException ex,\n\t\t\tHttpHeaders headers, HttpStatus status, WebRequest request) {\n\t\tMap body = new LinkedHashMap<>();\n\t\tbody.put(\"id\", null);\n\t\tbody.put(\"version\", null);\n\t\tbody.put(\"metadata\", null);\n\t\tbody.put(\"response\", null);\n\t\tbody.put(\"responsetime\", LocalDateTime.now(ZoneId.of(\"UTC\")));\n List fieldErrors = ex.getBindingResult().getFieldErrors();\n FieldError fieldError = fieldErrors.get(0);\n \n\t\tErrorResponse errorResponse = new ErrorResponse();\n\t\terrorResponse.setErrorCode(ErrorCode.MISSING_PARTNER_INPUT_PARAMETER.getErrorCode());\n\t\terrorResponse.setMessage(\"Invalid request parameter - \" + fieldError.getDefaultMessage() + \" :\" + fieldError.getField());\n\t\tList errors = new ArrayList<>();\n\t\terrors.add(errorResponse);\n\t\tbody.put(\"errors\", errors);\n\t\treturn new ResponseEntity<>(body, headers, HttpStatus.OK);\n\t}\n\t\n\t@ExceptionHandler(MISPServiceException.class)\n\tpublic ResponseEntity> getExcepionMassages(\n\t\t\tfinal HttpServletRequest httpServletRequest, final MISPServiceException exception) {\n\t\tResponseWrapper responseError = new ResponseWrapper<>();\n\t\tErrorResponse errorResponse = new ErrorResponse();\n\t\terrorResponse.setErrorCode(exception.getErrorCode());\n\t\terrorResponse.setMessage(exception.getErrorText());\n\t\tresponseError.getErrors().add(errorResponse);\n\t\tresponseError.setId(msg);\n\t\tresponseError.setVersion(version);\n\t\treturn new ResponseEntity<>(responseError, HttpStatus.OK);\n\t}\n\t\n\t@ExceptionHandler(PartnerServiceException.class)\n\tpublic ResponseEntity> getExcepionMassages(\n\t\t\tfinal HttpServletRequest httpServletRequest, final PartnerServiceException exception) {\n\t\tResponseWrapper responseError = new ResponseWrapper<>();\n\t\tErrorResponse errorResponse = new ErrorResponse();\n\t\terrorResponse.setErrorCode(exception.getErrorCode());\n\t\terrorResponse.setMessage(exception.getErrorText());\n\t\tresponseError.getErrors().add(errorResponse);\n\t\tresponseError.setId(msg);\n\t\tresponseError.setVersion(version);\n\t\treturn new ResponseEntity<>(responseError, HttpStatus.OK);\n\t}\n\n\t/**\n\t * @param httpServletRequest\n\t * this class contains servlet request\n\t * @param exception\n\t * this class contains Partner Does Not Exists Exception\n\t * @return this class contains errorCode and message\n\t * @throws IOException\n\t * this class contains Checked Exception\n\t */\n\t@ExceptionHandler(PartnerManagerServiceException.class)\n\tpublic ResponseEntity> getExcepionsMassages(\n\t\t\tfinal HttpServletRequest httpServletRequest, final PartnerManagerServiceException exception) {\n\t\tResponseWrapper responseError = new ResponseWrapper<>();\n\t\tErrorResponse errorResponse = new ErrorResponse();\n\t\terrorResponse.setErrorCode(exception.getErrorCode());\n\t\terrorResponse.setMessage(exception.getErrorText());\n\t\tresponseError.setId(msg);\n\t\tresponseError.setVersion(version);\n\t\tresponseError.getErrors().add(errorResponse);\n\t\treturn new ResponseEntity<>(responseError, HttpStatus.OK);\n\t}\n\t\n\t@ExceptionHandler(ValidationException.class)\n\tpublic ResponseEntity> getPartnerServiceExceptionMassages(\n\t\t\tfinal HttpServletRequest httpServletRequest, final ValidationException exception) {\n\t\tResponseWrapper responseError = new ResponseWrapper<>();\n\t\tList errors = new ArrayList<>();\t\t\n\t\tfor (ServiceError serviceError : exception.getErrors()) {\n\t\t\tErrorResponse errorResponse = new ErrorResponse();\n\t\t\terrorResponse.setErrorCode(serviceError.getErrorCode());\n\t\t\terrorResponse.setMessage(serviceError.getMessage());\n\t\t\terrors.add(errorResponse);\n\t\t}\n\t\tresponseError.setId(msg);\n\t\tresponseError.setVersion(version);\n\t\tresponseError.setErrors(errors);\n\t\treturn new ResponseEntity<>(responseError, HttpStatus.OK);\n\t}\n\t\n\t@ExceptionHandler(DeviceValidationException.class)\n\tpublic ResponseEntity> getPartnerServiceExceptionMassages(\n\t\t\tfinal HttpServletRequest httpServletRequest, final DeviceValidationException exception) {\n\t\tValidateResponseWrapper responseError = new ValidateResponseWrapper<>();\n\t\tList errors = new ArrayList<>();\t\t\n\t\tfor (ServiceError serviceError : exception.getErrors()) {\n\t\t\tErrorResponse errorResponse = new ErrorResponse();\n\t\t\terrorResponse.setErrorCode(serviceError.getErrorCode());\n\t\t\terrorResponse.setMessage(serviceError.getMessage());\n\t\t\terrors.add(errorResponse);\n\t\t}\n\t\tresponseError.setId(\"io.mosip.devicemanagement\");\n\t\tresponseError.setVersion(version);\n\t\tresponseError.setErrors(errors);\n\t\treturn new ResponseEntity<>(responseError, HttpStatus.OK);\n\t}\n\t\n\t@ExceptionHandler(DeviceServiceException.class)\n\tpublic ResponseEntity> getPartnerServiceExceptionMassages(\n\t\t\tfinal HttpServletRequest httpServletRequest, final DeviceServiceException exception) {\n\t\tResponseWrapper responseError = new ResponseWrapper<>();\n\t\tErrorResponse errorResponse = new ErrorResponse();\n\t\terrorResponse.setErrorCode(exception.getErrorCode());\n\t\terrorResponse.setMessage(exception.getErrorText());\n\t\tresponseError.setId(msg);\n\t\tresponseError.setVersion(version);\n\t\tresponseError.getErrors().add(errorResponse);\n\t\treturn new ResponseEntity<>(responseError, HttpStatus.OK);\n\t}\n\t\n\t@ExceptionHandler(ApiAccessibleException.class)\n\tpublic ResponseEntity> getPartnerServiceExceptionMassages(\n\t\t\tfinal HttpServletRequest httpServletRequest, final ApiAccessibleException exception) {\n\t\tResponseWrapper responseError = new ResponseWrapper<>();\n\t\tErrorResponse errorResponse = new ErrorResponse();\n\t\terrorResponse.setErrorCode(exception.getErrorCode());\n\t\terrorResponse.setMessage(exception.getErrorText());\n\t\tresponseError.setId(msg);\n\t\tresponseError.setVersion(version);\n\t\tresponseError.getErrors().add(errorResponse);\n\t\treturn new ResponseEntity<>(responseError, HttpStatus.OK);\n\t}\n\t\n\t@ExceptionHandler(AuthZException.class)\n\tpublic ResponseEntity> getPartnerServiceExceptionMassages(\n\t\t\tfinal HttpServletRequest httpServletRequest, final AuthZException exception) {\n\t\tResponseWrapper responseError = new ResponseWrapper<>();\n\t\tErrorResponse errorResponse = new ErrorResponse();\n\t\terrorResponse.setErrorCode(exception.getList().get(0).getErrorCode());\n\t\terrorResponse.setMessage(exception.getList().get(0).getMessage());\n\t\tresponseError.setId(msg);\n\t\tresponseError.setVersion(version);\n\t\tresponseError.getErrors().add(errorResponse);\n\t\treturn new ResponseEntity<>(responseError, HttpStatus.OK);\n\t}\n\t\n\t@ExceptionHandler(io.mosip.pms.common.exception.RequestException.class)\n\tpublic ResponseEntity> getPartnerServiceExceptionMassages(\n\t\t\tfinal HttpServletRequest httpServletRequest, final io.mosip.pms.common.exception.RequestException exception) {\n\t\tResponseWrapper responseError = new ResponseWrapper<>();\n\t\tList errors = new ArrayList<>();\t\t\n\t\tfor (ServiceError serviceError : exception.getErrors()) {\n\t\t\tErrorResponse errorResponse = new ErrorResponse();\n\t\t\terrorResponse.setErrorCode(serviceError.getErrorCode());\n\t\t\terrorResponse.setMessage(serviceError.getMessage());\n\t\t\terrors.add(errorResponse);\n\t\t}\n\t\tresponseError.setId(msg);\n\t\tresponseError.setVersion(version);\n\t\tresponseError.setErrors(errors);\n\t\treturn new ResponseEntity<>(responseError, HttpStatus.OK);\n\t}\n\n\t/**\n\t * @param httpServletRequest\n\t * this class contains servlet request\n\t * @param exception\n\t * this class contains Checked Exception\n\t * @return this class contains errorCode and message\n\t * @throws IOException\n\t * this class contains Checked Exception\n\t */\n\n\t@ExceptionHandler(Exception.class)\n\tpublic ResponseEntity> getAllExcepionMassage(\n\t\t\tfinal HttpServletRequest httpServletRequest, final Exception exception) {\n\t\tResponseWrapper responseError = new ResponseWrapper<>();\n\t\tErrorResponse errorResponse = new ErrorResponse();\n\t\terrorResponse.setMessage(exception.getMessage());\n\t\tresponseError.getErrors().add(errorResponse);\n\t\treturn new ResponseEntity<>(responseError, HttpStatus.OK);\n\t}\n\n\t/**\n\t * @param httpServletRequest\n\t * this class contains servlet request\n\t * @return this class contains errorCode and message\n\t * @throws IOException\n\t * this class contains Checked Exception\n\t */\n\n\t@SuppressWarnings(\"unused\")\n\tprivate ResponseWrapper setErrors(HttpServletRequest httpServletRequest) throws IOException {\n\t\tResponseWrapper responseWrapper = new ResponseWrapper<>();\n\t\tString requestBody = null;\n\t\tif (httpServletRequest instanceof ContentCachingRequestWrapper) {\n\t\t\trequestBody = new String(((ContentCachingRequestWrapper) httpServletRequest).getContentAsByteArray());\n\t\t}\n\n\t\tJsonNode reqNode = objectMapper.readTree(requestBody);\n\t\tresponseWrapper.setId(reqNode.path(\"id\").asText());\n\t\tresponseWrapper.setVersion(reqNode.path(\"version\").asText());\n\t\treturn responseWrapper;\n\t}\n\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/oauth/client/controller/ClientManagementController.java", + "title": "ClientManagementController.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/oauth/client/controller/ClientManagementController.java", + "language": "java", + "content": "package io.mosip.pms.oauth.client.controller;\nimport io.mosip.pms.common.dto.PageResponseV2Dto;\nimport io.mosip.pms.common.response.dto.ResponseWrapperV2;\nimport io.mosip.pms.device.util.AuditUtil;\nimport io.mosip.pms.oauth.client.dto.*;\nimport io.mosip.pms.oidc.client.contant.ClientServiceAuditEnum;\nimport io.mosip.pms.partner.util.FeatureAvailabilityUtil;\nimport io.mosip.pms.partner.util.PartnerHelper;\nimport io.swagger.v3.oas.annotations.Operation;\nimport io.swagger.v3.oas.annotations.Parameter;\nimport io.swagger.v3.oas.annotations.enums.ParameterIn;\nimport io.swagger.v3.oas.annotations.media.Content;\nimport io.swagger.v3.oas.annotations.media.Schema;\nimport io.swagger.v3.oas.annotations.responses.ApiResponse;\nimport io.swagger.v3.oas.annotations.responses.ApiResponses;\nimport io.mosip.pms.oauth.client.service.ClientManagementService;\nimport org.springframework.security.access.prepost.PreAuthorize;\nimport org.springframework.web.bind.annotation.RestController;\n\nimport io.mosip.pms.common.request.dto.RequestWrapper;\nimport io.mosip.pms.common.response.dto.ResponseWrapper;\n\nimport javax.validation.Valid;\n\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.http.MediaType;\nimport org.springframework.web.bind.annotation.*;\n\nimport java.util.List;\n\n@RestController\npublic class ClientManagementController {\n\n\t@Autowired\n\tClientManagementService clientManagementService;\n\n\t@Autowired\n\tPartnerHelper partnerHelper;\n\n\t@Autowired\n\tAuditUtil auditUtil;\n\n\t@Autowired\n\tFeatureAvailabilityUtil featureAvailabilityUtil;\n\n\t@RequestMapping(value = \"/oauth/client\", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)\n\tpublic ResponseWrapper createOAUTHClient(\n\t\t\t@Valid @RequestBody RequestWrapper requestWrapper) throws Exception {\n\t\tfeatureAvailabilityUtil.validateOidcClientFeatureEnabled();\n\t\tvar clientRespDto = clientManagementService.createOAuthClient(requestWrapper.getRequest());\n\t\tvar response = new ResponseWrapper();\n\t\tresponse.setResponse(clientRespDto);\n\t\treturn response;\n\t}\n\t\n\t@RequestMapping(value = \"/oauth/client/{client_id}\", method = RequestMethod.PUT, consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)\n\tpublic ResponseWrapper updateOAUTHClient(@PathVariable(\"client_id\") String clientId,\n\t\t\t@Valid @RequestBody RequestWrapper requestWrapper) throws Exception {\n\t\tfeatureAvailabilityUtil.validateOidcClientFeatureEnabled();\n\t\tvar clientRespDto = clientManagementService.updateOAuthClient(clientId, requestWrapper.getRequest());\n\t\tvar response = new ResponseWrapper();\n\t\tresponse.setResponse(clientRespDto);\n\t\treturn response;\n\t}\n\n\t@RequestMapping(value = \"/oauth/client/{client_id}\", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)\n\tpublic ResponseWrapper getOAuthClient(@PathVariable(\"client_id\") String clientId)\n\t\t\tthrows Exception {\n\t\tfeatureAvailabilityUtil.validateOidcClientFeatureEnabled();\n\t\tvar response = new ResponseWrapper();\n\t\tresponse.setResponse(clientManagementService.getClientDetails(clientId));\n\t\treturn response;\n\t}\n\t\n\t@Deprecated\n\t@RequestMapping(value = \"/oidc/client\", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)\n\tpublic ResponseWrapper createClient(\n\t\t\t@Valid @RequestBody RequestWrapper requestWrapper) throws Exception {\n\t\tfeatureAvailabilityUtil.validateOidcClientFeatureEnabled();\n\t\tvar clientRespDto = clientManagementService.createOIDCClient(requestWrapper.getRequest());\n\t\tvar response = new ResponseWrapper();\n\t\tauditUtil.setAuditRequestDto(ClientServiceAuditEnum.CREATE_CLIENT,requestWrapper.getRequest().getName(),\"clientID\");\n\t\tresponse.setResponse(clientRespDto);\n\t\treturn response;\n\t}\n\t\n\t@Deprecated\n\t@RequestMapping(value = \"/oidc/client/{client_id}\", method = RequestMethod.PUT, consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)\n\tpublic ResponseWrapper updateClient(@PathVariable(\"client_id\") String clientId,\n\t\t\t@Valid @RequestBody RequestWrapper requestWrapper) throws Exception {\n\t\tfeatureAvailabilityUtil.validateOidcClientFeatureEnabled();\n\t\tvar clientRespDto = clientManagementService.updateOIDCClient(clientId, requestWrapper.getRequest());\n\t\tvar response = new ResponseWrapper();\n\t\tauditUtil.setAuditRequestDto(ClientServiceAuditEnum.UPDATE_CLIENT, clientId, \"clientID\");\n\t\tresponse.setResponse(clientRespDto);\n\t\treturn response;\n\t}\n\t\n\t@Deprecated\n\t@RequestMapping(value = \"/oidc/client/{client_id}\", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)\n\tpublic ResponseWrapper getOIDCClient(@PathVariable(\"client_id\") String clientId)\n\t\t\tthrows Exception {\n\t\tfeatureAvailabilityUtil.validateOidcClientFeatureEnabled();\n\t\tvar response = new ResponseWrapper();\n\t\tresponse.setResponse(clientManagementService.getClientDetails(clientId));\n\t\treturn response;\n\t}\n\n\t@PreAuthorize(\"hasAnyRole(@authorizedRoles.getGetoauthpartnersclients())\")\n\t@GetMapping(value = \"/oauth/client\")\n\t@Operation(summary = \"This endpoint retrieves a list of all OAuth clients created by the Auth Partners.\",\n\t\t\tdescription = \"Available since release-1.2.2.0. This endpoint supports pagination, sorting, and and filtering based on optional query parameters. If the token used to access this endpoint, does not have the PARTNER_ADMIN role, then it will fetch all the OAuth clients created by all the partners associated with the logged in user only. If the token used to access this endpoint, has PARTNER_ADMIN role, then it will fetch all the OAuth clients created by all the partners. It is configured for PARTNER_ADMIN and AUTH_PARTNER roles.\")\n\t@ApiResponses(value = {@ApiResponse(responseCode = \"200\", description = \"OK\"),\n\t\t\t@ApiResponse(responseCode = \"401\", description = \"Unauthorized\", content = @Content(schema = @Schema(hidden = true))),\n\t\t\t@ApiResponse(responseCode = \"403\", description = \"Forbidden\", content = @Content(schema = @Schema(hidden = true)))})\n\tpublic ResponseWrapperV2> getPartnersClients(\n\t\t\t@RequestParam(value = \"sortFieldName\", required = false) String sortFieldName,\n\t\t\t@RequestParam(value = \"sortType\", required = false) String sortType,\n\t\t\t@RequestParam(value = \"pageNo\", required = false) Integer pageNo,\n\t\t\t@RequestParam(value = \"pageSize\", required = false) Integer pageSize,\n\t\t\t@RequestParam(value = \"partnerId\", required = false) String partnerId,\n\t\t\t@RequestParam(value = \"orgName\", required = false) String orgName,\n\t\t\t@RequestParam(value = \"policyGroupName\", required = false) String policyGroupName,\n\t\t\t@RequestParam(value = \"policyName\", required = false) String policyName,\n\t\t\t@RequestParam(value = \"clientName\", required = false) String clientName,\n\t\t\t@Parameter(\n\t\t\t\t\tdescription = \"Status of OAuth client\",\n\t\t\t\t\tin = ParameterIn.QUERY,\n\t\t\t\t\tschema = @Schema(allowableValues = {\"ACTIVE\", \"INACTIVE\"})\n\t\t\t)\n\t\t\t@RequestParam(value = \"status\", required = false) String status\n\t) {\n\t\tfeatureAvailabilityUtil.validateOidcClientFeatureEnabled();\n\t\tpartnerHelper.validateRequestParameters(partnerHelper.oidcClientsAliasToColumnMap, sortFieldName, sortType, pageNo, pageSize);\n\t\tClientFilterDto filterDto = new ClientFilterDto();\n\t\tif (partnerId != null) {\n\t\t\tfilterDto.setPartnerId(partnerId.toLowerCase());\n\t\t}\n\t\tif (orgName != null) {\n\t\t\tfilterDto.setOrgName(orgName.toLowerCase());\n\t\t}\n\t\tif (policyGroupName != null) {\n\t\t\tfilterDto.setPolicyGroupName(policyGroupName.toLowerCase());\n\t\t}\n\t\tif (policyName != null) {\n\t\t\tfilterDto.setPolicyName(policyName.toLowerCase());\n\t\t}\n\t\tif (clientName != null) {\n\t\t\tfilterDto.setClientName(clientName.toLowerCase());\n\t\t}\n\t\tif (status != null) {\n\t\t\tfilterDto.setStatus(status);\n\t\t}\n\t\treturn clientManagementService.getPartnersClients(sortFieldName, sortType, pageNo, pageSize, filterDto);\n\t}\n\t\n}" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/oauth/client/service/impl/ClientManagementServiceImpl.java", + "title": "ClientManagementServiceImpl.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/oauth/client/service/impl/ClientManagementServiceImpl.java", + "language": "java", + "content": "package io.mosip.pms.oauth.client.service.impl;\n\nimport java.security.PublicKey;\nimport java.util.*;\n\nimport com.nimbusds.jose.jwk.ECKey;\nimport com.nimbusds.jose.jwk.JWK;\nimport com.nimbusds.jose.jwk.OctetKeyPair;\nimport com.nimbusds.jose.jwk.RSAKey;\nimport io.mosip.kernel.core.authmanager.authadapter.model.AuthUserDetails;\nimport io.mosip.pms.common.entity.*;\nimport io.mosip.pms.common.entity.ClientDetail;\nimport io.mosip.pms.common.repository.*;\nimport io.mosip.pms.common.response.dto.ResponseWrapperV2;\nimport io.mosip.pms.device.util.AuditUtil;\nimport io.mosip.pms.oauth.client.dto.*;\nimport io.mosip.pms.oidc.client.contant.ClientServiceAuditEnum;\nimport io.mosip.pms.partner.util.MultiPartnerUtil;\nimport io.mosip.pms.partner.util.PartnerHelper;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.beans.factory.annotation.Value;\nimport org.springframework.core.env.Environment;\nimport org.springframework.data.domain.Page;\nimport org.springframework.data.domain.PageRequest;\nimport org.springframework.data.domain.Pageable;\nimport org.springframework.data.domain.Sort;\nimport org.springframework.http.MediaType;\nimport org.springframework.security.core.context.SecurityContextHolder;\nimport org.springframework.stereotype.Service;\n\nimport com.fasterxml.jackson.core.JsonProcessingException;\nimport com.fasterxml.jackson.databind.ObjectMapper;\n\nimport io.mosip.kernel.core.logger.spi.Logger;\nimport io.mosip.kernel.core.util.CryptoUtil;\nimport io.mosip.kernel.core.util.DateUtils;\nimport io.mosip.kernel.core.util.HMACUtils2;\nimport io.mosip.pms.common.constant.ApiAccessibleExceptionConstant;\nimport io.mosip.pms.common.constant.CommonConstant;\nimport io.mosip.pms.common.constant.EventType;\nimport io.mosip.pms.common.dto.ClientPublishDto;\nimport io.mosip.pms.common.dto.PartnerDataPublishDto;\nimport io.mosip.pms.common.dto.PolicyPublishDto;\nimport io.mosip.pms.common.dto.Type;\nimport io.mosip.pms.common.dto.PageResponseV2Dto;\nimport io.mosip.pms.common.exception.ApiAccessibleException;\nimport io.mosip.pms.common.helper.WebSubPublisher;\nimport io.mosip.pms.common.util.AuthenticationContextRefUtil;\nimport io.mosip.pms.common.util.MapperUtils;\nimport io.mosip.pms.common.util.PMSLogger;\nimport io.mosip.pms.common.util.RestUtil;\nimport io.mosip.pms.common.util.UserDetailUtil;\nimport io.mosip.pms.oauth.client.service.ClientManagementService;\nimport io.mosip.pms.partner.constant.ErrorCode;\nimport io.mosip.pms.partner.constant.PartnerConstants;\nimport io.mosip.pms.partner.exception.PartnerServiceException;\nimport io.mosip.pms.partner.response.dto.PartnerCertDownloadResponeDto;\nimport java.io.IOException;\nimport java.time.LocalDateTime;\nimport java.time.ZoneId;\nimport java.util.stream.Collectors;\n\nimport org.json.simple.JSONArray;\nimport org.json.simple.JSONObject;\nimport org.json.simple.parser.JSONParser;\nimport org.json.simple.parser.ParseException;\n\nimport javax.validation.constraints.NotNull;\n\n@Service\npublic class ClientManagementServiceImpl implements ClientManagementService {\n\n\tprivate static final Logger LOGGER = PMSLogger.getLogger(ClientManagementServiceImpl.class);\n\n\tprivate static final String ALLOWED_KYC_ATTRIBUTES = \"allowedKycAttributes\";\n\tprivate static final String ATTRIBUTE_NAME = \"attributeName\";\n\tprivate static final String ALLOWED_AUTH_TYPES = \"allowedAuthTypes\";\n\tprivate static final String AUTH_TYPE = \"authType\";\n\tprivate static final String MANDATORY = \"mandatory\";\n\tprivate static final String AUTH_POLICY_TYPE = \"Auth\";\n\tprivate static final String AUTH_PARTNER_TYPE = \"Auth_Partner\";\n\tprivate static final String ERROR_MESSAGE = \"errorMessage\";\n\tpublic static final String ACTIVE = \"ACTIVE\";\n\tpublic static final String BLANK_STRING = \"\";\n\tpublic static final String VERSION = \"1.0\";\n\tpublic static final String NONE_LANG_KEY = \"@none\";\n\tpublic static final String ENG_KEY = \"eng\";\n\n\t@Value(\"${mosip.pms.api.id.oauth.clients.get}\")\n\tprivate String getClientsId;\n\n\t@Value(\"${mosip.pms.api.id.oauth.partners.clients.get}\")\n\tprivate String getPartnersClientsId;\n\n\t@Autowired\n\tObjectMapper objectMapper;\n\n\t@Autowired\n\tClientDetailRepository clientDetailRepository;\n\n\t@Autowired\n\tClientSummaryRepository clientSummaryRepository;\n\n\t@Autowired\n\tAuthPolicyRepository authPolicyRepository;\n\t\n\t@Autowired\n\tPartnerRepository partnerRepository;\n\n\t@Autowired\n\tPartnerServiceRepository partnerServiceRepository;\n\n\t@Autowired\n\tPartnerPolicyRequestRepository partnerPolicyRequestRepository;\n\n\t@Autowired\n\tRestUtil restUtil;\n\n\t@Autowired\n\tAuditUtil auditUtil;\n\n\t@Autowired\n\tprivate Environment environment;\n\n\t@Autowired\n\tprivate WebSubPublisher webSubPublisher;\n\t\n\t@Autowired\n\tprivate AuthenticationContextRefUtil authenticationContextClassRefUtil;\n\n\t@Autowired\n\tPartnerHelper partnerHelper;\n\n\t@Override\n\tpublic ClientDetailResponse createOIDCClient(ClientDetailCreateRequest createRequest) throws Exception {\n\t\tProcessedClientDetail processedClientDetail = processCreateOIDCClient(createRequest);\n\t\tClientDetail clientDetail = processedClientDetail.getClientDetail();\n\t\tcallEsignetService(clientDetail, environment.getProperty(\"mosip.pms.esignet.oidc-client-create-url\"),false);\n\t\tpublishClientData(processedClientDetail.getPartner(), processedClientDetail.getPolicy(), clientDetail);\n\t\tclientDetailRepository.save(clientDetail);\n\t\tvar response = new ClientDetailResponse();\n\t\tresponse.setClientId(clientDetail.getId());\n\t\tresponse.setStatus(clientDetail.getStatus());\t\t\n\t\treturn response;\n\t}\n\n\tprivate List validateUserId() {\n\t\tString userId = getUserId();\n\t\tList partnerList = partnerServiceRepository.findByUserId(userId);\n\t\treturn partnerList;\n\t}\n\n\tprivate boolean validatePartnerIdBelongsToUser(List partnerList, String partnerId) {\n\t\tboolean isPartnerBelongsToUser = false;\n\t\tfor (Partner partner : partnerList) {\n\t\t\tif (partner.getId().equals(partnerId)) {\n\t\t\t\tisPartnerBelongsToUser = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\treturn isPartnerBelongsToUser;\n\t}\n\n\t@Override\n\tpublic ClientDetailResponse createOAuthClient(ClientDetailCreateRequestV2 createRequest) throws Exception {\n\t\tProcessedClientDetail processedClientDetail = processCreateOIDCClient(createRequest);\n\t\tClientDetail clientDetail = processedClientDetail.getClientDetail();\n\t\tcallEsignetService(clientDetail, environment.getProperty(\"mosip.pms.esignet.oauth-client-create-url\"), true, createRequest.getClientNameLangMap());\n\t\tString clientName=getClientNameLanguageMapAsJsonString(\n\t\t\t\tcreateRequest.getClientNameLangMap(),\n\t\t\t\tcreateRequest.getName()\n\t\t);\n\t\tclientDetail.setName(clientName);\n\t\tpublishClientData(processedClientDetail.getPartner(), processedClientDetail.getPolicy(), clientDetail);\n\t\tclientDetailRepository.save(clientDetail);\n\t\tvar response = new ClientDetailResponse();\n\t\tresponse.setClientId(clientDetail.getId());\n\t\tresponse.setStatus(clientDetail.getStatus());\n\t\treturn response;\n\n\t}\n\t\n\tpublic ProcessedClientDetail processCreateOIDCClient(ClientDetailCreateRequest createRequest) throws Exception {\n\t\t//get the JWK from request\n\t\tMap jwkKeyFromRequest = createRequest.getPublicKey();\n\t\t//get String form of JWK\n\t\tString jwkKeyString = getJWKString(jwkKeyFromRequest);\n\t\t//Generate a new public key using the key's most significant fields from the JWK\n\t\tString generatedPublicKey = createPublicKeyFromJWK(jwkKeyFromRequest);\n\t\t//Create a Base64-encoded hash of the newly generated public key to check for duplicate keys\n\t\tString clientId = CryptoUtil.encodeToURLSafeBase64(HMACUtils2.generateHash(generatedPublicKey.getBytes()));\n\t\tOptional result = clientDetailRepository.findById(clientId);\n\t\tif (result.isPresent()) {\n\t\t\tLOGGER.error(\"createOIDCClient::Client with name {} already exists\", createRequest.getName());\n\t\t\tauditUtil.setAuditRequestDto(ClientServiceAuditEnum.CREATE_CLIENT_FAILURE, createRequest.getName(),\n\t\t\t\t\tclientId);\n\t\t\tthrow new PartnerServiceException(ErrorCode.DUPLICATE_CLIENT.getErrorCode(),\n\t\t\t\t\tErrorCode.DUPLICATE_CLIENT.getErrorMessage());\n\t\t}\n\t\tboolean isAdmin = partnerHelper.isPartnerAdmin(authUserDetails().getAuthorities().toString());\n\t\t// Skip the below checks if the user is logged in as a partner_admin\n\t\tif (!isAdmin) {\n\t\t\t// Validate the logged-in user ID and fetch the list of partners associated to it\n\t\t\tList partnerList = validateUserId();\n\t\t\tif (partnerList.isEmpty()) {\n\t\t\t\tLOGGER.error(\"sessionId\", \"idType\", \"id\", \"User id does not exist.\");\n\t\t\t\tauditUtil.setAuditRequestDto(ClientServiceAuditEnum.CREATE_CLIENT_FAILURE, createRequest.getName(),\n\t\t\t\t\t\tclientId);\n\t\t\t\tthrow new PartnerServiceException(ErrorCode.USER_ID_NOT_EXISTS.getErrorCode(),\n\t\t\t\t\t\tErrorCode.USER_ID_NOT_EXISTS.getErrorMessage());\n\t\t\t}\n\t\t\t// Check if the partner ID belongs to the user.\n\t\t\tboolean isValidPartner = validatePartnerIdBelongsToUser(partnerList, createRequest.getAuthPartnerId());\n\t\t\tif (!isValidPartner) {\n\t\t\t\tLOGGER.error(\"sessionId\", \"idType\", \"id\", \"The given partner ID does not belong to the user.\");\n\t\t\t\tauditUtil.setAuditRequestDto(ClientServiceAuditEnum.CREATE_CLIENT_FAILURE, createRequest.getName(),\n\t\t\t\t\t\tclientId);\n\t\t\t\tthrow new PartnerServiceException(ErrorCode.PARTNER_NOT_BELONGS_TO_THE_USER_CREATE_OIDC.getErrorCode(),\n\t\t\t\t\t\tErrorCode.PARTNER_NOT_BELONGS_TO_THE_USER_CREATE_OIDC.getErrorMessage());\n\t\t\t}\n\t\t}\n\t\tOptional partner = partnerRepository.findById(createRequest.getAuthPartnerId());\n\t\tif(partner.isEmpty()) {\n\t\t\tLOGGER.error(\"createOIDCClient::AuthPartner with Id {} doesn't exists\", createRequest.getAuthPartnerId());\n\t\t\tauditUtil.setAuditRequestDto(ClientServiceAuditEnum.CREATE_CLIENT_FAILURE, createRequest.getName(),\n\t\t\t\t\tclientId);\n\t\t\tthrow new PartnerServiceException(ErrorCode.INVALID_PARTNERID.getErrorCode(), String\n\t\t\t\t\t.format(ErrorCode.INVALID_PARTNERID.getErrorMessage(), createRequest.getAuthPartnerId()));\n\t\t}\n\t\tif(!partner.get().getPartnerTypeCode().equalsIgnoreCase(AUTH_PARTNER_TYPE)) {\n\t\t\tLOGGER.error(\"createOIDCClient::{} cannot create OIDC Client\", partner.get().getPartnerTypeCode());\n\t\t\tauditUtil.setAuditRequestDto(ClientServiceAuditEnum.CREATE_CLIENT_FAILURE, createRequest.getName(),\n\t\t\t\t\tclientId);\n\t\t\tthrow new PartnerServiceException(ErrorCode.INVALID_PARTNER_TYPE.getErrorCode(), String\n\t\t\t\t\t.format(ErrorCode.INVALID_PARTNER_TYPE.getErrorMessage(), partner.get().getPartnerTypeCode()));\n\t\t}\n\t\t//check if Partner is Active or not\n\t\tif (!partner.get().getIsActive()) {\n\t\t\tLOGGER.error(\"createOIDCClient::Partner is not Active with id {}\", clientId);\n\t\t\tauditUtil.setAuditRequestDto(ClientServiceAuditEnum.CREATE_CLIENT_FAILURE, createRequest.getName(),\n\t\t\t\t\tclientId);\n\t\t\tthrow new PartnerServiceException(ErrorCode.PARTNER_NOT_ACTIVE_EXCEPTION.getErrorCode(),\n\t\t\t\t\tErrorCode.PARTNER_NOT_ACTIVE_EXCEPTION.getErrorMessage());\n\t\t}\n\t\tOptional policyFromDb = authPolicyRepository.findById(createRequest.getPolicyId());\n\t\tif (!policyFromDb.isPresent()) {\n\t\t\tLOGGER.error(\"createOIDCClient::Policy with Id {} not exists\", createRequest.getPolicyId());\n\t\t\tauditUtil.setAuditRequestDto(ClientServiceAuditEnum.CREATE_CLIENT_FAILURE, createRequest.getName(),\n\t\t\t\t\tclientId);\n\t\t\tthrow new PartnerServiceException(ErrorCode.POLICY_NOT_EXIST.getErrorCode(),\n\t\t\t\t\tErrorCode.POLICY_NOT_EXIST.getErrorMessage());\n\t\t}\n\t\tAuthPolicy policy = policyFromDb.get();\n\t\tif(!policy.getPolicy_type().equals(AUTH_POLICY_TYPE)) {\n\t\t\tLOGGER.error(\"createOIDCClient::Policy Type Mismatch. {} policy cannot be used to create OIDC Client\",policy.getPolicy_type());\n\t\t\tauditUtil.setAuditRequestDto(ClientServiceAuditEnum.CREATE_CLIENT_FAILURE, createRequest.getName(),\n\t\t\t\t\tclientId);\n\t\t\tthrow new PartnerServiceException(ErrorCode.PARTNER_POLICY_TYPE_MISMATCH.getErrorCode(), String\n\t\t\t\t\t.format(ErrorCode.PARTNER_POLICY_TYPE_MISMATCH.getErrorMessage()));\n\t\t}\n\t\tList policyMappingReqFromDb = partnerPolicyRequestRepository\n\t\t\t\t.findByPartnerIdAndPolicyId(createRequest.getAuthPartnerId(), policyFromDb.get().getId());\n\t\tif (policyMappingReqFromDb.isEmpty()) {\n\t\t\tLOGGER.error(\"createOIDCClient::Policy and partner mapping not exists for policy {} and partner {}\",\n\t\t\t\t\tcreateRequest.getPolicyId(), createRequest.getAuthPartnerId());\n\t\t\tauditUtil.setAuditRequestDto(ClientServiceAuditEnum.CREATE_CLIENT_FAILURE, createRequest.getName(),\n\t\t\t\t\tclientId);\n\t\t\tthrow new PartnerServiceException(ErrorCode.PARTNER_POLICY_MAPPING_NOT_EXISTS.getErrorCode(),\n\t\t\t\t\tErrorCode.PARTNER_POLICY_MAPPING_NOT_EXISTS.getErrorMessage());\n\t\t}\n\t\tList approvedMappedPolicy = partnerPolicyRequestRepository\n\t\t\t\t.findByPartnerIdAndPolicyIdAndStatusCode(partner.get().getUserId(), policy.getId(), PartnerConstants.APPROVED);\n\t\tif (approvedMappedPolicy.isEmpty()) {\n\t\t\tLOGGER.error(\"createOIDCClient::Policy and partner mapping is not approved for policy {} and partner {} and status {}\"\n\t\t\t\t\t, createRequest.getPolicyId(), createRequest.getAuthPartnerId());\n\t\t\tauditUtil.setAuditRequestDto(ClientServiceAuditEnum.CREATE_CLIENT_FAILURE, createRequest.getName(), clientId);\n\t\t\tthrow new PartnerServiceException(ErrorCode.PARTNER_POLICY_NOT_APPROVED.getErrorCode(), ErrorCode.PARTNER_POLICY_NOT_APPROVED.getErrorMessage());\n\t\t}\n\n\t\tClientDetail clientDetail = new ClientDetail();\n\t\tclientDetail.setPublicKey(jwkKeyString);\n\t\tclientDetail.setId(clientId);\n\t\tclientDetail.setName(createRequest.getName());\n\t\tclientDetail.setRpId(createRequest.getAuthPartnerId());\n\t\tclientDetail.setPolicyId(createRequest.getPolicyId());\n\t\tclientDetail.setLogoUri(createRequest.getLogoUri());\n\t\tclientDetail.setRedirectUris(String.join(\",\", createRequest.getRedirectUris()));\n\t\tSet claims = authenticationContextClassRefUtil.getPolicySupportedClaims(getReqAttributeFromPolicyJson(\n\t\t\t\tgetPolicyObject(policyFromDb.get().getPolicyFileId()), ALLOWED_KYC_ATTRIBUTES, ATTRIBUTE_NAME, null));\n\t\tif (claims.isEmpty()) {\n\t\t\tLOGGER.error(\n\t\t\t\t\t\"createOIDCClient::Partner has no User Claims\");\n\t\t\tauditUtil.setAuditRequestDto(ClientServiceAuditEnum.CREATE_CLIENT_FAILURE);\n\t\t\tthrow new PartnerServiceException(ErrorCode.PARTNER_HAVING_NO_CLAIMS.getErrorCode(),\n\t\t\t\t\tErrorCode.PARTNER_HAVING_NO_CLAIMS.getErrorMessage());\n\t\t}\n\t\tclientDetail.setClaims(String.join(\",\",claims));\n\t\tSet acrValues = authenticationContextClassRefUtil.getAuthFactors(getReqAttributeFromPolicyJson(\n\t\t\t\tgetPolicyObject(policyFromDb.get().getPolicyFileId()), ALLOWED_AUTH_TYPES, AUTH_TYPE, MANDATORY));\n\t\tif (acrValues.isEmpty()) {\n\t\t\tLOGGER.error(\n\t\t\t\t\t\"createOIDCClient::Partner has no User Claims\");\n\t\t\tauditUtil.setAuditRequestDto(ClientServiceAuditEnum.CREATE_CLIENT_FAILURE);\n\t\t\tthrow new PartnerServiceException(ErrorCode.PARTNER_HAVING_NO_ACRVALUES.getErrorCode(),\n\t\t\t\t\tErrorCode.PARTNER_HAVING_NO_ACRVALUES.getErrorMessage());\n\t\t}\n\t\tclientDetail.setAcrValues( String.join(\",\",acrValues));\t\t\n\t\tclientDetail.setStatus(ACTIVE);\n\t\tclientDetail.setGrantTypes(String.join(\",\", createRequest.getGrantTypes()));\n\t\tclientDetail.setClientAuthMethods(String.join(\",\", createRequest.getClientAuthMethods()));\n\t\tclientDetail.setCreatedDateTime(LocalDateTime.now(ZoneId.of(\"UTC\")));\n\t\tclientDetail.setCreatedBy(getLoggedInUserId());\n\t\tProcessedClientDetail processedClientDetail = new ProcessedClientDetail();\n\t\tprocessedClientDetail.setClientDetail(clientDetail);\n\t\tprocessedClientDetail.setPartner(policyMappingReqFromDb.get(0).getPartner());\n\t\tprocessedClientDetail.setPolicy(policyFromDb.get());\n\t\treturn processedClientDetail;\n\t}\n\t\n\t\n\n\t/**\n\t * \n\t * @param policyObject\n\t * @param parentAttribute\n\t * @param childAttribute\n\t * @param childAttribute1\n\t * @return\n\t * @throws Exception\n\t */\n\tprivate static Set getReqAttributeFromPolicyJson(@NotNull JSONObject policyObject, String parentAttribute,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t String childAttribute, String filterAttribute) {\n\t\tSet attributes = new HashSet<>();\n\t\tJSONArray parentAttributeObject = (JSONArray) policyObject.get(parentAttribute);\n\t\tfor (int i = 0; i < parentAttributeObject.size(); i++) {\n\t\t\tJSONObject childJsonArray = (JSONObject) parentAttributeObject.get(i);\n\t\t\tString key = (String) childJsonArray.get(childAttribute);\n\t\t\tif (filterAttribute != null && (boolean) childJsonArray.get(filterAttribute)) {\n\t\t\t\tLOGGER.error(\"createOIDCClient::Policy is having mandatory auth. So client cannot be created.\");\n\t\t\t\tthrow new PartnerServiceException(ErrorCode.POLICY_HAVING_MANDATORY_AUTHS.getErrorCode(),\n\t\t\t\t\t\tErrorCode.POLICY_HAVING_MANDATORY_AUTHS.getErrorMessage());\n\t\t\t}\n\t\t attributes.add(key.toLowerCase());\n\t\t}\n\t\treturn attributes;\n\t}\n\n\t/**\n\t * \n\t * @param request\n\t * @return\n\t * @throws Exception \n\t */\n\t@SafeVarargs\n\t@SuppressWarnings(\"unchecked\")\n\tprivate ClientDetailResponse callEsignetService(ClientDetail request, String calleeApi, Boolean isOAuthClient, Map... clientNameLangMap) {\n\t\tRequestWrapper createRequestwrapper = new RequestWrapper<>();\n\t\tcreateRequestwrapper.setRequestTime(DateUtils.getUTCCurrentDateTimeString(CommonConstant.DATE_FORMAT));\n\t\tCreateClientRequestDto dto = new CreateClientRequestDto();\n\t\tdto.setClientId(request.getId());\n\t\tdto.setClientName(request.getName());\n\t\tdto.setRelyingPartyId(request.getRpId());\n\t\tdto.setLogoUri(request.getLogoUri());\n\t\ttry {\n\t\t\tdto.setPublicKey(objectMapper.readValue(request.getPublicKey(), Map.class));\n\t\t} catch (JsonProcessingException e) {\n\t\t\tLOGGER.error(\"Error processing public key JSON: {}\", e.getMessage());\n\t\t}\n\t\tdto.setUserClaims(convertStringToList(request.getClaims()));\n\t\tdto.setAuthContextRefs(convertStringToList(request.getAcrValues()));\n\t\tdto.setRedirectUris(convertStringToList(request.getRedirectUris()));\n\t\tdto.setGrantTypes(convertStringToList(request.getGrantTypes()));\n\t\tdto.setClientAuthMethods(convertStringToList(request.getClientAuthMethods()));\n\t\tif(Boolean.TRUE.equals(isOAuthClient) && clientNameLangMap.length>0) {\n\t\t\tCreateClientRequestDtoV2 dtoV2 = new CreateClientRequestDtoV2(dto,clientNameLangMap[0]);\n\t\t\tcreateRequestwrapper.setRequest(dtoV2);\n\t\t}\n\t\telse createRequestwrapper.setRequest(dto);\n\t\treturn makeCreateEsignetServiceCall(createRequestwrapper, calleeApi);\n\t\t\n\n\t}\n\t\n\t\n\t@SafeVarargs\n\tprivate void makeUpdateEsignetServiceCall(ClientDetail request, String calleeApi, Boolean isOAuthClient, Map... clientNameLangMap) {\n\t\tRequestWrapper updateRequestwrapper = new RequestWrapper<>();\n\t\tupdateRequestwrapper.setRequestTime(DateUtils.getUTCCurrentDateTimeString(CommonConstant.DATE_FORMAT));\n\t\tUpdateClientRequestDto updateRequest = mapUpdateClientRequestDto(request);\n\t\tif(Boolean.TRUE.equals(isOAuthClient) && clientNameLangMap.length>0) {\n\t\t\tUpdateClientRequestDtoV2 updateRequestV2 = new UpdateClientRequestDtoV2(updateRequest, clientNameLangMap[0]);\n\t\t\tupdateRequestwrapper.setRequest(updateRequestV2);\n\t\t}\n\t\telse updateRequestwrapper.setRequest(updateRequest);\n\t\t\n\t\tList pathsegments = new ArrayList<>();\n\t\tpathsegments.add(request.getId());\n\t\ttry {\n\t\t\trestUtil.putApi(calleeApi, pathsegments, null, null, MediaType.APPLICATION_JSON, updateRequestwrapper, Map.class);\n\t\t}catch (Exception e) {\n\t\t\tLOGGER.error(\"callIdpService::Error from idp service {} \", e.getMessage(), e);\n\t\t\tthrow new ApiAccessibleException(ApiAccessibleExceptionConstant.UNABLE_TO_PROCESS.getErrorCode(),\n\t\t\t\t\tApiAccessibleExceptionConstant.UNABLE_TO_PROCESS.getErrorMessage() + e.getMessage());\n\t\t}\n\t}\n\t\n\t\n\tprivate UpdateClientRequestDto mapUpdateClientRequestDto(ClientDetail request) {\n\t\tUpdateClientRequestDto updateRequest = new UpdateClientRequestDto();\n\t\tupdateRequest.setClientAuthMethods(convertStringToList(request.getClientAuthMethods()));\n\t\tupdateRequest.setClientName(request.getName());\n\t\tupdateRequest.setGrantTypes(convertStringToList(request.getGrantTypes()));\n\t\tupdateRequest.setLogoUri(request.getLogoUri());\n\t\tupdateRequest.setRedirectUris(convertStringToList(request.getRedirectUris()));\n\t\tupdateRequest.setStatus(request.getStatus());\n\t\tupdateRequest.setUserClaims(convertStringToList(request.getClaims()));\n\t\tupdateRequest.setAuthContextRefs(convertStringToList(request.getAcrValues()));\n\t\treturn updateRequest;\n\t}\n\t\n\t/**\n\t * \n\t * @param request\n\t * @param calleeApi\n\t * @return\n\t */\n\tprivate ClientDetailResponse makeCreateEsignetServiceCall(Object request, String calleeApi) {\n\t\tClientDetailResponse response = null;\t\t\n\t\tMap idpClientResponse = restUtil.postApi(calleeApi, null, \"\", \"\", MediaType.APPLICATION_JSON,\n\t\t\t\trequest, Map.class);\n\t\t\n\t\ttry {\n\t\t\tresponse = objectMapper.readValue(objectMapper.writeValueAsString(idpClientResponse.get(\"response\")),\n\t\t\t\t\tClientDetailResponse.class);\n\t\t} catch (Exception e) {\n\t\t\tLOGGER.error(\"callIdpService::Error from idp service {} \", e.getMessage(), e);\n\t\t\tthrow new ApiAccessibleException(ApiAccessibleExceptionConstant.UNABLE_TO_PROCESS.getErrorCode(),\n\t\t\t\t\tApiAccessibleExceptionConstant.UNABLE_TO_PROCESS.getErrorMessage() + e.getMessage());\n\t\t}\n\t\tif (response == null && idpClientResponse.containsKey(PartnerConstants.ERRORS)) {\n\t\t\t@SuppressWarnings(\"unchecked\")\n\t\t\tList> idpServiceErrorList = (List>) idpClientResponse\n\t\t\t\t\t.get(PartnerConstants.ERRORS);\n\t\t\tif (!idpServiceErrorList.isEmpty()) {\n\t\t\t\tLOGGER.error((\"IDPServiceResponse:: Idp service response contains errors.\"));\n\t\t\t\tthrow new ApiAccessibleException((String) idpServiceErrorList.get(0).get(PartnerConstants.ERRORCODE),\n\t\t\t\t\t\t(String) idpServiceErrorList.get(0).get(ERROR_MESSAGE));\n\t\t\t} else {\n\t\t\t\tLOGGER.error((\"IDPServiceResponse:: Idp service response contains errors.\"));\n\t\t\t\tthrow new ApiAccessibleException(ApiAccessibleExceptionConstant.UNABLE_TO_PROCESS.getErrorCode(),\n\t\t\t\t\t\tApiAccessibleExceptionConstant.UNABLE_TO_PROCESS.getErrorMessage());\n\t\t\t}\n\t\t}\n\t\tif (response == null) {\n\t\t\tLOGGER.error((\"IDPServiceResponse:: Idp service response is null\"));\n\t\t\tthrow new ApiAccessibleException(ApiAccessibleExceptionConstant.API_NULL_RESPONSE_EXCEPTION.getErrorCode(),\n\t\t\t\t\tApiAccessibleExceptionConstant.API_NULL_RESPONSE_EXCEPTION.getErrorMessage());\n\t\t}\n\t\treturn response;\n\t}\n\n\t/**\n\t * \n\t * @param partnerData\n\t * @param policyData\\\n\t * \n\t * @param clinetData\n\t */\n\tprivate void publishClientData(Partner partnerData, AuthPolicy policyData, ClientDetail clientData) {\n\t\tnotify(MapperUtils.mapDataToPublishDto(partnerData, getPartnerCertificate(partnerData.getCertificateAlias())),\n\t\t\t\tMapperUtils.mapPolicyToPublishDto(policyData, getPolicyObject(policyData.getPolicyFileId())),\n\t\t\t\tMapperUtils.mapClientDataToPublishDto(clientData), EventType.OIDC_CLIENT_CREATED);\n\t}\n\n\t@SuppressWarnings(\"unchecked\")\n\tprivate String getPartnerCertificate(String certificateAlias) {\n\t\tMap pathsegments = new HashMap<>();\n\t\tpathsegments.put(\"partnerCertId\", certificateAlias);\n\t\tMap getApiResponse = restUtil\n\t\t\t\t.getApi(environment.getProperty(\"pmp.partner.certificaticate.get.rest.uri\"), pathsegments, Map.class);\n\t\tPartnerCertDownloadResponeDto responseObject = null;\n\t\ttry {\n\t\t\tresponseObject = objectMapper.readValue(objectMapper.writeValueAsString(getApiResponse.get(\"response\")),\n\t\t\t\t\tPartnerCertDownloadResponeDto.class);\n\t\t} catch (IOException e) {\n\t\t\tLOGGER.error(\"Error occured while parsing the response \", e);\n\t\t\tthrow new ApiAccessibleException(ApiAccessibleExceptionConstant.UNABLE_TO_PROCESS.getErrorCode(),\n\t\t\t\t\tApiAccessibleExceptionConstant.UNABLE_TO_PROCESS.getErrorMessage());\n\t\t}\n\t\tif (responseObject == null && getApiResponse.containsKey(PartnerConstants.ERRORS)) {\n\t\t\tList> certServiceErrorList = (List>) getApiResponse\n\t\t\t\t\t.get(PartnerConstants.ERRORS);\n\t\t\tif (!certServiceErrorList.isEmpty()) {\n\t\t\t\tthrow new ApiAccessibleException(certServiceErrorList.get(0).get(PartnerConstants.ERRORCODE).toString(),\n\t\t\t\t\t\tcertServiceErrorList.get(0).get(PartnerConstants.ERRORMESSAGE).toString());\n\t\t\t} else {\n\t\t\t\tthrow new ApiAccessibleException(ApiAccessibleExceptionConstant.UNABLE_TO_PROCESS.getErrorCode(),\n\t\t\t\t\t\tApiAccessibleExceptionConstant.UNABLE_TO_PROCESS.getErrorMessage());\n\t\t\t}\n\t\t}\n\t\tif (responseObject == null) {\n\t\t\tthrow new ApiAccessibleException(ApiAccessibleExceptionConstant.API_NULL_RESPONSE_EXCEPTION.getErrorCode(),\n\t\t\t\t\tApiAccessibleExceptionConstant.API_NULL_RESPONSE_EXCEPTION.getErrorMessage());\n\t\t}\n\n\t\treturn responseObject.getCertificateData();\n\t}\n\n\t@Override\n\tpublic ClientDetailResponse updateOIDCClient(String clientId, ClientDetailUpdateRequest updateRequest)\n\t\t\tthrows Exception {\n\t\t\n\t\tClientDetail clientDetail = processUpdateOIDCClient(clientId,updateRequest);\n\t\tmakeUpdateEsignetServiceCall(clientDetail, environment.getProperty(\"mosip.pms.esignet.oidc-client-update-url\"),false);\n\t\tclientDetail = clientDetailRepository.save(clientDetail);\n\t\tvar response = new ClientDetailResponse();\n\t\tresponse.setClientId(clientDetail.getId());\n\t\tresponse.setStatus(clientDetail.getStatus());\n\t\tnotify(MapperUtils.mapClientDataToPublishDto(clientDetail), EventType.OIDC_CLIENT_UPDATED);\n\t\treturn response;\n\t}\n\n\n\t@Override\n\tpublic ClientDetailResponse updateOAuthClient(String clientId, ClientDetailUpdateRequestV2 updateRequest)\n\t\t\tthrows Exception {\n\n\t\tClientDetail clientDetail = processUpdateOIDCClient(clientId,updateRequest);\n\t\tmakeUpdateEsignetServiceCall(clientDetail, environment.getProperty(\"mosip.pms.esignet.oauth-client-update-url\"), true, updateRequest.getClientNameLangMap());\n\t\tString clientName=getClientNameLanguageMapAsJsonString(\n\t\t\t\tupdateRequest.getClientNameLangMap(),\n\t\t\t\tupdateRequest.getClientName()\n\t\t);\n\t\tclientDetail.setName(clientName);\n\t\tclientDetail = clientDetailRepository.save(clientDetail);\n\t\tvar response = new ClientDetailResponse();\n\t\tresponse.setClientId(clientDetail.getId());\n\t\tresponse.setStatus(clientDetail.getStatus());\n\t\tnotify(MapperUtils.mapClientDataToPublishDto(clientDetail), EventType.OIDC_CLIENT_UPDATED);\n\t\treturn response;\n\t}\n\t\n\t\n\t\n\tpublic ClientDetail processUpdateOIDCClient(String clientId, ClientDetailUpdateRequest updateRequest) {\n\t\tOptional result = clientDetailRepository.findById(clientId);\n\t\tif (!result.isPresent()) {\n\t\t\tLOGGER.error(\"updateOIDCClient::Client not exists with id {}\", clientId);\n\t\t\tauditUtil.setAuditRequestDto(ClientServiceAuditEnum.UPDATE_CLIENT_FAILURE);\n\t\t\tthrow new PartnerServiceException(ErrorCode.CLIENT_NOT_EXISTS.getErrorCode(),\n\t\t\t\t\tErrorCode.CLIENT_NOT_EXISTS.getErrorMessage());\n\t\t}\n\t\t//Check if OIDC client is already deactivated\n\t\tif (result.get().getStatus().equalsIgnoreCase(\"inactive\")) {\n\t\t\tLOGGER.error(\"updateOIDCClient::Client already deactivated with id {}\", clientId);\n\t\t\tauditUtil.setAuditRequestDto(ClientServiceAuditEnum.UPDATE_CLIENT_FAILURE, clientId,\n\t\t\t\t\tresult.get().getStatus());\n\t\t\tthrow new PartnerServiceException(ErrorCode.CLIENT_ALREADY_DEACTIVATED.getErrorCode(),\n\t\t\t\t\tErrorCode.CLIENT_ALREADY_DEACTIVATED.getErrorMessage());\n\t\t}\n\t\tOptional partner = partnerRepository.findById(result.get().getRpId());\n\t\tString partnerId = result.get().getRpId();\n\t\tif (partner.isEmpty() || partnerId == null) {\n\t\t\tLOGGER.error(\"updateOIDCClient::Partner not exists with id {}\", partnerId);\n\t\t\tauditUtil.setAuditRequestDto(ClientServiceAuditEnum.UPDATE_CLIENT_FAILURE);\n\t\t\tthrow new PartnerServiceException(ErrorCode.INVALID_PARTNERID.getErrorCode(),\n\t\t\t\t\tString.format(ErrorCode.INVALID_PARTNERID.getErrorMessage(), partnerId));\n\t\t}\n\n\t\tboolean isAdmin = partnerHelper.isPartnerAdmin(authUserDetails().getAuthorities().toString());\n\t\t// Skip the below checks if the user is logged in as a partner_admin\n\t\tif (!isAdmin) {\n\t\t\t// Validate the logged-in user ID and fetch the list of partners associated to it\n\t\t\tList partnerList = validateUserId();\n\t\t\tif (partnerList.isEmpty()) {\n\t\t\t\tLOGGER.error(\"sessionId\", \"idType\", \"id\", \"User id does not exist.\");\n\t\t\t\tauditUtil.setAuditRequestDto(ClientServiceAuditEnum.UPDATE_CLIENT_FAILURE);\n\t\t\t\tthrow new PartnerServiceException(ErrorCode.USER_ID_NOT_EXISTS.getErrorCode(),\n\t\t\t\t\t\tErrorCode.USER_ID_NOT_EXISTS.getErrorMessage());\n\t\t\t}\n\t\t\t// Check if the partner ID belongs to the user.\n\t\t\tboolean isValidPartner = validatePartnerIdBelongsToUser(partnerList, partnerId);\n\t\t\tif (!isValidPartner) {\n\t\t\t\tLOGGER.error(\"sessionId\", \"idType\", \"id\", \"The given partner ID does not belong to the user.\");\n\t\t\t\tauditUtil.setAuditRequestDto(ClientServiceAuditEnum.UPDATE_CLIENT_FAILURE);\n\t\t\t\tthrow new PartnerServiceException(ErrorCode.PARTNER_NOT_BELONGS_TO_THE_USER_UPDATE_OIDC.getErrorCode(),\n\t\t\t\t\t\tErrorCode.PARTNER_NOT_BELONGS_TO_THE_USER_UPDATE_OIDC.getErrorMessage());\n\t\t\t}\n\t\t}\n\t\tif ( !isAdmin || (isAdmin && result.get().getStatus().equalsIgnoreCase(updateRequest.getStatus()))) {\n\t\t\t//check if Partner is Active or not\n\t\t\tif (!partner.get().getIsActive()) {\n\t\t\t\tLOGGER.error(\"updateOIDCClient::Partner is not Active with id {}\", clientId);\n\t\t\t\tauditUtil.setAuditRequestDto(ClientServiceAuditEnum.UPDATE_CLIENT_FAILURE);\n\t\t\t\tthrow new PartnerServiceException(ErrorCode.PARTNER_NOT_ACTIVE_EXCEPTION.getErrorCode(),\n\t\t\t\t\t\tErrorCode.PARTNER_NOT_ACTIVE_EXCEPTION.getErrorMessage());\n\t\t\t}\n\t\t}\n\t\tClientDetail clientDetail = result.get();\n\t\tif (!result.get().getStatus().equalsIgnoreCase(updateRequest.getStatus())) {\n\t\t\tclientDetail.setStatus(updateRequest.getStatus().toUpperCase());\n\t\t\tclientDetail.setUpdatedDateTime(LocalDateTime.now(ZoneId.of(\"UTC\")));\n\t\t\tclientDetail.setUpdatedBy(getLoggedInUserId());\n\t\t\treturn clientDetail;\n\t\t}\n\t\tclientDetail.setName(updateRequest.getClientName());\n\t\tclientDetail.setLogoUri(updateRequest.getLogoUri());\n\t\tclientDetail.setRedirectUris(String.join(\",\", updateRequest.getRedirectUris()));\n\t\tclientDetail.setGrantTypes(String.join(\",\", updateRequest.getGrantTypes()));\n\t\tclientDetail.setClientAuthMethods(String.join(\",\", updateRequest.getClientAuthMethods()));\n\t\tclientDetail.setUpdatedDateTime(LocalDateTime.now(ZoneId.of(\"UTC\")));\n\t\tclientDetail.setUpdatedBy(getLoggedInUserId());\n\t\treturn clientDetail;\n\t}\n\t\n\t/**\n\t * \n\t * @param jwk\n\t * @return\n\t * @throws Exception\n\t */\n\tprivate String getJWKString(Map jwk) {\n\t\ttry {\n\t\t\tJWK jsonWebKey = JWK.parse(jwk);\n\t\t\treturn objectMapper.writeValueAsString(jsonWebKey.toJSONObject());\n\t\t} catch (Exception e) {\n\t\t\tLOGGER.error(\"createOIDCClient::Failed to process Client Public Key\");\n\t\t\tthrow new PartnerServiceException(ErrorCode.FAILED_TO_PROCESS_JWK.getErrorCode(),\n\t\t\t\t\tErrorCode.FAILED_TO_PROCESS_JWK.getErrorMessage());\n\t\t}\n\t}\n\n\t/**\n\t * \n\t * @param policy\n\t * @return\n\t */\n\tprivate JSONObject getPolicyObject(String policy) {\n\t\tJSONParser parser = new JSONParser();\n\t\ttry {\n\t\t\treturn ((JSONObject) parser.parse(policy));\n\t\t} catch (ParseException e) {\n\t\t\treturn (JSONObject) Collections.emptyMap();\n\t\t}\n\t}\n\n\t/**\n\t * \n\t * @param partnerDataToPublish\n\t * @param policyDataToPublish\n\t * @param apiKeyDataToPublish\n\t * @param eventType\n\t */\n\tprivate void notify(PartnerDataPublishDto partnerDataToPublish, PolicyPublishDto policyDataToPublish,\n\t\t\tClientPublishDto clientDataToPublish, EventType eventType) {\n\t\tMap data = new HashMap<>();\n\t\tif (partnerDataToPublish != null) {\n\t\t\tdata.put(PartnerConstants.PARTNER_DATA, partnerDataToPublish);\n\t\t}\n\t\tif (policyDataToPublish != null) {\n\t\t\tdata.put(PartnerConstants.POLICY_DATA, policyDataToPublish);\n\t\t}\n\t\tif (clientDataToPublish != null) {\n\t\t\tdata.put(PartnerConstants.CLIENT_DATA, clientDataToPublish);\n\t\t}\n\t\tnotify(data, eventType);\n\t}\n\t\n\t/**\n\t * \n\t * @param clientDataToPublish\n\t * @param eventType\n\t */\n\tprivate void notify(ClientPublishDto clientDataToPublish, EventType eventType) {\n\t\tMap data = new HashMap<>();\n\t\tif (clientDataToPublish != null) {\n\t\t\tdata.put(PartnerConstants.CLIENT_DATA, clientDataToPublish);\n\t\t}\n\t\tnotify(data, eventType);\n\t}\n\n\t/**\n\t * \n\t * @param data\n\t * @param eventType\n\t */\n\tprivate void notify(Map data, EventType eventType) {\n\t\tType type = new Type();\n\t\ttype.setName(\"PartnerManagementServiceImpl\");\n\t\ttype.setNamespace(\"io.mosip.pmp.partner.manager.service.impl.PartnerManagementServiceImpl\");\n\t\twebSubPublisher.notify(eventType, data, type);\n\t}\n\n\t@Override\n\tpublic io.mosip.pms.oauth.client.dto.ClientDetail getClientDetails(String clientId) {\n\t\tOptional result = clientDetailRepository.findById(clientId);\n\t\tif (!result.isPresent()) {\n\t\t\tLOGGER.error(\"getClientDetails::Client not exists with id {}\", clientId);\n\t\t\tthrow new PartnerServiceException(ErrorCode.CLIENT_NOT_EXISTS.getErrorCode(),\n\t\t\t\t\tErrorCode.CLIENT_NOT_EXISTS.getErrorMessage());\n\t\t}\n\t\tboolean isAdmin = partnerHelper.isPartnerAdmin(authUserDetails().getAuthorities().toString());\n\t\t// Skip the below checks if the user is logged in as a partner_admin\n\t\tif (!isAdmin) {\n\t\t\t// Validate the logged-in user ID and fetch the list of partners associated to it\n\t\t\tList partnerList = validateUserId();\n\t\t\tif (partnerList.isEmpty()) {\n\t\t\t\tLOGGER.error(\"sessionId\", \"idType\", \"id\", \"User id does not exist.\");\n\t\t\t\tauditUtil.setAuditRequestDto(ClientServiceAuditEnum.GET_CLIENT_FAILURE);\n\t\t\t\tthrow new PartnerServiceException(ErrorCode.USER_ID_NOT_EXISTS.getErrorCode(),\n\t\t\t\t\t\tErrorCode.USER_ID_NOT_EXISTS.getErrorMessage());\n\t\t\t}\n\t\t\t// Check if the partner ID belongs to the user.\n\t\t\tboolean isValidPartner = validatePartnerIdBelongsToUser(partnerList, result.get().getRpId());\n\t\t\tif (!isValidPartner) {\n\t\t\t\tLOGGER.error(\"sessionId\", \"idType\", \"id\", \"The given partner ID does not belong to the user.\");\n\t\t\t\tauditUtil.setAuditRequestDto(ClientServiceAuditEnum.GET_CLIENT_FAILURE);\n\t\t\t\tthrow new PartnerServiceException(ErrorCode.PARTNER_NOT_BELONGS_TO_THE_USER_GET_OIDC.getErrorCode(),\n\t\t\t\t\t\tErrorCode.PARTNER_NOT_BELONGS_TO_THE_USER_GET_OIDC.getErrorMessage());\n\t\t\t}\n\t\t}\n\t\tio.mosip.pms.oauth.client.dto.ClientDetail dto = new io.mosip.pms.oauth.client.dto.ClientDetail();\n\t\tOptional policyFromDb = authPolicyRepository.findById(result.get().getPolicyId());\n\t\tdto.setId(result.get().getId());\n\t\tdto.setName(result.get().getName());\n\t\tdto.setPolicyId(result.get().getPolicyId());\n\t\tdto.setPolicyName(policyFromDb.isEmpty() ? \"\" : policyFromDb.get().getName());\n\t\tdto.setRelyingPartyId(result.get().getRpId());\n\t\tdto.setLogoUri(result.get().getLogoUri());\n\t\tdto.setStatus(result.get().getStatus());\n\t\tdto.setPublicKey(result.get().getPublicKey());\n\t\tdto.setClaims(convertStringToList(result.get().getClaims()));\n\t\tdto.setAcrValues(convertStringToList(result.get().getAcrValues()));\n\t\tdto.setRedirectUris(convertStringToList(result.get().getRedirectUris()));\n\t\tdto.setGrantTypes(convertStringToList(result.get().getGrantTypes()));\n\t\tdto.setClientAuthMethods(convertStringToList(result.get().getClientAuthMethods()));\n\t\treturn dto;\n\t}\n\n\tprivate String getClientNameLanguageMapAsJsonString(Map clientNameMap, String clientName) {\n\t\tclientNameMap.put(NONE_LANG_KEY, clientName);\n\t\tJSONObject clientNameObject = new JSONObject(clientNameMap);\n\t\treturn clientNameObject.toString();\n\t}\n\n\t@Override\n\tpublic ResponseWrapperV2> getPartnersClients(String sortFieldName, String sortType, Integer pageNo, Integer pageSize, ClientFilterDto filterDto) {\n\t\tResponseWrapperV2> responseWrapper = new ResponseWrapperV2<>();\n\t\ttry {\n\t\t\tPageResponseV2Dto pageResponseV2Dto = new PageResponseV2Dto<>();\n\n\t\t\tboolean isPartnerAdmin = partnerHelper.isPartnerAdmin(authUserDetails().getAuthorities().toString());\n\t\t\tList partnerIdList = null;\n\t\t\tif (!isPartnerAdmin) {\n\t\t\t\tString userId = getUserId();\n\t\t\t\tList partnerList = partnerServiceRepository.findByUserId(userId);\n\t\t\t\tif (partnerList.isEmpty()) {\n\t\t\t\t\tLOGGER.info(\"sessionId\", \"idType\", \"id\", \"User id does not exists.\");\n\t\t\t\t\tthrow new PartnerServiceException(io.mosip.pms.partner.constant.ErrorCode.USER_ID_NOT_EXISTS.getErrorCode(),\n\t\t\t\t\t\t\tio.mosip.pms.partner.constant.ErrorCode.USER_ID_NOT_EXISTS.getErrorMessage());\n\t\t\t\t}\n\t\t\t\tpartnerIdList = new ArrayList<>();\n\t\t\t\tfor (Partner partner : partnerList) {\n\t\t\t\t\tpartnerHelper.validatePartnerId(partner, userId);\n\t\t\t\t\tpartnerHelper.validatePolicyGroupId(partner, userId);\n\t\t\t\t\tpartnerHelper.validatePolicyGroup(partner);\n\t\t\t\t\tpartnerIdList.add(partner.getId());\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tPageable pageable = Pageable.unpaged();\n\n\t\t\t// Pagination\n\t\t\tboolean isPaginationEnabled = (pageNo != null && pageSize != null);\n\t\t\tif (isPaginationEnabled) {\n\t\t\t\tpageable = PageRequest.of(pageNo, pageSize);\n\t\t\t}\n\n\t\t\t//Sorting\n\t\t\tif (isPaginationEnabled && Objects.nonNull(sortFieldName) && Objects.nonNull(sortType)) {\n\t\t\t\tSort sort = partnerHelper.getSortingRequest(getSortColumn(partnerHelper.oidcClientsAliasToColumnMap, sortFieldName), sortType);\n\t\t\t\tpageable = PageRequest.of(pageNo, pageSize, sort);\n\t\t\t}\n\t\t\tPage page = clientSummaryRepository.\n\t\t\t\t\tgetSummaryOfAllPartnerClients(filterDto.getPartnerId(), filterDto.getOrgName(),\n\t\t\t\t\t\t\tfilterDto.getPolicyGroupName(), filterDto.getPolicyName(),\n\t\t\t\t\t\t\tfilterDto.getClientName(), filterDto.getStatus(), partnerIdList, isPartnerAdmin, pageable);\n\t\t\tif (Objects.nonNull(page) && !page.getContent().isEmpty()) {\n\t\t\t\tList clientSummaryDtoList = MapperUtils.mapAll(page.getContent(), ClientSummaryDto.class);\n\t\t\t\tpageResponseV2Dto.setPageNo(page.getNumber());\n\t\t\t\tpageResponseV2Dto.setPageSize(page.getSize());\n\t\t\t\tpageResponseV2Dto.setTotalResults(page.getTotalElements());\n\t\t\t\tpageResponseV2Dto.setData(clientSummaryDtoList);\n\t\t\t}\n\t\t\tresponseWrapper.setResponse(pageResponseV2Dto);\n\n\t\t} catch (PartnerServiceException ex) {\n\t\t\tLOGGER.info(\"sessionId\", \"idType\", \"id\", \"In getAllPartnersClients method of ClientManagementServiceImpl - \" + ex.getMessage());\n\t\t\tresponseWrapper.setErrors(MultiPartnerUtil.setErrorResponse(ex.getErrorCode(), ex.getErrorText()));\n\t\t} catch (Exception ex) {\n\t\t\tLOGGER.debug(\"sessionId\", \"idType\", \"id\", ex.getStackTrace());\n\t\t\tLOGGER.error(\"sessionId\", \"idType\", \"id\",\n\t\t\t\t\t\"In getAllPartnersClients method of ClientManagementServiceImpl - \" + ex.getMessage());\n\t\t\tString errorCode = ErrorCode.OIDC_CLIENTS_FETCH_ERROR.getErrorCode();\n\t\t\tString errorMessage = ErrorCode.OIDC_CLIENTS_FETCH_ERROR.getErrorMessage();\n\t\t\tresponseWrapper.setErrors(MultiPartnerUtil.setErrorResponse(errorCode, errorMessage));\n\t\t}\n\t\tresponseWrapper.setId(getPartnersClientsId);\n\t\tresponseWrapper.setVersion(VERSION);\n\t\treturn responseWrapper;\n\t}\n\n\tpublic String getSortColumn(Map aliasToColumnMap, String alias) {\n\t\treturn aliasToColumnMap.getOrDefault(alias, alias); // Return alias if no match found\n\t}\n\n\tprivate String getUserId() {\n\t\tString userId = authUserDetails().getUserId();\n\t\treturn userId;\n\t}\n\n\tprivate AuthUserDetails authUserDetails() {\n\t\treturn (AuthUserDetails) SecurityContextHolder.getContext().getAuthentication().getPrincipal();\n\t}\n\n\t/**\n\t * Creates a public key from the provided JWK (JSON Web Key).\n\n\t * Supported JWK types:\n\t * - RSA: Represented by \"RSA\" key type.\n\t * - EC: Represented by \"EC\" key type (Elliptic Curve).\n\t * - OKP: Represented by \"OKP\" key type (Octet Key Pair, typically used for EdDSA).\n\t *\n\t * @param jwk A map representing the JSON Web Key.\n\t * @return A Base64 encoded string representation of the public key.\n\t * @throws Exception If the JWK is invalid or an unsupported key type is provided.\n\t */\n\tpublic String createPublicKeyFromJWK(Map jwk) throws Exception {\n\t\t// Parse the JWK\n\t\tJWK parsedJwk = JWK.parse(jwk);\n\t\tbyte[] publicKeyBytes;\n\n\t\t// Determine the key type and create the corresponding public key\n\t\tswitch (parsedJwk.getKeyType().getValue()) {\n\t\t\tcase \"RSA\":\n\t\t\t\tpublicKeyBytes = createRSAPublicKey((RSAKey) parsedJwk).getEncoded();\n\t\t\t\tbreak;\n\n\t\t\tcase \"EC\":\n\t\t\t\tpublicKeyBytes = createECCPublicKey((ECKey) parsedJwk).getEncoded();\n\t\t\t\tbreak;\n\n\t\t\tcase \"OKP\":\n\t\t\t\tpublicKeyBytes = createEdDSAPublicKey((OctetKeyPair) parsedJwk);\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\t// Throw an exception if the key type is unsupported\n\t\t\t\tthrow new UnsupportedOperationException(\"Unsupported key type: \" + parsedJwk.getKeyType());\n\t\t}\n\t\t// Return the public key as a Base64 encoded string\n\t\treturn Base64.getEncoder().encodeToString(publicKeyBytes);\n\t}\n\n\t// Method to create an RSA PublicKey from an RSAKey JWK\n\tprivate PublicKey createRSAPublicKey(RSAKey rsaJwk) throws Exception {\n\t\treturn rsaJwk.toPublicKey();\n\t}\n\n\t// Method to create an EC PublicKey from an ECKey JWK\n\tprivate PublicKey createECCPublicKey(ECKey ecJwk) throws Exception {\n\t\treturn ecJwk.toPublicKey();\n\t}\n\n\t/*\n\t * Note: The Nimbus library does not provide built-in support for creating\n\t * PublicKey instances from \"OKP\" key type JWKs (EdDSA). As a workaround,\n\t * the public key bytes are directly extracted from the JWK by retrieving\n\t * the x-coordinate and decoding it from Base64 URL format.\n\t */\n\t// Method to create an EdDSA PublicKey from an OctetKeyPair JWK\n\tpublic byte[] createEdDSAPublicKey(OctetKeyPair octetJwk) throws Exception {\n\t\t// Retrieve the x-coordinate from the EdDSA key and decode it from Base64 URL\n\t\tString xValue = octetJwk.getX().toString();\n\t\treturn Base64.getUrlDecoder().decode(xValue);\n\t}\n\n\t/**\n\t * \n\t * @param commaSeparatedString\n\t * @return\n\t */\n\tprivate List convertStringToList(String commaSeparatedString){\n\t\treturn Arrays.asList(commaSeparatedString.split(\",\"));\n\t}\n\t\n\t/**\n\t * \n\t * @return\n\t */\n\tprivate String getLoggedInUserId() {\n\t\treturn UserDetailUtil.getLoggedInUserId();\n\t}\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/partner/constant/ErrorCode.java", + "title": "ErrorCode.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/partner/constant/ErrorCode.java", + "language": "java", + "content": "package io.mosip.pms.partner.constant;\n\npublic enum ErrorCode {\n\n\tMISSING_PARTNER_INPUT_PARAMETER(\"PMS_COR_001\",\"Missing Input Parameter\"),\n\tPOLICY_GROUP_DOES_NOT_EXIST(\"PMS_PRT_002\", \"Policy group does not exist\"),\n\tPOLICY_GROUP_IS_MANDATORY(\"PMS_PRT_108\", \"Policy group is Mandatory for %s\"),\n\tPARTNER_TYPE_DOES_NOT_EXIST(\"PMS_PRT_010\", \"Partner Type does not exist\"),\n\tINVALID_COLUMN(\"PMS_PRT_310\", \"Invalid column received : %s\"),\n\tINVALID_PAGINATION_VALUE(\"PMS_PRT_313\", \"Invalid pagination value received pagestart:%d and pagefetch:%d\"),\n\tFILTER_TYPE_NOT_AVAILABLE(\"PMS_PRT_312\", \"Filter type is missing\"),\n\tMISSING_FILTER_COLUMN(\"PMS_PRT_311\", \"Column is missing in request\"),\n\tINVALID_SORT_INPUT(\"PMS_PRT_314\", \"Missing sort field or sort type values\"),\n\tINVALID_BETWEEN_VALUES(\"PMS_PRT_315\", \"Invalid fromValue or toValue\"),\n\tINVALID_PAGINATION(\"PMS_PRT_356\", \"Pagination cannot be null\"),\n\tINVALID_SORT_TYPE(\"PMS_PRT_358\", \"Sort type %s is not supported\"),\n\tERROR_OCCURED_WHILE_SORTING(\"PMS_PRT_359\", \"Error occured while sorting\"),\n\tINVALID_SORT_FIELD(\"PMS_PRT_357\", \"Invalid sort field %s\"),\n\tINVALID_PAGE_NO(\"PMS_PRT_360\", \"Invalid Page No\"),\n\tINVALID_PAGE_SIZE(\"PMS_PRT_361\", \"Invalid page size\"),\n\tINVALID_VALUE(\"KER_PRT_390\", \"Invalid filter value\"),\n\tPARTNER_ALREADY_REGISTERED_EXCEPTION(\"PMS_PRT_001\", \"A Partner is already registered with the same Name\"),\n\tPARTNER_ALREADY_REGISTERED_WITH_ID_EXCEPTION(\"PMS_PRT_051\", \"A Partner is already registered with the same Id\"),\n\tCERTIFICATE_NOT_UPLOADED_EXCEPTION(\"PMS_PRT_108\",\"Certficate is not uploaded for the selected partner.\"),\n\tPARTNER_ID_LENGTH_EXCEPTION(\"PMS_PRT_052\",\"PartnerId max length should be \"),\n\tIO_EXCEPTION(\"PMS_ATH_053\", \"IO Exception occured while passing paging request\"),\n\tUSER_NOT_FOUND(\"PMS_ATH_054\", \"User not found\"),\n\tSERVER_ERROR(\"PMS_ATH_500\", \"Server error occured,Please check the logs \"),\n\tPARTNER_POLICY_MAPPING_NOT_EXISTS(\"PMS_PRT_061\",\"Partner policy mapping not exists.\"),\n\tPARTNER_API_KEY_REQUEST_APPROVED(\"PMS_PRT_062\",\"Partner api key request is approved already. Cann't add extractors now.\"),\n\tEXTRACTORS_ONLY_FOR_CREDENTIAL_PARTNER(\"PMS_PRT_063\",\"Biometric extractors can be added only for:\"),\n\tNO_DETAILS_FOUND(\"PMS_PRT_064\",\"No details found\"),\n\tCREDENTIAL_NOT_ALLOWED_PARTNERS(\"PMS_PRT_070\",\"Credential mapping allowed only for :\"),\n\tPOLICY_PARSING_ERROR(\"PMS_PRT_071\",\"Error occured while parsing policy string to json object\"),\n\tCREDENTIAL_TYPE_NOT_ALLOWED(\"PMS_PRT_072\",\"Given credential type is not allowed. Allowed credential types : \"),\n\tPOLICY_NOT_EXIST(\"PMS_PRT_073\",\"Policy not exists.\"),\n\tPARTNER_POLICY_TYPE_MISMATCH(\"PMS_PRT_057\",\"Policy Type Mismatch. Only Auth policy can be used to create OIDC Client.\"),\t\n\tEMAIL_EXISTS_IN_KEYCLOAK(\"PMS_PRT_074\",\"User exists with same email(keycloak)\"),\n\tPARTNER_DOES_NOT_EXIST_EXCEPTION(\"PMS_PRT_005\",\"Partner does not exist\"),\n\tPARTNER_API_KET_REQ_DOES_NOT_EXIST_EXCEPTION(\"PMS_PRT_006\",\"No api key req exist\"),\n\tPARTNER_API_NOT_CREATED_EXCEPTION(\"PMS_PRT_105\",\"Partner API KEY is not Created\"),\n\tPARTNER_ALREADY_REG_WITH_SAME_PLICYGROUP(\"PMS_PRT_001\",\"Partner is already registered with Same policy Group\"),\n\tINVALID_PARTNER_INPUT_PARAMETER(\"PMS_COR_002\",\"Invalid Input Parameter - for all attributes not as per defined data definition\"),\n\tEMAIL_ALREADY_EXISTS_EXCEPTION(\"PMS_PRT_011\", \"Email is already exists.\"),\n\tINVALID_EMAIL_ID_EXCEPTION(\"PMS_PRT_012\", \"Invalid emailId.\"),\n\tINVALID_MOBILE_NUMBER_EXCEPTION(\"PMS_PRT_013\", \"Invalid mobile number.Length should be less than .\"),\n\tAUTHENTICATION_FAILED(\"PMS-ATH-401\",\"Authentication Failed\"),\n\tAPIKEYREQIDSTATUSINPROGRESS(\"PMS_PRT_106\",\"APIKeyReqID status is In-progress\"),\n\tAPI_NOT_ACCESSIBLE_EXCEPTION(\"PMS_KKS_001\", \"API not accessible \"),\n\tAPI_NULL_RESPONSE_EXCEPTION(\"PMS_PRT_107\",\"Responese from the api is null\"),\n\tUNABLE_TO_PROCESS(\"PMS_PRT_500\",\"Unable to process the request.\"),\n\tPARTNER_NOT_ACTIVE_EXCEPTION(\"PMS_PMP_016\",\"Partner is not active.\"),\n\tPOLICY_GROUP_POLICY_NOT_EXISTS(\"PMS_PRT_098\",\"Given policy doesn't exists under partner's policy group.\"),\n\tPOLICY_NOT_ACTIVE_EXCEPTION(\"PMS_PMP_019\",\"Policy is not active.\"),\n\tPOLICY_GROUP_NOT_ACTIVE(\"PMS_PMP_023\",\"Policy group is not active.\"),\n\tPOLICY_EXPIRED_EXCEPTION(\"PMS_PMP_018\",\"Policy expired.\"),\n\tDATASHARE_RESPONSE_NULL(\"PMS_DTS_001\", \"DataShare response is null\"),\n\tP7B_CERTDATA_PARSING_ERROR(\"PMS_PRT_045\",\"Error occured while parsing P7B certificate data\"),\n\tP7B_CERTDATA_ERROR(\"PMS_PRT_046\",\"Error occured while extracting the leaf cert.\"),\n\tPARTNER_NOT_MAPPED_TO_POLICY_GROUP(\"PMS_PRT_047\",\"Partner is not mapped to policy group\"),\n\tPOLICY_GROUP_NOT_REQUIRED(\"PMS_PRT_048\",\"policy group mapping is not required for given partner\"),\n\tPOLICY_GROUP_ALREADY_MAPPED(\"PMS_PRT_049\",\"policy group mapping exists for given partner.\"),\n\tPOLICY_GROUP_NOT_MAP_ACTIVE_PARTNER(\"PMS_PRT_050\",\"Policy group cannot be updated for approved partner\"),\n\tPOLICY_GROUP_NOT_MAPPED_PARTNER(\"PMS_PRT_054\",\"Policy group not mapped for given partner\"),\n\tLOGGEDIN_USER_NOT_AUTHORIZED(\"PMS_PRT_055\",\"User not authorized.\"),\n\tPARTNER_POLICY_MAPPING_INPROGRESS(\"PMS_PRT_053\",\"This policy is already pending for approval against your partner ID.\"),\n\tPARTNER_POLICY_MAPPING_APPROVED(\"PMS_PRT_060\",\"This policy has already been approved against your partner ID.\"),\n\tPARTNER_LANG_CODE_NOT_SUPPORTED(\"PMS_PRT_056\",\"Given langCode is not supported\"),\n\tPARTNER_ID_CONTAINS_SPACES(\"PMS_PRT_066\",\"PartnerId should not have any spaces\"),\n\tJSON_NOT_VALID(\"PMS_PRT_096\",\"Json is not valid\"),\n\tINVALID_PARTNERID(\"PMS_PRT_058\",\"AuthPartner doesn't exists with this Id - %s.\"),\n\tINVALID_PARTNER_TYPE(\"PMS_PRT_059\",\"Only Auth_partner can Create OIDC Client. %s is not allowed to create OIDC Client.\"),\n\tDUPLICATE_CLIENT(\"PMS_ESI_001\",\"Client public key already exists.\"),\n\tPARTNER_POLICY_NOT_APPROVED(\"PMS_ESI_002\",\"Partner policy mapping is not approved. Please check mapping status.\"),\n\tPOLICY_HAVING_MANDATORY_AUTHS(\"PMS_ESI_003\",\"Policy having mandatory auths. So client can't be created for the same.\"),\n\tCLIENT_NOT_EXISTS(\"PMS_ESI_004\",\"Client not exists with given id.\"),\n\tPARTNER_HAVING_NO_CLAIMS(\"PMS_ESI_005\",\"Partner has no user claims\"),\n\tPARTNER_HAVING_NO_ACRVALUES(\"PMS_ESI_006\",\"Partner has no Authentication Context Refrences\"),\n\tFAILED_TO_PROCESS_JWK(\"PMS_ESI_007\",\"Failed to process the Public Key\"),\n\tPARTNER_CERTIFICATES_FETCH_ERROR(\"PMS_CERTIFICATE_ERROR_001\",\"Error while fetching partner certificates.\"),\n\tUSER_ID_NOT_EXISTS(\"PMS_CERTIFICATE_ERROR_002\",\"User Id does not exists.\"),\n\tPARTNER_ID_NOT_EXISTS(\"PMS_CERTIFICATE_ERROR_003\",\"Partner Id is null or empty.\"),\n\tPARTNER_TYPE_NOT_EXISTS(\"PMS_CERTIFICATE_ERROR_004\",\"Partner Type is null or empty\"),\n\tAPPROVAL_STATUS_NOT_EXISTS(\"PMS_CERTIFICATE_ERROR_005\",\"Approval Status is null or empty\"),\n\tUNABLE_TO_DECODE_CERTIFICATE(\"PMS_CERTIFICATE_ERROR_006\", \"Unable to decode the certificate data\"),\n\tPARTNER_DOES_NOT_BELONG_TO_THE_USER(\"PMS_CERTIFICATE_ERROR_007\", \"The given partner ID does not belong to the user.So unable to get the original partner certificates\"),\n\tCERTIFICATE_FETCH_ERROR(\"PMS_CERTIFICATE_ERROR_008\",\"Error while fetching certificate.\"),\n\tDEACTIVATED_PARTNER_CERTIFICATE_DOWNLOAD_ERROR(\"PMS_CERTIFICATE_ERROR_009\",\"Unable to download the certificate for a deactivated partner\"),\n\tTRUST_CERTIFICATES_FETCH_ERROR(\"PMS_CERTIFICATE_ERROR_010\", \"Error while fetching trust certificates.\"),\n\tDOWNLOAD_TRUST_CERTIFICATE_ERROR(\"PMS_CERTIFICATE_ERROR_011\", \"Error while downloading trust certificates.\"),\n\tINVALID_CERTIFICATE_ID(\"PMS_CERTIFICATE_ERROR_012\", \"Certificate id is null or empty\"),\n\tPOLICY_GROUP_NOT_EXISTS(\"PMS_POLICY_ERROR_001\",\"Policy Group does not exists.\"),\n\tPARTNER_POLICY_FETCH_ERROR(\"PMS_POLICY_ERROR_002\",\"Error while fetching partner policies.\"),\n\tMATCHING_POLICY_NOT_FOUND(\"PMS_POLICY_ERROR_004\", \"Matching Policy not found.\"),\n\tPOLICY_GROUP_ID_NOT_EXISTS(\"PMS_POLICY_ERROR_005\",\"Policy Group Id is empty.\"),\n\tOIDC_CLIENTS_FETCH_ERROR(\"PMS_POLICY_ERROR_006\",\"Error while fetching OIDC clients list.\"),\n\tAPI_KEY_REQUESTS_FETCH_ERROR(\"PMS_POLICY_ERROR_007\", \"Error while fetching API Key requests\"),\n\tMATCHING_POLICY_GROUP_NOT_EXISTS(\"PMS_POLICY_ERROR_008\", \"No matching policy group was found for the provided partner\"),\n\tPARTNER_NOT_BELONGS_TO_THE_USER_CREATE_OIDC(\"PMS_POLICY_ERROR_009\", \"The given partner ID does not belong to the user.So unable to create OIDC client\"),\n\tPARTNER_NOT_BELONGS_TO_THE_USER_UPDATE_OIDC(\"PMS_POLICY_ERROR_010\", \"The given partner ID does not belong to the user.So unable to update OIDC client details\"),\n\tPARTNER_NOT_BELONGS_TO_THE_USER_GET_OIDC(\"PMS_POLICY_ERROR_011\", \"The given partner ID does not belong to the user.So unable to get OIDC client details\"),\n\tPMS_CONSENT_ERR(\"PMS_CONSENT_ERROR_001\", \"Error while fetching partner consent.\"),\n\tPMS_CONSENT_UNABLE_TO_ADD(\"PMS_CONSENT_ERROR_002\", \"Error while saving partner consent.\"),\n\tCLIENT_ALREADY_DEACTIVATED(\"PMS_ESI_008\", \"Client already deactivated.\"),\n\tSBI_DETAILS_LIST_FETCH_ERROR(\"PMS_SBI_ERROR_001\", \"Unable to fetch SBI details.\"),\n\tPARTNER_ID_NOT_ASSOCIATED_WITH_USER(\"PMS_DEVICE_ERROR_001\", \"Partner id is not associated with user.\"),\n\tSBI_NOT_ASSOCIATED_WITH_PARTNER_ID(\"PMS_DEVICE_ERROR_002\", \"SBI is not associated with partner Id.\"),\n\tINVALID_DEVICE_PARTNER_TYPE(\"PMS_DEVICE_ERROR_003\", \"Invalid partner type.\"),\n\tDEVICES_LIST_FOR_SBI_FETCH_ERROR(\"PMS_SF_ERROR_001\", \"Error while fetching devices list for SBI.\"),\n\tINVALID_REQUEST_PARAM(\"PMS_REQUEST_ERROR_001\", \"Invalid request.\"),\n\tSBI_DEVICE_MAPPING_ALREADY_EXIST(\"PMS_DEVICE_ERROR_004\", \"SBI and Device mapping already exists.\"),\n\tSBI_NOT_EXISTS(\"PMS_DEVICE_ERROR_005\", \"SBI do not exists.\"),\n\tDEVICE_NOT_EXISTS(\"PMS_DEVICE_ERROR_006\", \"Device do not exists.\"),\n\tDEVICE_NOT_ASSOCIATED_WITH_PARTNER_ID(\"PMS_DEVICE_ERROR_007\", \"Device is not associated with partner Id.\"),\n\tCREATE_DEVICE_ERROR(\"PMS_DEVICE_ERROR_008\", \"Error while adding device for sbi.\"),\n\tPENDING_APPROVAL_SBI(\"PMS_DEVICE_ERROR_009\",\"Unable to add device because the associated SBI is not approved.\"),\n\tDEVICE_NOT_PENDING_FOR_APPROVAL(\"PMS_DEVICE_ERROR_010\",\"Given device details are not in pending for approval status.\"),\n\tAPPROVE_OR_REJECT_DEVICE_WITH_SBI_MAPPING_ERROR(\"PMS_DEVICE_ERROR_011\", \"Error while approving or rejecting device for Sbi Mapping.\"),\n\tSBI_DEVICE_MAPPING_NOT_EXISTS(\"PMS_DEVICE_ERROR_012\",\"SBI and Device mapping does not exists.\"),\n\tINVALID_DEVICE_ID(\"PMS_DEVICE_ERROR_013\", \"Device Id is invalid\"),\n\tDEVICE_ALREADY_DEACTIVATED(\"PMS_DEVICE_ERROR_014\", \"The selected device has been already deactivated.\"),\n\tDEACTIVATE_DEVICE_ERROR(\"PMS_DEVICE_ERROR_015\", \"Error while deactivating the device\"),\n\tDEVICE_NOT_ASSOCIATED_WITH_USER(\"PMS_DEVICE_ERROR_016\", \"Device is not associated with user.\"),\n\tINVALID_SBI_ID(\"PMS_DEVICE_ERROR_017\", \"SBI Id is invalid\"),\n\tDEACTIVATE_SBI_ERROR(\"PMS_DEVICE_ERROR_018\", \"Error while deactivating the SBI\"),\n\tSBI_NOT_ASSOCIATED_WITH_USER(\"PMS_DEVICE_ERROR_019\", \"SBI is not associated with user.\"),\n\tSBI_ALREADY_DEACTIVATED(\"PMS_DEVICE_ERROR_020\", \"The selected SBI is already deactivated.\"),\n\tSBI_EXPIRED(\"PMS_DEVICE_ERROR_021\", \"SBI for which device is being added is expired\"),\n\tSBI_NOT_APPROVED(\"PMS_DEVICE_ERROR_022\", \"The selected SBI is not in an approved status.\"),\n\tDEVICE_NOT_APPROVED(\"PMS_DEVICE_ERROR_023\", \"The selected Device is not in an approved status.\"),\n\tNO_SBI_FOUND_FOR_APPROVE(\"PMS_DEVICE_ERROR_024\", \"This device cannot be approved as it does not have any SBI associated to it.\"),\n\tNO_SBI_FOUND_FOR_REJECT(\"PMS_DEVICE_ERROR_025\", \"This device cannot be rejected as it does not have any SBI associated to it.\"),\n\tDEACTIVATE_STATUS_CODE(\"PMS_DEVICE_ERROR_026\", \"Request status should be De-Activate\"),\n\tAPPROVE_REJECT_STATUS_CODE(\"PMS_DEVICE_ERROR_027\", \"Request status should be either approved or rejected\"),\n\tREJECTED_SBI(\"PMS_DEVICE_ERROR_028\",\"Unable to add device because the associated SBI is already rejected\"),\n\tDEACTIVATED_SBI(\"PMS_DEVICE_ERROR_029\",\"Unable to add device because the associated SBI is already deactivated\"),\n\tGET_ALL_DEVICE_DETAILS_FETCH_ERROR(\"PMS_FTM_ERROR_024\", \"Error occurred while retrieving all device details\"),\n\tFTM_CHIP_DETAILS_LIST_FETCH_ERROR(\"PMS_FTM_ERROR_001\", \"Error while fetching the FTM chip details\"),\n\tDEACTIVATE_FTM_ERROR(\"PMS_FTM_ERROR_003\", \"Error while deactivating the FTM\"),\n\tINVALID_FTM_ID(\"PMS_FTM_ERROR_004\", \"FTM Id is invalid\"),\n\tFTM_NOT_EXISTS(\"PMS_FTM_ERROR_005\", \"FTM Details do not exists.\"),\n\tFTM_NOT_ASSOCIATED_WITH_USER(\"PMS_FTM_ERROR_006\", \"FTM is not associated with user.\"),\n\tFTM_ALREADY_DEACTIVATED(\"PMS_FTM_ERROR_007\", \"The selected FTM is already deactivated.\"),\n\tDOWNLOAD_CERTIFICATE_FTM_INVALID_STATUS(\"PMS_FTM_ERROR_008\", \"The selected FTM must have a status of either pending_approval or approved.\"),\n\tDOWNLOAD_CERTIFICATE_FTM_DEACTIVATED_ERROR(\"PMS_FTM_ERROR_009\", \"Cannot download the certificate for a deactivated FTM\"),\n\tUNABLE_TO_DOWNLOAD_ORIGINAL_FTM_CERTIFICATE(\"PMS_FTM_ERROR_009\", \"Unable to download original FTM certificate\"),\n\tFTM_NOT_APPROVED(\"PMS_FTM_ERROR_010\", \"The selected FTM is not in an approved status.\"),\n\tPARTNERS_FETCH_ERROR(\"PMS_PS_ERROR_001\", \"Error while fetching partners list\"),\n\tPARTNER_DOES_NOT_EXIST_ERROR(\"PMS_PS_ERROR_002\", \"Partner does not exists\"),\n\tPARTNER_POLICIES_FETCH_ERROR(\"PMS_PS_ERROR_003\", \"Error while fetching partner policies\"),\n\tPARTNER_NOT_APPROVED_ERROR(\"PMS_PS_ERROR_004\", \"The Given partner is not approved\"),\n\tNOT_AUTH_PARTNER_TYPE_ERROR(\"PMS_PS_ERROR_005\", \"The specified partner is not of type Authentication Partner\"),\n\tINVALID_PAGE_PARAMETERS(\"PMS_PS_ERROR_006\", \"Invalid pagination request: 'pageNo' and 'pageSize' must be specified together.\" ),\n\tINVALID_SORT_PARAMETERS(\"PMS_PS_ERROR_007\", \"Invalid Sorting request: 'sortType' and 'sortFieldName' must be specified together.\" ),\n\tMISSING_PAGINATION_FOR_SORT(\"PMS_PS_ERROR_008\", \"Please provide pagination parameters ('pageNo' and 'pageSize') when requesting sorted data.\"),\n\tROOT_AND_INTERMEDIATE_CERTS_DISABLED(\"PMS_FEATURE_001\", \"Root and Intermediate Certificates list is not available in the current deployment.\"),\n\tOIDC_CLIENT_FEATURE_DISABLED(\"PMS_FEATURE_002\", \"OIDC client related features are not available in the current deployment.\"),\n\tCA_SIGNED_CERT_DISABLED(\"PMS_FEATURE_003\", \"Downloading CA signed certificate is not available in the current deployment.\"),\n\tUNABLE_TO_GENERATE_UNIQUE_ID(\"PMS_PRT_100\", \"Unable to generate a unique %s (field: '%s') for entity '%s' after %s attempts.\"),\n\tDEVICE_DETAIL_ID_ALREADY_EXISTS(\"PMS_PRT_101\", \"A Device with the same Device Detail ID already exists\");;\n\n\t/**\n\t * The error code.\n\t */\n\tprivate String errorCode;\n\n\t/**\n\t * The error message.\n\t */\n\tprivate String errorMessage;\n\n\t/**\n\t * \n\t * \n\t * @param errorCode\n\t * the errorCode.\n\t * @param errorMessage\n\t * the errorMessage.\n\t */\n\tErrorCode(String errorCode, String errorMessage) {\n\t\tthis.errorCode = errorCode;\n\t\tthis.errorMessage = errorMessage;\n\t}\n\n\t/**\n\t * Getter for error code.\n\t * \n\t * @return the error code.\n\t */\n\tpublic String getErrorCode() {\n\t\treturn errorCode;\n\t}\n\n\t/**\n\t * Getter for error message.\n\t * \n\t * @return the error message.\n\t */\n\tpublic String getErrorMessage() {\n\t\treturn errorMessage;\n\t}\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/partner/controller/PartnerServiceController.java", + "title": "PartnerServiceController.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/partner/controller/PartnerServiceController.java", + "language": "java", + "content": "package io.mosip.pms.partner.controller;\n\nimport java.io.IOException;\nimport java.security.cert.CertificateException;\nimport java.util.List;\n\nimport javax.validation.Valid;\nimport javax.validation.constraints.NotNull;\n\nimport io.mosip.pms.common.response.dto.ResponseWrapperV2;\nimport io.mosip.pms.partner.dto.*;\nimport io.mosip.pms.partner.util.FeatureAvailabilityUtil;\nimport io.swagger.v3.oas.annotations.media.Content;\nimport io.swagger.v3.oas.annotations.media.Schema;\nimport io.swagger.v3.oas.annotations.responses.ApiResponse;\nimport io.swagger.v3.oas.annotations.responses.ApiResponses;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.http.HttpStatus;\nimport org.springframework.http.ResponseEntity;\nimport org.springframework.security.access.prepost.PreAuthorize;\nimport org.springframework.web.bind.annotation.*;\n\nimport com.fasterxml.jackson.core.JsonParseException;\nimport com.fasterxml.jackson.core.JsonProcessingException;\nimport com.fasterxml.jackson.databind.JsonMappingException;\n\nimport io.mosip.kernel.core.http.ResponseFilter;\nimport io.mosip.pms.common.dto.FilterValueDto;\nimport io.mosip.pms.common.dto.PageResponseDto;\nimport io.mosip.pms.common.dto.PartnerPolicySearchResponseDto;\nimport io.mosip.pms.common.dto.PolicyRequestSearchResponseDto;\nimport io.mosip.pms.common.dto.SearchDto;\nimport io.mosip.pms.common.entity.PartnerType;\nimport io.mosip.pms.common.request.dto.RequestWrapper;\nimport io.mosip.pms.common.response.dto.ResponseWrapper;\nimport io.mosip.pms.device.response.dto.FilterResponseCodeDto;\nimport io.mosip.pms.device.util.AuditUtil;\nimport io.mosip.pms.partner.constant.PartnerServiceAuditEnum;\nimport io.mosip.pms.partner.manager.constant.PartnerManageEnum;\nimport io.mosip.pms.partner.manager.service.PartnerManagerService;\nimport io.mosip.pms.partner.request.dto.APIKeyGenerateRequestDto;\nimport io.mosip.pms.partner.request.dto.AddContactRequestDto;\nimport io.mosip.pms.partner.request.dto.CACertificateRequestDto;\nimport io.mosip.pms.partner.request.dto.EmailVerificationRequestDto;\nimport io.mosip.pms.partner.request.dto.ExtractorsDto;\nimport io.mosip.pms.partner.request.dto.PartnerCertDownloadRequestDto;\nimport io.mosip.pms.partner.request.dto.PartnerCertificateUploadRequestDto;\nimport io.mosip.pms.partner.request.dto.PartnerPolicyMappingRequest;\nimport io.mosip.pms.partner.request.dto.PartnerRequest;\nimport io.mosip.pms.partner.request.dto.PartnerRequestDto;\nimport io.mosip.pms.partner.request.dto.PartnerSearchDto;\nimport io.mosip.pms.partner.request.dto.PartnerUpdateDto;\nimport io.mosip.pms.partner.request.dto.PartnerUpdateRequest;\nimport io.mosip.pms.partner.response.dto.APIKeyGenerateResponseDto;\nimport io.mosip.pms.partner.response.dto.APIkeyRequests;\nimport io.mosip.pms.partner.response.dto.CACertificateResponseDto;\nimport io.mosip.pms.partner.response.dto.EmailVerificationResponseDto;\nimport io.mosip.pms.partner.response.dto.PartnerCertDownloadResponeDto;\nimport io.mosip.pms.partner.response.dto.PartnerCertificateResponseDto;\nimport io.mosip.pms.partner.response.dto.PartnerCredentialTypePolicyDto;\nimport io.mosip.pms.partner.response.dto.PartnerResponse;\nimport io.mosip.pms.partner.response.dto.PartnerSearchResponseDto;\nimport io.mosip.pms.partner.response.dto.RetrievePartnerDetailsResponse;\nimport io.mosip.pms.partner.response.dto.OriginalCertDownloadResponseDto;\nimport io.mosip.pms.partner.service.PartnerService;\nimport io.swagger.annotations.Api;\nimport io.swagger.annotations.ApiParam;\nimport io.swagger.v3.oas.annotations.Operation;\n\n@RestController\n@RequestMapping(value = \"/partners\")\n@Api(tags = { \"Partner Service Controller\" })\npublic class PartnerServiceController {\t\n\n\t@Autowired\n\tPartnerService partnerService;\n\t\n\t@Autowired\n\tPartnerManagerService partnerManagerService;\n\n\tString msg = \"mosip.partnermanagement.partners.retrieve\";\n\t\n\t@Autowired\n\tAuditUtil auditUtil;\n\n\t@Autowired\n\tFeatureAvailabilityUtil featureAvailabilityUtil;\n\n\tpublic static final String VERSION = \"1.0\";\n\n\t/**\n\t * This endpoint would be used for self registration by partner to create Auth/E-KYC\n\t * Partners. Partner Management module would be integrating with Kernel IAM\n\t * module for generation of user id and password for partners.\n\t * \n\t * @param request\n\t * this class contains partner details\n\t * @return response this class contains partner response\n\t */\t\n\t@PostMapping\n\t@Operation(summary = \"partner self registration\", description = \"Saves partner details\")\n\tpublic ResponseEntity> partnerSelfRegistration(\n\t\t\t@RequestBody @Valid RequestWrapper request) {\n\t\tResponseWrapper response = new ResponseWrapper<>();\n\t\tPartnerResponse partnerResponse = null;\n\t\tPartnerRequest partnerRequest = null;\n\t\tpartnerRequest = request.getRequest();\n\t\tauditUtil.setAuditRequestDto(PartnerServiceAuditEnum.REGISTER_PARTNER, request.getRequest().getPartnerId(),\n\t\t\t\t\"partnerId\");\n\t\tpartnerResponse = partnerService.savePartner(partnerRequest);\n\t\tresponse.setId(request.getId());\n\t\tresponse.setVersion(request.getVersion());\n\t\tresponse.setResponse(partnerResponse);\n\t\treturn new ResponseEntity<>(response, HttpStatus.OK);\n\t}\n\t\n\t@RequestMapping(value = \"/v2\", method = RequestMethod.POST)\n\t@Operation(summary = \"partner registration\", description = \"Registers partner details\")\n\tpublic ResponseEntity> partnerRegistration(\n\t\t\t@RequestBody @Valid RequestWrapper request) {\n\t\tResponseWrapper response = new ResponseWrapper<>();\n\t\tPartnerResponse partnerResponse = null;\n\t\tauditUtil.setAuditRequestDto(PartnerServiceAuditEnum.REGISTER_PARTNER, request.getRequest().getPartnerId(),\n\t\t\t\t\"partnerId\");\n\t\tpartnerResponse = partnerService.registerPartner(request.getRequest());\n\t\tresponse.setId(request.getId());\n\t\tresponse.setVersion(request.getVersion());\n\t\tresponse.setResponse(partnerResponse);\n\t\treturn new ResponseEntity<>(response, HttpStatus.OK);\n\t}\n\t\n\t/**\n\t * \n\t * @param partnerId\n\t * @param policyId\n\t * @param request\n\t * @return\n\t */\n\t@PreAuthorize(\"hasAnyRole(@authorizedRoles.getPostpartnersbioextractors())\")\n\t@RequestMapping(value = \"/{partnerId}/bioextractors/{policyId}\", method = RequestMethod.POST)\n\t@Operation(summary = \"Service to add bio extractors\", description = \"Service to add bio extractors\")\n\tpublic ResponseEntity> addBiometricExtractors(@PathVariable String partnerId ,@PathVariable String policyId,\n\t\t\t@RequestBody @Valid RequestWrapper request){\n\t\tResponseWrapper response = new ResponseWrapper<>();\n\t\tauditUtil.setAuditRequestDto(PartnerServiceAuditEnum.ADD_BIO_EXTRACTORS, partnerId, \"partnerId\");\n\t\tresponse.setResponse(partnerService.addBiometricExtractors(partnerId, policyId, request.getRequest()));\n\t\tresponse.setId(request.getId());\n\t\tresponse.setVersion(request.getVersion());\n\t\treturn new ResponseEntity<>(response, HttpStatus.OK);\t\t\n\t}\n\t\n\t/**\n\t * \n\t * @param partnerId\n\t * @param policyId\n\t * @return\n\t */\n\t@PreAuthorize(\"hasAnyRole(@authorizedRoles.getGetpartnersbioextractors())\")\n\t@RequestMapping(value = \"{partnerId}/bioextractors/{policyId}\", method = RequestMethod.GET)\n\t@Operation(summary = \"Service to get bio extractors\", description = \"Service to get bio extractors\")\n\tpublic ResponseEntity> getBiometricExtractors(@PathVariable String partnerId ,@PathVariable String policyId){\n\t\tResponseWrapper response = new ResponseWrapper<>();\n\t\tExtractorsDto extractors = partnerService.getBiometricExtractors(partnerId, policyId);\n\t\tresponse.setResponse(extractors);\n\t\treturn new ResponseEntity<>(response, HttpStatus.OK);\n\t}\n\t\n\t/**\n\t * \n\t * @param partnerId\n\t * @param policyId\n\t * @param credentialType\n\t * @return\n\t */\n\t@PreAuthorize(\"hasAnyRole(@authorizedRoles.getPostpartnerscredentialtypepolicies())\")\n\t@RequestMapping(value = \"/{partnerId}/credentialtype/{credentialType}/policies/{policyName}\",method = RequestMethod.POST)\n\t@Operation(summary = \"Service to map partner and policy to a credential type\", description = \"Service to map partner and policy to a credential type\")\n\tpublic ResponseEntity> mapPolicyToCredentialType(@PathVariable @Valid String partnerId ,@PathVariable @Valid String policyName,\n\t\t\t@PathVariable @Valid String credentialType){\n\t\tResponseWrapper response = new ResponseWrapper<>();\n\t\tauditUtil.setAuditRequestDto(PartnerServiceAuditEnum.MAP_POLICY_CREDENTIAL_TYPE, partnerId, \"partnerId\");\n\t\tresponse.setResponse(partnerService.mapPartnerPolicyCredentialType(credentialType, partnerId, policyName));\n\t\treturn new ResponseEntity<>(response,HttpStatus.OK);\n\t}\n\t\n\t@PreAuthorize(\"hasAnyRole(@authorizedRoles.getGetpartnerscredentialtypepolicies())\")\n\t@RequestMapping(value = \"/{partnerId}/credentialtype/{credentialType}/policies\",method = RequestMethod.GET)\n\t@Operation(summary = \"Service to get policy for mapped partner and credential type\", description = \"Service to get policy for mapped partner and credential type\")\n\tpublic ResponseEntity> getCredentialTypePolicy(@PathVariable @Valid String partnerId,@PathVariable @Valid String credentialType) throws JsonParseException, JsonMappingException, IOException{\n\t\tResponseWrapper response = new ResponseWrapper<>();\n\t\tresponse.setResponse(partnerService.getPartnerCredentialTypePolicy(credentialType, partnerId));\n\t\treturn new ResponseEntity<>(response, HttpStatus.OK);\n\t}\n\t\n\t/**\n\t * \n\t * @param partnerId\n\t * @param request\n\t * @return\n\t */\n\t@PreAuthorize(\"hasAnyRole(@authorizedRoles.getPostpartnerscontactadd())\")\n\t@RequestMapping(value = \"{partnerId}/contact/add\", method = RequestMethod.POST)\n\t@Operation(summary = \"Service to add additional contact details of partner\", description = \"Service to add additional contact details of partner\")\n\tpublic ResponseEntity> addContact(@PathVariable String partnerId,@RequestBody @Valid RequestWrapperrequest){\n\t\tResponseWrapper response = new ResponseWrapper<>();\n\t\tauditUtil.setAuditRequestDto(PartnerServiceAuditEnum.ADD_CONTACTS, partnerId, \"partnerId\");\n\t\tresponse.setResponse(partnerService.createAndUpdateContactDetails(request.getRequest(),partnerId));\n\t\tresponse.setId(request.getId());\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tresponse.setVersion(request.getVersion());\n\t\treturn new ResponseEntity<>(response, HttpStatus.OK);\n\t}\n\t/**\n\t * This endpoint would be used to update Auth/E-KYC Partner's details.\n\t * \n\t * @param request\n\t * this class contains partner updated details\n\t * @param partnerId\n\t * this is unique id created after self registered by partner\n\t * @return partnerResponse this class contains updated partner details\n\t */\n\t@PreAuthorize(\"hasAnyRole(@authorizedRoles.getPutpartners())\")\n\t@RequestMapping(value = \"/{partnerId}\", method = RequestMethod.PUT)\n\t@Operation(summary = \"Service to update details of partner\", description = \"Service to update details of partner\")\n\tpublic ResponseEntity> updatePartnerDetails(\n\t\t\t@RequestBody @Valid RequestWrapper request, @PathVariable String partnerId) {\n\t\tResponseWrapper response = new ResponseWrapper<>();\n\t\tPartnerResponse partnerResponse = null;\n\t\tPartnerUpdateRequest partnerRequest = request.getRequest();\n\t\tauditUtil.setAuditRequestDto(PartnerServiceAuditEnum.UPDATE_PARTNER, partnerId, \"partnerId\");\n\t\tpartnerResponse = partnerService.updatePartnerDetail(partnerRequest, partnerId);\n\t\tresponse.setId(request.getId());\n\t\tresponse.setVersion(request.getVersion());\n\t\tresponse.setResponse(partnerResponse);\n\t\treturn new ResponseEntity<>(response, HttpStatus.OK);\n\t}\n\t\n\t@PreAuthorize(\"hasAnyRole(@authorizedRoles.getPutpartnersnew())\")\n\t@RequestMapping(value = \"/v2/{partnerId}\", method = RequestMethod.PUT)\n\t@Operation(summary = \"Service to update details of partner\", description = \"Service to update details of partner\")\n\tpublic ResponseEntity> updatePartnerInfo(\n\t\t\t@RequestBody @Valid RequestWrapper request, @PathVariable String partnerId) {\n\t\tResponseWrapper response = new ResponseWrapper<>();\n\t\tPartnerResponse partnerResponse = null;\t\t\n\t\tauditUtil.setAuditRequestDto(PartnerServiceAuditEnum.UPDATE_PARTNER, partnerId, \"partnerId\");\n\t\tpartnerResponse = partnerService.updatePartnerDetails(request.getRequest(), partnerId);\n\t\tresponse.setId(request.getId());\n\t\tresponse.setVersion(request.getVersion());\n\t\tresponse.setResponse(partnerResponse);\n\t\treturn new ResponseEntity<>(response, HttpStatus.OK);\n\t}\n\t\n\t/**\n\t * This endpoint would be used to retrieve Auth/E-KYC Partner details\n\t * \n\t * @param partnerId\n\t * this is unique id created after self registered by partner\n\t * @return retrievePartnerDetailsResponse this class contains partner details\n\t */\n\t@PreAuthorize(\"hasAnyRole(@authorizedRoles.getGetpartnerspartnerid())\")\n\t@RequestMapping(value = \"/{partnerId}\", method = RequestMethod.GET)\n\t@Operation(summary = \"Service to get details of partner\", description = \"Service to get details of partner\")\n\tpublic ResponseEntity> retrievePartnerDetails(\n\t\t\t@PathVariable String partnerId) {\n\t\tResponseWrapper response = new ResponseWrapper<>();\n\t\tRetrievePartnerDetailsResponse retrievePartnerDetailsResponse = null;\n\t\tretrievePartnerDetailsResponse = partnerService.getPartnerDetails(partnerId);\n\t\tresponse.setId(msg);\n\t\tresponse.setVersion(VERSION);\n\t\tresponse.setResponse(retrievePartnerDetailsResponse);\n\t\treturn new ResponseEntity<>(response, HttpStatus.OK);\n\t}\n\n\t@PreAuthorize(\"hasAnyRole(@authorizedRoles.getGetpartnersapikeyrequest())\")\n\t@RequestMapping(value = \"/{partnerId}/apikey/request\", method = RequestMethod.GET)\n\t@Operation(summary = \"Service to get API key requests of partner\")\n\tpublic ResponseEntity>> getAPIKeyRequestsOfPartner(\n\t\t\t@PathVariable String partnerId) {\n\t\tResponseWrapper> response = new ResponseWrapper<>();\n\t\tList apikeyRequestsList = null;\t\t\n\t\tapikeyRequestsList = partnerService.retrieveAllApiKeyRequestsSubmittedByPartner(partnerId);\n\t\tresponse.setId(msg);\n\t\tresponse.setVersion(VERSION);\n\t\tresponse.setResponse(apikeyRequestsList);\n\t\treturn new ResponseEntity<>(response, HttpStatus.OK);\n\t}\n\t\n\t/**\n\t * To Upload CA/Sub-CA certificates\n\t * \n\t * @param caCertRequestDto {@link CACertificateRequestDto} request\n\t * @return {@link CACertficateResponseDto} Upload Success\n\t * @throws IOException \n\t * @throws JsonProcessingException \n\t * @throws JsonMappingException \n\t * @throws JsonParseException \n\t */\n\t@PreAuthorize(\"hasAnyRole(@authorizedRoles.getPostpartnerscacertificateupload())\")\n\t@RequestMapping(value = \"/certificate/ca/upload\", method = RequestMethod.POST)\n\t@Operation(summary = \"Service to upload ca certificate\", description = \"Service to upload ca certificate\")\n\tpublic ResponseWrapper uploadCACertificate(\n\t\t\t@ApiParam(\"Upload CA/Sub-CA certificates.\") @RequestBody @Valid RequestWrapper caCertRequestDto) throws JsonParseException, JsonMappingException, JsonProcessingException, IOException {\n\t\tResponseWrapper response = new ResponseWrapper<>();\n\t\tauditUtil.setAuditRequestDto(PartnerServiceAuditEnum.UPLOAD_CA_CERT);\n\t\tresponse.setResponse(partnerService.uploadCACertificate(caCertRequestDto.getRequest()));\n\t\treturn response;\n }\n \n \n\t/**\n\t * To Upload Partner Certificate.\n\t * \n\t * @param partnerCertRequestDto {@link PartnerCertificateUploadRequestDto} request\n\t * @return {@link PartnerCertificateResponseDto} signed certificate response\n\t * @throws IOException \n\t * @throws JsonProcessingException \n\t * @throws JsonMappingException \n\t * @throws JsonParseException \n\t */\n\t@PreAuthorize(\"hasAnyRole(@authorizedRoles.getPostpartnerscertificateupload())\")\n\t@RequestMapping(value = \"/certificate/upload\", method = RequestMethod.POST)\n\t@Operation(summary = \"Service to upload partner certificate\", description = \"Service to upload partner certificate\")\n\tpublic ResponseWrapper uploadPartnerCertificate(\n\t\t\t@ApiParam(\"Upload Partner Certificates.\") @RequestBody @Valid RequestWrapper partnerCertRequestDto) throws JsonParseException, JsonMappingException, JsonProcessingException, IOException {\n\t\tResponseWrapper response = new ResponseWrapper<>();\n\t\tauditUtil.setAuditRequestDto(PartnerServiceAuditEnum.UPLOAD_PARTNER_CERT, partnerCertRequestDto.getRequest().getPartnerId(),\"partnerId\");\n\t\tresponse.setResponse(partnerService.uploadPartnerCertificate(partnerCertRequestDto.getRequest()));\n\t\treturn response;\n\t}\n\n\t@PreAuthorize(\"hasAnyRole(@authorizedRoles.getGetpartnerscertificate())\")\n\t@RequestMapping(value = \"/{partnerId}/certificate\", method = RequestMethod.GET)\n\t@Operation(summary = \"Service to get partner certificate\")\n\tpublic ResponseWrapper getPartnerCertificate(\n\t\t\t@ApiParam(\"To download resigned partner certificate.\") @PathVariable(\"partnerId\") @NotNull String partnerId) throws JsonParseException, JsonMappingException, JsonProcessingException, IOException {\t\t\n\t\tResponseWrapper response = new ResponseWrapper<>();\n\t\tPartnerCertDownloadRequestDto requestDto = new PartnerCertDownloadRequestDto();\n\t\trequestDto.setPartnerId(partnerId);\n\t\tresponse.setResponse(partnerService.getPartnerCertificate(requestDto));\n\t\treturn response;\n }\n\n\t@PreAuthorize(\"hasAnyRole(@authorizedRoles.getGetpartnerscertificate())\")\n\t@GetMapping(value = \"/{partnerId}/certificate-data\")\n\t@Operation(summary = \"This endpoint retrieves both the CA signed certificate uploaded by the partner and the MOSIP-signed certificate generated by PMS.\",\n\t\t\tdescription = \"Available since release-1.2.2.0. It is configured for role any of the partner type or PARTNER_ADMIN.\")\n\t@ApiResponses(value = {@ApiResponse(responseCode = \"200\", description = \"OK\"),\n\t\t\t@ApiResponse(responseCode = \"401\", description = \"Unauthorized\", content = @Content(schema = @Schema(hidden = true))),\n\t\t\t@ApiResponse(responseCode = \"403\", description = \"Forbidden\", content = @Content(schema = @Schema(hidden = true)))})\n\tpublic ResponseWrapperV2 getPartnerCertificateData(\n\t\t\t@ApiParam(\"To download original partner certificate.\") @PathVariable(\"partnerId\") @NotNull String partnerId) throws JsonParseException, JsonMappingException, JsonProcessingException, IOException, CertificateException {\n\t\tfeatureAvailabilityUtil.validateCaSignedPartnerCertificateFeatureEnabled();\n\t\tPartnerCertDownloadRequestDto requestDto = new PartnerCertDownloadRequestDto();\n\t\trequestDto.setPartnerId(partnerId);\n\t\treturn partnerService.getPartnerCertificateData(requestDto);\n\t}\n\n\t@PreAuthorize(\"hasAnyRole(@authorizedRoles.getGetpartnercertificates())\")\n\t@GetMapping(value = \"/partner-certificates-details\")\n\t@Operation(summary = \"This endpoint retrieves a list of all Partner Certicates uploaded by the logged in user\",\n\tdescription = \"Available since release-1.2.2.0. It is configured for role any of the partner type or PARTNER_ADMIN.\")\n\t\t\t@ApiResponses(value = {@ApiResponse(responseCode = \"200\", description = \"OK\"),\n\t\t\t@ApiResponse(responseCode = \"401\", description = \"Unauthorized\", content = @Content(schema = @Schema(hidden = true))),\n\t\t\t@ApiResponse(responseCode = \"403\", description = \"Forbidden\", content = @Content(schema = @Schema(hidden = true)))})\n\tpublic ResponseWrapperV2> getPartnerCertificatesDetails() {\n\t\treturn partnerService.getPartnerCertificatesDetails();\n\t}\n\n\t@PreAuthorize(\"hasAnyRole(@authorizedRoles.getGetpartnersv3())\")\n\t@GetMapping(value = \"/v3\")\n\t@Operation(summary = \"This endpoint retrieves a list of Partners associated with the logged in user, based on the query parameters\",\n\t\t\tdescription = \"Available since release-1.2.2.0. It is configured for role any of the partner type or PARTNER_ADMIN.\")\n\t@ApiResponses(value = {@ApiResponse(responseCode = \"200\", description = \"OK\"),\n\t\t\t@ApiResponse(responseCode = \"401\", description = \"Unauthorized\", content = @Content(schema = @Schema(hidden = true))),\n\t\t\t@ApiResponse(responseCode = \"403\", description = \"Forbidden\", content = @Content(schema = @Schema(hidden = true)))})\n\tpublic ResponseWrapperV2> getPartnersV3(\n\t\t\t@RequestParam(name = \"status\") String status,\n\t\t\t@RequestParam(name = \"policyGroupAvailable\", required = false) Boolean policyGroupAvailable,\n\t\t\t@RequestParam(name = \"partnerType\", required = false) String partnerType) {\n\n\t\treturn partnerService.getPartnersV3(status, policyGroupAvailable, partnerType);\n\t}\n\n\t/*\n\t * This endpoint has been deprecated since the release-1.2.2.0\n\t * It has been replaced by the new GET /partners/v3 endpoint.\n\t * The functionality provided by this API is now available in the new endpoint.\n\t * Please use the new endpoint for all future requests.\n\t */\n\t@Deprecated(since = \"release-1.2.2.0\")\n\t@ResponseFilter\n\t@PostMapping(\"/search\")\n\t@PreAuthorize(\"hasAnyRole(@authorizedRoles.getPostpartnerssearch())\")\n\t@Operation(summary = \"Service to search partner details - deprecated since release-1.2.2.0.\",\n\t\t\tdescription = \"This endpoint has been deprecated since the release-1.2.2.0 and replaced by the GET /admin-partners endpoint\")\n\tpublic ResponseWrapper> searchPartner(\n\t\t\t@RequestBody @Valid RequestWrapper request) {\n\t\tResponseWrapper> responseWrapper = new ResponseWrapper<>();\n\t\tauditUtil.setAuditRequestDto(PartnerServiceAuditEnum.SEARCH_PARTNER);\n\t\tresponseWrapper.setResponse(partnerService.searchPartner(request.getRequest()));\n\t\treturn responseWrapper;\n\t}\n\n\t@ResponseFilter\n\t@PostMapping(\"/partnertype/search\")\n\t@PreAuthorize(\"hasAnyRole(@authorizedRoles.getPostpartnerspartnertypesearch())\")\n\t@Operation(summary = \"Service to search partner types\", description = \"Service to search partner types\")\n\tpublic ResponseWrapper> searchPartnerType(\n\t\t\t@RequestBody @Valid RequestWrapper request) {\n\t\tResponseWrapper> responseWrapper = new ResponseWrapper<>();\n\t\tauditUtil.setAuditRequestDto(PartnerServiceAuditEnum.SEARCH_PARTNER_TYPE);\n\t\tresponseWrapper.setResponse(partnerService.searchPartnerType(request.getRequest()));\n\t\treturn responseWrapper;\n\t}\n\n\t/*\n\t * This endpoint has been deprecated since the release-1.2.2.0\n\t * It has been replaced by the new GET /partners/v3 endpoint.\n\t * The functionality provided by this API is now available in the new endpoint.\n\t * Please use the new endpoint for all future requests.\n\t */\n\t@Deprecated(since = \"release-1.2.2.0\")\n\t@ResponseFilter\n\t@PostMapping(\"/filtervalues\")\n\t@PreAuthorize(\"hasAnyRole(@authorizedRoles.getPostpartnersfiltervalues())\")\n\t@Operation(summary = \"Service to filter partner details - deprecated since release-1.2.2.0.\",\n\t\t\tdescription = \"This endpoint has been deprecated since the release-1.2.2.0 and replaced by the GET /admin-partners endpoint\")\n\tpublic ResponseWrapper filterValues(\n\t\t\t@RequestBody @Valid RequestWrapper request) {\n\t\tResponseWrapper responseWrapper = new ResponseWrapper<>();\n\t\tauditUtil.setAuditRequestDto(PartnerServiceAuditEnum.FILTER_PARTNER);\n\t\tresponseWrapper.setResponse(partnerService.filterValues(request.getRequest()));\n\t\treturn responseWrapper;\n\t}\n\n\t/*\n\t * This endpoint has been deprecated since the release-1.2.2.0\n\t * It has been replaced by the new GET /partner-policy-requests endpoint.\n\t * The functionality provided by this API is now available in the new endpoint.\n\t * Please use the new endpoint for all future requests.\n\t */\n\t@Deprecated(since = \"release-1.2.2.0\")\n\t@ResponseFilter\n\t@PostMapping(\"/apikey/request/filtervalues\")\n\t@PreAuthorize(\"hasAnyRole(@authorizedRoles.getPostpartnersapikeyrequestfiltervalues())\")\n\t@Operation(summary = \"Service to filter API key requests - deprecated since release-1.2.2.0.\",\n\t\t\tdescription = \"This endpoint has been deprecated since the release-1.2.2.0 and replaced by the GET /partner-policy-requests endpoint\")\n\tpublic ResponseWrapper apikeyRequetsFilterValues(\n\t\t\t@RequestBody @Valid RequestWrapper request) {\n\t\tResponseWrapper responseWrapper = new ResponseWrapper<>();\n\t\tauditUtil.setAuditRequestDto(PartnerServiceAuditEnum.FILTER_PARTNER_APIKEY_REQUESTS);\n\t\tresponseWrapper.setResponse(partnerService.apiKeyRequestFilter(request.getRequest()));\n\t\treturn responseWrapper;\n\t}\n\n\t/*\n\t * This endpoint has been deprecated since the release-1.2.2.0\n\t * It has been replaced by the new GET /partner-policy-requests endpoint.\n\t * The functionality provided by this API is now available in the new endpoint.\n\t * Please use the new endpoint for all future requests.\n\t */\n\t@Deprecated(since = \"release-1.2.2.0\")\n\t@ResponseFilter\n\t@PostMapping(\"/apikey/request/search\")\n\t@PreAuthorize(\"hasAnyRole(@authorizedRoles.getPostpartnersapikeyrequestsearch())\")\n\t@Operation(summary = \"Service to search API key requests - deprecated since release-1.2.2.0.\",\n\t\t\tdescription = \"This endpoint has been deprecated since the release-1.2.2.0 and replaced by the GET /partner-policy-requests endpoint.\")\n\tpublic ResponseWrapper> searchApikeyRequest(\n\t\t\t@RequestBody @Valid RequestWrapper request) {\n\t\tResponseWrapper> responseWrapper = new ResponseWrapper<>();\n\t\tauditUtil.setAuditRequestDto(PartnerServiceAuditEnum.SEARCH_PARTNER_APIKEY);\n\t\tresponseWrapper.setResponse(partnerService.searchPartnerApiKeyRequests(request.getRequest()));\n\t\treturn responseWrapper;\n\t}\n\n\t/*\n\t * This endpoint has been deprecated since the release-1.2.2.0\n\t * It has been replaced by the new GET /partner-api-keys endpoint.\n\t * The functionality provided by this API is now available in the new endpoint.\n\t * Please use the new endpoint for all future requests.\n\t */\n\t@Deprecated(since = \"release-1.2.2.0\")\n\t@ResponseFilter\n\t@PostMapping(\"/apikey/search\")\n\t@PreAuthorize(\"hasAnyRole(@authorizedRoles.getPostpartnersapikeysearch())\")\n\t@Operation(summary = \"Service to search API key - deprecated since release-1.2.2.0.\",\n\t\t\tdescription = \"This endpoint has been deprecated since the release-1.2.2.0 and replaced by the GET /partner-api-keys endpoint.\")\n\tpublic ResponseWrapper> searchApikey(\n\t\t\t@RequestBody @Valid RequestWrapper request) {\n\t\tResponseWrapper> responseWrapper = new ResponseWrapper<>();\n\t\tauditUtil.setAuditRequestDto(PartnerServiceAuditEnum.SEARCH_PARTNER_APIKEY_REQUEST);\n\t\tresponseWrapper.setResponse(partnerService.searchPartnerApiKeys(request.getRequest()));\n\t\treturn responseWrapper;\n\t}\n\t\n\t@PreAuthorize(\"hasAnyRole(@authorizedRoles.getPutpartnerspolicygroup())\")\n\t@RequestMapping(value = \"/{partnerId}/policygroup/{policygroupName}\", method = RequestMethod.PUT)\n\tpublic ResponseEntity> updatePolicyGroup(\n\t\t\t@ApiParam(\"partnerId\") @PathVariable(\"partnerId\") @NotNull String partnerId,\n\t\t\t@PathVariable(\"policygroupName\") @NotNull String policygroupName) {\n\t\tResponseWrapper response = new ResponseWrapper<>();\n\t\tauditUtil.setAuditRequestDto(PartnerServiceAuditEnum.MAP_POLICY_GROUP, partnerId, \"partnerId\");\n\t\tresponse.setResponse(partnerService.updatePolicyGroup(partnerId, policygroupName));\n\t\treturn new ResponseEntity<>(response, HttpStatus.OK);\n\t}\t\n\n\t@Operation(summary = \"To verify partner's email\", description = \"Service to verify partner email\")\n\t@RequestMapping(value = \"/email/verify\", method = RequestMethod.PUT)\n\tpublic ResponseEntity> isEmailExists(\n\t\t\t@RequestBody @Valid RequestWrapper request) {\n\t\tResponseWrapper response = new ResponseWrapper<>();\n\t\tauditUtil.setAuditRequestDto(PartnerServiceAuditEnum.MAP_POLICY_GROUP, request.getRequest().getEmailId(), \"email\");\n\t\tresponse.setResponse(partnerService.isPartnerExistsWithEmail(request.getRequest().getEmailId()));\n\t\treturn new ResponseEntity<>(response, HttpStatus.OK);\n\t}\n\t\n\t@PreAuthorize(\"hasAnyRole(@authorizedRoles.getPostpartnerspolicymap())\")\n\t@Operation(summary = \"To request for policy mapping\", description = \"To request for policy mapping\")\n\t@RequestMapping(value = \"/{partnerId}/policy/map\",method = RequestMethod.POST)\n\tpublic ResponseEntity> mapPolicyToPartner(\n\t\t\t@ApiParam(\"partnerId\") @PathVariable(\"partnerId\") @NotNull String partnerId,\n\t\t\t@RequestBody @Valid RequestWrapper request) {\n\t\tauditUtil.setAuditRequestDto(PartnerServiceAuditEnum.MAP_POLICY_PARTNER, partnerId, \"partnerId\");\n\t\tResponseWrapper response = new ResponseWrapper<>();\n\t\tresponse.setResponse(partnerService.requestForPolicyMapping(request.getRequest(), partnerId));\n\t\tresponse.setId(request.getId());\n\t\tresponse.setVersion(request.getVersion());\n\t\treturn new ResponseEntity<>(response, HttpStatus.OK);\n\t}\n\t\n\t@PreAuthorize(\"hasAnyRole(@authorizedRoles.getPatchpartnersgenerateapikey())\")\n\t@Operation(summary = \"To generate API Key for approved policies\", description = \"To generate API Key for approved policies\")\n\t@RequestMapping(value = \"/{partnerId}/generate/apikey\",method = RequestMethod.PATCH)\n\tpublic ResponseEntity> generateAPIKey(\n\t\t\t@ApiParam(\"partner id\") @PathVariable(\"partnerId\") @NotNull String partnerId,\n\t\t\t@RequestBody @Valid RequestWrapper request) {\n\t\tResponseWrapper response = new ResponseWrapper<>();\n\t\tauditUtil.setAuditRequestDto(PartnerManageEnum.GENERATE_API_KEY, partnerId, \"partnerId\");\n\t\tresponse.setResponse(partnerManagerService.generateAPIKey(partnerId, request.getRequest()));\n\t\tresponse.setId(request.getId());\n\t\tresponse.setVersion(request.getVersion());\n\t\treturn new ResponseEntity<>(response, HttpStatus.OK);\n\t}\n}" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/partner/controller/RoleController.java", + "title": "RoleController.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/partner/controller/RoleController.java", + "language": "java", + "content": "package io.mosip.pms.partner.controller;\n\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.web.bind.annotation.GetMapping;\nimport org.springframework.web.bind.annotation.RestController;\n\nimport io.mosip.pms.common.dto.RoleExtnDto;\nimport io.mosip.pms.common.response.dto.ResponseWrapper;\nimport io.mosip.pms.partner.service.RoleService;\n\n@RestController\npublic class RoleController {\n\n\t@Autowired\n\tRoleService roleService;\n\n\t@GetMapping(\"/roles\")\n\tprivate ResponseWrapper getRequiredRoles() {\n\t\tResponseWrapper responseWrapper = new ResponseWrapper<>();\n\t\tresponseWrapper.setResponse(roleService.getUIRequiredRoles());\n\t\treturn responseWrapper;\n\t}\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/partner/exception/PartnerServiceException.java", + "title": "PartnerServiceException.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/partner/exception/PartnerServiceException.java", + "language": "java", + "content": "package io.mosip.pms.partner.exception;\n\nimport io.mosip.pms.device.exception.BaseUncheckedException;\n\npublic class PartnerServiceException extends BaseUncheckedException{\n\t\n\tprivate static final long serialVersionUID = 1L;\n\n\tpublic PartnerServiceException() {}\n\t\n\tpublic PartnerServiceException(String errorCode, String errorMessage) {\n\t\tsuper(errorCode, errorMessage);\n\t}\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/partner/manager/constant/ErrorCode.java", + "title": "ErrorCode.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/partner/manager/constant/ErrorCode.java", + "language": "java", + "content": "package io.mosip.pms.partner.manager.constant;\n\npublic enum ErrorCode {\n\n\tINVALIED_INPUT_PARAMETER(\"PMS_COR_002\", \"Invalid Input Parameter\"),\n\tPOLICY_REQUEST_ALREADY_APPROVED(\"PMS_PM_034\", \"Policy request already approved.\"),\n\tPOLICY_REQUEST_ALREADY_REJECTED(\"PMS_PM_035\", \"Policy request already rejected.\"),\n\tINVALID_STATUS_CODE(\"PMS_PM_045\", \"Status should be either Approved or Rejected\"),\n\tEXTRACTORS_NOT_PRESENT(\"PMS_PM_051\", \"Extractors are not present. Please add extractors.\"),\n\tINVALID_STATUS_CODE_ACTIVE_DEACTIVE(\"PMS_PM_058\", \"Status should be either Active or De-Active\"),\n\tNEW_POLICY_ID_NOT_EXIST(\"PMS_PMP_010\",\"Policy does not belong to the Policy Group of the Partner Manger\"),\n\tNO_PARTNER_API_KEY_REQUEST_EXCEPTION(\"PMS_PMP_015\",\"No Partner api key requests for the Policy Group\"),\n\tPARTNER_API_DOES_NOT_EXIST_EXCEPTION(\"PMS_PMP_007\",\"Partner api key does not exist\"),\n\tPARTNER_API_DOES_NOT_BELONGS_TO_THE_POLICYGROUP_OF_PARTNERMANAGER_EXCEPTION(\n\t\t\t\"PMS_PMP_009\",\"Partner api key does not belong to the Policy Group of the Partner Manger\"),\n\tPARTNER_API_KEY_DOES_NOT_EXIST_EXCEPTION(\"PMS_PMP_011\",\"Partner api key does not exist\"),\n\tPARTNER_API_KEY_NOT_MAPPED(\"PMS_PMP_009\", \"For given partner and apikey mapping not exists.\"),\n\tPARTNER_DOES_NOT_EXIST_EXCEPTION(\"PMS_PMP_013\",\"Partner does not exist\"),\n\tPARTNER_ID_DOES_NOT_EXIST_EXCEPTION(\"PMS_PMP_005\",\"Partner ID does not exist\"),\n\tMISSING_PARTNER_MANAGEMENT_INPUT_PARAMETER(\"PMS_COR_001\",\"Missing Input Parameter\"),\n\tPARTNER_NOT_ACTIVE_EXCEPTION(\"PMS_PMP_016\",\"Partner is not active.\"),\n\tPARTNER_NOT_MAPPED_TO_POLICY_EXCEPTION(\"PMS_PMP_017\",\"Partner is not mapped to any policy.\"),\n\tPARTNER_POLICY_EXPIRED_EXCEPTION(\"PMS_PMP_018\",\"Partner policy got expired.\"),\n\tPARTNER_POLICY_NOT_ACTIVE_EXCEPTION(\"PMS_PMP_019\",\"Partner policy is not active.\"),\n\tMISP_LICENSE_KEY_NOT_EXISTS(\"PMS_PMP_020\",\"MISP license key not exists.\"),\n\tMISP_LICENSE_KEY_EXPIRED(\"PMS_PMP_021\",\"MISP license key is expired.\"),\n\tPOLICY_GROUP_NOT_EXISTS(\"PMS_PMP_022\",\"Policy group not exists.\"),\n\tPOLICY_GROUP_NOT_ACTIVE(\"PMS_PMP_023\",\"Policy group is not active.\"),\n\tPOLICY_FILE_PARSING_ERROR(\"PMS_PMP_024\",\"Policy file is corrupted.\"),\n\tMISP_IS_BLOCKED(\"PMS_PMP_025\",\"License key of MISP is blocked\"),\n\tPARTNER_APIKEY_POLICY_MAPPING_NOTEXISTS(\"PMS_PMP_50\",\"Given apikey,partner and policy mapping not exists.\"),\n\tPOLICY_NOT_BELONGS_TO_PARTNER_POLICY_GROUP(\"PMS_PMP_51\",\"Given policy is not belongs to partner's policy group\"),\n\tPARTNER_CERTIFICATE_NOT_EXISTS(\"PMS_PMP_052\",\"Partner Certificate not available\"),\n\tPOLICY_NOT_EXIST_EXCEPTION(\"PMS_PMP_014\",\"Policy does not exist\"),\n\tPARTNER_APIKEY_NOT_ACTIVE_EXCEPTION(\"PMS_PMS_022\",\"Given Partner api key is not active.\"),\n\tPOLICY_NOT_ACTIVE_EXCEPTION(\"PMS_PMP_019\",\"Policy is not active.\"),\n\tPOLICY_EXPIRED_EXCEPTION(\"PMS_PMP_018\",\"Policy expired.\"),\n\tPOLICY_PARSING_ERROR(\"PMS_POL_052\",\"Error occured while parsing policy string to json object\"),\n\tCERTIFICATE_NOT_UPLOADED_EXCEPTION(\"PMS_PRT_108\",\"Certficate is not uploaded for the given partner.Cannot activate the same.\"),\n\tPARTNER_POLICY_MAPPING_NOT_EXISTS(\"PMS_PRT_109\",\"Given policy is not mapped to partner\"),\n\tPARTNER_POLICY_LABEL_EXISTS(\"PMS_PRT_110\",\"Given label already exists.Provide unique label.\"),\n\tPARTNER_POLICY_LABEL_NOT_EXISTS(\"PMS_PRT_111\",\"API key not exists for the given combination\"),\n\tLOGGEDIN_USER_NOT_AUTHORIZED(\"PMS_PRT_055\",\"User not authorized.\"),\n\tJSON_NOT_VALID(\"PMS_PRT_096\",\"Json is not valid\"),\n\tFETCH_PARTNER_DETAILS_ERROR(\"PMS_PM_059\",\"Error while fetching partner details.\"),\n\tCERTIFICATE_NOT_AVAILABLE_IN_KM(\"PMS_PM_060\",\"The certificate for the specified partner is not available in the store\"),\n\tFETCH_ALL_PARTNER_DETAILS_ERROR(\"PMS_PM_061\", \"Error while fetching all partners details\"),\n\tFETCH_ALL_PARTNER_POLICY_MAPPING_REQUEST_ERROR(\"PMS_PM_062\", \"Error while fetching all partner policy mapping requests\"),\n\tPARTNER_ALREADY_DEACTIVATED(\"PMS_PM_063\", \"The selected partner has already been deactivated.\"),\n\tFETCH_ALL_API_KEY_REQUESTS_ERROR(\"PMS_PM_064\", \"Error while fetching all api key requests\");\n\t\n\n\t/**\n\t * The error code.\n\t */\n\tprivate String errorCode;\n\n\t/**\n\t * The error message.\n\t */\n\tprivate String errorMessage;\n\n\t/**\n\t * \n\t * \n\t * @param errorCode the errorCode.\n\t * @param errorMessage the errorMessage.\n\t */\n\tErrorCode(String errorCode, String errorMessage) {\n\t\tthis.errorCode = errorCode;\n\t\tthis.errorMessage = errorMessage;\n\t}\n\n\t/**\n\t * Getter for error code.\n\t * \n\t * @return the error code.\n\t */\n\tpublic String getErrorCode() {\n\t\treturn errorCode;\n\t}\n\n\t/**\n\t * Getter for error message.\n\t * \n\t * @return the error message.\n\t */\n\tpublic String getErrorMessage() {\n\t\treturn errorMessage;\n\t}\n\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/partner/manager/controller/PartnerManagementController.java", + "title": "PartnerManagementController.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/partner/manager/controller/PartnerManagementController.java", + "language": "java", + "content": "package io.mosip.pms.partner.manager.controller;\n\nimport java.util.List;\nimport java.util.Optional;\n\nimport javax.validation.Valid;\nimport javax.validation.constraints.NotNull;\n\nimport io.mosip.pms.common.dto.PageResponseV2Dto;\nimport io.mosip.pms.common.response.dto.ResponseWrapperV2;\nimport io.mosip.pms.partner.manager.dto.*;\nimport io.mosip.pms.partner.util.FeatureAvailabilityUtil;\nimport io.mosip.pms.partner.util.PartnerHelper;\nimport io.swagger.annotations.ApiParam;\nimport io.swagger.v3.oas.annotations.Parameter;\nimport io.swagger.v3.oas.annotations.enums.ParameterIn;\nimport io.swagger.v3.oas.annotations.media.Content;\nimport io.swagger.v3.oas.annotations.media.Schema;\nimport io.swagger.v3.oas.annotations.responses.ApiResponse;\nimport io.swagger.v3.oas.annotations.responses.ApiResponses;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.http.HttpStatus;\nimport org.springframework.http.ResponseEntity;\nimport org.springframework.security.access.prepost.PreAuthorize;\nimport org.springframework.web.bind.annotation.PathVariable;\nimport org.springframework.web.bind.annotation.RequestBody;\nimport org.springframework.web.bind.annotation.RequestMapping;\nimport org.springframework.web.bind.annotation.RequestMethod;\nimport org.springframework.web.bind.annotation.RequestParam;\nimport org.springframework.web.bind.annotation.RestController;\nimport org.springframework.web.bind.annotation.GetMapping;\n\nimport io.mosip.pms.common.request.dto.RequestWrapper;\nimport io.mosip.pms.common.response.dto.ResponseWrapper;\nimport io.mosip.pms.device.util.AuditUtil;\nimport io.mosip.pms.partner.manager.constant.PartnerManageEnum;\nimport io.mosip.pms.partner.manager.service.PartnerManagerService;\nimport io.mosip.pms.partner.request.dto.APIkeyStatusUpdateRequestDto;\nimport io.swagger.annotations.Api;\nimport io.swagger.v3.oas.annotations.Operation;\n\n/**\n *

    This is the MOSIP Partner Management Service controller. This defines all the necessary operations

    \n * 1.Partner ApiKey To Policy Mappings{{@link #PartnerApiKeyToPolicyMappings(RequestWrapper, String, String)}\n * 2.Activate Deactivate AuthEKYC Partners{{@link #activateDeactivateAuthEKYCPartners(String, RequestWrapper)}\n * 3.Activate Deactivate Partner APIKey for Given Partner{{@link #activateDeactivatePartnerAPIKeyGivenPartner(String, RequestWrapper, String)}\n * 4.Approve or Reject Partner APIKey Requests Based On APIKeyRequestId{{@link #approveRejectPartnerAPIKeyRequestsBasedOnAPIKeyRequestId(RequestWrapper, String)}\n * 5.Get All Auth EKYC Partners For PolicyGroup{{@link #getAllAuthEKYCPartnersForThePolicyGroup()}\n * 6.Get particular Auth EKYC PartnerDetails For GivenPartnerId{{@link #getparticularAuthEKYCPartnerDetailsForGivenPartnerId(String)}\n * 7.Get Partner APIKey To PolicyMappings{{@link #getPartnerAPIKeyToPolicyMappings(String, String)}\n * 8.Get All Partner APIKey Requests As Received By PartnerManager{{@link #getAllPartnerAPIKeyRequestsAsReceivedByPartnerManager()}\n * 9.Get Request For Partner APIKey To PolicyMappings For GivenRequestId{{@link #getTheRequestForPartnerAPIKeyToPolicyMappingsForGivenRequestId(String)}\n *\n * @author sanjeev.shrivastava\n *\n */\n\n@RestController\n@Api(tags = { \"Partner Management Controller\" })\npublic class PartnerManagementController {\n\t\n\t@Autowired\n\tPartnerManagerService partnerManagementService;\n\t\n\t@Autowired\n\tAuditUtil auditUtil;\n\n\t@Autowired\n\tPartnerHelper partnerHelper;\n\n\t@Autowired\n\tFeatureAvailabilityUtil featureAvailabilityUtil;\n\t\n\tString msg = \"mosip.partnermanagement.partners.retrieve\";\n\tString version = \"1.0\";\n\n\n\t/**\n\t * This endpoint would be used by partner Manager, to update Partner API key to Policy Mappings.\n\t * @param request this class contain oldPolicyID and newPolicyID\n\t * @param partnerId this is unique id created after self registered by partner\n\t * @param partnerApiKey this is unique id created by partner manager at the time of approving partner request\n\t * @return response this class contains massage about API key created successfully\n\t */\n\t@PreAuthorize(\"hasAnyRole(@authorizedRoles.getPutpartnersapikeypolicies())\")\n\t@RequestMapping(value = \"/partners/{partnerId}/apikey/{apikey}/policies\", method = RequestMethod.PUT)\n\t@Operation(summary = \"Service to update policies against to API key\", description = \"Service to update policies against to API key\")\n\tpublic ResponseEntity> partnerApiKeyToPolicyMappings(\n\t\t\t@RequestBody @Valid RequestWrapper request, \n\t\t\t@PathVariable String partnerId,\n\t\t\t@PathVariable String apikey) {\t\t\n\t\tauditUtil.setAuditRequestDto(PartnerManageEnum.API_KEY_MAPPING);\n\t\tPartnersPolicyMappingRequest partnersPolicyMappingRequest = request.getRequest();\n\t\tResponseWrapper response = new ResponseWrapper<>();\n\t\tPartnersPolicyMappingResponse partnersPolicyMappingResponse=null;\n\t\tresponse.setId(request.getId());\n\t\tresponse.setVersion(request.getVersion());\n\t\tpartnersPolicyMappingResponse = partnerManagementService\n\t\t\t\t.updatePolicyAgainstApikey(partnersPolicyMappingRequest, partnerId, apikey);\n\t\tresponse.setResponse(partnersPolicyMappingResponse);\n\t\tauditUtil.setAuditRequestDto(PartnerManageEnum.API_KEY_MAPPING_SUCCESS);\n\t\treturn new ResponseEntity<>(response, HttpStatus.OK);\n\t}\n\t\n\t/**\n\t * This endpoint would be used to activate/deactivate Auth/E-KYC Partners\n\t * @param partnerId this is unique id created after self registered by partner\n\t * @param request this class contains the status of activate/deactivate Auth/E-KYC Partners\n\t * @return respons this class contains massage about Partner status updated successfully\n\t */\n\t@PreAuthorize(\"hasAnyRole(@authorizedRoles.getPatchpartners())\")\n\t@RequestMapping(value = \"/partners/{partnerId}\", method = RequestMethod.PATCH)\n\t@Operation(summary = \"Service to activate/de-activate partner\", description = \"Service to activate/de-activate partner\")\n\t public ResponseEntity> activateDeactivatePartner(\n\t\t\t @PathVariable String partnerId,\n\t\t\t @RequestBody @Valid RequestWrapper request){\n\t\tResponseWrapper response = new ResponseWrapper<>();\n\t\tPartnersPolicyMappingResponse partnersPolicyMappingResponse = null;\n\t\tresponse.setId(request.getId());\n\t\tresponse.setVersion(request.getVersion());\n\t\tauditUtil.setAuditRequestDto(PartnerManageEnum.ACTIVATE_DEACTIVATE_KYC_PARTNERS);\n\t\tStatusRequestDto activateDeactivatePartnerRequest = request.getRequest();\n\t\tpartnersPolicyMappingResponse = partnerManagementService\n\t\t\t\t.activateDeactivateAuthEKYCPartner(partnerId,activateDeactivatePartnerRequest);\n\t\tresponse.setResponse(partnersPolicyMappingResponse);\n\t\tauditUtil.setAuditRequestDto(PartnerManageEnum.ACTIVATE_DEACTIVATE_KYC_PARTNERS_SUCCESS);\n\t\treturn new ResponseEntity<>(response, HttpStatus.OK);\n\t }\n\n\t/*\n\t * This endpoint has been deprecated since the release-1.2.2.0\n\t * It has been replaced by the new GET /partners/v3 endpoint.\n\t * The functionality provided by this API is now available in the new endpoint.\n\t * Please use the new endpoint for all future requests.\n\t */\n\t@Deprecated(since = \"release-1.2.2.0\")\n\t@PreAuthorize(\"hasAnyRole(@authorizedRoles.getGetpartners())\")\n\t@RequestMapping(value = \"/partners\", method = RequestMethod.GET)\n\t@Operation(summary = \"Service to get partner details - deprecated since release-1.2.2.0.\",\n\t\t\tdescription = \"This endpoint has been deprecated since the release-1.2.2.0 and replaced by the GET /admin-partners endpoint\")\n\tpublic ResponseEntity> getPartners(\n\t\t\t@RequestParam(\"partnerType\") Optional partnerType){\n\t\tResponseWrapper response=new ResponseWrapper<>();\n\t\tRetrievePartnerDetailsResponse retrievePartnerDetailsResponse = null;\n\t\tretrievePartnerDetailsResponse = partnerManagementService.getAllAuthEKYCPartnersForThePolicyGroup(partnerType);\n\t\tresponse.setId(msg);\n\t\tresponse.setVersion(version);\n\t\tresponse.setResponse(retrievePartnerDetailsResponse);\n\t\treturn new ResponseEntity<>(response, HttpStatus.OK);\n\t}\n\n\t/*\n\t * This endpoint has been deprecated since the release-1.2.2.0\n\t * It has been replaced by the new GET /partners/v3 endpoint.\n\t * The functionality provided by this API is now available in the new endpoint.\n\t * Please use the new endpoint for all future requests.\n\t */\n\t@Deprecated(since = \"release-1.2.2.0\")\n\t@PreAuthorize(\"hasAnyRole(@authorizedRoles.getGetpartnersnew())\")\n\t@RequestMapping(value = \"/partners/v2\", method = RequestMethod.GET)\n\t@Operation(summary = \"Service to get partner details - deprecated since release-1.2.2.0.\",\n\t\t\tdescription = \"This endpoint has been deprecated since the release-1.2.2.0 and replaced by the GET /admin-partners endpoint\")\n\tpublic ResponseEntity> getPartnersDeatils(\n\t\t\t@RequestParam(\"partnerType\") Optional partnerType){\n\t\tResponseWrapper response=new ResponseWrapper<>();\n\t\tPartnerDetailsResponse retrievePartnerDetailsResponse = null;\n\t\tretrievePartnerDetailsResponse = partnerManagementService.getPartners(partnerType);\n\t\tresponse.setId(msg);\n\t\tresponse.setVersion(version);\n\t\tresponse.setResponse(retrievePartnerDetailsResponse);\n\t\treturn new ResponseEntity<>(response, HttpStatus.OK);\n\t}\n\n\t\n\t/**\n\t * Partner managers would be using this request to retrieve the Partner API key\n\t * to Policy Mappings. Partner management system would be able to validate\n\t * Partner API Key pattern, validate expiry for Partner API Key and status\n\t * details in background, while fetching Policy to Partner API mappings.\n\t * \n\t * @param partnerId this is unique id created after self registered by partner\n\t * @param partnerApiKey this is unique id created by partner manager at the time of approving partner request\n\t * @return response this class contains partnerID and policyId\n\t */\n\t@PreAuthorize(\"hasAnyRole(@authorizedRoles.getGetpartnersapikey())\")\n\t@RequestMapping(value = \"/partners/{partnerId}/apikey/{apikey}\" , method = RequestMethod.GET)\n\t@Operation(summary = \"Service to get policy for given API key\", description = \"Service to get policy for given API key\")\n\tpublic ResponseEntity> getPolicyMappedToAPIKey(\n\t\t\t@PathVariable String partnerId,\n\t\t\t@PathVariable String apikey){\n\t\tResponseWrapper response = new ResponseWrapper<>();\n\t\tPartnerAPIKeyToPolicyMappingsResponse partnerAPIKeyToPolicyMappingsResponse = null;\n\t\tpartnerAPIKeyToPolicyMappingsResponse = partnerManagementService.getPartnerAPIKeyToPolicyMapping(partnerId,\n\t\t\t\tapikey);\n\t\tresponse.setId(msg);\n\t\tresponse.setVersion(version);\n\t\tresponse.setResponse(partnerAPIKeyToPolicyMappingsResponse);\n\t\treturn new ResponseEntity<>(response , HttpStatus.OK);\n\t}\n\n\t/*\n\t * This endpoint has been deprecated since the release-1.2.2.0\n\t * It has been replaced by the new GET /partner-policy-requests endpoint.\n\t * The functionality provided by this API is now available in the new endpoint.\n\t * Please use the new endpoint for all future requests.\n\t */\n\t@Deprecated(since = \"release-1.2.2.0\")\n\t@PreAuthorize(\"hasAnyRole(@authorizedRoles.getGetpartnersapikey())\")\n\t@RequestMapping(value = \"/partners/apikey\" , method = RequestMethod.GET)\n\t@Operation(summary = \"Service to get API key requests - deprecated since release-1.2.2.0.\",\n\t\t\tdescription = \"This endpoint has been deprecated since the release-1.2.2.0 and replaced by the GET /partner-policy-requests endpoint\")\n\tpublic ResponseEntity> getAPIKeyRequests(){\n\t\tList apikeyRequests = null;\n\t\tResponseWrapper response = new ResponseWrapper<>();\n\t\tPartnerAPIKeyRequestsResponse partnerAPIKeyRequestsResponse = new PartnerAPIKeyRequestsResponse();\n\t\tapikeyRequests = partnerManagementService.getAllPartnerAPIKeyRequestsAsReceivedByPartnerManagers();\n\t\tpartnerAPIKeyRequestsResponse.setApikeyRequests(apikeyRequests);\n\t\tresponse.setId(msg);\n\t\tresponse.setVersion(version);\n\t\tresponse.setResponse(partnerAPIKeyRequestsResponse);\n\t\treturn new ResponseEntity<>(response , HttpStatus.OK);\n\t}\n\t\n\t/**\n\t * This endpoint would be used to retrieve the request for Partner API key to Policy Mappings for given request id.\n\t * @param apiKeyReqId this is unique id created after partner request for Partner API Key\n\t * @return response this class contains details related to Partner API key to Policy Mappings\n\t */\n\t@PreAuthorize(\"hasAnyRole(@authorizedRoles.getGetpartnersapikey())\")\n\t@RequestMapping(value = \"/partners/apikey/{apikey}\" , method = RequestMethod.GET)\n\t@Operation(summary = \"Service to get API key request\", description = \"Service to get API key request\")\n\tpublic ResponseEntity> getAPIKeyRequest(\n\t\t\t@PathVariable String apikey) {\n\t\tResponseWrapper response = new ResponseWrapper<>();\n\t\tApikeyRequests apikeyRequests=null;\n\t\tapikeyRequests = partnerManagementService.getTheRequestForPartnerAPIKeyToPolicyMappingsForGivenRequestId(apikey);\n\t\tresponse.setId(msg);\n\t\tresponse.setVersion(version);\n\t\tresponse.setResponse(apikeyRequests);\n\t\treturn new ResponseEntity<>(response , HttpStatus.OK);\n\t}\t\n\t\n\t@PreAuthorize(\"hasAnyRole(@authorizedRoles.getPutpartnerspolicymapping())\")\n\t@RequestMapping(value = \"/partners/policy/{mappingkey}\", method = RequestMethod.PUT)\n\t@Operation(summary = \"Service to approve/reject partner policy mapping\", description = \"Service to approve/reject partner policy mapping\")\n\tpublic ResponseEntity> approveRejectPolicyMappings(\n\t\t\t@RequestBody @Valid RequestWrapper request,\n\t\t\t@PathVariable String mappingkey){\n\t\tResponseWrapper response = new ResponseWrapper<>();\t\t\n\t\tresponse.setId(request.getId());\n\t\tresponse.setVersion(request.getVersion());\t\t\n\t\tauditUtil.setAuditRequestDto(PartnerManageEnum.APPROVE_REJECT_PARTNER_API);\n\t\tresponse.setResponse(partnerManagementService.approveRejectPartnerPolicyMapping(mappingkey, request.getRequest()));\t\t\n\t\treturn new ResponseEntity<>(response, HttpStatus.OK);\n\t}\n\t\n\t@PreAuthorize(\"hasAnyRole(@authorizedRoles.getPatchpartnerspolicyapikeystatus())\")\n\t@RequestMapping(value = \"/partners/{partnerId}/policy/{policyId}/apiKey/status\", method = RequestMethod.PATCH)\n\t@Operation(summary = \"Service to activate/de-activate partner API key\", description = \"Service to activate/de-activate partner API key\")\n\tpublic ResponseEntity> activateDeactivatePartnerAPIKey(@PathVariable String partnerId,\n\t\t\t@PathVariable String policyId, @RequestBody @Valid RequestWrapper request) {\n\t\tResponseWrapper response = new ResponseWrapper<>();\n\t\tresponse.setId(request.getId());\n\t\tresponse.setVersion(request.getVersion());\n\t\tauditUtil.setAuditRequestDto(PartnerManageEnum.ACTIVATE_DEACTIVATE_API_PARTNERS);\n\t\tresponse.setResponse(partnerManagementService.updateAPIKeyStatus(partnerId, policyId, request.getRequest()));\n\t\tauditUtil.setAuditRequestDto(PartnerManageEnum.ACTIVATE_DEACTIVATE_API_PARTNERS_SUCCESS);\n\t\treturn new ResponseEntity<>(response, HttpStatus.OK);\n\t}\n\n\t@PreAuthorize(\"hasAnyRole(@authorizedRoles.getGetpartnerdetails())\")\n\t@GetMapping(value = \"/admin-partners/{partnerId}\")\n\t@Operation(summary = \"This endpoint retrieves all the details of the Partner based on Partner Id.\",\n\tdescription = \"Available since release-1.2.2.0. It is configured for the role PARTNER_ADMIN.\")\n\t@ApiResponses(value = {\n\t\t\t@ApiResponse(responseCode = \"200\", description = \"OK\"),\n\t\t\t@ApiResponse(responseCode = \"401\", description = \"Unauthorized\", content = @Content(schema = @Schema(hidden = true))),\n\t\t\t@ApiResponse(responseCode = \"403\", description = \"Forbidden\", content = @Content(schema = @Schema(hidden = true)))\n\t})\n\tpublic ResponseWrapperV2 getPartnerDetails(@PathVariable String partnerId) {\n\t\treturn partnerManagementService.getPartnerDetails(partnerId);\n\t}\n\n\t@PreAuthorize(\"hasAnyRole(@authorizedRoles.getGetadminpartners())\")\n\t@GetMapping(value = \"/admin-partners\")\n\t@Operation(summary = \"This endpoint retrieves a list of all Partners.\",\n\t\t\tdescription = \"Available since release-1.2.2.0. This endpoint supports pagination, sorting, and filtering. It is configured for the role PARTNER_ADMIN.\")\n\t@ApiResponses(value = {\n\t\t\t@ApiResponse(responseCode = \"200\", description = \"OK\"),\n\t\t\t@ApiResponse(responseCode = \"401\", description = \"Unauthorized\", content = @Content(schema = @Schema(hidden = true))),\n\t\t\t@ApiResponse(responseCode = \"403\", description = \"Forbidden\", content = @Content(schema = @Schema(hidden = true)))\n\t})\n\tpublic ResponseWrapperV2> getAdminPartners(\n\t\t\t@RequestParam(value = \"sortFieldName\", required = false) String sortFieldName,\n\t\t\t@RequestParam(value = \"sortType\", required = false) String sortType, // e.g., ASC or DESC\n\t\t\t@RequestParam(value = \"pageNo\", defaultValue = \"0\") Integer pageNo,\n\t\t\t@RequestParam(value = \"pageSize\", defaultValue = \"8\") Integer pageSize,\n\t\t\t@RequestParam(value = \"partnerId\", required = false) String partnerId,\n\t\t\t@RequestParam(value = \"partnerType\", required = false) String partnerType,\n\t\t\t@RequestParam(value = \"isActive\", required = false) Boolean isActive,\n\t\t\t@RequestParam(value = \"orgName\", required = false) String orgName,\n\t\t\t@RequestParam(value = \"emailAddress\", required = false) String emailAddress,\n\t\t\t@Parameter(\n\t\t\t\t\tdescription = \"Status of certificate upload\",\n\t\t\t\t\tin = ParameterIn.QUERY,\n\t\t\t\t\tschema = @Schema(allowableValues = {\"uploaded\", \"not_uploaded\"})\n\t\t\t)\n\t\t\t@RequestParam(value = \"certificateUploadStatus\", required = false) String certificateUploadStatus,\n\t\t\t@RequestParam(value = \"policyGroupName\", required = false) String policyGroupName\n\t) {\n\t\tpartnerHelper.validateRequestParameters(partnerHelper.partnerAliasToColumnMap, sortFieldName, sortType, pageNo, pageSize);\n\t\tPartnerFilterDto partnerFilterDto = new PartnerFilterDto();\n\t\tif (partnerId != null) {\n\t\t\tpartnerFilterDto.setPartnerId(partnerId.toLowerCase());\n\t\t}\n\t\tif (partnerType != null) {\n\t\t\tpartnerFilterDto.setPartnerTypeCode(partnerType.toLowerCase());\n\t\t}\n\t\tif (orgName != null) {\n\t\t\tpartnerFilterDto.setOrganizationName(orgName.toLowerCase());\n\t\t}\n\t\tif (policyGroupName != null) {\n\t\t\tpartnerFilterDto.setPolicyGroupName(policyGroupName.toLowerCase());\n\t\t}\n\t\tif (certificateUploadStatus != null) {\n\t\t\tpartnerFilterDto.setCertificateUploadStatus(certificateUploadStatus);\n\t\t}\n\t\tif (emailAddress != null) {\n\t\t\tpartnerFilterDto.setEmailAddress(emailAddress.toLowerCase());\n\t\t}\n\t\tif (isActive != null) {\n\t\t\tpartnerFilterDto.setIsActive(isActive);\n\t\t}\n\t\treturn partnerManagementService.getAdminPartners(sortFieldName, sortType, pageNo, pageSize, partnerFilterDto);\n\t}\n\n\t@PreAuthorize(\"hasAnyRole(@authorizedRoles.getGetallpartnerpolicymappingrequests())\")\n\t@GetMapping(value = \"/partner-policy-requests\")\n\t@Operation(summary = \"This endpoint fetches list of all the policy requests made by the partners.\",\n\tdescription = \"Available since release-1.2.2.0. This endpoint supports pagination, sorting, and filtering based on optional query parameters. If the token used to access this endpoint, does not have the PARTNER_ADMIN role, then it will fetch all the policy requests made by all the partners associated with the logged in user only.If the token used to access this endpoint, has PARTNER_ADMIN role, then it will fetch all the policy requests made by all the partners.\")\n\t@ApiResponses(value = {\n\t\t\t@ApiResponse(responseCode = \"200\", description = \"OK\"),\n\t\t\t@ApiResponse(responseCode = \"401\", description = \"Unauthorized\", content = @Content(schema = @Schema(hidden = true))),\n\t\t\t@ApiResponse(responseCode = \"403\", description = \"Forbidden\", content = @Content(schema = @Schema(hidden = true)))\n\t})\n\tpublic ResponseWrapperV2> getAllPartnerPolicyRequests(\n\t\t\t@RequestParam(value = \"sortFieldName\", required = false) String sortFieldName,\n\t\t\t@RequestParam(value = \"sortType\", required = false) String sortType,\n\t\t\t@RequestParam(value = \"pageNo\", required = false) Integer pageNo,\n\t\t\t@RequestParam(value = \"pageSize\", required = false) Integer pageSize,\n\t\t\t@RequestParam(value = \"partnerId\", required = false) String partnerId,\n\t\t\t@RequestParam(value = \"partnerComment\", required = false) String partnerComment,\n\t\t\t@RequestParam(value = \"orgName\", required = false) String orgName,\n\t\t\t@Parameter(\n\t\t\t\t\tdescription = \"Status of request\",\n\t\t\t\t\tin = ParameterIn.QUERY,\n\t\t\t\t\tschema = @Schema(allowableValues = {\"approved\", \"rejected\", \"InProgress\"})\n\t\t\t)\n\t\t\t@RequestParam(value = \"status\", required = false) String status,\n\t\t\t@RequestParam(value = \"policyId\", required = false) String policyId,\n\t\t\t@RequestParam(value = \"policyName\", required = false) String policyName,\n\t\t\t@RequestParam(value = \"policyGroupName\", required = false) String policyGroupName,\n\t\t\t@RequestParam(value = \"partnerType\", required = false) String partnerType\n\t) {\n\t\tpartnerHelper.validateRequestParameters(partnerHelper.partnerPolicyMappingAliasToColumnMap, sortFieldName, sortType, pageNo, pageSize);\n\t\tPartnerPolicyRequestFilterDto filterDto = new PartnerPolicyRequestFilterDto();\n\t\tif (partnerId != null) {\n\t\t\tfilterDto.setPartnerId(partnerId.toLowerCase());\n\t\t}\n\t\tif (partnerComment != null) {\n\t\t\tfilterDto.setPartnerComment(partnerComment.toLowerCase());\n\t\t}\n\t\tif (orgName != null) {\n\t\t\tfilterDto.setOrganizationName(orgName.toLowerCase());\n\t\t}\n\t\tif (status != null) {\n\t\t\tfilterDto.setStatus(status);\n\t\t}\n\t\tif (policyId != null) {\n\t\t\tfilterDto.setPolicyId(policyId.toLowerCase());\n\t\t}\n\t\tif (policyName != null) {\n\t\t\tfilterDto.setPolicyName(policyName.toLowerCase());\n\t\t}\n\t\tif (policyGroupName != null) {\n\t\t\tfilterDto.setPolicyGroupName(policyGroupName.toLowerCase());\n\t\t}\n\t\tif (partnerType != null) {\n\t\t\tfilterDto.setPartnerType(partnerType.toLowerCase());\n\t\t}\n\t\treturn partnerManagementService.getAllPartnerPolicyRequests(sortFieldName, sortType, pageNo, pageSize, filterDto);\n\t}\n\n\t@PreAuthorize(\"hasAnyRole(@authorizedRoles.getGetpartnersapikeyrequests())\")\n\t@GetMapping(value = \"/partner-api-keys\")\n\t@Operation(summary = \"This endpoint retrieves a list of all the API keys created by the Auth Partners.\",\n\tdescription = \"Available since release-1.2.2.0. This endpoint supports pagination, sorting, and and filtering based on optional query parameters. If the token used to access this endpoint, does not have the PARTNER_ADMIN role, then it will fetch all the API keys created by all the partners associated with the logged in user only. If the token used to access this endpoint, has PARTNER_ADMIN role, then it will fetch all the API keys created by all the partners.\")\n\t@ApiResponses(value = {\n\t\t\t@ApiResponse(responseCode = \"200\", description = \"OK\"),\n\t\t\t@ApiResponse(responseCode = \"401\", description = \"Unauthorized\", content = @Content(schema = @Schema(hidden = true))),\n\t\t\t@ApiResponse(responseCode = \"403\", description = \"Forbidden\", content = @Content(schema = @Schema(hidden = true)))\n\t})\n\tpublic ResponseWrapperV2> getAllApiKeyRequests(\n\t\t\t@RequestParam(value = \"sortFieldName\", required = false) String sortFieldName,\n\t\t\t@RequestParam(value = \"sortType\", required = false) String sortType,\n\t\t\t@RequestParam(value = \"pageNo\", required = false) Integer pageNo,\n\t\t\t@RequestParam(value = \"pageSize\", required = false) Integer pageSize,\n\t\t\t@RequestParam(value = \"partnerId\", required = false) String partnerId,\n\t\t\t@RequestParam(value = \"apiKeyLabel\", required = false) String apiKeyLabel,\n\t\t\t@RequestParam(value = \"orgName\", required = false) String orgName,\n\t\t\t@Parameter(\n\t\t\t\t\tdescription = \"Status of request\",\n\t\t\t\t\tin = ParameterIn.QUERY,\n\t\t\t\t\tschema = @Schema(allowableValues = {\"activated\", \"deactivated\"})\n\t\t\t)\n\t\t\t@RequestParam(value = \"status\", required = false) String status,\n\t\t\t@RequestParam(value = \"policyName\", required = false) String policyName,\n\t\t\t@RequestParam(value = \"policyGroupName\", required = false) String policyGroupName\n\t) {\n\t\tpartnerHelper.validateRequestParameters(partnerHelper.apiKeyAliasToColumnMap, sortFieldName, sortType, pageNo, pageSize);\n\t\tApiKeyFilterDto filterDto = new ApiKeyFilterDto();\n\t\tif (partnerId != null) {\n\t\t\tfilterDto.setPartnerId(partnerId.toLowerCase());\n\t\t}\n\t\tif (apiKeyLabel != null) {\n\t\t\tfilterDto.setApiKeyLabel(apiKeyLabel.toLowerCase());\n\t\t}\n\t\tif (orgName != null) {\n\t\t\tfilterDto.setOrgName(orgName.toLowerCase());\n\t\t}\n\t\tif (status != null) {\n\t\t\tfilterDto.setStatus(status);\n\t\t}\n\t\tif (policyName != null) {\n\t\t\tfilterDto.setPolicyName(policyName.toLowerCase());\n\t\t}\n\t\tif (policyGroupName != null) {\n\t\t\tfilterDto.setPolicyGroupName(policyGroupName.toLowerCase());\n\t\t}\n\t\treturn partnerManagementService.getAllApiKeyRequests(sortFieldName, sortType, pageNo, pageSize, filterDto);\n\t}\n\n\t@PreAuthorize(\"hasAnyRole(@authorizedRoles.getGettrustcertificates())\")\n\t@GetMapping(value = \"/trust-chain-certificates\")\n\t@Operation(summary = \"This endpoint retrieves a list of all the Trust Certificates uploaded by the Partner Admin.\",\n\tdescription = \"Available since release-1.2.2.0. This endpoint supports pagination, sorting, and filtering. It is configured for the role PARTNER_ADMIN.\")\n\t@ApiResponses(value = {\n\t\t\t@ApiResponse(responseCode = \"200\", description = \"OK\"),\n\t\t\t@ApiResponse(responseCode = \"401\", description = \"Unauthorized\", content = @Content(schema = @Schema(hidden = true))),\n\t\t\t@ApiResponse(responseCode = \"403\", description = \"Forbidden\", content = @Content(schema = @Schema(hidden = true)))\n\t})\n\tpublic ResponseWrapperV2> getTrustCertificates(\n\t\t\t@RequestParam(value = \"sortFieldName\", required = false) String sortFieldName,\n\t\t\t@RequestParam(value = \"sortType\", required = false) String sortType, // e.g., ASC or DESC\n\t\t\t@RequestParam(value = \"pageNo\", defaultValue = \"0\") Integer pageNo,\n\t\t\t@RequestParam(value = \"pageSize\", defaultValue = \"8\") Integer pageSize,\n\t\t\t@Parameter(\n\t\t\t\t\tdescription = \"Type of CA certificate\",\n\t\t\t\t\tin = ParameterIn.QUERY,\n\t\t\t\t\tschema = @Schema(allowableValues = {\"ROOT\", \"INTERMEDIATE\"})\n\t\t\t)\n\t\t\t@RequestParam(value = \"caCertificateType\", required = false) String caCertificateType,\n\t\t\t@RequestParam(value = \"certificateId\", required = false) String certificateId,\n\t\t\t@Parameter(\n\t\t\t\t\tdescription = \"Type of partner domain\",\n\t\t\t\t\tin = ParameterIn.QUERY,\n\t\t\t\t\tschema = @Schema(allowableValues = {\"FTM\", \"DEVICE\", \"AUTH\"})\n\t\t\t)\n\t\t\t@RequestParam(value = \"partnerDomain\", required = false) String partnerDomain,\n\t\t\t@RequestParam(value = \"issuedTo\", required = false) String issuedTo,\n\t\t\t@RequestParam(value = \"issuedBy\", required = false) String issuedBy\n\t) {\n\t\tfeatureAvailabilityUtil.validateRootAndIntermediateCertificatesFeatureEnabled();\n\t\tpartnerHelper.validateRequestParameters(partnerHelper.trustCertificateAliasToColumnMap, sortFieldName, sortType, pageNo, pageSize);\n\t\tTrustCertificateFilterDto filterDto = new TrustCertificateFilterDto();\n\t\tif (caCertificateType != null) {\n\t\t\tfilterDto.setCaCertificateType(caCertificateType);\n\t\t}\n\t\tif (certificateId != null) {\n\t\t\tfilterDto.setCertificateId(certificateId);\n\t\t}\n\t\tif (partnerDomain != null) {\n\t\t\tfilterDto.setPartnerDomain(partnerDomain);\n\t\t}\n\t\tif (issuedTo != null) {\n\t\t\tfilterDto.setIssuedTo(issuedTo);\n\t\t}\n\t\tif (issuedBy != null) {\n\t\t\tfilterDto.setIssuedBy(issuedBy);\n\t\t}\n\t\treturn partnerManagementService.getTrustCertificates(sortFieldName, sortType, pageNo, pageSize, filterDto);\n\t}\n\n\t@PreAuthorize(\"hasAnyRole(@authorizedRoles.getGetdownloadtrustcertificates())\")\n\t@GetMapping(value = \"/trust-chain-certificates/{certificateId}/certificateFile\")\n\t@Operation(summary = \"This endpoint will download p7b file for a CA / Intermediate CA certificate along with the trust chain based on Certificate Id.\",\n\t\t\tdescription = \"Available since release-1.2.2.0. It is configured for the role PARTNER_ADMIN.\")\n\t@ApiResponses(value = {\n\t\t\t@ApiResponse(responseCode = \"200\", description = \"OK\"),\n\t\t\t@ApiResponse(responseCode = \"401\", description = \"Unauthorized\", content = @Content(schema = @Schema(hidden = true))),\n\t\t\t@ApiResponse(responseCode = \"403\", description = \"Forbidden\", content = @Content(schema = @Schema(hidden = true)))\n\t})\n\tResponseWrapperV2 downloadTrustCertificates(\n\t\t\t@ApiParam(\"To download trust certificates.\") @PathVariable(\"certificateId\") @NotNull String certificateId) {\n\t\tfeatureAvailabilityUtil.validateRootAndIntermediateCertificatesFeatureEnabled();\n\t\treturn partnerManagementService.downloadTrustCertificates(certificateId);\n\t}\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/partner/manager/exception/PartnerManagerServiceException.java", + "title": "PartnerManagerServiceException.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/partner/manager/exception/PartnerManagerServiceException.java", + "language": "java", + "content": "package io.mosip.pms.partner.manager.exception;\n\nimport io.mosip.pms.device.exception.BaseUncheckedException;\n\npublic class PartnerManagerServiceException extends BaseUncheckedException {\n\n\tprivate static final long serialVersionUID = 1L;\n\n\tpublic PartnerManagerServiceException() {\n\t}\n\n\tpublic PartnerManagerServiceException(String errorCode, String errorMessage) {\n\t\tsuper(errorCode, errorMessage);\n\t}\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/partner/manager/service/impl/PartnerManagementServiceImpl.java", + "title": "PartnerManagementServiceImpl.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/partner/manager/service/impl/PartnerManagementServiceImpl.java", + "language": "java", + "content": "package io.mosip.pms.partner.manager.service.impl;\n\nimport java.io.IOException;\nimport java.security.cert.X509Certificate;\nimport java.sql.Timestamp;\nimport java.time.LocalDateTime;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.HashMap;\nimport java.util.Iterator;\nimport java.util.List;\nimport java.util.Map;\nimport java.util.Optional;\nimport java.util.Objects;\nimport javax.transaction.Transactional;\n\nimport io.mosip.kernel.core.authmanager.authadapter.model.AuthUserDetails;\nimport io.mosip.pms.common.dto.*;\nimport io.mosip.pms.common.entity.*;\nimport io.mosip.pms.common.repository.*;\nimport io.mosip.pms.common.request.dto.RequestWrapper;\nimport io.mosip.pms.common.response.dto.ResponseWrapperV2;\nimport io.mosip.pms.partner.dto.KeycloakUserDto;\nimport io.mosip.pms.partner.exception.PartnerServiceException;\nimport io.mosip.pms.partner.manager.dto.*;\nimport io.mosip.pms.partner.request.dto.PartnerCertDownloadRequestDto;\nimport io.mosip.pms.partner.util.MultiPartnerUtil;\nimport io.mosip.pms.partner.util.PartnerHelper;\nimport org.json.simple.JSONObject;\nimport org.json.simple.parser.JSONParser;\nimport org.json.simple.parser.ParseException;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.beans.factory.annotation.Value;\nimport org.springframework.core.env.Environment;\nimport org.springframework.data.domain.Page;\nimport org.springframework.data.domain.PageRequest;\nimport org.springframework.data.domain.Pageable;\nimport org.springframework.data.domain.Sort;\nimport org.springframework.http.MediaType;\nimport org.springframework.security.core.context.SecurityContextHolder;\nimport org.springframework.stereotype.Service;\n\nimport com.fasterxml.jackson.databind.JsonNode;\nimport com.fasterxml.jackson.databind.ObjectMapper;\n\nimport io.mosip.kernel.core.logger.spi.Logger;\nimport io.mosip.pms.common.constant.ApiAccessibleExceptionConstant;\nimport io.mosip.pms.common.constant.ConfigKeyConstants;\nimport io.mosip.pms.common.constant.EventType;\nimport io.mosip.pms.common.exception.ApiAccessibleException;\nimport io.mosip.pms.common.helper.WebSubPublisher;\nimport io.mosip.pms.common.response.dto.NotificationDto;\nimport io.mosip.pms.common.service.NotificatonService;\nimport io.mosip.pms.common.util.MapperUtils;\nimport io.mosip.pms.common.util.PMSLogger;\nimport io.mosip.pms.common.util.RestUtil;\nimport io.mosip.pms.common.util.UserDetailUtil;\nimport io.mosip.pms.device.util.AuditUtil;\nimport io.mosip.pms.partner.constant.PartnerConstants;\nimport io.mosip.pms.partner.manager.constant.ErrorCode;\nimport io.mosip.pms.partner.manager.constant.PartnerManageEnum;\nimport io.mosip.pms.partner.manager.exception.PartnerManagerServiceException;\nimport io.mosip.pms.partner.manager.service.PartnerManagerService;\nimport io.mosip.pms.partner.request.dto.APIKeyGenerateRequestDto;\nimport io.mosip.pms.partner.request.dto.APIkeyStatusUpdateRequestDto;\nimport io.mosip.pms.partner.response.dto.APIKeyGenerateResponseDto;\nimport io.mosip.pms.partner.response.dto.PartnerCertDownloadResponeDto;\nimport io.mosip.pms.partner.util.PartnerUtil;\n\n@Service\n@Transactional\npublic class PartnerManagementServiceImpl implements PartnerManagerService {\n\n\tprivate static final Logger LOGGER = PMSLogger.getLogger(PartnerManagementServiceImpl.class);\n\tpublic static final String DEVICE_PROVIDER = \"Device_Provider\";\n\tpublic static final String FTM_PROVIDER = \"FTM_Provider\";\n\tprivate static final String APPROVED = \"approved\";\n\tpublic static final String BLANK_STRING = \"\";\n\n\t@Value(\"${mosip.pms.api.id.admin.partners.get}\")\n\tprivate String getAdminPartnersId;\n\n\t@Value(\"${mosip.pms.api.id.all.partner.policy.mapping.requests.get}\")\n\tprivate String getAllPartnerPolicyMappingRequestsId;\n\n\t@Value(\"${mosip.pms.api.id.all.api.key.requests.get}\")\n\tprivate String getAllApiKeyRequestsId;\n\n\t@Value(\"${mosip.pms.api.id.trust.certificates.get}\")\n\tprivate String getTrustCertificatesId;\n\n\t@Value(\"${mosip.pms.api.id.download.trust.certificates.get}\")\n\tprivate String getDownloadTrustCertificateId;\n\n\t@Autowired\n\tPartnerSummaryRepository partnerSummaryRepository;\n\n\t@Autowired\n\tPartnerPolicyMappingRequestRepository partnerPolicyMappingRequestRepository;\n\n\t@Autowired\n\tPartnerPolicyRepository partnerPolicyRepository;\n\n\t@Autowired\n\tApiKeyRequestSummaryRepository apiKeyRequestSummaryRepository;\n\n\t@Autowired\n\tPartnerRepository partnerRepository;\n\n\t@Autowired\n\tPartnerPolicyRequestRepository partnerPolicyRequestRepository;\n\n\t@Autowired\n\tPolicyGroupRepository policyGroupRepository;\n\n\t@Autowired\n\tBiometricExtractorProviderRepository extractorProviderRepository;\n\n\t@Autowired\n\tAuthPolicyRepository authPolicyRepository;\n\n\t@Autowired\n\tMispServiceRepository mispRepository;\n\t\n\t@Autowired\n\tMispLicenseRepository mispLicenseRepository;\n\n\t@Autowired\n\tprivate WebSubPublisher webSubPublisher;\n\t\n\t@Autowired\n\tprivate NotificatonService notificationService;\n\n\t@Autowired\n\tRestUtil restUtil;\n\n\t@Autowired\n\tAuditUtil auditUtil;\n\n\t@Autowired\n\tprivate Environment environment;\n\n\t@Autowired\n\tprivate ObjectMapper mapper;\n\n\t@Autowired\n\tPartnerHelper partnerHelper;\n\n\t@Autowired\n\tPartnerServiceRepository partnerServiceRepository;\n\n\t@Value(\"${pmp.bioextractors.required.partner.types}\")\n\tprivate String biometricExtractorsRequiredPartnerTypes;\n\n\t@Value(\"${mosip.pmp.partner.policy.expiry.period.indays}\")\n\tprivate int partnerPolicyExpiryInDays;\n\n\t@Value(\"${mosip.pms.api.id.partner.details.get}\")\n\tprivate String getPartnerDetailsId;\n\n\t@Value(\"${mosip.pms.id.generation.max.retries}\")\n\tprivate int maxRetries;\n\n\tpublic static final String VERSION = \"1.0\";\n\n\t@Override\n\tpublic PartnersPolicyMappingResponse updatePolicyAgainstApikey(PartnersPolicyMappingRequest request,\n\t\t\tString partnerId, String partnerApikey) {\n\t\tPartnerPolicy partnerPolicyFromDb = partnerPolicyRepository.findByPartnerIdAndPolicyIdAndApikey(partnerId,\n\t\t\t\trequest.getOldPolicyID(), partnerApikey);\n\t\tif (partnerPolicyFromDb == null) {\n\t\t\tauditUtil.setAuditRequestDto(PartnerManageEnum.API_KEY_MAPPING_FAILURE, partnerId, \"partnerId\");\n\t\t\tthrow new PartnerManagerServiceException(ErrorCode.PARTNER_APIKEY_POLICY_MAPPING_NOTEXISTS.getErrorCode(),\n\t\t\t\t\tErrorCode.PARTNER_APIKEY_POLICY_MAPPING_NOTEXISTS.getErrorMessage());\n\n\t\t}\n\t\tif (!partnerPolicyFromDb.getIsActive()) {\n\t\t\tauditUtil.setAuditRequestDto(PartnerManageEnum.API_KEY_MAPPING_FAILURE, partnerId, \"partnerId\");\n\t\t\tthrow new PartnerManagerServiceException(ErrorCode.PARTNER_APIKEY_NOT_ACTIVE_EXCEPTION.getErrorCode(),\n\t\t\t\t\tErrorCode.PARTNER_APIKEY_NOT_ACTIVE_EXCEPTION.getErrorMessage());\n\t\t}\n\t\tAuthPolicy requestedPolicy = validateAndGetPolicyOfPolicyGroup(\n\t\t\t\tpartnerPolicyFromDb.getPartner().getPolicyGroupId(), request.getNewPolicyID());\n\t\tPartnerPolicy updateObject = partnerPolicyFromDb;\n\t\tupdateObject.setUpdBy(getUser());\n\t\tupdateObject.setUpdDtimes(Timestamp.valueOf(LocalDateTime.now()));\n\t\tupdateObject.setPolicyId(requestedPolicy.getId());\n\t\tpartnerPolicyRepository.save(updateObject);\n\t\tPartnersPolicyMappingResponse partnersPolicyMappingResponse = new PartnersPolicyMappingResponse();\n\t\tpartnersPolicyMappingResponse.setMessage(\"Given apikey updated with policy successfully. \");\n\t\tnotify(null, null, MapperUtils.mapKeyDataToPublishDto(updateObject), EventType.APIKEY_UPDATED);\n\t\tauditUtil.setAuditRequestDto(PartnerManageEnum.API_KEY_MAPPING_SUCCESS, partnerId, \"partnerId\");\n\t\treturn partnersPolicyMappingResponse;\n\t}\n\n\tprivate AuthPolicy validateAndGetPolicyOfPolicyGroup(String policyGroupId, String policyId) {\n\t\tAuthPolicy authPolicy = authPolicyRepository.findByPolicyGroupAndId(policyGroupId, policyId);\n\t\tif (authPolicy == null) {\n\t\t\tauditUtil.setAuditRequestDto(PartnerManageEnum.API_KEY_MAPPING_FAILURE, policyId, \"policyId\");\n\t\t\tthrow new PartnerManagerServiceException(ErrorCode.POLICY_NOT_EXIST_EXCEPTION.getErrorCode(),\n\t\t\t\t\tErrorCode.POLICY_NOT_EXIST_EXCEPTION.getErrorMessage() + policyId);\n\n\t\t}\n\t\tif (!authPolicy.getIsActive()) {\n\t\t\tauditUtil.setAuditRequestDto(PartnerManageEnum.API_KEY_MAPPING_FAILURE, policyId, \"policyId\");\n\t\t\tthrow new PartnerManagerServiceException(ErrorCode.POLICY_NOT_ACTIVE_EXCEPTION.getErrorCode(),\n\t\t\t\t\tErrorCode.POLICY_NOT_ACTIVE_EXCEPTION.getErrorMessage() + policyId);\n\n\t\t}\n\t\tif (!authPolicy.getPolicyGroup().getIsActive()) {\n\t\t\tauditUtil.setAuditRequestDto(PartnerManageEnum.API_KEY_MAPPING_FAILURE, policyId, \"policyId\");\n\t\t\tthrow new PartnerManagerServiceException(ErrorCode.POLICY_GROUP_NOT_ACTIVE.getErrorCode(),\n\t\t\t\t\tErrorCode.POLICY_GROUP_NOT_ACTIVE.getErrorMessage() + policyId);\n\t\t}\n\t\treturn authPolicy;\n\t}\n\n\t@Override\n\tpublic PartnersPolicyMappingResponse activateDeactivateAuthEKYCPartner(String partnerId,\n\t\t\tStatusRequestDto request) {\n\t\tOptional partnerFromDb = partnerRepository.findById(partnerId);\n\t\tif (partnerFromDb.isEmpty()) {\n\t\t\tauditUtil.setAuditRequestDto(PartnerManageEnum.ACTIVATE_DEACTIVATE_KYC_PARTNERS_FAILURE, partnerId, \"partnerId\");\t\t\t\n\t\t\tthrow new PartnerManagerServiceException(ErrorCode.PARTNER_ID_DOES_NOT_EXIST_EXCEPTION.getErrorCode(),\n\t\t\t\t\tErrorCode.PARTNER_ID_DOES_NOT_EXIST_EXCEPTION.getErrorMessage());\n\t\t}\n\t\tPartner updatePartnerObject = partnerFromDb.get();\n\t\tif (updatePartnerObject.getApprovalStatus().equals(APPROVED) && !updatePartnerObject.getIsActive()){\n\t\t\tthrow new PartnerManagerServiceException(ErrorCode.PARTNER_ALREADY_DEACTIVATED.getErrorCode(),\n\t\t\t\t\tErrorCode.PARTNER_ALREADY_DEACTIVATED.getErrorMessage());\n\t\t}\n\t\tupdatePartnerObject.setUpdBy(getUser());\n\t\tupdatePartnerObject.setUpdDtimes(Timestamp.valueOf(LocalDateTime.now()));\n\t\tPartnersPolicyMappingResponse response = new PartnersPolicyMappingResponse();\t\t\n\t\tif (request.getStatus().equalsIgnoreCase(PartnerConstants.ACTIVE)) {\n\t\t\tif(updatePartnerObject.getCertificateAlias() == null) {\n\t\t\t\tthrow new PartnerManagerServiceException(ErrorCode.CERTIFICATE_NOT_UPLOADED_EXCEPTION.getErrorCode(),\n\t\t\t\t\t\tErrorCode.CERTIFICATE_NOT_UPLOADED_EXCEPTION.getErrorMessage());\t\t\t\t\n\t\t\t}\n\t\t\t//if partner is not active, then only make partner active\n\t\t\tif(!updatePartnerObject.getIsActive()) {\n\t\t\t\tupdatePartnerObject.setIsActive(true);\t\t\t\n\t\t\t\tpartnerRepository.save(updatePartnerObject);\n\t\t\t\tnotify(MapperUtils.mapDataToPublishDto(updatePartnerObject,getPartnerCertificate(updatePartnerObject.getCertificateAlias())), null, null, EventType.PARTNER_UPDATED);\n\t\t\t\tsendNotifications(EventType.PARTNER_UPDATED, updatePartnerObject);\n\t\t\t}\n\t\t\tresponse.setMessage(\"Partner activated successfully\");\t\t\t\n\t\t\tauditUtil.setAuditRequestDto(PartnerManageEnum.ACTIVATE_DEACTIVATE_KYC_PARTNERS_SUCCESS, partnerId, \"partnerId\");\n\t\t\treturn response;\n\t\t}\n\t\tif (request.getStatus().equalsIgnoreCase(PartnerConstants.DEACTIVE)) {\n\t\t\t// if partner is active, then only make partner in-active\n\t\t\tif(updatePartnerObject.getIsActive()) {\n\t\t\t\tupdatePartnerObject.setIsActive(false);\n\t\t\t\tpartnerRepository.save(updatePartnerObject);\n\t\t\t\t// if partner is misp, then de-activate all licenses.\n\t\t\t\tif(updatePartnerObject.getPartnerTypeCode().equalsIgnoreCase(environment.getProperty(ConfigKeyConstants.MISP_PARTNER_TYPE, \"MISP_Partner\"))) {\n\t\t\t\t\tList activeLicenses = mispLicenseRepository.findByMispIdAndIsActive(updatePartnerObject.getId());\n\t\t\t\t\t// assuming one misp partner will have only one active license key at any giving point of time\n\t\t\t\t\tfor(MISPLicenseEntity license : activeLicenses) {\n\t\t\t\t\t\tlicense.setIsActive(false);\n\t\t\t\t\t\tlicense.setUpdatedBy(getUser());\n\t\t\t\t\t\tlicense.setUpdatedDateTime(LocalDateTime.now());\n\t\t\t\t\t\tmispLicenseRepository.save(license);\n\t\t\t\t\t\tMap data = new HashMap<>();\n\t\t\t\t\t\tdata.put(\"mispLicenseData\", MapperUtils.mapDataToPublishDto(license));\n\t\t\t\t\t\tnotify(data, EventType.MISP_LICENSE_UPDATED);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tnotify(MapperUtils.mapDataToPublishDto(updatePartnerObject,getPartnerCertificate(updatePartnerObject.getCertificateAlias())), null, null, EventType.PARTNER_UPDATED);\n\t\t\t\tsendNotifications(EventType.PARTNER_UPDATED, updatePartnerObject);\n\t\t\t}\n\t\t\tresponse.setMessage(\"Partner de-activated successfully\");\n\t\t\tauditUtil.setAuditRequestDto(PartnerManageEnum.ACTIVATE_DEACTIVATE_KYC_PARTNERS_SUCCESS, partnerId, \"partnerId\");\n\t\t\treturn response;\n\t\t}\n\t\tauditUtil.setAuditRequestDto(PartnerManageEnum.ACTIVATE_DEACTIVATE_KYC_PARTNERS_FAILURE, partnerId, \"partnerId\");\n\t\tLOGGER.info(request.getStatus() + \" : is Invalid Input Parameter, it should be (Active/De-Active)\");\n\t\tthrow new PartnerManagerServiceException(ErrorCode.INVALID_STATUS_CODE_ACTIVE_DEACTIVE.getErrorCode(),\n\t\t\t\tErrorCode.INVALID_STATUS_CODE_ACTIVE_DEACTIVE.getErrorMessage());\n\t}\n\t\n\n\t@Override\n\tpublic RetrievePartnerDetailsResponse getAllAuthEKYCPartnersForThePolicyGroup(Optional partnerType) {\n\t\tRetrievePartnerDetailsResponse partnersResponse = new RetrievePartnerDetailsResponse();\n\t\tList partners = new ArrayList();\t\t\n\t\tIterator partnerIterat = getPartnersByPartnerType(partnerType).iterator();\n\t\tPartner partner = null;\n\t\twhile (partnerIterat.hasNext()) {\n\t\t\tRetrievePartnersDetails retrievePartnersDetails = new RetrievePartnersDetails();\n\t\t\tpartner = partnerIterat.next();\n\t\t\tretrievePartnersDetails.setPartnerID(partner.getId());\n\t\t\tretrievePartnersDetails\n\t\t\t.setStatus(partner.getIsActive() == true ? PartnerConstants.ACTIVE : PartnerConstants.DEACTIVE);\n\t\t\tretrievePartnersDetails.setOrganizationName(partner.getName());\n\t\t\tretrievePartnersDetails.setContactNumber(partner.getContactNo());\n\t\t\tretrievePartnersDetails.setEmailId(partner.getEmailId());\n\t\t\tretrievePartnersDetails.setAddress(partner.getAddress());\n\t\t\tretrievePartnersDetails.setPartnerType(partner.getPartnerTypeCode());\n\t\t\tpartners.add(retrievePartnersDetails);\n\t\t}\n\t\tpartnersResponse.setPartners(partners);\n\t\treturn partnersResponse;\n\t}\n\n\t/**\n\t * \n\t * @param partnerType\n\t * @return\n\t */\n\t@Override\n\tpublic PartnerDetailsResponse getPartners(Optional partnerType) {\n\t\tPartnerDetailsResponse partnersResponse = new PartnerDetailsResponse();\n\t\tList partners = new ArrayList();\t\t\n\t\tIterator partnerIterat = getPartnersByPartnerType(partnerType).iterator();\n\t\tPartner partner = null;\n\t\twhile (partnerIterat.hasNext()) {\n\t\t\tPartnerDetailsDto retrievePartnersDetails = new PartnerDetailsDto();\n\t\t\tpartner = partnerIterat.next();\n\t\t\tretrievePartnersDetails.setPartnerID(partner.getId());\n\t\t\tretrievePartnersDetails\n\t\t\t.setStatus(partner.getIsActive() == true ? PartnerConstants.ACTIVE : PartnerConstants.DEACTIVE);\n\t\t\tretrievePartnersDetails.setOrganizationName(partner.getName());\n\t\t\tretrievePartnersDetails.setContactNumber(partner.getContactNo());\n\t\t\tretrievePartnersDetails.setEmailId(partner.getEmailId());\n\t\t\tretrievePartnersDetails.setAddress(partner.getAddress());\n\t\t\tretrievePartnersDetails.setPartnerType(partner.getPartnerTypeCode());\n\t\t\tretrievePartnersDetails.setLogoUrl(partner.getLogoUrl());\n\t\t\tretrievePartnersDetails.setAdditionalInfo(\n\t\t\t\t\tpartner.getAdditionalInfo() == null ? null : getValidJson(partner.getAdditionalInfo()));\n\t\t\tpartners.add(retrievePartnersDetails);\n\t\t}\n\t\tpartnersResponse.setPartners(partners);\n\t\treturn partnersResponse;\n\n\t}\n\t\n\tprivate JsonNode getValidJson(String jsonInString) {\n\t\ttry {\n\t\t\treturn mapper.readTree(jsonInString);\n\t\t} catch (IOException e) {\n\t\t\tLOGGER.error(\"Given addtional info is not a valid json object \", e);\t\t\t\n\t\t\tthrow new PartnerManagerServiceException(ErrorCode.JSON_NOT_VALID.getErrorCode(),\n\t\t\t\t\tErrorCode.JSON_NOT_VALID.getErrorMessage());\n\t\t}\n\t}\n\t/**\n\t * \n\t * @param partnerType\n\t * @return\n\t */\n\tprivate List getPartnersByPartnerType(Optional partnerType) {\n\t\tList partnersFromDb = null;\n\t\tif (partnerType.isPresent() && !partnerType.get().trim().isEmpty()) {\n\t\t\tpartnersFromDb = partnerRepository.findByPartnerType(partnerType.get());\n\t\t} else {\n\t\t\tpartnersFromDb = partnerRepository.findAll();\n\t\t}\t\t\n\t\tif (partnersFromDb.isEmpty()) {\n\t\t\tLOGGER.error(\"Partners not exists in database\");\n\t\t\tthrow new PartnerManagerServiceException(ErrorCode.PARTNER_DOES_NOT_EXIST_EXCEPTION.getErrorCode(),\n\t\t\t\t\tErrorCode.PARTNER_DOES_NOT_EXIST_EXCEPTION.getErrorMessage());\n\t\t}\n\t\treturn partnersFromDb;\n\t}\n\n\t@Override\n\tpublic PartnerAPIKeyToPolicyMappingsResponse getPartnerAPIKeyToPolicyMapping(String partnerId,\n\t\t\tString partnerAPIKey) {\n\t\tPartnerPolicy partnerPolicyFromDb = partnerPolicyRepository.findByPartnerIdAndApikey(partnerId, partnerAPIKey);\n\t\tif (partnerPolicyFromDb == null) {\n\t\t\tLOGGER.error(\"Given apikey {} not mapped to partner {}\", partnerAPIKey, partnerId);\n\t\t\tthrow new PartnerManagerServiceException(ErrorCode.PARTNER_API_KEY_NOT_MAPPED.getErrorCode(),\n\t\t\t\t\tErrorCode.PARTNER_API_KEY_NOT_MAPPED.getErrorMessage());\n\t\t}\n\t\tPartnerAPIKeyToPolicyMappingsResponse response = new PartnerAPIKeyToPolicyMappingsResponse();\n\t\tresponse.setPartnerID(partnerId);\n\t\tresponse.setPolicyId(partnerPolicyFromDb.getPolicyId());\n\t\treturn response;\n\t}\n\n\t@Override\n\tpublic List getAllPartnerAPIKeyRequestsAsReceivedByPartnerManagers() {\n\t\tList apikeyRequestsFromDb = partnerPolicyRequestRepository.findAll();\n\t\tif (apikeyRequestsFromDb.isEmpty()) {\n\t\t\tLOGGER.error(\"No apikey requests exists\");\n\t\t\tthrow new PartnerManagerServiceException(ErrorCode.NO_PARTNER_API_KEY_REQUEST_EXCEPTION.getErrorCode(),\n\t\t\t\t\tErrorCode.NO_PARTNER_API_KEY_REQUEST_EXCEPTION.getErrorMessage());\n\t\t}\n\t\tList response = new ArrayList();\n\t\tfor (PartnerPolicyRequest partnerPolicyRequest : apikeyRequestsFromDb) {\n\t\t\tApikeyRequests apikeyRequests = new ApikeyRequests();\n\t\t\tapikeyRequests.setApiKeyReqNo(partnerPolicyRequest.getId());\n\t\t\tapikeyRequests.setOrganizationName(partnerPolicyRequest.getPartner().getName());\n\t\t\tapikeyRequests.setPartnerID(partnerPolicyRequest.getPartner().getId());\n\t\t\tapikeyRequests.setPolicyDesc(partnerPolicyRequest.getRequestDetail());\n\t\t\tapikeyRequests.setPolicyId(partnerPolicyRequest.getPolicyId());\n\t\t\tapikeyRequests.setStatus(partnerPolicyRequest.getStatusCode());\n\t\t\tresponse.add(apikeyRequests);\n\t\t}\t\t\n\t\treturn response;\n\t}\n\n\t@Override\n\tpublic ApikeyRequests getTheRequestForPartnerAPIKeyToPolicyMappingsForGivenRequestId(String apiKeyReqId) {\n\t\tOptional apikeyRequestsFromDb = partnerPolicyRequestRepository.findById(apiKeyReqId);\n\t\tif (apikeyRequestsFromDb.isEmpty()) {\n\t\t\tLOGGER.error(\"APIKey request is not exists with id {}\", apiKeyReqId);\n\t\t\tthrow new PartnerManagerServiceException(ErrorCode.NO_PARTNER_API_KEY_REQUEST_EXCEPTION.getErrorCode(),\n\t\t\t\t\tErrorCode.NO_PARTNER_API_KEY_REQUEST_EXCEPTION.getErrorMessage());\n\t\t}\n\t\tApikeyRequests apikeyRequest = new ApikeyRequests();\n\t\tapikeyRequest.setApiKeyReqNo(apikeyRequestsFromDb.get().getId());\n\t\tapikeyRequest.setOrganizationName(apikeyRequestsFromDb.get().getPartner().getName());\n\t\tapikeyRequest.setPartnerID(apikeyRequestsFromDb.get().getPartner().getId());\n\t\tapikeyRequest.setPolicyDesc(apikeyRequestsFromDb.get().getRequestDetail());\n\t\tapikeyRequest.setPolicyId(apikeyRequestsFromDb.get().getPolicyId());\n\t\tapikeyRequest.setStatus(apikeyRequestsFromDb.get().getStatusCode());\n\t\treturn apikeyRequest;\n\t}\n\n\tprivate PartnerPolicyRequest getValidApikeyRequestForStatusUpdate(String requestedApikey) {\n\t\tOptional partnerPolicyRequestFromDb = partnerPolicyRequestRepository\n\t\t\t\t.findById(requestedApikey);\n\t\tif (partnerPolicyRequestFromDb.isEmpty()) {\n\t\t\tauditUtil.setAuditRequestDto(PartnerManageEnum.APPROVE_REJECT_PARTNER_API_FAILURE);\n\t\t\tthrow new PartnerManagerServiceException(ErrorCode.PARTNER_API_DOES_NOT_EXIST_EXCEPTION.getErrorCode(),\n\t\t\t\t\tErrorCode.PARTNER_API_DOES_NOT_EXIST_EXCEPTION.getErrorMessage());\n\t\t}\n\t\tif (partnerPolicyRequestFromDb.get().getStatusCode().equalsIgnoreCase(PartnerConstants.APPROVED)) {\n\t\t\tauditUtil.setAuditRequestDto(PartnerManageEnum.APPROVE_REJECT_PARTNER_API_FAILURE);\n\t\t\tthrow new PartnerManagerServiceException(ErrorCode.POLICY_REQUEST_ALREADY_APPROVED.getErrorCode(),\n\t\t\t\t\tErrorCode.POLICY_REQUEST_ALREADY_APPROVED.getErrorMessage());\n\t\t}\n\t\tif (partnerPolicyRequestFromDb.get().getStatusCode().equalsIgnoreCase(PartnerConstants.REJECTED)) {\n\t\t\tauditUtil.setAuditRequestDto(PartnerManageEnum.APPROVE_REJECT_PARTNER_API_FAILURE);\n\t\t\tthrow new PartnerManagerServiceException(ErrorCode.POLICY_REQUEST_ALREADY_REJECTED.getErrorCode(),\n\t\t\t\t\tErrorCode.POLICY_REQUEST_ALREADY_REJECTED.getErrorMessage());\n\t\t}\n\t\tif (Arrays.stream(biometricExtractorsRequiredPartnerTypes.split(\",\"))\n\t\t\t\t.anyMatch(partnerPolicyRequestFromDb.get().getPartner().getPartnerTypeCode()::equalsIgnoreCase)) {\n\t\t\tList extractorsFromDb = extractorProviderRepository.findByPartnerAndPolicyId(\n\t\t\t\t\tpartnerPolicyRequestFromDb.get().getPartner().getId(),\n\t\t\t\t\tpartnerPolicyRequestFromDb.get().getPolicyId());\n\t\t\tif (extractorsFromDb.isEmpty()) {\n\t\t\t\tauditUtil.setAuditRequestDto(PartnerManageEnum.APPROVE_REJECT_PARTNER_API_FAILURE);\n\t\t\t\tthrow new PartnerManagerServiceException(ErrorCode.EXTRACTORS_NOT_PRESENT.getErrorCode(),\n\t\t\t\t\t\tErrorCode.EXTRACTORS_NOT_PRESENT.getErrorMessage());\n\t\t\t}\n\t\t}\t\t\n\n\t\treturn partnerPolicyRequestFromDb.get();\n\t}\n\n\tprivate JSONObject getPolicyObject(String policy) {\n\t\tJSONParser parser = new JSONParser();\n\t\tString error = null;\n\t\ttry {\n\t\t\treturn ((JSONObject) parser.parse(policy));\n\t\t} catch (ParseException e) {\n\t\t\terror = e.getMessage();\n\t\t}\n\t\tauditUtil.setAuditRequestDto(PartnerManageEnum.GET_POLICY_FAILURE);\n\t\tthrow new PartnerManagerServiceException(ErrorCode.POLICY_PARSING_ERROR.getErrorCode(),\n\t\t\t\tErrorCode.POLICY_PARSING_ERROR.getErrorMessage() + error);\n\t}\n\n\n\t@SuppressWarnings(\"unchecked\")\n\tprivate String getPartnerCertificate(String certificateAlias) {\n\t\tMap pathsegments = new HashMap<>();\n\t\tpathsegments.put(\"partnerCertId\", certificateAlias);\n\t\tMap getApiResponse = restUtil\n\t\t\t\t.getApi(environment.getProperty(\"pmp.partner.certificaticate.get.rest.uri\"), pathsegments, Map.class);\n\t\tPartnerCertDownloadResponeDto responseObject = null;\n\t\ttry {\t\t\t\n\t\t\tresponseObject = mapper.readValue(mapper.writeValueAsString(getApiResponse.get(\"response\")),\n\t\t\t\t\tPartnerCertDownloadResponeDto.class);\n\t\t} catch (IOException e) {\n\t\t\tLOGGER.error(\"Error occured while parsing the response \", e);\n\t\t\tthrow new ApiAccessibleException(ApiAccessibleExceptionConstant.UNABLE_TO_PROCESS.getErrorCode(),\n\t\t\t\t\tApiAccessibleExceptionConstant.UNABLE_TO_PROCESS.getErrorMessage());\n\t\t}\n\t\tif (responseObject == null && getApiResponse.containsKey(PartnerConstants.ERRORS)) {\n\t\t\tList> certServiceErrorList = (List>) getApiResponse\n\t\t\t\t\t.get(PartnerConstants.ERRORS);\n\t\t\tif (!certServiceErrorList.isEmpty()) {\n\t\t\t\tthrow new ApiAccessibleException(certServiceErrorList.get(0).get(PartnerConstants.ERRORCODE).toString(),\n\t\t\t\t\t\tcertServiceErrorList.get(0).get(PartnerConstants.ERRORMESSAGE).toString());\n\t\t\t} else {\n\t\t\t\tthrow new ApiAccessibleException(ApiAccessibleExceptionConstant.UNABLE_TO_PROCESS.getErrorCode(),\n\t\t\t\t\t\tApiAccessibleExceptionConstant.UNABLE_TO_PROCESS.getErrorMessage());\n\t\t\t}\n\t\t}\n\t\tif (responseObject == null) {\n\t\t\tthrow new ApiAccessibleException(ApiAccessibleExceptionConstant.API_NULL_RESPONSE_EXCEPTION.getErrorCode(),\n\t\t\t\t\tApiAccessibleExceptionConstant.API_NULL_RESPONSE_EXCEPTION.getErrorMessage());\n\t\t}\n\n\t\treturn responseObject.getCertificateData();\n\t}\n\n\tprivate AuthPolicy validatePolicy(String policyId) {\n\t\tOptional authPolicy = authPolicyRepository.findById(policyId);\n\t\tif (authPolicy.isEmpty()) {\n\t\t\tauditUtil.setAuditRequestDto(PartnerManageEnum.GET_PARTNER_POLICY_MAPPING_FAILURE, policyId, \"policyId\");\n\t\t\tthrow new PartnerManagerServiceException(ErrorCode.PARTNER_NOT_MAPPED_TO_POLICY_EXCEPTION.getErrorCode(),\n\t\t\t\t\tErrorCode.PARTNER_NOT_MAPPED_TO_POLICY_EXCEPTION.getErrorMessage());\n\t\t}\n\t\tif (!authPolicy.get().getIsActive()) {\n\t\t\tauditUtil.setAuditRequestDto(PartnerManageEnum.GET_PARTNER_POLICY_MAPPING_FAILURE, policyId, \"policyId\");\n\t\t\tthrow new PartnerManagerServiceException(ErrorCode.PARTNER_POLICY_NOT_ACTIVE_EXCEPTION.getErrorCode(),\n\t\t\t\t\tErrorCode.PARTNER_POLICY_NOT_ACTIVE_EXCEPTION.getErrorMessage());\n\t\t}\n\t\tif (authPolicy.get().getPolicyGroup() == null) {\n\t\t\tauditUtil.setAuditRequestDto(PartnerManageEnum.GET_PARTNER_POLICY_MAPPING_FAILURE, policyId, \"policyId\");\n\t\t\tthrow new PartnerManagerServiceException(ErrorCode.POLICY_GROUP_NOT_EXISTS.getErrorCode(),\n\t\t\t\t\tErrorCode.POLICY_GROUP_NOT_EXISTS.getErrorMessage());\n\t\t}\n\t\tif (!authPolicy.get().getPolicyGroup().getIsActive()) {\n\t\t\tauditUtil.setAuditRequestDto(PartnerManageEnum.GET_PARTNER_POLICY_MAPPING_FAILURE, policyId, \"policyId\");\n\t\t\tthrow new PartnerManagerServiceException(ErrorCode.POLICY_GROUP_NOT_ACTIVE.getErrorCode(),\n\t\t\t\t\tErrorCode.POLICY_GROUP_NOT_ACTIVE.getErrorMessage());\n\t\t}\n\t\tif (authPolicy.get().getValidToDate().isBefore(LocalDateTime.now())) {\n\t\t\tauditUtil.setAuditRequestDto(PartnerManageEnum.GET_PARTNER_POLICY_MAPPING_FAILURE, policyId, \"policyId\");\n\t\t\tthrow new PartnerManagerServiceException(ErrorCode.PARTNER_POLICY_EXPIRED_EXCEPTION.getErrorCode(),\n\t\t\t\t\tErrorCode.PARTNER_POLICY_EXPIRED_EXCEPTION.getErrorMessage());\n\t\t}\n\t\treturn authPolicy.get();\n\t}\n\n\tpublic String getUser() {\n\t\treturn UserDetailUtil.getLoggedInUser();\n\t}\n\t\n\t/**\n\t * \n\t * @param partnerDataToPublish\n\t * @param policyDataToPublish\n\t * @param apiKeyDataToPublish\n\t * @param eventType\n\t */\n\tprivate void notify(PartnerDataPublishDto partnerDataToPublish, PolicyPublishDto policyDataToPublish,\n\t\t\tAPIKeyDataPublishDto apiKeyDataToPublish, EventType eventType) {\n\t\tMap data = new HashMap<>();\n\t\tif (partnerDataToPublish != null) {\n\t\t\tdata.put(PartnerConstants.PARTNER_DATA, partnerDataToPublish);\n\t\t}\n\t\tif (policyDataToPublish != null) {\n\t\t\tdata.put(PartnerConstants.POLICY_DATA, policyDataToPublish);\n\t\t}\n\t\tif(apiKeyDataToPublish != null) {\n\t\t\tdata.put(PartnerConstants.APIKEY_DATA, apiKeyDataToPublish);\n\t\t}\n\t\tnotify(data, eventType);\n\t}\n\t\n\t/**\n\t * \n\t * @param data\n\t * @param eventType\n\t */\n\tprivate void notify(Map data,EventType eventType) {\n\t\tType type = new Type();\n\t\ttype.setName(\"PartnerManagementServiceImpl\");\n\t\ttype.setNamespace(\"io.mosip.pmp.partner.manager.service.impl.PartnerManagementServiceImpl\");\n\t\twebSubPublisher.notify(eventType, data, type);\n\t}\n\t\n\t/**\n\t * \n\t * @param eventType\n\t * @param partner\n\t */\n\tprivate void sendNotifications(EventType eventType, Partner partner) {\n\t\tList notificationDtos = new ArrayList();\n\t\tNotificationDto dto = new NotificationDto();\n\t\tdto.setPartnerId(partner.getId());\n\t\tdto.setPartnerName(partner.getName());\n\t\tdto.setEmailId(partner.getEmailId());\n\t\tdto.setLangCode(partner.getLangCode());\n\t\tdto.setPartnerStatus(partner.getIsActive() == true ? PartnerConstants.ACTIVE : PartnerConstants.DEACTIVE);\n\t\tnotificationDtos.add(dto);\n\t\ttry {\n\t\t\tnotificationService.sendNotications(eventType, notificationDtos);\n\t\t} catch (Exception e) {\n\t\t\tLOGGER.error(\"Error occured while sending the partner update notifications.\", e.getLocalizedMessage(),\n\t\t\t\t\te.getMessage());\n\t\t}\n\t}\n\t\n\tprivate void sendNotifications(EventType eventType, Partner partner,PartnerPolicy partnerPolicyFromDb) {\n\t\tList notificationDtos = new ArrayList();\n\t\tOptional authPolicy = authPolicyRepository.findById(partnerPolicyFromDb.getPolicyId());\n\t\tNotificationDto dto = new NotificationDto();\n\t\tdto.setPartnerId(partner.getId());\n\t\tdto.setPartnerName(partner.getName());\n\t\tdto.setEmailId(partner.getEmailId());\n\t\tdto.setLangCode(partner.getLangCode());\n\t\tdto.setPartnerStatus(partner.getIsActive() == true ? PartnerConstants.ACTIVE : PartnerConstants.DEACTIVE);\n\t\tdto.setApiKey(partnerPolicyFromDb.getPolicyApiKey());\n\t\tdto.setApiKeyExpiryDate(partnerPolicyFromDb.getValidToDatetime().toLocalDateTime());\n\t\tdto.setApiKeyStatus(partnerPolicyFromDb.getIsActive() == true ? PartnerConstants.ACTIVE : PartnerConstants.DEACTIVE);\n\t\tdto.setPolicyId(partnerPolicyFromDb.getPolicyId());\n\t\tdto.setPolicyName(authPolicy.isPresent() ? authPolicy.get().getName() : null);\n\t\tdto.setPolicyExpiryDateTime(authPolicy.isPresent() ? authPolicy.get().getValidToDate() : null);\n\t\tdto.setPolicyStatus((authPolicy.isPresent() && authPolicy.get().getIsActive() == true) ? PartnerConstants.ACTIVE : PartnerConstants.DEACTIVE);\n\t\tnotificationDtos.add(dto);\n\t\ttry {\n\t\t\tnotificationService.sendNotications(eventType, notificationDtos);\n\t\t} catch (Exception e) {\n\t\t\tLOGGER.error(\"Error occured while sending the apikey notifications.\", e.getLocalizedMessage(),\n\t\t\t\t\te.getMessage());\n\t\t}\n\t}\n\n\t@Override\n\tpublic APIKeyGenerateResponseDto generateAPIKey(String partnerId, APIKeyGenerateRequestDto requestDto) {\n\t\tif(!getUser().equals(partnerId)) {\n\t\t\tthrow new PartnerManagerServiceException(ErrorCode.LOGGEDIN_USER_NOT_AUTHORIZED.getErrorCode(),\n\t\t\t\t\tErrorCode.LOGGEDIN_USER_NOT_AUTHORIZED.getErrorMessage());\n\t\t}\n\t\tOptional partnerFromDb = partnerRepository.findById(partnerId);\n\t\tif (partnerFromDb.isEmpty()) {\n\t\t\tauditUtil.setAuditRequestDto(PartnerManageEnum.GENERATE_API_KEY_FAILURE, partnerId, \"partnerId\");\n\t\t\tthrow new PartnerManagerServiceException(ErrorCode.PARTNER_ID_DOES_NOT_EXIST_EXCEPTION.getErrorCode(),\n\t\t\t\t\tErrorCode.PARTNER_ID_DOES_NOT_EXIST_EXCEPTION.getErrorMessage());\n\t\t}\n\t\tif (!partnerFromDb.get().getIsActive()) {\n\t\t\tauditUtil.setAuditRequestDto(PartnerManageEnum.GENERATE_API_KEY_FAILURE, partnerId, \"partnerId\");\n\t\t\tthrow new PartnerManagerServiceException(ErrorCode.PARTNER_NOT_ACTIVE_EXCEPTION.getErrorCode(),\n\t\t\t\t\tErrorCode.PARTNER_NOT_ACTIVE_EXCEPTION.getErrorMessage());\n\t\t}\n\t\tAuthPolicy validPolicy = authPolicyRepository.findByPolicyGroupIdAndName(partnerFromDb.get().getPolicyGroupId(),requestDto.getPolicyName());\n\t\tif(validPolicy == null) {\n\t\t\tauditUtil.setAuditRequestDto(PartnerManageEnum.GENERATE_API_KEY_FAILURE, partnerId, \"partnerId\");\n\t\t\tthrow new PartnerManagerServiceException(ErrorCode.POLICY_NOT_EXIST_EXCEPTION.getErrorCode(),\n\t\t\t\t\tErrorCode.POLICY_NOT_EXIST_EXCEPTION.getErrorMessage());\t\t\t\n\t\t}\t\t\n\t\tList approvedMappedPolicy = partnerPolicyRequestRepository\n\t\t\t\t.findByPartnerIdAndPolicyIdAndStatusCode(partnerId, validPolicy.getId(),\n\t\t\t\t\t\tPartnerConstants.APPROVED);\n\t\tif (approvedMappedPolicy.isEmpty()) {\n\t\t\tauditUtil.setAuditRequestDto(PartnerManageEnum.GENERATE_API_KEY_FAILURE, partnerId, \"partnerId\");\n\t\t\tthrow new PartnerManagerServiceException(ErrorCode.PARTNER_POLICY_MAPPING_NOT_EXISTS.getErrorCode(),\n\t\t\t\t\tErrorCode.PARTNER_POLICY_MAPPING_NOT_EXISTS.getErrorMessage());\n\t\t}\t\t\n\t\tPartnerPolicy policyByLabel = partnerPolicyRepository.findByPartnerIdPolicyIdAndLabel(\n\t\t\t\tpartnerFromDb.get().getId(), validPolicy.getId(), PartnerUtil.trimAndReplace(requestDto.getLabel()));\n\t\tif(policyByLabel != null) {\n\t\t\tauditUtil.setAuditRequestDto(PartnerManageEnum.GENERATE_API_KEY_FAILURE, partnerId, \"partnerId\");\n\t\t\tthrow new PartnerManagerServiceException(ErrorCode.PARTNER_POLICY_LABEL_EXISTS.getErrorCode(),\n\t\t\t\t\tErrorCode.PARTNER_POLICY_LABEL_EXISTS.getErrorMessage());\n\t\t}\n\t\tAPIKeyGenerateResponseDto response = new APIKeyGenerateResponseDto();\n\t\tPartnerPolicy partnerPolicy = new PartnerPolicy();\n\t\t// Generate an initial API key ID\n\t\tString apiKeyId = PartnerUtil.createPartnerApiKey();\n\n\t\tint attempts = 0;\n\n\t\t// Keep generating new API key ID until a unique one is found or maxRetries is reached\n\t\twhile (partnerPolicyRepository.existsById(apiKeyId)) {\n\t\t\tif (attempts >= maxRetries) {\n\t\t\t\tLOGGER.error(\"Failed to generate unique {} (field: '{}') for entity '{}' after {} attempts\", \"API Key ID\",\n\t\t\t\t\t\t\"policyApiKey\", partnerPolicy.getClass().getSimpleName(), maxRetries);\n\t\t\t\tauditUtil.setAuditRequestDto(PartnerManageEnum.GENERATE_API_KEY_FAILURE, partnerId, \"partnerId\");\n\t\t\t\tthrow new PartnerServiceException(\n\t\t\t\t\t\tio.mosip.pms.partner.constant.ErrorCode.UNABLE_TO_GENERATE_UNIQUE_ID.getErrorCode(),\n\t\t\t\t\t\tString.format(io.mosip.pms.partner.constant.ErrorCode.UNABLE_TO_GENERATE_UNIQUE_ID.getErrorMessage(), \"API Key ID\", \"policyApiKey\", partnerPolicy.getClass().getSimpleName(), maxRetries)\n\t\t\t\t);\n\t\t\t}\n\t\t\tapiKeyId = PartnerUtil.createPartnerApiKey();\n\t\t\tattempts++;\n\t\t}\n\n\t\tpartnerPolicy.setPolicyApiKey(apiKeyId);\n\t\tpartnerPolicy.setPartner(approvedMappedPolicy.get(0).getPartner());\n\t\tpartnerPolicy.setPolicyId(approvedMappedPolicy.get(0).getPolicyId());\n\t\tpartnerPolicy.setIsActive(true);\n\t\tpartnerPolicy.setIsDeleted(false);\n\t\tpartnerPolicy.setLabel(requestDto.getLabel());\n\t\tpartnerPolicy.setValidFromDatetime(Timestamp.valueOf(LocalDateTime.now()));\n\t\tpartnerPolicy.setValidToDatetime(Timestamp.valueOf(LocalDateTime.now().plusDays(partnerPolicyExpiryInDays)));\n\t\tpartnerPolicy.setCrBy(getUser());\n\t\tpartnerPolicy.setCrDtimes(Timestamp.valueOf(LocalDateTime.now()));\n\t\tpartnerPolicyRepository.save(partnerPolicy);\t\t\n\t\tnotify(MapperUtils.mapDataToPublishDto(approvedMappedPolicy.get(0).getPartner(),\n\t\t\t\tgetPartnerCertificate(approvedMappedPolicy.get(0).getPartner().getCertificateAlias())),\n\t\t\t\tMapperUtils.mapPolicyToPublishDto(validPolicy, getPolicyObject(validPolicy.getPolicyFileId())),\n\t\t\t\tMapperUtils.mapKeyDataToPublishDto(partnerPolicy), EventType.APIKEY_APPROVED);\n\t\tresponse.setApiKey(partnerPolicy.getPolicyApiKey());\n\t\tresponse.setLabel(partnerPolicy.getLabel());\n\t\tresponse.setPartnerId(partnerId);\n\t\tresponse.setPolicyId(approvedMappedPolicy.get(0).getPolicyId());\n\t\tauditUtil.setAuditRequestDto(PartnerManageEnum.GENERATE_API_KEY_SUCCESS, partnerId, \"partnerId\");\n\t\treturn response;\t\n\t}\n\n\t@Override\n\tpublic String approveRejectPartnerPolicyMapping(String mappingkey, StatusRequestDto statusRequest) {\t\t\n\t\tPartnerPolicyRequest updateObject = getValidApikeyRequestForStatusUpdate(mappingkey);\n\t\tvalidatePolicy(updateObject.getPolicyId());\t\t\n\t\tif ((statusRequest.getStatus().equalsIgnoreCase(PartnerConstants.APPROVED))) {\n\t\t\tupdateObject.setUpdBy(getUser());\n\t\t\tupdateObject.setUpdDtimes(Timestamp.valueOf(LocalDateTime.now()));\n\t\t\tupdateObject.setStatusCode(PartnerConstants.APPROVED);\n\t\t\tpartnerPolicyRequestRepository.save(updateObject);\t\t\t\n\t\t\tauditUtil.setAuditRequestDto(PartnerManageEnum.APPROVE_REJECT_PARTNER_API_SUCCESS, mappingkey, \"mappingKey\");\n\t\t\treturn \"Policy mapping approved successfully\";\n\t\t}\n\t\tif ((statusRequest.getStatus().equalsIgnoreCase(PartnerConstants.REJECTED))) {\n\t\t\tupdateObject.setUpdBy(getUser());\n\t\t\tupdateObject.setUpdDtimes(Timestamp.valueOf(LocalDateTime.now()));\n\t\t\tupdateObject.setStatusCode(PartnerConstants.REJECTED);\n\t\t\tpartnerPolicyRequestRepository.save(updateObject);\t\t\t\n\t\t\tauditUtil.setAuditRequestDto(PartnerManageEnum.APPROVE_REJECT_PARTNER_API_SUCCESS, mappingkey, \"mappingKey\");\n\t\t\treturn \"Policy mapping rejected successfully\";\n\t\t}\n\t\tauditUtil.setAuditRequestDto(PartnerManageEnum.APPROVE_REJECT_PARTNER_API_FAILURE, mappingkey, \"mappingKey\");\n\t\tLOGGER.info(statusRequest.getStatus() + \" : Invalid Input Parameter (status should be Approved/Rejected)\");\n\t\tthrow new PartnerManagerServiceException(ErrorCode.INVALID_STATUS_CODE.getErrorCode(),\n\t\t\t\tErrorCode.INVALID_STATUS_CODE.getErrorMessage());\n\t}\n\n\t@Override\n\tpublic String updateAPIKeyStatus(String partnerId, String policyId, APIkeyStatusUpdateRequestDto request) {\n\t\tPartnerPolicy policyByLabel = partnerPolicyRepository.findByPartnerIdPolicyIdAndLabel(partnerId, policyId,\n\t\t\t\trequest.getLabel());\n\t\tif(policyByLabel == null) {\n\t\t\tauditUtil.setAuditRequestDto(PartnerManageEnum.ACTIVATE_DEACTIVATE_API_PARTNERS_FAILED, partnerId, \"partnerId\");\n\t\t\tthrow new PartnerManagerServiceException(ErrorCode.PARTNER_POLICY_LABEL_NOT_EXISTS.getErrorCode(),\n\t\t\t\t\tErrorCode.PARTNER_POLICY_LABEL_NOT_EXISTS.getErrorMessage());\n\t\t}\n\t\t//check if logged in user is admin\n\t\tboolean isAdmin = partnerHelper.isPartnerAdmin(authUserDetails().getAuthorities().toString());\n\t\tif (!isAdmin){\n\t\t\t// check if Partner is Active or not.\n\t\t\tif (policyByLabel.getPartner() != null && !policyByLabel.getPartner().getIsActive()) {\n\t\t\t\tLOGGER.error(\"Partner is not Active, hence status of API key cannot be updated, for partner: \" + partnerId);\n\t\t\t\tauditUtil.setAuditRequestDto(PartnerManageEnum.ACTIVATE_DEACTIVATE_API_PARTNERS_FAILED, partnerId,\n\t\t\t\t\t\t\"partnerId\");\n\t\t\t\tthrow new PartnerManagerServiceException(ErrorCode.PARTNER_NOT_ACTIVE_EXCEPTION.getErrorCode(),\n\t\t\t\t\t\tErrorCode.PARTNER_NOT_ACTIVE_EXCEPTION.getErrorMessage());\n\t\t\t}\n\t\t}\n\t\t// check if API key has been already deactivated\n\t\tif (!policyByLabel.getIsActive() && request.getStatus().equalsIgnoreCase(PartnerConstants.DEACTIVE)) {\n\t\t\tLOGGER.error(\n\t\t\t\t\t\"API key is already deactivated hence it cannot be deactivated again, for partner: \" + partnerId);\n\t\t\tauditUtil.setAuditRequestDto(PartnerManageEnum.ACTIVATE_DEACTIVATE_API_PARTNERS_FAILED, partnerId,\n\t\t\t\t\t\"partnerId\");\n\t\t\tthrow new PartnerManagerServiceException(ErrorCode.PARTNER_APIKEY_NOT_ACTIVE_EXCEPTION.getErrorCode(),\n\t\t\t\t\tErrorCode.PARTNER_APIKEY_NOT_ACTIVE_EXCEPTION.getErrorMessage());\n\t\t}\n\t\tpolicyByLabel.setUpdBy(getUser());\n\t\tpolicyByLabel.setUpdDtimes(Timestamp.valueOf(LocalDateTime.now()));\t\t\n\t\tif (request.getStatus().equalsIgnoreCase(PartnerConstants.ACTIVE)) {\n\t\t\tpolicyByLabel.setIsActive(true);\n\t\t\tnotify(null, null, MapperUtils.mapKeyDataToPublishDto(policyByLabel), EventType.APIKEY_UPDATED);\n\t\t\tpartnerPolicyRepository.save(policyByLabel);\t\t\t\n\t\t\tauditUtil.setAuditRequestDto(PartnerManageEnum.ACTIVATE_DEACTIVATE_API_PARTNERS_SUCCESS, partnerId, \"partnerId\");\n\t\t\tsendNotifications(EventType.APIKEY_STATUS_UPDATED, policyByLabel.getPartner(), policyByLabel);\n\t\t\treturn \"Partner apikey activated successfully.\";\n\t\t}\n\t\tif (request.getStatus().equalsIgnoreCase(PartnerConstants.DEACTIVE)) {\n\t\t\tpolicyByLabel.setIsActive(false);\n\t\t\tnotify(null, null, MapperUtils.mapKeyDataToPublishDto(policyByLabel), EventType.APIKEY_UPDATED);\n\t\t\tpartnerPolicyRepository.save(policyByLabel);\t\t\t\n\t\t\tauditUtil.setAuditRequestDto(PartnerManageEnum.ACTIVATE_DEACTIVATE_API_PARTNERS_SUCCESS, partnerId, \"partnerId\");\n\t\t\tsendNotifications(EventType.APIKEY_STATUS_UPDATED, policyByLabel.getPartner(), policyByLabel);\n\t\t\treturn \"Partner apikey de-activated successfully.\";\n\t\t}\n\t\tauditUtil.setAuditRequestDto(PartnerManageEnum.ACTIVATE_DEACTIVATE_API_PARTNERS_FAILED, partnerId, \"partnerId\");\n\t\tLOGGER.info(request.getStatus() + \" : is Invalid Input Parameter, it should be (Active/De-Active)\");\n\t\tthrow new PartnerManagerServiceException(ErrorCode.INVALID_STATUS_CODE_ACTIVE_DEACTIVE.getErrorCode(),\n\t\t\t\tErrorCode.INVALID_STATUS_CODE_ACTIVE_DEACTIVE.getErrorMessage());\n\t}\n\n\t@Override\n\tpublic ResponseWrapperV2 getPartnerDetails(String partnerId) {\n\t\tResponseWrapperV2 responseWrapper = new ResponseWrapperV2<>();\n\t\ttry {\n\t\t\tString userId = getUserId();\n\t\t\tList partnerList = partnerServiceRepository.findByUserId(userId);\n\t\t\tif (partnerList.isEmpty()) {\n\t\t\t\tLOGGER.info(\"sessionId\", \"idType\", \"id\", \"User id does not exists.\");\n\t\t\t\tthrow new PartnerServiceException(io.mosip.pms.partner.constant.ErrorCode.USER_ID_NOT_EXISTS.getErrorCode(),\n\t\t\t\t\t\tio.mosip.pms.partner.constant.ErrorCode.USER_ID_NOT_EXISTS.getErrorMessage());\n\t\t\t}\n\t\t\tif (Objects.isNull(partnerId) || partnerId.isEmpty()) {\n\t\t\t\tthrow new PartnerServiceException(\n\t\t\t\t\t\tio.mosip.pms.partner.constant.ErrorCode.INVALID_REQUEST_PARAM.getErrorCode(),\n\t\t\t\t\t\tio.mosip.pms.partner.constant.ErrorCode.INVALID_REQUEST_PARAM.getErrorMessage()\n\t\t\t\t);\n\t\t\t}\n\t\t\tOptional optionalPartner = partnerServiceRepository.findById(partnerId);\n\t\t\tif (optionalPartner.isEmpty()) {\n\t\t\t\tthrow new PartnerServiceException(\n\t\t\t\t\t\tio.mosip.pms.partner.constant.ErrorCode.PARTNER_DOES_NOT_EXIST_EXCEPTION.getErrorCode(),\n\t\t\t\t\t\tio.mosip.pms.partner.constant.ErrorCode.PARTNER_DOES_NOT_EXIST_EXCEPTION.getErrorMessage()\n\t\t\t\t);\n\t\t\t}\n\t\t\tPartnerDetailsV3Dto partnerDetailsV3Dto = new PartnerDetailsV3Dto();\n\t\t\tPartner partner = optionalPartner.get();\n\t\t\tpartnerDetailsV3Dto.setPartnerId(partner.getId());\n\t\t\tpartnerDetailsV3Dto.setApprovalStatus(partner.getApprovalStatus());\n\t\t\tpartnerDetailsV3Dto.setIsActive(partner.getIsActive());\n\t\t\tpartnerDetailsV3Dto.setCreatedDateTime(partner.getCrDtimes().toLocalDateTime());\n\t\t\tpartnerDetailsV3Dto.setPartnerType(partner.getPartnerTypeCode());\n\t\t\tpartnerDetailsV3Dto.setOrganizationName(partner.getName());\n\t\t\tpartnerDetailsV3Dto.setEmailId(partner.getEmailId());\n\t\t\tpartnerDetailsV3Dto.setContactNumber(partner.getContactNo());\n\t\t\tif ((!partner.getPartnerTypeCode().equals(FTM_PROVIDER) &&\n\t\t\t\t\t!partner.getPartnerTypeCode().equals(DEVICE_PROVIDER) &&\n\t\t\t\t\t(Objects.isNull(partner.getPolicyGroupId()) || partner.getPolicyGroupId().isEmpty()))) {\n\t\t\t\tLOGGER.info(\"sessionId\", \"idType\", \"id\",\n\t\t\t\t\t\t\"Policy Group Id is empty for partner Id -\" + partner.getId());\n\t\t\t\tthrow new PartnerServiceException(\n\t\t\t\t\t\tio.mosip.pms.partner.constant.ErrorCode.POLICY_GROUP_ID_NOT_EXISTS.getErrorCode(),\n\t\t\t\t\t\tio.mosip.pms.partner.constant.ErrorCode.POLICY_GROUP_ID_NOT_EXISTS.getErrorMessage()\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (Objects.nonNull(partner.getPolicyGroupId())) {\n\t\t\t\tPolicyGroup policyGroup = policyGroupRepository.findPolicyGroupById(partner.getPolicyGroupId());\n\t\t\t\tif (Objects.isNull(policyGroup)) {\n\t\t\t\t\tthrow new PartnerServiceException(\n\t\t\t\t\t\t\tio.mosip.pms.partner.constant.ErrorCode.MATCHING_POLICY_GROUP_NOT_EXISTS.getErrorCode(),\n\t\t\t\t\t\t\tio.mosip.pms.partner.constant.ErrorCode.MATCHING_POLICY_GROUP_NOT_EXISTS.getErrorMessage()\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tpartnerDetailsV3Dto.setPolicyGroupName(policyGroup.getName());\n\t\t\t\tpartnerDetailsV3Dto.setPolicyGroupDescription(policyGroup.getDesc());\n\t\t\t}\n\t\t\tif (Objects.isNull(partner.getCertificateAlias())){\n\t\t\t\tpartnerDetailsV3Dto.setIsCertificateAvailable(false);\n\t\t\t} else {\n\t\t\t\tPartnerCertDownloadRequestDto requestDto = new PartnerCertDownloadRequestDto();\n\t\t\t\trequestDto.setPartnerId(partner.getId());\n\n\t\t\t\tPartnerCertDownloadResponeDto partnerCertDownloadResponeDto = partnerHelper.getCertificate(partner.getCertificateAlias(),\n\t\t\t\t\t\t\"pmp.partner.certificaticate.get.rest.uri\", PartnerCertDownloadResponeDto.class);\n\t\t\t\tX509Certificate cert = MultiPartnerUtil.decodeCertificateData(partnerCertDownloadResponeDto.getCertificateData());\n\t\t\t\tpartnerDetailsV3Dto.setCertificateUploadDateTime(cert.getNotBefore());\n\t\t\t\tpartnerDetailsV3Dto.setCertificateExpiryDateTime(cert.getNotAfter());\n\t\t\t\tpartnerDetailsV3Dto.setIsCertificateAvailable(true);\n\t\t\t}\n\t\t\tOptional keycloakUserDto = partnerHelper.getUserDetailsByPartnerId(partnerId);\n\t\t\tif (keycloakUserDto.isPresent()){\n\t\t\t\tpartnerDetailsV3Dto.setFirstName(keycloakUserDto.get().getFirstName());\n\t\t\t\tpartnerDetailsV3Dto.setLastName(keycloakUserDto.get().getLastName());\n\t\t\t}\n\t\t\tresponseWrapper.setResponse(partnerDetailsV3Dto);\n\t\t} catch (ApiAccessibleException ex) {\n\t\t\tLOGGER.info(\"sessionId\", \"idType\", \"id\",\n\t\t\t\t\t\"In getPartnerDetails method of PartnerManagementServiceImpl - \" + ex.getMessage());\n\t\t\tresponseWrapper.setErrors(MultiPartnerUtil.setErrorResponse(ex.getErrorCode(), ex.getErrorText()));\n\t\t} catch (PartnerServiceException ex) {\n\t\t\tLOGGER.info(\"sessionId\", \"idType\", \"id\",\n\t\t\t\t\t\"In getPartnerDetails method of PartnerManagementServiceImpl - \" + ex.getMessage());\n\t\t\tresponseWrapper.setErrors(MultiPartnerUtil.setErrorResponse(ex.getErrorCode(), ex.getErrorText()));\n\t\t} catch (Exception ex) {\n\t\t\tLOGGER.error(\"sessionId\", \"idType\", \"id\",\n\t\t\t\t\t\"Error in getPartnerDetails method of PartnerManagementServiceImpl - \" + ex.getMessage());\n\t\t\tString errorCode = ErrorCode.FETCH_PARTNER_DETAILS_ERROR.getErrorCode();\n\t\t\tString errorMessage = ErrorCode.FETCH_PARTNER_DETAILS_ERROR.getErrorMessage();\n\t\t\tresponseWrapper.setErrors(MultiPartnerUtil.setErrorResponse(errorCode, errorMessage));\n\t\t}\n\t\tresponseWrapper.setId(getPartnerDetailsId);\n\t\tresponseWrapper.setVersion(VERSION);\n\t\treturn responseWrapper;\n\t}\n\n\t@Override\n\tpublic ResponseWrapperV2> getAdminPartners(String sortFieldName, String sortType, Integer pageNo, Integer pageSize, PartnerFilterDto partnerFilterDto) {\n\t\tResponseWrapperV2> responseWrapper = new ResponseWrapperV2<>();\n\t\ttry {\n\t\t\tPageResponseV2Dto pageResponseV2Dto = new PageResponseV2Dto<>();\n\t\t\t// Pagination\n\t\t\tPageable pageable = PageRequest.of(pageNo, pageSize);\n\n\t\t\t//Sorting\n\t\t\tif (Objects.nonNull(sortFieldName) && Objects.nonNull(sortType)) {\n\t\t\t\tif (sortFieldName.equalsIgnoreCase(\"certificateUploadStatus\") || sortFieldName.equalsIgnoreCase(\"isActive\")) {\n\t\t\t\t\tsortType = sortType.equalsIgnoreCase(PartnerConstants.ASC) ? PartnerConstants.DESC : PartnerConstants.ASC;\n\t\t\t\t}\n\t\t\t\tSort sort = partnerHelper.getSortingRequest(getSortColumn(partnerHelper.partnerAliasToColumnMap, sortFieldName), sortType);\n\t\t\t\tpageable = PageRequest.of(pageNo, pageSize, sort);\n\t\t\t}\n\n\t\t\tPage page = partnerSummaryRepository.\n\t\t\t\t\tgetSummaryOfAllPartners(partnerFilterDto.getPartnerId(), partnerFilterDto.getPartnerTypeCode(),\n\t\t\t\t\t\t\tpartnerFilterDto.getOrganizationName(), partnerFilterDto.getPolicyGroupName(),\n\t\t\t\t\t\t\tpartnerFilterDto.getCertificateUploadStatus(), partnerFilterDto.getEmailAddress(),\n\t\t\t\t\t\t\tpartnerFilterDto.getIsActive(), pageable);\n\t\t\tif (Objects.nonNull(page) && !page.getContent().isEmpty()) {\n\t\t\t\tList partnerSummaryDtoList = MapperUtils.mapAll(page.getContent(), PartnerSummaryDto.class);\n\t\t\t\tpageResponseV2Dto.setPageNo(pageNo);\n\t\t\t\tpageResponseV2Dto.setPageSize(pageSize);\n\t\t\t\tpageResponseV2Dto.setTotalResults(page.getTotalElements());\n\t\t\t\tpageResponseV2Dto.setData(partnerSummaryDtoList);\n\t\t\t}\n\t\t\tresponseWrapper.setResponse(pageResponseV2Dto);\n\t\t} catch (Exception ex) {\n\t\t\tLOGGER.debug(\"sessionId\", \"idType\", \"id\", ex.getStackTrace());\n\t\t\tLOGGER.error(\"sessionId\", \"idType\", \"id\",\n\t\t\t\t\t\"In getAdminPartners method of PartnerManagementServiceImpl - \" + ex.getMessage());\n\t\t\tString errorCode = ErrorCode.FETCH_ALL_PARTNER_DETAILS_ERROR.getErrorCode();\n\t\t\tString errorMessage = ErrorCode.FETCH_ALL_PARTNER_DETAILS_ERROR.getErrorMessage();\n\t\t\tresponseWrapper.setErrors(MultiPartnerUtil.setErrorResponse(errorCode, errorMessage));\n\t\t}\n\t\tresponseWrapper.setId(getAdminPartnersId);\n\t\tresponseWrapper.setVersion(VERSION);\n\t\treturn responseWrapper;\n\t}\n\n\t@Override\n\tpublic ResponseWrapperV2> getAllPartnerPolicyRequests(String sortFieldName, String sortType, Integer pageNo, Integer pageSize, PartnerPolicyRequestFilterDto filterDto) {\n\t\tResponseWrapperV2> responseWrapper = new ResponseWrapperV2<>();\n\t\ttry {\n\t\t\tPageResponseV2Dto pageResponseV2Dto = new PageResponseV2Dto<>();\n\n\t\t\tboolean isPartnerAdmin = partnerHelper.isPartnerAdmin(authUserDetails().getAuthorities().toString());\n\t\t\tList partnerIdList = null;\n\t\t\tif (!isPartnerAdmin) {\n\t\t\t\tString userId = getUserId();\n\t\t\t\tList partnerList = partnerServiceRepository.findByUserId(userId);\n\t\t\t\tif (partnerList.isEmpty()) {\n\t\t\t\t\tLOGGER.info(\"sessionId\", \"idType\", \"id\", \"User id does not exists.\");\n\t\t\t\t\tthrow new PartnerServiceException(io.mosip.pms.partner.constant.ErrorCode.USER_ID_NOT_EXISTS.getErrorCode(),\n\t\t\t\t\t\t\tio.mosip.pms.partner.constant.ErrorCode.USER_ID_NOT_EXISTS.getErrorMessage());\n\t\t\t\t}\n\t\t\t\tpartnerIdList = new ArrayList<>();\n\t\t\t\tfor (Partner partner : partnerList) {\n\t\t\t\t\tif (!partnerHelper.skipDeviceOrFtmPartner(partner)) {\n\t\t\t\t\t\tpartnerHelper.validatePartnerId(partner, userId);\n\t\t\t\t\t\tpartnerHelper.validatePolicyGroupId(partner, userId);\n\t\t\t\t\t\tpartnerHelper.validatePolicyGroup(partner);\n\t\t\t\t\t\tpartnerIdList.add(partner.getId());\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tPageable pageable = Pageable.unpaged();\n\n\t\t\t// Pagination\n\t\t\tboolean isPaginationEnabled = (pageNo != null && pageSize != null);\n\t\t\tif (isPaginationEnabled) {\n\t\t\t\tpageable = PageRequest.of(pageNo, pageSize);\n\t\t\t}\n\n\t\t\t//Sorting\n\t\t\tif (isPaginationEnabled && Objects.nonNull(sortFieldName) && Objects.nonNull(sortType)) {\n\t\t\t\tSort sort = partnerHelper.getSortingRequest(getSortColumn(partnerHelper.partnerPolicyMappingAliasToColumnMap, sortFieldName), sortType);\n\t\t\t\tpageable = PageRequest.of(pageNo, pageSize, sort);\n\t\t\t}\n\n\t\t\tPage page = partnerPolicyMappingRequestRepository.\n\t\t\t\t\tgetSummaryOfAllPartnerPolicyRequests(filterDto.getPartnerId(), filterDto.getPartnerType(),\n\t\t\t\t\t\t\tfilterDto.getOrganizationName(), filterDto.getPolicyId(), filterDto.getPolicyName(),\n\t\t\t\t\t\t\tfilterDto.getStatus(), filterDto.getPartnerComment(),\n\t\t\t\t\t\t\tfilterDto.getPolicyGroupName(), partnerIdList, isPartnerAdmin, pageable);\n\t\t\tif (Objects.nonNull(page) && !page.getContent().isEmpty()) {\n\t\t\t\tList partnerPolicyRequestSummaryDtoList = MapperUtils.mapAll(page.getContent(), PartnerPolicyRequestSummaryDto.class);\n\t\t\t\tpageResponseV2Dto.setPageNo(page.getNumber());\n\t\t\t\tpageResponseV2Dto.setPageSize(page.getSize());\n\t\t\t\tpageResponseV2Dto.setTotalResults(page.getTotalElements());\n\t\t\t\tpageResponseV2Dto.setData(partnerPolicyRequestSummaryDtoList);\n\t\t\t}\n\t\t\tresponseWrapper.setResponse(pageResponseV2Dto);\n\t\t} catch (PartnerServiceException ex) {\n\t\t\tLOGGER.info(\"sessionId\", \"idType\", \"id\", \"In getAllPartnerPolicyRequests method of PartnerManagementServiceImpl - \" + ex.getMessage());\n\t\t\tresponseWrapper.setErrors(MultiPartnerUtil.setErrorResponse(ex.getErrorCode(), ex.getErrorText()));\n\t\t} catch (Exception ex) {\n\t\t\tLOGGER.debug(\"sessionId\", \"idType\", \"id\", ex.getStackTrace());\n\t\t\tLOGGER.error(\"sessionId\", \"idType\", \"id\",\n\t\t\t\t\t\"In getAllPartnerPolicyRequests method of PartnerManagementServiceImpl - \" + ex.getMessage());\n\t\t\tString errorCode = ErrorCode.FETCH_ALL_PARTNER_POLICY_MAPPING_REQUEST_ERROR.getErrorCode();\n\t\t\tString errorMessage = ErrorCode.FETCH_ALL_PARTNER_POLICY_MAPPING_REQUEST_ERROR.getErrorMessage();\n\t\t\tresponseWrapper.setErrors(MultiPartnerUtil.setErrorResponse(errorCode, errorMessage));\n\t\t}\n\t\tresponseWrapper.setId(getAllPartnerPolicyMappingRequestsId);\n\t\tresponseWrapper.setVersion(VERSION);\n\t\treturn responseWrapper;\n\t}\n\n\t@Override\n\tpublic ResponseWrapperV2> getAllApiKeyRequests(String sortFieldName, String sortType, Integer pageNo, Integer pageSize, ApiKeyFilterDto filterDto) {\n\t\tResponseWrapperV2> responseWrapper = new ResponseWrapperV2<>();\n\t\ttry {\n\t\t\tPageResponseV2Dto pageResponseV2Dto = new PageResponseV2Dto<>();\n\t\t\tboolean isPartnerAdmin = partnerHelper.isPartnerAdmin(authUserDetails().getAuthorities().toString());\n\t\t\tList partnerIdList = null;\n\t\t\tif (!isPartnerAdmin) {\n\t\t\t\tString userId = getUserId();\n\t\t\t\tList partnerList = partnerServiceRepository.findByUserId(userId);\n\t\t\t\tif (partnerList.isEmpty()) {\n\t\t\t\t\tLOGGER.info(\"sessionId\", \"idType\", \"id\", \"User id does not exists.\");\n\t\t\t\t\tthrow new PartnerServiceException(io.mosip.pms.partner.constant.ErrorCode.USER_ID_NOT_EXISTS.getErrorCode(),\n\t\t\t\t\t\t\tio.mosip.pms.partner.constant.ErrorCode.USER_ID_NOT_EXISTS.getErrorMessage());\n\t\t\t\t}\n\t\t\t\tpartnerIdList = new ArrayList<>();\n\t\t\t\tfor (Partner partner : partnerList) {\n\t\t\t\t\t\tpartnerHelper.validatePartnerId(partner, userId);\n\t\t\t\t\t\tpartnerHelper.validatePolicyGroupId(partner, userId);\n\t\t\t\t\t\tpartnerHelper.validatePolicyGroup(partner);\n\t\t\t\t\t\tpartnerIdList.add(partner.getId());\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tPageable pageable = Pageable.unpaged();\n\n\t\t\t// Pagination\n\t\t\tboolean isPaginationEnabled = (pageNo != null && pageSize != null);\n\t\t\tif (isPaginationEnabled) {\n\t\t\t\tpageable = PageRequest.of(pageNo, pageSize);\n\t\t\t}\n\n\t\t\t//Sorting\n\t\t\tif (isPaginationEnabled && Objects.nonNull(sortFieldName) && Objects.nonNull(sortType)) {\n\t\t\t\tif (sortFieldName.equalsIgnoreCase(\"status\")) {\n\t\t\t\t\tsortType = sortType.equalsIgnoreCase(PartnerConstants.ASC) ? PartnerConstants.DESC : PartnerConstants.ASC;\n\t\t\t\t}\n\t\t\t\tSort sort = partnerHelper.getSortingRequest(getSortColumn(partnerHelper.apiKeyAliasToColumnMap, sortFieldName), sortType);\n\t\t\t\tpageable = PageRequest.of(pageNo, pageSize, sort);\n\t\t\t}\n\n\t\t\tPage page = apiKeyRequestSummaryRepository.\n\t\t\t\t\tgetSummaryOfAllApiKeyRequests(filterDto.getPartnerId(), filterDto.getApiKeyLabel(),\n\t\t\t\t\t\t\tfilterDto.getOrgName(), filterDto.getPolicyName(), filterDto.getPolicyGroupName(),\n\t\t\t\t\t\t\tfilterDto.getStatus(), partnerIdList, isPartnerAdmin, pageable);\n\t\t\tif (Objects.nonNull(page) && !page.getContent().isEmpty()) {\n\t\t\t\tList partnerPolicyRequestSummaryDtoList = MapperUtils.mapAll(page.getContent(), ApiKeyRequestSummaryDto.class);\n\t\t\t\tpageResponseV2Dto.setPageNo(page.getNumber());\n\t\t\t\tpageResponseV2Dto.setPageSize(page.getSize());\n\t\t\t\tpageResponseV2Dto.setTotalResults(page.getTotalElements());\n\t\t\t\tpageResponseV2Dto.setData(partnerPolicyRequestSummaryDtoList);\n\t\t\t}\n\t\t\tresponseWrapper.setResponse(pageResponseV2Dto);\n\t\t} catch (PartnerServiceException ex) {\n\t\t\tLOGGER.info(\"sessionId\", \"idType\", \"id\", \"In getAllApiKeyRequests method of PartnerManagementServiceImpl - \" + ex.getMessage());\n\t\t\tresponseWrapper.setErrors(MultiPartnerUtil.setErrorResponse(ex.getErrorCode(), ex.getErrorText()));\n\t\t} catch (Exception ex) {\n\t\t\tLOGGER.debug(\"sessionId\", \"idType\", \"id\", ex.getStackTrace());\n\t\t\tLOGGER.error(\"sessionId\", \"idType\", \"id\",\n\t\t\t\t\t\"In getAllApiKeyRequests method of PartnerManagementServiceImpl - \" + ex.getMessage());\n\t\t\tString errorCode = ErrorCode.FETCH_ALL_API_KEY_REQUESTS_ERROR.getErrorCode();\n\t\t\tString errorMessage = ErrorCode.FETCH_ALL_API_KEY_REQUESTS_ERROR.getErrorMessage();\n\t\t\tresponseWrapper.setErrors(MultiPartnerUtil.setErrorResponse(errorCode, errorMessage));\n\t\t}\n\t\tresponseWrapper.setId(getAllApiKeyRequestsId);\n\t\tresponseWrapper.setVersion(VERSION);\n\t\treturn responseWrapper;\n\t}\n\n\t@Override\n\tpublic ResponseWrapperV2> getTrustCertificates(String sortFieldName, String sortType, Integer pageNo, Integer pageSize, TrustCertificateFilterDto filterDto) {\n\t\tResponseWrapperV2> responseWrapper = new ResponseWrapperV2<>();\n\t\ttry {\n\t\t\tPageResponseV2Dto pageResponseV2Dto = new PageResponseV2Dto<>();\n\t\t\tTrustCertTypeListRequestDto trustCertTypeListRequestDto = new TrustCertTypeListRequestDto();\n\t\t\ttrustCertTypeListRequestDto.setCaCertificateType(filterDto.getCaCertificateType());\n\t\t\ttrustCertTypeListRequestDto.setExcludeMosipCA(true);\n\t\t\ttrustCertTypeListRequestDto.setPartnerDomain(filterDto.getPartnerDomain());\n\t\t\ttrustCertTypeListRequestDto.setCertId(filterDto.getCertificateId());\n\t\t\ttrustCertTypeListRequestDto.setIssuedTo(filterDto.getIssuedTo());\n\t\t\ttrustCertTypeListRequestDto.setIssuedBy(filterDto.getIssuedBy());\n\t\t\ttrustCertTypeListRequestDto.setPageNumber(pageNo + 1);\n\t\t\ttrustCertTypeListRequestDto.setPageSize(pageSize);\n\t\t\tif (Objects.nonNull(sortFieldName) && Objects.nonNull(sortType)) {\n\t\t\t\ttrustCertTypeListRequestDto.setSortByFieldName(getSortColumn(partnerHelper.trustCertificateAliasToColumnMap, sortFieldName));\n\t\t\t\ttrustCertTypeListRequestDto.setSortOrder(sortType);\n\t\t\t}\n\t\t\tRequestWrapper request = new RequestWrapper<>();\n\t\t\trequest.setRequest(trustCertTypeListRequestDto);\n\t\t\tTrustCertTypeListResponseDto responseObject = null;\n\t\t\tMap apiResponse = restUtil.postApi(environment.getProperty(\"pmp.trust.certificates.post.rest.uri\"), null, \"\", \"\",\n\t\t\t\t\tMediaType.APPLICATION_JSON, request, Map.class);\n\n\t\t\tif (apiResponse.get(\"response\") == null && apiResponse.containsKey(PartnerConstants.ERRORS)) {\n\t\t\t\tList> certServiceErrorList = (List>) apiResponse\n\t\t\t\t\t\t.get(PartnerConstants.ERRORS);\n\t\t\t\tif (!certServiceErrorList.isEmpty()) {\n\t\t\t\t\tLOGGER.error(\"Error occurred while getting the trust certificates list from keymanager\");\n\t\t\t\t\tthrow new ApiAccessibleException(certServiceErrorList.get(0).get(PartnerConstants.ERRORCODE).toString(),\n\t\t\t\t\t\t\tcertServiceErrorList.get(0).get(PartnerConstants.ERRORMESSAGE).toString());\n\t\t\t\t} else {\n\t\t\t\t\tLOGGER.error(\"Error occurred while getting the trust certificates list from keymanager {}\", apiResponse);\n\t\t\t\t\tthrow new ApiAccessibleException(ApiAccessibleExceptionConstant.UNABLE_TO_PROCESS.getErrorCode(),\n\t\t\t\t\t\t\tApiAccessibleExceptionConstant.UNABLE_TO_PROCESS.getErrorMessage());\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (apiResponse.get(\"response\") == null) {\n\t\t\t\tthrow new ApiAccessibleException(ApiAccessibleExceptionConstant.API_NULL_RESPONSE_EXCEPTION.getErrorCode(),\n\t\t\t\t\t\tApiAccessibleExceptionConstant.API_NULL_RESPONSE_EXCEPTION.getErrorMessage());\n\t\t\t}\n\t\t\tresponseObject = mapper.readValue(mapper.writeValueAsString(apiResponse.get(\"response\")), TrustCertTypeListResponseDto.class);\n\t\t\tpageResponseV2Dto.setPageNo((responseObject.getPageNumber() - 1));\n\t\t\tpageResponseV2Dto.setPageSize(responseObject.getPageSize());\n\t\t\tpageResponseV2Dto.setTotalResults(responseObject.getTotalRecords());\n\t\t\tpageResponseV2Dto.setData(responseObject.getAllPartnerCertificates());\n\t\t\tresponseWrapper.setResponse(pageResponseV2Dto);\n\t\t} catch (ApiAccessibleException ex) {\n\t\t\tLOGGER.info(\"sessionId\", \"idType\", \"id\", \"In getTrustCertificates method of PartnerManagementServiceImpl - \" + ex.getMessage());\n\t\t\tresponseWrapper.setErrors(MultiPartnerUtil.setErrorResponse(ex.getErrorCode(), ex.getErrorText()));\n\t\t} catch (Exception ex) {\n\t\t\tLOGGER.debug(\"sessionId\", \"idType\", \"id\", ex.getStackTrace());\n\t\t\tLOGGER.error(\"sessionId\", \"idType\", \"id\",\n\t\t\t\t\t\"In getTrustCertificates method of PartnerManagementServiceImpl - \" + ex.getMessage());\n\t\t\tString errorCode = io.mosip.pms.partner.constant.ErrorCode.TRUST_CERTIFICATES_FETCH_ERROR.getErrorCode();\n\t\t\tString errorMessage = io.mosip.pms.partner.constant.ErrorCode.TRUST_CERTIFICATES_FETCH_ERROR.getErrorMessage();\n\t\t\tresponseWrapper.setErrors(MultiPartnerUtil.setErrorResponse(errorCode, errorMessage));\n\t\t}\n\t\tresponseWrapper.setId(getTrustCertificatesId);\n\t\tresponseWrapper.setVersion(VERSION);\n\t\treturn responseWrapper;\n\t}\n\n\tpublic ResponseWrapperV2 downloadTrustCertificates(String certificateId) {\n\t\tResponseWrapperV2 responseWrapper = new ResponseWrapperV2<>();\n\t\ttry {\n\t\t\tif (Objects.isNull(certificateId) || certificateId.equals(BLANK_STRING)) {\n\t\t\t\tLOGGER.info(\"sessionId\", \"idType\", \"id\", \"Certificate Id is null or empty -\" + certificateId);\n\t\t\t\tthrow new PartnerServiceException(io.mosip.pms.partner.constant.ErrorCode.INVALID_CERTIFICATE_ID.getErrorCode(),\n\t\t\t\t\t\tio.mosip.pms.partner.constant.ErrorCode.INVALID_CERTIFICATE_ID.getErrorMessage()\n\t\t\t\t);\n\t\t\t}\n\t\t\tTrustCertificateResponseDto responseObject = null;\n\t\t\tMap pathsegments = new HashMap<>();\n\t\t\tpathsegments.put(\"caCertId\", certificateId);\n\t\t\tMap apiResponse = restUtil.getApi(environment.getProperty(\"pmp.download.trust.certificates.get.rest.uri\"), pathsegments, Map.class);\n\t\t\tif (apiResponse.get(\"response\") == null && apiResponse.containsKey(PartnerConstants.ERRORS)) {\n\t\t\t\tList> certServiceErrorList = (List>) apiResponse\n\t\t\t\t\t\t.get(PartnerConstants.ERRORS);\n\t\t\t\tif (!certServiceErrorList.isEmpty()) {\n\t\t\t\t\tLOGGER.error(\"Error occurred while downloading the trust certificates from keymanager\");\n\t\t\t\t\tthrow new ApiAccessibleException(certServiceErrorList.get(0).get(PartnerConstants.ERRORCODE).toString(),\n\t\t\t\t\t\t\tcertServiceErrorList.get(0).get(PartnerConstants.ERRORMESSAGE).toString());\n\t\t\t\t} else {\n\t\t\t\t\tLOGGER.error(\"Error occurred while downloading the trust certificates from keymanager {}\", apiResponse);\n\t\t\t\t\tthrow new ApiAccessibleException(ApiAccessibleExceptionConstant.UNABLE_TO_PROCESS.getErrorCode(),\n\t\t\t\t\t\t\tApiAccessibleExceptionConstant.UNABLE_TO_PROCESS.getErrorMessage());\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (apiResponse.get(\"response\") == null) {\n\t\t\t\tthrow new ApiAccessibleException(ApiAccessibleExceptionConstant.API_NULL_RESPONSE_EXCEPTION.getErrorCode(),\n\t\t\t\t\t\tApiAccessibleExceptionConstant.API_NULL_RESPONSE_EXCEPTION.getErrorMessage());\n\t\t\t}\n\t\t\tresponseObject = mapper.readValue(mapper.writeValueAsString(apiResponse.get(\"response\")), TrustCertificateResponseDto.class);\n\t\t\tresponseWrapper.setResponse(responseObject);\n\t\t} catch (ApiAccessibleException ex) {\n\t\t\tLOGGER.info(\"sessionId\", \"idType\", \"id\", \"In downloadTrustCertificates method of PartnerManagementServiceImpl - \" + ex.getMessage());\n\t\t\tresponseWrapper.setErrors(MultiPartnerUtil.setErrorResponse(ex.getErrorCode(), ex.getErrorText()));\n\t\t} catch (PartnerServiceException ex) {\n\t\t\tLOGGER.info(\"sessionId\", \"idType\", \"id\", \"In downloadTrustCertificates method of PartnerManagementServiceImpl - \" + ex.getMessage());\n\t\t\tresponseWrapper.setErrors(MultiPartnerUtil.setErrorResponse(ex.getErrorCode(), ex.getErrorText()));\n\t\t} catch (Exception ex) {\n\t\t\tLOGGER.debug(\"sessionId\", \"idType\", \"id\", ex.getStackTrace());\n\t\t\tLOGGER.error(\"sessionId\", \"idType\", \"id\",\n\t\t\t\t\t\"In downloadTrustCertificates method of PartnerManagementServiceImpl - \" + ex.getMessage());\n\t\t\tString errorCode = io.mosip.pms.partner.constant.ErrorCode.DOWNLOAD_TRUST_CERTIFICATE_ERROR.getErrorCode();\n\t\t\tString errorMessage = io.mosip.pms.partner.constant.ErrorCode.DOWNLOAD_TRUST_CERTIFICATE_ERROR.getErrorMessage();\n\t\t\tresponseWrapper.setErrors(MultiPartnerUtil.setErrorResponse(errorCode, errorMessage));\n\t\t}\n\t\tresponseWrapper.setId(getDownloadTrustCertificateId);\n\t\tresponseWrapper.setVersion(VERSION);\n\t\treturn responseWrapper;\n\t}\n\n\tpublic String getSortColumn(Map aliasToColumnMap, String alias) {\n\t\treturn aliasToColumnMap.getOrDefault(alias, alias); // Return alias if no match found\n\t}\n\n\tprivate AuthUserDetails authUserDetails() {\n\t\treturn (AuthUserDetails) SecurityContextHolder.getContext().getAuthentication().getPrincipal();\n\t}\n\n\tprivate String getUserId() {\n\t\tString userId = authUserDetails().getUserId();\n\t\treturn userId;\n\t}\n}\n\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/partner/misp/controller/MISPLicenseController.java", + "title": "MISPLicenseController.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/partner/misp/controller/MISPLicenseController.java", + "language": "java", + "content": "package io.mosip.pms.partner.misp.controller;\n\nimport java.util.List;\n\nimport javax.validation.Valid;\n\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.security.access.prepost.PreAuthorize;\nimport org.springframework.web.bind.annotation.GetMapping;\nimport org.springframework.web.bind.annotation.PathVariable;\nimport org.springframework.web.bind.annotation.PostMapping;\nimport org.springframework.web.bind.annotation.PutMapping;\nimport org.springframework.web.bind.annotation.RequestBody;\nimport org.springframework.web.bind.annotation.RequestMapping;\nimport org.springframework.web.bind.annotation.RestController;\n\nimport io.mosip.pms.common.dto.FilterValueDto;\nimport io.mosip.pms.common.dto.PageResponseDto;\nimport io.mosip.pms.common.dto.SearchDto;\nimport io.mosip.pms.common.entity.MISPLicenseEntity;\nimport io.mosip.pms.common.request.dto.RequestWrapper;\nimport io.mosip.pms.common.response.dto.ResponseWrapper;\nimport io.mosip.pms.device.response.dto.FilterResponseCodeDto;\nimport io.mosip.pms.partner.misp.dto.MISPLicenseRequestDto;\nimport io.mosip.pms.partner.misp.dto.MISPLicenseResponseDto;\nimport io.mosip.pms.partner.misp.dto.MISPLicenseUpdateRequestDto;\nimport io.mosip.pms.partner.misp.service.InfraServiceProviderService;\nimport io.swagger.annotations.Api;\nimport io.swagger.v3.oas.annotations.Operation;\n\n@RestController\n@RequestMapping(value = \"/misps\")\n@Api(tags = { \"MISP License Detail\" })\npublic class MISPLicenseController {\n\n\t@Autowired\n\tInfraServiceProviderService infraProviderService;\n\t\n\t@PreAuthorize(\"hasAnyRole(@authorizedRoles.getPostmisplicense())\")\n\t@PostMapping\n\t@Operation(summary = \"Service to generate license for misp\", description = \"Service to generate license for misp\")\n\tpublic ResponseWrapper generateLicense(@RequestBody @Valid RequestWrapper request){\t\n\t\tResponseWrapper response = new ResponseWrapper();\n\t\tresponse.setResponse(infraProviderService.approveInfraProvider(request.getRequest().getProviderId()));\n\t\treturn response;\n\t}\n\t\n\t@PreAuthorize(\"hasAnyRole(@authorizedRoles.getPutmisplicense())\")\n\t@PutMapping\n\t@Operation(summary = \"Service to update license details of misp\", description = \"Service to update license details of misp\")\n\tpublic ResponseWrapper updateLicenseDetails(@RequestBody @Valid RequestWrapper request){\n\t\tResponseWrapper response = new ResponseWrapper();\n\t\tresponse.setResponse(infraProviderService.updateInfraProvider(request.getRequest().getProviderId(), request.getRequest().getLicenseKey(),\n\t\t\t\trequest.getRequest().getLicenseKeyStatus()));\n\t\treturn response;\n\t}\n\t\n\t@PreAuthorize(\"hasAnyRole(@authorizedRoles.getGetmisplicense())\")\n\t@GetMapping\n\t@Operation(summary = \"Service to get license details of misp\", description = \"Service to get license details of misp\")\n\tpublic ResponseWrapper> getLicenseDetails(){\n\t\tResponseWrapper> response = new ResponseWrapper<>();\n\t\tresponse.setResponse(infraProviderService.getInfraProvider());\n\t\treturn response;\n\t}\n\t\n\t@PreAuthorize(\"hasAnyRole(@authorizedRoles.getGetmisplicensekey())\")\n\t@GetMapping(value = \"/{mispId}/licenseKey\")\n\t@Operation(summary = \"Service to get/regenarate license details of misp\", description = \"Service to get/regenarate license details of misp\")\n\tpublic ResponseWrapper regenarteLicenseKey(@PathVariable @Valid String mispId){\n\t\tResponseWrapper response = new ResponseWrapper<>();\n\t\tresponse.setResponse(infraProviderService.regenerateKey(mispId));\n\t\treturn response;\n\t}\t\n\t\n\t@PostMapping(\"/filtervalues\")\t\n\t@PreAuthorize(\"hasAnyRole(@authorizedRoles.getPostmispfiltervalues())\")\n\t@Operation(summary = \"Service to filter misp details\", description = \"Service to filter misp details\")\n\tpublic ResponseWrapper filterValues(\n\t\t\t@RequestBody @Valid RequestWrapper request) {\n\t\tResponseWrapper responseWrapper = new ResponseWrapper<>();\n\t\tresponseWrapper.setResponse(infraProviderService.filterValues(request.getRequest()));\n\t\treturn responseWrapper;\n\t}\t\n\t\n\t@PostMapping(\"/search\")\n\t@PreAuthorize(\"hasAnyRole(@authorizedRoles.getPostmispsearch())\")\n\t@Operation(summary = \"Service to search misp details\", description = \"Service to search misp details\")\n\tpublic ResponseWrapper> search(\n\t\t\t@RequestBody @Valid RequestWrapper request) {\n\t\tResponseWrapper> responseWrapper = new ResponseWrapper<>();\t\t\n\t\tresponseWrapper.setResponse(infraProviderService.search(request.getRequest()));\n\t\treturn responseWrapper;\n\t}\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/partner/misp/exception/MISPServiceException.java", + "title": "MISPServiceException.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/partner/misp/exception/MISPServiceException.java", + "language": "java", + "content": "package io.mosip.pms.partner.misp.exception;\n\nimport io.mosip.kernel.core.exception.BaseUncheckedException;\nimport io.mosip.kernel.core.logger.spi.Logger;\nimport io.mosip.pms.common.util.PMSLogger;\n\npublic class MISPServiceException extends BaseUncheckedException {\n\t\n\tprivate static final Logger logger = PMSLogger.getLogger(MISPServiceException.class);\n\t\n\t/**\n\t * \n\t */\n\tprivate static final long serialVersionUID = -816564124301416073L;\n\n\tpublic MISPServiceException(String errorCode, String errorMessage)\n\t{\t\t\n\t\tsuper(errorCode, errorMessage);\n\t\tlogger.error(errorCode,errorMessage);\n\t}\n\t\n\tpublic MISPServiceException(String errorCode, String errorMessage, Throwable rootCause)\n\t{\n\t\tsuper(errorCode, errorMessage, rootCause);\n\t\tlogger.error(errorCode,errorMessage);\n\t}\n\n\tpublic MISPServiceException(String errorCode, Exception e) {\n\t\tsuper(errorCode,errorCode,e);\t\t\n\t}\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/partner/misp/service/impl/InfraProviderServiceImpl.java", + "title": "InfraProviderServiceImpl.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/partner/misp/service/impl/InfraProviderServiceImpl.java", + "language": "java", + "content": "package io.mosip.pms.partner.misp.service.impl;\n\nimport java.security.SecureRandom;\nimport java.time.LocalDateTime;\nimport java.util.ArrayList;\nimport java.util.HashMap;\nimport java.util.List;\nimport java.util.Map;\nimport java.util.Optional;\n\nimport org.json.simple.JSONObject;\nimport org.json.simple.parser.JSONParser;\nimport org.json.simple.parser.ParseException;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.beans.factory.annotation.Value;\nimport org.springframework.core.env.Environment;\nimport org.springframework.data.domain.Page;\nimport org.springframework.lang.Nullable;\nimport org.springframework.stereotype.Component;\n\nimport io.mosip.pms.common.constant.ConfigKeyConstants;\nimport io.mosip.pms.common.constant.EventType;\nimport io.mosip.pms.common.dto.FilterData;\nimport io.mosip.pms.common.dto.FilterDto;\nimport io.mosip.pms.common.dto.FilterValueDto;\nimport io.mosip.pms.common.dto.MISPDataPublishDto;\nimport io.mosip.pms.common.dto.PageResponseDto;\nimport io.mosip.pms.common.dto.PolicyPublishDto;\nimport io.mosip.pms.common.dto.SearchDto;\nimport io.mosip.pms.common.dto.SearchFilter;\nimport io.mosip.pms.common.dto.Type;\nimport io.mosip.pms.common.entity.AuthPolicy;\nimport io.mosip.pms.common.entity.MISPLicenseEntity;\nimport io.mosip.pms.common.entity.Partner;\n\nimport io.mosip.pms.common.entity.PartnerPolicyRequest;\nimport io.mosip.pms.common.helper.FilterHelper;\nimport io.mosip.pms.common.helper.SearchHelper;\nimport io.mosip.pms.common.helper.WebSubPublisher;\nimport io.mosip.pms.common.repository.AuthPolicyRepository;\nimport io.mosip.pms.common.repository.MispLicenseRepository;\nimport io.mosip.pms.common.repository.PartnerPolicyRequestRepository;\nimport io.mosip.pms.common.repository.PartnerServiceRepository;\nimport io.mosip.pms.common.util.MapperUtils;\nimport io.mosip.pms.common.util.PageUtils;\nimport io.mosip.pms.common.util.UserDetailUtil;\nimport io.mosip.pms.common.validator.FilterColumnValidator;\nimport io.mosip.pms.device.response.dto.ColumnCodeValue;\nimport io.mosip.pms.device.response.dto.FilterResponseCodeDto;\nimport io.mosip.pms.partner.constant.ErrorCode;\nimport io.mosip.pms.partner.constant.PartnerConstants;\nimport io.mosip.pms.partner.exception.PartnerServiceException;\nimport io.mosip.pms.partner.misp.dto.MISPLicenseResponseDto;\nimport io.mosip.pms.partner.misp.exception.MISPErrorMessages;\nimport io.mosip.pms.partner.misp.exception.MISPServiceException;\nimport io.mosip.pms.partner.misp.service.InfraServiceProviderService;\n\n@Component\npublic class InfraProviderServiceImpl implements InfraServiceProviderService {\n\n\t@Value(\"${mosip.kernel.idgenerator.misp.license-key-length}\")\n\tprivate int licenseKeyLength;\n\n\t@Value(\"${mosip.pmp.misp.license.expiry.period.indays}\")\n\tprivate int mispLicenseExpiryInDays;\n\n\t@Autowired\n\tMispLicenseRepository mispLicenseRepository;\n\n\t@Autowired\n\tPartnerServiceRepository partnerRepository;\n\n\t@Autowired\n\tprivate WebSubPublisher webSubPublisher;\n\n\t@Autowired\n\tprivate Environment environment;\n\n\t@Autowired\n\tSearchHelper searchHelper;\n\n\t@Autowired\n\tFilterColumnValidator filterColumnValidator;\n\n\t@Autowired\n\tFilterHelper filterHelper;\n\n\t@Autowired\n\tprivate PageUtils pageUtils;\n\n\t@Autowired\n\tprivate PartnerPolicyRequestRepository partnerPolicyRequestRepository;\n\n\t@Autowired\n\tprivate AuthPolicyRepository authPolicyRepository;\n\n\tpublic static final String APPROVED_STATUS = \"approved\";\n\tpublic static final String REJECTED_STATUS = \"rejected\";\n\tpublic static final String ACTIVE_STATUS = \"active\";\n\tpublic static final String NOTACTIVE_STATUS = \"de-active\";\n\tpublic static final String ACTIVE = \"ACTIVE\";\n\tpublic static final String NOTACTIVE = \"NOT_ACTIVE\";\n\n\t/**\n\t *\n\t */\n\t@Override\n\tpublic MISPLicenseResponseDto approveInfraProvider(String mispId) {\n\t\tvalidateLoggedInUserAuthorization(mispId);\n\t\tList mispLicenseFromDb = mispLicenseRepository.findByMispId(mispId);\n\t\tif (!mispLicenseFromDb.isEmpty()) {\n\t\t\tthrow new MISPServiceException(MISPErrorMessages.MISP_LICENSE_KEY_EXISTS.getErrorCode(),\n\t\t\t\t\tMISPErrorMessages.MISP_LICENSE_KEY_EXISTS.getErrorMessage());\n\t\t}\n\t\tOptional partnerFromDb = partnerRepository.findById(mispId);\n\t\tif (partnerFromDb.isEmpty()) {\n\t\t\tthrow new MISPServiceException(MISPErrorMessages.MISP_ID_NOT_EXISTS.getErrorCode(),\n\t\t\t\t\tMISPErrorMessages.MISP_ID_NOT_EXISTS.getErrorMessage());\n\t\t}\n\t\tif (!partnerFromDb.get().getPartnerTypeCode()\n\t\t\t\t.equalsIgnoreCase(environment.getProperty(ConfigKeyConstants.MISP_PARTNER_TYPE, \"MISP_Partner\"))) {\n\t\t\tthrow new MISPServiceException(MISPErrorMessages.MISP_ID_NOT_VALID.getErrorCode(),\n\t\t\t\t\tMISPErrorMessages.MISP_ID_NOT_VALID.getErrorMessage());\n\t\t}\n\t\tif (!partnerFromDb.get().getIsActive()) {\n\t\t\tthrow new MISPServiceException(MISPErrorMessages.MISP_IS_INACTIVE.getErrorCode(),\n\t\t\t\t\tMISPErrorMessages.MISP_IS_INACTIVE.getErrorMessage());\n\t\t}\n\n\t\tList approvedPolicyMappedReq = partnerPolicyRequestRepository.findByPartnerId(mispId);\n\t\tOptional mispPolicyFromDb = Optional.empty();\n\t\tif(!approvedPolicyMappedReq.isEmpty()) {\n\t\t\tif(!approvedPolicyMappedReq.stream().allMatch(p->p.getStatusCode().equalsIgnoreCase(APPROVED_STATUS))){\n\t\t\t\tthrow new MISPServiceException(MISPErrorMessages.MISP_POLICY_NOT_APPROVED.getErrorCode(),\n\t\t\t\t\t\tMISPErrorMessages.MISP_POLICY_NOT_APPROVED.getErrorMessage());\n\t\t\t}\n\n\t\t\tmispPolicyFromDb = authPolicyRepository.findById(approvedPolicyMappedReq.get(0).getPolicyId());\n\t\t\tif(mispPolicyFromDb.isEmpty()) {\n\t\t\t\tthrow new MISPServiceException(MISPErrorMessages.MISP_POLICY_NOT_EXISTS.getErrorCode(),\n\t\t\t\t\t\tMISPErrorMessages.MISP_POLICY_NOT_EXISTS.getErrorMessage());\n\t\t\t}\n\t\t}\n\n\t\tString policyId = mispPolicyFromDb.isPresent()?mispPolicyFromDb.get().getId():null;\n\t\tMISPLicenseEntity newLicenseKey = generateLicense(mispId, policyId);\n\t\tMISPLicenseResponseDto response = new MISPLicenseResponseDto();\n\t\tresponse.setLicenseKey(newLicenseKey.getLicenseKey());\n\t\tresponse.setLicenseKeyExpiry(newLicenseKey.getValidToDate());\n\t\tresponse.setLicenseKeyStatus(\"Active\");\n\t\tresponse.setProviderId(mispId);\n\t\tif(mispPolicyFromDb.isPresent()) {\n\t\t\tnotify(MapperUtils.mapDataToPublishDto(newLicenseKey), MapperUtils.mapPolicyToPublishDto(mispPolicyFromDb.get(),\n\t\t\t\t\tgetPolicyObject(mispPolicyFromDb.get().getPolicyFileId())), EventType.MISP_LICENSE_GENERATED);\n\t\t}\n\t\telse {\n\t\t\tnotify(MapperUtils.mapDataToPublishDto(newLicenseKey), null, EventType.MISP_LICENSE_GENERATED);\n\t\t}\n\n\t\treturn response;\n\t}\n\n\t/**\n\t *\n\t * @param policy\n\t * @return\n\t */\n\tprivate JSONObject getPolicyObject(String policy) {\n\t\tJSONParser parser = new JSONParser();\n\t\tString error = null;\n\t\ttry {\n\t\t\treturn ((JSONObject) parser.parse(policy));\n\t\t} catch (ParseException e) {\n\t\t\terror = e.getMessage();\n\t\t}\n\t\tthrow new MISPServiceException(ErrorCode.POLICY_PARSING_ERROR.getErrorCode(),\n\t\t\t\tErrorCode.POLICY_PARSING_ERROR.getErrorMessage() + error);\n\t}\n\n\t/**\n\t *\n\t * @return\n\t */\n\tprivate String generateLicenseKey() {\n\t\tString chrs = \"0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\";\n\t\tSecureRandom secureRandom = new SecureRandom();\n\t\tString licenseKey = secureRandom.ints(licenseKeyLength, 0, chrs.length()).mapToObj(i -> chrs.charAt(i))\n\t\t\t\t.collect(StringBuilder::new, StringBuilder::append, StringBuilder::append).toString();\n\t\treturn licenseKey;\n\t}\n\n\t/**\n\t *\n\t */\n\t@Override\n\tpublic MISPLicenseResponseDto updateInfraProvider(String id, String licenseKey, String status) {\n\t\tif (!(status.toLowerCase().equals(ACTIVE_STATUS) || status.toLowerCase().equals(NOTACTIVE_STATUS))) {\n\t\t\tthrow new MISPServiceException(MISPErrorMessages.MISP_STATUS_CODE_EXCEPTION.getErrorCode(),\n\t\t\t\t\tMISPErrorMessages.MISP_STATUS_CODE_EXCEPTION.getErrorMessage());\n\t\t}\n\n\t\tMISPLicenseEntity mispLicenseFromDb = mispLicenseRepository.findByIdAndKey(id, licenseKey);\n\t\tif (mispLicenseFromDb == null) {\n\t\t\tthrow new MISPServiceException(MISPErrorMessages.MISP_LICENSE_KEY_NOT_ASSOCIATED_MISP_ID.getErrorCode(),\n\t\t\t\t\tMISPErrorMessages.MISP_LICENSE_KEY_NOT_ASSOCIATED_MISP_ID.getErrorMessage());\n\t\t}\n\t\tmispLicenseFromDb.setUpdatedBy(getLoggedInUserId());\n\t\tmispLicenseFromDb.setUpdatedDateTime(LocalDateTime.now());\n\t\tmispLicenseFromDb.setIsActive(status.toLowerCase().equals(ACTIVE_STATUS) ? true : false);\n\t\tmispLicenseRepository.save(mispLicenseFromDb);\n\t\tMISPLicenseResponseDto response = new MISPLicenseResponseDto();\n\t\tresponse.setLicenseKey(mispLicenseFromDb.getLicenseKey());\n\t\tresponse.setLicenseKeyExpiry(mispLicenseFromDb.getValidToDate());\n\t\tresponse.setLicenseKeyStatus(mispLicenseFromDb.getIsActive() ? ACTIVE_STATUS : NOTACTIVE_STATUS);\n\t\tresponse.setProviderId(mispLicenseFromDb.getMispId());\n\t\tnotify(MapperUtils.mapDataToPublishDto(mispLicenseFromDb), EventType.MISP_LICENSE_UPDATED);\n\t\treturn response;\n\n\t}\n\n\t/**\n\t *\n\t */\n\t@Override\n\tpublic List getInfraProvider() {\n\t\treturn mispLicenseRepository.findAll();\n\t}\n\n\t/**\n\t *\n\t * @param mispId\n\t * @return\n\t */\n\tprivate MISPLicenseEntity generateLicense(String mispId,@Nullable String policyId) {\n\t\tMISPLicenseEntity entity = new MISPLicenseEntity();\n\t\tentity.setMispId(mispId);\n\t\tentity.setLicenseKey(generateLicenseKey());\n\t\tentity.setValidFromDate(LocalDateTime.now());\n\t\tentity.setValidToDate(LocalDateTime.now().plusDays(mispLicenseExpiryInDays));\n\t\tentity.setCreatedBy(getLoggedInUserId());\n\t\tentity.setCreatedDateTime(LocalDateTime.now());\n\t\tentity.setIsActive(true);\n\t\tentity.setIsDeleted(false);\n\t\tentity.setPolicyId(policyId);\n\t\tmispLicenseRepository.save(entity);\n\t\treturn entity;\n\t}\n\n\t/**\n\t *\n\t */\n\t@Override\n\tpublic MISPLicenseResponseDto regenerateKey(String mispId) {\n\t\tOptional partnerFromDb = partnerRepository.findById(mispId);\n\t\tif (partnerFromDb.isEmpty()) {\n\t\t\tthrow new MISPServiceException(MISPErrorMessages.MISP_ID_NOT_EXISTS.getErrorCode(),\n\t\t\t\t\tMISPErrorMessages.MISP_ID_NOT_EXISTS.getErrorMessage());\n\t\t}\n\t\tif (!partnerFromDb.get().getIsActive()) {\n\t\t\tthrow new MISPServiceException(MISPErrorMessages.MISP_IS_INACTIVE.getErrorCode(),\n\t\t\t\t\tMISPErrorMessages.MISP_IS_INACTIVE.getErrorMessage());\n\t\t}\n\t\tList mispValidLicenses = mispLicenseRepository.findByMispIdandExpirydate(mispId);\n\t\tif(mispLicenseRepository.findByMispId(mispId).isEmpty()) {\n\t\t\tthrow new MISPServiceException(MISPErrorMessages.MISP_LICENSE_KEY_NOT_ASSOCIATED_MISP_ID.getErrorCode(),\n\t\t\t\t\tMISPErrorMessages.MISP_LICENSE_KEY_NOT_ASSOCIATED_MISP_ID.getErrorMessage());\n\t\t}\n\t\tList approvedPolicyMappedReq = partnerPolicyRequestRepository.findByPartnerId(mispId);\n\t\tPartnerPolicyRequest mispPolicy= new PartnerPolicyRequest();\n\t\tString policyId = null;\n\t\tif (!approvedPolicyMappedReq.isEmpty()) {\n\t\t\tmispPolicy = approvedPolicyMappedReq.get(0);\n\t\t\tif (mispPolicy.getPolicyId() != null && !mispPolicy.getPolicyId().isBlank()) {\n\t\t\t\tpolicyId = mispPolicy.getPolicyId();\n\t\t\t}\n\t\t}\n\t\tMISPLicenseResponseDto response = new MISPLicenseResponseDto();\n\t\tif (mispValidLicenses.isEmpty()) {\n\t\t\tMISPLicenseEntity newLicenseKey = generateLicense(mispId, policyId);\n\t\t\tresponse.setLicenseKey(newLicenseKey.getLicenseKey());\n\t\t\tresponse.setLicenseKeyExpiry(newLicenseKey.getValidToDate());\n\t\t\tresponse.setLicenseKeyStatus(\"Active\");\n\t\t\tresponse.setProviderId(mispId);\n\n\t\t\tOptional mispPolicyFromDb = Optional.empty();\n\t\t\tif(!approvedPolicyMappedReq.isEmpty()) {\n\t\t\t\tif(!mispPolicy.getStatusCode().equalsIgnoreCase(APPROVED_STATUS)){\n\t\t\t\t\tthrow new MISPServiceException(MISPErrorMessages.MISP_POLICY_NOT_APPROVED.getErrorCode(),\n\t\t\t\t\t\t\tMISPErrorMessages.MISP_POLICY_NOT_APPROVED.getErrorMessage());\n\t\t\t\t}\n\n\t\t\t\tmispPolicyFromDb = authPolicyRepository.findById(mispPolicy.getPolicyId());\n\t\t\t\tif(mispPolicyFromDb.isEmpty()) {\n\t\t\t\t\tthrow new MISPServiceException(MISPErrorMessages.MISP_POLICY_NOT_EXISTS.getErrorCode(),\n\t\t\t\t\t\t\tMISPErrorMessages.MISP_POLICY_NOT_EXISTS.getErrorMessage());\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(mispPolicyFromDb.isPresent()) {\n\t\t\t\tnotify(MapperUtils.mapDataToPublishDto(newLicenseKey), MapperUtils.mapPolicyToPublishDto(mispPolicyFromDb.get(),\n\t\t\t\t\t\tgetPolicyObject(mispPolicyFromDb.get().getPolicyFileId())), EventType.MISP_LICENSE_UPDATED);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tnotify(MapperUtils.mapDataToPublishDto(newLicenseKey), EventType.MISP_LICENSE_UPDATED);\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tresponse.setLicenseKey(mispValidLicenses.get(0).getLicenseKey());\n\t\t\tresponse.setLicenseKeyExpiry(mispValidLicenses.get(0).getValidToDate());\n\t\t\tresponse.setLicenseKeyStatus(\"Active\");\n\t\t\tresponse.setProviderId(mispId);\n\t\t}\n\n\n\t\treturn response;\n\t}\n\n\t/**\n\t *\n\t * @return\n\t */\n\tpublic String getLoggedInUserId() {\n\t\treturn UserDetailUtil.getLoggedInUserId();\n\t}\n\n\t/**\n\t *\n\t * @param dataToPublish\n\t * @param eventType\n\t */\n\tprivate void notify(MISPDataPublishDto dataToPublish, EventType eventType) {\n\t\tType type = new Type();\n\t\ttype.setName(\"InfraProviderServiceImpl\");\n\t\ttype.setNamespace(\"io.mosip.pmp.partner.service.impl.InfraProviderServiceImpl\");\n\t\tMap data = new HashMap<>();\n\t\tdata.put(\"mispLicenseData\", dataToPublish);\n\t\twebSubPublisher.notify(eventType, data, type);\n\t}\n\n\tprivate void notify(MISPDataPublishDto dataToPublish, PolicyPublishDto policyDataToPublish,EventType eventType) {\n\t\tType type = new Type();\n\t\ttype.setName(\"InfraProviderServiceImpl\");\n\t\ttype.setNamespace(\"io.mosip.pmp.partner.service.impl.InfraProviderServiceImpl\");\n\t\tMap data = new HashMap<>();\n\t\tdata.put(\"mispLicenseData\", dataToPublish);\n\t\tif (dataToPublish != null) {\n\t\t\tdata.put(PartnerConstants.MISP_DATA, dataToPublish);\n\t\t}\n\t\tif (policyDataToPublish != null) {\n\t\t\tdata.put(PartnerConstants.POLICY_DATA, policyDataToPublish);\n\t\t}\n\t\twebSubPublisher.notify(eventType, data, type);\n\t}\n\n\t@Override\n\tpublic FilterResponseCodeDto filterValues(FilterValueDto filterValueDto) {\n\t\tFilterResponseCodeDto filterResponseDto = new FilterResponseCodeDto();\n\t\tList columnValueList = new ArrayList<>();\n\t\tif (searchHelper.isLoggedInUserFilterRequired()) {\n\t\t\tSearchFilter loggedInUserFilterDto = new SearchFilter();\n\t\t\tloggedInUserFilterDto.setColumnName(\"misp_id\");\n\t\t\tloggedInUserFilterDto.setValue(getLoggedInUserId());\n\t\t\tloggedInUserFilterDto.setType(\"equals\");\n\t\t\tfilterValueDto.getOptionalFilters().add(loggedInUserFilterDto);\n\t\t}\n\t\tif (filterColumnValidator.validate(FilterDto.class, filterValueDto.getFilters(), MISPLicenseEntity.class)) {\n\t\t\tfor (FilterDto filterDto : filterValueDto.getFilters()) {\n\t\t\t\tList filterValues = filterHelper.filterValuesWithCode(MISPLicenseEntity.class, filterDto, filterValueDto, \"mispId\");\n\t\t\t\tfilterValues.forEach(filterValue -> {\n\t\t\t\t\tColumnCodeValue columnValue = new ColumnCodeValue();\n\t\t\t\t\tcolumnValue.setFieldCode(filterValue.getFieldCode());\n\t\t\t\t\tcolumnValue.setFieldID(filterDto.getColumnName());\n\t\t\t\t\tcolumnValue.setFieldValue(filterValue.getFieldValue());\n\t\t\t\t\tcolumnValueList.add(columnValue);\n\t\t\t\t});\n\t\t\t}\n\t\t\tfilterResponseDto.setFilters(columnValueList);\n\t\t}\n\t\treturn filterResponseDto;\n\t}\n\n\t@Override\n\tpublic PageResponseDto search(SearchDto dto) {\n\t\tPageResponseDto pageDto = new PageResponseDto<>();\n\t\tPage page = searchHelper.search(MISPLicenseEntity.class, dto, \"mispId\");\n\t\tif (page.getContent() != null && !page.getContent().isEmpty()) {\n\t\t\tpageDto = pageUtils.sortPage(page.getContent(), dto.getSort(), dto.getPagination(),\n\t\t\t\t\tpage.getTotalElements());\n\t\t}\n\t\treturn pageDto;\n\t}\n\n\t/**\n\t * validates the loggedInUser authorization\n\t * @param loggedInUserId\n\t */\n\tpublic void validateLoggedInUserAuthorization(String loggedInUserId) {\n\t\tif(searchHelper.isLoggedInUserFilterRequired() && !loggedInUserId.equals(getLoggedInUserId())) {\n\t\t\tthrow new PartnerServiceException(ErrorCode.LOGGEDIN_USER_NOT_AUTHORIZED.getErrorCode(),\n\t\t\t\t\tErrorCode.LOGGEDIN_USER_NOT_AUTHORIZED.getErrorMessage());\n\t\t}\n\t}\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/partner/service/impl/RoleServiceImpl.java", + "title": "RoleServiceImpl.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/partner/service/impl/RoleServiceImpl.java", + "language": "java", + "content": "package io.mosip.pms.partner.service.impl;\n\nimport java.util.Arrays;\nimport org.springframework.beans.factory.annotation.Value;\nimport org.springframework.stereotype.Service;\nimport org.springframework.transaction.annotation.Transactional;\n\nimport io.mosip.pms.common.dto.RoleExtnDto;\nimport io.mosip.pms.partner.service.RoleService;\n\n@Service\n@Transactional\npublic class RoleServiceImpl implements RoleService {\n\n\t\n\t@Value(\"${mosip.pms.ui.required.roles}\")\n\tprivate String requiredRoles;\n\t\n\t@Override\n\tpublic RoleExtnDto getUIRequiredRoles() {\n\t\tRoleExtnDto roleExtnDto = new RoleExtnDto();\n\t\troleExtnDto.setRoles(Arrays.asList(requiredRoles.split(\",\")));\n\t\treturn roleExtnDto;\n\t}\n\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/user/controller/UserController.java", + "title": "UserController.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/user/controller/UserController.java", + "language": "java", + "content": "package io.mosip.pms.user.controller;\n\nimport javax.validation.Valid;\n\nimport io.mosip.pms.common.response.dto.ResponseWrapperV2;\nimport io.mosip.pms.partner.dto.UserDetailsDto;\nimport io.swagger.v3.oas.annotations.Operation;\nimport io.swagger.v3.oas.annotations.media.Content;\nimport io.swagger.v3.oas.annotations.media.Schema;\nimport io.swagger.v3.oas.annotations.responses.ApiResponse;\nimport io.swagger.v3.oas.annotations.responses.ApiResponses;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.beans.factory.annotation.Value;\nimport org.springframework.security.access.prepost.PreAuthorize;\nimport org.springframework.web.bind.annotation.*;\nimport io.mosip.pms.common.request.dto.RequestWrapper;\nimport io.mosip.pms.common.response.dto.ResponseWrapper;\nimport io.mosip.pms.partner.dto.MosipUserDto;\nimport io.mosip.pms.partner.dto.UserRegistrationRequestDto;\nimport io.mosip.pms.user.service.UserManagementService;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\n@RestController\npublic class UserController {\n\n\t@Value(\"${mosip.pms.oidc.clients.grantTypes:authorization_code}\")\n\tprivate String grantTypes;\n\n\t@Value(\"${mosip.pms.oidc.clients.clientAuthMethods:private_key_jwt}\")\n\tprivate String clientAuthMethods;\n\n\t@Value(\"${mosip.pms.session.inactivity.timer}\")\n\tprivate String inActivityTimer;\n\n\t@Value(\"${mosip.pms.session.inactivity.prompt.timer}\")\n\tprivate String inActivityPromptTimer;\n\n\t@Value(\"${mosip.pms.axios.timeout}\")\n\tprivate String axiosTimeout;\n\n\t@Value(\"${mosip.pms.expiry.date.max.year}\")\n\tprivate String maxAllowedExpiryYear;\n\n\t@Value(\"${mosip.pms.created.date.max.year}\")\n\tprivate String maxAllowedCreatedYear;\n\n\t@Value(\"${mosip.pms.pagination.items.per.page}\")\n\tprivate String itemsPerPage;\n\n\t@Value(\"${mosip.pms.api.id.configs.get}\")\n\tprivate String getConfigsId;\n\n\t@Value(\"${mosip.pms.ca.signed.partner.certificate.available}\")\n\tprivate String isCaSignedPartnerCertificateAvailable;\n\n\t@Value(\"${mosip.pms.oidc.client.available}\")\n\tprivate String isOidcClientAvailable;\n\n\t@Value(\"${mosip.pms.root.and.intermediate.certificates.available}\")\n\tprivate String isRootIntermediateCertAvailable;\n\n\tpublic static final String VERSION = \"1.0\";\n\n\t@Autowired\n\tUserManagementService userManagementService;\n\n\t@PostMapping(value = \"/users\")\n\t@PreAuthorize(\"hasAnyRole('MISP_PARTNER','PARTNER_ADMIN','AUTH_PARTNER','CREDENTIAL_PARTNER','ONLINE_VERIFICATION_PARTNER','DEVICE_PROVIDER','FTM_PROVIDER','ABIS_PARTNER','MANUAL_ADJUDICATION','SDK_PARTNER')\")\n\tpublic ResponseWrapper registerUser(\n\t\t\t@RequestBody @Valid RequestWrapper request) {\n\t\tResponseWrapper response = new ResponseWrapper();\n\t\tresponse.setResponse(userManagementService.registerUser(request.getRequest()));\n\t\treturn response;\n\n\t}\n\n\t@PreAuthorize(\"hasAnyRole(@authorizedRoles.getUserconsent())\")\n\t@PostMapping(value = \"users/user-consent\")\n\t@Operation(summary = \"Added in release-1.2.2.0, This endpoint saves the user's consent related to data captured by the PMS portal\",\n\t\t\tdescription = \"This endpoint saves the user's consent related to data captured by the PMS portal, which is requested only once after the user's first login. Once provided, the consent will not be asked again. It is configured for all Partner Type roles.\")\n\t@ApiResponses(value = {@ApiResponse(responseCode = \"200\", description = \"OK\"),\n\t\t\t@ApiResponse(responseCode = \"401\", description = \"Unauthorized\", content = @Content(schema = @Schema(hidden = true))),\n\t\t\t@ApiResponse(responseCode = \"403\", description = \"Forbidden\", content = @Content(schema = @Schema(hidden = true)))})\n\tpublic ResponseWrapperV2 saveUserConsent() {\n\t\treturn userManagementService.saveUserConsent();\n\t}\n\n\t@PreAuthorize(\"hasAnyRole(@authorizedRoles.getUserconsent())\")\n\t@GetMapping(value = \"users/user-consent\")\n\t@Operation(summary = \"Added in release-1.2.2.0, This endpoint fetches the user's consent related to the data captured by PMS\",\n\t\t\tdescription = \"This endpoint fetches the user's consent related to the data captured by PMS. The consent is requested only once after the user's first login, and won't be asked again if already given. It is configured for all Partner Type roles.\")\n\t@ApiResponses(value = {@ApiResponse(responseCode = \"200\", description = \"OK\"),\n\t\t\t@ApiResponse(responseCode = \"401\", description = \"Unauthorized\", content = @Content(schema = @Schema(hidden = true))),\n\t\t\t@ApiResponse(responseCode = \"403\", description = \"Forbidden\", content = @Content(schema = @Schema(hidden = true)))})\n\tpublic ResponseWrapperV2 isUserConsentGiven() {\n\t\treturn userManagementService.isUserConsentGiven();\n\t}\n\n\t@GetMapping(value = \"/system-config\")\n\t@Operation(summary = \"Added in release-1.2.2.0, This endpoint fetches the configurations for PMS\", description = \"This endpoint fetches the configurations for PMS and sends them to the UI. No roles are required for access.\")\n\t@ApiResponses(value = {@ApiResponse(responseCode = \"200\", description = \"OK\"),\n\t\t\t@ApiResponse(responseCode = \"401\", description = \"Unauthorized\", content = @Content(schema = @Schema(hidden = true))),\n\t\t\t@ApiResponse(responseCode = \"403\", description = \"Forbidden\", content = @Content(schema = @Schema(hidden = true)))})\n\tpublic ResponseWrapperV2> getSystemConfig() {\n\t\tResponseWrapperV2> responseWrapper = new ResponseWrapperV2<>();\n\t\tresponseWrapper.setId(getConfigsId);\n\t\tresponseWrapper.setVersion(VERSION);\n\t\tMap configMap = new HashMap();\n\t\tconfigMap.put(\"grantTypes\", grantTypes);\n\t\tconfigMap.put(\"clientAuthMethods\", clientAuthMethods);\n\t\tconfigMap.put(\"inActivityTimer\", inActivityTimer);\n\t\tconfigMap.put(\"inActivityPromptTimer\", inActivityPromptTimer);\n\t\tconfigMap.put(\"axiosTimeout\", axiosTimeout);\n\t\tconfigMap.put(\"maxAllowedExpiryYear\", maxAllowedExpiryYear);\n\t\tconfigMap.put(\"maxAllowedCreatedYear\", maxAllowedCreatedYear);\n\t\tconfigMap.put(\"itemsPerPage\", itemsPerPage);\n\t\tconfigMap.put(\"isCaSignedPartnerCertificateAvailable\", isCaSignedPartnerCertificateAvailable);\n\t\tconfigMap.put(\"isOidcClientAvailable\", isOidcClientAvailable);\n\t\tconfigMap.put(\"isRootIntermediateCertAvailable\", isRootIntermediateCertAvailable);\n\t\tresponseWrapper.setResponse(configMap);\n\t\tSystem.out.println(responseWrapper);\n\t\treturn responseWrapper;\n\t}\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/user/service/impl/UserManagementServiceImpl.java", + "title": "UserManagementServiceImpl.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/user/service/impl/UserManagementServiceImpl.java", + "language": "java", + "content": "package io.mosip.pms.user.service.impl;\n\nimport io.mosip.kernel.core.authmanager.authadapter.model.AuthUserDetails;\nimport io.mosip.kernel.core.logger.spi.Logger;\nimport io.mosip.pms.common.dto.UserDetails;\nimport io.mosip.pms.common.entity.Partner;\nimport io.mosip.pms.common.repository.PartnerServiceRepository;\nimport io.mosip.pms.common.repository.UserDetailsRepository;\nimport io.mosip.pms.common.response.dto.ResponseWrapperV2;\nimport io.mosip.pms.common.util.PMSLogger;\nimport io.mosip.pms.partner.constant.ErrorCode;\nimport io.mosip.pms.partner.dto.UserDetailsDto;\nimport io.mosip.pms.partner.exception.PartnerServiceException;\nimport io.mosip.pms.partner.util.MultiPartnerUtil;\nimport io.mosip.pms.partner.util.PartnerUtil;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.beans.factory.annotation.Value;\nimport org.springframework.security.core.context.SecurityContextHolder;\nimport org.springframework.stereotype.Service;\n\nimport io.mosip.pms.partner.dto.MosipUserDto;\nimport io.mosip.pms.partner.dto.UserRegistrationRequestDto;\nimport io.mosip.pms.partner.keycloak.service.KeycloakImpl;\nimport io.mosip.pms.user.service.UserManagementService;\n\nimport java.time.LocalDateTime;\nimport java.util.List;\nimport java.util.Optional;\n\n@Service\npublic class UserManagementServiceImpl implements UserManagementService{\n\n\tprivate static final Logger LOGGER = PMSLogger.getLogger(UserManagementServiceImpl.class);\n\tpublic static final String YES = \"YES\";\n\tpublic static final String VERSION = \"1.0\";\n\n\t@Value(\"${mosip.pms.api.id.user.consent.post}\")\n\tprivate String postSaveUserConsentGivenId;\n\n\t@Value(\"${mosip.pms.api.id.user.consent.get}\")\n\tprivate String getUserConsentGivenId;\n\n\t@Autowired\n\tKeycloakImpl keycloakService;\n\n\t@Autowired\n\tUserDetailsRepository userDetailsRepository;\n\n\t@Autowired\n\tPartnerServiceRepository partnerRepository;\n\n\tprivate AuthUserDetails authUserDetails() {\n\t\treturn (AuthUserDetails) SecurityContextHolder.getContext().getAuthentication().getPrincipal();\n\t}\n\n\tprivate String getUserId() {\n\t\tString userId = authUserDetails().getUserId();\n\t\treturn userId;\n\t}\n\n\tprivate String getUserBy() {\n\t\tString crBy = authUserDetails().getMail();\n\t\treturn crBy;\n\t}\n\n\t@Override\n\tpublic MosipUserDto registerUser(UserRegistrationRequestDto userToBeRegistred) {\n\t\treturn keycloakService.registerUser(userToBeRegistred);\n\t}\n\n\t@Override\n\tpublic ResponseWrapperV2 saveUserConsent() {\n\t\tResponseWrapperV2 responseWrapper = new ResponseWrapperV2<>();\n\t\ttry {\n\t\t\tString userId = getUserId();\n\t\t\tList partnerList = partnerRepository.findByUserId(userId);\n\t\t\tif (!partnerList.isEmpty()) {\n\t\t\t\tUserDetails userDetails = new UserDetails();\n\n\t\t\t\tLocalDateTime nowDate = LocalDateTime.now();\n\t\t\t\tuserDetails.setConsentGiven(YES);\n\t\t\t\tuserDetails.setConsentGivenDtimes(nowDate);\n\n\t\t\t\tOptional optionalEntity = userDetailsRepository.findByUserId(userId);\n\t\t\t\tif (optionalEntity.isPresent()) {\n\t\t\t\t\tUserDetails entity = optionalEntity.get();\n\t\t\t\t\tuserDetails.setId(entity.getId());\n\t\t\t\t\tuserDetails.setUpdBy(this.getUserBy());\n\t\t\t\t\tuserDetails.setUpdDtimes(nowDate);\n\t\t\t\t\tuserDetails.setCrBy(entity.getCrBy());\n\t\t\t\t\tuserDetails.setCrDtimes(entity.getCrDtimes());\n\t\t\t\t\tuserDetails.setUserId(entity.getUserId());\n\t\t\t\t} else {\n\t\t\t\t\tuserDetails.setId(PartnerUtil.generateUUID(\"id\", \"\", 36));\n\t\t\t\t\tuserDetails.setCrBy(this.getUserBy());\n\t\t\t\t\tuserDetails.setCrDtimes(nowDate);\n\t\t\t\t\tuserDetails.setUserId(userId);\n\t\t\t\t}\n\t\t\t\tUserDetails respEntity = userDetailsRepository.save(userDetails);\n\t\t\t\tLOGGER.info(\"sessionId\", \"idType\", \"id\", \"saving user consent data for user id : \", userId);\n\n\t\t\t\tUserDetailsDto userDetailsDto = new UserDetailsDto();\n\t\t\t\tuserDetailsDto.setConsentGiven(true);\n\t\t\t\tuserDetailsDto.setUserId(respEntity.getUserId());\n\t\t\t\tuserDetailsDto.setConsentGivenDateTime(respEntity.getConsentGivenDtimes());\n\n\t\t\t\tresponseWrapper.setResponse(userDetailsDto);\n\t\t\t} else {\n\t\t\t\tLOGGER.info(\"sessionId\", \"idType\", \"id\", \"User id does not exists.\");\n\t\t\t\tthrow new PartnerServiceException(ErrorCode.USER_ID_NOT_EXISTS.getErrorCode(),\n\t\t\t\t\t\tErrorCode.USER_ID_NOT_EXISTS.getErrorMessage());\n\t\t\t}\n\t\t} catch (PartnerServiceException ex) {\n\t\t\tLOGGER.info(\"sessionId\", \"idType\", \"id\", \"In saveUserConsentGiven method of UserManagementServiceImpl - \" + ex.getMessage());\n\t\t\tresponseWrapper.setErrors(MultiPartnerUtil.setErrorResponse(ex.getErrorCode(), ex.getErrorText()));\n\t\t} catch (Exception e) {\n\t\t\tLOGGER.debug(\"sessionId\", \"idType\", \"id\", e.getStackTrace());\n\t\t\tLOGGER.error(\"sessionId\", \"idType\", \"id\", \"In saveUserConsentGiven method of UserManagementServiceImpl - \" + e.getMessage());\n\t\t\tString errorCode = ErrorCode.PMS_CONSENT_UNABLE_TO_ADD.getErrorCode();\n\t\t\tString errorMessage = ErrorCode.PMS_CONSENT_UNABLE_TO_ADD.getErrorMessage();\n\t\t\tresponseWrapper.setErrors(MultiPartnerUtil.setErrorResponse(errorCode, errorMessage));\n\t\t}\n\t\tresponseWrapper.setId(postSaveUserConsentGivenId);\n\t\tresponseWrapper.setVersion(VERSION);\n\t\treturn responseWrapper;\n\t}\n\n\t@Override\n\tpublic ResponseWrapperV2 isUserConsentGiven() {\n\t\tResponseWrapperV2 responseWrapper = new ResponseWrapperV2<>();\n\t\ttry {\n\t\t\tString userId = getUserId();\n\t\t\tList partnerList = partnerRepository.findByUserId(userId);\n\t\t\tif (!partnerList.isEmpty()) {\n\t\t\t\tUserDetailsDto userDetailsDto = new UserDetailsDto();\n\t\t\t\tuserDetailsDto.setUserId(userId);\n\t\t\t\tLOGGER.info(\"sessionId\", \"idType\", \"id\", \"fetching consent status from db for user :\", userId);\n\t\t\t\tOptional optionalEntity = userDetailsRepository.findByUserId(userId);\n\t\t\t\tif (optionalEntity.isPresent()) {\n\t\t\t\t\tUserDetails entity = optionalEntity.get();\n\t\t\t\t\tif (entity.getConsentGiven().equals(YES)) {\n\t\t\t\t\t\tuserDetailsDto.setConsentGiven(true);\n\t\t\t\t\t\tuserDetailsDto.setConsentGivenDateTime(entity.getConsentGivenDtimes());\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tresponseWrapper.setResponse(userDetailsDto);\n\t\t\t} else {\n\t\t\t\tLOGGER.info(\"sessionId\", \"idType\", \"id\", \"User id does not exists.\");\n\t\t\t\tthrow new PartnerServiceException(ErrorCode.USER_ID_NOT_EXISTS.getErrorCode(),\n\t\t\t\t\t\tErrorCode.USER_ID_NOT_EXISTS.getErrorMessage());\n\t\t\t}\n\t\t} catch (PartnerServiceException ex) {\n\t\t\tLOGGER.info(\"sessionId\", \"idType\", \"id\", \"In isUserConsentGiven method of UserManagementServiceImpl - \" + ex.getMessage());\n\t\t\tresponseWrapper.setErrors(MultiPartnerUtil.setErrorResponse(ex.getErrorCode(), ex.getErrorText()));\n\t\t} catch (Exception e) {\n\t\t\tLOGGER.debug(\"sessionId\", \"idType\", \"id\", e.getStackTrace());\n\t\t\tLOGGER.error(\"sessionId\", \"idType\", \"id\", \"In isUserConsentGiven method of UserManagementServiceImpl - \" + e.getMessage());\n\t\t\tString errorCode = ErrorCode.PMS_CONSENT_ERR.getErrorCode();\n\t\t\tString errorMessage = ErrorCode.PMS_CONSENT_ERR.getErrorMessage();\n\t\t\tresponseWrapper.setErrors(MultiPartnerUtil.setErrorResponse(errorCode, errorMessage));\n\t\t}\n\t\tresponseWrapper.setId(getUserConsentGivenId);\n\t\tresponseWrapper.setVersion(VERSION);\n\t\treturn responseWrapper;\n\t}\n\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/pms-common/src/main/java/io/mosip/pms/common/constant/ApiAccessibleExceptionConstant.java", + "title": "ApiAccessibleExceptionConstant.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/pms-common/src/main/java/io/mosip/pms/common/constant/ApiAccessibleExceptionConstant.java", + "language": "java", + "content": "package io.mosip.pms.common.constant;\n\npublic enum ApiAccessibleExceptionConstant {\n\n\tAPI_NOT_ACCESSIBLE_EXCEPTION(\"PMS_KKS_001\", \"Error while accessing the API.Please check the logs.\"),\n\tAPI_NULL_RESPONSE_EXCEPTION(\"PMS_PRT_107\",\"Responese from the api is null\"),\n\tUNABLE_TO_PROCESS(\"PMS_PRT_500\",\"Unable to process the request.\"),\n\tTEMPLATE_NOT_FOUND(\"PMS_PRT_501\",\"Template not found\");\n\n\t/**\n\t * The error code.\n\t */\n\tprivate String errorCode;\n\n\t/**\n\t * The error message.\n\t */\n\tprivate String errorMessage;\n\n\t/**\n\t * Constructor for partnerIdExceptionConstant.\n\t * \n\t * @param errorCode\n\t * the errorCode.\n\t * @param errorMessage\n\t * the errorMessage.\n\t */\n\tApiAccessibleExceptionConstant(String errorCode, String errorMessage) {\n\t\tthis.errorCode = errorCode;\n\t\tthis.errorMessage = errorMessage;\n\t}\n\n\t/**\n\t * Getter for error code.\n\t * \n\t * @return the error code.\n\t */\n\tpublic String getErrorCode() {\n\t\treturn errorCode;\n\t}\n\n\t/**\n\t * Getter for error message.\n\t * \n\t * @return the error message.\n\t */\n\tpublic String getErrorMessage() {\n\t\treturn errorMessage;\n\t}\n\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/pms-common/src/main/java/io/mosip/pms/common/constant/AuditErrorCode.java", + "title": "AuditErrorCode.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/pms-common/src/main/java/io/mosip/pms/common/constant/AuditErrorCode.java", + "language": "java", + "content": "package io.mosip.pms.common.constant;\n\npublic enum AuditErrorCode {\n\t\n\tAUDIT_PARSE_EXCEPTION(\"PMP-AUT-020\", \"Parse Error exception\"), \n\tAUDIT_EXCEPTION(\"PMP-AUT-021\", \"Audit Exception from client::\");\t\n\n\tprivate final String errorCode;\n\tprivate final String errorMessage;\n\n\tprivate AuditErrorCode(final String errorCode, final String errorMessage) {\n\t\tthis.errorCode = errorCode;\n\t\tthis.errorMessage = errorMessage;\n\t}\n\n\tpublic String getErrorCode() {\n\t\treturn errorCode;\n\t}\n\n\tpublic String getErrorMessage() {\n\t\treturn errorMessage;\n\t}\n\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/pms-common/src/main/java/io/mosip/pms/common/constant/SearchErrorCode.java", + "title": "SearchErrorCode.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/pms-common/src/main/java/io/mosip/pms/common/constant/SearchErrorCode.java", + "language": "java", + "content": "package io.mosip.pms.common.constant;\n\n/**\n * Error codes for masterdata search\n * \n * @author Abhishek Kumar\n * @since 1.0.0\n */\npublic enum SearchErrorCode {\n\tINVALID_COLUMN(\"PMS-MSD-310\", \"Invalid column received : %s\"),\n\tINVALID_PAGINATION_VALUE(\"PMS-MSD-313\", \"Invalid pagination value received pagestart:%d and pagefetch:%d\"),\n\tFILTER_TYPE_NOT_AVAILABLE(\"PMS-MSD-312\", \"Filter type is missing\"),\n\tMISSING_FILTER_COLUMN(\"PMS-MSD-311\", \"Column is missing in request\"),\n\tINVALID_SORT_INPUT(\"PMS-MSD-314\", \"Missing sort field or sort type values\"),\n\tINVALID_BETWEEN_VALUES(\"PMS-MSD-315\", \"Invalid fromValue or toValue\"),\n\tINVALID_PAGINATION(\"PMS-MSD-356\", \"Pagination cannot be null\"),\n\tINVALID_SORT_TYPE(\"PMS-MSD-358\", \"Sort type %s is not supported\"),\n\tERROR_OCCURED_WHILE_SORTING(\"PMS-MSD-359\", \"Error occured while sorting\"),\n\tINVALID_COLUMN_VALUE(\"PMS-MSD-316\", \"Invalid value present for the given column\"),\n\tINVALID_SORT_FIELD(\"PMS-MSD-357\", \"Invalid sort field %s\"), \n\tINVALID_VALUE(\"PMS-MSD-390\", \"Invalid filter value\"),\n\tINVALID_VALUES(\"PMS-MSD-391\", \"Invalid filter values\"),\n\tFAILED_TO_FETCH_CLAIMS(\"PMS-MSD-393\",\"Failed to fetch claims from mapping file\"),\n\tFAILED_TO_FETCH_ACRVALUES(\"PMS-MSD-394\",\"failed to fetch acr values from mapping file\"),\n\tINVALID_VALUE_VALUES(\"PMS-MSD-392\", \"Both value and values cannot be present\"),\n\tFAILED_TO_FETCH_AMR(\"PMS-MSD-395\",\"Failed to fetch AMR's from mapping file\");\n \n\t/**\n\t * The error code.\n\t */\n\tprivate final String errorCode;\n\t/**\n\t * The error message.\n\t */\n\tprivate final String errorMessage;\n\n\t/**\n\t * Constructor for MasterdataSearchErrorCode.\n\t * \n\t * @param errorCode the error code.\n\t * @param errorMessage the error message.\n\t */\n\tprivate SearchErrorCode(final String errorCode, final String errorMessage) {\n\t\tthis.errorCode = errorCode;\n\t\tthis.errorMessage = errorMessage;\n\t}\n\n\t/**\n\t * Getter for error code.\n\t * \n\t * @return the error code.\n\t */\n\tpublic String getErrorCode() {\n\t\treturn errorCode;\n\t}\n\n\t/**\n\t * Getter for error message.\n\t * \n\t * @return the error message.\n\t */\n\tpublic String getErrorMessage() {\n\t\treturn errorMessage;\n\t}\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/pms-common/src/main/java/io/mosip/pms/common/constant/ValidationErrorCode.java", + "title": "ValidationErrorCode.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/pms-common/src/main/java/io/mosip/pms/common/constant/ValidationErrorCode.java", + "language": "java", + "content": "package io.mosip.pms.common.constant;\n\npublic enum ValidationErrorCode {\n\n\n\tNO_FILTER_FOUND(\"PMS-MSD-316\", \"Column %s doesn't support filter\"),\n\tCOLUMN_DOESNT_EXIST(\"PMS-MSD-317\", \"Column %s doesn't exist for the searched entity\"),\n\tFILTER_NOT_SUPPORTED(\"PMS-MSD-318\", \"Column %s doesn't support filter type %s\"),\n\tINVALID_COLUMN_VALUE(\"PMS-MSD-319\", \"Column value is null or empty\"),\n\tNO_FILTER_COLUMN_FOUND(\"PMS-MSD-322\", \"Filter Type cannot be empty or null\"),\n\tFILTER_COLUMN_DOESNT_EXIST(\"PMS-MSD-323\", \"Filter Type for column %s is not supported\"),\n\tFILTER_COLUMN_NOT_SUPPORTED(\"PMS-MSD-324\", \"Received Filter Type not supported\"),\n\tCOLUMN_DOESNT_EXIST_FILTER(\"PMS-MSD-348\", \"Received column does not support filter\"),\n\tCONSTRAINT_VIOLATION(\"PMS-MSD-xxx\", \"Contraint Violation-\"),\n\tINVALID_COLUMN_NAME(\"PMS-MSD-325\", \"Invalid Column Name passed\"),\n\tINVALID_REQUEST_PARAM(\"PMS_REQUEST_ERROR_001\", \"Invalid request.\"),\n\tINVALID_REQUEST_ID(\"PMS_REQUEST_ERROR_002\", \"Invalid Request Id\"),\n\tINVALID_REQUEST_VERSION(\"PMS_REQUEST_ERROR_003\", \"Request version is invalid\"),\n\tINVALID_REQUEST_DATETIME(\"PMS_REQUEST_ERROR_004\", \"Invalid request time\"),\n\tINVALID_REQUEST_BODY(\"PMS_REQUEST_ERROR_005\", \"Request body is invalid\"),\n\tINVALID_REQUEST_DATETIME_NOT_CURRENT_DATE(\"PMS_REQUEST_ERROR_006\", \"Request date should be current date\");\n\n\t/**\n\t * Error Code\n\t */\n\tprivate final String errorCode;\n\t/**\n\t * Error Message\n\t */\n\tprivate final String errorMessage;\n\n\t/**\n\t * Constructor to initialize\n\t * \n\t * @param errorCode validation error code\n\t * @param errorMessage validation error message\n\t */\n\tprivate ValidationErrorCode(final String errorCode, final String errorMessage) {\n\t\tthis.errorCode = errorCode;\n\t\tthis.errorMessage = errorMessage;\n\t}\n\n\t/**\n\t * Method to fetch error code\n\t * \n\t * @return error Code\n\t */\n\tpublic String getErrorCode() {\n\t\treturn errorCode;\n\t}\n\n\t/**\n\t * Method to fetch error message\n\t * \n\t * @return error message\n\t */\n\tpublic String getErrorMessage() {\n\t\treturn errorMessage;\n\t}\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/pms-common/src/main/java/io/mosip/pms/common/exception/ApiAccessibleException.java", + "title": "ApiAccessibleException.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/pms-common/src/main/java/io/mosip/pms/common/exception/ApiAccessibleException.java", + "language": "java", + "content": "package io.mosip.pms.common.exception;\n\nimport io.mosip.kernel.core.exception.BaseUncheckedException;\n\n/**\n * @author Nagarjuna\n *\n */\n\npublic class ApiAccessibleException extends BaseUncheckedException {\n\n\tprivate static final long serialVersionUID = 1L;\n\n\tpublic ApiAccessibleException() {}\n\t\n\tpublic ApiAccessibleException(String errorCode, String errorMessage) {\n\t\tsuper(errorCode, errorMessage);\n\t}\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/pms-common/src/main/java/io/mosip/pms/common/exception/RequestException.java", + "title": "RequestException.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/pms-common/src/main/java/io/mosip/pms/common/exception/RequestException.java", + "language": "java", + "content": "package io.mosip.pms.common.exception;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\nimport io.mosip.kernel.core.exception.BaseUncheckedException;\nimport io.mosip.kernel.core.exception.ServiceError;\n\npublic class RequestException extends BaseUncheckedException {\n\t\n\tprivate static final long serialVersionUID = -8072241272700356545L;\n\n\tprivate List errors = new ArrayList<>();\n\t\n\tpublic RequestException(String errorCode, String errorMessage) {\n\t\terrors.add(new ServiceError(errorCode, errorMessage));\n\t}\n\t\n\tpublic RequestException(List errors) {\n\t\terrors.stream().forEach(error -> super.addInfo(error.getErrorCode(), error.getMessage()));\n\t\t//errors.stream().forEach(error -> errors.add(new ServiceError(error.getErrorCode(), error.getMessage())));\n\t\tthis.errors = errors;\n\t}\n\t\n\tpublic List getErrors() {\n\t\treturn errors;\n\t}\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/pms-common/src/main/java/io/mosip/pms/common/exception/ValidationException.java", + "title": "ValidationException.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/pms-common/src/main/java/io/mosip/pms/common/exception/ValidationException.java", + "language": "java", + "content": "package io.mosip.pms.common.exception;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\nimport io.mosip.kernel.core.exception.BaseUncheckedException;\nimport io.mosip.kernel.core.exception.ServiceError;\n\n/**\n * Exception to hold validation errors\n * \n */\npublic class ValidationException extends BaseUncheckedException {\n\n\t/**\n\t * Generated serialVersionUID\n\t */\n\tprivate static final long serialVersionUID = 8764526395763989084L;\n\n\tprivate List errors = new ArrayList<>();\n\n\tpublic ValidationException(List errors) {\n\t\terrors.stream().forEach(error -> super.addInfo(error.getErrorCode(), error.getMessage()));\n\t\t//errors.stream().forEach(error -> errors.add(new ServiceError(error.getErrorCode(), error.getMessage())));\n\t\tthis.errors = errors;\n\t}\n\n\tpublic List getErrors() {\n\t\treturn errors;\n\t}\n\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/policy-management-service/src/main/java/io/mosip/pms/policy/controller/PolicyManagementController.java", + "title": "PolicyManagementController.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/policy-management-service/src/main/java/io/mosip/pms/policy/controller/PolicyManagementController.java", + "language": "java", + "content": "package io.mosip.pms.policy.controller;\n\nimport java.io.FileNotFoundException;\nimport java.io.IOException;\nimport java.util.List;\nimport java.util.Optional;\n\nimport javax.validation.Valid;\nimport javax.validation.constraints.NotBlank;\n\nimport io.mosip.pms.common.request.dto.RequestWrapperV2;\nimport io.mosip.pms.common.response.dto.ResponseWrapperV2;\nimport io.mosip.pms.common.util.RequestValidator;\nimport io.mosip.pms.policy.util.PolicyUtil;\nimport io.swagger.v3.oas.annotations.Parameter;\nimport io.swagger.v3.oas.annotations.enums.ParameterIn;\nimport io.swagger.v3.oas.annotations.media.Content;\nimport io.swagger.v3.oas.annotations.media.Schema;\nimport io.swagger.v3.oas.annotations.responses.ApiResponse;\nimport io.swagger.v3.oas.annotations.responses.ApiResponses;\nimport org.json.simple.parser.ParseException;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.beans.factory.annotation.Value;\nimport org.springframework.security.access.prepost.PreAuthorize;\nimport org.springframework.web.bind.annotation.GetMapping;\nimport org.springframework.web.bind.annotation.PatchMapping;\nimport org.springframework.web.bind.annotation.PathVariable;\nimport org.springframework.web.bind.annotation.PostMapping;\nimport org.springframework.web.bind.annotation.PutMapping;\nimport org.springframework.web.bind.annotation.RequestBody;\nimport org.springframework.web.bind.annotation.RequestMapping;\nimport org.springframework.web.bind.annotation.RestController;\nimport org.springframework.web.bind.annotation.RequestParam;\nimport com.fasterxml.jackson.core.JsonParseException;\nimport com.fasterxml.jackson.databind.JsonMappingException;\n\nimport io.mosip.kernel.core.http.ResponseFilter;\nimport io.mosip.kernel.core.logger.spi.Logger;\nimport io.mosip.pms.common.dto.FilterValueDto;\nimport io.mosip.pms.common.dto.PageResponseDto;\nimport io.mosip.pms.common.dto.PolicyFilterValueDto;\nimport io.mosip.pms.common.dto.PolicySearchDto;\nimport io.mosip.pms.common.dto.SearchAuthPolicy;\nimport io.mosip.pms.common.dto.SearchDto;\nimport io.mosip.pms.common.dto.PageResponseV2Dto;\nimport io.mosip.pms.common.entity.PolicyGroup;\nimport io.mosip.pms.common.util.PMSLogger;\nimport io.mosip.pms.policy.dto.FilterResponseCodeDto;\nimport io.mosip.pms.policy.dto.KeyValuePair;\nimport io.mosip.pms.policy.dto.PolicyCreateRequestDto;\nimport io.mosip.pms.policy.dto.PolicyCreateResponseDto;\nimport io.mosip.pms.policy.dto.PolicyDetailsDto;\nimport io.mosip.pms.policy.dto.PolicyGroupCreateRequestDto;\nimport io.mosip.pms.policy.dto.PolicyGroupCreateResponseDto;\nimport io.mosip.pms.policy.dto.PolicyGroupUpdateRequestDto;\nimport io.mosip.pms.policy.dto.PolicyManageEnum;\nimport io.mosip.pms.policy.dto.PolicyResponseDto;\nimport io.mosip.pms.policy.dto.PolicyStatusUpdateRequestDto;\nimport io.mosip.pms.policy.dto.PolicyStatusUpdateResponseDto;\nimport io.mosip.pms.policy.dto.PolicyUpdateRequestDto;\nimport io.mosip.pms.policy.dto.PolicyWithAuthPolicyDto;\nimport io.mosip.pms.policy.dto.RequestWrapper;\nimport io.mosip.pms.policy.dto.ResponseWrapper;\nimport io.mosip.pms.policy.dto.PolicyGroupDto;\nimport io.mosip.pms.policy.dto.PolicySummaryDto;\nimport io.mosip.pms.policy.dto.PolicyFilterDto;\nimport io.mosip.pms.policy.dto.DeactivatePolicyResponseDto;\nimport io.mosip.pms.policy.dto.DeactivatePolicyGroupResponseDto;\nimport io.mosip.pms.policy.dto.DeactivateRequestDto;\nimport io.mosip.pms.policy.service.PolicyManagementService;\nimport io.mosip.pms.policy.util.AuditUtil;\nimport io.swagger.annotations.Api;\nimport io.swagger.v3.oas.annotations.Operation;\n\n\n@RestController\n@RequestMapping(value = \"/policies\")\n@Api(tags = { \"policy management controller \" })\npublic class PolicyManagementController {\n\n\tprivate static final Logger logger = PMSLogger.getLogger(PolicyManagementController.class);\n\n\t@Value(\"${mosip.pms.api.id.deactivate.policy.patch}\")\n\tprivate String patchDeactivatePolicy;\n\n\t@Value(\"${mosip.pms.api.id.deactivate.policy.group.patch}\")\n\tprivate String patchDeactivatePolicyGroupId;\n\n\t@Autowired\n\tprivate PolicyManagementService policyManagementService;\n\t\n\t@Autowired\n\tAuditUtil auditUtil;\n\n\t@Autowired\n\tRequestValidator requestValidator;\n\n\t@PreAuthorize(\"hasAnyRole(@authorizedRoles.getPostpoliciesgroupnew())\")\n\t@PostMapping(value = \"/group/new\")\n\t@Operation(summary = \"Service to create a new policy group\", description = \"Service to craete a new policy group\")\n\tpublic ResponseWrapper definePolicyGroup(\n\t\t\t@RequestBody @Valid RequestWrapper createRequest) {\n\t\tlogger.info(\"Calling PolicyManagementService from PolicyManagementController.\");\n\t\tauditUtil.setAuditRequestDto(PolicyManageEnum.CREATE_POLICY_GROUP, createRequest.getRequest().getName(), \"policyGroupName\");\n\t\tPolicyGroupCreateResponseDto responseDto = policyManagementService.createPolicyGroup(createRequest.getRequest());\n\t\tResponseWrapper response = new ResponseWrapper<>();\n\t\tresponse.setResponse(responseDto);\n\t\tresponse.setId(createRequest.getId());\n\t\tresponse.setVersion(createRequest.getVersion());\n\t\treturn response;\t\t\n\t}\n\n\t@PreAuthorize(\"hasAnyRole(@authorizedRoles.getPutpoliciesgrouppolicygroupid())\")\n\t@PutMapping(value = \"/group/{policygroupId}\")\n\t@Operation(summary = \"Service to update a policy group\", description = \"Service to update a policy group\")\n\tpublic ResponseWrapper updatePolicyGroup(@PathVariable String policygroupId,\n\t\t\t@RequestBody @Valid RequestWrapper createRequest) {\n\t\tlogger.info(\"Calling PolicyManagementService from PolicyManagementController.\");\n\t\tauditUtil.setAuditRequestDto(PolicyManageEnum.UPDATE_POLICY_GROUP, createRequest.getRequest().getName(), \"policyGroupName\");\n\t\tPolicyGroupCreateResponseDto responseDto = policyManagementService.updatePolicyGroup(createRequest.getRequest(), policygroupId);\n\t\tResponseWrapper response = new ResponseWrapper<>();\n\t\tresponse.setResponse(responseDto);\n\t\tresponse.setId(createRequest.getId());\n\t\tresponse.setVersion(createRequest.getVersion());\t\t\n\t\treturn response;\t\t\n\t}\n\n\t@PreAuthorize(\"hasAnyRole(@authorizedRoles.getPostpolicies())\")\n\t@PostMapping\n\t@Operation(summary = \"Service to create a new auth/datashare/ credential policy\", description = \"Service to create a new auth/datashare/ credential policy\")\n\tpublic ResponseWrapper definePolicy(\n\t\t\t@RequestBody @Valid RequestWrapper createRequest) throws Exception {\n\t\tlogger.info(\"Calling PolicyManagementService from PolicyManagementController.\");\n\t\tResponseWrapper response = new ResponseWrapper();\n\t\tauditUtil.setAuditRequestDto(PolicyManageEnum.CREATE_POLICY, createRequest.getRequest().getName(), \"policyName\");\n\t\tPolicyCreateResponseDto responseDto = policyManagementService.\n\t\t\t\tcreatePolicies(createRequest.getRequest());\t\t\n\t\tresponse.setId(createRequest.getId());\n\t\tresponse.setVersion(createRequest.getVersion());\n\t\tresponse.setResponse(responseDto);\t\t\n\t\tlogger.info(\"Returning response from PolicyManagementController.\");\n\t\treturn response;\n\t}\n\n\t@PreAuthorize(\"hasAnyRole(@authorizedRoles.getPostpoliciespolicyidgrouppublish())\")\n\t@PostMapping(value = \"/{policyId}/group/{policygroupId}/publish\")\n\t@Operation(summary = \"Service to publish policy\", description = \"Service to publish policy\")\n\tpublic ResponseWrapper publishPolicy(@PathVariable @Valid String policygroupId,\n\t\t\t@PathVariable @Valid String policyId) throws JsonParseException, JsonMappingException, IOException {\n\t\tResponseWrapper response = new ResponseWrapper();\n\t\tauditUtil.setAuditRequestDto(PolicyManageEnum.PUBLISH_POLICY, policyId, \"policyId\");\n\t\tPolicyResponseDto responseDto = policyManagementService.publishPolicy(policygroupId, policyId);\n\t\tresponse.setResponse(responseDto);\n\t\treturn response;\n\t}\n\n\t@PreAuthorize(\"hasAnyRole(@authorizedRoles.getPutpoliciespolicyid())\")\n @PutMapping(value =\"/{policyId}\")\n\t@Operation(summary = \"Service to update policy details\", description = \"Service to update policy details\")\n\tpublic ResponseWrapper updatePolicyDetails(\n\t\t\t@RequestBody @Valid RequestWrapper updateRequestDto, @PathVariable String policyId)\n\t\t\tthrows Exception {\n\t\tlogger.info(\"Calling PolicyManagementService from PolicyManagementController.\");\n\t\tauditUtil.setAuditRequestDto(PolicyManageEnum.UPDATE_POLICY, updateRequestDto.getRequest().getName(), \"policyName\");\n\t\tResponseWrapper response = new ResponseWrapper();\n\t\tPolicyCreateResponseDto responseDto = policyManagementService.updatePolicies(updateRequestDto.getRequest(),\n\t\t\t\tpolicyId);\n\t\tresponse.setResponse(responseDto);\n\t\tresponse.setId(updateRequestDto.getId());\n\t\tresponse.setVersion(updateRequestDto.getVersion());\n\t\tlogger.info(\"Returning response from PolicyManagementController.\");\n\t\treturn response;\n\t}\n\n\t@PreAuthorize(\"hasAnyRole(@authorizedRoles.getPatchpoliciespolicyidgrouppolicygroupid())\")\n\t@PatchMapping(value = \"/{policyId}/group/{policygroupId}\")\n\t@Operation(summary = \"Service to update policy status\", description = \"Service to update policy status\")\n\tpublic ResponseWrapper updatePolicyStatus(\n\t\t\t@RequestBody RequestWrapper requestDto, @PathVariable String policygroupId,\n\t\t\t@PathVariable String policyId) throws Exception {\n\t\tPolicyStatusUpdateRequestDto statusUpdateRequest = requestDto.getRequest();\n\t\tlogger.info(\"Calling PolicyManagementService from PolicyManagementController.\");\n\t\tauditUtil.setAuditRequestDto(PolicyManageEnum.UPDATE_POLICY_STATUS, policyId, \"policyId\");\n\t\tResponseWrapper response = policyManagementService.\n\t\t\t\tupdatePolicyStatus(statusUpdateRequest,policygroupId,policyId);\t\n\t\tresponse.setId(requestDto.getId());\n\t\tresponse.setVersion(requestDto.getVersion());\n\t\tlogger.info(\"Returning response from PolicyManagementController.\");\n\t\treturn response;\n\t}\n\n\t@PreAuthorize(\"hasAnyRole(@authorizedRoles.getGetpolicies())\")\n\t@GetMapping\n\t@Operation(summary = \"Service to get policies\", description = \"Service to get policies\")\n\tpublic ResponseWrapper> getPolicies()\n\t\t\tthrows FileNotFoundException, IOException, ParseException {\n\t\tResponseWrapper> response = new ResponseWrapper<>();\n\t\tlogger.info(\"Calling PolicyManagementService from PolicyManagementController.\");\n\t\tresponse.setResponse(policyManagementService.findAllPolicies());\n\t\tlogger.info(\"Returning response from PolicyManagementController.\");\n\t\treturn response;\n\t}\n\n\t@PreAuthorize(\"hasAnyRole(@authorizedRoles.getGetpoliciespolicyid())\")\n\t@GetMapping(value = \"/{policyId}\")\n\t@Operation(summary = \"Service to get policy\", description = \"Service to get policy\")\n\tpublic ResponseWrapper getPolicy(@PathVariable String policyId) throws Exception {\n\t\tResponseWrapper response = new ResponseWrapper<>();\n\t\tlogger.info(\"Calling PolicyManagementService from PolicyManageController.\");\n\t\tPolicyResponseDto responseDto = policyManagementService.findPolicy(policyId);\n\t\tresponse.setResponse(responseDto);\n\t\tlogger.info(\"Returning response from PolicyManagementController.\");\n\t\treturn response;\n\t}\n\n\t@PreAuthorize(\"hasAnyRole(@authorizedRoles.getGetpoliciespolicyid())\")\n\t@GetMapping(value = \"/{policyId}/partner/{partnerId}\")\n\t@Operation(summary = \"Service to get policy for given partner and policy id\", description = \"Service to get policy for given partner and policy id\")\n\tpublic ResponseWrapper getPartnersPolicy(@PathVariable String partnerId,\n\t\t\t@PathVariable String policyId) throws JsonParseException, JsonMappingException, IOException {\n\t\tResponseWrapper response = new ResponseWrapper<>();\n\t\tlogger.info(\"Calling PolicyManagementService from PolicyManagementController.\");\n\t\tPolicyResponseDto policyGroup = policyManagementService.getPartnerMappedPolicy(partnerId, policyId);\n\t\tresponse.setResponse(policyGroup);\n\t\tlogger.info(\"Returning response from PolicyManagementController.\");\n\t\treturn response;\n\t}\n\n\t@PreAuthorize(\"hasAnyRole(@authorizedRoles.getGetpoliciesgrouppolicygroupid())\")\n\t@GetMapping(value = \"/group/{policygroupId}\")\n\t@Operation(summary = \"Service to get policy group\", description = \"Service to get policy group\")\n\tpublic ResponseWrapper getPolicyGroup(@PathVariable String policygroupId)\n\t\t\tthrows JsonParseException, JsonMappingException, IOException {\n\t\tResponseWrapper response = new ResponseWrapper<>();\n\t\tlogger.info(\"Calling PolicyManagementService from PolicyManagementController.\");\n\t\tresponse.setResponse(policyManagementService.getPolicyGroupPolicy(policygroupId));\n\t\tlogger.info(\"Returning response from PolicyManagementController.\");\n\t\treturn response;\n\t}\n\n\t@PreAuthorize(\"hasAnyRole(@authorizedRoles.getGetpoliciesgroupall())\")\n\t@GetMapping(value = \"/group/all\")\n\t@Operation(summary = \"Service to get all policy groups\", description = \"Service to all policy groups\")\n\tpublic ResponseWrapper> getPolicyGroup()\n\t\t\tthrows JsonParseException, JsonMappingException, IOException {\n\t\tResponseWrapper> response = new ResponseWrapper<>();\n\t\tlogger.info(\"Calling PolicyManagementService from PolicyManagementController.\");\n\t\tresponse.setResponse(policyManagementService.getPolicyGroup());\n\t\tlogger.info(\"Returning response from PolicyManagementController.\");\n\t\treturn response;\n\t}\n\n\t@ResponseFilter\n\t@PostMapping(\"/group/search\")\n\t@PreAuthorize(\"hasAnyRole(@authorizedRoles.getPostpoliciesgroupsearch())\")\n\t@Operation(summary = \"Service to search policy group\", description = \"Service to search policy group\")\n\tpublic ResponseWrapper> searchPolicyGroup(\n\t\t\t@RequestBody @Valid RequestWrapper request) {\n\t\tResponseWrapper> responseWrapper = new ResponseWrapper<>();\n\t\tauditUtil.setAuditRequestDto(PolicyManageEnum.SEARCH_POLICY_GROUP);\n\t\tresponseWrapper.setResponse(policyManagementService.searchPolicyGroup(request.getRequest()));\n\t\treturn responseWrapper;\n\t}\n\n\t@ResponseFilter\t\n\t@PostMapping(\"/search\")\n\t@PreAuthorize(\"hasAnyRole(@authorizedRoles.getPostpoliciessearch())\")\n\t@Operation(summary = \"Service to search policy\", description = \"Service to search policy\")\n\tpublic ResponseWrapper> searchPolicy(\n\t\t\t@RequestBody @Valid RequestWrapper request) {\n\t\tResponseWrapper> responseWrapper = new ResponseWrapper<>();\n\t\tauditUtil.setAuditRequestDto(PolicyManageEnum.SEARCH_POLICY);\n\t\tresponseWrapper.setResponse(policyManagementService.searchPolicy(request.getRequest()));\n\t\treturn responseWrapper;\n\t}\n\n\t@PreAuthorize(\"hasAnyRole(@authorizedRoles.getGetpoliciesconfigkey())\")\n\t@GetMapping(value = \"/config/{key}\")\n\t@Operation(summary = \"Service to get value for a given config key\", description = \"Service to get value for a given config key\")\n\tpublic ResponseWrapper> getValueForKey(@PathVariable String key) {\n\t\tResponseWrapper> responseWrapper = new ResponseWrapper<>();\n\t\tresponseWrapper.setResponse(policyManagementService.getValueForKey(key));\n\t\treturn responseWrapper;\n\t}\n\n\t@PostMapping(\"/group/filtervalues\")\n\t@PreAuthorize(\"hasAnyRole(@authorizedRoles.getPostpoliciesgroupfiltervalues())\")\t@Operation(summary = \"Service to filter policy groups\", description = \"Service to filter policy groups\")\n\tpublic ResponseWrapper policyGroupFilterValues(\n\t\t\t@RequestBody @Valid RequestWrapper requestWrapper) {\n\t\tResponseWrapper responseWrapper = new ResponseWrapper<>();\n\t\tauditUtil.setAuditRequestDto(PolicyManageEnum.FILTERVALUES_POLICY_GROUP);\n\t\tresponseWrapper.setResponse(policyManagementService.policyGroupFilterValues(requestWrapper.getRequest()));\n\t\treturn responseWrapper;\n\t}\n\n\t@PostMapping(\"/filtervalues\")\n\t@PreAuthorize(\"hasAnyRole(@authorizedRoles.getPostpoliciesfiltervalues())\")\n\t@Operation(summary = \"Service to filter policy details\", description = \"Service to filter policy details\")\n\tpublic ResponseWrapper policyFilterValues(\n\t\t\t@RequestBody @Valid RequestWrapper requestWrapper) {\n\t\tResponseWrapper responseWrapper = new ResponseWrapper<>();\n\t\tauditUtil.setAuditRequestDto(PolicyManageEnum.FILTERVALUES_POLICY);\n\t\tresponseWrapper.setResponse(policyManagementService.policyFilterValues(requestWrapper.getRequest()));\n\t\treturn responseWrapper;\n\t}\n\t\n\t@GetMapping(\"/active/group/{groupName}\")\n\t@PreAuthorize(\"hasAnyRole(@authorizedRoles.getGetactivegroupgroupname())\")\n\t@Operation(summary = \"Service to get active policy details for policy group name\", description = \"Service to get active policy details for policy group name\")\n\tpublic ResponseWrapper> getPoliciesByGroupName(@PathVariable String groupName) {\n\t\tResponseWrapper> response = new ResponseWrapper<>();\n\t\tlogger.info(\"Calling PolicyManagementService from PolicyManagementController.\");\n\t\tresponse.setResponse(policyManagementService.getActivePolicyDetailsByGroupName(groupName));\n\t\tlogger.info(\"Returning response from PolicyManagementController.\");\n\t\treturn response;\n\t}\n\n\t@PreAuthorize(\"hasAnyRole(@authorizedRoles.getGetpolicygroups())\")\n\t@GetMapping(value = \"/policy-groups\")\n\t@Operation(summary = \"This endpoint retrieves details about all active Policy Groups\", \n\tdescription = \"Available since release-1.2.2.0.\")\n\t@ApiResponses(value = {@ApiResponse(responseCode = \"200\", description = \"OK\"),\n\t\t\t@ApiResponse(responseCode = \"401\", description = \"Unauthorized\", content = @Content(schema = @Schema(hidden = true))),\n\t\t\t@ApiResponse(responseCode = \"403\", description = \"Forbidden\", content = @Content(schema = @Schema(hidden = true)))})\n\tpublic ResponseWrapperV2> getPolicyGroups() throws JsonParseException, JsonMappingException, IOException {\n\t\treturn policyManagementService.getPolicyGroups();\n\t}\n\n\t@PreAuthorize(\"hasAnyRole(@authorizedRoles.getGetallpolicies())\")\n\t@GetMapping(value = \"/v2\")\n\t@Operation(summary = \"This endpoint retrieves the list of all Policies\",\n\tdescription = \"Available since release-1.2.2.0. It is configured for the POLICYMANAGER or PARTNER_ADMIN roles.\")\n\t@ApiResponses(value = {\n\t\t\t@ApiResponse(responseCode = \"200\", description = \"OK\"),\n\t\t\t@ApiResponse(responseCode = \"401\", description = \"Unauthorized\", content = @Content(schema = @Schema(hidden = true))),\n\t\t\t@ApiResponse(responseCode = \"403\", description = \"Forbidden\", content = @Content(schema = @Schema(hidden = true)))\n\t})\n\tpublic ResponseWrapperV2> getAllPolicies(\n\t\t\t@RequestParam(value = \"sortFieldName\", required = false) String sortFieldName,\n\t\t\t@RequestParam(value = \"sortType\", required = false) String sortType, // e.g., ASC or DESC\n\t\t\t@RequestParam(value = \"pageNo\", defaultValue = \"0\") int pageNo,\n\t\t\t@RequestParam(value = \"pageSize\", defaultValue = \"8\") int pageSize,\n\t\t\t@RequestParam(value = \"policyType\", required = false) String policyType,\n\t\t\t@RequestParam(value = \"policyId\", required = false) String policyId,\n\t\t\t@RequestParam(value = \"policyName\", required = false) String policyName,\n\t\t\t@RequestParam(value = \"policyDescription\", required = false) String policyDescription,\n\t\t\t@RequestParam(value = \"policyGroupName\", required = false) String policyGroupName,\n\t\t\t@Parameter(\n\t\t\t\t\tdescription = \"Status of policy\",\n\t\t\t\t\tin = ParameterIn.QUERY,\n\t\t\t\t\tschema = @Schema(allowableValues = {\"activated\", \"deactivated\", \"draft\"})\n\t\t\t)\n\t\t\t@RequestParam(value = \"status\", required = false) String status) {\n\n\t\tPolicyUtil.validateGetAllPoliciesRequestParameters(sortFieldName, sortType, pageNo, pageSize);\n\t\tPolicyFilterDto filterDto = new PolicyFilterDto();\n\t\tif (policyType != null) {\n\t\t\tfilterDto.setPolicyType(policyType.toLowerCase());\n\t\t}\n\t\tif (policyId != null) {\n\t\t\tfilterDto.setPolicyId(policyId.toLowerCase());\n\t\t}\n\t\tif (policyName != null) {\n\t\t\tfilterDto.setPolicyName(policyName.toLowerCase());\n\t\t}\n\t\tif (policyDescription != null) {\n\t\t\tfilterDto.setPolicyDescription(policyDescription.toLowerCase());\n\t\t}\n\t\tif (policyGroupName != null) {\n\t\t\tfilterDto.setPolicyGroupName(policyGroupName.toLowerCase());\n\t\t}\n\t\tif (status != null) {\n\t\t\tfilterDto.setStatus(status);\n\t\t}\n\t\treturn policyManagementService.getAllPolicies(sortFieldName, sortType, pageNo, pageSize, filterDto);\n\t}\n\n\t@PreAuthorize(\"hasAnyRole(@authorizedRoles.getPatchdeactivatepolicy())\")\n\t@PatchMapping(value = \"/{policyId}\")\n\t@Operation(summary = \"Available since release-1.2.2.0. This endpoint deactivates a policy based on the Policy Id\", description = \"This endpoint deactivates a policy based on the Policy Id, accessible only by Partner Admin. It checks if any policy requests are associated with the policy: it can be deactivated if there are no requests or if there are rejected requests. It cannot be deactivated if there are approved or pending requests, returning error codes PMS_POL_063 or PMS_POL_064, respectively. This endpoint is configured for the POLICYMANAGER or PARTNER_ADMIN roles.\")\n\t@ApiResponses(value = {\n\t\t\t@ApiResponse(responseCode = \"200\", description = \"OK\"),\n\t\t\t@ApiResponse(responseCode = \"401\", description = \"Unauthorized\", content = @Content(schema = @Schema(hidden = true))),\n\t\t\t@ApiResponse(responseCode = \"403\", description = \"Forbidden\", content = @Content(schema = @Schema(hidden = true)))\n\t})\n\tpublic ResponseWrapperV2 deactivatePolicy(@PathVariable(\"policyId\") @NotBlank String policyId, @RequestBody @Valid RequestWrapperV2\n\t\t\trequestWrapper) {\n\t\tOptional> validationResponse = requestValidator.validate(patchDeactivatePolicy, requestWrapper);\n\t\tif (validationResponse.isPresent()) {\n\t\t\treturn validationResponse.get();\n\t\t}\n\t\treturn policyManagementService.deactivatePolicy(policyId, requestWrapper.getRequest());\n\t}\n\n\t@PreAuthorize(\"hasAnyRole(@authorizedRoles.getPatchdeactivatepolicygroup())\")\n\t@PatchMapping(value = \"/group/{policyGroupId}\")\n\t@Operation(summary = \"This endpoint allows Partner Admin users to deactivate a Policy Group based on the Policy Group Id.\",\n\t\t\tdescription = \"Available since release-1.2.2.0. It is configured for the POLICYMANAGER or PARTNER_ADMIN roles.\")\n\t@ApiResponses(value = {\n\t\t\t@ApiResponse(responseCode = \"200\", description = \"OK\"),\n\t\t\t@ApiResponse(responseCode = \"401\", description = \"Unauthorized\", content = @Content(schema = @Schema(hidden = true))),\n\t\t\t@ApiResponse(responseCode = \"403\", description = \"Forbidden\", content = @Content(schema = @Schema(hidden = true)))\n\t})\n\tpublic ResponseWrapperV2 deactivatePolicyGroup(@PathVariable(\"policyGroupId\") @NotBlank String policyGroupId, @RequestBody @Valid RequestWrapperV2\n\t\t\trequestWrapper) {\n\t\tOptional> validationResponse = requestValidator.validate(patchDeactivatePolicyGroupId, requestWrapper);\n\t\tif (validationResponse.isPresent()) {\n\t\t\treturn validationResponse.get();\n\t\t}\n\t\treturn policyManagementService.deactivatePolicyGroup(policyGroupId, requestWrapper.getRequest());\n\t}\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/policy-management-service/src/main/java/io/mosip/pms/policy/errorMessages/ApiExceptionHandler.java", + "title": "ApiExceptionHandler.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/policy-management-service/src/main/java/io/mosip/pms/policy/errorMessages/ApiExceptionHandler.java", + "language": "java", + "content": "package io.mosip.pms.policy.errorMessages;\n\nimport java.io.IOException;\nimport java.time.LocalDateTime;\nimport java.time.ZoneId;\nimport java.util.ArrayList;\nimport java.util.List;\n\nimport javax.servlet.http.HttpServletRequest;\n\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.http.HttpHeaders;\nimport org.springframework.http.HttpStatus;\nimport org.springframework.http.ResponseEntity;\nimport org.springframework.validation.FieldError;\nimport org.springframework.web.bind.MethodArgumentNotValidException;\nimport org.springframework.web.bind.annotation.ExceptionHandler;\nimport org.springframework.web.bind.annotation.RestControllerAdvice;\nimport org.springframework.web.context.request.ServletWebRequest;\nimport org.springframework.web.context.request.WebRequest;\nimport org.springframework.web.servlet.mvc.method.annotation.ResponseEntityExceptionHandler;\nimport org.springframework.web.util.ContentCachingRequestWrapper;\n\nimport com.fasterxml.jackson.databind.JsonNode;\nimport com.fasterxml.jackson.databind.ObjectMapper;\nimport com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;\n\nimport io.mosip.kernel.core.exception.BaseUncheckedException;\nimport io.mosip.kernel.core.exception.ExceptionUtils;\nimport io.mosip.kernel.core.exception.ServiceError;\nimport io.mosip.kernel.core.http.ResponseWrapper;\nimport io.mosip.kernel.core.util.EmptyCheckUtils;\nimport io.mosip.pms.common.exception.RequestException;\nimport io.mosip.pms.policy.validator.exception.PolicyObjectValidationFailedException;\n\n\n/**\n *

    This class handles all the exceptions of the policy management service.

    \n * \n * @author Nagarjuna Kuchi\n * @version 1.0\n * \n */\n@RestControllerAdvice\npublic class ApiExceptionHandler extends ResponseEntityExceptionHandler {\n\t\n\t@Autowired\n\tprivate ObjectMapper objectMapper;\n\t\n\t/**\n\t * Exception to be thrown when validation on an argument annotated with {@code @Valid} fails.\n\t * \n\t */\n\t@Override\n protected ResponseEntity handleMethodArgumentNotValid(MethodArgumentNotValidException ex, HttpHeaders headers, \n \t\tHttpStatus status, WebRequest request) {\t\t\n\t\tExceptionUtils.logRootCause(ex);\n List fieldErrors = ex.getBindingResult().getFieldErrors();\n FieldError fieldError = fieldErrors.get(0);\t\t\n ServiceError serviceError = new ServiceError(ErrorMessages.MISSING_INPUT_PARAMETER.getErrorCode(), \n \t\t\"Invalid request parameter - \" + fieldError.getDefaultMessage() + \" :\" + fieldError.getField());\n\t\tResponseWrapper errorResponse = null;\n\t\ttry {\n\t\t\terrorResponse = setErrors(request);\n\t\t\terrorResponse.getErrors().add(serviceError);\n\t\t} catch (IOException e) {\n\t\t\t//\n\t\t}\n\t\treturn new ResponseEntity<>(errorResponse, HttpStatus.OK); \n }\n\t\n\t/**\n\t * Exception to be thrown when misp application validations failed.\n\t * \n\t * @param httpServletRequest\n\t * @param e\n\t * @return\n\t * @throws IOException\n\t */\n\t@ExceptionHandler(PolicyManagementServiceException.class)\n\tpublic ResponseEntity> controlDataServiceException(\n\t\t\tHttpServletRequest httpServletRequest, final PolicyManagementServiceException e) throws IOException {\n\t\tExceptionUtils.logRootCause(e);\n\t\treturn getErrorResponseEntity(httpServletRequest, e, HttpStatus.OK);\n\t}\n\t\n\t/**\n\t * \n\t * @param httpServletRequest\n\t * @param e\n\t * @return\n\t * @throws IOException\n\t */\n\t@ExceptionHandler(PolicyObjectValidationFailedException.class)\n\tpublic ResponseEntity>> controlDataServiceException(\n\t\t\tHttpServletRequest httpServletRequest, final PolicyObjectValidationFailedException e) throws IOException {\n\t\tExceptionUtils.logRootCause(e);\n\t\treturn getErrorResponseObject(httpServletRequest, e, HttpStatus.OK);\n\t}\n\t\n\t/**\n\t * \n\t * @param httpServletRequest\n\t * @param e\n\t * @return\n\t * @throws IOException\n\t */\n\t@ExceptionHandler(RequestException.class)\n\tpublic ResponseEntity> controlDataServiceException(\n\t\t\tHttpServletRequest httpServletRequest, final RequestException e) throws IOException {\n\t\tExceptionUtils.logRootCause(e);\n\t\treturn getErrorResponseEntity(e);\n\t}\n\t\t\n\t/**\n\t * This method extract the response from HttpServletRequest request.\n\t * \n\t * @param httpServletRequest\n\t * @param e\n\t * @param httpStatus\n\t * @return\n\t * @throws IOException\n\t */\n\tprivate ResponseEntity> getErrorResponseEntity(HttpServletRequest httpServletRequest,\n\t\t\tBaseUncheckedException e, HttpStatus httpStatus) throws IOException {\n\t\tServiceError error = new ServiceError(e.getErrorCode(), e.getErrorText());\n\t\tResponseWrapper errorResponse = setErrors(httpServletRequest);\n\t\terrorResponse.getErrors().add(error);\n\t\treturn new ResponseEntity<>(errorResponse, httpStatus);\n\t}\n\t\n\t/**\n\t * \n\t * @param exception\n\t * @return\n\t */\n\tprivate ResponseEntity> getErrorResponseEntity(RequestException exception){\n\t\tList errors = new ArrayList<>();\t\t\n\t\tResponseWrapper responseError = new ResponseWrapper<>();\n\t\tfor (ServiceError serviceError : exception.getErrors()) {\n\t\t\tServiceError errorResponse = new ServiceError();\n\t\t\terrorResponse.setErrorCode(serviceError.getErrorCode());\n\t\t\terrorResponse.setMessage(serviceError.getMessage());\n\t\t\terrors.add(errorResponse);\n\t\t}\n\t\tresponseError.setErrors(errors);\t\t\n\t\treturn new ResponseEntity<>(responseError, HttpStatus.OK);\t\n\t}\n\t/**\n\t * This method extract the response from HttpServletRequest request.\n\t * \n\t * @param httpServletRequest\n\t * @param e\n\t * @param httpStatus\n\t * @return\n\t * @throws IOException\n\t */\n\tprivate ResponseEntity>> getErrorResponseObject(HttpServletRequest httpServletRequest,\n\t\t\tPolicyObjectValidationFailedException ex, HttpStatus httpStatus) throws IOException {\n\t\tList errors = new ArrayList<>();\t\t\n\t\tfor(io.mosip.pms.policy.validator.exception.ServiceError error: ex.getServiceErrors()) {\n\t\t\terrors.add(new ServiceError(error.getErrorCode(),error.getMessage()));\n\t\t}\n\t\tResponseWrapper> errorResponse = setServiceErrors(httpServletRequest);\n\t\terrorResponse.getErrors().addAll(errors);\n\t\treturn new ResponseEntity<>(errorResponse, httpStatus);\n\t}\t\n\t\n\t/**\n\t * This method handles all runtime exceptions\n\t * \n\t * @param httpServletRequest\n\t * @param exception\n\t * @return\n\t * @throws IOException\n\t */\n\t@ExceptionHandler(value = { Exception.class, RuntimeException.class })\n\tpublic ResponseEntity> defaultErrorHandler(HttpServletRequest httpServletRequest,\n\t\t\tException exception) throws IOException {\n\t\tResponseWrapper errorResponse = setErrors(httpServletRequest);\n\t\tServiceError error = new ServiceError(ErrorMessages.INTERNAL_SERVER_ERROR.getErrorCode(),\n\t\t\t\tErrorMessages.INTERNAL_SERVER_ERROR.getErrorMessage());\n\t\terrorResponse.getErrors().add(error);\n\t\tif(exception != null) {\n\t\t\tExceptionUtils.logRootCause(exception);\n\t\t}\n\t\treturn new ResponseEntity<>(errorResponse, HttpStatus.OK);\n\t}\n\t\n\t/**\n\t * This method maps the HttpServletRequest parameters to the response. \n\t * \n\t * @param httpServletRequest\n\t * @return response\n\t * @throws IOException\n\t */\n\tprivate ResponseWrapper setErrors(HttpServletRequest httpServletRequest) throws IOException {\n\t\tResponseWrapper responseWrapper = new ResponseWrapper<>();\n\t\tresponseWrapper.setResponsetime(LocalDateTime.now(ZoneId.of(\"UTC\")));\n\t\tString requestBody = null;\n\t\tif (httpServletRequest instanceof ContentCachingRequestWrapper) {\n\t\t\trequestBody = new String(((ContentCachingRequestWrapper) httpServletRequest).getContentAsByteArray());\n\t\t}\n\t\tif (EmptyCheckUtils.isNullEmpty(requestBody)) {\t\t\t\n\t\t\treturn responseWrapper;\n\t\t}\t\t\n\t\t\n\t\tobjectMapper.registerModule(new JavaTimeModule());\n\t\tJsonNode reqNode = objectMapper.readTree(requestBody);\n\t\tresponseWrapper.setId(reqNode.path(\"id\").asText());\n\t\tresponseWrapper.setVersion(reqNode.path(\"version\").asText());\n\t\treturn responseWrapper;\n\t}\n\t\n\t/**\n\t * This method maps the HttpServletRequest parameters to the response. \n\t * \n\t * @param httpServletRequest\n\t * @return response\n\t * @throws IOException\n\t */\n\tprivate ResponseWrapper> setServiceErrors(HttpServletRequest httpServletRequest) throws IOException {\n\t\tResponseWrapper> responseWrapper = new ResponseWrapper<>();\n\t\tresponseWrapper.setResponsetime(LocalDateTime.now(ZoneId.of(\"UTC\")));\n\t\tString requestBody = null;\n\t\tif (httpServletRequest instanceof ContentCachingRequestWrapper) {\n\t\t\trequestBody = new String(((ContentCachingRequestWrapper) httpServletRequest).getContentAsByteArray());\n\t\t}\n\t\tif (EmptyCheckUtils.isNullEmpty(requestBody)) {\t\t\t\n\t\t\treturn responseWrapper;\n\t\t}\t\t\n\t\t\n\t\tobjectMapper.registerModule(new JavaTimeModule());\n\t\tJsonNode reqNode = objectMapper.readTree(requestBody);\n\t\tresponseWrapper.setId(reqNode.path(\"id\").asText());\n\t\tresponseWrapper.setVersion(reqNode.path(\"version\").asText());\n\t\treturn responseWrapper;\n\t}\n\n\t/**\n\t * This method maps the WebRequest parameters to the response.\n\t * \n\t * @param webRequest\n\t * @return\n\t * @throws IOException\n\t */\n\tprivate ResponseWrapper setErrors(WebRequest webRequest) throws IOException {\n\t\tResponseWrapper responseWrapper = new ResponseWrapper<>();\n\t\tresponseWrapper.setResponsetime(LocalDateTime.now(ZoneId.of(\"UTC\")));\n\t\tString requestBody = null;\n\t\tServletWebRequest httpServletRequest = (ServletWebRequest) webRequest;\n\t\tif (httpServletRequest.getRequest() instanceof ContentCachingRequestWrapper) {\n\t\t\trequestBody = new String(((ContentCachingRequestWrapper) httpServletRequest.getRequest()).getContentAsByteArray());\n\t\t}\n\t\tif (EmptyCheckUtils.isNullEmpty(requestBody)) {\t\t\t\n\t\t\treturn responseWrapper;\n\t\t}\t\t\n\t\t\n\t\tobjectMapper.registerModule(new JavaTimeModule());\n\t\tJsonNode reqNode = objectMapper.readTree(requestBody);\n\t\tresponseWrapper.setId(reqNode.path(\"id\").asText());\n\t\tresponseWrapper.setVersion(reqNode.path(\"version\").asText());\n\t\treturn responseWrapper;\n\t}\n}\t" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/policy-management-service/src/main/java/io/mosip/pms/policy/errorMessages/DataViolationException.java", + "title": "DataViolationException.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/policy-management-service/src/main/java/io/mosip/pms/policy/errorMessages/DataViolationException.java", + "language": "java", + "content": "package io.mosip.pms.policy.errorMessages;\n\nimport io.mosip.kernel.core.exception.BaseUncheckedException;\n\npublic class DataViolationException extends BaseUncheckedException {\t\n\n\tprivate static final long serialVersionUID = -5811206135953350643L;\n\t\n\tpublic DataViolationException(String errorCode, String errorMessage)\n\t{\n\t\tsuper(errorCode, errorMessage);\n\t}\n\t\n\tpublic DataViolationException(String errorCode, String errorMessage, Throwable rootCause)\n\t{\n\t\tsuper(errorCode, errorMessage, rootCause);\n\t}\n\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/policy-management-service/src/main/java/io/mosip/pms/policy/errorMessages/PolicyManagementServiceException.java", + "title": "PolicyManagementServiceException.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/policy-management-service/src/main/java/io/mosip/pms/policy/errorMessages/PolicyManagementServiceException.java", + "language": "java", + "content": "package io.mosip.pms.policy.errorMessages;\n\n\nimport io.mosip.kernel.core.exception.BaseUncheckedException;\nimport io.mosip.kernel.core.logger.spi.Logger;\nimport io.mosip.pms.common.util.PMSLogger;\n\n/**\n * \n * @author Nagarjuna\n * @version 1.0\n */\npublic class PolicyManagementServiceException extends BaseUncheckedException {\n\n\tprivate static final Logger logger = PMSLogger.getLogger(PolicyManagementServiceException.class);\n\t\n\t/**\n\t * \n\t */\n\tprivate static final long serialVersionUID = -5832589186950826222L;\n\n\tpublic PolicyManagementServiceException() {\n\t\tsuper();\n\t\t\n\t}\n\n\tpublic PolicyManagementServiceException(String errorCode, String errorMessage, Throwable cause) {\n\t\tsuper(errorCode, errorMessage, cause);\n\t\tlogger.error(errorCode,errorMessage);\n\t\tlogger.error(cause.getMessage());\n\t\t\n\t}\n\n\tpublic PolicyManagementServiceException(String errorCode, String errorMessage) {\n\t\tsuper(errorCode, errorMessage);\n\t\tlogger.error(errorCode,errorMessage);\n\t}\n\n\tpublic PolicyManagementServiceException(String errorMessage) {\n\t\tsuper(errorMessage);\n\t\tlogger.error(errorMessage);\n\t}\n\t\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/policy-validator/src/main/java/io/mosip/pms/policy/validator/exception/InvalidPolicySchemaException.java", + "title": "InvalidPolicySchemaException.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/policy-validator/src/main/java/io/mosip/pms/policy/validator/exception/InvalidPolicySchemaException.java", + "language": "java", + "content": "package io.mosip.pms.policy.validator.exception;\n\nimport io.mosip.kernel.core.exception.BaseCheckedException;\nimport io.mosip.pms.policy.validator.constants.PolicyValidatorErrorConstant;\n\npublic class InvalidPolicySchemaException extends BaseCheckedException {\n\n\t/**\n\t * \n\t */\n\tprivate static final long serialVersionUID = -8957950467794649169L;\n\n\t/**\n\t * Constructor for Invalid IdSchema Exception class.\n\t * \n\t * @param errorCode the error code of the exception.\n\t * @param errorMessage the error message associated with the exception.\n\t */\n\tpublic InvalidPolicySchemaException(String errorCode, String errorMessage) {\n\t\tsuper(errorCode, errorMessage);\n\t}\n\t\n\tpublic InvalidPolicySchemaException(PolicyValidatorErrorConstant errorConstant, Throwable rootCause) {\n\t\tsuper(errorConstant.getErrorCode(), errorConstant.getMessage(), rootCause);\n\t}\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/policy-validator/src/main/java/io/mosip/pms/policy/validator/exception/PolicyIOException.java", + "title": "PolicyIOException.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/policy-validator/src/main/java/io/mosip/pms/policy/validator/exception/PolicyIOException.java", + "language": "java", + "content": "package io.mosip.pms.policy.validator.exception;\n\nimport io.mosip.kernel.core.exception.BaseCheckedException;\nimport io.mosip.pms.policy.validator.constants.PolicyValidatorErrorConstant;\n\npublic class PolicyIOException extends BaseCheckedException {\n\n\t/**\n\t * \n\t */\n\tprivate static final long serialVersionUID = -8957950467794649169L;\n\n\t/**\n\t * Constructor for Invalid IdSchema Exception class.\n\t * \n\t * @param errorCode the error code of the exception.\n\t * @param errorMessage the error message associated with the exception.\n\t */\n\tpublic PolicyIOException(String errorCode, String errorMessage) {\n\t\tsuper(errorCode, errorMessage);\n\t}\n\t\n\t\n\tpublic PolicyIOException(PolicyValidatorErrorConstant errorConstant, Throwable rootCause) {\n\t\tsuper(errorConstant.getErrorCode(), errorConstant.getMessage(), rootCause);\n\t}\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/policy-validator/src/main/java/io/mosip/pms/policy/validator/exception/PolicyObjectValidationFailedException.java", + "title": "PolicyObjectValidationFailedException.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/policy-validator/src/main/java/io/mosip/pms/policy/validator/exception/PolicyObjectValidationFailedException.java", + "language": "java", + "content": "package io.mosip.pms.policy.validator.exception;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\nimport io.mosip.kernel.core.exception.BaseCheckedException;\nimport io.mosip.pms.policy.validator.constants.PolicyValidatorErrorConstant;\n\npublic class PolicyObjectValidationFailedException extends BaseCheckedException {\n\n\t/**\n\t * Generated serialization ID.\n\t */\n\tprivate static final long serialVersionUID = -3849227719514230853L;\n\n\tList serviceErrors = new ArrayList<>();\n\t/**\n\t * Constructor for JsonValidationProcessingException class.\n\t * \n\t * @param errorCode the error code of the exception.\n\t * @param errorMessage the error message associated with the exception.\n\t */\n\tpublic PolicyObjectValidationFailedException(String errorCode, String errorMessage) {\n\t\tsuper(errorCode, errorMessage);\n\t}\n\n\t/**\n\t * Instantiates a new id object validation processing exception.\n\t *\n\t * @param errorConstant the error constant\n\t * @param errors the errors\n\t */\n\tpublic PolicyObjectValidationFailedException(PolicyValidatorErrorConstant errorConstant, List errors) {\n\t\tsuper(errors.get(0).getErrorCode(),errors.get(0).getMessage());\n\t\terrors.stream().forEach(error -> super.addInfo(error.getErrorCode(), error.getMessage()));\n\t\terrors.stream().forEach(error -> serviceErrors.add(new ServiceError(error.getErrorCode(), error.getMessage())));\n\t}\n\n\tpublic List getServiceErrors(){\n\t\treturn serviceErrors;\n\t}\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/.github/workflows/chart-lint-publish.yml", + "title": "chart-lint-publish.yml", + "repo": "mosip/partner-management-services", + "file_path": ".github/workflows/chart-lint-publish.yml", + "language": "yml", + "content": "name: Validate / Publish helm charts\n\non:\n release:\n types: [published]\n pull_request:\n types: [opened, reopened, synchronize]\n paths:\n - 'helm/**'\n workflow_dispatch:\n inputs:\n IGNORE_CHARTS:\n description: 'Provide list of charts to be ignored separated by pipe(|)'\n required: false\n default: '\"\"'\n type: string\n CHART_PUBLISH:\n description: 'Chart publishing to gh-pages branch'\n required: false\n default: 'NO'\n type: string\n options:\n - YES\n - NO\n INCLUDE_ALL_CHARTS:\n description: 'Include all charts for Linting/Publishing (YES/NO)'\n required: false\n default: 'NO'\n type: string\n options:\n - YES\n - NO\n push:\n branches:\n - '!release-branch'\n - '!master'\n - 1.*\n - 0.*\n - develop\n - MOSIP*\n - release*\n paths:\n - 'helm/**'\n\njobs:\n chart-lint-publish:\n uses: mosip/kattu/.github/workflows/chart-lint-publish.yml@master\n with:\n CHARTS_DIR: ./helm\n CHARTS_URL: https://mosip.github.io/mosip-helm\n REPOSITORY: mosip-helm\n BRANCH: gh-pages\n INCLUDE_ALL_CHARTS: \"${{ inputs.INCLUDE_ALL_CHARTS || 'NO' }}\"\n IGNORE_CHARTS: \"${{ inputs.IGNORE_CHARTS || '\\\"\\\"' }}\"\n CHART_PUBLISH: \"${{ inputs.CHART_PUBLISH || 'YES' }}\"\n LINTING_CHART_SCHEMA_YAML_URL: \"https://raw.githubusercontent.com/mosip/kattu/master/.github/helm-lint-configs/chart-schema.yaml\"\n LINTING_LINTCONF_YAML_URL: \"https://raw.githubusercontent.com/mosip/kattu/master/.github/helm-lint-configs/lintconf.yaml\"\n LINTING_CHART_TESTING_CONFIG_YAML_URL: \"https://raw.githubusercontent.com/mosip/kattu/master/.github/helm-lint-configs/chart-testing-config.yaml\"\n LINTING_HEALTH_CHECK_SCHEMA_YAML_URL: \"https://raw.githubusercontent.com/mosip/kattu/master/.github/helm-lint-configs/health-check-schema.yaml\"\n secrets:\n TOKEN: ${{ secrets.ACTION_PAT }}\n SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK }}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/.github/workflows/push-trigger.yml", + "title": "push-trigger.yml", + "repo": "mosip/partner-management-services", + "file_path": ".github/workflows/push-trigger.yml", + "language": "yml", + "content": "name: Maven Package upon a push\n\non:\n release:\n types: [published]\n pull_request:\n types: [opened, reopened, synchronize]\n workflow_dispatch:\n inputs:\n message:\n description: 'Message for manually triggering'\n required: false\n default: 'Triggered for Updates'\n type: string\n push:\n branches:\n - '!release-branch'\n - release*\n - master\n - 1.*\n - develop*\n - MOSIP*\n\njobs:\n build-maven-partner:\n uses: mosip/kattu/.github/workflows/maven-build.yml@master\n with:\n SERVICE_LOCATION: ./partner\n BUILD_ARTIFACT: partner\n secrets:\n OSSRH_USER: ${{ secrets.OSSRH_USER }}\n OSSRH_SECRET: ${{ secrets.OSSRH_SECRET }}\n OSSRH_TOKEN: ${{ secrets.OSSRH_TOKEN }}\n GPG_SECRET: ${{ secrets.GPG_SECRET }}\n SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK }}\n\n publish_to_nexus:\n if: \"${{ !contains(github.ref, 'master') && github.event_name != 'pull_request' && github.event_name != 'release' && github.event_name != 'prerelease' && github.event_name != 'publish' }}\"\n\n needs: build-maven-partner\n uses: mosip/kattu/.github/workflows/maven-publish-to-nexus.yml@master\n with:\n SERVICE_LOCATION: ./partner\n secrets:\n OSSRH_USER: ${{ secrets.OSSRH_USER }}\n OSSRH_SECRET: ${{ secrets.OSSRH_SECRET }}\n OSSRH_URL: ${{ secrets.OSSRH_CENTRAL_URL }}\n OSSRH_TOKEN: ${{ secrets.OSSRH_TOKEN }}\n GPG_SECRET: ${{ secrets.GPG_SECRET }}\n SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK }}\n\n build-dockers:\n needs: build-maven-partner\n strategy:\n matrix:\n include:\n - SERVICE_LOCATION: 'partner/partner-management-service'\n SERVICE_NAME: 'partner-management-service'\n BUILD_ARTIFACT: 'partner'\n - SERVICE_LOCATION: 'partner/policy-management-service'\n SERVICE_NAME: 'policy-management-service'\n BUILD_ARTIFACT: 'partner'\n fail-fast: false\n name: ${{ matrix.SERVICE_NAME }}\n uses: mosip/kattu/.github/workflows/docker-build.yml@master\n with:\n SERVICE_LOCATION: ${{ matrix.SERVICE_LOCATION }}\n SERVICE_NAME: ${{ matrix.SERVICE_NAME }}\n BUILD_ARTIFACT: ${{ matrix.BUILD_ARTIFACT }}\n secrets:\n DEV_NAMESPACE_DOCKER_HUB: ${{ secrets.DEV_NAMESPACE_DOCKER_HUB }}\n ACTOR_DOCKER_HUB: ${{ secrets.ACTOR_DOCKER_HUB }}\n RELEASE_DOCKER_HUB: ${{ secrets.RELEASE_DOCKER_HUB }}\n SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK }}\n\n sonar_analysis:\n needs: build-maven-partner\n if: \"${{ github.event_name != 'pull_request' }}\"\n uses: mosip/kattu/.github/workflows/maven-sonar-analysis.yml@master-java21\n with:\n SERVICE_LOCATION: ./partner\n secrets:\n SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}\n ORG_KEY: ${{ secrets.ORG_KEY }}\n OSSRH_USER: ${{ secrets.OSSRH_USER }}\n OSSRH_SECRET: ${{ secrets.OSSRH_SECRET }}\n OSSRH_TOKEN: ${{ secrets.OSSRH_TOKEN }}\n GPG_SECRET: ${{ secrets.GPG_SECRET }}\n SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK }}\n\n build-maven-apitest-pms:\n uses: mosip/kattu/.github/workflows/maven-build.yml@master-java21\n with:\n SERVICE_LOCATION: ./api-test\n BUILD_ARTIFACT: apitest-pms\n secrets:\n OSSRH_USER: ${{ secrets.OSSRH_USER }}\n OSSRH_SECRET: ${{ secrets.OSSRH_SECRET }}\n OSSRH_TOKEN: ${{ secrets.OSSRH_TOKEN }}\n GPG_SECRET: ${{ secrets.GPG_SECRET }}\n SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK }}\n\n# publish_to_nexus_apitest_pms:\n# if: \"${{ !contains(github.ref, 'master') && github.event_name != 'pull_request' && github.event_name != 'release' && github.event_name != 'prerelease' && github.event_name != 'publish' }}\"\n# needs: build-maven-apitest-pms\n# uses: mosip/kattu/.github/workflows/maven-publish-to-nexus.yml@master-java21\n# with:\n# SERVICE_LOCATION: ./api-test\n# secrets:\n# OSSRH_USER: ${{ secrets.OSSRH_USER }}\n# OSSRH_SECRET: ${{ secrets.OSSRH_SECRET }}\n# OSSRH_URL: ${{ secrets.OSSRH_CENTRAL_URL }}\n# OSSRH_TOKEN: ${{ secrets.OSSRH_TOKEN }}\n# GPG_SECRET: ${{ secrets.GPG_SECRET }}\n# SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK }}\n\n build-apitest-pms-local:\n needs: build-maven-apitest-pms\n runs-on: ubuntu-latest\n env:\n NAMESPACE: ${{ secrets.dev_namespace_docker_hub }}\n SERVICE_NAME: apitest-pms\n SERVICE_LOCATION: api-test\n BUILD_ARTIFACT: apitest-pms-local\n steps:\n - uses: actions/checkout@v3\n - name: Set up JDK 21\n uses: actions/setup-java@v3\n with:\n distribution: 'temurin'\n java-version: 21\n server-id: ossrh # Value of the distributionManagement/repository/id field of the pom.xml\n settings-path: ${{ github.workspace }} # location for the settings.xml file\n - name: Setup the settings file for ossrh server\n run: echo \" ossrh ${{secrets.ossrh_user}} ${{secrets.ossrh_secret}} ossrh true gpg2 ${{secrets.gpg_secret}} allow-snapshots true snapshots-repo https://oss.sonatype.org/content/repositories/snapshots false true releases-repo https://oss.sonatype.org/service/local/staging/deploy/maven2 true false sonar . https://sonarcloud.io false \" > $GITHUB_WORKSPACE/settings.xml\n - name: Build Automationtests with Maven\n run: |\n cd ${{ env.SERVICE_LOCATION}}\n mvn clean package -s $GITHUB_WORKSPACE/settings.xml\n - name: Copy configuration files to target directory.\n run: |\n cp -r ${{ env.SERVICE_LOCATION}}/target/classes/config ${{ env.SERVICE_LOCATION}}/target/config\n cp -r ${{ env.SERVICE_LOCATION}}/testNgXmlFiles ${{ env.SERVICE_LOCATION}}/target/testNgXmlFiles\n - name: Ready the springboot artifacts\n if: ${{ !contains(github.ref, 'master') || !contains(github.ref, 'main') }}\n run: |\n ## FIND JARS & COPY ONLY EXECUTABLE JARs STORED UNDER TARGET DIRECTORY \n find ${{ env.SERVICE_LOCATION }} -path '*/target/*' -exec zip ${{ env.BUILD_ARTIFACT }}.zip {} +\n - name: Upload the springboot jars\n if: ${{ !contains(github.ref, 'master') || !contains(github.ref, 'main') }}\n uses: actions/upload-artifact@v4\n with:\n name: ${{ env.BUILD_ARTIFACT }}\n path: ${{ env.BUILD_ARTIFACT }}.zip\n - uses: 8398a7/action-slack@v3\n with:\n status: ${{ job.status }}\n fields: repo,message,author,commit,workflow,job # selectable (default: repo,message)\n env:\n SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }} # required\n if: failure() # Pick up events even if the job fails or is canceled.\n\n build-dockers_apitest_pms:\n needs: build-apitest-pms-local\n strategy:\n matrix:\n include:\n - SERVICE_LOCATION: 'api-test'\n SERVICE_NAME: 'apitest-pms'\n BUILD_ARTIFACT: 'apitest-pms-local'\n ONLY_DOCKER: true\n fail-fast: false\n name: ${{ matrix.SERVICE_NAME }}\n uses: mosip/kattu/.github/workflows/docker-build.yml@master-java21\n with:\n SERVICE_LOCATION: ${{ matrix.SERVICE_LOCATION }}\n SERVICE_NAME: ${{ matrix.SERVICE_NAME }}\n BUILD_ARTIFACT: ${{ matrix.BUILD_ARTIFACT }}\n ONLY_DOCKER: ${{ matrix.ONLY_DOCKER }}\n secrets:\n DEV_NAMESPACE_DOCKER_HUB: ${{ secrets.DEV_NAMESPACE_DOCKER_HUB }}\n ACTOR_DOCKER_HUB: ${{ secrets.ACTOR_DOCKER_HUB }}\n RELEASE_DOCKER_HUB: ${{ secrets.RELEASE_DOCKER_HUB }}\n SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK }}\n\n sonar_analysis_apitest_pms:\n needs: build-maven-apitest-pms\n if: \"${{ github.event_name != 'pull_request' }}\"\n uses: mosip/kattu/.github/workflows/maven-sonar-analysis.yml@master-java21\n with:\n SERVICE_LOCATION: ./api-test\n secrets:\n SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}\n ORG_KEY: ${{ secrets.ORG_KEY }}\n OSSRH_USER: ${{ secrets.OSSRH_USER }}\n OSSRH_SECRET: ${{ secrets.OSSRH_SECRET }}\n OSSRH_TOKEN: ${{ secrets.OSSRH_TOKEN }}\n GPG_SECRET: ${{ secrets.GPG_SECRET }}\n SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK }}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/.github/workflows/release-changes.yml", + "title": "release-changes.yml", + "repo": "mosip/partner-management-services", + "file_path": ".github/workflows/release-changes.yml", + "language": "yml", + "content": "name: Release/pre-release Preparation.\n\non:\n workflow_dispatch:\n inputs:\n MESSAGE:\n description: 'Triggered for release or pe-release'\n required: false\n default: 'Release Preparation'\n RELEASE_TAG:\n description: 'tag to update'\n required: true\n SNAPSHOT_TAG:\n description: 'tag to be replaced'\n required: true\n BASE:\n description: 'base branch for PR'\n required: true\njobs:\n maven-release-preparation:\n uses: mosip/kattu/.github/workflows/release-changes.yml@master\n with:\n MESSAGE: ${{ inputs.MESSAGE }}\n RELEASE_TAG: ${{ inputs.RELEASE_TAG }}\n SNAPSHOT_TAG: ${{ inputs.SNAPSHOT_TAG }}\n BASE: ${{ inputs.BASE }}\n secrets:\n SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK }}\n ACTION_PAT: ${{ secrets.ACTION_PAT }}" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/.github/workflows/tag.yml", + "title": "tag.yml", + "repo": "mosip/partner-management-services", + "file_path": ".github/workflows/tag.yml", + "language": "yml", + "content": "name: Tagging of repos\n\non:\n workflow_dispatch:\n inputs:\n TAG:\n description: 'Tag to be published'\n required: true\n type: string\n BODY:\n description: 'Release body message'\n required: true\n default: 'Changes in this Release'\n type: string\n PRE_RELEASE:\n description: 'Pre-release? True/False'\n required: true\n default: False\n type: string\n DRAFT:\n description: 'Draft? True/False'\n required: false\n default: False\n type: string\n\njobs:\n tag-branch:\n uses: mosip/kattu/.github/workflows/tag.yml@master\n with:\n TAG: ${{ inputs.TAG }}\n BODY: ${{ inputs.BODY }}\n PRE_RELEASE: ${{ inputs.PRE_RELEASE }}\n DRAFT: ${{ inputs.DRAFT }}\n secrets:\n SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK }}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/.travis.yml", + "title": ".travis.yml", + "repo": "mosip/partner-management-services", + "file_path": ".travis.yml", + "language": "yml", + "content": "language: java\r\njdk: openjdk11\r\ninstall: true\r\ncache:\r\n directories:\r\n - $HOME/.m2\r\nscript: cd partner && mvn install -DskipTests=false -Dgpg.skip=true -Dmaven.javadoc.skip=true -B -V\r\n\r\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/db_scripts/mosip_pms/db.sql", + "title": "db.sql", + "repo": "mosip/partner-management-services", + "file_path": "db_scripts/mosip_pms/db.sql", + "language": "sql", + "content": "CREATE DATABASE mosip_pms \n\tENCODING = 'UTF8' \n\tTABLESPACE = pg_default \n\tOWNER = postgres;\n\nCOMMENT ON DATABASE mosip_pms IS 'PMS related entities and its data is stored in this database';\n\n\\c mosip_pms \n\nDROP SCHEMA IF EXISTS pms CASCADE;\nCREATE SCHEMA pms;\nALTER SCHEMA pms OWNER TO postgres;\nALTER DATABASE mosip_pms SET search_path TO pms,pg_catalog,public;\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/db_scripts/mosip_pms/ddl.sql", + "title": "ddl.sql", + "repo": "mosip/partner-management-services", + "file_path": "db_scripts/mosip_pms/ddl.sql", + "language": "sql", + "content": "\\c mosip_pms \n\n\\ir ddl/pms-auth_policy.sql\n\\ir ddl/pms-auth_policy_h.sql\n\\ir ddl/pms-device_detail.sql\n\\ir ddl/pms-device_detail_sbi.sql\n\\ir ddl/pms-ftp_chip_detail.sql\n\\ir ddl/pms-misp.sql\n\\ir ddl/pms-misp_license.sql\n\\ir ddl/pms-otp_transaction.sql\n\\ir ddl/pms-partner.sql\n\\ir ddl/pms-partner_contact.sql\n\\ir ddl/pms-partner_h.sql\n\\ir ddl/pms-partner_policy.sql\n\\ir ddl/pms-partner_policy_bioextract.sql\n\\ir ddl/pms-partner_policy_credential_type.sql\n\\ir ddl/pms-partner_policy_request.sql\n\\ir ddl/pms-partner_type.sql\n\\ir ddl/pms-policy_group.sql\n\\ir ddl/pms-reg_device_sub_type.sql\n\\ir ddl/pms-reg_device_type.sql\n\\ir ddl/pms-secure_biometric_interface.sql\n\\ir ddl/pms-secure_biometric_interface_h.sql\n\\ir ddl/pms-tspid_seq.sql\n\\ir ddl/pms-oidc_client.sql\n\\ir ddl/pms-user_details.sql\n\\ir ddl/pms-fk.sql" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/db_scripts/mosip_pms/ddl/pms-auth_policy.sql", + "title": "pms-auth_policy.sql", + "repo": "mosip/partner-management-services", + "file_path": "db_scripts/mosip_pms/ddl/pms-auth_policy.sql", + "language": "sql", + "content": "-- -------------------------------------------------------------------------------------------------\n-- Database Name: mosip_pms\n-- Table Name : pms.auth_policy\n-- Purpose : Authentication Policy: The authentication policy is defined in this table. An authentication policy can be of single or a group of authentication types supported by the auth services of MOSIP application.\n-- \n-- Create By \t: Sadanandegowda DM\n-- Created Date\t: Aug-2020\n-- \n-- Modified Date Modified By Comments / Remarks\n-- ------------------------------------------------------------------------------------------\n-- Aug-2020 Sadanndegowda Added policy_type, version, schema and validity\n-- Aug-2020 Sadanndegowda Updated Schema name\n-- Jan-2021\t\tRam Bhatt\t Set is_deleted flag to not null and default false \n-- Mar-2021\t\tRam Bhatt\t Reverting is_deleted flag not null changes for 1.1.5 \n-- ------------------------------------------------------------------------------------------\n\n-- object: pms.auth_policy | type: TABLE --\n-- DROP TABLE IF EXISTS pms.auth_policy CASCADE;\nCREATE TABLE pms.auth_policy(\n\tid character varying(36) NOT NULL,\n\tpolicy_group_id character varying(36),\n\tname character varying(128) NOT NULL,\n\tdescr character varying(256) NOT NULL,\n\tpolicy_file_id character varying(5120) NOT NULL,\n\tpolicy_type character varying(36) NOT NULL,\n\tversion character varying(8) NOT NULL,\n\tpolicy_schema character varying(5120),\n\tvalid_from_date timestamp NOT NULL,\n\tvalid_to_date timestamp NOT NULL,\n\tis_active boolean NOT NULL,\n\tcr_by character varying(256) NOT NULL,\n\tcr_dtimes timestamp NOT NULL,\n\tupd_by character varying(256),\n\tupd_dtimes timestamp,\n\tis_deleted boolean DEFAULT FALSE,\n\tdel_dtimes timestamp,\n\tCONSTRAINT pk_apol PRIMARY KEY (id),\n\tCONSTRAINT uk_apol UNIQUE (policy_group_id,name)\n\n);\n-- ddl-end --\nCOMMENT ON TABLE pms.auth_policy IS 'Authentication Policy: The authentication policy is defined in this table. An authentication policy can be of single or a group of authentication types supported by the auth services of MOSIP application. ';\n-- ddl-end --\nCOMMENT ON COLUMN pms.auth_policy.id IS 'ID: A unique identity ';\n-- ddl-end --\nCOMMENT ON COLUMN pms.auth_policy.policy_group_id IS 'Polocy Group ID: Id of the policy group to which this policy belongs.';\n-- ddl-end --\nCOMMENT ON COLUMN pms.auth_policy.name IS 'Name: Name of the policy';\n-- ddl-end --\nCOMMENT ON COLUMN pms.auth_policy.descr IS 'Description: Description of the policy';\n-- ddl-end --\nCOMMENT ON COLUMN pms.auth_policy.policy_file_id IS 'Policy File ID: Policy are defined by Policy / Partner manager are stored in file system or key based storages like CEPH. The policy file details (location / id / key) is stored here.';\n-- ddl-end --\nCOMMENT ON COLUMN pms.auth_policy.policy_type IS 'Policy Type: Type of the policy for example authentication, Data_Share, Credential_Issuance...etc.';\n-- ddl-end --\nCOMMENT ON COLUMN pms.auth_policy.version IS 'Policy Version : Version number of the policy, Version to be upgraded based on changes to the policy';\n-- ddl-end --\nCOMMENT ON COLUMN pms.auth_policy.policy_schema IS 'Policy Schema: Policy schema, schema is populated based on policy type';\n-- ddl-end --\nCOMMENT ON COLUMN pms.auth_policy.valid_from_date IS 'Policy Valid From Date: Date and time from when the policy is valid';\n-- ddl-end --\nCOMMENT ON COLUMN pms.auth_policy.valid_to_date IS 'Valid To Date: Date and time till when the policy is valid ';\n-- ddl-end --\nCOMMENT ON COLUMN pms.auth_policy.is_active IS 'IS_Active : Flag to mark whether the record is Active or In-active';\n-- ddl-end --\nCOMMENT ON COLUMN pms.auth_policy.cr_by IS 'Created By : ID or name of the user who create / insert record';\n-- ddl-end --\nCOMMENT ON COLUMN pms.auth_policy.cr_dtimes IS 'Created DateTimestamp : Date and Timestamp when the record is created/inserted';\n-- ddl-end --\nCOMMENT ON COLUMN pms.auth_policy.upd_by IS 'Updated By : ID or name of the user who update the record with new values';\n-- ddl-end --\nCOMMENT ON COLUMN pms.auth_policy.upd_dtimes IS 'Updated DateTimestamp : Date and Timestamp when any of the fields in the record is updated with new values.';\n-- ddl-end --\nCOMMENT ON COLUMN pms.auth_policy.is_deleted IS 'IS_Deleted : Flag to mark whether the record is Soft deleted.';\n-- ddl-end --\nCOMMENT ON COLUMN pms.auth_policy.del_dtimes IS 'Deleted DateTimestamp : Date and Timestamp when the record is soft deleted with is_deleted=TRUE';\n-- ddl-end --\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/db_scripts/mosip_pms/ddl/pms-auth_policy_h.sql", + "title": "pms-auth_policy_h.sql", + "repo": "mosip/partner-management-services", + "file_path": "db_scripts/mosip_pms/ddl/pms-auth_policy_h.sql", + "language": "sql", + "content": "-- -------------------------------------------------------------------------------------------------\n-- Database Name: mosip_pms\n-- Table Name : pms.auth_policy_h\n-- Purpose : Authentication Policy History: This to track changes to master record whenever there is an INSERT/UPDATE/DELETE ( soft delete ), Effective DateTimestamp is used for identifying latest or point in time information. Refer pmp.auth_policy table description for details.\n-- \n-- Create By \t: Sadanandegowda DM\n-- Created Date\t: Aug-2020\n-- \n-- Modified Date Modified By Comments / Remarks\n-- ------------------------------------------------------------------------------------------\n-- Aug-2020 Sadanndegowda Added policy_type, version, schema and validity\n-- Aug-2020 Sadanndegowda Updated Schema name \n-- Jan-2021\t\tRam Bhatt\t Set is_deleted flag to not null and default false \n-- Mar-2021\t\tRam Bhatt\t Reverting is_deleted flag not null changes for 1.1.5 \n-- ------------------------------------------------------------------------------------------\n\n-- object: pms.auth_policy_h | type: TABLE --\n-- DROP TABLE IF EXISTS pms.auth_policy_h CASCADE;\nCREATE TABLE pms.auth_policy_h(\n\tid character varying(36) NOT NULL,\n\teff_dtimes timestamp NOT NULL,\n\tpolicy_group_id character varying(36),\n\tname character varying(128) NOT NULL,\n\tdescr character varying(256) NOT NULL,\n\tpolicy_file_id character varying(5120) NOT NULL,\n\tpolicy_type character varying(36) NOT NULL,\n\tversion character varying(8) NOT NULL,\n\tpolicy_schema character varying(5120),\n\tvalid_from_date timestamp NOT NULL,\n\tvalid_to_date timestamp NOT NULL,\n\tis_active boolean NOT NULL,\n\tcr_by character varying(256) NOT NULL,\n\tcr_dtimes timestamp NOT NULL,\n\tupd_by character varying(256),\n\tupd_dtimes timestamp,\n\tis_deleted boolean DEFAULT FALSE,\n\tdel_dtimes timestamp,\n\tCONSTRAINT pk_apolh PRIMARY KEY (id,eff_dtimes),\n\tCONSTRAINT uk_apolh UNIQUE (eff_dtimes,policy_group_id,name)\n\n);\n-- ddl-end --\nCOMMENT ON TABLE pms.auth_policy_h IS 'Authentication Policy History: This to track changes to master record whenever there is an INSERT/UPDATE/DELETE ( soft delete ), Effective DateTimestamp is used for identifying latest or point in time information. Refer pmp.auth_policy table description for details. \n';\n-- ddl-end --\nCOMMENT ON COLUMN pms.auth_policy_h.id IS 'ID: A unique identity ';\n-- ddl-end --\nCOMMENT ON COLUMN pms.auth_policy_h.eff_dtimes IS 'Effective Date Timestamp : This to track master record whenever there is an INSERT/UPDATE/DELETE ( soft delete ). The current record is effective from this date-time. ';\n-- ddl-end --\nCOMMENT ON COLUMN pms.auth_policy_h.policy_group_id IS 'Polocy Group ID: Id of the policy group to which this policy belongs.';\n-- ddl-end --\nCOMMENT ON COLUMN pms.auth_policy_h.name IS 'Name: Name of the policy';\n-- ddl-end --\nCOMMENT ON COLUMN pms.auth_policy_h.descr IS 'Description: Description of the policy';\n-- ddl-end --\nCOMMENT ON COLUMN pms.auth_policy_h.policy_file_id IS 'Policy File ID: Policy are defined by Policy / Partner manager are stored in file system or key based storages like CEPH. The policy file details (location / id / key) is stored here.';\n-- ddl-end --\nCOMMENT ON COLUMN pms.auth_policy_h.policy_type IS 'Policy Type: Type of the policy for example authentication, Data_Share, Credential_Issuance...etc.';\n-- ddl-end --\nCOMMENT ON COLUMN pms.auth_policy_h.version IS 'Policy Version : Version number of the policy, Version to be upgraded based on changes to the policy';\n-- ddl-end --\nCOMMENT ON COLUMN pms.auth_policy_h.policy_schema IS 'Policy Schema: Policy schema, schema is populated based on policy type';\n-- ddl-end --\nCOMMENT ON COLUMN pms.auth_policy_h.valid_from_date IS 'Policy Valid From Date: Date and time from when the policy is valid';\n-- ddl-end --\nCOMMENT ON COLUMN pms.auth_policy_h.valid_to_date IS 'Valid To Date: Date and time till when the policy is valid';\n-- ddl-end --\nCOMMENT ON COLUMN pms.auth_policy_h.is_active IS 'IS_Active : Flag to mark whether the record is Active or In-active';\n-- ddl-end --\nCOMMENT ON COLUMN pms.auth_policy_h.cr_by IS 'Created By : ID or name of the user who create / insert record';\n-- ddl-end --\nCOMMENT ON COLUMN pms.auth_policy_h.cr_dtimes IS 'Created DateTimestamp : Date and Timestamp when the record is created/inserted';\n-- ddl-end --\nCOMMENT ON COLUMN pms.auth_policy_h.upd_by IS 'Updated By : ID or name of the user who update the record with new values';\n-- ddl-end --\nCOMMENT ON COLUMN pms.auth_policy_h.upd_dtimes IS 'Updated DateTimestamp : Date and Timestamp when any of the fields in the record is updated with new values.';\n-- ddl-end --\nCOMMENT ON COLUMN pms.auth_policy_h.is_deleted IS 'IS_Deleted : Flag to mark whether the record is Soft deleted.';\n-- ddl-end --\nCOMMENT ON COLUMN pms.auth_policy_h.del_dtimes IS 'Deleted DateTimestamp : Date and Timestamp when the record is soft deleted with is_deleted=TRUE';\n-- ddl-end --\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/db_scripts/mosip_pms/ddl/pms-device_detail.sql", + "title": "pms-device_detail.sql", + "repo": "mosip/partner-management-services", + "file_path": "db_scripts/mosip_pms/ddl/pms-device_detail.sql", + "language": "sql", + "content": "-- -------------------------------------------------------------------------------------------------\n-- Database Name: mosip_pms\n-- Table Name \t: pms.device_detail\n-- Purpose \t: Device Detail : Details of the device like device provider id, make , model, device type, device sub type, approval status are stored here\n-- \n-- Create By \t: Ram Bhatt\n-- Created Date\t: Nov-2021\n-- \n-- Modified Date Modified By Comments / Remarks\n-- ------------------------------------------------------------------------------------------\n\n-- ------------------------------------------------------------------------------------------\n-- object: pms.device_detail | type: TABLE --\n-- DROP TABLE IF EXISTS pms.device_detail CASCADE;\nCREATE TABLE pms.device_detail(\n\tid character varying(36) NOT NULL,\n\tdprovider_id character varying(36) NOT NULL,\n\tdtype_code character varying(36) NOT NULL,\n\tdstype_code character varying(36) NOT NULL,\n\tmake character varying(36) NOT NULL,\n\tmodel character varying(36) NOT NULL,\n\tpartner_org_name character varying(128),\n\tapproval_status character varying(36) NOT NULL,\n\tis_active boolean NOT NULL,\n\tcr_by character varying(256) NOT NULL,\n\tcr_dtimes timestamp NOT NULL,\n\tupd_by character varying(256),\n\tupd_dtimes timestamp,\n\tis_deleted boolean DEFAULT FALSE,\n\tdel_dtimes timestamp,\n\tCONSTRAINT pk_devdtl_id PRIMARY KEY (id)\n\n);\n-- ddl-end --\nCOMMENT ON TABLE pms.device_detail IS 'Device Detail : Details of the device like device provider id, make , model, device type, device sub type, approval status are stored here.';\n-- ddl-end --\nCOMMENT ON COLUMN pms.device_detail.id IS 'ID: Unigue service ID, Service ID is geerated by the MOSIP system';\n-- ddl-end --\nCOMMENT ON COLUMN pms.device_detail.dprovider_id IS 'Device Provider ID : Device provider ID, Referenced from master.device_provider.id';\n-- ddl-end --\nCOMMENT ON COLUMN pms.device_detail.dtype_code IS 'Device Type Code: Code of the device type, Referenced from master.reg_device_type.code';\n-- ddl-end --\nCOMMENT ON COLUMN pms.device_detail.dstype_code IS ' Device Sub Type Code: Code of the device sub type, Referenced from master.reg_device_sub_type.code';\n-- ddl-end --\nCOMMENT ON COLUMN pms.device_detail.make IS 'Make: Make of the device';\n-- ddl-end --\nCOMMENT ON COLUMN pms.device_detail.model IS ' Model: Model of the device';\n-- ddl-end --\nCOMMENT ON COLUMN pms.device_detail.partner_org_name IS 'Partner Organisation Name';\n-- ddl-end --\nCOMMENT ON COLUMN pms.device_detail.approval_status IS 'Approval Status';\n-- ddl-end --\nCOMMENT ON COLUMN pms.device_detail.is_active IS 'IS_Active : Flag to mark whether the record/device is Active or In-active';\n-- ddl-end --\nCOMMENT ON COLUMN pms.device_detail.cr_by IS 'Created By : ID or name of the user who create / insert record';\n-- ddl-end --\nCOMMENT ON COLUMN pms.device_detail.cr_dtimes IS 'Created DateTimestamp : Date and Timestamp when the record is created/inserted';\n-- ddl-end --\nCOMMENT ON COLUMN pms.device_detail.upd_by IS 'Updated By : ID or name of the user who update the record with new values';\n-- ddl-end --\nCOMMENT ON COLUMN pms.device_detail.upd_dtimes IS 'Updated DateTimestamp : Date and Timestamp when any of the fields in the record is updated with new values.';\n-- ddl-end --\nCOMMENT ON COLUMN pms.device_detail.is_deleted IS 'IS_Deleted : Flag to mark whether the record is Soft deleted.';\n-- ddl-end --\nCOMMENT ON COLUMN pms.device_detail.del_dtimes IS 'Deleted DateTimestamp : Date and Timestamp when the record is soft deleted with is_deleted=TRUE';\n-- ddl-end --\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/db_scripts/mosip_pms/ddl/pms-device_detail_sbi.sql", + "title": "pms-device_detail_sbi.sql", + "repo": "mosip/partner-management-services", + "file_path": "db_scripts/mosip_pms/ddl/pms-device_detail_sbi.sql", + "language": "sql", + "content": "-- -------------------------------------------------------------------------------------------------\n-- Database Name: mosip_pms\n-- Table Name \t: pms.device_detail\n-- Purpose \t: Device Detail SBI : Mapping of device details and SBI\n-- \n-- Create By \t: Ram Bhatt\n-- Created Date\t: Dec-2021\n-- \n-- Modified Date Modified By Comments / Remarks\n-- ------------------------------------------------------------------------------------------\n\n-- ------------------------------------------------------------------------------------------\n-- object: pms.device_detail | type: TABLE --\n-- DROP TABLE IF EXISTS pms.device_detail_sbi CASCADE;\nCREATE TABLE pms.device_detail_sbi(\n\tdprovider_id character varying(36) NOT NULL,\n\tpartner_org_name character varying(128),\n\tdevice_detail_id character varying(36) NOT NULL,\n\tsbi_id character varying(36) NOT NULL,\n\tis_active boolean NOT NULL,\n\tcr_by character varying(256) NOT NULL,\n\tcr_dtimes timestamp NOT NULL,\n\tupd_by character varying(256),\n\tupd_dtimes timestamp,\n\tis_deleted boolean DEFAULT FALSE,\n\tdel_dtimes timestamp\n\n);\n-- ddl-end --\n\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/db_scripts/mosip_pms/ddl/pms-fk.sql", + "title": "pms-fk.sql", + "repo": "mosip/partner-management-services", + "file_path": "db_scripts/mosip_pms/ddl/pms-fk.sql", + "language": "sql", + "content": "ALTER TABLE pms.auth_policy ADD CONSTRAINT fk_apol_polg FOREIGN KEY (policy_group_id)\nREFERENCES pms.policy_group (id) MATCH FULL\nON DELETE NO ACTION ON UPDATE NO ACTION;\n\nALTER TABLE pms.partner ADD CONSTRAINT fk_part_code FOREIGN KEY (partner_type_code)\nREFERENCES pms.partner_type (code) MATCH FULL\nON DELETE NO ACTION ON UPDATE NO ACTION;\n\nALTER TABLE pms.partner_contact ADD CONSTRAINT fk_partcnt_id FOREIGN KEY (partner_id)\nREFERENCES pms.partner (id) MATCH FULL\nON DELETE NO ACTION ON UPDATE NO ACTION;\n\nALTER TABLE pms.partner_policy ADD CONSTRAINT fk_ppol_part FOREIGN KEY (part_id)\nREFERENCES pms.partner (id) MATCH FULL\nON DELETE NO ACTION ON UPDATE NO ACTION;\n\nALTER TABLE pms.partner_policy ADD CONSTRAINT fk_ppol_apol FOREIGN KEY (policy_id)\nREFERENCES pms.auth_policy (id) MATCH FULL\nON DELETE NO ACTION ON UPDATE NO ACTION;\n\nALTER TABLE pms.partner_policy_request ADD CONSTRAINT fk_papr_part FOREIGN KEY (part_id)\nREFERENCES pms.partner (id) MATCH FULL\nON DELETE NO ACTION ON UPDATE NO ACTION;\n\nALTER TABLE pms.partner_policy_bioextract ADD CONSTRAINT fk_ppbe_part FOREIGN KEY (part_id)\nREFERENCES pms.partner (id) MATCH FULL\nON DELETE NO ACTION ON UPDATE NO ACTION;\n\nALTER TABLE pms.partner_policy_bioextract ADD CONSTRAINT fk_ppbe_pol FOREIGN KEY (policy_id)\nREFERENCES pms.auth_policy (id) MATCH FULL\nON DELETE NO ACTION ON UPDATE NO ACTION;\n\nALTER TABLE pms.partner_policy_credential_type ADD CONSTRAINT fk_part_id FOREIGN KEY (part_id)\nREFERENCES pms.partner (id) MATCH SIMPLE\nON DELETE NO ACTION ON UPDATE NO ACTION;\n\nALTER TABLE pms.partner_policy_credential_type ADD CONSTRAINT fk_pol_id FOREIGN KEY (policy_id)\nREFERENCES pms.auth_policy (id) MATCH FULL\nON DELETE NO ACTION ON UPDATE NO ACTION;\n\nALTER TABLE pms.device_detail ADD CONSTRAINT fk_devdtl_id FOREIGN KEY (dtype_code,dstype_code)\nREFERENCES pms.reg_device_sub_type (dtyp_code,code) MATCH FULL\nON DELETE NO ACTION ON UPDATE NO ACTION;\n\nALTER TABLE pms.reg_device_sub_type ADD CONSTRAINT fk_rdstyp_dtype_code FOREIGN KEY (dtyp_code)\nREFERENCES pms.reg_device_type (code) MATCH FULL\nON DELETE NO ACTION ON UPDATE NO ACTION;\n\n-- Creating unique index for make, model, and approval status\nCREATE UNIQUE INDEX uk_devdtl_make_model_approval_status\nON pms.device_detail (dprovider_id,dtype_code,dstype_code,make,model)\nWHERE approval_status != 'rejected' AND NOT (approval_status = 'approved' AND is_active = false);\n\n-- Creating unique index for make, model, and approval status\nCREATE UNIQUE INDEX uk_fcdtl_make_model_approval_status\nON pms.ftp_chip_detail (foundational_trust_provider_id, make, model)\nWHERE approval_status != 'rejected' AND NOT (approval_status = 'approved' AND is_active = false);" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/db_scripts/mosip_pms/ddl/pms-ftp_chip_detail.sql", + "title": "pms-ftp_chip_detail.sql", + "repo": "mosip/partner-management-services", + "file_path": "db_scripts/mosip_pms/ddl/pms-ftp_chip_detail.sql", + "language": "sql", + "content": "-- -------------------------------------------------------------------------------------------------\n-- Database Name: mosip_pms\n-- Table Name \t: pms.ftp_chip_detail\n-- Purpose \t: Foundational Trust Provider Chip Details : To store all foundational trust provider chip details like make, model and certificate.\n-- \n-- Create By \t: Ram Bhatt\n-- Created Date\t: Nov-2021\n-- \n-- Modified Date Modified By Comments / Remarks\n-- ------------------------------------------------------------------------------------------\n\n-- ------------------------------------------------------------------------------------------\n-- object: pms.ftp_chip_detail | type: TABLE --\n-- DROP TABLE IF EXISTS pms.ftp_chip_detail CASCADE;\nCREATE TABLE pms.ftp_chip_detail(\n\tid character varying(36) NOT NULL,\n\tfoundational_trust_provider_id character varying(36) NOT NULL,\n\tmake character varying(36),\n\tmodel character varying(36),\n\tcertificate_alias character varying(36),\n\tpartner_org_name character varying(128),\n\tis_active boolean NOT NULL,\n\tcr_by character varying(256) NOT NULL,\n\tcr_dtimes timestamp NOT NULL,\n\tupd_by character varying(256),\n\tupd_dtimes timestamp,\n\tis_deleted boolean DEFAULT FALSE,\n\tdel_dtimes timestamp,\n\tapproval_status character varying(36) NOT NULL,\n\tCONSTRAINT pk_fcdtl_id PRIMARY KEY (id)\n\n);\n-- ddl-end --\nCOMMENT ON TABLE pms.ftp_chip_detail IS 'Foundational Trust Provider Chip Details : To store all foundational trust provider chip details like make, model and certificate.';\n-- ddl-end --\nCOMMENT ON COLUMN pms.ftp_chip_detail.id IS 'Foundational Trust Provider ID: Unique ID of the trust provider, Trust provider id is generated by MOSIP system.';\n-- ddl-end --\nCOMMENT ON COLUMN pms.ftp_chip_detail.foundational_trust_provider_id IS 'Foundational Trust Provider ID: This is the partner id who provide chip and required certificates for L1 devices. This is soft referenced from Partner Management Service database.';\n-- ddl-end --\nCOMMENT ON COLUMN pms.ftp_chip_detail.make IS 'Chip Make: Make of the chip provided by the foundational trust provider';\n-- ddl-end --\nCOMMENT ON COLUMN pms.ftp_chip_detail.model IS 'Model : Model of the chip which is provided by the foundational trust provider';\n-- ddl-end --\nCOMMENT ON COLUMN pms.ftp_chip_detail.certificate_alias IS 'Certificate Alias : Its certificate alias which is stored in some key store and provided by MOSIP to a trust provider';\n-- ddl-end --\nCOMMENT ON COLUMN pms.ftp_chip_detail.partner_org_name IS 'Partner Organisation Name';\n-- ddl-end --\nCOMMENT ON COLUMN pms.ftp_chip_detail.is_active IS 'IS_Active : Flag to mark whether the record/device is Active or In-active';\n-- ddl-end --\nCOMMENT ON COLUMN pms.ftp_chip_detail.cr_by IS 'Created By : ID or name of the user who create / insert record';\n-- ddl-end --\nCOMMENT ON COLUMN pms.ftp_chip_detail.cr_dtimes IS 'Created DateTimestamp : Date and Timestamp when the record is created/inserted';\n-- ddl-end --\nCOMMENT ON COLUMN pms.ftp_chip_detail.upd_by IS 'Updated By : ID or name of the user who update the record with new values';\n-- ddl-end --\nCOMMENT ON COLUMN pms.ftp_chip_detail.upd_dtimes IS 'Updated DateTimestamp : Date and Timestamp when any of the fields in the record is updated with new values.';\n-- ddl-end --\nCOMMENT ON COLUMN pms.ftp_chip_detail.is_deleted IS 'IS_Deleted : Flag to mark whether the record is Soft deleted.';\n-- ddl-end --\nCOMMENT ON COLUMN pms.ftp_chip_detail.del_dtimes IS 'Deleted DateTimestamp : Date and Timestamp when the record is soft deleted with is_deleted=TRUE';\n-- ddl-end --\nCOMMENT ON COLUMN pms.ftp_chip_detail.approval_status IS 'approval_status : Status of the record. Status will be pending_cert_upload,pending_approval,approved or rejected';\n-- ddl-end --\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/db_scripts/mosip_pms/ddl/pms-misp.sql", + "title": "pms-misp.sql", + "repo": "mosip/partner-management-services", + "file_path": "db_scripts/mosip_pms/ddl/pms-misp.sql", + "language": "sql", + "content": "-- -------------------------------------------------------------------------------------------------\n-- Database Name: mosip_pms\n-- Table Name : pms.misp\n-- Purpose : MISP: MISP, acronym for MOSIP Identity Service Provider, stores the master list of MISPs.\n-- \n-- Create By \t: Sadanandegowda DM\n-- Created Date\t: Aug-2020\n-- \n-- Modified Date Modified By Comments / Remarks\n-- ------------------------------------------------------------------------------------------\n-- Jan-2021\t\tRam Bhatt\t Set is_deleted flag to not null and default false\n-- Mar-2021\t\tRam Bhatt\t Reverting is_deleted flag not null changes for 1.1.5 \n-- -------------------------------------------------------------------------------------------\n\n-- object: pms.misp | type: TABLE --\n-- DROP TABLE IF EXISTS pms.misp CASCADE;\nCREATE TABLE pms.misp(\n\tid character varying(36) NOT NULL,\n\tname character varying(128) NOT NULL,\n\taddress character varying(2000),\n\tcontact_no character varying(16),\n\temail_id character varying(256),\n\tuser_id character varying(256) NOT NULL,\n\tstatus_code character varying(36) NOT NULL,\n\tis_active boolean NOT NULL,\n\tcr_by character varying(256) NOT NULL,\n\tcr_dtimes timestamp NOT NULL,\n\tupd_by character varying(256),\n\tupd_dtimes timestamp,\n\tis_deleted boolean DEFAULT FALSE,\n\tdel_dtimes timestamp,\n\tCONSTRAINT pk_misp PRIMARY KEY (id),\n\tCONSTRAINT uk_misp UNIQUE (name)\n\n);\n-- ddl-end --\nCOMMENT ON TABLE pms.misp IS 'MISP: MISP, acronym for MOSIP Identity Service Provider, stores the master list of MISPs.';\n-- ddl-end --\nCOMMENT ON COLUMN pms.misp.id IS 'MISP ID: Unique ID generated / assigned for a MISP.';\n-- ddl-end --\nCOMMENT ON COLUMN pms.misp.name IS 'Name: Name of the MISP orgranization.';\n-- ddl-end --\nCOMMENT ON COLUMN pms.misp.address IS 'Address: Address of the MISP organization.';\n-- ddl-end --\nCOMMENT ON COLUMN pms.misp.contact_no IS 'Contact Number: Contact number of the MISP organization';\n-- ddl-end --\nCOMMENT ON COLUMN pms.misp.email_id IS 'Email ID: Email ID of the MISP organization / contact person';\n-- ddl-end --\nCOMMENT ON COLUMN pms.misp.user_id IS 'User ID: Login ID assigned by MOSIP to MISP Admin. It is a general/common id for a MISP that is generated and assigned when the MISP is created.';\n-- ddl-end --\nCOMMENT ON COLUMN pms.misp.status_code IS 'Status Code: Status of MISP';\n-- ddl-end --\nCOMMENT ON COLUMN pms.misp.is_active IS 'Active Flag: Flag to mark whether the record is Active or In-active';\n-- ddl-end --\nCOMMENT ON COLUMN pms.misp.cr_by IS 'Created By : ID or name of the user who create / insert record';\n-- ddl-end --\nCOMMENT ON COLUMN pms.misp.cr_dtimes IS 'Created DateTimestamp : Date and Timestamp when the record is created/inserted';\n-- ddl-end --\nCOMMENT ON COLUMN pms.misp.upd_by IS 'Updated By : ID or name of the user who update the record with new values';\n-- ddl-end --\nCOMMENT ON COLUMN pms.misp.upd_dtimes IS 'Updated DateTimestamp : Date and Timestamp when any of the fields in the record is updated with new values.';\n-- ddl-end --\nCOMMENT ON COLUMN pms.misp.is_deleted IS 'IS_Deleted : Flag to mark whether the record is Soft deleted.';\n-- ddl-end --\nCOMMENT ON COLUMN pms.misp.del_dtimes IS 'Deleted DateTimestamp : Date and Timestamp when the record is soft deleted with is_deleted=TRUE';\n-- ddl-end --\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/db_scripts/mosip_pms/ddl/pms-misp_license.sql", + "title": "pms-misp_license.sql", + "repo": "mosip/partner-management-services", + "file_path": "db_scripts/mosip_pms/ddl/pms-misp_license.sql", + "language": "sql", + "content": "-- -------------------------------------------------------------------------------------------------\n-- Database Name: mosip_pms\n-- Table Name : pms.misp_license\n-- Purpose : MISP License: License key issued to MISP, using which an individual''s authentication request that is initiated from partners are authenticated.\n-- \n-- Create By \t: Sadanandegowda DM\n-- Created Date\t: Aug-2020\n-- \n-- Modified Date Modified By Comments / Remarks\n-- ------------------------------------------------------------------------------------------\n-- Aug-2020 Sadanndegowda Updated Schema name \n-- Jan-2021\t\tRam Bhatt\t Set is_deleted flag to not null and default false\n-- Mar-2021\t\tRam Bhatt\t Reverting is_deleted flag not null changes for 1.1.5 \n-- Sep-2022\t\tNagarjuna \t\tAdded column policy id changes for 1.2.1\n-- ------------------------------------------------------------------------------------------\n\n-- object: pms.misp_license | type: TABLE --\n-- DROP TABLE IF EXISTS pms.misp_license CASCADE;\nCREATE TABLE pms.misp_license(\n\tmisp_id character varying(36) NOT NULL,\n\tlicense_key character varying(128) NOT NULL,\n\tpolicy_id character varying(36) NULL,\n\tvalid_from_date timestamp NOT NULL,\n\tvalid_to_date timestamp,\n\tis_active boolean NOT NULL,\n\tcr_by character varying(256) NOT NULL,\n\tcr_dtimes timestamp NOT NULL,\n\tupd_by character varying(256),\n\tupd_dtimes timestamp,\n\tis_deleted boolean DEFAULT FALSE,\n\tdel_dtimes timestamp,\n\tCONSTRAINT pk_mlic PRIMARY KEY (misp_id,license_key)\n\n);\n-- ddl-end --\nCOMMENT ON TABLE pms.misp_license IS 'MISP License: License key issued to MISP, using which an individual''s authentication request that is initiated from partners are authenticated.';\n-- ddl-end --\nCOMMENT ON COLUMN pms.misp_license.misp_id IS 'MISP ID: MISP ID, refers to pmp.misp .id';\n-- ddl-end --\nCOMMENT ON COLUMN pms.misp_license.license_key IS 'License Key: A system generated number assigned to MISP as License key. It will be used by MISP application to be appended to auth request which is received by partners.';\n-- ddl-end --\nCOMMENT ON COLUMN pms.misp_license.valid_from_date IS 'Valid From Date: Datetime from when the license key is valid.';\n-- ddl-end --\nCOMMENT ON COLUMN pms.misp_license.valid_to_date IS 'Valid To Date: Datetime when the license key will be expired.';\n-- ddl-end --\nCOMMENT ON COLUMN pms.misp_license.is_active IS 'IS_Active : Flag to mark whether the record is Active or In-active';\n-- ddl-end --\nCOMMENT ON COLUMN pms.misp_license.cr_by IS 'Created By : ID or name of the user who create / insert record';\n-- ddl-end --\nCOMMENT ON COLUMN pms.misp_license.cr_dtimes IS 'Created DateTimestamp : Date and Timestamp when the record is created/inserted';\n-- ddl-end --\nCOMMENT ON COLUMN pms.misp_license.upd_by IS 'Updated By : ID or name of the user who update the record with new values';\n-- ddl-end --\nCOMMENT ON COLUMN pms.misp_license.upd_dtimes IS 'Updated DateTimestamp : Date and Timestamp when any of the fields in the record is updated with new values.';\n-- ddl-end --\nCOMMENT ON COLUMN pms.misp_license.is_deleted IS 'IS_Deleted : Flag to mark whether the record is Soft deleted.';\n-- ddl-end --\nCOMMENT ON COLUMN pms.misp_license.del_dtimes IS 'Deleted DateTimestamp : Date and Timestamp when the record is soft deleted with is_deleted=TRUE';\n-- ddl-end --\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/db_scripts/mosip_pms/ddl/pms-oidc_client.sql", + "title": "pms-oidc_client.sql", + "repo": "mosip/partner-management-services", + "file_path": "db_scripts/mosip_pms/ddl/pms-oidc_client.sql", + "language": "sql", + "content": "-- This Source Code Form is subject to the terms of the Mozilla Public\n-- License, v. 2.0. If a copy of the MPL was not distributed with this\n-- file, You can obtain one at https://mozilla.org/MPL/2.0/.\n-- -------------------------------------------------------------------------------------------------\n-- Database Name: mosip_pms\n-- Table Name : oidc_client\n-- Purpose : oicd client: Table to store all registered OIDC client details.\n-- \n-- Create By \t: Nagarjuna K\n-- Created Date\t: Sep-2022\n-- \n-- Modified Date Modified By Comments / Remarks\n-- ------------------------------------------------------------------------------------------\n-- ------------------------------------------------------------------------------------------\n\n-- object: oidc_client.oidc_client | type: TABLE --\n-- DROP TABLE IF EXISTS oidc_client.oidc_client CASCADE;\nCREATE TABLE pms.oidc_client(\n\tid character varying(100) NOT NULL,\n\tname character varying(256) NOT NULL,\n\trp_id character varying(100) NOT NULL,\n\tpolicy_id character varying(50) NOT NULL,\n\tlogo_uri character varying(2048) NOT NULL,\n\tredirect_uris character varying NOT NULL,\n\tclaims character varying NOT NULL,\n\tacr_values character varying NOT NULL,\n\tpublic_key character varying NOT NULL,\n\tgrant_types character varying(256) NOT NULL,\n\tauth_methods character varying(256) NOT NULL,\n\tstatus character varying(20) NOT NULL,\n\tcr_by character varying(256) NOT NULL,\n\tcr_dtimes timestamp NOT NULL,\n\tupd_by character varying(256),\n\tupd_dtimes timestamp,\n\tis_deleted boolean DEFAULT FALSE,\n\tdel_dtimes timestamp,\n\tCONSTRAINT pk_oidc_client PRIMARY KEY (id),\n\tCONSTRAINT uq_oidc_client_public_key UNIQUE (public_key)\n);\n-- ddl-end --\nCOMMENT ON TABLE pms.oidc_client IS 'Client ID: Unique id assigned to registered OIDC client.';\n-- ddl-end --\nCOMMENT ON COLUMN pms.oidc_client.name IS 'Client Name: Registered name of OIDC client.';\n-- ddl-end --\nCOMMENT ON COLUMN pms.oidc_client.logo_uri IS 'Client Logo URL: Client logo to be displayed on IDP UI.';\n-- ddl-end --\nCOMMENT ON COLUMN pms.oidc_client.redirect_uris IS 'Recirect URLS: Comma separated list of client redirect URLs.';\n-- ddl-end --\nCOMMENT ON COLUMN pms.oidc_client.rp_id IS 'Relaying Party Id: Id of the partner id who has created this OIDC client.';\n-- ddl-end --\nCOMMENT ON COLUMN pms.oidc_client.policy_id IS 'Policy Id: Id of the policy ';\n-- ddl-end --\nCOMMENT ON COLUMN pms.oidc_client.status IS 'Client status: Allowed values - ACTIVE / INACTIVE.';\n-- ddl-end --\nCOMMENT ON COLUMN pms.oidc_client.public_key IS 'Public key: JWK data.';\n-- ddl-end --\nCOMMENT ON COLUMN pms.oidc_client.grant_types IS 'Grant Types: Allowed grant types for the client.';\n-- ddl-end --\nCOMMENT ON COLUMN pms.oidc_client.auth_methods IS 'Client Auth methods: Allowed token endpoint authentication methods.';\n-- ddl-end --\nCOMMENT ON COLUMN pms.oidc_client.claims IS 'Requested Claims: claims json as per policy defined for relaying party.';\n-- ddl-end --\nCOMMENT ON COLUMN pms.oidc_client.acr_values IS 'Allowed Authentication context References(acr) json';\n-- ddl-end --\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/db_scripts/mosip_pms/ddl/pms-otp_transaction.sql", + "title": "pms-otp_transaction.sql", + "repo": "mosip/partner-management-services", + "file_path": "db_scripts/mosip_pms/ddl/pms-otp_transaction.sql", + "language": "sql", + "content": "-- -------------------------------------------------------------------------------------------------\n-- Database Name: mosip_pms\n-- Table Name \t: pms.otp_transaction\n-- Purpose \t: OTP Transaction: All OTP related data and validation details are maintained here fro partner managment service.\n-- \n-- Create By \t: Sadanandegowda DM\n-- Created Date\t: Aug-2020\n-- \n-- Modified Date Modified By Comments / Remarks\n-- ------------------------------------------------------------------------------------------\n-- Jan-2021\t\tRam Bhatt\t Set is_deleted flag to not null and default false\n-- Mar-2021\t\tRam Bhatt\t Reverting is_deleted flag not null changes for 1.1.5 \n-- ------------------------------------------------------------------------------------------\n\n-- object: pms.otp_transaction | type: TABLE --\n-- DROP TABLE IF EXISTS pms.otp_transaction CASCADE;\nCREATE TABLE pms.otp_transaction(\n\tid character varying(36) NOT NULL,\n\tref_id character varying(64) NOT NULL,\n\totp_hash character varying(512) NOT NULL,\n\tgenerated_dtimes timestamp,\n\texpiry_dtimes timestamp,\n\tvalidation_retry_count smallint,\n\tstatus_code character varying(36),\n\tis_active boolean NOT NULL,\n\tcr_by character varying(256) NOT NULL,\n\tcr_dtimes timestamp NOT NULL,\n\tupd_by character varying(256),\n\tupd_dtimes timestamp,\n\tis_deleted boolean DEFAULT FALSE,\n\tdel_dtimes timestamp,\n\tCONSTRAINT pk_otpt_id PRIMARY KEY (id)\n\n);\n-- ddl-end --\nCOMMENT ON TABLE pms.otp_transaction IS 'OTP Transaction: All OTP related data and validation details are maintained here fro partner managment service.';\n-- ddl-end --\nCOMMENT ON COLUMN pms.otp_transaction.id IS 'ID: Unique transaction id for each otp transaction request';\n-- ddl-end --\nCOMMENT ON COLUMN pms.otp_transaction.ref_id IS 'Reference ID: Reference ID is a reference information received from OTP requester which can be used while validating the OTP. AM: please give examples of ref_id';\n-- ddl-end --\nCOMMENT ON COLUMN pms.otp_transaction.otp_hash IS 'OTP Hash: Hash of id, ref_id and otp which is generated based on the configuration setup and sent to the requester application / module.';\n-- ddl-end --\nCOMMENT ON COLUMN pms.otp_transaction.generated_dtimes IS 'Generated Date Time: Date and Time when the OTP was generated';\n-- ddl-end --\nCOMMENT ON COLUMN pms.otp_transaction.expiry_dtimes IS 'Expiry Date Time: Date Time when the OTP will be expired';\n-- ddl-end --\nCOMMENT ON COLUMN pms.otp_transaction.validation_retry_count IS 'Validation Retry Count: Validation retry counts of this OTP request. If the validation retry crosses the threshold limit, then the OTP will be de-activated.';\n-- ddl-end --\nCOMMENT ON COLUMN pms.otp_transaction.status_code IS 'Status Code: Status of the OTP whether it is active or expired. AM: please enumerate the status types. They are only a few, not infinite';\n-- ddl-end --\nCOMMENT ON COLUMN pms.otp_transaction.is_active IS 'IS_Active : Flag to mark whether the record is Active or In-active';\n-- ddl-end --\nCOMMENT ON COLUMN pms.otp_transaction.cr_by IS 'Created By : ID or name of the user who create / insert record';\n-- ddl-end --\nCOMMENT ON COLUMN pms.otp_transaction.cr_dtimes IS 'Created DateTimestamp : Date and Timestamp when the record is created/inserted';\n-- ddl-end --\nCOMMENT ON COLUMN pms.otp_transaction.upd_by IS 'Updated By : ID or name of the user who update the record with new values';\n-- ddl-end --\nCOMMENT ON COLUMN pms.otp_transaction.upd_dtimes IS 'Updated DateTimestamp : Date and Timestamp when any of the fields in the record is updated with new values.';\n-- ddl-end --\nCOMMENT ON COLUMN pms.otp_transaction.is_deleted IS 'IS_Deleted : Flag to mark whether the record is Soft deleted.';\n-- ddl-end --\nCOMMENT ON COLUMN pms.otp_transaction.del_dtimes IS 'Deleted DateTimestamp : Date and Timestamp when the record is soft deleted with is_deleted=TRUE';\n-- ddl-end --\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/db_scripts/mosip_pms/ddl/pms-partner.sql", + "title": "pms-partner.sql", + "repo": "mosip/partner-management-services", + "file_path": "db_scripts/mosip_pms/ddl/pms-partner.sql", + "language": "sql", + "content": "\nCREATE TABLE pms.partner(\n id character varying(36) NOT NULL,\n policy_group_id character varying(36),\n name character varying(128) NOT NULL,\n address character varying(2000),\n contact_no character varying(16),\n email_id character varying(254),\n certificate_alias character varying(128),\n user_id character varying(256) NOT NULL,\n partner_type_code character varying(36) NOT NULL,\n approval_status character varying(36) NOT NULL,\n is_active boolean NOT NULL,\n cr_by character varying(256) NOT NULL,\n cr_dtimes timestamp NOT NULL,\n upd_by character varying(256),\n upd_dtimes timestamp,\n is_deleted boolean DEFAULT FALSE,\n del_dtimes timestamp,\n lang_code character varying(36),\n\tlogo_url character varying(256),\n\taddl_info character varying,\n CONSTRAINT pk_part PRIMARY KEY (id)\n);\n\nCOMMENT ON TABLE pms.partner IS 'Partner: Registered external partners use the authentication services provided by MOSIP. The auth services are channeled through MISPs. This table stores the master list of partners who can self register themselves and use auth services.';\nCOMMENT ON COLUMN pms.partner.id IS 'Partner ID : Unique ID generated / assigned for partner';\nCOMMENT ON COLUMN pms.partner.policy_group_id IS 'Policy Group ID: Policy group to which the partner registers for to avail the auth services.';\nCOMMENT ON COLUMN pms.partner.name IS 'Name: Name of the Partner.';\nCOMMENT ON COLUMN pms.partner.address IS 'Address: Address of the partner organization';\nCOMMENT ON COLUMN pms.partner.contact_no IS 'Contact Number: Contact number of the partner organization or the contact person';\nCOMMENT ON COLUMN pms.partner.email_id IS 'Email ID: Email ID of the MISP organization''s contact person';\nCOMMENT ON COLUMN pms.partner.certificate_alias IS 'Certificate Alias: Certificate alias provided by the partner to MOSIP to use its authentication request data.';\nCOMMENT ON COLUMN pms.partner.user_id IS 'Partner Admin: When a partner registers themselves to avail auth services, a user id is created for them to login to partner management portal to perform few operational activities. Currently only one user is created per partner.';\nCOMMENT ON COLUMN pms.partner.partner_type_code IS 'Partner Type Code: Partner type code for different type of partners... Referenced from pmp.partner_type table';\nCOMMENT ON COLUMN pms.partner.approval_status IS 'Approval Status: Status of the partner. Status gives the partner status is pending, approved or rejected by partner admin';\nCOMMENT ON COLUMN pms.partner.is_active IS 'IS_Active : Flag to mark whether the record is Active or In-active';\nCOMMENT ON COLUMN pms.partner.cr_by IS 'Created By : ID or name of the user who create / insert record';\nCOMMENT ON COLUMN pms.partner.cr_dtimes IS 'Created DateTimestamp : Date and Timestamp when the record is created/inserted';\nCOMMENT ON COLUMN pms.partner.upd_by IS 'Updated By : ID or name of the user who update the record with new values';\nCOMMENT ON COLUMN pms.partner.upd_dtimes IS 'Updated DateTimestamp : Date and Timestamp when any of the fields in the record is updated with new values.';\nCOMMENT ON COLUMN pms.partner.is_deleted IS 'IS_Deleted : Flag to mark whether the record is Soft deleted.';\nCOMMENT ON COLUMN pms.partner.del_dtimes IS 'Deleted DateTimestamp : Date and Timestamp when the record is soft deleted with is_deleted=TRUE';\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/db_scripts/mosip_pms/ddl/pms-partner_contact.sql", + "title": "pms-partner_contact.sql", + "repo": "mosip/partner-management-services", + "file_path": "db_scripts/mosip_pms/ddl/pms-partner_contact.sql", + "language": "sql", + "content": "-- -------------------------------------------------------------------------------------------------\n-- Database Name: mosip_pms\n-- Table Name \t: pms.partner_contact\n-- Purpose \t: Partner Contact: Registered external partners use will have mutiple contact and these contacts are maintained in this table.\n-- \n-- Create By \t: Sadanandegowda DM\n-- Created Date\t: Aug-2020\n-- \n-- Modified Date Modified By Comments / Remarks\n-- ------------------------------------------------------------------------------------------\n-- Jan-2021\t\tRam Bhatt\t Set is_deleted flag to not null and default false\n-- Mar-2021\t\tRam Bhatt\t Reverting is_deleted flag not null changes for 1.1.5 \n-- ------------------------------------------------------------------------------------------\n\n-- object: pms.partner_contact | type: TABLE --\n-- DROP TABLE IF EXISTS pms.partner_contact CASCADE;\nCREATE TABLE pms.partner_contact(\n\tid character varying(36) NOT NULL,\n\tpartner_id character varying(36) NOT NULL,\n\tcontact_no character varying(16),\n\temail_id character varying(254),\n\taddress character varying(2000),\n\tis_active boolean NOT NULL,\n\tcr_by character varying(256) NOT NULL,\n\tcr_dtimes timestamp NOT NULL,\n\tupd_by character varying(256),\n\tupd_dtimes timestamp,\n\tis_deleted boolean DEFAULT FALSE,\n\tdel_dtimes timestamp,\n\tCONSTRAINT partcnt PRIMARY KEY (id),\n\tCONSTRAINT uk_partcnt_idcnt UNIQUE (partner_id,contact_no),\n\tCONSTRAINT uk_partcnt_ideml UNIQUE (partner_id,email_id)\n\n);\n-- ddl-end --\nCOMMENT ON TABLE pms.partner_contact IS 'Partner Contact: Registered external partners use will have mutiple contact and these contacts are maintained in this table.';\n-- ddl-end --\nCOMMENT ON COLUMN pms.partner_contact.id IS 'Contact ID : Unique ID generated / assigned for partner';\n-- ddl-end --\nCOMMENT ON COLUMN pms.partner_contact.partner_id IS 'Partner ID: partner id which is referenced from pms.partner table';\n-- ddl-end --\nCOMMENT ON COLUMN pms.partner_contact.contact_no IS 'Contact Number: Contact number of the partner organization or the contact person';\n-- ddl-end --\nCOMMENT ON COLUMN pms.partner_contact.email_id IS 'Email ID: Email ID of the MISP organization''s contact person';\n-- ddl-end --\nCOMMENT ON COLUMN pms.partner_contact.address IS 'Address: Address of the partner organization';\n-- ddl-end --\nCOMMENT ON COLUMN pms.partner_contact.is_active IS 'IS_Active : Flag to mark whether the record is Active or In-active';\n-- ddl-end --\nCOMMENT ON COLUMN pms.partner_contact.cr_by IS 'Created By : ID or name of the user who create / insert record';\n-- ddl-end --\nCOMMENT ON COLUMN pms.partner_contact.cr_dtimes IS 'Created DateTimestamp : Date and Timestamp when the record is created/inserted';\n-- ddl-end --\nCOMMENT ON COLUMN pms.partner_contact.upd_by IS 'Updated By : ID or name of the user who update the record with new values';\n-- ddl-end --\nCOMMENT ON COLUMN pms.partner_contact.upd_dtimes IS 'Updated DateTimestamp : Date and Timestamp when any of the fields in the record is updated with new values.';\n-- ddl-end --\nCOMMENT ON COLUMN pms.partner_contact.is_deleted IS 'IS_Deleted : Flag to mark whether the record is Soft deleted.';\n-- ddl-end --\nCOMMENT ON COLUMN pms.partner_contact.del_dtimes IS 'Deleted DateTimestamp : Date and Timestamp when the record is soft deleted with is_deleted=TRUE';\n-- ddl-end --\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/db_scripts/mosip_pms/ddl/pms-partner_h.sql", + "title": "pms-partner_h.sql", + "repo": "mosip/partner-management-services", + "file_path": "db_scripts/mosip_pms/ddl/pms-partner_h.sql", + "language": "sql", + "content": "\nCREATE TABLE pms.partner_h(\n id character varying(36) NOT NULL,\n eff_dtimes timestamp NOT NULL,\n policy_group_id character varying(36),\n name character varying(128) NOT NULL,\n address character varying(2000),\n contact_no character varying(16),\n email_id character varying(254),\n certificate_alias character varying(128),\n user_id character varying(256) NOT NULL,\n partner_type_code character varying(36) NOT NULL,\n approval_status character varying(36) NOT NULL,\n is_active boolean NOT NULL,\n cr_by character varying(256) NOT NULL,\n cr_dtimes timestamp NOT NULL,\n upd_by character varying(256),\n upd_dtimes timestamp,\n is_deleted boolean DEFAULT FALSE,\n del_dtimes timestamp,\n lang_code character varying(36),\n\tlogo_url character varying(256),\n\taddl_info character varying,\n CONSTRAINT pk_parth PRIMARY KEY (id,eff_dtimes)\n);\n\nCOMMENT ON TABLE pms.partner_h IS 'Partner History: This to track changes to master record whenever there is an INSERT/UPDATE/DELETE ( soft delete ), Effective DateTimestamp is used for identifying latest or point in time information. Refer pmp.auth_policy table description for details. ';\nCOMMENT ON COLUMN pms.partner_h.id IS 'Partner ID : Unique ID generated / assigned for partner';\nCOMMENT ON COLUMN pms.partner_h.eff_dtimes IS 'Effective Date Timestamp : This to track master record whenever there is an INSERT/UPDATE/DELETE ( soft delete ). The current record is effective from this date-time. ';\nCOMMENT ON COLUMN pms.partner_h.policy_group_id IS 'Policy Group ID: Policy group to which the partner registers for to avail the auth services.';\nCOMMENT ON COLUMN pms.partner_h.name IS 'Name: Name of the Partner.';\nCOMMENT ON COLUMN pms.partner_h.address IS 'Address: Address of the partner organization';\nCOMMENT ON COLUMN pms.partner_h.contact_no IS 'Contact Number: Contact number of the partner organization or the contact person';\nCOMMENT ON COLUMN pms.partner_h.email_id IS 'Email ID: Email ID of the MISP organization''s contact person';\nCOMMENT ON COLUMN pms.partner_h.certificate_alias IS 'Certificate Alias: Certificate alias provided by the partner to MOSIP to use its authentication request data.';\nCOMMENT ON COLUMN pms.partner_h.user_id IS 'Partner Admin: When a partner registers themselves to avail auth services, a user id is created for them to login to partner management portal to perform few operational activities. Currently only one user is created per partner.';\nCOMMENT ON COLUMN pms.partner_h.partner_type_code IS 'Partner Type Code: Partner type code for different type of partners... Referenced from pmp.partner_type table';\nCOMMENT ON COLUMN pms.partner_h.approval_status IS 'Approval Status: Status of the partner. Status gives the partner status is pending, approved or rejected by partner admin';\nCOMMENT ON COLUMN pms.partner_h.is_active IS 'IS_Active : Flag to mark whether the record is Active or In-active';\nCOMMENT ON COLUMN pms.partner_h.cr_by IS 'Created By : ID or name of the user who create / insert record';\nCOMMENT ON COLUMN pms.partner_h.cr_dtimes IS 'Created DateTimestamp : Date and Timestamp when the record is created/inserted';\nCOMMENT ON COLUMN pms.partner_h.upd_by IS 'Updated By : ID or name of the user who update the record with new values';\nCOMMENT ON COLUMN pms.partner_h.upd_dtimes IS 'Updated DateTimestamp : Date and Timestamp when any of the fields in the record is updated with new values.';\nCOMMENT ON COLUMN pms.partner_h.is_deleted IS 'IS_Deleted : Flag to mark whether the record is Soft deleted.';\nCOMMENT ON COLUMN pms.partner_h.del_dtimes IS 'Deleted DateTimestamp : Date and Timestamp when the record is soft deleted with is_deleted=TRUE';\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/db_scripts/mosip_pms/ddl/pms-partner_policy.sql", + "title": "pms-partner_policy.sql", + "repo": "mosip/partner-management-services", + "file_path": "db_scripts/mosip_pms/ddl/pms-partner_policy.sql", + "language": "sql", + "content": "CREATE TABLE pms.partner_policy(\n policy_api_key character varying(128) NOT NULL,\n part_id character varying(36) NOT NULL,\n policy_id character varying(36) NOT NULL,\n valid_from_datetime timestamp NOT NULL,\n valid_to_datetime timestamp,\n is_active boolean NOT NULL,\n cr_by character varying(256) NOT NULL,\n cr_dtimes timestamp NOT NULL,\n upd_by character varying(256),\n upd_dtimes timestamp,\n is_deleted boolean DEFAULT FALSE,\n del_dtimes timestamp,\n label character varying(36) NOT NULL,\n CONSTRAINT pk_ppol PRIMARY KEY (policy_api_key),\n CONSTRAINT uk_ppol UNIQUE (part_id,policy_id,valid_from_datetime)\n);\n\nCOMMENT ON TABLE pms.partner_policy IS 'Partner Policy: Authentication policies assigned to a partner once the policy creation request is approved. An Policy API Key is generated and provided to the partner that will be used as part of auth requests.';\nCOMMENT ON COLUMN pms.partner_policy.policy_api_key IS 'Policy API Key: ';\nCOMMENT ON COLUMN pms.partner_policy.part_id IS 'Partner ID: Partner ID, refers to pmp.partner .id';\nCOMMENT ON COLUMN pms.partner_policy.policy_id IS 'Policy ID: Policy ID, refers to pmp.auth_policy .id';\nCOMMENT ON COLUMN pms.partner_policy.valid_from_datetime IS 'Valid From Datetime: Date and time from when the policy is valid.';\nCOMMENT ON COLUMN pms.partner_policy.valid_to_datetime IS 'Valid To Datetime: Date and time till when the policy is valid.';\nCOMMENT ON COLUMN pms.partner_policy.is_active IS 'IS_Active : Flag to mark whether the record is Active or In-active';\nCOMMENT ON COLUMN pms.partner_policy.cr_by IS 'Created By : ID or name of the user who create / insert record';\nCOMMENT ON COLUMN pms.partner_policy.cr_dtimes IS 'Created DateTimestamp : Date and Timestamp when the record is created/inserted';\nCOMMENT ON COLUMN pms.partner_policy.upd_by IS 'Updated By : ID or name of the user who update the record with new values';\nCOMMENT ON COLUMN pms.partner_policy.upd_dtimes IS 'Updated DateTimestamp : Date and Timestamp when any of the fields in the record is updated with new values.';\nCOMMENT ON COLUMN pms.partner_policy.is_deleted IS 'IS_Deleted : Flag to mark whether the record is Soft deleted.';\nCOMMENT ON COLUMN pms.partner_policy.del_dtimes IS 'Deleted DateTimestamp : Date and Timestamp when the record is soft deleted with is_deleted=TRUE';\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/db_scripts/mosip_pms/ddl/pms-partner_policy_bioextract.sql", + "title": "pms-partner_policy_bioextract.sql", + "repo": "mosip/partner-management-services", + "file_path": "db_scripts/mosip_pms/ddl/pms-partner_policy_bioextract.sql", + "language": "sql", + "content": "-- -------------------------------------------------------------------------------------------------\n-- Database Name: mosip_pms\n-- Table Name : pms.partner_policy_bioextract\n-- Purpose : Partner Policy Bio Extract: Stores the partner policy biometric information with biometric extract provider details.\n-- \n-- Create By \t: Sadanandegowda DM\n-- Created Date\t: Oct-2020\n-- \n-- Modified Date Modified By Comments / Remarks\n-- ------------------------------------------------------------------------------------------\n-- Jan-2021\t\tRam Bhatt\t Set is_deleted flag to not null and default false\n-- Mar-2021\t\tRam Bhatt\t Reverting is_deleted flag not null changes for 1.1.5 \n-- ------------------------------------------------------------------------------------------\n-- object: pms.partner_policy_bioextract | type: TABLE --\n-- DROP TABLE IF EXISTS pms.partner_policy_bioextract CASCADE;\nCREATE TABLE pms.partner_policy_bioextract(\n\tid character varying(36) NOT NULL,\n\tpart_id character varying(36) NOT NULL,\n\tpolicy_id character varying(36) NOT NULL,\n\tattribute_name character varying(128) NOT NULL,\n\textractor_provider character varying(128) NOT NULL,\n\textractor_provider_version character varying(8),\n\tbiometric_modality character varying(64) NOT NULL,\n\tbiometric_sub_types character varying(64),\n\tcr_by character varying(256) NOT NULL,\n\tcr_dtimes timestamp NOT NULL,\n\tupd_by character varying(256),\n\tupd_dtimes timestamp,\n\tis_deleted boolean DEFAULT FALSE,\n\tdel_dtimes timestamp,\n\tCONSTRAINT pk_ppbe_id PRIMARY KEY (id)\n\n);\n-- ddl-end --\nCOMMENT ON TABLE pms.partner_policy_bioextract IS 'Partner Policy Bio Extract: Stores the partner policy biometric information with biometric extract provider details.';\n-- ddl-end --\nCOMMENT ON COLUMN pms.partner_policy_bioextract.id IS 'ID: Unique id to store all the partner policy biometric extractor details';\n-- ddl-end --\nCOMMENT ON COLUMN pms.partner_policy_bioextract.part_id IS 'Partner ID: Partner ID, refers to pmp.partner .id';\n-- ddl-end --\nCOMMENT ON COLUMN pms.partner_policy_bioextract.policy_id IS 'Policy ID: Policy ID, refers to pmp.policy .id';\n-- ddl-end --\nCOMMENT ON COLUMN pms.partner_policy_bioextract.attribute_name IS 'Attribute Name: Biometric attribute name like photo, face, iris, fingerprint...etc.';\n-- ddl-end --\nCOMMENT ON COLUMN pms.partner_policy_bioextract.extractor_provider IS 'Extractor Provider: Biometric extractor provider information.';\n-- ddl-end --\nCOMMENT ON COLUMN pms.partner_policy_bioextract.extractor_provider_version IS 'Extractor Provider Version: Version of biometric extractor provider';\n-- ddl-end --\nCOMMENT ON COLUMN pms.partner_policy_bioextract.biometric_modality IS 'Biometric Modality: Biometric modality';\n-- ddl-end --\nCOMMENT ON COLUMN pms.partner_policy_bioextract.biometric_sub_types IS 'Biometric Sub Type: Biometric sub type';\n-- ddl-end --\nCOMMENT ON COLUMN pms.partner_policy_bioextract.cr_by IS 'Created By : ID or name of the user who create / insert record';\n-- ddl-end --\nCOMMENT ON COLUMN pms.partner_policy_bioextract.cr_dtimes IS 'Created DateTimestamp : Date and Timestamp when the record is created/inserted';\n-- ddl-end --\nCOMMENT ON COLUMN pms.partner_policy_bioextract.upd_by IS 'Updated By : ID or name of the user who update the record with new values';\n-- ddl-end --\nCOMMENT ON COLUMN pms.partner_policy_bioextract.upd_dtimes IS 'Updated DateTimestamp : Date and Timestamp when any of the fields in the record is updated with new values.';\n-- ddl-end --\nCOMMENT ON COLUMN pms.partner_policy_bioextract.is_deleted IS 'IS_Deleted : Flag to mark whether the record is Soft deleted.';\n-- ddl-end --\nCOMMENT ON COLUMN pms.partner_policy_bioextract.del_dtimes IS 'Deleted DateTimestamp : Date and Timestamp when the record is soft deleted with is_deleted=TRUE';\n-- ddl-end --\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/db_scripts/mosip_pms/ddl/pms-partner_policy_credential_type.sql", + "title": "pms-partner_policy_credential_type.sql", + "repo": "mosip/partner-management-services", + "file_path": "db_scripts/mosip_pms/ddl/pms-partner_policy_credential_type.sql", + "language": "sql", + "content": "-- -------------------------------------------------------------------------------------------------\n-- Database Name: mosip_pms\n-- Table Name \t: pms.partner_policy_credential_type\n-- Purpose \t: Partner Policy and Credential Type: Table to map partner, Partner policy and credential type for the partner.\n-- \n-- Create By \t: Sadanandegowda DM\n-- Created Date\t: Dec-2020\n-- \n-- Modified Date Modified By Comments / Remarks\n-- ------------------------------------------------------------------------------------------\n-- Jan-2021\t\tRam Bhatt\t Set is_deleted flag to not null and default false\n-- Mar-2021\t\tRam Bhatt\t Reverting is_deleted flag not null changes for 1.1.5 \n-- ------------------------------------------------------------------------------------------\n\n-- object: pms.partner_policy_credential_type | type: TABLE --\n-- DROP TABLE IF EXISTS pms.partner_policy_credential_type CASCADE;\nCREATE TABLE pms.partner_policy_credential_type(\n\tpart_id character varying(36) NOT NULL,\n\tpolicy_id character varying(36) NOT NULL,\n\tcredential_type character varying(128) NOT NULL,\n\tis_active boolean NOT NULL,\n\tcr_by character varying(256) NOT NULL,\n\tcr_dtimes timestamp NOT NULL,\n\tupd_by character varying(256),\n\tupd_dtimes timestamp,\n\tis_deleted boolean DEFAULT FALSE,\n\tdel_dtimes timestamp,\n\tCONSTRAINT pk_ppctyp_id PRIMARY KEY (part_id,policy_id,credential_type)\n\n);\n-- ddl-end --\nCOMMENT ON TABLE pms.partner_policy_credential_type IS 'Partner Policy and Credential Type: Table to map partner, Partner policy and credential type for the partner.';\n-- ddl-end --\nCOMMENT ON COLUMN pms.partner_policy_credential_type.part_id IS 'Partner ID: Partner ID, refers to pmp.partner .id';\n-- ddl-end --\nCOMMENT ON COLUMN pms.partner_policy_credential_type.policy_id IS 'Policy ID: Policy ID, refers to pmp.auth_policy .id';\n-- ddl-end --\nCOMMENT ON COLUMN pms.partner_policy_credential_type.credential_type IS 'Credential Type: Credential type which is mapped to partner with specific policy';\n-- ddl-end --\nCOMMENT ON COLUMN pms.partner_policy_credential_type.is_active IS 'IS_Active : Flag to mark whether the record is Active or In-active';\n-- ddl-end --\nCOMMENT ON COLUMN pms.partner_policy_credential_type.cr_by IS 'Created By : ID or name of the user who create / insert record';\n-- ddl-end --\nCOMMENT ON COLUMN pms.partner_policy_credential_type.cr_dtimes IS 'Created DateTimestamp : Date and Timestamp when the record is created/inserted';\n-- ddl-end --\nCOMMENT ON COLUMN pms.partner_policy_credential_type.upd_by IS 'Updated By : ID or name of the user who update the record with new values';\n-- ddl-end --\nCOMMENT ON COLUMN pms.partner_policy_credential_type.upd_dtimes IS 'Updated DateTimestamp : Date and Timestamp when any of the fields in the record is updated with new values.';\n-- ddl-end --\nCOMMENT ON COLUMN pms.partner_policy_credential_type.is_deleted IS 'IS_Deleted : Flag to mark whether the record is Soft deleted.';\n-- ddl-end --\nCOMMENT ON COLUMN pms.partner_policy_credential_type.del_dtimes IS 'Deleted DateTimestamp : Date and Timestamp when the record is soft deleted with is_deleted=TRUE';\n-- ddl-end --\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/db_scripts/mosip_pms/ddl/pms-partner_policy_request.sql", + "title": "pms-partner_policy_request.sql", + "repo": "mosip/partner-management-services", + "file_path": "db_scripts/mosip_pms/ddl/pms-partner_policy_request.sql", + "language": "sql", + "content": "-- -------------------------------------------------------------------------------------------------\n-- Database Name: mosip_pms\n-- Table Name : pms.partner_policy_request\n-- Purpose : Partner Policy Request: Partner can self register themselves to use the auth services provided by MOSIP. The registeration requests are stored and processed through here. Once the request is approved and processed a partner is created.\n-- \n-- Create By \t: Sadanandegowda DM\n-- Created Date\t: Aug-2020\n-- \n-- Modified Date Modified By Comments / Remarks\n-- ------------------------------------------------------------------------------------------\n-- Jan-2021\t\tRam Bhatt\t Set is_deleted flag to not null and default false\n-- Mar-2021\t\tRam Bhatt\t Reverting is_deleted flag not null changes for 1.1.5 \n-- ------------------------------------------------------------------------------------------\n\n-- object: pms.partner_policy_request | type: TABLE --\n-- DROP TABLE IF EXISTS pms.partner_policy_request CASCADE;\nCREATE TABLE pms.partner_policy_request(\n\tid character varying(36) NOT NULL,\n\tpart_id character varying(36) NOT NULL,\n\tpolicy_id character varying(36) NOT NULL,\n\trequest_datetimes timestamp NOT NULL,\n\trequest_detail character varying(4000) NOT NULL,\n\tstatus_code character varying(36) NOT NULL,\n\tcr_by character varying(256) NOT NULL,\n\tcr_dtimes timestamp NOT NULL,\n\tupd_by character varying(256),\n\tupd_dtimes timestamp,\n\tis_deleted boolean,\n\tdel_dtimes timestamp,\n\tCONSTRAINT pk_papr PRIMARY KEY (id)\n\n);\n-- ddl-end --\nCOMMENT ON TABLE pms.partner_policy_request IS 'Partner Policy Request: Partner can self register themselves to use the auth services provided by MOSIP. The registeration requests are stored and processed through here. Once the request is approved and processed a partner is created.';\n-- ddl-end --\nCOMMENT ON COLUMN pms.partner_policy_request.id IS 'Partner Policy Request ID : Unique ID generated / assigned to track the policy creation request for a partner.';\n-- ddl-end --\nCOMMENT ON COLUMN pms.partner_policy_request.part_id IS 'Partner ID: Partner ID, refers to pmp.partner .id';\n-- ddl-end --\nCOMMENT ON COLUMN pms.partner_policy_request.policy_id IS 'Policy ID: Policy ID, refers to pmp.policy .id';\n-- ddl-end --\nCOMMENT ON COLUMN pms.partner_policy_request.request_datetimes IS 'Request Datetime: Date and Time when the policy creation request is received by Partner for processing';\n-- ddl-end --\nCOMMENT ON COLUMN pms.partner_policy_request.request_detail IS 'Request Detail: Details provided along with the policy creation request by a partner';\n-- ddl-end --\nCOMMENT ON COLUMN pms.partner_policy_request.status_code IS 'Status code: Partner policy request status. Refers to master.status_master.code';\n-- ddl-end --\nCOMMENT ON COLUMN pms.partner_policy_request.cr_by IS 'Created By : ID or name of the user who create / insert record';\n-- ddl-end --\nCOMMENT ON COLUMN pms.partner_policy_request.cr_dtimes IS 'Created DateTimestamp : Date and Timestamp when the record is created/inserted';\n-- ddl-end --\nCOMMENT ON COLUMN pms.partner_policy_request.upd_by IS 'Updated By : ID or name of the user who update the record with new values';\n-- ddl-end --\nCOMMENT ON COLUMN pms.partner_policy_request.upd_dtimes IS 'Updated DateTimestamp : Date and Timestamp when any of the fields in the record is updated with new values.';\n-- ddl-end --\nCOMMENT ON COLUMN pms.partner_policy_request.is_deleted IS 'IS_Deleted : Flag to mark whether the record is Soft deleted.';\n-- ddl-end --\nCOMMENT ON COLUMN pms.partner_policy_request.del_dtimes IS 'Deleted DateTimestamp : Date and Timestamp when the record is soft deleted with is_deleted=TRUE';\n-- ddl-end --\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/db_scripts/mosip_pms/ddl/pms-partner_type.sql", + "title": "pms-partner_type.sql", + "repo": "mosip/partner-management-services", + "file_path": "db_scripts/mosip_pms/ddl/pms-partner_type.sql", + "language": "sql", + "content": "-- -------------------------------------------------------------------------------------------------\n-- Database Name: mosip_pms\n-- Table Name \t: pms.partner_type\n-- Purpose \t: Partner Type: List of different partnet are allowed in partnet management.\n-- \n-- Create By \t: Sadanandegowda DM\n-- Created Date\t: Aug-2020\n-- \n-- Modified Date Modified By Comments / Remarks\n-- ------------------------------------------------------------------------------------------\n-- Jan-2021\t\tRam Bhatt\t Set is_deleted flag to not null and default false \n-- Mar-2021\t\tRam Bhatt\t Reverting is_deleted flag not null changes for 1.1.5 \n-- ------------------------------------------------------------------------------------------\n\n-- object: pms.partner_type | type: TABLE --\n-- DROP TABLE IF EXISTS pms.partner_type CASCADE;\nCREATE TABLE pms.partner_type(\n\tcode character varying(36) NOT NULL,\n\tpartner_description character varying(128) NOT NULL,\n\tis_policy_required boolean NOT NULL,\n\tis_active boolean NOT NULL,\n\tcr_by character varying(256) NOT NULL,\n\tcr_dtimes timestamp NOT NULL,\n\tupd_by character varying(256),\n\tupd_dtimes timestamp,\n\tis_deleted boolean DEFAULT FALSE,\n\tdel_dtimes timestamp,\n\tCONSTRAINT pk_partyp_code PRIMARY KEY (code)\n\n);\n-- ddl-end --\nCOMMENT ON TABLE pms.partner_type IS 'Partner Type: List of different partnet are allowed in partnet management';\n-- ddl-end --\nCOMMENT ON COLUMN pms.partner_type.code IS 'Partner ID : Unique ID generated / assigned for partner';\n-- ddl-end --\nCOMMENT ON COLUMN pms.partner_type.partner_description IS 'Partner Description : Description of the partner type';\n-- ddl-end --\nCOMMENT ON COLUMN pms.partner_type.is_policy_required IS 'Is Policy Required: This attribute gives detail of the type of the partner for which policy is required or not';\n-- ddl-end --\nCOMMENT ON COLUMN pms.partner_type.is_active IS 'IS_Active : Flag to mark whether the record is Active or In-active';\n-- ddl-end --\nCOMMENT ON COLUMN pms.partner_type.cr_by IS 'Created By : ID or name of the user who create / insert record';\n-- ddl-end --\nCOMMENT ON COLUMN pms.partner_type.cr_dtimes IS 'Created DateTimestamp : Date and Timestamp when the record is created/inserted';\n-- ddl-end --\nCOMMENT ON COLUMN pms.partner_type.upd_by IS 'Updated By : ID or name of the user who update the record with new values';\n-- ddl-end --\nCOMMENT ON COLUMN pms.partner_type.upd_dtimes IS 'Updated DateTimestamp : Date and Timestamp when any of the fields in the record is updated with new values.';\n-- ddl-end --\nCOMMENT ON COLUMN pms.partner_type.is_deleted IS 'IS_Deleted : Flag to mark whether the record is Soft deleted.';\n-- ddl-end --\nCOMMENT ON COLUMN pms.partner_type.del_dtimes IS 'Deleted DateTimestamp : Date and Timestamp when the record is soft deleted with is_deleted=TRUE';\n-- ddl-end --\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/db_scripts/mosip_pms/ddl/pms-policy_group.sql", + "title": "pms-policy_group.sql", + "repo": "mosip/partner-management-services", + "file_path": "db_scripts/mosip_pms/ddl/pms-policy_group.sql", + "language": "sql", + "content": "-- -------------------------------------------------------------------------------------------------\n-- Database Name: mosip_pms\n-- Table Name : pms.policy_group\n-- Purpose : Policy Group: Authentication policies are categorized into different groups/domains. These policy groups are defined and maintained in this table.\n-- \n-- Create By \t: Sadanandegowda DM\n-- Created Date\t: Aug-2020\n-- \n-- Modified Date Modified By Comments / Remarks\n-- ------------------------------------------------------------------------------------------\n-- Aug-2020 Sadanndegowda Updated Schema name \n-- Jan-2021\t\tRam Bhatt\t Set is_deleted flag to not null and default false\n-- Mar-2021\t\tRam Bhatt\t Reverting is_deleted flag not null changes for 1.1.5 \n-- ------------------------------------------------------------------------------------------\n\n-- object: pms.policy_group | type: TABLE --\n-- DROP TABLE IF EXISTS pms.policy_group CASCADE;\nCREATE TABLE pms.policy_group(\n\tid character varying(36) NOT NULL,\n\tname character varying(128) NOT NULL,\n\tdescr character varying(256) NOT NULL,\n\tuser_id character varying(256) NOT NULL,\n\tis_active boolean NOT NULL,\n\tcr_by character varying(256) NOT NULL,\n\tcr_dtimes timestamp NOT NULL,\n\tupd_by character varying(256),\n\tupd_dtimes timestamp,\n\tis_deleted boolean DEFAULT FALSE,\n\tdel_dtimes timestamp,\n\tCONSTRAINT pk_polg PRIMARY KEY (id),\n\tCONSTRAINT uk_polg UNIQUE (name)\n\n);\n-- ddl-end --\nCOMMENT ON TABLE pms.policy_group IS 'Policy Group: Authentication policies are categorized into different groups/domains. These policy groups are defined and maintained in this table.';\n-- ddl-end --\nCOMMENT ON COLUMN pms.policy_group.id IS 'ID: A unique id generated / assigned for a policy group.';\n-- ddl-end --\nCOMMENT ON COLUMN pms.policy_group.name IS 'Name: Name of the policy group';\n-- ddl-end --\nCOMMENT ON COLUMN pms.policy_group.descr IS 'Description: Description of the policy group.';\n-- ddl-end --\nCOMMENT ON COLUMN pms.policy_group.user_id IS 'User ID: Login ID assigned by MOSIP to Partner Manager. It is a general/common id for a policy group that is generated and assigned when the policy group is created.';\n-- ddl-end --\nCOMMENT ON COLUMN pms.policy_group.is_active IS 'IS_Active : Flag to mark whether the record is Active or In-active';\n-- ddl-end --\nCOMMENT ON COLUMN pms.policy_group.cr_by IS 'Created By : ID or name of the user who create / insert record';\n-- ddl-end --\nCOMMENT ON COLUMN pms.policy_group.cr_dtimes IS 'Created DateTimestamp : Date and Timestamp when the record is created/inserted';\n-- ddl-end --\nCOMMENT ON COLUMN pms.policy_group.upd_by IS 'Updated By : ID or name of the user who update the record with new values';\n-- ddl-end --\nCOMMENT ON COLUMN pms.policy_group.upd_dtimes IS 'Updated DateTimestamp : Date and Timestamp when any of the fields in the record is updated with new values.';\n-- ddl-end --\nCOMMENT ON COLUMN pms.policy_group.is_deleted IS 'IS_Deleted : Flag to mark whether the record is Soft deleted.';\n-- ddl-end --\nCOMMENT ON COLUMN pms.policy_group.del_dtimes IS 'Deleted DateTimestamp : Date and Timestamp when the record is soft deleted with is_deleted=TRUE';\n-- ddl-end --\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/db_scripts/mosip_pms/ddl/pms-reg_device_sub_type.sql", + "title": "pms-reg_device_sub_type.sql", + "repo": "mosip/partner-management-services", + "file_path": "db_scripts/mosip_pms/ddl/pms-reg_device_sub_type.sql", + "language": "sql", + "content": "-- -------------------------------------------------------------------------------------------------\n-- Database Name: mosip_pms\n-- Table Name \t: pms.reg_device_sub_type\n-- Purpose \t: Device Sub Type : Sub types of devices that are supported by the MOSIP system, like Slab, Single, Touchless...etc\n-- \n-- Create By \t: Ram Bhatt\n-- Created Date\t: Nov-2021\n-- \n-- Modified Date Modified By Comments / Remarks\n-- ------------------------------------------------------------------------------------------\n\n-- ------------------------------------------------------------------------------------------\n-- object: pms.reg_device_sub_type | type: TABLE --\n-- DROP TABLE IF EXISTS pms.reg_device_sub_type CASCADE;\nCREATE TABLE pms.reg_device_sub_type(\n\tcode character varying(36) NOT NULL,\n\tdtyp_code character varying(36) NOT NULL,\n\tname character varying(64) NOT NULL,\n\tdescr character varying(512),\n\tis_active boolean NOT NULL,\n\tcr_by character varying(256) NOT NULL,\n\tcr_dtimes timestamp NOT NULL,\n\tupd_by character varying(256),\n\tupd_dtimes timestamp,\n\tis_deleted boolean DEFAULT FALSE,\n\tdel_dtimes timestamp,\n\tCONSTRAINT pk_rdstyp_code PRIMARY KEY (code,dtyp_code)\n\n);\n-- ddl-end --\nCOMMENT ON TABLE pms.reg_device_sub_type IS 'Device Type : Sub types of devices that are supported by the MOSIP system, like Slab, Single, Touchless...etc';\n-- ddl-end --\nCOMMENT ON COLUMN pms.reg_device_sub_type.code IS 'Device Sub Type Code: Sub types of devices used for registration processes, authentication...etc for ex., SLB, SINGLE, FULLFACE... etc';\n-- ddl-end --\nCOMMENT ON COLUMN pms.reg_device_sub_type.dtyp_code IS 'Device Type Code : Code of the device type where this sub type belongs to. refers to master.reg_device_type.code';\n-- ddl-end --\nCOMMENT ON COLUMN pms.reg_device_sub_type.name IS 'Device Name: Name of the device sub type';\n-- ddl-end --\nCOMMENT ON COLUMN pms.reg_device_sub_type.descr IS 'Device description: Device sub type description';\n-- ddl-end --\nCOMMENT ON COLUMN pms.reg_device_sub_type.is_active IS 'IS_Active : Flag to mark whether the record/device is Active or In-active';\n-- ddl-end --\nCOMMENT ON COLUMN pms.reg_device_sub_type.cr_by IS 'Created By : ID or name of the user who create / insert record';\n-- ddl-end --\nCOMMENT ON COLUMN pms.reg_device_sub_type.cr_dtimes IS 'Created DateTimestamp : Date and Timestamp when the record is created/inserted';\n-- ddl-end --\nCOMMENT ON COLUMN pms.reg_device_sub_type.upd_by IS 'Updated By : ID or name of the user who update the record with new values';\n-- ddl-end --\nCOMMENT ON COLUMN pms.reg_device_sub_type.upd_dtimes IS 'Updated DateTimestamp : Date and Timestamp when any of the fields in the record is updated with new values.';\n-- ddl-end --\nCOMMENT ON COLUMN pms.reg_device_sub_type.is_deleted IS 'IS_Deleted : Flag to mark whether the record is Soft deleted.';\n-- ddl-end --\nCOMMENT ON COLUMN pms.reg_device_sub_type.del_dtimes IS 'Deleted DateTimestamp : Date and Timestamp when the record is soft deleted with is_deleted=TRUE';\n-- ddl-end --\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/db_scripts/mosip_pms/ddl/pms-reg_device_type.sql", + "title": "pms-reg_device_type.sql", + "repo": "mosip/partner-management-services", + "file_path": "db_scripts/mosip_pms/ddl/pms-reg_device_type.sql", + "language": "sql", + "content": "CREATE TABLE pms.reg_device_type(\n\tcode character varying(36) NOT NULL,\n\tname character varying(64) NOT NULL,\n\tdescr character varying(512),\n\tis_active boolean NOT NULL,\n\tcr_by character varying(256) NOT NULL,\n\tcr_dtimes timestamp NOT NULL,\n\tupd_by character varying(256),\n\tupd_dtimes timestamp,\n\tis_deleted boolean DEFAULT FALSE,\n\tdel_dtimes timestamp,\n\tCONSTRAINT pk_rdtyp_code PRIMARY KEY (code)\n);\n\nCOMMENT ON TABLE pms.reg_device_type IS 'Device Type : Types of devices that are supported by the MOSIP system, like scanning, finger, face, iris etc';\nCOMMENT ON COLUMN pms.reg_device_type.code IS 'Device Type Code: Types of devices used for registration processes, authentication...etc for ex., FNR, FACE, IRIS... etc';\nCOMMENT ON COLUMN pms.reg_device_type.name IS 'Device Name: Name of the device type';\nCOMMENT ON COLUMN pms.reg_device_type.descr IS 'Device description: Device sub type description';\nCOMMENT ON COLUMN pms.reg_device_type.is_active IS 'IS_Active : Flag to mark whether the record/device is Active or In-active';\nCOMMENT ON COLUMN pms.reg_device_type.cr_by IS 'Created By : ID or name of the user who create / insert record';\nCOMMENT ON COLUMN pms.reg_device_type.cr_dtimes IS 'Created DateTimestamp : Date and Timestamp when the record is created/inserted';\nCOMMENT ON COLUMN pms.reg_device_type.upd_by IS 'Updated By : ID or name of the user who update the record with new values';\nCOMMENT ON COLUMN pms.reg_device_type.upd_dtimes IS 'Updated DateTimestamp : Date and Timestamp when any of the fields in the record is updated with new values.';\nCOMMENT ON COLUMN pms.reg_device_type.is_deleted IS 'IS_Deleted : Flag to mark whether the record is Soft deleted.';\nCOMMENT ON COLUMN pms.reg_device_type.del_dtimes IS 'Deleted DateTimestamp : Date and Timestamp when the record is soft deleted with is_deleted=TRUE';\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/db_scripts/mosip_pms/ddl/pms-secure_biometric_interface.sql", + "title": "pms-secure_biometric_interface.sql", + "repo": "mosip/partner-management-services", + "file_path": "db_scripts/mosip_pms/ddl/pms-secure_biometric_interface.sql", + "language": "sql", + "content": "-- TODO: check if provider_id non null constraint is required.\nCREATE TABLE pms.secure_biometric_interface(\n\tid character varying(36) NOT NULL,\n\tsw_binary_hash bytea NOT NULL,\n\tsw_version character varying(64) NOT NULL,\n\tsw_cr_dtimes timestamp,\n\tsw_expiry_dtimes timestamp,\n\tapproval_status character varying(36) NOT NULL,\n\tis_active boolean NOT NULL,\n\tcr_by character varying(256) NOT NULL,\n\tcr_dtimes timestamp NOT NULL,\n\tupd_by character varying(256),\n\tupd_dtimes timestamp,\n\tis_deleted boolean DEFAULT FALSE,\n\tdel_dtimes timestamp,\n\t-- provider_id character varying(36) NOT NULL,\n\tprovider_id character varying(36),\n\tpartner_org_name character varying(128),\n\tCONSTRAINT pk_sbi_id PRIMARY KEY (id)\n\n);\n\nCOMMENT ON TABLE pms.secure_biometric_interface IS 'Secure Biometric Interface : Secure Biometric Interface to have all the details about the device types, provider and software details';\nCOMMENT ON COLUMN pms.secure_biometric_interface.id IS 'ID: Unigue service ID, Service ID is geerated by the MOSIP system';\nCOMMENT ON COLUMN pms.secure_biometric_interface.sw_binary_hash IS 'Software Binary Hash : Its is a software binary stored in MOSIP system for the devices';\nCOMMENT ON COLUMN pms.secure_biometric_interface.sw_version IS 'Software Version : Version of the stored software';\nCOMMENT ON COLUMN pms.secure_biometric_interface.sw_cr_dtimes IS 'Software Created Date Time: Date and Time on which this software is created';\nCOMMENT ON COLUMN pms.secure_biometric_interface.sw_expiry_dtimes IS 'Software Expiry Date Time: Expiry date and time of the device software';\nCOMMENT ON COLUMN pms.secure_biometric_interface.approval_status IS 'Approval Status:';\nCOMMENT ON COLUMN pms.secure_biometric_interface.is_active IS 'IS_Active : Flag to mark whether the record/device is Active or In-active';\nCOMMENT ON COLUMN pms.secure_biometric_interface.cr_by IS 'Created By : ID or name of the user who create / insert record';\nCOMMENT ON COLUMN pms.secure_biometric_interface.cr_dtimes IS 'Created DateTimestamp : Date and Timestamp when the record is created/inserted';\nCOMMENT ON COLUMN pms.secure_biometric_interface.upd_by IS 'Updated By : ID or name of the user who update the record with new values';\nCOMMENT ON COLUMN pms.secure_biometric_interface.upd_dtimes IS 'Updated DateTimestamp : Date and Timestamp when any of the fields in the record is updated with new values.';\nCOMMENT ON COLUMN pms.secure_biometric_interface.is_deleted IS 'IS_Deleted : Flag to mark whether the record is Soft deleted.';\nCOMMENT ON COLUMN pms.secure_biometric_interface.del_dtimes IS 'Deleted DateTimestamp : Date and Timestamp when the record is soft deleted with is_deleted=TRUE';\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/db_scripts/mosip_pms/ddl/pms-secure_biometric_interface_h.sql", + "title": "pms-secure_biometric_interface_h.sql", + "repo": "mosip/partner-management-services", + "file_path": "db_scripts/mosip_pms/ddl/pms-secure_biometric_interface_h.sql", + "language": "sql", + "content": "-- TODO: check if provider_id non null constraint is required.\nCREATE TABLE pms.secure_biometric_interface_h(\n\tid character varying(36) NOT NULL,\n\tsw_binary_hash bytea NOT NULL,\n\tsw_version character varying(64) NOT NULL,\n\tsw_cr_dtimes timestamp,\n\tsw_expiry_dtimes timestamp,\n\tapproval_status character varying(36) NOT NULL,\n\tis_active boolean NOT NULL,\n\tcr_by character varying(256) NOT NULL,\n\tcr_dtimes timestamp NOT NULL,\n\tupd_by character varying(256),\n\tupd_dtimes timestamp,\n\tis_deleted boolean DEFAULT FALSE,\n\tdel_dtimes timestamp,\n\teff_dtimes timestamp NOT NULL,\n\t-- provider_id character varying(36) NOT NULL,\n\tprovider_id character varying(36),\n\tpartner_org_name character varying(128),\n\tCONSTRAINT pk_mdsh_id PRIMARY KEY (id,eff_dtimes)\n);\n\nCOMMENT ON TABLE pms.secure_biometric_interface_h IS 'MOSIP Secure Biometric Interface History : History of changes of any MOSIP secure biometric interface will be stored in history table to track any chnages for future validations.';\nCOMMENT ON COLUMN pms.secure_biometric_interface_h.id IS 'ID: Unigue service ID, Service ID is geerated by the MOSIP system';\nCOMMENT ON COLUMN pms.secure_biometric_interface_h.sw_binary_hash IS 'Software Binary Hash : Its is a software binary stored in MOSIP system for the devices';\nCOMMENT ON COLUMN pms.secure_biometric_interface_h.sw_version IS 'Software Version : Version of the stored software';\nCOMMENT ON COLUMN pms.secure_biometric_interface_h.sw_cr_dtimes IS 'Software Created Date Time: Date and Time on which this software is created';\nCOMMENT ON COLUMN pms.secure_biometric_interface_h.sw_expiry_dtimes IS 'Software Expiry Date Time: Expiry date and time of the device software';\nCOMMENT ON COLUMN pms.secure_biometric_interface_h.approval_status IS 'Approval Status';\nCOMMENT ON COLUMN pms.secure_biometric_interface_h.is_active IS 'IS_Active : Flag to mark whether the record/device is Active or In-active';\nCOMMENT ON COLUMN pms.secure_biometric_interface_h.cr_by IS 'Created By : ID or name of the user who create / insert record';\nCOMMENT ON COLUMN pms.secure_biometric_interface_h.cr_dtimes IS 'Created DateTimestamp : Date and Timestamp when the record is created/inserted';\nCOMMENT ON COLUMN pms.secure_biometric_interface_h.upd_by IS 'Updated By : ID or name of the user who update the record with new values';\nCOMMENT ON COLUMN pms.secure_biometric_interface_h.upd_dtimes IS 'Updated DateTimestamp : Date and Timestamp when any of the fields in the record is updated with new values.';\nCOMMENT ON COLUMN pms.secure_biometric_interface_h.is_deleted IS 'IS_Deleted : Flag to mark whether the record is Soft deleted.';\nCOMMENT ON COLUMN pms.secure_biometric_interface_h.del_dtimes IS 'Deleted DateTimestamp : Date and Timestamp when the record is soft deleted with is_deleted=TRUE';\nCOMMENT ON COLUMN pms.secure_biometric_interface_h.eff_dtimes IS 'Effective Date Timestamp : This to track master record whenever there is an INSERT/UPDATE/DELETE ( soft delete ). The current record is effective from this date-time.';\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/db_scripts/mosip_pms/ddl/pms-tspid_seq.sql", + "title": "pms-tspid_seq.sql", + "repo": "mosip/partner-management-services", + "file_path": "db_scripts/mosip_pms/ddl/pms-tspid_seq.sql", + "language": "sql", + "content": "-- -------------------------------------------------------------------------------------------------\n-- Database Name: mosip_pms\n-- Table Name \t: pms.tspid_seq\n-- Purpose \t: Trusted Service Provider ID Sequence : Maintains latest sequence number available for TSP ID generation.\n-- \n-- Create By \t: Sadanandegowda DM\n-- Created Date\t: Aug-2020\n-- \n-- Modified Date Modified By Comments / Remarks\n-- ------------------------------------------------------------------------------------------\n-- Aug-2020 Sadanndegowda Updated Schema name \n-- ------------------------------------------------------------------------------------------\n\n-- object: pms.tspid_seq | type: TABLE --\n-- DROP TABLE IF EXISTS pms.tspid_seq CASCADE;\nCREATE TABLE pms.tspid_seq(\n\tcurr_seq_no integer NOT NULL,\n\tcr_by character varying(256) NOT NULL,\n\tcr_dtimes timestamp NOT NULL,\n\tupd_by character varying(256),\n\tupd_dtimes timestamp,\n\tCONSTRAINT pk_tspidseq_id PRIMARY KEY (curr_seq_no)\n\n);\n-- ddl-end --\nCOMMENT ON TABLE pms.tspid_seq IS 'Trusted Service Provider ID Sequence : Maintains latest sequence number available for TSP ID generation';\n-- ddl-end --\nCOMMENT ON COLUMN pms.tspid_seq.curr_seq_no IS 'Current Sequence Number : Latest sequence number available for TSP (Trusted Service Provider) ID generation';\n-- ddl-end --\nCOMMENT ON COLUMN pms.tspid_seq.cr_by IS 'Created By : ID or name of the user who create / insert record';\n-- ddl-end --\nCOMMENT ON COLUMN pms.tspid_seq.cr_dtimes IS 'Created DateTimestamp : Date and Timestamp when the record is created/inserted';\n-- ddl-end --\nCOMMENT ON COLUMN pms.tspid_seq.upd_by IS 'Updated By : ID or name of the user who update the record with new values';\n-- ddl-end --\nCOMMENT ON COLUMN pms.tspid_seq.upd_dtimes IS 'Updated DateTimestamp : Date and Timestamp when any of the fields in the record is updated with new values.';\n-- ddl-end --" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/db_scripts/mosip_pms/ddl/pms-user_details.sql", + "title": "pms-user_details.sql", + "repo": "mosip/partner-management-services", + "file_path": "db_scripts/mosip_pms/ddl/pms-user_details.sql", + "language": "sql", + "content": "-- This table has consents of partners for biometrics.\nCREATE TABLE pms.user_details(\n id character varying(36) NOT NULL,\n user_id character varying(64) NOT null,\n consent_given character varying(36) NOT NULL DEFAULT 'NO',\n consent_given_dtimes timestamp NOT NULL,\n cr_dtimes timestamp NOT NULL,\n cr_by character varying(64) NOT NULL,\n upd_by character varying(64),\n upd_dtimes timestamp,\n CONSTRAINT user_details_pk PRIMARY KEY (id),\n CONSTRAINT consent_given CHECK (consent_given IN ('YES', 'NO'))\n);\nCOMMENT ON TABLE pms.user_details IS 'This table has consents of partners.';\nCOMMENT ON COLUMN pms.user_details.user_id IS 'User Id: user id of the partner.';\nCOMMENT ON COLUMN pms.user_details.id IS 'ID: Unique Id generated.';\nCOMMENT ON COLUMN pms.user_details.consent_given_dtimes IS 'Consent given DateTimestamp : Date and Timestamp when the consent is given.';\nCOMMENT ON COLUMN pms.user_details.cr_dtimes IS 'Created DateTimestamp : Date and Timestamp when the record is created/inserted';\nCOMMENT ON COLUMN pms.user_details.cr_by IS 'Created By : ID or name of the user who create / insert record.';\nCOMMENT ON COLUMN pms.user_details.consent_given IS 'Consent Given : Indicates whether consent has been given by the partner.';\nCOMMENT ON COLUMN pms.user_details.upd_by IS 'Updated By : ID or name of the user who update the record with new values';\nCOMMENT ON COLUMN pms.user_details.upd_dtimes IS 'Updated DateTimestamp : Date and Timestamp when any of the fields in the record is updated with new values.';" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/db_scripts/mosip_pms/deploy.properties", + "title": "deploy.properties", + "repo": "mosip/partner-management-services", + "file_path": "db_scripts/mosip_pms/deploy.properties", + "language": "properties", + "content": "DB_SERVERIP=\nDB_PORT=5432\nSU_USER=postgres\nDEFAULT_DB_NAME=postgres\nMOSIP_DB_NAME=mosip_pms\nDML_FLAG=1\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/db_scripts/mosip_pms/dml.sql", + "title": "dml.sql", + "repo": "mosip/partner-management-services", + "file_path": "db_scripts/mosip_pms/dml.sql", + "language": "sql", + "content": "\\c mosip_pms \n\nTRUNCATE TABLE pms.partner_type cascade ;\n\\COPY pms.partner_type (code,partner_description,is_active,cr_by,cr_dtimes,is_policy_required) FROM './dml/pms-partner_type.csv' delimiter ',' HEADER csv;\n\nTRUNCATE TABLE pms.policy_group cascade ;\n\\COPY pms.policy_group (id,name,descr,user_id,is_active,cr_by,cr_dtimes,upd_by,upd_dtimes) FROM './dml/pms-policy_group.csv' delimiter ',' HEADER csv;\n\nTRUNCATE TABLE pms.auth_policy cascade ;\n\\COPY pms.auth_policy (id,policy_group_id,name,descr,policy_file_id,policy_type,version,policy_schema,valid_from_date,valid_to_date,is_active,cr_by,cr_dtimes,upd_by,upd_dtimes) FROM './dml/pms-auth_policy.csv' delimiter ',' HEADER csv;\n-- Update valid_to_date\nUPDATE auth_policy\nSET valid_to_date = valid_from_date + interval '200 years'\nWHERE policy_group_id LIKE 'mpolicygroup-default%' AND id LIKE 'mpolicy-default%';\n\nTRUNCATE TABLE pms.auth_policy_h cascade ;\n\\COPY pms.auth_policy_h (id,eff_dtimes,policy_group_id,name,descr,policy_file_id,policy_type,version,policy_schema,valid_from_date,valid_to_date,is_active,cr_by,cr_dtimes,upd_by,upd_dtimes) FROM './dml/pms-auth_policy_h.csv' delimiter ',' HEADER csv;\n-- Update valid_to_date\nUPDATE auth_policy_h\nSET valid_to_date = valid_from_date + interval '200 years'\nWHERE policy_group_id LIKE 'mpolicygroup-default%' AND id LIKE 'mpolicy-default%';\n\nTRUNCATE TABLE pms.partner cascade ;\n\\COPY pms.partner (id,policy_group_id,name,address,contact_no,email_id,certificate_alias,user_id,partner_type_code,approval_status,is_active,cr_by,cr_dtimes,upd_by,upd_dtimes) FROM './dml/pms-partner.csv' delimiter ',' HEADER csv;\n\nTRUNCATE TABLE pms.partner_h cascade ;\n\\COPY pms.partner_h (id,eff_dtimes,policy_group_id,name,address,contact_no,email_id,certificate_alias,user_id,partner_type_code,approval_status,is_active,cr_by,cr_dtimes,upd_by,upd_dtimes) FROM './dml/pms-partner_h.csv' delimiter ',' HEADER csv;\n\nTRUNCATE TABLE pms.partner_policy_request cascade ;\n\\COPY pms.partner_policy_request (id,part_id,policy_id,request_datetimes,request_detail,status_code,cr_by,cr_dtimes,upd_by,upd_dtimes) FROM './dml/pms-partner_policy_request.csv' delimiter ',' HEADER csv;\n\nTRUNCATE TABLE pms.partner_policy_bioextract cascade ;\n\\COPY pms.partner_policy_bioextract (id,part_id,policy_id,attribute_name,extractor_provider,extractor_provider_version,biometric_modality,biometric_sub_types,cr_by,cr_dtimes,upd_by,upd_dtimes) FROM './dml/pms-partner_policy_bioextract.csv' delimiter ',' HEADER csv;\n\nTRUNCATE TABLE pms.partner_policy cascade ;\n\\COPY pms.partner_policy (policy_api_key,label,part_id,policy_id,valid_from_datetime,valid_to_datetime,is_active,cr_by,cr_dtimes,upd_by,upd_dtimes) FROM './dml/pms-partner_policy.csv' delimiter ',' HEADER csv;\n-- Update valid_to_datetime\nUPDATE partner_policy\nSET valid_to_datetime = valid_from_datetime + interval '200 years'\nWHERE part_id LIKE 'mpartner-default%' AND policy_id LIKE 'mpolicy-default%';\n\nTRUNCATE TABLE pms.partner_policy_credential_type cascade ;\n\\COPY pms.partner_policy_credential_type (part_id,policy_id,credential_type,is_active,cr_by,cr_dtimes,upd_by,upd_dtimes,is_deleted,del_dtimes) FROM './dml/pms-partner_policy_credential_type.csv' delimiter ',' HEADER csv;\n\nTRUNCATE TABLE pms.reg_device_type cascade ;\n\\COPY pms.reg_device_type (code,name,descr,is_active,cr_by,cr_dtimes) FROM './dml/pms-reg_device_type.csv' delimiter ',' HEADER csv;\n\nTRUNCATE TABLE pms.reg_device_sub_type cascade ;\n\\COPY pms.reg_device_sub_type (code,dtyp_code,name,descr,is_active,cr_by,cr_dtimes) FROM './dml/pms-reg_device_sub_type.csv' delimiter ',' HEADER csv;\n\nTRUNCATE TABLE pms.device_detail cascade ;\n\\COPY pms.device_detail (id,dprovider_id,dtype_code,dstype_code,make,model,partner_org_name,approval_status,is_active,cr_by,cr_dtimes,upd_by,upd_dtimes) FROM './dml/pms-device_detail.csv' delimiter ',' HEADER csv;\n\nTRUNCATE TABLE pms.secure_biometric_interface cascade ;\n\\COPY pms.secure_biometric_interface (id,sw_binary_hash,sw_version,sw_cr_dtimes,sw_expiry_dtimes,approval_status,is_active,cr_by,cr_dtimes,upd_by,upd_dtimes) FROM './dml/pms-secure_biometric_interface.csv' delimiter ',' HEADER csv;\n\nTRUNCATE TABLE pms.secure_biometric_interface_h cascade ;\n\\COPY pms.secure_biometric_interface_h (id,sw_binary_hash,sw_version,sw_cr_dtimes,sw_expiry_dtimes,approval_status,is_active,cr_by,cr_dtimes,upd_by,upd_dtimes,eff_dtimes) FROM './dml/pms-secure_biometric_interface_h.csv' delimiter ',' HEADER csv;\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/db_scripts/mosip_pms/grants.sql", + "title": "grants.sql", + "repo": "mosip/partner-management-services", + "file_path": "db_scripts/mosip_pms/grants.sql", + "language": "sql", + "content": "\\c mosip_pms \n\nGRANT CONNECT\n ON DATABASE mosip_pms\n TO pmsuser;\n\nGRANT USAGE\n ON SCHEMA pms\n TO pmsuser;\n\nGRANT SELECT,INSERT,UPDATE,DELETE,TRUNCATE,REFERENCES\n ON ALL TABLES IN SCHEMA pms\n TO pmsuser;\n\nALTER DEFAULT PRIVILEGES IN SCHEMA pms\n\tGRANT SELECT,INSERT,UPDATE,DELETE,REFERENCES ON TABLES TO pmsuser;\n\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/db_scripts/mosip_pms/role_dbuser.sql", + "title": "role_dbuser.sql", + "repo": "mosip/partner-management-services", + "file_path": "db_scripts/mosip_pms/role_dbuser.sql", + "language": "sql", + "content": "CREATE ROLE pmsuser WITH \n\tINHERIT\n\tLOGIN\n\tPASSWORD :dbuserpwd;\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/db_upgrade_scripts/mosip_pms/sql/1.1.5.5_to_1.2.0.1-B1_pms-authdevice-support.sql", + "title": "1.1.5.5_to_1.2.0.1-B1_pms-authdevice-support.sql", + "repo": "mosip/partner-management-services", + "file_path": "db_upgrade_scripts/mosip_pms/sql/1.1.5.5_to_1.2.0.1-B1_pms-authdevice-support.sql", + "language": "sql", + "content": "\\COPY authdevice.device_detail TO 'dml/auth-device_detail.csv' WITH (FORMAT CSV, HEADER);\n\n\\COPY (select sbi.id,sbi.sw_binary_hash,sbi.sw_version,sbi.sw_cr_dtimes,sbi.sw_expiry_dtimes,sbi.approval_status,sbi.is_active,sbi.cr_by,sbi.cr_dtimes,sbi.upd_by,sbi.upd_dtimes,sbi.is_deleted,sbi.del_dtimes,dd.dprovider_id,dd.partner_org_name from authdevice.secure_biometric_interface sbi inner join authdevice.device_detail dd on device_detail_id = dd.id) TO 'dml/auth-secure_biometric_interface.csv' WITH (FORMAT CSV, HEADER);\n\n\\COPY (select sbi.id,sbi.sw_binary_hash,sbi.sw_version,sbi.sw_cr_dtimes,sbi.sw_expiry_dtimes,sbi.approval_status,sbi.is_active,sbi.cr_by,sbi.cr_dtimes,sbi.upd_by,sbi.upd_dtimes,sbi.is_deleted,sbi.del_dtimes,sbi.eff_dtimes,dd.dprovider_id,dd.partner_org_name from authdevice.secure_biometric_interface_h sbi inner join authdevice.device_detail dd on device_detail_id = dd.id) TO 'dml/auth-secure_biometric_interface_h.csv' WITH (FORMAT CSV, HEADER);\n\n\\COPY authdevice.ftp_chip_detail TO 'dml/auth-ftp_chip_detail.csv' WITH (FORMAT CSV, HEADER);\n\n\\COPY (select dd.dprovider_id,dd.partner_org_name,dd.id,sbi.id,sbi.is_active,sbi.cr_by,sbi.cr_dtimes,sbi.upd_by,sbi.upd_dtimes,sbi.is_deleted,sbi.del_dtimes from authdevice.secure_biometric_interface sbi inner join authdevice.device_detail dd on device_detail_id = dd.id) TO 'dml/auth-device_detail_sbi.csv' WITH (FORMAT CSV, HEADER);\n\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/db_upgrade_scripts/mosip_pms/sql/1.1.5.5_to_1.2.0.1-B1_pms-regdevice-support.sql", + "title": "1.1.5.5_to_1.2.0.1-B1_pms-regdevice-support.sql", + "repo": "mosip/partner-management-services", + "file_path": "db_upgrade_scripts/mosip_pms/sql/1.1.5.5_to_1.2.0.1-B1_pms-regdevice-support.sql", + "language": "sql", + "content": "\\COPY regdevice.device_detail TO 'dml/reg-device_detail.csv' WITH (FORMAT CSV, HEADER);\n\n\\COPY (select sbi.id,sbi.sw_binary_hash,sbi.sw_version,sbi.sw_cr_dtimes,sbi.sw_expiry_dtimes,sbi.approval_status,sbi.is_active,sbi.cr_by,sbi.cr_dtimes,sbi.upd_by,sbi.upd_dtimes,sbi.is_deleted,sbi.del_dtimes,dd.dprovider_id,dd.partner_org_name from regdevice.secure_biometric_interface sbi inner join regdevice.device_detail dd on sbi.device_detail_id = dd.id) TO 'dml/reg-secure_biometric_interface.csv' WITH (FORMAT CSV, HEADER);\n\n\\COPY (select sbi.id,sbi.sw_binary_hash,sbi.sw_version,sbi.sw_cr_dtimes,sbi.sw_expiry_dtimes,sbi.approval_status,sbi.is_active,sbi.cr_by,sbi.cr_dtimes,sbi.upd_by,sbi.upd_dtimes,sbi.is_deleted,sbi.del_dtimes,sbi.eff_dtimes,dd.dprovider_id,dd.partner_org_name from regdevice.secure_biometric_interface_h sbi inner join regdevice.device_detail dd on sbi.device_detail_id = dd.id) TO 'dml/reg-secure_biometric_interface_h.csv' WITH (FORMAT CSV, HEADER);\n\n\\COPY regdevice.ftp_chip_detail TO 'dml/reg-ftp_chip_detail.csv' WITH (FORMAT CSV, HEADER);\n\n\\COPY (select dd.dprovider_id,dd.partner_org_name,dd.id,sbi.id, sbi.is_active,sbi.cr_by,sbi.cr_dtimes,sbi.upd_by,sbi.upd_dtimes,sbi.is_deleted,sbi.del_dtimes from regdevice.secure_biometric_interface sbi inner join regdevice.device_detail dd on device_detail_id = dd.id) TO 'dml/reg-device_detail_sbi.csv' WITH (FORMAT CSV, HEADER);\n\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/db_upgrade_scripts/mosip_pms/sql/1.1.5.5_to_1.2.0.1-B1_rollback.sql", + "title": "1.1.5.5_to_1.2.0.1-B1_rollback.sql", + "repo": "mosip/partner-management-services", + "file_path": "db_upgrade_scripts/mosip_pms/sql/1.1.5.5_to_1.2.0.1-B1_rollback.sql", + "language": "sql", + "content": "\\c mosip_pms\n\nREASSIGN OWNED BY postgres TO sysadmin;\n\nGRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA pms TO sysadmin;\n\nDROP TABLE IF EXISTS pms.device_detail;\nDROP TABLE IF EXISTS pms.device_detail_sbi;\nDROP TABLE IF EXISTS pms.ftp_chip_detail;\nDROP TABLE IF EXISTS pms.reg_device_sub_type;\nDROP TABLE IF EXISTS pms.reg_device_type;\nDROP TABLE IF EXISTS pms.secure_biometric_interface;\nDROP TABLE IF EXISTS pms.secure_biometric_interface_h;\n\nALTER TABLE pms.partner_policy DROP COLUMN label;\nALTER TABLE pms.partner DROP COLUMN lang_code;\nALTER TABLE pms.partner_h DROP COLUMN lang_code;" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/db_upgrade_scripts/mosip_pms/sql/1.1.5.5_to_1.2.0.1-B1_upgrade.sql", + "title": "1.1.5.5_to_1.2.0.1-B1_upgrade.sql", + "repo": "mosip/partner-management-services", + "file_path": "db_upgrade_scripts/mosip_pms/sql/1.1.5.5_to_1.2.0.1-B1_upgrade.sql", + "language": "sql", + "content": "\\c mosip_pms\n\nREASSIGN OWNED BY sysadmin TO postgres;\n\nREVOKE ALL PRIVILEGES ON ALL TABLES IN SCHEMA pms FROM pmsuser;\n\nREVOKE ALL PRIVILEGES ON ALL TABLES IN SCHEMA pms FROM sysadmin;\n\nGRANT SELECT, INSERT, TRUNCATE, REFERENCES, UPDATE, DELETE ON ALL TABLES IN SCHEMA pms TO pmsuser;\n\nGRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA pms TO postgres;\n\n-- object: pms.device_detail | type: TABLE --\n-- DROP TABLE IF EXISTS pms.device_detail CASCADE;\nCREATE TABLE pms.device_detail(\n\tid character varying(36) NOT NULL,\n\tdprovider_id character varying(36) NOT NULL,\n\tdtype_code character varying(36) NOT NULL,\n\tdstype_code character varying(36) NOT NULL,\n\tmake character varying(36) NOT NULL,\n\tmodel character varying(36) NOT NULL,\n\tpartner_org_name character varying(128),\n\tapproval_status character varying(36) NOT NULL,\n\tis_active boolean NOT NULL,\n\tcr_by character varying(256) NOT NULL,\n\tcr_dtimes timestamp NOT NULL,\n\tupd_by character varying(256),\n\tupd_dtimes timestamp,\n\tis_deleted boolean DEFAULT FALSE,\n\tdel_dtimes timestamp,\n\tCONSTRAINT pk_devdtl_id PRIMARY KEY (id),\n\tCONSTRAINT uk_devdtl_id UNIQUE (dprovider_id,dtype_code,dstype_code,make,model)\n\n);\n-- ddl-end --\nCOMMENT ON TABLE pms.device_detail IS 'Device Detail : Details of the device like device provider id, make , model, device type, device sub type, approval status are stored here.';\n-- ddl-end --\nCOMMENT ON COLUMN pms.device_detail.id IS 'ID: Unigue service ID, Service ID is geerated by the MOSIP system';\n-- ddl-end --\nCOMMENT ON COLUMN pms.device_detail.dprovider_id IS 'Device Provider ID : Device provider ID, Referenced from master.device_provider.id';\n-- ddl-end --\nCOMMENT ON COLUMN pms.device_detail.dtype_code IS 'Device Type Code: Code of the device type, Referenced from master.reg_device_type.code';\n-- ddl-end --\nCOMMENT ON COLUMN pms.device_detail.dstype_code IS ' Device Sub Type Code: Code of the device sub type, Referenced from master.reg_device_sub_type.code';\n-- ddl-end --\nCOMMENT ON COLUMN pms.device_detail.make IS 'Make: Make of the device';\n-- ddl-end --\nCOMMENT ON COLUMN pms.device_detail.model IS ' Model: Model of the device';\n-- ddl-end --\nCOMMENT ON COLUMN pms.device_detail.partner_org_name IS 'Partner Organisation Name';\n-- ddl-end --\nCOMMENT ON COLUMN pms.device_detail.approval_status IS 'Approval Status';\n-- ddl-end --\nCOMMENT ON COLUMN pms.device_detail.is_active IS 'IS_Active : Flag to mark whether the record/device is Active or In-active';\n-- ddl-end --\nCOMMENT ON COLUMN pms.device_detail.cr_by IS 'Created By : ID or name of the user who create / insert record';\n-- ddl-end --\nCOMMENT ON COLUMN pms.device_detail.cr_dtimes IS 'Created DateTimestamp : Date and Timestamp when the record is created/inserted';\n-- ddl-end --\nCOMMENT ON COLUMN pms.device_detail.upd_by IS 'Updated By : ID or name of the user who update the record with new values';\n-- ddl-end --\nCOMMENT ON COLUMN pms.device_detail.upd_dtimes IS 'Updated DateTimestamp : Date and Timestamp when any of the fields in the record is updated with new values.';\n-- ddl-end --\nCOMMENT ON COLUMN pms.device_detail.is_deleted IS 'IS_Deleted : Flag to mark whether the record is Soft deleted.';\n-- ddl-end --\nCOMMENT ON COLUMN pms.device_detail.del_dtimes IS 'Deleted DateTimestamp : Date and Timestamp when the record is soft deleted with is_deleted=TRUE';\n-- ddl-end --\n\nGRANT SELECT, INSERT, TRUNCATE, REFERENCES, UPDATE, DELETE ON pms.device_detail TO pmsuser;\n\n-- object: pms.device_detail | type: TABLE --\n-- DROP TABLE IF EXISTS pms.device_detail_sbi CASCADE;\nCREATE TABLE pms.device_detail_sbi(\n\tdprovider_id character varying(36) NOT NULL,\n\tpartner_org_name character varying(128),\n\tdevice_detail_id character varying(36) NOT NULL,\n\tsbi_id character varying(36) NOT NULL,\n\tis_active boolean NOT NULL,\n\tcr_by character varying(256) NOT NULL,\n\tcr_dtimes timestamp NOT NULL,\n\tupd_by character varying(256),\n\tupd_dtimes timestamp,\n\tis_deleted boolean DEFAULT FALSE,\n\tdel_dtimes timestamp\n\n);\n-- ddl-end --\n\nGRANT SELECT, INSERT, TRUNCATE, REFERENCES, UPDATE, DELETE ON pms.device_detail_sbi TO pmsuser;\n\n-- object: pms.ftp_chip_detail | type: TABLE --\n-- DROP TABLE IF EXISTS pms.ftp_chip_detail CASCADE;\nCREATE TABLE pms.ftp_chip_detail(\n\tid character varying(36) NOT NULL,\n\tfoundational_trust_provider_id character varying(36) NOT NULL,\n\tmake character varying(36),\n\tmodel character varying(36),\n\tcertificate_alias character varying(36),\n\tpartner_org_name character varying(128),\n\tis_active boolean NOT NULL,\n\tcr_by character varying(256) NOT NULL,\n\tcr_dtimes timestamp NOT NULL,\n\tupd_by character varying(256),\n\tupd_dtimes timestamp,\n\tis_deleted boolean DEFAULT FALSE,\n\tdel_dtimes timestamp,\n\tCONSTRAINT pk_fcdtl_id PRIMARY KEY (id),\n\tCONSTRAINT uk_fcdtl_id UNIQUE (foundational_trust_provider_id,make,model)\n\n);\n-- ddl-end --\nCOMMENT ON TABLE pms.ftp_chip_detail IS 'Foundational Trust Provider Chip Details : To store all foundational trust provider chip details like make, model and certificate.';\n-- ddl-end --\nCOMMENT ON COLUMN pms.ftp_chip_detail.id IS 'Foundational Trust Provider ID: Unique ID of the trust provider, Trust provider id is generated by MOSIP system.';\n-- ddl-end --\nCOMMENT ON COLUMN pms.ftp_chip_detail.foundational_trust_provider_id IS 'Foundational Trust Provider ID: This is the partner id who provide chip and required certificates for L1 devices. This is soft referenced from Partner Management Service database.';\n-- ddl-end --\nCOMMENT ON COLUMN pms.ftp_chip_detail.make IS 'Chip Make: Make of the chip provided by the foundational trust provider';\n-- ddl-end --\nCOMMENT ON COLUMN pms.ftp_chip_detail.model IS 'Model : Model of the chip which is provided by the foundational trust provider';\n-- ddl-end --\nCOMMENT ON COLUMN pms.ftp_chip_detail.certificate_alias IS 'Certificate Alias : Its certificate alias which is stored in some key store and provided by MOSIP to a trust provider';\n-- ddl-end --\nCOMMENT ON COLUMN pms.ftp_chip_detail.partner_org_name IS 'Partner Organisation Name';\n-- ddl-end --\nCOMMENT ON COLUMN pms.ftp_chip_detail.is_active IS 'IS_Active : Flag to mark whether the record/device is Active or In-active';\n-- ddl-end --\nCOMMENT ON COLUMN pms.ftp_chip_detail.cr_by IS 'Created By : ID or name of the user who create / insert record';\n-- ddl-end --\nCOMMENT ON COLUMN pms.ftp_chip_detail.cr_dtimes IS 'Created DateTimestamp : Date and Timestamp when the record is created/inserted';\n-- ddl-end --\nCOMMENT ON COLUMN pms.ftp_chip_detail.upd_by IS 'Updated By : ID or name of the user who update the record with new values';\n-- ddl-end --\nCOMMENT ON COLUMN pms.ftp_chip_detail.upd_dtimes IS 'Updated DateTimestamp : Date and Timestamp when any of the fields in the record is updated with new values.';\n-- ddl-end --\nCOMMENT ON COLUMN pms.ftp_chip_detail.is_deleted IS 'IS_Deleted : Flag to mark whether the record is Soft deleted.';\n-- ddl-end --\nCOMMENT ON COLUMN pms.ftp_chip_detail.del_dtimes IS 'Deleted DateTimestamp : Date and Timestamp when the record is soft deleted with is_deleted=TRUE';\n-- ddl-end --\n\nGRANT SELECT, INSERT, TRUNCATE, REFERENCES, UPDATE, DELETE ON pms.ftp_chip_detail TO pmsuser;\n\n-- object: pms.reg_device_sub_type | type: TABLE --\n-- DROP TABLE IF EXISTS pms.reg_device_sub_type CASCADE;\nCREATE TABLE pms.reg_device_sub_type(\n\tcode character varying(36) NOT NULL,\n\tdtyp_code character varying(36) NOT NULL,\n\tname character varying(64) NOT NULL,\n\tdescr character varying(512),\n\tis_active boolean NOT NULL,\n\tcr_by character varying(256) NOT NULL,\n\tcr_dtimes timestamp NOT NULL,\n\tupd_by character varying(256),\n\tupd_dtimes timestamp,\n\tis_deleted boolean DEFAULT FALSE,\n\tdel_dtimes timestamp,\n\tCONSTRAINT pk_rdstyp_code PRIMARY KEY (code,dtyp_code)\n\n);\n-- ddl-end --\nCOMMENT ON TABLE pms.reg_device_sub_type IS 'Device Type : Sub types of devices that are supported by the MOSIP system, like Slab, Single, Touchless...etc';\n-- ddl-end --\nCOMMENT ON COLUMN pms.reg_device_sub_type.code IS 'Device Sub Type Code: Sub types of devices used for registration processes, authentication...etc for ex., SLB, SINGLE, FULLFACE... etc';\n-- ddl-end --\nCOMMENT ON COLUMN pms.reg_device_sub_type.dtyp_code IS 'Device Type Code : Code of the device type where this sub type belongs to. refers to master.reg_device_type.code';\n-- ddl-end --\nCOMMENT ON COLUMN pms.reg_device_sub_type.name IS 'Device Name: Name of the device sub type';\n-- ddl-end --\nCOMMENT ON COLUMN pms.reg_device_sub_type.descr IS 'Device description: Device sub type description';\n-- ddl-end --\nCOMMENT ON COLUMN pms.reg_device_sub_type.is_active IS 'IS_Active : Flag to mark whether the record/device is Active or In-active';\n-- ddl-end --\nCOMMENT ON COLUMN pms.reg_device_sub_type.cr_by IS 'Created By : ID or name of the user who create / insert record';\n-- ddl-end --\nCOMMENT ON COLUMN pms.reg_device_sub_type.cr_dtimes IS 'Created DateTimestamp : Date and Timestamp when the record is created/inserted';\n-- ddl-end --\nCOMMENT ON COLUMN pms.reg_device_sub_type.upd_by IS 'Updated By : ID or name of the user who update the record with new values';\n-- ddl-end --\nCOMMENT ON COLUMN pms.reg_device_sub_type.upd_dtimes IS 'Updated DateTimestamp : Date and Timestamp when any of the fields in the record is updated with new values.';\n-- ddl-end --\nCOMMENT ON COLUMN pms.reg_device_sub_type.is_deleted IS 'IS_Deleted : Flag to mark whether the record is Soft deleted.';\n-- ddl-end --\nCOMMENT ON COLUMN pms.reg_device_sub_type.del_dtimes IS 'Deleted DateTimestamp : Date and Timestamp when the record is soft deleted with is_deleted=TRUE';\n-- ddl-end --\n\nGRANT SELECT, INSERT, TRUNCATE, REFERENCES, UPDATE, DELETE ON pms.reg_device_sub_type TO pmsuser;\n\n-- object: pms.reg_device_type | type: TABLE --\n-- DROP TABLE IF EXISTS pms.reg_device_type CASCADE;\nCREATE TABLE pms.reg_device_type(\n\tcode character varying(36) NOT NULL,\n\tname character varying(64) NOT NULL,\n\tdescr character varying(512),\n\tis_active boolean NOT NULL,\n\tcr_by character varying(256) NOT NULL,\n\tcr_dtimes timestamp NOT NULL,\n\tupd_by character varying(256),\n\tupd_dtimes timestamp,\n\tis_deleted boolean DEFAULT FALSE,\n\tdel_dtimes timestamp,\n\tCONSTRAINT pk_rdtyp_code PRIMARY KEY (code)\n\n);\n-- ddl-end --\nCOMMENT ON TABLE pms.reg_device_type IS 'Device Type : Types of devices that are supported by the MOSIP system, like scanning, finger, face, iris etc';\n-- ddl-end --\nCOMMENT ON COLUMN pms.reg_device_type.code IS 'Device Type Code: Types of devices used for registration processes, authentication...etc for ex., FNR, FACE, IRIS... etc';\n-- ddl-end --\nCOMMENT ON COLUMN pms.reg_device_type.name IS 'Device Name: Name of the device type';\n-- ddl-end --\nCOMMENT ON COLUMN pms.reg_device_type.descr IS 'Device description: Device sub type description';\n-- ddl-end --\nCOMMENT ON COLUMN pms.reg_device_type.is_active IS 'IS_Active : Flag to mark whether the record/device is Active or In-active';\n-- ddl-end --\nCOMMENT ON COLUMN pms.reg_device_type.cr_by IS 'Created By : ID or name of the user who create / insert record';\n-- ddl-end --\nCOMMENT ON COLUMN pms.reg_device_type.cr_dtimes IS 'Created DateTimestamp : Date and Timestamp when the record is created/inserted';\n-- ddl-end --\nCOMMENT ON COLUMN pms.reg_device_type.upd_by IS 'Updated By : ID or name of the user who update the record with new values';\n-- ddl-end --\nCOMMENT ON COLUMN pms.reg_device_type.upd_dtimes IS 'Updated DateTimestamp : Date and Timestamp when any of the fields in the record is updated with new values.';\n-- ddl-end --\nCOMMENT ON COLUMN pms.reg_device_type.is_deleted IS 'IS_Deleted : Flag to mark whether the record is Soft deleted.';\n-- ddl-end --\nCOMMENT ON COLUMN pms.reg_device_type.del_dtimes IS 'Deleted DateTimestamp : Date and Timestamp when the record is soft deleted with is_deleted=TRUE';\n-- ddl-end --\n\nGRANT SELECT, INSERT, TRUNCATE, REFERENCES, UPDATE, DELETE ON pms.reg_device_type TO pmsuser;\n\n-- object: pms.secure_biometric_interface | type: TABLE --\n-- DROP TABLE IF EXISTS pms.secure_biometric_interface CASCADE;\nCREATE TABLE pms.secure_biometric_interface(\n\tid character varying(36) NOT NULL,\n\tsw_binary_hash bytea NOT NULL,\n\tsw_version character varying(64) NOT NULL,\n\tsw_cr_dtimes timestamp,\n\tsw_expiry_dtimes timestamp,\n\tapproval_status character varying(36) NOT NULL,\n\tis_active boolean NOT NULL,\n\tcr_by character varying(256) NOT NULL,\n\tcr_dtimes timestamp NOT NULL,\n\tupd_by character varying(256),\n\tupd_dtimes timestamp,\n\tis_deleted boolean DEFAULT FALSE,\n\tdel_dtimes timestamp,\n\tprovider_id character varying(36),\n\tpartner_org_name character varying(128),\n\tCONSTRAINT pk_sbi_id PRIMARY KEY (id)\n);\n-- ddl-end --\nCOMMENT ON TABLE pms.secure_biometric_interface IS 'Secure Biometric Interface : Secure Biometric Interface to have all the details about the device types, provider and software details';\n-- ddl-end --\nCOMMENT ON COLUMN pms.secure_biometric_interface.id IS 'ID: Unigue service ID, Service ID is geerated by the MOSIP system';\n-- ddl-end --\nCOMMENT ON COLUMN pms.secure_biometric_interface.sw_binary_hash IS 'Software Binary Hash : Its is a software binary stored in MOSIP system for the devices';\n-- ddl-end --\nCOMMENT ON COLUMN pms.secure_biometric_interface.sw_version IS 'Software Version : Version of the stored software';\n-- ddl-end --\nCOMMENT ON COLUMN pms.secure_biometric_interface.sw_cr_dtimes IS 'Software Created Date Time: Date and Time on which this software is created';\n-- ddl-end --\nCOMMENT ON COLUMN pms.secure_biometric_interface.sw_expiry_dtimes IS 'Software Expiry Date Time: Expiry date and time of the device software';\n-- ddl-end --\nCOMMENT ON COLUMN pms.secure_biometric_interface.approval_status IS 'Approval Status:';\n-- ddl-end --\nCOMMENT ON COLUMN pms.secure_biometric_interface.is_active IS 'IS_Active : Flag to mark whether the record/device is Active or In-active';\n-- ddl-end --\nCOMMENT ON COLUMN pms.secure_biometric_interface.cr_by IS 'Created By : ID or name of the user who create / insert record';\n-- ddl-end --\nCOMMENT ON COLUMN pms.secure_biometric_interface.cr_dtimes IS 'Created DateTimestamp : Date and Timestamp when the record is created/inserted';\n-- ddl-end --\nCOMMENT ON COLUMN pms.secure_biometric_interface.upd_by IS 'Updated By : ID or name of the user who update the record with new values';\n-- ddl-end --\nCOMMENT ON COLUMN pms.secure_biometric_interface.upd_dtimes IS 'Updated DateTimestamp : Date and Timestamp when any of the fields in the record is updated with new values.';\n-- ddl-end --\nCOMMENT ON COLUMN pms.secure_biometric_interface.is_deleted IS 'IS_Deleted : Flag to mark whether the record is Soft deleted.';\n-- ddl-end --\nCOMMENT ON COLUMN pms.secure_biometric_interface.del_dtimes IS 'Deleted DateTimestamp : Date and Timestamp when the record is soft deleted with is_deleted=TRUE';\n-- ddl-end --\n\nGRANT SELECT, INSERT, TRUNCATE, REFERENCES, UPDATE, DELETE ON pms.secure_biometric_interface TO pmsuser;\n\n-- object: pms.secure_biometric_interface_h | type: TABLE --\n-- DROP TABLE IF EXISTS pms.secure_biometric_interface_h CASCADE;\nCREATE TABLE pms.secure_biometric_interface_h(\n\tid character varying(36) NOT NULL,\n\tsw_binary_hash bytea NOT NULL,\n\tsw_version character varying(64) NOT NULL,\n\tsw_cr_dtimes timestamp,\n\tsw_expiry_dtimes timestamp,\n\tapproval_status character varying(36) NOT NULL,\n\tis_active boolean NOT NULL,\n\tcr_by character varying(256) NOT NULL,\n\tcr_dtimes timestamp NOT NULL,\n\tupd_by character varying(256),\n\tupd_dtimes timestamp,\n\tis_deleted boolean DEFAULT FALSE,\n\tdel_dtimes timestamp,\n\teff_dtimes timestamp NOT NULL,\n\tprovider_id character varying(36),\n\tpartner_org_name character varying(128),\n\tCONSTRAINT pk_mdsh_id PRIMARY KEY (id,eff_dtimes)\n);\n-- ddl-end --\nCOMMENT ON TABLE pms.secure_biometric_interface_h IS 'MOSIP Secure Biometric Interface History : History of changes of any MOSIP secure biometric interface will be stored in history table to track any chnages for future validations.';\n-- ddl-end --\nCOMMENT ON COLUMN pms.secure_biometric_interface_h.id IS 'ID: Unigue service ID, Service ID is geerated by the MOSIP system';\n-- ddl-end --\nCOMMENT ON COLUMN pms.secure_biometric_interface_h.sw_binary_hash IS 'Software Binary Hash : Its is a software binary stored in MOSIP system for the devices';\n-- ddl-end --\nCOMMENT ON COLUMN pms.secure_biometric_interface_h.sw_version IS 'Software Version : Version of the stored software';\n-- ddl-end --\nCOMMENT ON COLUMN pms.secure_biometric_interface_h.sw_cr_dtimes IS 'Software Created Date Time: Date and Time on which this software is created';\n-- ddl-end --\nCOMMENT ON COLUMN pms.secure_biometric_interface_h.sw_expiry_dtimes IS 'Software Expiry Date Time: Expiry date and time of the device software';\n-- ddl-end --\nCOMMENT ON COLUMN pms.secure_biometric_interface_h.approval_status IS 'Approval Status';\n-- ddl-end --\nCOMMENT ON COLUMN pms.secure_biometric_interface_h.is_active IS 'IS_Active : Flag to mark whether the record/device is Active or In-active';\n-- ddl-end --\nCOMMENT ON COLUMN pms.secure_biometric_interface_h.cr_by IS 'Created By : ID or name of the user who create / insert record';\n-- ddl-end --\nCOMMENT ON COLUMN pms.secure_biometric_interface_h.cr_dtimes IS 'Created DateTimestamp : Date and Timestamp when the record is created/inserted';\n-- ddl-end --\nCOMMENT ON COLUMN pms.secure_biometric_interface_h.upd_by IS 'Updated By : ID or name of the user who update the record with new values';\n-- ddl-end --\nCOMMENT ON COLUMN pms.secure_biometric_interface_h.upd_dtimes IS 'Updated DateTimestamp : Date and Timestamp when any of the fields in the record is updated with new values.';\n-- ddl-end --\nCOMMENT ON COLUMN pms.secure_biometric_interface_h.is_deleted IS 'IS_Deleted : Flag to mark whether the record is Soft deleted.';\n-- ddl-end --\nCOMMENT ON COLUMN pms.secure_biometric_interface_h.del_dtimes IS 'Deleted DateTimestamp : Date and Timestamp when the record is soft deleted with is_deleted=TRUE';\n-- ddl-end --\nCOMMENT ON COLUMN pms.secure_biometric_interface_h.eff_dtimes IS 'Effective Date Timestamp : This to track master record whenever there is an INSERT/UPDATE/DELETE ( soft delete ). The current record is effective from this date-time.';\n-- ddl-end --\n\nGRANT SELECT, INSERT, TRUNCATE, REFERENCES, UPDATE, DELETE ON pms.secure_biometric_interface_h TO pmsuser;\n\n-- object: fk_devdtl_id | type: CONSTRAINT --\n-- ALTER TABLE pms.device_detail DROP CONSTRAINT IF EXISTS fk_devdtl_id CASCADE;\nALTER TABLE pms.device_detail ADD CONSTRAINT fk_devdtl_id FOREIGN KEY (dtype_code,dstype_code)\nREFERENCES pms.reg_device_sub_type (dtyp_code,code) MATCH FULL\nON DELETE NO ACTION ON UPDATE NO ACTION;\n-- ddl-end --\n\n-- object: fk_rdstyp_dtype_code | type: CONSTRAINT --\n-- ALTER TABLE pms.reg_device_sub_type DROP CONSTRAINT IF EXISTS fk_rdstyp_dtype_code CASCADE;\nALTER TABLE pms.reg_device_sub_type ADD CONSTRAINT fk_rdstyp_dtype_code FOREIGN KEY (dtyp_code)\nREFERENCES pms.reg_device_type (code) MATCH FULL\nON DELETE NO ACTION ON UPDATE NO ACTION;\n-- ddl-end --\n\nALTER TABLE pms.partner_policy ADD COLUMN label character varying(36);\nUPDATE pms.partner_policy SET label=policy_api_key;\nALTER TABLE pms.partner_policy ALTER COLUMN label SET NOT NULL;\n\nALTER TABLE pms.partner ADD COLUMN lang_code character varying(36);\n\nALTER TABLE pms.partner_h ADD COLUMN lang_code character varying(36);\n\nINSERT INTO pms.policy_group (id,name,descr,user_id,is_active,cr_by,cr_dtimes,upd_by,upd_dtimes,is_deleted,del_dtimes) \nVALUES('mpolicygroup-default-cert','mpolicygroup-default-cert','mpolicygroup-default-cert','superadmin',true,'superadmin',now(),'superadmin',now(),false,NULL) ON CONFLICT (id) DO NOTHING;\n\nINSERT INTO pms.partner (id,policy_group_id,name,address,contact_no,email_id,certificate_alias,user_id,partner_type_code,approval_status,is_active,cr_by,cr_dtimes,upd_by,upd_dtimes,is_deleted,del_dtimes,lang_code) \nVALUES('mpartner-default-cert','mpolicygroup-default-cert','mpartner-default-cert','mpartner-default-cert','9232121212','info@mosip.io',NULL,'mpartner-default-cert','Credential_Partner','approved',true,'superadmin',now(),'superadmin',now(),false,NULL,NULL) ON CONFLICT (id) DO NOTHING;\n\nINSERT INTO pms.partner_h (id,eff_dtimes,policy_group_id,name,address,contact_no,email_id,certificate_alias,user_id,partner_type_code,approval_status,is_active,cr_by,cr_dtimes,upd_by,upd_dtimes,is_deleted,del_dtimes,lang_code) \nVALUES('mpartner-default-cert',now(),'mpolicygroup-default-cert','mpartner-default-cert','mpartner-default-cert','9232121212','info@mosip.io',NULL,'mpartner-default-cert','Credential_Partner','approved',true,'superadmin',now(),'superadmin',now(),false,NULL,NULL) ON CONFLICT (id, eff_dtimes) DO NOTHING;\n\n\nINSERT INTO pms.auth_policy (id,policy_group_id,name,descr,policy_file_id,policy_type,\"version\",policy_schema,valid_from_date,valid_to_date,is_active,cr_by,cr_dtimes,upd_by,upd_dtimes,is_deleted,del_dtimes) \nVALUES('mpolicy-default-cert','mpolicygroup-default-cert','mpolicy-default-cert','mpolicy-default-cert','{\"shareableAttributes\":[{\"attributeName\":\"fullName\",\"source\":[{\"attribute\":\"fullName\"}],\"encrypted\":true},{\"attributeName\":\"dateOfBirth\",\"source\":[{\"attribute\":\"dateOfBirth\"}],\"encrypted\":true},{\"attributeName\":\"gender\",\"source\":[{\"attribute\":\"gender\"}],\"encrypted\":true},{\"attributeName\":\"phone\",\"source\":[{\"attribute\":\"phone\"}],\"encrypted\":true},{\"attributeName\":\"email\",\"source\":[{\"attribute\":\"email\"}],\"encrypted\":true},{\"attributeName\":\"addressLine1\",\"source\":[{\"attribute\":\"addressLine1\"}],\"encrypted\":true},{\"attributeName\":\"addressLine2\",\"source\":[{\"attribute\":\"addressLine2\"}],\"encrypted\":true},{\"attributeName\":\"addressLine3\",\"source\":[{\"attribute\":\"addressLine3\"}],\"encrypted\":true},{\"attributeName\":\"region\",\"source\":[{\"attribute\":\"region\"}],\"encrypted\":true},{\"attributeName\":\"province\",\"source\":[{\"attribute\":\"province\"}],\"encrypted\":true},{\"attributeName\":\"city\",\"source\":[{\"attribute\":\"city\"}],\"encrypted\":true},{\"attributeName\":\"postalCode\",\"source\":[{\"attribute\":\"postalCode\"}],\"encrypted\":true},{\"attributeName\":\"individualBiometrics\",\"group\":\"CBEFF\",\"source\":[{\"attribute\":\"individualBiometrics\"}],\"encrypted\":true,\"format\":\"extraction\"}],\"dataSharePolicies\":{\"typeOfShare\":\"Data Share\",\"validForInMinutes\":\"30\",\"transactionsAllowed\":\"2\",\"encryptionType\":\"none\",\"shareDomain\":\"datashare.datashare\",\"source\":\"ID Repository\"}}','DataShare','1','https://schemas.mosip.io/v1/auth-policy',now(),now()+interval '12 years',true,'admin',now(),'admin',now(),false,NULL) ON CONFLICT (id) DO NOTHING;\n\nINSERT INTO pms.partner_policy_request (id,part_id,policy_id,request_datetimes,request_detail,status_code,cr_by,cr_dtimes,upd_by,upd_dtimes,is_deleted,del_dtimes) \nVALUES('mpartner_policy_cert_req','mpartner-default-cert','mpolicy-default-cert',now(),'mpolicy-default-cert','approved','admin',now(),'admin',now(),NULL,NULL) ON CONFLICT (id) DO NOTHING;\n\nINSERT INTO pms.partner_policy (policy_api_key,part_id,policy_id,valid_from_datetime,valid_to_datetime,is_active,cr_by,cr_dtimes,upd_by,upd_dtimes,is_deleted,del_dtimes,\"label\") \nVALUES('mpolicy_part_cert_api','mpartner-default-cert','mpolicy-default-cert',now(),now()+interval '12 years',true,'admin',now(),'admin',now(),false,NULL,'mpolicy_part_cert_api') ON CONFLICT (policy_api_key) DO NOTHING;\n\n\n\nTRUNCATE TABLE pms.reg_device_type cascade ;\n\nINSERT INTO pms.reg_device_type(code, name, descr, is_active, cr_by, cr_dtimes, upd_by, upd_dtimes, is_deleted, del_dtimes)\n\tVALUES ('Finger', 'Finger', 'Fingerprint Biometric', true, 'superadmin', '2022-12-16 12:30:14.100', NULL, NULL, false, NULL) ON CONFLICT (code) DO NOTHING;\n\t\nINSERT INTO pms.reg_device_type(code, name, descr, is_active, cr_by, cr_dtimes, upd_by, upd_dtimes, is_deleted, del_dtimes)\n\tVALUES ('Face', 'Face', 'Face Biometric', true, 'superadmin', '2022-12-16 12:30:14.100', NULL, NULL, false, NULL) ON CONFLICT (code) DO NOTHING;\n\t\nINSERT INTO pms.reg_device_type(code, name, descr, is_active, cr_by, cr_dtimes, upd_by, upd_dtimes, is_deleted, del_dtimes)\n\tVALUES ('Iris', 'Iris', 'Iris Biometric', true, 'superadmin', '2022-12-16 12:30:14.100', NULL, NULL, false, NULL) ON CONFLICT (code) DO NOTHING;\n\nTRUNCATE TABLE pms.reg_device_sub_type cascade ;\n\nINSERT INTO pms.reg_device_sub_type(code, dtyp_code, name, descr, is_active, cr_by, cr_dtimes, upd_by, upd_dtimes, is_deleted, del_dtimes)\n\tVALUES ('Slap', 'Finger', 'Slap', 'Fingerprint Slap', true, 'superadmin', '2022-12-16 12:30:14.100', NULL, NULL, false, NULL) ON CONFLICT (code, dtyp_code) DO NOTHING;\n\nINSERT INTO pms.reg_device_sub_type(code, dtyp_code, name, descr, is_active, cr_by, cr_dtimes, upd_by, upd_dtimes, is_deleted, del_dtimes)\n\tVALUES ('Single', 'Finger', 'Single', 'Fingerprint Single Finger', true, 'superadmin', '2022-12-16 12:30:14.100', NULL, NULL, false, NULL) ON CONFLICT (code, dtyp_code) DO NOTHING;\n\nINSERT INTO pms.reg_device_sub_type(code, dtyp_code, name, descr, is_active, cr_by, cr_dtimes, upd_by, upd_dtimes, is_deleted, del_dtimes)\n\tVALUES ('Touchless', 'Finger', 'Touchless', 'Touch Fingerprint', true, 'superadmin', '2022-12-16 12:30:14.100', NULL, NULL, false, NULL) ON CONFLICT (code, dtyp_code) DO NOTHING;\n\nINSERT INTO pms.reg_device_sub_type(code, dtyp_code, name, descr, is_active, cr_by, cr_dtimes, upd_by, upd_dtimes, is_deleted, del_dtimes)\n\tVALUES ('Single', 'Iris', 'Single', 'Single Iris', true, 'superadmin', '2022-12-16 12:30:14.100', NULL, NULL, false, NULL) ON CONFLICT (code, dtyp_code) DO NOTHING;\n\nINSERT INTO pms.reg_device_sub_type(code, dtyp_code, name, descr, is_active, cr_by, cr_dtimes, upd_by, upd_dtimes, is_deleted, del_dtimes)\n\tVALUES ('Double', 'Iris', 'Double', 'Double Iris', true, 'superadmin', '2022-12-16 12:30:14.100', NULL, NULL, false, NULL) ON CONFLICT (code, dtyp_code) DO NOTHING;\n\nINSERT INTO pms.reg_device_sub_type(code, dtyp_code, name, descr, is_active, cr_by, cr_dtimes, upd_by, upd_dtimes, is_deleted, del_dtimes)\n\tVALUES ('Full face', 'Face', 'Full face', 'Full face', true, 'superadmin', '2022-12-16 12:30:14.100', NULL, NULL, false, NULL) ON CONFLICT (code, dtyp_code) DO NOTHING;\t\n\n\nTRUNCATE TABLE pms.partner_policy_credential_type cascade ;\n\nINSERT INTO pms.partner_policy_credential_type(part_id, policy_id, credential_type, is_active, cr_by, cr_dtimes, upd_by, upd_dtimes, is_deleted, del_dtimes)\n\tVALUES ('mpartner-default-print', 'mpolicy-default-qrcode', 'qrcode', true, 'superadmin', '2022-12-16 12:30:14.100', NULL, NULL, false, NULL) ON CONFLICT (part_id, policy_id, credential_type) DO NOTHING;\n\t\nINSERT INTO pms.partner_policy_credential_type(part_id, policy_id, credential_type, is_active, cr_by, cr_dtimes, upd_by, upd_dtimes, is_deleted, del_dtimes)\n\tVALUES ('mpartner-default-print', 'mpolicy-default-euin', 'euin', true, 'superadmin', '2022-12-16 12:30:14.100', NULL, NULL, false, NULL) ON CONFLICT (part_id, policy_id, credential_type) DO NOTHING;\n\t\nINSERT INTO pms.partner_policy_credential_type(part_id, policy_id, credential_type, is_active, cr_by, cr_dtimes, upd_by, upd_dtimes, is_deleted, del_dtimes)\n\tVALUES ('mpartner-default-print', 'mpolicy-default-reprint', 'reprint', true, 'superadmin', '2022-12-16 12:30:14.100', NULL, NULL, false, NULL) ON CONFLICT (part_id, policy_id, credential_type) DO NOTHING;\n\t\nINSERT INTO pms.partner_policy_credential_type(part_id, policy_id, credential_type, is_active, cr_by, cr_dtimes, upd_by, upd_dtimes, is_deleted, del_dtimes)\n\tVALUES ('mpartner-default-auth', 'mpolicy-default-auth', 'auth', true, 'superadmin', '2022-12-16 12:30:14.100', NULL, NULL, false, NULL) ON CONFLICT (part_id, policy_id, credential_type) DO NOTHING;\n\n\\COPY pms.device_detail FROM 'dml/auth-device_detail.csv' WITH (FORMAT CSV, HEADER);\n\n\\COPY pms.secure_biometric_interface FROM 'dml/auth-secure_biometric_interface.csv' WITH (FORMAT CSV, HEADER);\n\n\\COPY pms.secure_biometric_interface_h FROM 'dml/auth-secure_biometric_interface_h.csv' WITH (FORMAT CSV, HEADER);\n\n\\COPY pms.device_detail_sbi FROM 'dml/auth-device_detail_sbi.csv' WITH (FORMAT CSV, HEADER);\n\n\\COPY pms.ftp_chip_detail FROM 'dml/auth-ftp_chip_detail.csv' WITH (FORMAT CSV, HEADER);\n\n\\COPY pms.device_detail FROM 'dml/reg-device_detail.csv' WITH (FORMAT CSV, HEADER);\n\n\\COPY pms.secure_biometric_interface FROM 'dml/reg-secure_biometric_interface.csv' WITH (FORMAT CSV, HEADER);\n\n\\COPY pms.secure_biometric_interface_h FROM 'dml/reg-secure_biometric_interface_h.csv' WITH (FORMAT CSV, HEADER);\n\n\\COPY pms.device_detail_sbi FROM 'dml/reg-device_detail_sbi.csv' WITH (FORMAT CSV, HEADER);\n\n\\COPY pms.ftp_chip_detail FROM 'dml/reg-ftp_chip_detail.csv' WITH (FORMAT CSV, HEADER);\n\nALTER TABLE pms.ftp_chip_detail ADD COLUMN approval_status character varying(36);\nUPDATE pms.ftp_chip_detail SET approval_status='pending_cert_upload' where certificate_alias is null;\nUPDATE pms.ftp_chip_detail SET approval_status='pending_approval' where certificate_alias is not null and is_active =false;\nUPDATE pms.ftp_chip_detail SET approval_status='approved' where certificate_alias is not null and is_active = true;\nALTER TABLE pms.ftp_chip_detail ALTER COLUMN approval_status SET NOT NULL;\n\nCOMMENT ON COLUMN pms.ftp_chip_detail.approval_status IS 'approval_status : Status of the record. Status will be pending_cert_upload,pending_approval,approved or rejected';\n\n\nINSERT INTO pms.partner\n(id, policy_group_id, \"name\", address, contact_no, email_id, certificate_alias, user_id, partner_type_code, approval_status, is_active, cr_by, cr_dtimes, upd_by, upd_dtimes, is_deleted, del_dtimes)\nVALUES('mpartner-default-digitalcard', 'mpolicygroup-default-digitalcard', 'IITB', 'mpartner-default-digitalcard', '9232121212', 'digitalcard@mosip.io', '94d4ae61-31f0-42ca-97ae-8f4953f41fb6', 'mpartner-default-digitalcard', 'Credential_Partner', 'approved', true, 'superadmin', '2020-12-16 12:30:13.973', '110006', '2022-06-01 08:01:35.025', false, NULL) ON CONFLICT (id) DO NOTHING;\n\nINSERT INTO pms.partner_h\n(id, eff_dtimes, policy_group_id, \"name\", address, contact_no, email_id, certificate_alias, user_id, partner_type_code, approval_status, is_active, cr_by, cr_dtimes, upd_by, upd_dtimes, is_deleted, del_dtimes)\nVALUES('mpartner-default-digitalcard', '2020-12-16 12:30:14.306', 'mpolicygroup-default-digitalcard', 'IITB', 'mpartner-default-digitalcard', '9232121212', 'digitalcard@mosip.io', NULL, 'mpartner-default-resident', 'Credential_Partner', 'Activated', true, 'superadmin', '2020-12-16 12:30:14.306', 'superadmin', '2020-12-16 12:30:14.306', NULL, NULL) ON CONFLICT (id, eff_dtimes) DO NOTHING;\n\nINSERT INTO pms.policy_group\n(id, \"name\", descr, user_id, is_active, cr_by, cr_dtimes, upd_by, upd_dtimes, is_deleted, del_dtimes)\nVALUES('mpolicygroup-default-digitalcard', 'mpolicygroup-default-digitalcard', 'mpolicygroup-default-digitalcard', 'superadmin', true, 'superadmin', '2020-12-16 12:30:14.100', 'superadmin', '2020-12-16 12:30:14.100', NULL, NULL) ON CONFLICT (id) DO NOTHING;\n\n\nINSERT INTO pms.auth_policy\n(id, policy_group_id, \"name\", descr, policy_file_id, policy_type, \"version\", policy_schema, valid_from_date, valid_to_date, is_active, cr_by, cr_dtimes, upd_by, upd_dtimes, is_deleted, del_dtimes)\nVALUES('mpolicy-default-digitalcard', 'mpolicygroup-default-digitalcard', 'mpolicy-default-digitalcard', 'To Share Data', '{\"dataSharePolicies\":{\"typeOfShare\":\"Data Share\",\"validForInMinutes\":\"250\",\"transactionsAllowed\":\"1000\",\"encryptionType\":\"none\",\"shareDomain\":\"datashare-service\",\"source\":\"Print\"},\"shareableAttributes\":[]}', 'Datashare', '1.0', 'https://schemas.mosip.io/v1/auth-policy', '2022-04-04 12:48:58.193', '2022-10-01 12:49:05.712', true, '110068', '2022-04-04 12:48:58.193', '110068', '2022-04-04 12:49:05.712', false, NULL) ON CONFLICT (id) DO NOTHING;\n\nINSERT INTO pms.auth_policy\n(id, policy_group_id, \"name\", descr, policy_file_id, policy_type, \"version\", policy_schema, valid_from_date, valid_to_date, is_active, cr_by, cr_dtimes, upd_by, upd_dtimes, is_deleted, del_dtimes)\nVALUES('mpolicy-default-PDFCard', 'mpolicygroup-default-digitalcard', 'mpolicy-default-PDFCard', 'mpolicy-default-PDFCard', '{\"dataSharePolicies\":{\"typeOfShare\":\"direct\",\"validForInMinutes\":\"30\",\"transactionsAllowed\":\"2\",\"encryptionType\":\"Partner Based\",\"shareDomain\":\"datashare.datashare\",\"source\":\"ID Repository\"},\"shareableAttributes\":[{\"attributeName\":\"fullName\",\"source\":[{\"attribute\":\"fullName\"}],\"encrypted\":false},{\"attributeName\":\"dateOfBirth\",\"source\":[{\"attribute\":\"dateOfBirth\"}],\"encrypted\":false,\"format\":\"DD/MM/YYYY\"},{\"attributeName\":\"gender\",\"source\":[{\"attribute\":\"gender\"}],\"encrypted\":false},{\"attributeName\":\"phone\",\"source\":[{\"attribute\":\"phone\"}],\"encrypted\":false},{\"attributeName\":\"email\",\"source\":[{\"attribute\":\"email\"}],\"encrypted\":false},{\"attributeName\":\"addressLine1\",\"source\":[{\"attribute\":\"addressLine1\"}],\"encrypted\":false},{\"attributeName\":\"addressLine2\",\"source\":[{\"attribute\":\"addressLine2\"}],\"encrypted\":false},{\"attributeName\":\"addressLine3\",\"source\":[{\"attribute\":\"addressLine3\"}],\"encrypted\":false},{\"attributeName\":\"region\",\"source\":[{\"attribute\":\"region\"}],\"encrypted\":false},{\"attributeName\":\"province\",\"source\":[{\"attribute\":\"province\"}],\"encrypted\":false},{\"attributeName\":\"city\",\"source\":[{\"attribute\":\"city\"}],\"encrypted\":false},{\"attributeName\":\"UIN\",\"source\":[{\"attribute\":\"UIN\"}],\"encrypted\":false},{\"attributeName\":\"PCN\",\"source\":[{\"attribute\":\"VID\",\"filter\":[{\"type\":\"PERPETUAL\"}]}],\"encrypted\":false,\"format\":\"RETRIEVE\"},{\"attributeName\":\"postalCode\",\"source\":[{\"attribute\":\"postalCode\"}],\"encrypted\":false},{\"attributeName\":\"bestTwoFingers\",\"group\":\"CBEFF\",\"source\":[{\"attribute\":\"individualBiometrics\",\"filter\":[{\"type\":\"Finger\"}]}],\"encrypted\":false,\"format\":\"bestTwoFingers\"},{\"attributeName\":\"biometrics\",\"group\":\"CBEFF\",\"source\":[{\"attribute\":\"individualBiometrics\",\"filter\":[{\"type\":\"Face\"},{\"type\":\"Finger\",\"subType\":[\"Left Thumb\",\"Right Thumb\"]}]}],\"encrypted\":false,\"format\":\"extraction\"}]}', 'DataShare', '1', 'https://schemas.mosip.io/v1/auth-policy', '2022-09-20 09:00:54.316627', '2025-04-28 09:37:00', true, 'admin', '2022-09-20 09:00:54.316627', 'admin', '2022-09-20 09:00:54.316627', false, NULL) ON CONFLICT (id) DO NOTHING;\n\nINSERT INTO pms.auth_policy_h\n(id, eff_dtimes, policy_group_id, \"name\", descr, policy_file_id, policy_type, \"version\", policy_schema, valid_from_date, valid_to_date, is_active, cr_by, cr_dtimes, upd_by, upd_dtimes, is_deleted, del_dtimes)\nVALUES('mpolicy-default-digitalcard', '2020-11-14 05:59:00.000', 'mpolicygroup-default-digitalcard', 'mpolicy-default-digitalcard', 'mpolicy-default-digitalcard', '{\"dataSharePolicies\":{\"typeOfShare\":\"Data Share\",\"validForInMinutes\":\"30\",\"transactionsAllowed\":\"2\",\"encryptionType\":\"none\",\"shareDomain\":\"datashare-service\",\"source\":\"Print\"},\"shareableAttributes\":[]}', 'DataShare', '1', 'https://schemas.mosip.io/v1/auth-policy', '2020-12-16 12:30:14.343', '2025-05-02 09:37:00.000', true, 'admin', '2020-12-16 12:30:14.343', 'admin', '2020-12-16 12:30:14.343', NULL, NULL) ON CONFLICT (id, eff_dtimes) DO NOTHING;\n\n\nINSERT INTO pms.auth_policy_h\n(id, eff_dtimes, policy_group_id, name, descr, policy_file_id, policy_type, \"version\", policy_schema, valid_from_date, valid_to_date, is_active, cr_by, cr_dtimes, upd_by, upd_dtimes, is_deleted, del_dtimes)\nVALUES('mpolicy-default-PDFCard', '2020-11-13 05:58:00.000', 'mpolicygroup-default-digitalcard', 'mpolicy-default-PDFCard', 'mpolicy-default-PDFCard','{\"dataSharePolicies\":{\"typeOfShare\":\"direct\",\"validForInMinutes\":\"30\",\"transactionsAllowed\":\"2\",\"encryptionType\":\"Partner Based\",\"shareDomain\":\"datashare.datashare\",\"source\":\"ID Repository\"},\"shareableAttributes\":[{\"attributeName\":\"fullName\",\"source\":[{\"attribute\":\"fullName\",\"filter\":[{\"language\":\"eng\"}]}],\"encrypted\":false},{\"attributeName\":\"dateOfBirth\",\"source\":[{\"attribute\":\"dateOfBirth\"}],\"encrypted\":false,\"format\":\"YYYY\"},{\"attributeName\":\"gender\",\"source\":[{\"attribute\":\"gender\"}],\"encrypted\":false},{\"attributeName\":\"phone\",\"source\":[{\"attribute\":\"phone\"}],\"encrypted\":false},{\"attributeName\":\"email\",\"source\":[{\"attribute\":\"email\"}],\"encrypted\":false},{\"attributeName\":\"addressLine1\",\"source\":[{\"attribute\":\"addressLine1\"}],\"encrypted\":false},{\"attributeName\":\"addressLine2\",\"source\":[{\"attribute\":\"addressLine2\"}],\"encrypted\":false},{\"attributeName\":\"addressLine3\",\"source\":[{\"attribute\":\"addressLine3\"}],\"encrypted\":false},{\"attributeName\":\"region\",\"source\":[{\"attribute\":\"region\"}],\"encrypted\":false},{\"attributeName\":\"province\",\"source\":[{\"attribute\":\"province\"}],\"encrypted\":false},{\"attributeName\":\"city\",\"source\":[{\"attribute\":\"city\"}],\"encrypted\":false},{\"attributeName\":\"UIN\",\"source\":[{\"attribute\":\"UIN\"}],\"encrypted\":false},{\"encrypted\":false,\"format\":\"RETRIEVE\",\"attributeName\":\"VID\",\"source\":[{\"filter\":[{\"type\":\"PERPETUAL\"}],\"attribute\":\"VID\"}]},{\"attributeName\":\"postalCode\",\"source\":[{\"attribute\":\"postalCode\"}],\"encrypted\":false},{\"attributeName\":\"biometrics\",\"group\":\"CBEFF\",\"source\":[{\"attribute\":\"individualBiometrics\",\"filter\":[{\"type\":\"Face\"},{\"type\":\"Finger\",\"subType\":[\"Left Thumb\",\"Right Thumb\"]}]}],\"encrypted\":false,\"format\":\"extraction\"}]}', 'DataShare', '1', 'https://schemas.mosip.io/v1/auth-policy', '2020-12-16 12:30:14.343', '2025-05-01 09:37:00.000', true, 'admin', '2020-12-16 12:30:14.343', 'admin', '2020-12-16 12:30:14.343', NULL, NULL) ON CONFLICT (id, eff_dtimes) DO NOTHING;\n\nINSERT INTO pms.partner_policy\n(policy_api_key, part_id, policy_id, valid_from_datetime, valid_to_datetime, is_active, cr_by, cr_dtimes, upd_by, upd_dtimes, is_deleted, del_dtimes,label)\nVALUES('mpolicy_part_digitalcard_api', 'mpartner-default-digitalcard', 'mpolicy-default-digitalcard', '2022-04-04 13:21:20.172', '2022-07-03 13:21:20.172', true, 'service-account-mosip-regproc-client', '2022-04-04 13:21:20.172', 'admin', '2022-02-21 07:02:26.223', false, NULL,'mpolicy_part_PDFCard_api') ON CONFLICT (policy_api_key) DO NOTHING;\n\nINSERT INTO pms.partner_policy\n(policy_api_key, part_id, policy_id, valid_from_datetime, valid_to_datetime, is_active, cr_by, cr_dtimes, upd_by, upd_dtimes, is_deleted, del_dtimes,label)\nVALUES('mpolicy_part_PDFCard_api', 'mpartner-default-digitalcard', 'mpolicy-default-digitalcard', '2022-02-21 07:02:26.223', '2025-12-01 05:31:00.000', true, 'admin', '2022-02-21 07:02:26.223', 'admin', '2022-02-21 07:02:26.223', false, NULL,'mpolicy_part_PDFCard_api') ON CONFLICT (policy_api_key) DO NOTHING;\n\n\nINSERT INTO pms.partner_policy_bioextract\n(id, part_id, policy_id, attribute_name, extractor_provider, extractor_provider_version, biometric_modality, biometric_sub_types, cr_by, cr_dtimes, upd_by, upd_dtimes, is_deleted, del_dtimes)\nVALUES('146210', 'mpartner-default-digitalcard', 'mpolicy-default-PDFCard', 'photo', 'mock', '1.1', 'face', NULL, 'admin', '2022-02-21 07:02:26.256', 'admin', '2022-02-21 07:02:26.256', false, NULL) ON CONFLICT (id) DO NOTHING;\n\nINSERT INTO pms.partner_policy_bioextract\n(id, part_id, policy_id, attribute_name, extractor_provider, extractor_provider_version, biometric_modality, biometric_sub_types, cr_by, cr_dtimes, upd_by, upd_dtimes, is_deleted, del_dtimes)\nVALUES('146211', 'mpartner-default-digitalcard', 'mpolicy-default-PDFCard', 'iris', 'mock', '1.1', 'iris', NULL, 'admin', '2022-02-21 07:02:26.256', 'admin', '2022-02-21 07:02:26.256', false, NULL) ON CONFLICT (id) DO NOTHING;\n\nINSERT INTO pms.partner_policy_bioextract\n(id, part_id, policy_id, attribute_name, extractor_provider, extractor_provider_version, biometric_modality, biometric_sub_types, cr_by, cr_dtimes, upd_by, upd_dtimes, is_deleted, del_dtimes)\nVALUES('146212', 'mpartner-default-digitalcard', 'mpolicy-default-PDFCard', 'fingerprint', 'mock', '1.1', 'finger', NULL, 'admin', '2022-02-21 07:02:26.256', 'admin', '2022-02-21 07:02:26.256', false, NULL) ON CONFLICT (id) DO NOTHING;\n\nINSERT INTO pms.partner_policy_credential_type\n(part_id, policy_id, credential_type, is_active, cr_by, cr_dtimes, upd_by, upd_dtimes, is_deleted, del_dtimes)\nVALUES('mpartner-default-digitalcard', 'mpolicy-default-PDFCard', 'PDFCard', true, 'service-account-mosip-regproc-client', '2022-04-04 13:29:10.383', NULL, NULL, false, NULL) ON CONFLICT (part_id, policy_id, credential_type) DO NOTHING;\n\nINSERT INTO pms.partner_policy_request\n(id, part_id, policy_id, request_datetimes, request_detail, status_code, cr_by, cr_dtimes, upd_by, upd_dtimes, is_deleted, del_dtimes)\nVALUES('mpartner_policy_PDFCard_req', 'mpartner-default-digitalcard', 'mpolicy-default-PDFCard', '2022-02-21 07:02:26.292', 'mpolicy-default-PDFCard', 'approved', 'admin', '2022-02-21 07:02:26.292', 'admin', '2022-02-21 07:02:26.292', NULL, NULL) ON CONFLICT (id) DO NOTHING;\n\nINSERT INTO pms.partner_policy_request\n(id, part_id, policy_id, request_datetimes, request_detail, status_code, cr_by, cr_dtimes, upd_by, upd_dtimes, is_deleted, del_dtimes)\nVALUES('mpartner_policy_digitalcard_req', 'mpartner-default-digitalcard', 'mpolicy-default-digitalcard', '2022-02-21 07:02:26.292', 'mpolicy-default-digitalcard', 'approved', 'admin', '2022-02-21 07:02:26.292', 'admin', '2022-02-21 07:02:26.292', NULL, NULL) ON CONFLICT (id) DO NOTHING;\n\nINSERT INTO pms.partner_type (code,partner_description,is_policy_required,is_active,cr_by,cr_dtimes,upd_by,upd_dtimes,is_deleted,del_dtimes) VALUES\n\t ('Internal_Partner','Used internally to share certs',true,true,'superadmin',now(),NULL,NULL,false,NULL) ON CONFLICT (code) DO NOTHING;\n\nINSERT INTO pms.partner_type (code,partner_description,is_policy_required,is_active,cr_by,cr_dtimes,upd_by,upd_dtimes,is_deleted,del_dtimes) VALUES\n\t ('Print_Partner','Print Partner',true,true,'superadmin',now(),NULL,NULL,false,NULL) ON CONFLICT (code) DO NOTHING;\n\nINSERT INTO pms.partner_type (code,partner_description,is_policy_required,is_active,cr_by,cr_dtimes,upd_by,upd_dtimes,is_deleted,del_dtimes) VALUES\n\t ('SDK_Partner','SDK Partner',true,true,'superadmin',now(),NULL,NULL,false,NULL) ON CONFLICT (code) DO NOTHING;\n\n-- ddl-end --" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/db_upgrade_scripts/mosip_pms/sql/1.2.0.1-B1_to_1.2.0.1-B2_rollback.sql", + "title": "1.2.0.1-B1_to_1.2.0.1-B2_rollback.sql", + "repo": "mosip/partner-management-services", + "file_path": "db_upgrade_scripts/mosip_pms/sql/1.2.0.1-B1_to_1.2.0.1-B2_rollback.sql", + "language": "sql", + "content": "\\c mosip_pms\n\n-- Drop the newly added columns from pms.partner and pms.partner_h\nALTER TABLE pms.partner DROP COLUMN IF EXISTS logo_url;\nALTER TABLE pms.partner_h DROP COLUMN IF EXISTS logo_url;\nALTER TABLE pms.partner DROP COLUMN IF EXISTS addl_info;\nALTER TABLE pms.partner_h DROP COLUMN IF EXISTS addl_info;\n\n-- Drop the newly added column from pms.misp_license\nALTER TABLE pms.misp_license DROP COLUMN IF EXISTS policy_id;\n\n-- Drop the newly created pms.oidc_client table\nDROP TABLE IF EXISTS pms.oidc_client CASCADE;" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/db_upgrade_scripts/mosip_pms/sql/1.2.0.1-B1_to_1.2.0.1-B2_upgrade.sql", + "title": "1.2.0.1-B1_to_1.2.0.1-B2_upgrade.sql", + "repo": "mosip/partner-management-services", + "file_path": "db_upgrade_scripts/mosip_pms/sql/1.2.0.1-B1_to_1.2.0.1-B2_upgrade.sql", + "language": "sql", + "content": "\\c mosip_pms\r\n\r\nALTER TABLE pms.partner ADD COLUMN logo_url character varying(256);\r\n\r\nALTER TABLE pms.partner_h ADD COLUMN logo_url character varying(256);\r\n\r\nALTER TABLE pms.partner ADD COLUMN addl_info character varying;\r\n\r\nALTER TABLE pms.partner_h ADD COLUMN addl_info character varying;\r\n\r\nALTER TABLE pms.misp_license ADD COLUMN policy_id character varying(36);\r\n\r\n-- object: pms.oidc_client | type: TABLE --\r\n-- DROP TABLE IF EXISTS pms.oidc_client CASCADE;\r\nCREATE TABLE pms.oidc_client(\r\n\tid character varying(100) NOT NULL,\r\n\tname character varying(256) NOT NULL,\r\n\trp_id character varying(100) NOT NULL,\r\n\tpolicy_id character varying(50) NOT NULL,\r\n\tlogo_uri character varying(2048) NOT NULL,\r\n\tredirect_uris character varying NOT NULL,\r\n\tclaims character varying NOT NULL,\r\n\tacr_values character varying NOT NULL,\r\n\tpublic_key character varying NOT NULL,\r\n\tgrant_types character varying(256) NOT NULL,\r\n\tauth_methods character varying(256) NOT NULL,\r\n\tstatus character varying(20) NOT NULL,\r\n\tcr_by character varying(256) NOT NULL,\r\n\tcr_dtimes timestamp NOT NULL,\r\n\tupd_by character varying(256),\r\n\tupd_dtimes timestamp,\r\n\tis_deleted boolean DEFAULT FALSE,\r\n\tdel_dtimes timestamp,\r\n\tCONSTRAINT pk_oidc_client PRIMARY KEY (id),\r\n\tCONSTRAINT uq_oidc_client_public_key UNIQUE (public_key)\r\n);\r\n-- ddl-end --\r\nCOMMENT ON COLUMN oidc_client.id IS 'Client ID: Unique id assigned to registered OIDC client.';\r\n-- ddl-end --\r\nCOMMENT ON COLUMN oidc_client.name IS 'Client Name: Registered name of OIDC client.';\r\n-- ddl-end --\r\nCOMMENT ON COLUMN oidc_client.logo_uri IS 'Client Logo URL: Client logo to be displayed on IDP UI.';\r\n-- ddl-end --\r\nCOMMENT ON COLUMN oidc_client.redirect_uris IS 'Recirect URLS: Comma separated list of client redirect URLs.';\r\n-- ddl-end --\r\nCOMMENT ON COLUMN oidc_client.rp_id IS 'Relaying Party Id: Id of the partner id who has created this OIDC client.';\r\n-- ddl-end --\r\nCOMMENT ON COLUMN oidc_client.policy_id IS 'Policy Id: Id of the policy ';\r\n-- ddl-end --\r\nCOMMENT ON COLUMN oidc_client.status IS 'Client status: Allowed values - ACTIVE / INACTIVE.';\r\n-- ddl-end --\r\nCOMMENT ON COLUMN oidc_client.public_key IS 'Public key: JWK data.';\r\n-- ddl-end --\r\nCOMMENT ON COLUMN oidc_client.grant_types IS 'Grant Types: Allowed grant types for the client.';\r\n-- ddl-end --\r\nCOMMENT ON COLUMN oidc_client.auth_methods IS 'Client Auth methods: Allowed token endpoint authentication methods.';\r\n-- ddl-end --\r\nCOMMENT ON COLUMN oidc_client.claims IS 'Requested Claims: claims json as per policy defined for relaying party.';\r\n-- ddl-end --\r\nCOMMENT ON COLUMN oidc_client.acr_values IS 'Allowed Authentication context References(acr) json';\r\n-- ddl-end --\r\n\r\nGRANT SELECT, INSERT, TRUNCATE, REFERENCES, UPDATE, DELETE ON TABLE pms.oidc_client TO pmsuser;\r\n\r\nGRANT ALL ON TABLE pms.oidc_client TO postgres;" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/db_upgrade_scripts/mosip_pms/sql/1.2.0.1-B2_to_1.2.0.1-B3_rollback.sql", + "title": "1.2.0.1-B2_to_1.2.0.1-B3_rollback.sql", + "repo": "mosip/partner-management-services", + "file_path": "db_upgrade_scripts/mosip_pms/sql/1.2.0.1-B2_to_1.2.0.1-B3_rollback.sql", + "language": "sql", + "content": "\\echo 'Upgrade Queries not required for transition from $CURRENT_VERSION to $UPGRADE_VERSION'" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/db_upgrade_scripts/mosip_pms/sql/1.2.0.1-B2_to_1.2.0.1-B3_upgrade.sql", + "title": "1.2.0.1-B2_to_1.2.0.1-B3_upgrade.sql", + "repo": "mosip/partner-management-services", + "file_path": "db_upgrade_scripts/mosip_pms/sql/1.2.0.1-B2_to_1.2.0.1-B3_upgrade.sql", + "language": "sql", + "content": "\\echo 'Upgrade Queries not required for transition from $CURRENT_VERSION to $UPGRADE_VERSION'" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/db_upgrade_scripts/mosip_pms/sql/1.2.0.1-B3_to_1.2.0.1-B4_rollback.sql", + "title": "1.2.0.1-B3_to_1.2.0.1-B4_rollback.sql", + "repo": "mosip/partner-management-services", + "file_path": "db_upgrade_scripts/mosip_pms/sql/1.2.0.1-B3_to_1.2.0.1-B4_rollback.sql", + "language": "sql", + "content": "\\echo 'Upgrade Queries not required for transition from $CURRENT_VERSION to $UPGRADE_VERSION'\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/db_upgrade_scripts/mosip_pms/sql/1.2.0.1-B3_to_1.2.0.1-B4_upgrade.sql", + "title": "1.2.0.1-B3_to_1.2.0.1-B4_upgrade.sql", + "repo": "mosip/partner-management-services", + "file_path": "db_upgrade_scripts/mosip_pms/sql/1.2.0.1-B3_to_1.2.0.1-B4_upgrade.sql", + "language": "sql", + "content": "\\echo 'Upgrade Queries not required for transition from $CURRENT_VERSION to $UPGRADE_VERSION'" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/db_upgrade_scripts/mosip_pms/sql/1.2.0.1-B4_to_1.2.0.1_rollback.sql", + "title": "1.2.0.1-B4_to_1.2.0.1_rollback.sql", + "repo": "mosip/partner-management-services", + "file_path": "db_upgrade_scripts/mosip_pms/sql/1.2.0.1-B4_to_1.2.0.1_rollback.sql", + "language": "sql", + "content": "\\echo 'Upgrade Queries not required for transition from $CURRENT_VERSION to $UPGRADE_VERSION'" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/db_upgrade_scripts/mosip_pms/sql/1.2.0.1-B4_to_1.2.0.1_upgrade.sql", + "title": "1.2.0.1-B4_to_1.2.0.1_upgrade.sql", + "repo": "mosip/partner-management-services", + "file_path": "db_upgrade_scripts/mosip_pms/sql/1.2.0.1-B4_to_1.2.0.1_upgrade.sql", + "language": "sql", + "content": "\\echo 'Upgrade Queries not required for transition from $CURRENT_VERSION to $UPGRADE_VERSION'" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/db_upgrade_scripts/mosip_pms/sql/1.2.0.1_to_1.2.1.0_rollback.sql", + "title": "1.2.0.1_to_1.2.1.0_rollback.sql", + "repo": "mosip/partner-management-services", + "file_path": "db_upgrade_scripts/mosip_pms/sql/1.2.0.1_to_1.2.1.0_rollback.sql", + "language": "sql", + "content": "\\c mosip_pms\n\nALTER TABLE pms.partner DROP COLUMN logo_url;\nALTER TABLE pms.partner DROP COLUMN addl_info;\n\nALTER TABLE pms.partner_h DROP COLUMN logo_url;\nALTER TABLE pms.partner_h DROP COLUMN addl_info;\n\nUPDATE pms.auth_policy\nSET policy_file_id='{\"dataSharePolicies\":{\"typeOfShare\":\"direct\",\"validForInMinutes\":\"30\",\"transactionsAllowed\":\"2\",\"encryptionType\":\"Partner Based\",\"shareDomain\":\"datashare.datashare\",\"source\":\"ID Repository\"},\"shareableAttributes\":[{\"attributeName\":\"fullName\",\"source\":[{\"attribute\":\"fullName\"}],\"encrypted\":true},{\"attributeName\":\"dateOfBirth\",\"source\":[{\"attribute\":\"dateOfBirth\"}],\"encrypted\":false,\"format\":\"YYYY\"},{\"attributeName\":\"gender\",\"source\":[{\"attribute\":\"gender\"}],\"encrypted\":false},{\"attributeName\":\"phone\",\"source\":[{\"attribute\":\"phone\"}],\"encrypted\":false},{\"attributeName\":\"email\",\"source\":[{\"attribute\":\"email\"}],\"encrypted\":false},{\"attributeName\":\"addressLine1\",\"source\":[{\"attribute\":\"addressLine1\"}],\"encrypted\":false},{\"attributeName\":\"addressLine2\",\"source\":[{\"attribute\":\"addressLine2\"}],\"encrypted\":false},{\"attributeName\":\"addressLine3\",\"source\":[{\"attribute\":\"addressLine3\"}],\"encrypted\":false},{\"attributeName\":\"region\",\"source\":[{\"attribute\":\"region\"}],\"encrypted\":false},{\"attributeName\":\"province\",\"source\":[{\"attribute\":\"province\"}],\"encrypted\":false},{\"attributeName\":\"city\",\"source\":[{\"attribute\":\"city\"}],\"encrypted\":false},{\"attributeName\":\"UIN\",\"source\":[{\"attribute\":\"UIN\"}],\"encrypted\":false},{\"attributeName\":\"PCN\",\"source\":[{\"attribute\":\"VID\",\"filter\":[{\"type\":\"PERPETUAL\"}]}],\"encrypted\":false,\"format\":\"RETRIEVE\"},{\"attributeName\":\"postalCode\",\"source\":[{\"attribute\":\"postalCode\"}],\"encrypted\":false},{\"attributeName\":\"bestTwoFingers\",\"group\":\"CBEFF\",\"source\":[{\"attribute\":\"individualBiometrics\",\"filter\":[{\"type\":\"Finger\"}]}],\"encrypted\":false,\"format\":\"bestTwoFingers\"},{\"attributeName\":\"Signature\",\"source\":[{\"attribute\":\"proofOfAddress\"}],\"encrypted\":false},{\"attributeName\":\"biometrics\",\"group\":\"CBEFF\",\"source\":[{\"attribute\":\"individualBiometrics\",\"filter\":[{\"type\":\"Face\"},{\"type\":\"Finger\",\"subType\":[\"Left Thumb\",\"Right Thumb\"]}]}],\"encrypted\":false,\"format\":\"extraction\"}]}'\nWHERE id='mpolicy-default-PDFCard';" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/db_upgrade_scripts/mosip_pms/sql/1.2.0.1_to_1.2.1.0_upgrade.sql", + "title": "1.2.0.1_to_1.2.1.0_upgrade.sql", + "repo": "mosip/partner-management-services", + "file_path": "db_upgrade_scripts/mosip_pms/sql/1.2.0.1_to_1.2.1.0_upgrade.sql", + "language": "sql", + "content": "\\c mosip_pms\n\nALTER TABLE pms.partner ADD COLUMN logo_url character varying(256);\nALTER TABLE pms.partner ADD COLUMN addl_info character varying;\n\nALTER TABLE pms.partner_h ADD COLUMN logo_url character varying(256);\nALTER TABLE pms.partner_h ADD COLUMN addl_info character varying;\n\nUPDATE pms.auth_policy\nSET policy_file_id='{\"dataSharePolicies\":{\"typeOfShare\":\"Data Share\",\"validForInMinutes\":\"30\",\"transactionsAllowed\":\"2\",\"encryptionType\":\"Partner Based\",\"shareDomain\":\"datashare.datashare\",\"source\":\"ID Repository\"},\"shareableAttributes\":[{\"attributeName\":\"fullName\",\"source\":[{\"attribute\":\"fullName\",\"filter\":[{\"language\":\"eng\"}]}],\"encrypted\":false},{\"attributeName\":\"dateOfBirth\",\"source\":[{\"attribute\":\"dateOfBirth\"}],\"encrypted\":false},{\"attributeName\":\"dob\",\"source\":[{\"attribute\":\"dateOfBirth\"}],\"encrypted\":false},{\"attributeName\":\"gender\",\"source\":[{\"attribute\":\"gender\",\"filter\":[{\"language\":\"eng\"}]}],\"encrypted\":false},{\"attributeName\":\"phone\",\"source\":[{\"attribute\":\"phone\"}],\"encrypted\":false},{\"attributeName\":\"email\",\"source\":[{\"attribute\":\"email\"}],\"encrypted\":false},{\"attributeName\":\"addressLine1\",\"source\":[{\"attribute\":\"addressLine1\",\"filter\":[{\"language\":\"eng\"}]}],\"encrypted\":false},{\"attributeName\":\"addressLine2\",\"source\":[{\"attribute\":\"addressLine2\",\"filter\":[{\"language\":\"eng\"}]}],\"encrypted\":false},{\"attributeName\":\"addressLine3\",\"source\":[{\"attribute\":\"addressLine3\",\"filter\":[{\"language\":\"eng\"}]}],\"encrypted\":false},{\"attributeName\":\"region\",\"source\":[{\"attribute\":\"region\",\"filter\":[{\"language\":\"eng\"}]}],\"encrypted\":false},{\"attributeName\":\"province\",\"source\":[{\"attribute\":\"province\",\"filter\":[{\"language\":\"eng\"}]}],\"encrypted\":false},{\"attributeName\":\"city\",\"source\":[{\"attribute\":\"city\",\"filter\":[{\"language\":\"eng\"}]}],\"encrypted\":false},{\"attributeName\":\"UIN\",\"source\":[{\"attribute\":\"UIN\"}],\"encrypted\":false},{\"attributeName\":\"postalCode\",\"source\":[{\"attribute\":\"postalCode\"}],\"encrypted\":false},{\"attributeName\":\"biometrics\",\"group\":\"CBEFF\",\"source\":[{\"attribute\":\"individualBiometrics\",\"filter\":[{\"type\":\"Face\"},{\"type\":\"Finger\",\"subType\":[\"Left Thumb\",\"Right Thumb\"]}]}],\"encrypted\":true,\"format\":\"extraction\"}]}'\nWHERE id='mpolicy-default-PDFCard';" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/db_upgrade_scripts/mosip_pms/sql/1.2.1.0_to_1.2.2.0_rollback.sql", + "title": "1.2.1.0_to_1.2.2.0_rollback.sql", + "repo": "mosip/partner-management-services", + "file_path": "db_upgrade_scripts/mosip_pms/sql/1.2.1.0_to_1.2.2.0_rollback.sql", + "language": "sql", + "content": "-- -------------------------------------------------------------------------------------------------\n-- Database Name : mosip_pms\n-- Release Version \t: release-1.2.2.0\n-- Purpose \t\t: Database Alter scripts for the release for PMS DB. \n-- Create By \t\t: Swetha K\n-- Created Date\t\t: Aug-2024\n-- \n-- Modified Date Modified By Comments / Remarks\n-- -------------------------------------------------------------------------------------------------\n\\c mosip_pms\n\n-- user_details\nDROP TABLE IF EXISTS pms.user_details;\n\n-- Dropping unique index from pms.device_detail table if it exists\nDROP INDEX IF EXISTS pms.uk_devdtl_make_model_approval_status;\n\n-- Adding unique constraint for dprovider_id, dtype_code, dstype_code, make, and model\n-- Only if the constraint does not already exist\nDO $$\nBEGIN\n IF NOT EXISTS (\n SELECT 1 \n FROM pg_constraint \n WHERE conname = 'uk_devdtl_id' \n AND conrelid = 'pms.device_detail'::regclass\n ) THEN\n ALTER TABLE pms.device_detail\n ADD CONSTRAINT uk_devdtl_id \n UNIQUE (dprovider_id, dtype_code, dstype_code, make, model);\n END IF;\nEND $$;\n\n-- Dropping unique index from pms.ftp_chip_detail table if it exists\nDROP INDEX IF EXISTS pms.uk_fcdtl_make_model_approval_status;\n\n-- Adding unique constraint for foundational_trust_provider_id, make, and model\n-- Only if the constraint does not already exist\nDO $$\nBEGIN\n IF NOT EXISTS (\n SELECT 1 \n FROM pg_constraint \n WHERE conname = 'uk_fcdtl_id' \n AND conrelid = 'pms.ftp_chip_detail'::regclass\n ) THEN\n ALTER TABLE pms.ftp_chip_detail\n ADD CONSTRAINT uk_fcdtl_id \n UNIQUE (foundational_trust_provider_id, make, model);\n END IF;\nEND $$;\n\n-- Updating policy_file_id in pms.auth_policy for specific IDs\nUPDATE pms.auth_policy\nSET policy_file_id='{\"dataSharePolicies\":{\"typeOfShare\":\"Data Share\",\"validForInMinutes\":\"30\",\"transactionsAllowed\":\"2\",\"encryptionType\":\"Partner Based\",\"shareDomain\":\"datashare.datashare\",\"source\":\"ID Repository\"},\"shareableAttributes\":[{\"attributeName\":\"fullName\",\"source\":[{\"attribute\":\"fullName\",\"filter\":[{\"language\":\"eng\"}]}],\"encrypted\":false},{\"attributeName\":\"dateOfBirth\",\"source\":[{\"attribute\":\"dateOfBirth\"}],\"encrypted\":false,\"format\":\"YYYY\"},{\"attributeName\":\"gender\",\"source\":[{\"attribute\":\"gender\"}],\"encrypted\":false},{\"attributeName\":\"phone\",\"source\":[{\"attribute\":\"phone\"}],\"encrypted\":false},{\"attributeName\":\"email\",\"source\":[{\"attribute\":\"email\"}],\"encrypted\":false},{\"attributeName\":\"addressLine1\",\"source\":[{\"attribute\":\"addressLine1\"}],\"encrypted\":false},{\"attributeName\":\"addressLine2\",\"source\":[{\"attribute\":\"addressLine2\"}],\"encrypted\":false},{\"attributeName\":\"addressLine3\",\"source\":[{\"attribute\":\"addressLine3\"}],\"encrypted\":false},{\"attributeName\":\"region\",\"source\":[{\"attribute\":\"region\"}],\"encrypted\":false},{\"attributeName\":\"province\",\"source\":[{\"attribute\":\"province\"}],\"encrypted\":false},{\"attributeName\":\"city\",\"source\":[{\"attribute\":\"city\"}],\"encrypted\":false},{\"attributeName\":\"UIN\",\"source\":[{\"attribute\":\"UIN\"}],\"encrypted\":false},{\"attributeName\":\"postalCode\",\"source\":[{\"attribute\":\"postalCode\"}],\"encrypted\":false},{\"attributeName\":\"biometrics\",\"group\":\"CBEFF\",\"source\":[{\"attribute\":\"individualBiometrics\",\"filter\":[{\"type\":\"Face\"},{\"type\":\"Finger\",\"subType\":[\"Left Thumb\",\"Right Thumb\"]}]}],\"encrypted\":true,\"format\":\"extraction\"}]}'\nWHERE id='mpolicy-default-qrcode';\n\nUPDATE pms.auth_policy\nSET policy_file_id='{\"dataSharePolicies\":{\"typeOfShare\":\"Data Share\",\"validForInMinutes\":\"30\",\"transactionsAllowed\":\"2\",\"encryptionType\":\"Partner Based\",\"shareDomain\":\"datashare.datashare\",\"source\":\"ID Repository\"},\"shareableAttributes\":[{\"attributeName\":\"fullName\",\"source\":[{\"attribute\":\"fullName\",\"filter\":[{\"language\":\"eng\"}]}],\"encrypted\":false},{\"attributeName\":\"dateOfBirth\",\"source\":[{\"attribute\":\"dateOfBirth\"}],\"encrypted\":false,\"format\":\"YYYY\"},{\"attributeName\":\"gender\",\"source\":[{\"attribute\":\"gender\"}],\"encrypted\":false},{\"attributeName\":\"phone\",\"source\":[{\"attribute\":\"phone\"}],\"encrypted\":false},{\"attributeName\":\"email\",\"source\":[{\"attribute\":\"email\"}],\"encrypted\":false},{\"attributeName\":\"addressLine1\",\"source\":[{\"attribute\":\"addressLine1\"}],\"encrypted\":false},{\"attributeName\":\"addressLine2\",\"source\":[{\"attribute\":\"addressLine2\"}],\"encrypted\":false},{\"attributeName\":\"addressLine3\",\"source\":[{\"attribute\":\"addressLine3\"}],\"encrypted\":false},{\"attributeName\":\"region\",\"source\":[{\"attribute\":\"region\"}],\"encrypted\":false},{\"attributeName\":\"province\",\"source\":[{\"attribute\":\"province\"}],\"encrypted\":false},{\"attributeName\":\"city\",\"source\":[{\"attribute\":\"city\"}],\"encrypted\":false},{\"attributeName\":\"UIN\",\"source\":[{\"attribute\":\"UIN\"}],\"encrypted\":false},{\"attributeName\":\"postalCode\",\"source\":[{\"attribute\":\"postalCode\"}],\"encrypted\":false},{\"attributeName\":\"biometrics\",\"group\":\"CBEFF\",\"source\":[{\"attribute\":\"individualBiometrics\",\"filter\":[{\"type\":\"Face\"},{\"type\":\"Finger\",\"subType\":[\"Left Thumb\",\"Right Thumb\"]}]}],\"encrypted\":true,\"format\":\"extraction\"}]}'\nWHERE id='mpolicy-default-reprint';" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/db_upgrade_scripts/mosip_pms/sql/1.2.1.0_to_1.2.2.0_upgrade.sql", + "title": "1.2.1.0_to_1.2.2.0_upgrade.sql", + "repo": "mosip/partner-management-services", + "file_path": "db_upgrade_scripts/mosip_pms/sql/1.2.1.0_to_1.2.2.0_upgrade.sql", + "language": "sql", + "content": "-- -------------------------------------------------------------------------------------------------\n-- Database Name : mosip_pms\n-- Release Version \t: 1.2.2.0\n-- Purpose \t\t: Database Alter scripts for the release for PMS DB. \n-- Create By \t\t: Swetha K\n-- Created Date\t\t: Aug-2024\n-- \n-- Modified Date Modified By Comments / Remarks\n-- -------------------------------------------------------------------------------------------------\n\\c mosip_pms\n\n-- This table has consents of users.\nCREATE TABLE pms.user_details(\n id character varying(36) NOT NULL,\n user_id character varying(64) NOT null,\n consent_given character varying(36) NOT NULL DEFAULT 'NO',\n consent_given_dtimes timestamp NOT NULL,\n cr_dtimes timestamp NOT NULL,\n cr_by character varying(64) NOT NULL,\n upd_by character varying(64),\n upd_dtimes timestamp,\n CONSTRAINT user_details_pk PRIMARY KEY (id),\n CONSTRAINT consent_given CHECK (consent_given IN ('YES', 'NO'))\n);\nCOMMENT ON TABLE pms.user_details IS 'This table has consents of users.';\nCOMMENT ON COLUMN pms.user_details.user_id IS 'User Id: user id of the user.';\nCOMMENT ON COLUMN pms.user_details.id IS 'ID: Unique Id generated.';\nCOMMENT ON COLUMN pms.user_details.consent_given_dtimes IS 'Consent given DateTimestamp : Date and Timestamp when the consent is given.';\nCOMMENT ON COLUMN pms.user_details.cr_dtimes IS 'Created DateTimestamp : Date and Timestamp when the record is created/inserted';\nCOMMENT ON COLUMN pms.user_details.cr_by IS 'Created By : ID or name of the user who create / insert record.';\nCOMMENT ON COLUMN pms.user_details.consent_given IS 'Consent Given : Indicates whether consent has been given by the user.';\nCOMMENT ON COLUMN pms.user_details.upd_by IS 'Updated By : ID or name of the user who update the record with new values';\nCOMMENT ON COLUMN pms.user_details.upd_dtimes IS 'Updated DateTimestamp : Date and Timestamp when any of the fields in the record is updated with new values.';\n\n-- Dropping unique constraint from pms.device_detail table if it exists\nALTER TABLE pms.device_detail\n DROP CONSTRAINT IF EXISTS uk_devdtl_id;\n\n-- Creating unique index for make, model, and approval status if it does not exist\nCREATE UNIQUE INDEX IF NOT EXISTS uk_devdtl_make_model_approval_status\n ON pms.device_detail (dprovider_id, dtype_code, dstype_code, make, model)\n WHERE approval_status != 'rejected' \n AND NOT (approval_status = 'approved' AND is_active = false);\n\n-- Dropping unique constraint from pms.ftp_chip_detail table if it exists\nALTER TABLE pms.ftp_chip_detail\n DROP CONSTRAINT IF EXISTS uk_fcdtl_id;\n\n-- Creating unique index for make, model, and approval status if it does not exist\nCREATE UNIQUE INDEX IF NOT EXISTS uk_fcdtl_make_model_approval_status\n ON pms.ftp_chip_detail (foundational_trust_provider_id, make, model)\n WHERE approval_status != 'rejected' \n AND NOT (approval_status = 'approved' AND is_active = false);\n\n-- Updating policy_file_id in pms.auth_policy for specific IDs\nUPDATE pms.auth_policy\nSET policy_file_id='{\"dataSharePolicies\":{\"typeOfShare\":\"Data Share\",\"validForInMinutes\":\"30\",\"transactionsAllowed\":\"2\",\"encryptionType\":\"Partner Based\",\"shareDomain\":\"datashare.datashare\",\"source\":\"ID Repository\"},\"shareableAttributes\":[{\"attributeName\":\"fullName\",\"source\":[{\"attribute\":\"fullName\",\"filter\":[{\"language\":\"eng\"}]}],\"encrypted\":false},{\"attributeName\":\"dateOfBirth\",\"source\":[{\"attribute\":\"dateOfBirth\"}],\"encrypted\":false,\"format\":\"YYYY\"},{\"attributeName\":\"gender\",\"source\":[{\"attribute\":\"gender\",\"filter\":[{\"language\":\"eng\"}]}],\"encrypted\":false},{\"attributeName\":\"phone\",\"source\":[{\"attribute\":\"phone\"}],\"encrypted\":false},{\"attributeName\":\"email\",\"source\":[{\"attribute\":\"email\"}],\"encrypted\":false},{\"attributeName\":\"addressLine1\",\"source\":[{\"attribute\":\"addressLine1\",\"filter\":[{\"language\":\"eng\"}]}],\"encrypted\":false},{\"attributeName\":\"addressLine2\",\"source\":[{\"attribute\":\"addressLine2\",\"filter\":[{\"language\":\"eng\"}]}],\"encrypted\":false},{\"attributeName\":\"addressLine3\",\"source\":[{\"attribute\":\"addressLine3\",\"filter\":[{\"language\":\"eng\"}]}],\"encrypted\":false},{\"attributeName\":\"region\",\"source\":[{\"attribute\":\"region\",\"filter\":[{\"language\":\"eng\"}]}],\"encrypted\":false},{\"attributeName\":\"province\",\"source\":[{\"attribute\":\"province\",\"filter\":[{\"language\":\"eng\"}]}],\"encrypted\":false},{\"attributeName\":\"city\",\"source\":[{\"attribute\":\"city\",\"filter\":[{\"language\":\"eng\"}]}],\"encrypted\":false},{\"attributeName\":\"UIN\",\"source\":[{\"attribute\":\"UIN\"}],\"encrypted\":false},{\"attributeName\":\"postalCode\",\"source\":[{\"attribute\":\"postalCode\"}],\"encrypted\":false},{\"attributeName\":\"biometrics\",\"group\":\"CBEFF\",\"source\":[{\"attribute\":\"individualBiometrics\",\"filter\":[{\"type\":\"Face\"},{\"type\":\"Finger\",\"subType\":[\"Left Thumb\",\"Right Thumb\"]}]}],\"encrypted\":true,\"format\":\"extraction\"}]}'\nWHERE id='mpolicy-default-qrcode';\n\nUPDATE pms.auth_policy\nSET policy_file_id='{\"dataSharePolicies\":{\"typeOfShare\":\"Data Share\",\"validForInMinutes\":\"30\",\"transactionsAllowed\":\"2\",\"encryptionType\":\"Partner Based\",\"shareDomain\":\"datashare.datashare\",\"source\":\"ID Repository\"},\"shareableAttributes\":[{\"attributeName\":\"fullName\",\"source\":[{\"attribute\":\"fullName\",\"filter\":[{\"language\":\"eng\"}]}],\"encrypted\":false},{\"attributeName\":\"dateOfBirth\",\"source\":[{\"attribute\":\"dateOfBirth\"}],\"encrypted\":false,\"format\":\"YYYY\"},{\"attributeName\":\"gender\",\"source\":[{\"attribute\":\"gender\",\"filter\":[{\"language\":\"eng\"}]}],\"encrypted\":false},{\"attributeName\":\"phone\",\"source\":[{\"attribute\":\"phone\"}],\"encrypted\":false},{\"attributeName\":\"email\",\"source\":[{\"attribute\":\"email\"}],\"encrypted\":false},{\"attributeName\":\"addressLine1\",\"source\":[{\"attribute\":\"addressLine1\",\"filter\":[{\"language\":\"eng\"}]}],\"encrypted\":false},{\"attributeName\":\"addressLine2\",\"source\":[{\"attribute\":\"addressLine2\",\"filter\":[{\"language\":\"eng\"}]}],\"encrypted\":false},{\"attributeName\":\"addressLine3\",\"source\":[{\"attribute\":\"addressLine3\",\"filter\":[{\"language\":\"eng\"}]}],\"encrypted\":false},{\"attributeName\":\"region\",\"source\":[{\"attribute\":\"region\",\"filter\":[{\"language\":\"eng\"}]}],\"encrypted\":false},{\"attributeName\":\"province\",\"source\":[{\"attribute\":\"province\",\"filter\":[{\"language\":\"eng\"}]}],\"encrypted\":false},{\"attributeName\":\"city\",\"source\":[{\"attribute\":\"city\",\"filter\":[{\"language\":\"eng\"}]}],\"encrypted\":false},{\"attributeName\":\"UIN\",\"source\":[{\"attribute\":\"UIN\"}],\"encrypted\":false},{\"attributeName\":\"postalCode\",\"source\":[{\"attribute\":\"postalCode\"}],\"encrypted\":false},{\"attributeName\":\"biometrics\",\"group\":\"CBEFF\",\"source\":[{\"attribute\":\"individualBiometrics\",\"filter\":[{\"type\":\"Face\"},{\"type\":\"Finger\",\"subType\":[\"Left Thumb\",\"Right Thumb\"]}]}],\"encrypted\":true,\"format\":\"extraction\"}]}'\nWHERE id='mpolicy-default-reprint';" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/db_upgrade_scripts/mosip_pms/sql/1.2.2.0_to_1.2.2.1_rollback.sql", + "title": "1.2.2.0_to_1.2.2.1_rollback.sql", + "repo": "mosip/partner-management-services", + "file_path": "db_upgrade_scripts/mosip_pms/sql/1.2.2.0_to_1.2.2.1_rollback.sql", + "language": "sql", + "content": "\\echo 'Rollback Queries not required for transition from $CURRENT_VERSION to $UPGRADE_VERSION'" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/db_upgrade_scripts/mosip_pms/sql/1.2.2.0_to_1.2.2.1_upgrade.sql", + "title": "1.2.2.0_to_1.2.2.1_upgrade.sql", + "repo": "mosip/partner-management-services", + "file_path": "db_upgrade_scripts/mosip_pms/sql/1.2.2.0_to_1.2.2.1_upgrade.sql", + "language": "sql", + "content": "\\echo 'Upgrade Queries not required for transition from $CURRENT_VERSION to $UPGRADE_VERSION'" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/db_upgrade_scripts/mosip_pms/sql/1.2.2.1_to_1.2.2.2_rollback.sql", + "title": "1.2.2.1_to_1.2.2.2_rollback.sql", + "repo": "mosip/partner-management-services", + "file_path": "db_upgrade_scripts/mosip_pms/sql/1.2.2.1_to_1.2.2.2_rollback.sql", + "language": "sql", + "content": "\\echo 'Rollback Queries not required for transition from $CURRENT_VERSION to $UPGRADE_VERSION'" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/db_upgrade_scripts/mosip_pms/sql/1.2.2.1_to_1.2.2.2_upgrade.sql", + "title": "1.2.2.1_to_1.2.2.2_upgrade.sql", + "repo": "mosip/partner-management-services", + "file_path": "db_upgrade_scripts/mosip_pms/sql/1.2.2.1_to_1.2.2.2_upgrade.sql", + "language": "sql", + "content": "\\echo 'Upgrade Queries not required for transition from $CURRENT_VERSION to $UPGRADE_VERSION'" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/db_upgrade_scripts/mosip_pms/sql/1.2.2.2_to_1.2.2.3_rollback.sql", + "title": "1.2.2.2_to_1.2.2.3_rollback.sql", + "repo": "mosip/partner-management-services", + "file_path": "db_upgrade_scripts/mosip_pms/sql/1.2.2.2_to_1.2.2.3_rollback.sql", + "language": "sql", + "content": "\\echo 'Rollback Queries not required for transition from $CURRENT_VERSION to $UPGRADE_VERSION'\n\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/db_upgrade_scripts/mosip_pms/sql/1.2.2.2_to_1.2.2.3_upgrade.sql", + "title": "1.2.2.2_to_1.2.2.3_upgrade.sql", + "repo": "mosip/partner-management-services", + "file_path": "db_upgrade_scripts/mosip_pms/sql/1.2.2.2_to_1.2.2.3_upgrade.sql", + "language": "sql", + "content": "\\echo 'Upgrade Queries not required for transition from $CURRENT_VERSION to $UPGRADE_VERSION'\n\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/db_upgrade_scripts/mosip_pms/upgrade.properties", + "title": "upgrade.properties", + "repo": "mosip/partner-management-services", + "file_path": "db_upgrade_scripts/mosip_pms/upgrade.properties", + "language": "properties", + "content": "MOSIP_DB_NAME=\nDB_SERVERIP=\nDB_PORT=\nSU_USER=postgres\nSU_USER_PWD=\nSYS_ADMIN_USER=\nSYS_ADMIN_PWD=\nDEFAULT_DB_NAME=postgres\nDBUSER_PWD=\nACTION=\nCURRENT_VERSION=\nUPGRADE_VERSION=\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/helm/pms-partner/Chart.yaml", + "title": "Chart.yaml", + "repo": "mosip/partner-management-services", + "file_path": "helm/pms-partner/Chart.yaml", + "language": "yaml", + "content": "apiVersion: v2\nname: pms-partner\ndescription: A Helm chart for MOSIP Partner Management Service Partner service\ntype: application\nversion: 12.2.3\nappVersion: \"\"\ndependencies:\n - name: common\n repository: https://charts.bitnami.com/bitnami\n tags:\n - bitnami-common\n version: 1.x.x\nhome: https://mosip.io\nkeywords:\n - mosip\n - pms-partner\n - kernel\nmaintainers:\n - email: info@mosip.io\n name: MOSIP\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/helm/pms-partner/templates/clusterrolebinding.yaml", + "title": "clusterrolebinding.yaml", + "repo": "mosip/partner-management-services", + "file_path": "helm/pms-partner/templates/clusterrolebinding.yaml", + "language": "yaml", + "content": "kind: ClusterRoleBinding\napiVersion: {{ include \"common.capabilities.rbac.apiVersion\" . }}\nmetadata:\n labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n {{- if .Values.commonLabels }}\n {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 4 }}\n {{- end }}\n name: {{ template \"common.names.fullname\" . }}\n {{- if .Values.commonAnnotations }}\n annotations: {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonAnnotations \"context\" $ ) | nindent 4 }}\n {{- end }}\nroleRef:\n apiGroup: rbac.authorization.k8s.io\n kind: ClusterRole\n name: {{ template \"common.names.fullname\" . }}\nsubjects:\n - kind: ServiceAccount\n name: {{ template \"pms-partner.serviceAccountName\" . }}\n namespace: {{ .Release.Namespace }}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/helm/pms-partner/templates/deployment.yaml", + "title": "deployment.yaml", + "repo": "mosip/partner-management-services", + "file_path": "helm/pms-partner/templates/deployment.yaml", + "language": "yaml", + "content": "apiVersion: {{ include \"common.capabilities.deployment.apiVersion\" . }}\nkind: Deployment\nmetadata:\n labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n {{- if .Values.commonLabels }}\n {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 4 }}\n {{- end }}\n name: {{ template \"common.names.fullname\" . }}\n annotations:\n {{- if .Values.commonAnnotations }}\n {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonAnnotations \"context\" $ ) | nindent 4 }}\n {{- end }}\nspec:\n replicas: {{ .Values.replicaCount }}\n {{- if .Values.updateStrategy }}\n strategy: {{- toYaml .Values.updateStrategy | nindent 4 }}\n {{- end }}\n selector:\n matchLabels: {{- include \"common.labels.matchLabels\" . | nindent 6 }}\n template:\n metadata:\n annotations:\n {{- if or .Values.podAnnotations .Values.metrics.enabled }}\n {{- include \"pms-partner.podAnnotations\" . | nindent 8 }}\n {{- end }}\n labels: {{- include \"common.labels.standard\" . | nindent 8 }}\n {{- if .Values.podLabels }}\n {{- include \"common.tplvalues.render\" (dict \"value\" .Values.podLabels \"context\" $) | nindent 8 }}\n {{- end }}\n spec:\n serviceAccountName: {{ template \"pms-partner.serviceAccountName\" . }}\n {{- include \"pms-partner.imagePullSecrets\" . | nindent 6 }}\n {{- if .Values.hostAliases }}\n hostAliases: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.hostAliases \"context\" $) | nindent 8 }}\n {{- end }}\n {{- if .Values.affinity }}\n affinity: {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.affinity \"context\" $) | nindent 8 }}\n {{- else }}\n affinity:\n podAffinity: {{- include \"common.affinities.pods\" (dict \"type\" .Values.podAffinityPreset \"context\" $) | nindent 10 }}\n podAntiAffinity: {{- include \"common.affinities.pods\" (dict \"type\" .Values.podAntiAffinityPreset \"context\" $) | nindent 10 }}\n nodeAffinity: {{- include \"common.affinities.nodes\" (dict \"type\" .Values.nodeAffinityPreset.type \"key\" .Values.nodeAffinityPreset.key \"values\" .Values.nodeAffinityPreset.values) | nindent 10 }}\n {{- end }}\n {{- if .Values.nodeSelector }}\n nodeSelector: {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.nodeSelector \"context\" $) | nindent 8 }}\n {{- end }}\n {{- if .Values.tolerations }}\n tolerations: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.tolerations \"context\" .) | nindent 8 }}\n {{- end }}\n {{- if .Values.priorityClassName }}\n priorityClassName: {{ .Values.priorityClassName | quote }}\n {{- end }}\n {{- if .Values.podSecurityContext.enabled }}\n securityContext: {{- omit .Values.podSecurityContext \"enabled\" | toYaml | nindent 8 }}\n {{- end }}\n initContainers:\n {{- if and .Values.volumePermissions.enabled .Values.persistence.enabled }}\n - name: volume-permissions\n image: {{ include \"pms-partner.volumePermissions.image\" . }}\n imagePullPolicy: {{ .Values.volumePermissions.image.pullPolicy | quote }}\n command:\n - %%commands%%\n securityContext:\n runAsUser: 0\n {{- if .Values.volumePermissions.resources }}\n resources: {{- toYaml .Values.volumePermissions.resources | nindent 12 }}\n {{- end }}\n volumeMounts:\n - name: foo\n mountPath: bar\n {{- end }}\n {{- if .Values.initContainers }}\n {{- include \"common.tplvalues.render\" (dict \"value\" .Values.initContainers \"context\" $) | nindent 8 }}\n {{- end }}\n containers:\n - name: pms-partner\n image: {{ template \"pms-partner.image\" . }}\n imagePullPolicy: {{ .Values.image.pullPolicy }}\n {{- if .Values.lifecycleHooks }}\n lifecycle: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.lifecycleHooks \"context\" $) | nindent 12 }}\n {{- end }}\n {{- if .Values.containerSecurityContext.enabled }}\n securityContext: {{- omit .Values.containerSecurityContext \"enabled\" | toYaml | nindent 12 }}\n {{- end }}\n {{- if .Values.command }}\n command: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.command \"context\" $) | nindent 12 }}\n {{- end }}\n {{- if .Values.args }}\n args: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.args \"context\" $) | nindent 12 }}\n {{- end }}\n env:\n - name: container_user\n value: {{ .Values.containerSecurityContext.runAsUser }}\n - name: JDK_JAVA_OPTIONS\n value: {{ .Values.additionalResources.javaOpts }}\n {{- if .Values.springConfigNameEnv }}\n - name: spring_config_name_env\n value: {{ .Values.springConfigNameEnv }}\n {{- end }}\n {{- if .Values.activeProfileEnv }}\n - name: active_profile_env\n value: {{ .Values.activeProfileEnv }}\n {{- end }}\n {{- if .Values.extraEnvVars }}\n {{- include \"common.tplvalues.render\" (dict \"value\" .Values.extraEnvVars \"context\" $) | nindent 12 }}\n {{- end }}\n envFrom:\n {{- if .Values.extraEnvVarsCM }}\n {{- range .Values.extraEnvVarsCM }}\n - configMapRef:\n name: {{ . }}\n {{- end }}\n {{- end }}\n {{- if .Values.extraEnvVarsSecret }}\n - secretRef:\n name: {{ include \"common.tplvalues.render\" (dict \"value\" .Values.extraEnvVarsSecret \"context\" $) }}\n {{- end }}\n ports:\n - name: spring-service\n containerPort: {{ .Values.springServicePort }}\n {{- if .Values.resources }}\n resources: {{- toYaml .Values.resources | nindent 12 }}\n {{- end }}\n {{- if .Values.startupProbe.enabled }}\n startupProbe: {{- include \"common.tplvalues.render\" (dict \"value\" (omit .Values.startupProbe \"enabled\") \"context\" $) | nindent 12 }}\n {{- else if .Values.customStartupProbe }}\n startupProbe: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.customStartupProbe \"context\" $) | nindent 12 }}\n {{- end }}\n {{- if .Values.livenessProbe.enabled }}\n livenessProbe: {{- include \"common.tplvalues.render\" (dict \"value\" (omit .Values.livenessProbe \"enabled\") \"context\" $) | nindent 12 }}\n {{- else if .Values.customLivenessProbe }}\n livenessProbe: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.customLivenessProbe \"context\" $) | nindent 12 }}\n {{- end }}\n {{- if .Values.readinessProbe.enabled }}\n readinessProbe: {{- include \"common.tplvalues.render\" (dict \"value\" (omit .Values.readinessProbe \"enabled\") \"context\" $) | nindent 12 }}\n {{- else if .Values.customReadinessProbe }}\n readinessProbe: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.customReadinessProbe \"context\" $) | nindent 12 }}\n {{- end }}\n {{- if .Values.sidecars }}\n {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.sidecars \"context\" $) | nindent 8 }}\n {{- end }}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/helm/pms-partner/templates/extra-list.yaml", + "title": "extra-list.yaml", + "repo": "mosip/partner-management-services", + "file_path": "helm/pms-partner/templates/extra-list.yaml", + "language": "yaml", + "content": "{{- range .Values.extraDeploy }}\n---\n{{ include \"common.tplvalues.render\" (dict \"value\" . \"context\" $) }}\n{{- end }}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/helm/pms-partner/templates/service-account.yaml", + "title": "service-account.yaml", + "repo": "mosip/partner-management-services", + "file_path": "helm/pms-partner/templates/service-account.yaml", + "language": "yaml", + "content": "apiVersion: v1\nkind: ServiceAccount\nmetadata:\n labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n {{- if .Values.commonLabels }}\n {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 4 }}\n {{- end }}\n name: {{ template \"pms-partner.serviceAccountName\" . }}\n {{- if .Values.commonAnnotations }}\n annotations: {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonAnnotations \"context\" $ ) | nindent 4 }}\n {{- end }}\n namespace: {{ .Release.Namespace }}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/helm/pms-partner/templates/service.yaml", + "title": "service.yaml", + "repo": "mosip/partner-management-services", + "file_path": "helm/pms-partner/templates/service.yaml", + "language": "yaml", + "content": "apiVersion: v1\nkind: Service\nmetadata:\n labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n {{- if .Values.commonLabels }}\n {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 4 }}\n {{- end }}\n name: {{ template \"common.names.fullname\" . }}\n annotations: \n {{- if .Values.commonAnnotations }}\n {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonAnnotations \"context\" $ ) | nindent 4 }}\n {{- end }}\nspec:\n type: {{ .Values.service.type }}\n {{- if (or (eq .Values.service.type \"LoadBalancer\") (eq .Values.service.type \"NodePort\")) }}\n externalTrafficPolicy: {{ .Values.service.externalTrafficPolicy | quote }}\n {{- end }}\n {{ if eq .Values.service.type \"LoadBalancer\" }}\n loadBalancerSourceRanges: {{ .Values.service.loadBalancerSourceRanges }}\n {{ end }}\n {{- if (and (eq .Values.service.type \"LoadBalancer\") (not (empty .Values.service.loadBalancerIP))) }}\n loadBalancerIP: {{ .Values.service.loadBalancerIP }}\n {{- end }}\n ports:\n - port: {{ .Values.service.port }}\n protocol: TCP \n targetPort: {{ .Values.springServicePort }}\n selector: {{- include \"common.labels.matchLabels\" . | nindent 4 }}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/helm/pms-partner/templates/servicemonitor.yaml", + "title": "servicemonitor.yaml", + "repo": "mosip/partner-management-services", + "file_path": "helm/pms-partner/templates/servicemonitor.yaml", + "language": "yaml", + "content": "{{- if and .Values.metrics.enabled .Values.metrics.serviceMonitor.enabled }}\napiVersion: monitoring.coreos.com/v1\nkind: ServiceMonitor\nmetadata:\n name: {{ template \"common.names.fullname\" . }}\n {{- if .Values.metrics.serviceMonitor.namespace }}\n namespace: {{ .Values.metrics.serviceMonitor.namespace }}\n {{- else }}\n namespace: {{ .Release.Namespace | quote }}\n {{- end }}\n labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n {{- if .Values.metrics.serviceMonitor.additionalLabels }}\n {{- include \"common.tplvalues.render\" (dict \"value\" .Values.metrics.serviceMonitor.additionalLabels \"context\" $) | nindent 4 }}\n {{- end }}\nspec:\n endpoints:\n - targetPort: {{ .Values.springServicePort }}\n path: {{ .Values.metrics.endpointPath }} \n {{- if .Values.metrics.serviceMonitor.interval }}\n interval: {{ .Values.metrics.serviceMonitor.interval }}\n {{- end }}\n {{- if .Values.metrics.serviceMonitor.scrapeTimeout }}\n scrapeTimeout: {{ .Values.metrics.serviceMonitor.scrapeTimeout }}\n {{- end }}\n {{- if .Values.metrics.serviceMonitor.honorLabels }}\n honorLabels: {{ .Values.metrics.serviceMonitor.honorLabels }}\n {{- end }}\n {{- if .Values.metrics.serviceMonitor.relabellings }}\n metricRelabelings: {{- toYaml .Values.metrics.serviceMonitor.relabellings | nindent 6 }}\n {{- end }}\n namespaceSelector:\n matchNames:\n - {{ .Release.Namespace | quote }}\n selector:\n matchLabels: {{- include \"common.labels.matchLabels\" . | nindent 6 }}\n{{- end }}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/helm/pms-partner/templates/virtualservice.yaml", + "title": "virtualservice.yaml", + "repo": "mosip/partner-management-services", + "file_path": "helm/pms-partner/templates/virtualservice.yaml", + "language": "yaml", + "content": "{{- if .Values.istio.enabled }}\napiVersion: networking.istio.io/v1alpha3\nkind: VirtualService\nmetadata:\n name: {{ template \"common.names.fullname\" . }}\n namespace: {{ .Release.Namespace }}\n labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n {{- if .Values.commonLabels }}\n {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 4 }}\n {{- end }}\n {{- if .Values.commonAnnotations }}\n annotations: {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonAnnotations \"context\" $ ) | nindent 4 }}\n {{- end }}\nspec:\n hosts:\n - \"*\"\n gateways:\n {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.istio.gateways \"context\" $ ) | nindent 4 }}\n http:\n - match:\n - uri:\n prefix: {{ .Values.istio.prefix }}\n route:\n - destination:\n host: {{ template \"common.names.fullname\" . }}\n port:\n number: {{ .Values.service.port }}\n corsPolicy:\n {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.istio.corsPolicy \"context\" $ ) | nindent 6 }}\n headers:\n request:\n set:\n x-forwarded-proto: https\n{{- end }}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/helm/pms-partner/values.yaml", + "title": "values.yaml", + "repo": "mosip/partner-management-services", + "file_path": "helm/pms-partner/values.yaml", + "language": "yaml", + "content": "## Global Docker image parameters\n## Please, note that this will override the image parameters, including dependencies, configured to use the global value\n## Current available global Docker image parameters: imageRegistry and imagePullSecrets\n##\n# global:\n# imageRegistry: myRegistryName\n# imagePullSecrets:\n# - myRegistryKeySecretName\n# storageClass: myStorageClass\n\n## Add labels to all the deployed resources\n##\ncommonLabels:\n app.kubernetes.io/component: mosip\n## Add annotations to all the deployed resources\n##\ncommonAnnotations: {}\n## Kubernetes Cluster Domain\n##\nclusterDomain: cluster.local\n## Extra objects to deploy (value evaluated as a template)\n##\nextraDeploy: []\n## Number of nodes\n##\nreplicaCount: 1\nservice:\n type: ClusterIP\n port: 80\n ## loadBalancerIP for the SuiteCRM Service (optional, cloud specific)\n ## ref: http://kubernetes.io/docs/user-guide/services/#type-loadbalancer\n ##\n ## loadBalancerIP:\n ##\n ## nodePorts:\n ## http: \n ## https: \n ##\n\n nodePorts:\n http: \"\"\n https: \"\"\n ## Enable client source IP preservation\n ## ref http://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip\n ##\n externalTrafficPolicy: Cluster\nimage:\n registry: docker.io\n repository: mosipid/partner-management-service\n tag: 1.2.2.3\n ## Specify a imagePullPolicy\n ## Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent'\n ## ref: http://kubernetes.io/docs/user-guide/images/#pre-pulling-images\n ##\n pullPolicy: Always\n ## Optionally specify an array of imagePullSecrets.\n ## Secrets must be manually created in the namespace.\n ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/\n ##\n # pullSecrets:\n # - myRegistryKeySecretName\n## Port on which this particular spring service module is running.\nspringServicePort: 9109\n## Configure extra options for liveness and readiness probes\n## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/#configure-probes\n##\nstartupProbe:\n enabled: true\n httpGet:\n path: /v1/partnermanager/actuator/health\n port: 9109\n initialDelaySeconds: 0\n periodSeconds: 10\n timeoutSeconds: 5\n failureThreshold: 30\n successThreshold: 1\nlivenessProbe:\n enabled: true\n httpGet:\n path: /v1/partnermanager/actuator/health\n port: 9109\n initialDelaySeconds: 20\n periodSeconds: 10\n timeoutSeconds: 5\n failureThreshold: 6\n successThreshold: 1\nreadinessProbe:\n enabled: true\n httpGet:\n path: /v1/partnermanager/actuator/health\n port: 9109\n initialDelaySeconds: 0\n periodSeconds: 10\n timeoutSeconds: 5\n failureThreshold: 6\n successThreshold: 1\n##\n# existingConfigmap:\n\n## Command and args for running the container (set to default if not set). Use array form\n##\ncommand: []\nargs: []\n## Deployment pod host aliases\n## https://kubernetes.io/docs/concepts/services-networking/add-entries-to-pod-etc-hosts-with-host-aliases/\n##\nhostAliases: []\n## ref: http://kubernetes.io/docs/user-guide/compute-resources/\n##\nresources:\n # We usually recommend not to specify default resources and to leave this as a conscious\n # choice for the user. This also increases chances charts run on environments with little\n # resources, such as Minikube. If you do want to specify resources, uncomment the following\n # lines, adjust them as necessary, and remove the curly braces after 'resources:'.\n limits:\n cpu: 700m\n memory: 3500Mi\n requests:\n cpu: 100m\n memory: 1000Mi\nadditionalResources:\n ## Specify any JAVA_OPTS string here. These typically will be specified in conjunction with above resources\n ## Example: java_opts: \"-Xms500M -Xmx500M\"\n javaOpts: \"-Xms2750M -Xmx2750M\"\n## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-container\n## Clamav container already runs as 'mosip' user, so we may not need to enable this\ncontainerSecurityContext:\n enabled: false\n runAsUser: mosip\n runAsNonRoot: true\n## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod\n##\npodSecurityContext:\n enabled: false\n fsGroup: 1001\n## Pod affinity preset\n## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity\n## Allowed values: soft, hard\n##\npodAffinityPreset: \"\"\n## Pod anti-affinity preset\n## Ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity\n## Allowed values: soft, hard\n##\npodAntiAffinityPreset: soft\n## Node affinity preset\n## Ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#node-affinity\n## Allowed values: soft, hard\n##\nnodeAffinityPreset:\n ## Node affinity type\n ## Allowed values: soft, hard\n ##\n type: \"\"\n ## Node label key to match\n ## E.g.\n ## key: \"kubernetes.io/e2e-az-name\"\n ##\n key: \"\"\n ## Node label values to match\n ## E.g.\n ## values:\n ## - e2e-az1\n ## - e2e-az2\n ##\n values: []\n## Affinity for pod assignment. Evaluated as a template.\n## Ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity\n##\naffinity: {}\n## Node labels for pod assignment. Evaluated as a template.\n## ref: https://kubernetes.io/docs/user-guide/node-selection/\n##\nnodeSelector: {}\n## Tolerations for pod assignment. Evaluated as a template.\n## ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/\n##\ntolerations: []\n## Pod extra labels\n## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/\n##\npodLabels: {}\n## Annotations for server pods.\n## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/\n##\npodAnnotations: {}\n## pods' priority.\n## ref: https://kubernetes.io/docs/concepts/configuration/pod-priority-preemption/\n##\n# priorityClassName: \"\"\n\n## lifecycleHooks for the container to automate configuration before or after startup.\n##\nlifecycleHooks: {}\n## Custom Liveness probes for\n##\ncustomLivenessProbe: {}\n## Custom Rediness probes\n##\ncustomReadinessProbe: {}\n## Update strategy - only really applicable for deployments with RWO PVs attached\n## If replicas = 1, an update can get \"stuck\", as the previous pod remains attached to the\n## PV, and the \"incoming\" pod can never start. Changing the strategy to \"Recreate\" will\n## terminate the single previous pod, so that the new, incoming pod can attach to the PV\n##\nupdateStrategy:\n type: RollingUpdate\n## Additional environment variables to set\n## Example:\n## extraEnvVars:\n## - name: FOO\n## value: \"bar\"\n##\nextraEnvVars: []\n## ConfigMap with extra environment variables that used\n##\nextraEnvVarsCM:\n - global\n - config-server-share\n## Secret with extra environment variables\n##\nextraEnvVarsSecret:\n## Extra volumes to add to the deployment\n##\nextraVolumes: []\n## Extra volume mounts to add to the container\n##\nextraVolumeMounts: []\n## Add init containers to the pods.\n## Example:\n## initContainers:\n## - name: your-image-name\n## image: your-image\n## imagePullPolicy: Always\n## ports:\n## - name: portname\n## containerPort: 1234\n##\ninitContainers: {}\n## Add sidecars to the pods.\n## Example:\n## sidecars:\n## - name: your-image-name\n## image: your-image\n## imagePullPolicy: Always\n## ports:\n## - name: portname\n## containerPort: 1234\n##\nsidecars: {}\npersistence:\n enabled: false\n ## If defined, storageClassName: \n ## If set to \"-\", storageClassName: \"\", which disables dynamic provisioning\n ## If undefined (the default) or set to null, no storageClassName spec is\n ## set, choosing the default provisioner. (gp2 on AWS, standard on\n ## GKE, AWS & OpenStack).\n ##\n # storageClass: \"-\"\n ##\n ## If you want to reuse an existing claim, you can pass the name of the PVC using\n ## the existingClaim variable\n # existingClaim: your-claim\n ## ReadWriteMany not supported by AWS gp2\n storageClass:\n accessModes:\n - ReadWriteOnce\n size: 10M\n existingClaim:\n # Dir where config and keys are written inside container\n mountDir:\n## Init containers parameters:\n## volumePermissions: Change the owner and group of the persistent volume mountpoint to runAsUser:fsGroup values from the securityContext section.\n##\nvolumePermissions:\n enabled: false\n image:\n registry: docker.io\n repository: bitnami/bitnami-shell\n tag: \"10\"\n pullPolicy: Always\n ## Optionally specify an array of imagePullSecrets.\n ## Secrets must be manually created in the namespace.\n ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/\n ##\n pullSecrets: []\n ## - myRegistryKeySecretName\n ## Init containers' resource requests and limits\n ## ref: http://kubernetes.io/docs/user-guide/compute-resources/\n ##\n resources:\n ## We usually recommend not to specify default resources and to leave this as a conscious\n ## choice for the user. This also increases chances charts run on environments with little\n ## resources, such as Minikube. If you do want to specify resources, uncomment the following\n ## lines, adjust them as necessary, and remove the curly braces after 'resources:'.\n ##\n limits: {}\n ## cpu: 100m\n ## memory: 128Mi\n ##\n requests: {}\n ## cpu: 100m\n ## memory: 128Mi\n ##\n## Specifies whether RBAC resources should be created\n##\nrbac:\n create: true\n## Specifies whether a ServiceAccount should be created\n##\nserviceAccount:\n create: true\n ## The name of the ServiceAccount to use.\n ## If not set and create is true, a name is generated using the fullname template\n ##\n name:\n## Prometheus Metrics\n##\nmetrics:\n enabled: true\n ## Prometheus pod annotations\n ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/\n ##\n podAnnotations:\n prometheus.io/scrape: \"true\"\n endpointPath: /v1/partnermanager/actuator/prometheus\n ## Prometheus Service Monitor\n ## ref: https://github.com/coreos/prometheus-operator\n ##\n serviceMonitor:\n ## If the operator is installed in your cluster, set to true to create a Service Monitor Entry\n ##\n enabled: true\n ## Specify the namespace in which the serviceMonitor resource will be created\n ##\n # namespace: \"\"\n ## Specify the interval at which metrics should be scraped\n ##\n interval: 10s\n ## Specify the timeout after which the scrape is ended\n ##\n # scrapeTimeout: 30s\n ## Specify Metric Relabellings to add to the scrape endpoint\n ##\n # relabellings:\n ## Specify honorLabels parameter to add the scrape endpoint\n ##\n honorLabels: false\n ## Used to pass Labels that are used by the Prometheus installed in your cluster to select Service Monitors to work with\n ## ref: https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#prometheusspec\n ##\n additionalLabels: {}\n ## Custom PrometheusRule to be defined\n ## The value is evaluated as a template, so, for example, the value can depend on .Release or .Chart\n ## ref: https://github.com/coreos/prometheus-operator#customresourcedefinitions\n ##\n prometheusRule:\n enabled: false\n additionalLabels: {}\n namespace: ''\n ## List of rules, used as template by Helm.\n ## These are just examples rules inspired from https://awesome-prometheus-alerts.grep.to/rules.html\n # rules:\n # - alert: RabbitmqDown\n # expr: rabbitmq_up{service=\"{{ template \"rabbitmq.fullname\" . }}\"} == 0\n # for: 5m\n # labels:\n # severity: error\n rules: []\n## Partner management needs public access.\nistio:\n enabled: true\n gateways:\n - istio-system/public\n - istio-system/internal\n prefix: /v1/partnermanager\n corsPolicy:\n allowOrigins:\n - prefix: https://pmp.sandbox.xyz.net\n - prefix: https://pmp-revamp.sandbox.xyz.net\n allowCredentials: true\n allowHeaders:\n - Accept\n - Accept-Encoding\n - Accept-Language\n - Connection\n - Content-Type\n - Cookie\n - Host\n - Referer\n - Sec-Fetch-Dest\n - Sec-Fetch-Mode\n - Sec-Fetch-Site\n - Sec-Fetch-User\n - Origin\n - Upgrade-Insecure-Requests\n - User-Agent\n - sec-ch-ua\n - sec-ch-ua-mobile\n - sec-ch-ua-platform\n - x-xsrf-token\n - xsrf-token\n allowMethods:\n - GET\n - POST\n - PATCH\n - PUT\n - DELETE\n# Set configuration\n# springConfigNameEnv:\n# activeProfileEnv:\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/helm/pms-policy/Chart.yaml", + "title": "Chart.yaml", + "repo": "mosip/partner-management-services", + "file_path": "helm/pms-policy/Chart.yaml", + "language": "yaml", + "content": "apiVersion: v2\nname: pms-policy\ndescription: A Helm chart for MOSIP Packetmanager module\ntype: application\nversion: 12.2.3\nappVersion: \"\"\ndependencies:\n - name: common\n repository: https://charts.bitnami.com/bitnami\n tags:\n - bitnami-common\n version: 1.x.x\nhome: https://mosip.io\nkeywords:\n - mosip\n - pms-policy\n - kernel\nmaintainers:\n - email: info@mosip.io\n name: MOSIP\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/helm/pms-policy/templates/clusterrolebinding.yaml", + "title": "clusterrolebinding.yaml", + "repo": "mosip/partner-management-services", + "file_path": "helm/pms-policy/templates/clusterrolebinding.yaml", + "language": "yaml", + "content": "kind: ClusterRoleBinding\napiVersion: {{ include \"common.capabilities.rbac.apiVersion\" . }}\nmetadata:\n labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n {{- if .Values.commonLabels }}\n {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 4 }}\n {{- end }}\n name: {{ template \"common.names.fullname\" . }}\n {{- if .Values.commonAnnotations }}\n annotations: {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonAnnotations \"context\" $ ) | nindent 4 }}\n {{- end }}\nroleRef:\n apiGroup: rbac.authorization.k8s.io\n kind: ClusterRole\n name: {{ template \"common.names.fullname\" . }}\nsubjects:\n - kind: ServiceAccount\n name: {{ template \"pms-policy.serviceAccountName\" . }}\n namespace: {{ .Release.Namespace }}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/helm/pms-policy/templates/deployment.yaml", + "title": "deployment.yaml", + "repo": "mosip/partner-management-services", + "file_path": "helm/pms-policy/templates/deployment.yaml", + "language": "yaml", + "content": "apiVersion: {{ include \"common.capabilities.deployment.apiVersion\" . }}\nkind: Deployment\nmetadata:\n labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n {{- if .Values.commonLabels }}\n {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 4 }}\n {{- end }}\n name: {{ template \"common.names.fullname\" . }}\n annotations:\n {{- if .Values.commonAnnotations }}\n {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonAnnotations \"context\" $ ) | nindent 4 }}\n {{- end }}\nspec:\n replicas: {{ .Values.replicaCount }}\n {{- if .Values.updateStrategy }}\n strategy: {{- toYaml .Values.updateStrategy | nindent 4 }}\n {{- end }}\n selector:\n matchLabels: {{- include \"common.labels.matchLabels\" . | nindent 6 }}\n template:\n metadata:\n annotations:\n {{- if or .Values.podAnnotations .Values.metrics.enabled }}\n {{- include \"pms-policy.podAnnotations\" . | nindent 8 }}\n {{- end }}\n labels: {{- include \"common.labels.standard\" . | nindent 8 }}\n {{- if .Values.podLabels }}\n {{- include \"common.tplvalues.render\" (dict \"value\" .Values.podLabels \"context\" $) | nindent 8 }}\n {{- end }}\n spec:\n serviceAccountName: {{ template \"pms-policy.serviceAccountName\" . }}\n {{- include \"pms-policy.imagePullSecrets\" . | nindent 6 }}\n {{- if .Values.hostAliases }}\n hostAliases: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.hostAliases \"context\" $) | nindent 8 }}\n {{- end }}\n {{- if .Values.affinity }}\n affinity: {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.affinity \"context\" $) | nindent 8 }}\n {{- else }}\n affinity:\n podAffinity: {{- include \"common.affinities.pods\" (dict \"type\" .Values.podAffinityPreset \"context\" $) | nindent 10 }}\n podAntiAffinity: {{- include \"common.affinities.pods\" (dict \"type\" .Values.podAntiAffinityPreset \"context\" $) | nindent 10 }}\n nodeAffinity: {{- include \"common.affinities.nodes\" (dict \"type\" .Values.nodeAffinityPreset.type \"key\" .Values.nodeAffinityPreset.key \"values\" .Values.nodeAffinityPreset.values) | nindent 10 }}\n {{- end }}\n {{- if .Values.nodeSelector }}\n nodeSelector: {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.nodeSelector \"context\" $) | nindent 8 }}\n {{- end }}\n {{- if .Values.tolerations }}\n tolerations: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.tolerations \"context\" .) | nindent 8 }}\n {{- end }}\n {{- if .Values.priorityClassName }}\n priorityClassName: {{ .Values.priorityClassName | quote }}\n {{- end }}\n {{- if .Values.podSecurityContext.enabled }}\n securityContext: {{- omit .Values.podSecurityContext \"enabled\" | toYaml | nindent 8 }}\n {{- end }}\n initContainers:\n {{- if and .Values.volumePermissions.enabled .Values.persistence.enabled }}\n - name: volume-permissions\n image: {{ include \"pms-policy.volumePermissions.image\" . }}\n imagePullPolicy: {{ .Values.volumePermissions.image.pullPolicy | quote }}\n command:\n - %%commands%%\n securityContext:\n runAsUser: 0\n {{- if .Values.volumePermissions.resources }}\n resources: {{- toYaml .Values.volumePermissions.resources | nindent 12 }}\n {{- end }}\n volumeMounts:\n - name: foo\n mountPath: bar\n {{- end }}\n {{- if .Values.initContainers }}\n {{- include \"common.tplvalues.render\" (dict \"value\" .Values.initContainers \"context\" $) | nindent 8 }}\n {{- end }}\n containers:\n - name: pms-policy\n image: {{ template \"pms-policy.image\" . }}\n imagePullPolicy: {{ .Values.image.pullPolicy }}\n {{- if .Values.lifecycleHooks }}\n lifecycle: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.lifecycleHooks \"context\" $) | nindent 12 }}\n {{- end }}\n {{- if .Values.containerSecurityContext.enabled }}\n securityContext: {{- omit .Values.containerSecurityContext \"enabled\" | toYaml | nindent 12 }}\n {{- end }}\n {{- if .Values.command }}\n command: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.command \"context\" $) | nindent 12 }}\n {{- end }}\n {{- if .Values.args }}\n args: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.args \"context\" $) | nindent 12 }}\n {{- end }}\n env:\n - name: container_user\n value: {{ .Values.containerSecurityContext.runAsUser }}\n - name: JDK_JAVA_OPTIONS\n value: {{ .Values.additionalResources.javaOpts }}\n {{- if .Values.springConfigNameEnv }}\n - name: spring_config_name_env\n value: {{ .Values.springConfigNameEnv }}\n {{- end }}\n {{- if .Values.activeProfileEnv }}\n - name: active_profile_env\n value: {{ .Values.activeProfileEnv }}\n {{- end }}\n {{- if .Values.extraEnvVars }}\n {{- include \"common.tplvalues.render\" (dict \"value\" .Values.extraEnvVars \"context\" $) | nindent 12 }}\n {{- end }}\n envFrom:\n {{- if .Values.extraEnvVarsCM }}\n {{- range .Values.extraEnvVarsCM }}\n - configMapRef:\n name: {{ . }}\n {{- end }}\n {{- end }}\n {{- if .Values.extraEnvVarsSecret }}\n - secretRef:\n name: {{ include \"common.tplvalues.render\" (dict \"value\" .Values.extraEnvVarsSecret \"context\" $) }}\n {{- end }}\n ports:\n - name: spring-service\n containerPort: {{ .Values.springServicePort }}\n {{- if .Values.resources }}\n resources: {{- toYaml .Values.resources | nindent 12 }}\n {{- end }}\n {{- if .Values.startupProbe.enabled }}\n startupProbe: {{- include \"common.tplvalues.render\" (dict \"value\" (omit .Values.startupProbe \"enabled\") \"context\" $) | nindent 12 }}\n {{- else if .Values.customStartupProbe }}\n startupProbe: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.customStartupProbe \"context\" $) | nindent 12 }}\n {{- end }}\n {{- if .Values.livenessProbe.enabled }}\n livenessProbe: {{- include \"common.tplvalues.render\" (dict \"value\" (omit .Values.livenessProbe \"enabled\") \"context\" $) | nindent 12 }}\n {{- else if .Values.customLivenessProbe }}\n livenessProbe: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.customLivenessProbe \"context\" $) | nindent 12 }}\n {{- end }}\n {{- if .Values.readinessProbe.enabled }}\n readinessProbe: {{- include \"common.tplvalues.render\" (dict \"value\" (omit .Values.readinessProbe \"enabled\") \"context\" $) | nindent 12 }}\n {{- else if .Values.customReadinessProbe }}\n readinessProbe: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.customReadinessProbe \"context\" $) | nindent 12 }}\n {{- end }}\n {{- if .Values.sidecars }}\n {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.sidecars \"context\" $) | nindent 8 }}\n {{- end }}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/helm/pms-policy/templates/extra-list.yaml", + "title": "extra-list.yaml", + "repo": "mosip/partner-management-services", + "file_path": "helm/pms-policy/templates/extra-list.yaml", + "language": "yaml", + "content": "{{- range .Values.extraDeploy }}\n---\n{{ include \"common.tplvalues.render\" (dict \"value\" . \"context\" $) }}\n{{- end }}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/helm/pms-policy/templates/service-account.yaml", + "title": "service-account.yaml", + "repo": "mosip/partner-management-services", + "file_path": "helm/pms-policy/templates/service-account.yaml", + "language": "yaml", + "content": "apiVersion: v1\nkind: ServiceAccount\nmetadata:\n labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n {{- if .Values.commonLabels }}\n {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 4 }}\n {{- end }}\n name: {{ template \"pms-policy.serviceAccountName\" . }}\n {{- if .Values.commonAnnotations }}\n annotations: {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonAnnotations \"context\" $ ) | nindent 4 }}\n {{- end }}\n namespace: {{ .Release.Namespace }}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/helm/pms-policy/templates/service.yaml", + "title": "service.yaml", + "repo": "mosip/partner-management-services", + "file_path": "helm/pms-policy/templates/service.yaml", + "language": "yaml", + "content": "apiVersion: v1\nkind: Service\nmetadata:\n labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n {{- if .Values.commonLabels }}\n {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 4 }}\n {{- end }}\n name: {{ template \"common.names.fullname\" . }}\n annotations: \n {{- if .Values.commonAnnotations }}\n {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonAnnotations \"context\" $ ) | nindent 4 }}\n {{- end }}\nspec:\n type: {{ .Values.service.type }}\n {{- if (or (eq .Values.service.type \"LoadBalancer\") (eq .Values.service.type \"NodePort\")) }}\n externalTrafficPolicy: {{ .Values.service.externalTrafficPolicy | quote }}\n {{- end }}\n {{ if eq .Values.service.type \"LoadBalancer\" }}\n loadBalancerSourceRanges: {{ .Values.service.loadBalancerSourceRanges }}\n {{ end }}\n {{- if (and (eq .Values.service.type \"LoadBalancer\") (not (empty .Values.service.loadBalancerIP))) }}\n loadBalancerIP: {{ .Values.service.loadBalancerIP }}\n {{- end }}\n ports:\n - port: {{ .Values.service.port }}\n protocol: TCP \n targetPort: {{ .Values.springServicePort }}\n selector: {{- include \"common.labels.matchLabels\" . | nindent 4 }}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/helm/pms-policy/templates/servicemonitor.yaml", + "title": "servicemonitor.yaml", + "repo": "mosip/partner-management-services", + "file_path": "helm/pms-policy/templates/servicemonitor.yaml", + "language": "yaml", + "content": "{{- if and .Values.metrics.enabled .Values.metrics.serviceMonitor.enabled }}\napiVersion: monitoring.coreos.com/v1\nkind: ServiceMonitor\nmetadata:\n name: {{ template \"common.names.fullname\" . }}\n {{- if .Values.metrics.serviceMonitor.namespace }}\n namespace: {{ .Values.metrics.serviceMonitor.namespace }}\n {{- else }}\n namespace: {{ .Release.Namespace | quote }}\n {{- end }}\n labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n {{- if .Values.metrics.serviceMonitor.additionalLabels }}\n {{- include \"common.tplvalues.render\" (dict \"value\" .Values.metrics.serviceMonitor.additionalLabels \"context\" $) | nindent 4 }}\n {{- end }}\nspec:\n endpoints:\n - targetPort: {{ .Values.springServicePort }}\n path: {{ .Values.metrics.endpointPath }} \n {{- if .Values.metrics.serviceMonitor.interval }}\n interval: {{ .Values.metrics.serviceMonitor.interval }}\n {{- end }}\n {{- if .Values.metrics.serviceMonitor.scrapeTimeout }}\n scrapeTimeout: {{ .Values.metrics.serviceMonitor.scrapeTimeout }}\n {{- end }}\n {{- if .Values.metrics.serviceMonitor.honorLabels }}\n honorLabels: {{ .Values.metrics.serviceMonitor.honorLabels }}\n {{- end }}\n {{- if .Values.metrics.serviceMonitor.relabellings }}\n metricRelabelings: {{- toYaml .Values.metrics.serviceMonitor.relabellings | nindent 6 }}\n {{- end }}\n namespaceSelector:\n matchNames:\n - {{ .Release.Namespace | quote }}\n selector:\n matchLabels: {{- include \"common.labels.matchLabels\" . | nindent 6 }}\n{{- end }}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/helm/pms-policy/templates/virtualservice.yaml", + "title": "virtualservice.yaml", + "repo": "mosip/partner-management-services", + "file_path": "helm/pms-policy/templates/virtualservice.yaml", + "language": "yaml", + "content": "{{- if .Values.istio.enabled }}\napiVersion: networking.istio.io/v1alpha3\nkind: VirtualService\nmetadata:\n name: {{ template \"common.names.fullname\" . }}\n namespace: {{ .Release.Namespace }}\n labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n {{- if .Values.commonLabels }}\n {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 4 }}\n {{- end }}\n {{- if .Values.commonAnnotations }}\n annotations: {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonAnnotations \"context\" $ ) | nindent 4 }}\n {{- end }}\nspec:\n hosts:\n - \"*\"\n gateways:\n {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.istio.gateways \"context\" $ ) | nindent 4 }}\n http:\n - match:\n - uri:\n prefix: {{ .Values.istio.prefix }}\n route:\n - destination:\n host: {{ template \"common.names.fullname\" . }}\n port:\n number: {{ .Values.service.port }}\n corsPolicy:\n {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.istio.corsPolicy \"context\" $ ) | nindent 6 }}\n headers:\n request:\n set:\n x-forwarded-proto: https\n{{- end }}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/helm/pms-policy/values.yaml", + "title": "values.yaml", + "repo": "mosip/partner-management-services", + "file_path": "helm/pms-policy/values.yaml", + "language": "yaml", + "content": "## Global Docker image parameters\n## Please, note that this will override the image parameters, including dependencies, configured to use the global value\n## Current available global Docker image parameters: imageRegistry and imagePullSecrets\n##\n# global:\n# imageRegistry: myRegistryName\n# imagePullSecrets:\n# - myRegistryKeySecretName\n# storageClass: myStorageClass\n\n## Add labels to all the deployed resources\n##\ncommonLabels:\n app.kubernetes.io/component: mosip\n## Add annotations to all the deployed resources\n##\ncommonAnnotations: {}\n## Kubernetes Cluster Domain\n##\nclusterDomain: cluster.local\n## Extra objects to deploy (value evaluated as a template)\n##\nextraDeploy: []\n## Number of nodes\n##\nreplicaCount: 1\nservice:\n type: ClusterIP\n port: 80\n ## loadBalancerIP for the SuiteCRM Service (optional, cloud specific)\n ## ref: http://kubernetes.io/docs/user-guide/services/#type-loadbalancer\n ##\n ## loadBalancerIP:\n ##\n ## nodePorts:\n ## http: \n ## https: \n ##\n\n nodePorts:\n http: \"\"\n https: \"\"\n ## Enable client source IP preservation\n ## ref http://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip\n ##\n externalTrafficPolicy: Cluster\nimage:\n registry: docker.io\n repository: mosipid/policy-management-service\n tag: 1.2.2.3\n ## Specify a imagePullPolicy\n ## Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent'\n ## ref: http://kubernetes.io/docs/user-guide/images/#pre-pulling-images\n ##\n pullPolicy: Always\n ## Optionally specify an array of imagePullSecrets.\n ## Secrets must be manually created in the namespace.\n ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/\n ##\n # pullSecrets:\n # - myRegistryKeySecretName\n## Port on which this particular spring service module is running.\nspringServicePort: 9107\n## Configure extra options for liveness and readiness probes\n## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/#configure-probes\n##\nstartupProbe:\n enabled: true\n httpGet:\n path: /v1/policymanager/actuator/health\n port: 9107\n initialDelaySeconds: 0\n periodSeconds: 10\n timeoutSeconds: 5\n failureThreshold: 30\n successThreshold: 1\nlivenessProbe:\n enabled: true\n httpGet:\n path: /v1/policymanager/actuator/health\n port: 9107\n initialDelaySeconds: 20\n periodSeconds: 10\n timeoutSeconds: 5\n failureThreshold: 6\n successThreshold: 1\nreadinessProbe:\n enabled: true\n httpGet:\n path: /v1/policymanager/actuator/health\n port: 9107\n initialDelaySeconds: 0\n periodSeconds: 10\n timeoutSeconds: 5\n failureThreshold: 6\n successThreshold: 1\n##\n# existingConfigmap:\n\n## Command and args for running the container (set to default if not set). Use array form\n##\ncommand: []\nargs: []\n## Deployment pod host aliases\n## https://kubernetes.io/docs/concepts/services-networking/add-entries-to-pod-etc-hosts-with-host-aliases/\n##\nhostAliases: []\n## ref: http://kubernetes.io/docs/user-guide/compute-resources/\n##\nresources:\n # We usually recommend not to specify default resources and to leave this as a conscious\n # choice for the user. This also increases chances charts run on environments with little\n # resources, such as Minikube. If you do want to specify resources, uncomment the following\n # lines, adjust them as necessary, and remove the curly braces after 'resources:'.\n limits:\n cpu: 500m\n memory: 3000Mi\n requests:\n cpu: 100m\n memory: 1000Mi\nadditionalResources:\n ## Specify any JAVA_OPTS string here. These typically will be specified in conjunction with above resources\n ## Example: java_opts: \"-Xms500M -Xmx500M\"\n javaOpts: \"-Xms2250M -Xmx2250M\"\n## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-container\n## Clamav container already runs as 'mosip' user, so we may not need to enable this\ncontainerSecurityContext:\n enabled: false\n runAsUser: mosip\n runAsNonRoot: true\n## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod\n##\npodSecurityContext:\n enabled: false\n fsGroup: 1001\n## Pod affinity preset\n## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity\n## Allowed values: soft, hard\n##\npodAffinityPreset: \"\"\n## Pod anti-affinity preset\n## Ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity\n## Allowed values: soft, hard\n##\npodAntiAffinityPreset: soft\n## Node affinity preset\n## Ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#node-affinity\n## Allowed values: soft, hard\n##\nnodeAffinityPreset:\n ## Node affinity type\n ## Allowed values: soft, hard\n ##\n type: \"\"\n ## Node label key to match\n ## E.g.\n ## key: \"kubernetes.io/e2e-az-name\"\n ##\n key: \"\"\n ## Node label values to match\n ## E.g.\n ## values:\n ## - e2e-az1\n ## - e2e-az2\n ##\n values: []\n## Affinity for pod assignment. Evaluated as a template.\n## Ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity\n##\naffinity: {}\n## Node labels for pod assignment. Evaluated as a template.\n## ref: https://kubernetes.io/docs/user-guide/node-selection/\n##\nnodeSelector: {}\n## Tolerations for pod assignment. Evaluated as a template.\n## ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/\n##\ntolerations: []\n## Pod extra labels\n## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/\n##\npodLabels: {}\n## Annotations for server pods.\n## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/\n##\npodAnnotations: {}\n## pods' priority.\n## ref: https://kubernetes.io/docs/concepts/configuration/pod-priority-preemption/\n##\n# priorityClassName: \"\"\n\n## lifecycleHooks for the container to automate configuration before or after startup.\n##\nlifecycleHooks: {}\n## Custom Liveness probes for\n##\ncustomLivenessProbe: {}\n## Custom Rediness probes\n##\ncustomReadinessProbe: {}\n## Update strategy - only really applicable for deployments with RWO PVs attached\n## If replicas = 1, an update can get \"stuck\", as the previous pod remains attached to the\n## PV, and the \"incoming\" pod can never start. Changing the strategy to \"Recreate\" will\n## terminate the single previous pod, so that the new, incoming pod can attach to the PV\n##\nupdateStrategy:\n type: RollingUpdate\n## Additional environment variables to set\n## Example:\n## extraEnvVars:\n## - name: FOO\n## value: \"bar\"\n##\nextraEnvVars: []\n## ConfigMap with extra environment variables that used\n##\nextraEnvVarsCM:\n - global\n - config-server-share\n## Secret with extra environment variables\n##\nextraEnvVarsSecret:\n## Extra volumes to add to the deployment\n##\nextraVolumes: []\n## Extra volume mounts to add to the container\n##\nextraVolumeMounts: []\n## Add init containers to the pods.\n## Example:\n## initContainers:\n## - name: your-image-name\n## image: your-image\n## imagePullPolicy: Always\n## ports:\n## - name: portname\n## containerPort: 1234\n##\ninitContainers: {}\n## Add sidecars to the pods.\n## Example:\n## sidecars:\n## - name: your-image-name\n## image: your-image\n## imagePullPolicy: Always\n## ports:\n## - name: portname\n## containerPort: 1234\n##\nsidecars: {}\npersistence:\n enabled: false\n ## If defined, storageClassName: \n ## If set to \"-\", storageClassName: \"\", which disables dynamic provisioning\n ## If undefined (the default) or set to null, no storageClassName spec is\n ## set, choosing the default provisioner. (gp2 on AWS, standard on\n ## GKE, AWS & OpenStack).\n ##\n # storageClass: \"-\"\n ##\n ## If you want to reuse an existing claim, you can pass the name of the PVC using\n ## the existingClaim variable\n # existingClaim: your-claim\n ## ReadWriteMany not supported by AWS gp2\n storageClass:\n accessModes:\n - ReadWriteOnce\n size: 10M\n existingClaim:\n # Dir where config and keys are written inside container\n mountDir:\n## Init containers parameters:\n## volumePermissions: Change the owner and group of the persistent volume mountpoint to runAsUser:fsGroup values from the securityContext section.\n##\nvolumePermissions:\n enabled: false\n image:\n registry: docker.io\n repository: bitnami/bitnami-shell\n tag: \"10\"\n pullPolicy: Always\n ## Optionally specify an array of imagePullSecrets.\n ## Secrets must be manually created in the namespace.\n ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/\n ##\n pullSecrets: []\n ## - myRegistryKeySecretName\n ## Init containers' resource requests and limits\n ## ref: http://kubernetes.io/docs/user-guide/compute-resources/\n ##\n resources:\n ## We usually recommend not to specify default resources and to leave this as a conscious\n ## choice for the user. This also increases chances charts run on environments with little\n ## resources, such as Minikube. If you do want to specify resources, uncomment the following\n ## lines, adjust them as necessary, and remove the curly braces after 'resources:'.\n ##\n limits: {}\n ## cpu: 100m\n ## memory: 128Mi\n ##\n requests: {}\n ## cpu: 100m\n ## memory: 128Mi\n ##\n## Specifies whether RBAC resources should be created\n##\nrbac:\n create: true\n## Specifies whether a ServiceAccount should be created\n##\nserviceAccount:\n create: true\n ## The name of the ServiceAccount to use.\n ## If not set and create is true, a name is generated using the fullname template\n ##\n name:\n## Prometheus Metrics\n##\nmetrics:\n enabled: true\n ## Prometheus pod annotations\n ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/\n ##\n podAnnotations:\n prometheus.io/scrape: \"true\"\n endpointPath: /v1/policymanager/actuator/prometheus\n ## Prometheus Service Monitor\n ## ref: https://github.com/coreos/prometheus-operator\n ##\n serviceMonitor:\n ## If the operator is installed in your cluster, set to true to create a Service Monitor Entry\n ##\n enabled: true\n ## Specify the namespace in which the serviceMonitor resource will be created\n ##\n # namespace: \"\"\n ## Specify the interval at which metrics should be scraped\n ##\n interval: 10s\n ## Specify the timeout after which the scrape is ended\n ##\n # scrapeTimeout: 30s\n ## Specify Metric Relabellings to add to the scrape endpoint\n ##\n # relabellings:\n ## Specify honorLabels parameter to add the scrape endpoint\n ##\n honorLabels: false\n ## Used to pass Labels that are used by the Prometheus installed in your cluster to select Service Monitors to work with\n ## ref: https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#prometheusspec\n ##\n additionalLabels: {}\n ## Custom PrometheusRule to be defined\n ## The value is evaluated as a template, so, for example, the value can depend on .Release or .Chart\n ## ref: https://github.com/coreos/prometheus-operator#customresourcedefinitions\n ##\n prometheusRule:\n enabled: false\n additionalLabels: {}\n namespace: ''\n ## List of rules, used as template by Helm.\n ## These are just examples rules inspired from https://awesome-prometheus-alerts.grep.to/rules.html\n # rules:\n # - alert: RabbitmqDown\n # expr: rabbitmq_up{service=\"{{ template \"rabbitmq.fullname\" . }}\"} == 0\n # for: 5m\n # labels:\n # severity: error\n rules: []\n## Partner management needs public access.\nistio:\n enabled: true\n gateways:\n - istio-system/public\n - istio-system/internal\n prefix: /v1/policymanager\n corsPolicy:\n allowOrigins:\n - prefix: https://pmp.sandbox.xyz.net\n - prefix: https://pmp-revamp.sandbox.xyz.net\n allowCredentials: true\n allowHeaders:\n - Accept\n - Accept-Encoding\n - Accept-Language\n - Connection\n - Content-Type\n - Cookie\n - Host\n - Referer\n - Sec-Fetch-Dest\n - Sec-Fetch-Mode\n - Sec-Fetch-Site\n - Sec-Fetch-User\n - Origin\n - Upgrade-Insecure-Requests\n - User-Agent\n - sec-ch-ua\n - sec-ch-ua-mobile\n - sec-ch-ua-platform\n - x-xsrf-token\n - xsrf-token\n allowMethods:\n - GET\n - POST\n - PATCH\n - PUT\n - DELETE\n# Set configuration\n# springConfigNameEnv:\n# activeProfileEnv:\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/pom.xml", + "title": "pom.xml", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/pom.xml", + "language": "xml", + "content": "\n\n\t4.0.0\n\t\n\t\tpms-parent\n\t\tio.mosip.pms\n\t\t1.2.2.3\n\t\n\t\t\n\t1.2.2.3\n\tpartner-management-service\n\tpartner-management-service\n\n\t\n\t\t\n\t\t\tio.mosip.kernel\n\t\t\tkernel-openid-bridge-api\n\t\t\t1.2.0.1\n\t\t\tprovided\n\t\t\n\t\t\n\t\t\tio.mosip.kernel\n\t\t\tkernel-core\n\t\t\t${kernel.version}\n\t\t\n\t\t\n\t\t\tio.mosip.kernel\n\t\t\tkernel-auth-adapter\n\t\t\t${kernel.authadapter.version}\n\t\t\n\t\t\n\t\t\tio.mosip.kernel\n\t\t\tkernel-crypto-jce\n\t\t\t1.0.6\n\t\t\t\t\n\t\t\n\t\t\tio.mosip.pms\n\t\t\tpms-common\n\t\t\t1.2.2.3\n\t\t\n\t\t\n\t\t\torg.springframework.boot\n\t\t\tspring-boot-starter-data-jpa\n\t\t\t2.0.2.RELEASE\n\t\t\n\t\t\n\t\t\torg.springframework.boot\n\t\t\tspring-boot-starter-web\n\t\t\t2.0.2.RELEASE\n\t\t\n\t\t\n\t\t\torg.springframework.boot\n\t\t\tspring-boot-devtools\n\t\t\truntime\n\t\t\ttrue\n\t\t\t2.0.2.RELEASE\n\t\t\n\t\t\n\t\t\torg.postgresql\n\t\t\tpostgresql\n\t\t\truntime\n\t\t\t42.2.2\n\t\t\n\t\t\n\t\t com.h2database\n\t\t h2\n\t\t 1.4.200\n\t\t test\n\t\t\t\t\n\t\t\n\t\t\torg.springframework.boot\n\t\t\tspring-boot-starter-test\n\t\t\ttest\n\t\t\t2.0.2.RELEASE\n\t\t\n\t\t\n\t\t\torg.projectlombok\n\t\t\tlombok\n\t\t\ttrue\n\t\t\t${lombok.version}\n\t\t\t\n\t\t\n\t\t\torg.springframework.security\n\t\t\tspring-security-test\n\t\t\t5.3.3.RELEASE\n\t\t\ttest\n\t\t\t\n\t\t\n\t\t\tio.mosip.kernel\n\t\t\tkernel-authcodeflowproxy-api\n\t\t\t1.2.0.1-B1\n\t\t\n\t\t\n\t\t\tcom.nimbusds\n\t\t\tnimbus-jose-jwt\n\t\t\t9.40\n\t\t\n\t\n\t\n\t\t\n\t\t\t\n\t\t\t\torg.springframework.boot\n\t\t\t\tspring-boot-maven-plugin\n\t\t\t\t2.6.3\n\t\t\t\t\n\t\t\t\t\tZIP\n\t\t\t\t\ttrue\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tbuild-info\n\t\t\t\t\t\t\trepackage\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tfalse\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t\n\t\n\t\t\n\t\t\topenapi-doc-generate-profile\n\t\t\t\n\t\t\t\t\n\t\t\t\t\tio.mosip.kernel\n\t\t\t\t\tkernel-auth-adapter\n\t\t\t\t\t${kernel-auth-adapter.version}\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\tcom.h2database\n\t\t\t\t\th2\n\t\t\t\t\t1.4.200\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\torg.springframework.boot\n\t\t\t\t\t\tspring-boot-maven-plugin\n\t\t\t\t\t\t${spring.boot.version}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\ttrue\n\t\t\t\t\t\t\tZIP\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tbuild-info-repackage\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\tbuild-info\n\t\t\t\t\t\t\t\t\trepackage\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\tfalse\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tpre-integration-test\n\t\t\t\t\t\t\t\tpre-integration-test\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\tstart\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\tsrc/test/resources\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\topenapi-profile\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t--server.port=8090\n\t\t\t\t\t\t\t\t\t\t--server.servlet.context-path=/app/generic\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tpost-integration-test\n\t\t\t\t\t\t\t\tpost-integration-test\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\tstop\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\torg.springdoc\n\t\t\t\t\t\tspringdoc-openapi-maven-plugin\n\t\t\t\t\t\t0.2\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tintegration-test\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\tgenerate\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\thttp://localhost:8090/app/generic/v3/api-docs\n\t\t\t\t\t\t\t${name}-openapi.json\n\t\t\t\t\t\t\t${project.build.directory}\n\t\t\t\t\t\t\tfalse\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t\n\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/config/AuthRestTemplateConfig.java", + "title": "AuthRestTemplateConfig.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/config/AuthRestTemplateConfig.java", + "language": "java", + "content": "package io.mosip.pms.config;\n\nimport org.springframework.context.annotation.Bean;\nimport org.springframework.context.annotation.Configuration;\nimport org.springframework.context.annotation.Primary;\nimport org.springframework.scheduling.annotation.EnableAsync;\nimport org.springframework.scheduling.annotation.EnableScheduling;\nimport org.springframework.web.client.RestTemplate;\n\nimport io.mosip.pms.partner.dto.AccessTokenResponse;\nimport io.mosip.pms.partner.keycloak.service.MemoryCache;\n\n@Configuration\n@EnableScheduling\n@EnableAsync\npublic class AuthRestTemplateConfig {\n\t\n\t@Primary\n\t@Bean(name = \"authRestTemplate\")\n\tpublic RestTemplate restTemplate() {\n\t\treturn new RestTemplate();\n\t}\n\t\n\t@Bean\n\tpublic MemoryCache memoryCache() {\n\t\treturn new MemoryCache<>(1);\n\t}\n\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/config/KeycloakRestTemplateConfig.java", + "title": "KeycloakRestTemplateConfig.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/config/KeycloakRestTemplateConfig.java", + "language": "java", + "content": "package io.mosip.pms.config;\n\nimport java.util.Collections;\n\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.context.annotation.Bean;\nimport org.springframework.context.annotation.Configuration;\nimport org.springframework.web.client.RestTemplate;\n\nimport io.mosip.pms.partner.keycloak.service.RestInterceptor;\n\n@Configuration\npublic class KeycloakRestTemplateConfig {\n\n\t@Autowired\n\tprivate RestInterceptor restInterceptor;\n\t\n\t@Bean(name = \"keycloakRestTemplate\")\n\tpublic RestTemplate getRestTemplate() {\n\t\tRestTemplate restTemplate = new RestTemplate();\n\t\trestTemplate.setInterceptors(Collections.singletonList(restInterceptor));\n\t\treturn restTemplate;\n\t}\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/config/OpenApiProperties.java", + "title": "OpenApiProperties.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/config/OpenApiProperties.java", + "language": "java", + "content": "package io.mosip.pms.config;\n\nimport java.util.List;\n\nimport org.springframework.boot.context.properties.ConfigurationProperties;\nimport org.springframework.context.annotation.Configuration;\n\nimport lombok.Data;\n\n/**\n * @author Nagarjuna Kuchi\n *\n */\n@Configuration\n@ConfigurationProperties(prefix = \"openapi\")\n@Data\npublic class OpenApiProperties {\n\tprivate InfoProperty info;\n\tprivate PartnerManagementService partnerManagementService;\n}\n\n/**\n * @author Nagarjuna Kuchi\n *\n */\n@Data\nclass InfoProperty {\n\tprivate String title;\n\tprivate String description;\n\tprivate String version;\n\tprivate LicenseProperty license;\n}\n\n/**\n * @author Nagarjuna Kuchi\n *\n */\n@Data\nclass LicenseProperty {\n\tprivate String name;\n\tprivate String url;\n}\n\n/**\n * @author Nagarjuna Kuchi\n *\n */\n@Data\nclass PartnerManagementService {\n\tprivate List servers;\n}\n\n/**\n * @author Nagarjuna Kuchi\n *\n */\n@Data\nclass Server {\n\tprivate String description;\n\tprivate String url;\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/config/ReqResFilter.java", + "title": "ReqResFilter.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/config/ReqResFilter.java", + "language": "java", + "content": "package io.mosip.pms.config;\n\nimport java.io.IOException;\n\nimport javax.servlet.Filter;\nimport javax.servlet.FilterChain;\nimport javax.servlet.FilterConfig;\nimport javax.servlet.ServletException;\nimport javax.servlet.ServletRequest;\nimport javax.servlet.ServletResponse;\nimport javax.servlet.http.HttpServletRequest;\nimport javax.servlet.http.HttpServletResponse;\n\nimport org.springframework.stereotype.Component;\nimport org.springframework.web.util.ContentCachingRequestWrapper;\nimport org.springframework.web.util.ContentCachingResponseWrapper;\n\n\n/**\n * @author sanjeev.shrivastava\n *\n */\n@Component\npublic class ReqResFilter implements Filter {\n\n\t/*\n\t * (non-Javadoc)\n\t * \n\t * @see javax.servlet.Filter#init(javax.servlet.FilterConfig)\n\t */\n\t@Override\n\tpublic void init(FilterConfig filterConfig) throws ServletException {\n\t\t// over-ridden method\n\t}\n\n\t/*\n\t * (non-Javadoc)\n\t * \n\t * @see javax.servlet.Filter#doFilter(javax.servlet.ServletRequest,\n\t * javax.servlet.ServletResponse, javax.servlet.FilterChain)\n\t */\n\t@Override\n\tpublic void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)\n\t\t\tthrows IOException, ServletException {\n\t\tHttpServletRequest httpServletRequest = (HttpServletRequest) request;\n\t\tHttpServletResponse httpServletResponse = (HttpServletResponse) response;\n\t\tContentCachingRequestWrapper requestWrapper = null;\n\t\tContentCachingResponseWrapper responseWrapper = null;\n\t\t\n\t\t\t// Default processing for url ends with .stream\n\t\t\tif (httpServletRequest.getRequestURI().endsWith(\".stream\")) {\n\t\t\t\tchain.doFilter(request, response);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\trequestWrapper = new ContentCachingRequestWrapper(httpServletRequest);\n\t\t\tresponseWrapper = new ContentCachingResponseWrapper(httpServletResponse);\n\t\t\tchain.doFilter(requestWrapper, responseWrapper);\n\t\t\tresponseWrapper.copyBodyToResponse();\n\n\t}\n\n\t/*\n\t * (non-Javadoc)\n\t * \n\t * @see javax.servlet.Filter#destroy()\n\t */\n\t@Override\n\tpublic void destroy() {\n\t\t// over-ridden method\n\t}\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/config/SwaggerConfig.java", + "title": "SwaggerConfig.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/config/SwaggerConfig.java", + "language": "java", + "content": "package io.mosip.pms.config;\n\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.context.annotation.Bean;\nimport org.springframework.context.annotation.Configuration;\n\nimport io.mosip.kernel.core.logger.spi.Logger;\nimport io.mosip.pms.common.util.PMSLogger;\nimport io.swagger.v3.oas.models.Components;\nimport io.swagger.v3.oas.models.OpenAPI;\nimport io.swagger.v3.oas.models.info.Info;\nimport io.swagger.v3.oas.models.info.License;\nimport io.swagger.v3.oas.models.servers.Server;\n\n@Configuration\npublic class SwaggerConfig {\n\tprivate static final Logger logger = PMSLogger.getLogger(SwaggerConfig.class);\n\n\t@Autowired\n\tprivate OpenApiProperties openApiProperties;\n\n\t@Bean\n\tpublic OpenAPI openApi() {\n\t\tString msg = \"Swagger open api, \";\n\t\tOpenAPI api = new OpenAPI().components(new Components());\n\t\tif (null != openApiProperties.getInfo()) {\n\t\t\tapi.info(new Info().title(openApiProperties.getInfo().getTitle())\n\t\t\t\t\t.version(openApiProperties.getInfo().getVersion())\n\t\t\t\t\t.description(openApiProperties.getInfo().getDescription()));\n\t\t\tif (null != openApiProperties.getInfo().getLicense()) {\n\t\t\t\tapi.getInfo().license(new License().name(openApiProperties.getInfo().getLicense().getName())\n\t\t\t\t\t\t.url(openApiProperties.getInfo().getLicense().getUrl()));\n\t\t\t\tlogger.info(msg + \"info license property is added\");\n\t\t\t} else {\n\t\t\t\tlogger.error(msg + \"info license property is empty\");\n\t\t\t}\n\t\t\tlogger.info(msg + \"info property is added\");\n\t\t} else {\n\t\t\tlogger.error(msg + \"info property is empty\");\n\t\t}\n\n\t\tif (null != openApiProperties.getPartnerManagementService().getServers()) {\n\t\t\topenApiProperties.getPartnerManagementService().getServers().forEach(server -> {\n\t\t\t\tapi.addServersItem(new Server().description(server.getDescription()).url(server.getUrl()));\n\t\t\t});\n\t\t\tlogger.info(msg + \"server property is added\");\n\t\t} else {\n\t\t\tlogger.error(msg + \"server property is empty\");\n\t\t}\n\t\treturn api;\n\t}\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/device/authdevice/entity/DeviceDetail.java", + "title": "DeviceDetail.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/device/authdevice/entity/DeviceDetail.java", + "language": "java", + "content": "package io.mosip.pms.device.authdevice.entity;\n\nimport java.io.Serializable;\nimport java.time.LocalDateTime;\n\nimport javax.persistence.Column;\nimport javax.persistence.Entity;\nimport javax.persistence.FetchType;\nimport javax.persistence.Id;\nimport javax.persistence.JoinColumn;\nimport javax.persistence.JoinColumns;\nimport javax.persistence.ManyToOne;\nimport javax.persistence.Table;\n\n@Entity\n@Table(name=\"device_detail\")\npublic class DeviceDetail implements Serializable {\n\tprivate static final long serialVersionUID = 1L;\n\n\t@Id\n\t@Column(name=\"id\",length=36,nullable=false)\n\tprivate String id;\n\t\n\t@Column(name=\"dtype_code\",length=36,nullable=false)\n\tprivate String deviceTypeCode;\n\t\n\t@Column(name=\"dstype_code\",length=36,nullable=false)\n\tprivate String deviceSubTypeCode;\n\t\n\t@Column(name=\"dprovider_id\",length=36,nullable=false)\n\tprivate String deviceProviderId;\n\t\n\t@ManyToOne(fetch = FetchType.LAZY)\n\t@JoinColumns({\n\t@JoinColumn(name = \"dtype_code\", referencedColumnName = \"dtyp_code\", insertable = false, updatable = false),\n\t@JoinColumn(name = \"dstype_code\", referencedColumnName = \"code\", insertable = false, updatable = false)\n\t})\n\tprivate RegistrationDeviceSubType deviceSubType;\n\t\n\t@Column(name=\"make\",length=36,nullable=false)\n\tprivate String make;\n\t\n\t@Column(name=\"model\",length=36,nullable=false)\n\tprivate String model;\n\t\n\t@Column(name=\"approval_status\",length=36,nullable=false)\n\tprivate String approvalStatus;\n\t\n\t@Column(name=\"partner_org_name\",length=128)\n\tprivate String partnerOrganizationName;\n\t\n\t@Column(name=\"is_active\",nullable=false)\n\tprivate boolean isActive;\n\t\n\t@Column(name=\"is_deleted\")\n\tprivate boolean isDeleted;\n\t\n\t@Column(name=\"cr_by\",length=256,nullable=false)\n\tprivate String crBy;\n\n\t@Column(name=\"cr_dtimes\",nullable=false)\n\tprivate LocalDateTime crDtimes;\n\n\t@Column(name=\"del_dtimes\")\n\tprivate LocalDateTime delDtimes;\n\t\n\t@Column(name=\"upd_by\",length=256)\n\tprivate String updBy;\n\n\t@Column(name=\"upd_dtimes\")\n\tprivate LocalDateTime updDtimes;\n\n\tpublic String getId() {\n\t\treturn id;\n\t}\n\n\tpublic void setId(String id) {\n\t\tthis.id = id;\n\t}\n\n\tpublic String getDeviceProviderId() {\n\t\treturn deviceProviderId;\n\t}\n\n\tpublic void setDeviceProviderId(String deviceProviderId) {\n\t\tthis.deviceProviderId = deviceProviderId;\n\t}\n\n\t\n\n\tpublic String getDeviceTypeCode() {\n\t\treturn deviceTypeCode;\n\t}\n\n\tpublic void setDeviceTypeCode(String deviceTypeCode) {\n\t\tthis.deviceTypeCode = deviceTypeCode;\n\t}\n\n\tpublic String getDeviceSubTypeCode() {\n\t\treturn deviceSubTypeCode;\n\t}\n\n\tpublic void setDeviceSubTypeCode(String deviceSubTypeCode) {\n\t\tthis.deviceSubTypeCode = deviceSubTypeCode;\n\t}\n\n\tpublic String getMake() {\n\t\treturn make;\n\t}\n\n\tpublic void setMake(String make) {\n\t\tthis.make = make;\n\t}\n\n\tpublic String getModel() {\n\t\treturn model;\n\t}\n\n\tpublic void setModel(String model) {\n\t\tthis.model = model;\n\t}\n\n\tpublic String getApprovalStatus() {\n\t\treturn approvalStatus;\n\t}\n\n\tpublic void setApprovalStatus(String approvalStatus) {\n\t\tthis.approvalStatus = approvalStatus;\n\t}\n\n\tpublic String getPartnerOrganizationName() {\n\t\treturn partnerOrganizationName;\n\t}\n\n\tpublic void setPartnerOrganizationName(String partnerOrganizationName) {\n\t\tthis.partnerOrganizationName = partnerOrganizationName;\n\t}\n\n\tpublic boolean getIsActive() {\n\t\treturn isActive;\n\t}\n\n\tpublic void setIsActive(boolean isActive) {\n\t\tthis.isActive = isActive;\n\t}\n\n\tpublic boolean getIsDeleted() {\n\t\treturn isDeleted;\n\t}\n\n\tpublic void setIsDeleted(boolean isDeleted) {\n\t\tthis.isDeleted = isDeleted;\n\t}\n\n\tpublic String getCrBy() {\n\t\treturn crBy;\n\t}\n\n\tpublic void setCrBy(String crBy) {\n\t\tthis.crBy = crBy;\n\t}\n\n\tpublic LocalDateTime getCrDtimes() {\n\t\treturn crDtimes;\n\t}\n\n\tpublic void setCrDtimes(LocalDateTime crDtimes) {\n\t\tthis.crDtimes = crDtimes;\n\t}\n\n\tpublic LocalDateTime getDelDtimes() {\n\t\treturn delDtimes;\n\t}\n\n\tpublic void setDelDtimes(LocalDateTime delDtimes) {\n\t\tthis.delDtimes = delDtimes;\n\t}\n\n\tpublic String getUpdBy() {\n\t\treturn updBy;\n\t}\n\n\tpublic void setUpdBy(String updBy) {\n\t\tthis.updBy = updBy;\n\t}\n\n\tpublic LocalDateTime getUpdDtimes() {\n\t\treturn updDtimes;\n\t}\n\n\tpublic void setUpdDtimes(LocalDateTime updDtimes) {\n\t\tthis.updDtimes = updDtimes;\n\t}\n\t\n\t\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/device/authdevice/entity/DeviceDetailEntity.java", + "title": "DeviceDetailEntity.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/device/authdevice/entity/DeviceDetailEntity.java", + "language": "java", + "content": "package io.mosip.pms.device.authdevice.entity;\n\nimport lombok.Getter;\nimport lombok.Setter;\nimport lombok.ToString;\n\nimport javax.persistence.*;\nimport java.time.LocalDateTime;\n\n@Entity\n@Getter\n@Setter\n@ToString\n@SqlResultSetMapping(\n name = \"Mapping.DeviceDetailEntity\",\n classes = {\n @ConstructorResult(\n targetClass = DeviceDetailEntity.class,\n columns = {\n @ColumnResult(name = \"deviceId\", type = String.class),\n @ColumnResult(name = \"partnerId\", type = String.class),\n @ColumnResult(name = \"orgName\", type = String.class),\n @ColumnResult(name = \"deviceType\", type = String.class),\n @ColumnResult(name = \"deviceSubType\", type = String.class),\n @ColumnResult(name = \"status\", type = String.class),\n @ColumnResult(name = \"make\", type = String.class),\n @ColumnResult(name = \"model\", type = String.class),\n @ColumnResult(name = \"createdDateTime\", type = LocalDateTime.class),\n @ColumnResult(name = \"sbiId\", type = String.class),\n @ColumnResult(name = \"sbiVersion\", type = String.class)\n }\n )\n }\n)\npublic class DeviceDetailEntity {\n\n public DeviceDetailEntity(\n String deviceId, String partnerId, String orgName, String deviceType,\n String deviceSubType, String status, String make, String model,\n LocalDateTime createdDateTime, String sbiId, String sbiVersion) {\n this.deviceId = deviceId;\n this.partnerId = partnerId;\n this.orgName = orgName;\n this.deviceType = deviceType;\n this.deviceSubType = deviceSubType;\n this.status = status;\n this.make = make;\n this.model = model;\n this.createdDateTime = createdDateTime;\n this.sbiId = sbiId;\n this.sbiVersion = sbiVersion;\n }\n\n // No-argument constructor\n public DeviceDetailEntity() {\n super();\n }\n\n @Id\n private String deviceId;\n\n private String partnerId;\n\n private String orgName;\n\n private String deviceType;\n\n private String deviceSubType;\n\n private String status;\n\n private String make;\n\n private String model;\n\n private LocalDateTime createdDateTime;\n\n private String sbiId;\n\n private String sbiVersion;\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/device/authdevice/entity/FTPChipDetail.java", + "title": "FTPChipDetail.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/device/authdevice/entity/FTPChipDetail.java", + "language": "java", + "content": "package io.mosip.pms.device.authdevice.entity;\n\nimport java.time.LocalDateTime;\n\nimport javax.persistence.Column;\nimport javax.persistence.Entity;\nimport javax.persistence.Id;\nimport javax.persistence.Table;\n\n@Entity\n@Table(name = \"ftp_chip_detail\")\npublic class FTPChipDetail {\n\t@Id \n\t@Column(name = \"id\", length = 36,nullable=false)\n\tprivate String ftpChipDetailId;\n\t\n\t@Column(name = \"foundational_trust_provider_id\", length = 36)\n\tprivate String ftpProviderId;\n\t\n\t@Column(name=\"make\",length=36)\n\tprivate String make;\n\t\n\t@Column(name=\"model\",length=36)\n\tprivate String model;\n\t\n\t@Column(name=\"certificate_alias\",length=36,nullable=false)\n\tprivate String certificateAlias;\n\t\n\t@Column(name=\"partner_org_name\",length=128)\n\tprivate String partnerOrganizationName;\n\t\n\t@Column(name=\"is_active\",nullable=false)\n\tprivate boolean isActive;\n\t\n\t@Column(name=\"is_deleted\")\n\tprivate boolean isDeleted;\n\t\n\t@Column(name=\"cr_by\",length=256,nullable=false)\n\tprivate String crBy;\n\n\t@Column(name=\"cr_dtimes\",nullable=false)\n\tprivate LocalDateTime crDtimes;\n\n\t@Column(name=\"del_dtimes\")\n\tprivate LocalDateTime delDtimes;\n\t\n\t@Column(name=\"upd_by\",length=256)\n\tprivate String updBy;\n\n\t@Column(name=\"upd_dtimes\")\n\tprivate LocalDateTime updDtimes;\n\t\n\t@Column(name=\"approval_status\",length=36,nullable=false)\n\tprivate String approvalStatus;\n\n\tpublic String getFtpChipDetailId() {\n\t\treturn ftpChipDetailId;\n\t}\n\n\tpublic void setFtpChipDetailId(String ftpChipDetailId) {\n\t\tthis.ftpChipDetailId = ftpChipDetailId;\n\t}\n\n\tpublic String getFtpProviderId() {\n\t\treturn ftpProviderId;\n\t}\n\n\tpublic void setFtpProviderId(String ftpProviderId) {\n\t\tthis.ftpProviderId = ftpProviderId;\n\t}\n\n\tpublic String getMake() {\n\t\treturn make;\n\t}\n\n\tpublic void setMake(String make) {\n\t\tthis.make = make;\n\t}\n\n\tpublic String getModel() {\n\t\treturn model;\n\t}\n\n\tpublic void setModel(String model) {\n\t\tthis.model = model;\n\t}\n\n\tpublic String getCertificateAlias() {\n\t\treturn certificateAlias;\n\t}\n\n\tpublic void setCertificateAlias(String certificateAlias) {\n\t\tthis.certificateAlias = certificateAlias;\n\t}\n\n\tpublic String getPartnerOrganizationName() {\n\t\treturn partnerOrganizationName;\n\t}\n\n\tpublic void setPartnerOrganizationName(String partnerOrganizationName) {\n\t\tthis.partnerOrganizationName = partnerOrganizationName;\n\t}\n\n\tpublic boolean isActive() {\n\t\treturn isActive;\n\t}\n\n\tpublic void setActive(boolean isActive) {\n\t\tthis.isActive = isActive;\n\t}\n\n\tpublic boolean isDeleted() {\n\t\treturn isDeleted;\n\t}\n\n\tpublic void setDeleted(boolean isDeleted) {\n\t\tthis.isDeleted = isDeleted;\n\t}\n\n\tpublic String getCrBy() {\n\t\treturn crBy;\n\t}\n\n\tpublic void setCrBy(String crBy) {\n\t\tthis.crBy = crBy;\n\t}\n\n\tpublic LocalDateTime getCrDtimes() {\n\t\treturn crDtimes;\n\t}\n\n\tpublic void setCrDtimes(LocalDateTime crDtimes) {\n\t\tthis.crDtimes = crDtimes;\n\t}\n\n\tpublic LocalDateTime getDelDtimes() {\n\t\treturn delDtimes;\n\t}\n\n\tpublic void setDelDtimes(LocalDateTime delDtimes) {\n\t\tthis.delDtimes = delDtimes;\n\t}\n\n\tpublic String getUpdBy() {\n\t\treturn updBy;\n\t}\n\n\tpublic void setUpdBy(String updBy) {\n\t\tthis.updBy = updBy;\n\t}\n\n\tpublic LocalDateTime getUpdDtimes() {\n\t\treturn updDtimes;\n\t}\n\n\tpublic void setUpdDtimes(LocalDateTime updDtimes) {\n\t\tthis.updDtimes = updDtimes;\n\t}\n\t\n\tpublic String getApprovalStatus() {\n\t\treturn approvalStatus;\n\t}\n\n\tpublic void setApprovalStatus(String approvalStatus) {\n\t\tthis.approvalStatus = approvalStatus;\n\t}\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/device/authdevice/entity/FtmDetailSummaryEntity.java", + "title": "FtmDetailSummaryEntity.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/device/authdevice/entity/FtmDetailSummaryEntity.java", + "language": "java", + "content": "package io.mosip.pms.device.authdevice.entity;\n\nimport lombok.Getter;\nimport lombok.Setter;\nimport lombok.ToString;\n\nimport javax.persistence.*;\nimport java.time.LocalDateTime;\n\n@Entity\n@Getter\n@Setter\n@ToString\n@SqlResultSetMapping(\n name = \"Mapping.FtmDetailSummaryEntity\",\n classes = { @ConstructorResult(\n targetClass = FtmDetailSummaryEntity.class,\n columns = {\n @ColumnResult(name = \"ftmId\", type = String.class),\n @ColumnResult(name = \"partnerId\", type = String.class),\n @ColumnResult(name = \"orgName\", type = String.class),\n @ColumnResult(name = \"make\", type = String.class),\n @ColumnResult(name = \"model\", type = String.class),\n @ColumnResult(name = \"status\", type = String.class),\n @ColumnResult(name = \"isActive\", type = Boolean.class),\n @ColumnResult(name = \"isCertificateAvailable\", type = Boolean.class),\n @ColumnResult(name = \"createdDateTime\", type = LocalDateTime.class)\n })\n }\n)\npublic class FtmDetailSummaryEntity {\n\n public FtmDetailSummaryEntity(String ftmId, String partnerId, String orgName, String make, String model,\n String status, Boolean isActive, Boolean isCertificateAvailable,\n LocalDateTime createdDateTime) {\n this.ftmId = ftmId;\n this.partnerId = partnerId;\n this.orgName = orgName;\n this.make = make;\n this.model = model;\n this.status = status;\n this.isActive = isActive;\n this.isCertificateAvailable = isCertificateAvailable;\n this.createdDateTime = createdDateTime;\n }\n\n // No-argument constructor\n public FtmDetailSummaryEntity() {\n super();\n }\n\n @Id\n private String ftmId;\n\n private String partnerId;\n\n private String orgName;\n\n private String make;\n\n private String model;\n\n private String status;\n\n private Boolean isActive;\n\n private Boolean isCertificateAvailable;\n\n private LocalDateTime createdDateTime;\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/device/authdevice/entity/RegistrationDeviceSubType.java", + "title": "RegistrationDeviceSubType.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/device/authdevice/entity/RegistrationDeviceSubType.java", + "language": "java", + "content": "package io.mosip.pms.device.authdevice.entity;\n\nimport java.io.Serializable;\nimport java.time.LocalDateTime;\n\nimport javax.persistence.Column;\nimport javax.persistence.Entity;\nimport javax.persistence.Id;\nimport javax.persistence.Table;\n\n@Entity\n@Table(name=\"reg_device_sub_type\")\npublic class RegistrationDeviceSubType implements Serializable {\n\tprivate static final long serialVersionUID = 1L;\n\n\t@Id\n\tprivate String code;\t\n\t\n\t@Column(name = \"dtyp_code\", nullable = false)\n\tprivate String deviceType;\n\t\n\t@Column(name=\"name\",length=64,nullable=false)\n\tprivate String name;\n\t\n\t@Column(name=\"descr\",length=512,nullable=false)\n\tprivate String desciption;\n\t\n\t@Column(name=\"is_active\",nullable=false)\n\tprivate boolean isActive;\n\t\n\t@Column(name=\"is_deleted\")\n\tprivate Boolean isDeleted;\n\t\n\t@Column(name=\"cr_by\",length=256,nullable=false)\n\tprivate String crBy;\n\n\t@Column(name=\"cr_dtimes\",nullable=false)\n\tprivate LocalDateTime crDtimes;\n\n\t@Column(name=\"del_dtimes\")\n\tprivate LocalDateTime delDtimes;\n\t\n\t@Column(name=\"upd_by\",length=256)\n\tprivate String updBy;\n\n\t@Column(name=\"upd_dtimes\")\n\tprivate LocalDateTime updDtimes;\n\n\tpublic String getCode() {\n\t\treturn code;\n\t}\n\n\tpublic void setCode(String code) {\n\t\tthis.code = code;\n\t}\n\n\t\n\n\tpublic String getDeviceTypeCode() {\n\t\treturn deviceType;\n\t}\n\n\tpublic void setDeviceTypeCode(String deviceTypeCode) {\n\t\tthis.deviceType = deviceTypeCode;\n\t}\n\n\tpublic String getName() {\n\t\treturn name;\n\t}\n\n\tpublic void setName(String name) {\n\t\tthis.name = name;\n\t}\n\n\tpublic String getDesciption() {\n\t\treturn desciption;\n\t}\n\n\tpublic void setDesciption(String desciption) {\n\t\tthis.desciption = desciption;\n\t}\n\n\tpublic boolean isActive() {\n\t\treturn isActive;\n\t}\n\n\tpublic void setActive(boolean isActive) {\n\t\tthis.isActive = isActive;\n\t}\n\n\tpublic Boolean isDeleted() {\n\t\treturn isDeleted;\n\t}\n\n\tpublic void setDeleted(Boolean isDeleted) {\n\t\tthis.isDeleted = isDeleted;\n\t}\n\n\tpublic String getCrBy() {\n\t\treturn crBy;\n\t}\n\n\tpublic void setCrBy(String crBy) {\n\t\tthis.crBy = crBy;\n\t}\n\n\tpublic LocalDateTime getCrDtimes() {\n\t\treturn crDtimes;\n\t}\n\n\tpublic void setCrDtimes(LocalDateTime crDtimes) {\n\t\tthis.crDtimes = crDtimes;\n\t}\n\n\tpublic LocalDateTime getDelDtimes() {\n\t\treturn delDtimes;\n\t}\n\n\tpublic void setDelDtimes(LocalDateTime delDtimes) {\n\t\tthis.delDtimes = delDtimes;\n\t}\n\n\tpublic String getUpdBy() {\n\t\treturn updBy;\n\t}\n\n\tpublic void setUpdBy(String updBy) {\n\t\tthis.updBy = updBy;\n\t}\n\n\tpublic LocalDateTime getUpdDtimes() {\n\t\treturn updDtimes;\n\t}\n\n\tpublic void setUpdDtimes(LocalDateTime updDtimes) {\n\t\tthis.updDtimes = updDtimes;\n\t}\n\t\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/device/authdevice/entity/RegistrationDeviceType.java", + "title": "RegistrationDeviceType.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/device/authdevice/entity/RegistrationDeviceType.java", + "language": "java", + "content": "package io.mosip.pms.device.authdevice.entity;\n\nimport java.io.Serializable;\nimport java.time.LocalDateTime;\n\nimport javax.persistence.Column;\nimport javax.persistence.Entity;\nimport javax.persistence.Id;\nimport javax.persistence.Table;\n\n@Entity\n@Table(name=\"reg_device_type\")\npublic class RegistrationDeviceType implements Serializable {\n\t\tprivate static final long serialVersionUID = 1L;\n\t\t\n\t\t@Id\n\t\t@Column(name=\"code\",length=36,nullable=false)\n\t\tprivate String code;\n\t\t\n\t\t@Column(name=\"name\",length=64,nullable=false)\n\t\tprivate String name;\n\t\t\n\t\t@Column(name=\"descr\",length=512,nullable=false)\n\t\tprivate String desciption;\n\t\t\n\t\t@Column(name=\"is_active\",nullable=false)\n\t\tprivate boolean isActive;\n\t\t\n\t\t@Column(name=\"is_deleted\")\n\t\tprivate boolean isDeleted;\n\t\t\n\t\t@Column(name=\"cr_by\",length=256,nullable=false)\n\t\tprivate String crBy;\n\n\t\t@Column(name=\"cr_dtimes\",nullable=false)\n\t\tprivate LocalDateTime crDtimes;\n\n\t\t@Column(name=\"del_dtimes\")\n\t\tprivate LocalDateTime delDtimes;\n\t\t\n\t\t@Column(name=\"upd_by\",length=256)\n\t\tprivate String updBy;\n\n\t\t@Column(name=\"upd_dtimes\")\n\t\tprivate LocalDateTime updDtimes;\n\n\t\tpublic String getCode() {\n\t\t\treturn code;\n\t\t}\n\n\t\tpublic void setCode(String code) {\n\t\t\tthis.code = code;\n\t\t}\n\n\t\tpublic String getName() {\n\t\t\treturn name;\n\t\t}\n\n\t\tpublic void setName(String name) {\n\t\t\tthis.name = name;\n\t\t}\n\n\t\tpublic String getDesciption() {\n\t\t\treturn desciption;\n\t\t}\n\n\t\tpublic void setDesciption(String desciption) {\n\t\t\tthis.desciption = desciption;\n\t\t}\n\n\t\tpublic boolean isActive() {\n\t\t\treturn isActive;\n\t\t}\n\n\t\tpublic void setActive(boolean isActive) {\n\t\t\tthis.isActive = isActive;\n\t\t}\n\n\t\tpublic boolean isDeleted() {\n\t\t\treturn isDeleted;\n\t\t}\n\n\t\tpublic void setDeleted(boolean isDeleted) {\n\t\t\tthis.isDeleted = isDeleted;\n\t\t}\n\n\t\tpublic String getCrBy() {\n\t\t\treturn crBy;\n\t\t}\n\n\t\tpublic void setCrBy(String crBy) {\n\t\t\tthis.crBy = crBy;\n\t\t}\n\n\t\tpublic LocalDateTime getCrDtimes() {\n\t\t\treturn crDtimes;\n\t\t}\n\n\t\tpublic void setCrDtimes(LocalDateTime crDtimes) {\n\t\t\tthis.crDtimes = crDtimes;\n\t\t}\n\n\t\tpublic LocalDateTime getDelDtimes() {\n\t\t\treturn delDtimes;\n\t\t}\n\n\t\tpublic void setDelDtimes(LocalDateTime delDtimes) {\n\t\t\tthis.delDtimes = delDtimes;\n\t\t}\n\n\t\tpublic String getUpdBy() {\n\t\t\treturn updBy;\n\t\t}\n\n\t\tpublic void setUpdBy(String updBy) {\n\t\t\tthis.updBy = updBy;\n\t\t}\n\n\t\tpublic LocalDateTime getUpdDtimes() {\n\t\t\treturn updDtimes;\n\t\t}\n\n\t\tpublic void setUpdDtimes(LocalDateTime updDtimes) {\n\t\t\tthis.updDtimes = updDtimes;\n\t\t}\n\t\t\n\t\t\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/device/authdevice/entity/SbiSummaryEntity.java", + "title": "SbiSummaryEntity.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/device/authdevice/entity/SbiSummaryEntity.java", + "language": "java", + "content": "package io.mosip.pms.device.authdevice.entity;\n\nimport lombok.Getter;\nimport lombok.Setter;\nimport lombok.ToString;\n\nimport javax.persistence.*;\nimport java.time.LocalDateTime;\n\n@Entity\n@Getter\n@Setter\n@ToString\n@SqlResultSetMapping(\n name = \"Mapping.SbiSummaryEntity\",\n classes = { @ConstructorResult(\n targetClass = SbiSummaryEntity.class,\n columns = {\n @ColumnResult(name = \"partnerId\", type = String.class),\n @ColumnResult(name = \"orgName\", type = String.class),\n @ColumnResult(name = \"sbiId\", type = String.class),\n @ColumnResult(name = \"sbiVersion\", type = String.class),\n @ColumnResult(name = \"status\", type = String.class),\n @ColumnResult(name = \"isActive\", type = Boolean.class),\n @ColumnResult(name = \"sbiCreatedDateTime\", type = LocalDateTime.class),\n @ColumnResult(name = \"sbiExpiryDateTime\", type = LocalDateTime.class),\n @ColumnResult(name = \"createdDateTime\", type = LocalDateTime.class),\n @ColumnResult(name = \"countOfAssociatedDevices\", type = Long.class),\n @ColumnResult(name = \"countOfApprovedDevices\", type = Long.class),\n @ColumnResult(name = \"countOfPendingDevices\", type = Long.class),\n @ColumnResult(name = \"sbiExpiryStatus\", type = String.class)\n })\n }\n)\npublic class SbiSummaryEntity {\n\n public SbiSummaryEntity(String partnerId, String orgName, String sbiId, String sbiVersion,\n String status, Boolean isActive, LocalDateTime sbiCreatedDateTime, LocalDateTime sbiExpiryDateTime, LocalDateTime createdDateTime,\n Long countOfAssociatedDevices, Long countOfApprovedDevices, Long countOfPendingDevices, String sbiExpiryStatus) {\n this.partnerId = partnerId;\n this.orgName = orgName;\n this.sbiId = sbiId;\n this.sbiVersion = sbiVersion;\n this.status = status;\n this.isActive = isActive;\n this.sbiCreatedDateTime = sbiCreatedDateTime;\n this.sbiExpiryDateTime = sbiExpiryDateTime;\n this.createdDateTime = createdDateTime;\n this.countOfAssociatedDevices = countOfAssociatedDevices;\n this.countOfApprovedDevices = countOfApprovedDevices;\n this.countOfPendingDevices = countOfPendingDevices;\n this.sbiExpiryStatus = sbiExpiryStatus;\n }\n\n // No-argument constructor\n public SbiSummaryEntity() {\n super();\n }\n\n private String partnerId;\n\n private String orgName;\n\n @Id\n private String sbiId;\n\n private String sbiVersion;\n\n private String status;\n\n private Boolean isActive;\n\n private LocalDateTime sbiCreatedDateTime;\n\n private LocalDateTime sbiExpiryDateTime;\n\n private LocalDateTime createdDateTime;\n\n private Long countOfAssociatedDevices;\n\n private Long countOfApprovedDevices;\n\n private Long countOfPendingDevices;\n\n private String sbiExpiryStatus;\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/device/authdevice/entity/SecureBiometricInterface.java", + "title": "SecureBiometricInterface.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/device/authdevice/entity/SecureBiometricInterface.java", + "language": "java", + "content": "package io.mosip.pms.device.authdevice.entity;\n\nimport java.time.LocalDateTime;\n\nimport javax.persistence.Column;\nimport javax.persistence.Entity;\nimport javax.persistence.Id;\nimport javax.persistence.Table;\n\n@Entity\n@Table(name=\"secure_biometric_interface\")\npublic class SecureBiometricInterface {\n\t@Id\n\t@Column(name=\"id\",length=36,nullable=false)\n\tprivate String id;\n\t\n\t@Column(name=\"sw_binary_hash\",nullable=false)\n\tprivate byte[] swBinaryHash;\n\t\n\t@Column(name = \"sw_version\", nullable = false, length = 64)\n\tprivate String swVersion;\t\n\t\n\t@Column(name = \"sw_cr_dtimes\")\n\tprivate LocalDateTime swCreateDateTime;\n\n\t@Column(name = \"sw_expiry_dtimes\")\n\tprivate LocalDateTime swExpiryDateTime;\n\t\n\t@Column(name=\"approval_status\",length=36,nullable=false)\n\tprivate String approvalStatus;\n\t\n\t@Column(name=\"is_active\",nullable=false)\n\tprivate Boolean isActive;\n\t\n\t@Column(name=\"is_deleted\")\n\tprivate Boolean isDeleted;\n\t\n\t@Column(name=\"cr_by\",length=256,nullable=false)\n\tprivate String crBy;\n\n\t@Column(name=\"cr_dtimes\",nullable=false)\n\tprivate LocalDateTime crDtimes;\n\n\t@Column(name=\"del_dtimes\")\n\tprivate LocalDateTime delDtimes;\n\t\n\t@Column(name=\"upd_by\",length=256)\n\tprivate String updBy;\n\n\t@Column(name=\"upd_dtimes\")\n\tprivate LocalDateTime updDtimes;\n\t\n\t@Column(name = \"provider_id\")\n\tprivate String providerId;\n\t\n\t@Column(name=\"partner_org_name\")\n\tprivate String partnerOrgName;\n\t\n\tpublic String getProviderId() {\n\t\treturn providerId;\n\t}\n\t\n\tpublic void setProviderId(String providerId) {\n\t\tthis.providerId = providerId;\n\t}\n\t\n\tpublic void setPartnerOrgName(String partnerOrgName) {\n\t\tthis.partnerOrgName = partnerOrgName;\n\t}\n\t\n\tpublic String getPartnerOrgName() {\n\t\treturn partnerOrgName;\n\t}\n\n\tpublic String getId() {\n\t\treturn id;\n\t}\n\n\tpublic void setId(String id) {\n\t\tthis.id = id;\n\t}\n\n\tpublic byte[] getSwBinaryHash() {\n\t\treturn swBinaryHash;\n\t}\n\n\tpublic void setSwBinaryHash(byte[] swBinaryHash) {\n\t\tthis.swBinaryHash = swBinaryHash;\n\t}\n\n\tpublic String getSwVersion() {\n\t\treturn swVersion;\n\t}\n\n\tpublic void setSwVersion(String swVersion) {\n\t\tthis.swVersion = swVersion;\n\t}\n\n\tpublic LocalDateTime getSwCreateDateTime() {\n\t\treturn swCreateDateTime;\n\t}\n\n\tpublic void setSwCreateDateTime(LocalDateTime swCreateDateTime) {\n\t\tthis.swCreateDateTime = swCreateDateTime;\n\t}\n\n\tpublic LocalDateTime getSwExpiryDateTime() {\n\t\treturn swExpiryDateTime;\n\t}\n\n\tpublic void setSwExpiryDateTime(LocalDateTime swExpiryDateTime) {\n\t\tthis.swExpiryDateTime = swExpiryDateTime;\n\t}\n\n\tpublic String getApprovalStatus() {\n\t\treturn approvalStatus;\n\t}\n\n\tpublic void setApprovalStatus(String approvalStatus) {\n\t\tthis.approvalStatus = approvalStatus;\n\t}\n\n\tpublic Boolean isActive() {\n\t\treturn isActive;\n\t}\n\n\tpublic void setActive(Boolean isActive) {\n\t\tthis.isActive = isActive;\n\t}\n\n\tpublic Boolean isDeleted() {\n\t\treturn isDeleted;\n\t}\n\n\tpublic void setDeleted(Boolean isDeleted) {\n\t\tthis.isDeleted = isDeleted;\n\t}\n\n\tpublic String getCrBy() {\n\t\treturn crBy;\n\t}\n\n\tpublic void setCrBy(String crBy) {\n\t\tthis.crBy = crBy;\n\t}\n\n\tpublic LocalDateTime getCrDtimes() {\n\t\treturn crDtimes;\n\t}\n\n\tpublic void setCrDtimes(LocalDateTime crDtimes) {\n\t\tthis.crDtimes = crDtimes;\n\t}\n\n\tpublic LocalDateTime getDelDtimes() {\n\t\treturn delDtimes;\n\t}\n\n\tpublic void setDelDtimes(LocalDateTime delDtimes) {\n\t\tthis.delDtimes = delDtimes;\n\t}\n\n\tpublic String getUpdBy() {\n\t\treturn updBy;\n\t}\n\n\tpublic void setUpdBy(String updBy) {\n\t\tthis.updBy = updBy;\n\t}\n\n\tpublic LocalDateTime getUpdDtimes() {\n\t\treturn updDtimes;\n\t}\n\n\tpublic void setUpdDtimes(LocalDateTime updDtimes) {\n\t\tthis.updDtimes = updDtimes;\n\t}\n\t\n\t\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/device/authdevice/entity/SecureBiometricInterfaceHistory.java", + "title": "SecureBiometricInterfaceHistory.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/device/authdevice/entity/SecureBiometricInterfaceHistory.java", + "language": "java", + "content": "package io.mosip.pms.device.authdevice.entity;\n\nimport java.time.LocalDateTime;\n\nimport javax.persistence.Column;\nimport javax.persistence.Entity;\nimport javax.persistence.Id;\nimport javax.persistence.Table;\n\n@Entity\n@Table(name=\"secure_biometric_interface_h\")\npublic class SecureBiometricInterfaceHistory {\n\t@Id\n\t@Column(name = \"id\", nullable = false,length = 36)\n\tprivate String id;\n\n\t@Column(name = \"eff_dtimes\", nullable = false)\n\tprivate LocalDateTime effectDateTime;\t\n\t\n\t@Column(name=\"sw_binary_hash\",nullable=false)\n\tprivate byte[] swBinaryHAsh;\n\t\n\t@Column(name = \"sw_version\", nullable = false, length = 64)\n\tprivate String swVersion;\n\t\n\t@Column(name = \"sw_cr_dtimes\")\n\tprivate LocalDateTime swCreateDateTime;\n\n\t@Column(name = \"sw_expiry_dtimes\")\n\tprivate LocalDateTime swExpiryDateTime;\n\t\n\t@Column(name=\"approval_status\",length=36,nullable=false)\n\tprivate String approvalStatus;\n\t\n\t@Column(name=\"is_active\",nullable=false)\n\tprivate boolean isActive;\n\t\n\t@Column(name=\"is_deleted\")\n\tprivate boolean isDeleted;\n\t\n\t@Column(name=\"cr_by\",length=256,nullable=false)\n\tprivate String crBy;\n\n\t@Column(name=\"cr_dtimes\",nullable=false)\n\tprivate LocalDateTime crDtimes;\n\n\t@Column(name=\"del_dtimes\")\n\tprivate LocalDateTime delDtimes;\n\t\n\t@Column(name=\"upd_by\",length=256)\n\tprivate String updBy;\n\n\t@Column(name=\"upd_dtimes\")\n\tprivate LocalDateTime updDtimes;\n\n\t@Column(name = \"provider_id\")\n\tprivate String providerId;\n\t\n\t@Column(name=\"partner_org_name\")\n\tprivate String partnerOrgName;\n\t\n\tpublic String getProviderId() {\n\t\treturn providerId;\n\t}\n\t\n\tpublic void setProviderId(String providerId) {\n\t\tthis.providerId = providerId;\n\t}\n\t\n\tpublic void setPartnerOrgName(String partnerOrgName) {\n\t\tthis.partnerOrgName = partnerOrgName;\n\t}\n\t\n\tpublic String getPartnerOrgName() {\n\t\treturn partnerOrgName;\n\t}\n\n\tpublic String getId() {\n\t\treturn id;\n\t}\n\n\tpublic void setId(String id) {\n\t\tthis.id = id;\n\t}\n\n\tpublic LocalDateTime getEffectDateTime() {\n\t\treturn effectDateTime;\n\t}\n\n\tpublic void setEffectDateTime(LocalDateTime effectDateTime) {\n\t\tthis.effectDateTime = effectDateTime;\n\t}\n\n\tpublic byte[] getSwBinaryHAsh() {\n\t\treturn swBinaryHAsh;\n\t}\n\n\tpublic void setSwBinaryHAsh(byte[] swBinaryHAsh) {\n\t\tthis.swBinaryHAsh = swBinaryHAsh;\n\t}\n\n\tpublic String getSwVersion() {\n\t\treturn swVersion;\n\t}\n\n\tpublic void setSwVersion(String swVersion) {\n\t\tthis.swVersion = swVersion;\n\t}\n\n\tpublic LocalDateTime getSwCreateDateTime() {\n\t\treturn swCreateDateTime;\n\t}\n\n\tpublic void setSwCreateDateTime(LocalDateTime swCreateDateTime) {\n\t\tthis.swCreateDateTime = swCreateDateTime;\n\t}\n\n\tpublic LocalDateTime getSwExpiryDateTime() {\n\t\treturn swExpiryDateTime;\n\t}\n\n\tpublic void setSwExpiryDateTime(LocalDateTime swExpiryDateTime) {\n\t\tthis.swExpiryDateTime = swExpiryDateTime;\n\t}\n\n\tpublic String getApprovalStatus() {\n\t\treturn approvalStatus;\n\t}\n\n\tpublic void setApprovalStatus(String approvalStatus) {\n\t\tthis.approvalStatus = approvalStatus;\n\t}\n\n\tpublic boolean isActive() {\n\t\treturn isActive;\n\t}\n\n\tpublic void setActive(boolean isActive) {\n\t\tthis.isActive = isActive;\n\t}\n\n\tpublic boolean isDeleted() {\n\t\treturn isDeleted;\n\t}\n\n\tpublic void setDeleted(boolean isDeleted) {\n\t\tthis.isDeleted = isDeleted;\n\t}\n\n\tpublic String getCrBy() {\n\t\treturn crBy;\n\t}\n\n\tpublic void setCrBy(String crBy) {\n\t\tthis.crBy = crBy;\n\t}\n\n\tpublic LocalDateTime getCrDtimes() {\n\t\treturn crDtimes;\n\t}\n\n\tpublic void setCrDtimes(LocalDateTime crDtimes) {\n\t\tthis.crDtimes = crDtimes;\n\t}\n\n\tpublic LocalDateTime getDelDtimes() {\n\t\treturn delDtimes;\n\t}\n\n\tpublic void setDelDtimes(LocalDateTime delDtimes) {\n\t\tthis.delDtimes = delDtimes;\n\t}\n\n\tpublic String getUpdBy() {\n\t\treturn updBy;\n\t}\n\n\tpublic void setUpdBy(String updBy) {\n\t\tthis.updBy = updBy;\n\t}\n\n\tpublic LocalDateTime getUpdDtimes() {\n\t\treturn updDtimes;\n\t}\n\n\tpublic void setUpdDtimes(LocalDateTime updDtimes) {\n\t\tthis.updDtimes = updDtimes;\n\t}\n\t\n\t\n}\n\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/device/authdevice/repository/DeviceDetailRepository.java", + "title": "DeviceDetailRepository.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/device/authdevice/repository/DeviceDetailRepository.java", + "language": "java", + "content": "package io.mosip.pms.device.authdevice.repository;\n\nimport java.util.List;\nimport java.util.Optional;\n\nimport org.springframework.data.jpa.repository.JpaRepository;\nimport org.springframework.data.jpa.repository.Query;\nimport org.springframework.data.repository.query.Param;\nimport org.springframework.stereotype.Repository;\n\nimport io.mosip.pms.device.authdevice.entity.DeviceDetail;\n\n@Repository\npublic interface DeviceDetailRepository extends JpaRepository{\n\t\n\t@Query(value =\"select * FROM device_detail where make=?1 AND model=?2 AND dprovider_id=?3 AND dstype_code=?4 AND dtype_code=?5 AND (is_deleted is null OR is_deleted = false) AND is_active = true\",nativeQuery = true)\n\tDeviceDetail findByDeviceDetail( String make, String model, String deviceProviderId, String deviceSubTypeCode,\n\t\t\tString deviceTypeCode);\n\t@Query(\"FROM DeviceDetail d where d.id = ?1 AND (d.isDeleted is null or d.isDeleted = false)\")\n\tDeviceDetail findByIdAndIsDeletedFalseOrIsDeletedIsNull(String id);\n\t\n\t@Query(\"FROM DeviceDetail d where d.id = ?1 AND (d.isDeleted is null or d.isDeleted = false) AND d.isActive=true \")\n\tDeviceDetail findByIdAndIsDeletedFalseOrIsDeletedIsNullAndIsActiveTrue(String id);\n\t\n\t@Query(value =\"select * from device_detail where make=?1 AND model=?2 AND dprovider_id=?3 AND dstype_code=?4 AND dtype_code=?5 AND approval_status != 'rejected' AND NOT (approval_status = 'approved' AND is_active = false)\",nativeQuery = true)\n\tDeviceDetail findUniqueDeviceDetail( String make, String model, String deviceProviderId, String deviceSubTypeCode,\n\t\t\tString deviceTypeCode);\n\t\n\t@Query(value= \"select * from device_detail d where d.id IN :ids AND (d.is_deleted is null or d.is_deleted = false) AND d.is_active=true\",nativeQuery = true)\n\tList findByIds(@Param(\"ids\") List ids);\n\n\t@Query(\"FROM DeviceDetail d where d.id=?1 AND d.deviceProviderId=?2 AND (d.isDeleted is null or d.isDeleted = false)\")\n\tOptional findByIdAndDeviceProviderId(String id, String deviceProviderId);\n\n\t@Query(value= \" select * from device_detail dd join device_detail_sbi dds on dd.id = dds.device_detail_id where dds.sbi_id = ?1 AND dd.approval_status = 'approved' AND dd.is_active = true\",nativeQuery = true)\n\tList findApprovedDevicesBySbiId(String sbiId);\n\n\t@Query(value= \" select * from device_detail dd join device_detail_sbi dds on dd.id = dds.device_detail_id where dds.sbi_id = ?1 AND dd.approval_status = 'pending_approval'\",nativeQuery = true)\n\tList findPendingApprovalDevicesBySbiId(String sbiId);\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/device/authdevice/repository/DeviceDetailSummaryRepository.java", + "title": "DeviceDetailSummaryRepository.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/device/authdevice/repository/DeviceDetailSummaryRepository.java", + "language": "java", + "content": "package io.mosip.pms.device.authdevice.repository;\n\nimport io.mosip.kernel.core.dataaccess.spi.repository.BaseRepository;\nimport io.mosip.pms.device.authdevice.entity.DeviceDetailEntity;\nimport org.springframework.data.domain.Page;\nimport org.springframework.data.domain.Pageable;\nimport org.springframework.data.jpa.repository.Query;\nimport org.springframework.data.repository.query.Param;\nimport org.springframework.stereotype.Repository;\n\n@Repository\npublic interface DeviceDetailSummaryRepository extends BaseRepository {\n\n String DEVICE_DETAILS_SUMMARY_QUERY = \"SELECT new DeviceDetailEntity(\" +\n \"d.id, d.deviceProviderId, d.partnerOrganizationName, d.deviceTypeCode, d.deviceSubTypeCode, \" +\n \"CASE \" +\n \"WHEN (d.approvalStatus = 'approved' AND d.isActive = true) THEN 'approved' \" +\n \"WHEN (d.approvalStatus = 'approved' AND d.isActive = false) THEN 'deactivated' \" +\n \"WHEN (d.approvalStatus = 'pending_approval') THEN 'pending_approval' \" +\n \"WHEN (d.approvalStatus = 'rejected') THEN 'rejected' \" +\n \"END as status, \" +\n \"d.make, d.model, d.crDtimes, s.id, s.swVersion) \" +\n \"FROM DeviceDetail d \" +\n \"LEFT JOIN DeviceDetailSBI dds ON dds.id.deviceDetailId = d.id \" +\n \"LEFT JOIN SecureBiometricInterface s ON dds.id.sbiId = s.id \" +\n \"WHERE (:partnerId IS NULL OR lower(d.deviceProviderId) LIKE %:partnerId%) \" +\n \"AND (:orgName IS NULL OR lower(d.partnerOrganizationName) LIKE %:orgName%) \" +\n \"AND (:deviceType IS NULL OR lower(d.deviceTypeCode) LIKE %:deviceType%) \" +\n \"AND (:deviceSubType IS NULL OR lower(d.deviceSubTypeCode) LIKE %:deviceSubType%) \" +\n \"AND (:status IS NULL OR \" +\n \"(\" +\n \" (:status = 'approved' AND d.approvalStatus = 'approved' AND d.isActive = true) \" +\n \" OR (:status = 'deactivated' AND d.approvalStatus = 'approved' AND d.isActive = false) \" +\n \" OR (:status = 'pending_approval' AND d.approvalStatus = 'pending_approval') \" +\n \" OR (:status = 'rejected' AND d.approvalStatus = 'rejected')\" +\n \")) \" +\n \"AND (:make IS NULL OR lower(d.make) LIKE %:make%) \" +\n \"AND (:model IS NULL OR lower(d.model) LIKE %:model%)\"+\n \"AND (:deviceId IS NULL OR lower(d.id) LIKE %:deviceId%)\"+\n \"AND (:sbiId IS NULL OR lower(s.id) LIKE %:sbiId%) \" +\n \"AND (:sbiVersion IS NULL OR lower(s.swVersion) LIKE %:sbiVersion%)\";\n\n @Query(DEVICE_DETAILS_SUMMARY_QUERY)\n Page getSummaryOfAllDeviceDetails(\n @Param(\"partnerId\") String partnerId,\n @Param(\"orgName\") String orgName,\n @Param(\"deviceType\") String deviceType,\n @Param(\"deviceSubType\") String deviceSubType,\n @Param(\"status\") String status,\n @Param(\"make\") String make,\n @Param(\"model\") String model,\n @Param(\"sbiId\") String sbiId,\n @Param(\"sbiVersion\") String sbiVersion,\n @Param(\"deviceId\") String deviceId,\n Pageable pageable\n );\n\n @Query(DEVICE_DETAILS_SUMMARY_QUERY + \" ORDER BY status ASC\")\n Page getSummaryOfAllDeviceDetailsByStatusAsc(\n @Param(\"partnerId\") String partnerId,\n @Param(\"orgName\") String orgName,\n @Param(\"deviceType\") String deviceType,\n @Param(\"deviceSubType\") String deviceSubType,\n @Param(\"status\") String status,\n @Param(\"make\") String make,\n @Param(\"model\") String model,\n @Param(\"sbiId\") String sbiId,\n @Param(\"sbiVersion\") String sbiVersion,\n @Param(\"deviceId\") String deviceId,\n Pageable pageable\n );\n\n @Query(DEVICE_DETAILS_SUMMARY_QUERY + \" ORDER BY status DESC\")\n Page getSummaryOfAllDeviceDetailsByStatusDesc(\n @Param(\"partnerId\") String partnerId,\n @Param(\"orgName\") String orgName,\n @Param(\"deviceType\") String deviceType,\n @Param(\"deviceSubType\") String deviceSubType,\n @Param(\"status\") String status,\n @Param(\"make\") String make,\n @Param(\"model\") String model,\n @Param(\"sbiId\") String sbiId,\n @Param(\"sbiVersion\") String sbiVersion,\n @Param(\"deviceId\") String deviceId,\n Pageable pageable\n );\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/device/authdevice/repository/FTPChipDetailRepository.java", + "title": "FTPChipDetailRepository.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/device/authdevice/repository/FTPChipDetailRepository.java", + "language": "java", + "content": "package io.mosip.pms.device.authdevice.repository;\n\nimport org.springframework.data.jpa.repository.JpaRepository;\nimport org.springframework.data.jpa.repository.Query;\nimport org.springframework.stereotype.Repository;\n\nimport io.mosip.pms.device.authdevice.entity.FTPChipDetail;\n\nimport java.util.List;\n\n@Repository\npublic interface FTPChipDetailRepository extends JpaRepository{\n\t\n\t@Query(value = \"select * from ftp_chip_detail where foundational_trust_provider_id =?1 AND make =?2 AND model =?3 AND approval_status != 'rejected' AND NOT (approval_status = 'approved' AND is_active = false)\",nativeQuery = true)\n\tFTPChipDetail findByUniqueKey(String ftpId, String make, String model);\n\n\t@Query(value = \"select * from ftp_chip_detail fcd where fcd.foundational_trust_provider_id =?1 AND (fcd.is_deleted is null or fcd.is_deleted = false)\",nativeQuery = true)\n\tList findByProviderId(String providerId);\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/device/authdevice/repository/FtmDetailsSummaryRepository.java", + "title": "FtmDetailsSummaryRepository.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/device/authdevice/repository/FtmDetailsSummaryRepository.java", + "language": "java", + "content": "package io.mosip.pms.device.authdevice.repository;\n\nimport io.mosip.kernel.core.dataaccess.spi.repository.BaseRepository;\nimport io.mosip.pms.device.authdevice.entity.FtmDetailSummaryEntity;\nimport org.springframework.data.domain.Page;\nimport org.springframework.data.domain.Pageable;\nimport org.springframework.data.jpa.repository.Query;\nimport org.springframework.data.repository.query.Param;\nimport org.springframework.stereotype.Repository;\n\n@Repository(\"FtmDetailsSummaryRepository\")\npublic interface FtmDetailsSummaryRepository extends BaseRepository {\n\n String FTM_DETAILS_SUMMARY_QUERY = \"SELECT new FtmDetailSummaryEntity(\" +\n \"f.ftpChipDetailId, f.ftpProviderId, f.partnerOrganizationName, f.make, f.model, \" +\n \"CASE \" +\n \"WHEN f.approvalStatus = 'approved' AND f.isActive = true THEN 'approved' \" +\n \"WHEN f.approvalStatus = 'approved' AND f.isActive = false THEN 'deactivated' \" +\n \"WHEN f.approvalStatus = 'rejected' THEN 'rejected' \" +\n \"WHEN f.approvalStatus = 'pending_approval' THEN 'pending_approval' \" +\n \"WHEN f.approvalStatus = 'pending_cert_upload' THEN 'pending_cert_upload' \" +\n \"END AS status, \" +\n \"f.isActive, CASE WHEN f.certificateAlias IS NULL THEN false ELSE true END, f.crDtimes) \" +\n \"FROM FTPChipDetail f \" +\n \"WHERE (:partnerId IS NULL OR lower(f.ftpProviderId) LIKE %:partnerId%) \" +\n \"AND (:orgName IS NULL OR lower(f.partnerOrganizationName) LIKE %:orgName%) \" +\n \"AND (:ftmId IS NULL OR lower(f.ftpChipDetailId) LIKE %:ftmId%) \" +\n \"AND (:make IS NULL OR lower(f.make) LIKE %:make%) \" +\n \"AND (:model IS NULL OR lower(f.model) LIKE %:model%) \" +\n \"AND (:status IS NULL OR \" +\n \"(:status = 'deactivated' AND f.approvalStatus = 'approved' AND f.isActive = false) \" +\n \"OR (:status = 'approved' AND f.approvalStatus = 'approved' AND f.isActive = true) \" +\n \"OR (:status = 'rejected' AND f.approvalStatus = 'rejected') \" +\n \"OR (:status = 'pending_approval' AND f.approvalStatus = 'pending_approval') \" +\n \"OR (:status = 'pending_cert_upload' AND f.approvalStatus = 'pending_cert_upload'))\";\n\n @Query(FTM_DETAILS_SUMMARY_QUERY)\n Page getSummaryOfPartnersFtmDetails(\n @Param(\"partnerId\") String partnerId,\n @Param(\"orgName\") String orgName,\n @Param(\"ftmId\") String ftmId,\n @Param(\"make\") String make,\n @Param(\"model\") String model,\n @Param(\"status\") String status,\n Pageable pageable\n );\n\n @Query(FTM_DETAILS_SUMMARY_QUERY + \" ORDER BY status ASC\")\n Page getSummaryOfPartnersFtmDetailsByStatusAsc(\n @Param(\"partnerId\") String partnerId,\n @Param(\"orgName\") String orgName,\n @Param(\"ftmId\") String ftmId,\n @Param(\"make\") String make,\n @Param(\"model\") String model,\n @Param(\"status\") String status,\n Pageable pageable\n );\n\n @Query(FTM_DETAILS_SUMMARY_QUERY + \" ORDER BY status DESC\")\n Page getSummaryOfPartnersFtmDetailsByStatusDesc(\n @Param(\"partnerId\") String partnerId,\n @Param(\"orgName\") String orgName,\n @Param(\"ftmId\") String ftmId,\n @Param(\"make\") String make,\n @Param(\"model\") String model,\n @Param(\"status\") String status,\n Pageable pageable\n );\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/device/authdevice/repository/RegistrationDeviceSubTypeRepository.java", + "title": "RegistrationDeviceSubTypeRepository.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/device/authdevice/repository/RegistrationDeviceSubTypeRepository.java", + "language": "java", + "content": "package io.mosip.pms.device.authdevice.repository;\n\nimport org.springframework.data.jpa.repository.JpaRepository;\nimport org.springframework.data.jpa.repository.Query;\nimport org.springframework.stereotype.Repository;\n\nimport io.mosip.pms.device.authdevice.entity.RegistrationDeviceSubType;\n\n@Repository\npublic interface RegistrationDeviceSubTypeRepository extends JpaRepository{\n\t\n\t@Query(value =\"select * FROM reg_device_sub_type where code=?1 AND dtyp_code=?2 AND (is_deleted is null OR is_deleted = false) AND is_active = true\",nativeQuery = true)\n\tRegistrationDeviceSubType findByCodeAndTypeCodeAndIsDeletedFalseorIsDeletedIsNullAndIsActiveTrue(String deviceSubTypeCode,\n\t\t\tString deviceTypeCode);\n\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/device/authdevice/repository/RegistrationDeviceTypeRepository.java", + "title": "RegistrationDeviceTypeRepository.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/device/authdevice/repository/RegistrationDeviceTypeRepository.java", + "language": "java", + "content": "package io.mosip.pms.device.authdevice.repository;\n\nimport org.springframework.data.jpa.repository.JpaRepository;\nimport org.springframework.stereotype.Repository;\n\nimport io.mosip.pms.device.authdevice.entity.RegistrationDeviceType;\n\n@Repository\npublic interface RegistrationDeviceTypeRepository extends JpaRepository{\n\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/device/authdevice/repository/SbiSummaryRepository.java", + "title": "SbiSummaryRepository.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/device/authdevice/repository/SbiSummaryRepository.java", + "language": "java", + "content": "package io.mosip.pms.device.authdevice.repository;\n\nimport io.mosip.kernel.core.dataaccess.spi.repository.BaseRepository;\nimport io.mosip.pms.device.authdevice.entity.SbiSummaryEntity;\nimport org.springframework.data.domain.Page;\nimport org.springframework.data.domain.Pageable;\nimport org.springframework.data.jpa.repository.Query;\nimport org.springframework.data.repository.query.Param;\nimport org.springframework.stereotype.Repository;\n\nimport java.util.List;\n\n@Repository(\"SbiSummaryRepository\")\npublic interface SbiSummaryRepository extends BaseRepository {\n\n String SBI_DETAILS_SUMMARY_QUERY = \"SELECT new SbiSummaryEntity(\" +\n \"s.providerId, s.partnerOrgName, s.id, s.swVersion, \" +\n \"CASE \" +\n \"WHEN s.approvalStatus = 'approved' AND s.isActive = true THEN 'approved' \" +\n \"WHEN s.approvalStatus = 'approved' AND s.isActive = false THEN 'deactivated' \" +\n \"WHEN s.approvalStatus = 'rejected' THEN 'rejected' \" +\n \"WHEN s.approvalStatus = 'pending_approval' THEN 'pending_approval' \" +\n \"END AS status, \" +\n \"s.isActive, s.swCreateDateTime, s.swExpiryDateTime, s.crDtimes, COUNT(dd.id.deviceDetailId) AS countOfAssociatedDevices, \" +\n \"SUM(CASE WHEN d.approvalStatus = 'approved' AND d.isActive = true THEN 1 ELSE 0 END) AS countOfApprovedDevices, \" +\n \"SUM(CASE WHEN d.approvalStatus = 'pending_approval' THEN 1 ELSE 0 END) AS countOfPendingDevices, \" +\n \"CASE \" +\n \"WHEN s.swExpiryDateTime < CURRENT_DATE THEN 'expired' \" +\n \"ELSE 'valid' \" +\n \"END AS sbiExpiryStatus ) \" +\n \"FROM SecureBiometricInterface s \" +\n \"LEFT JOIN DeviceDetailSBI dd ON dd.id.sbiId = s.id \" +\n \"LEFT JOIN DeviceDetail d ON d.id = dd.id.deviceDetailId \" +\n \"WHERE (:partnerId IS NULL OR lower(s.providerId) LIKE %:partnerId%) \" +\n \"AND (:orgName IS NULL OR lower(s.partnerOrgName) LIKE %:orgName%) \" +\n \"AND (:sbiId IS NULL OR lower(s.id) LIKE %:sbiId%) \" +\n \"AND (:sbiVersion IS NULL OR lower(s.swVersion) LIKE %:sbiVersion%) \" +\n \"AND (:status IS NULL OR \" +\n \"(:status = 'deactivated' AND s.approvalStatus = 'approved' AND s.isActive = false) \" +\n \"OR (:status = 'approved' AND s.approvalStatus = 'approved' AND s.isActive = true) \" +\n \"OR (:status = 'rejected' AND s.approvalStatus = 'rejected') \" +\n \"OR (:status = 'pending_approval' AND s.approvalStatus = 'pending_approval')) \" +\n \"AND (:sbiExpiryStatus IS NULL OR \" +\n \"(:sbiExpiryStatus = 'expired' AND s.swExpiryDateTime < CURRENT_DATE) \" +\n \"OR (:sbiExpiryStatus = 'valid' AND s.swExpiryDateTime >= CURRENT_DATE)) \" +\n \"AND (:isPartnerAdmin = true OR (s.providerId IN :partnerIdList)) \" +\n \"GROUP BY s.providerId, s.partnerOrgName, s.id, s.swVersion, s.approvalStatus, \" +\n \"s.isActive, s.swCreateDateTime, s.swExpiryDateTime, s.crDtimes\";\n\n @Query(SBI_DETAILS_SUMMARY_QUERY)\n Page getSummaryOfSbiDetails(\n @Param(\"partnerId\") String partnerId,\n @Param(\"orgName\") String orgName,\n @Param(\"sbiId\") String sbiId,\n @Param(\"sbiVersion\") String sbiVersion,\n @Param(\"status\") String status,\n @Param(\"sbiExpiryStatus\") String sbiExpiryStatus,\n @Param(\"partnerIdList\") List partnerIdList,\n @Param(\"isPartnerAdmin\") boolean isPartnerAdmin,\n Pageable pageable\n );\n\n @Query(SBI_DETAILS_SUMMARY_QUERY + \" ORDER BY status ASC\")\n Page getSummaryOfSbiDetailsByStatusAsc(\n @Param(\"partnerId\") String partnerId,\n @Param(\"orgName\") String orgName,\n @Param(\"sbiId\") String sbiId,\n @Param(\"sbiVersion\") String sbiVersion,\n @Param(\"status\") String status,\n @Param(\"sbiExpiryStatus\") String sbiExpiryStatus,\n @Param(\"partnerIdList\") List partnerIdList,\n @Param(\"isPartnerAdmin\") boolean isPartnerAdmin,\n Pageable pageable\n );\n\n @Query(SBI_DETAILS_SUMMARY_QUERY + \" ORDER BY status DESC\")\n Page getSummaryOfSbiDetailsByStatusDesc(\n @Param(\"partnerId\") String partnerId,\n @Param(\"orgName\") String orgName,\n @Param(\"sbiId\") String sbiId,\n @Param(\"sbiVersion\") String sbiVersion,\n @Param(\"status\") String status,\n @Param(\"sbiExpiryStatus\") String sbiExpiryStatus,\n @Param(\"partnerIdList\") List partnerIdList,\n @Param(\"isPartnerAdmin\") boolean isPartnerAdmin,\n Pageable pageable\n );\n\n @Query(SBI_DETAILS_SUMMARY_QUERY + \" ORDER BY sbiExpiryStatus ASC\")\n Page getSummaryOfSbiDetailsByExpiryStatusAsc(\n @Param(\"partnerId\") String partnerId,\n @Param(\"orgName\") String orgName,\n @Param(\"sbiId\") String sbiId,\n @Param(\"sbiVersion\") String sbiVersion,\n @Param(\"status\") String status,\n @Param(\"sbiExpiryStatus\") String sbiExpiryStatus,\n @Param(\"partnerIdList\") List partnerIdList,\n @Param(\"isPartnerAdmin\") boolean isPartnerAdmin,\n Pageable pageable\n );\n\n @Query(SBI_DETAILS_SUMMARY_QUERY + \" ORDER BY sbiExpiryStatus DESC\")\n Page getSummaryOfSbiDetailsByExpiryStatusDesc(\n @Param(\"partnerId\") String partnerId,\n @Param(\"orgName\") String orgName,\n @Param(\"sbiId\") String sbiId,\n @Param(\"sbiVersion\") String sbiVersion,\n @Param(\"status\") String status,\n @Param(\"sbiExpiryStatus\") String sbiExpiryStatus,\n @Param(\"partnerIdList\") List partnerIdList,\n @Param(\"isPartnerAdmin\") boolean isPartnerAdmin,\n Pageable pageable\n );\n\n @Query(SBI_DETAILS_SUMMARY_QUERY + \" ORDER BY countOfAssociatedDevices ASC\")\n Page getSummaryOfSbiDetailsByDevicesCountAsc(\n @Param(\"partnerId\") String partnerId,\n @Param(\"orgName\") String orgName,\n @Param(\"sbiId\") String sbiId,\n @Param(\"sbiVersion\") String sbiVersion,\n @Param(\"status\") String status,\n @Param(\"sbiExpiryStatus\") String sbiExpiryStatus,\n @Param(\"partnerIdList\") List partnerIdList,\n @Param(\"isPartnerAdmin\") boolean isPartnerAdmin,\n Pageable pageable\n );\n\n @Query(SBI_DETAILS_SUMMARY_QUERY + \" ORDER BY countOfAssociatedDevices DESC\")\n Page getSummaryOfSbiDetailsByDevicesCountDesc(\n @Param(\"partnerId\") String partnerId,\n @Param(\"orgName\") String orgName,\n @Param(\"sbiId\") String sbiId,\n @Param(\"sbiVersion\") String sbiVersion,\n @Param(\"status\") String status,\n @Param(\"sbiExpiryStatus\") String sbiExpiryStatus,\n @Param(\"partnerIdList\") List partnerIdList,\n @Param(\"isPartnerAdmin\") boolean isPartnerAdmin,\n Pageable pageable\n );\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/device/authdevice/repository/SecureBiometricInterfaceHistoryRepository.java", + "title": "SecureBiometricInterfaceHistoryRepository.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/device/authdevice/repository/SecureBiometricInterfaceHistoryRepository.java", + "language": "java", + "content": "package io.mosip.pms.device.authdevice.repository;\n\nimport org.springframework.data.jpa.repository.JpaRepository;\nimport org.springframework.stereotype.Repository;\n\nimport io.mosip.pms.device.authdevice.entity.SecureBiometricInterfaceHistory;\n\n@Repository\npublic interface SecureBiometricInterfaceHistoryRepository extends JpaRepository{\n\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/device/authdevice/repository/SecureBiometricInterfaceRepository.java", + "title": "SecureBiometricInterfaceRepository.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/device/authdevice/repository/SecureBiometricInterfaceRepository.java", + "language": "java", + "content": "package io.mosip.pms.device.authdevice.repository;\n\nimport java.util.List;\n\nimport org.springframework.data.jpa.repository.JpaRepository;\nimport org.springframework.data.jpa.repository.Query;\nimport org.springframework.stereotype.Repository;\n\nimport io.mosip.pms.device.authdevice.entity.SecureBiometricInterface;\n\n@Repository\npublic interface SecureBiometricInterfaceRepository extends JpaRepository{\n\t@Query(value =\"select * from secure_biometric_interface d where d.id = ?1 AND (d.is_deleted is null or d.is_deleted = false)\",nativeQuery = true)\n\tSecureBiometricInterface findByIdAndIsDeletedFalseOrIsDeletedIsNull(String id);\n\t\n\t@Query(value =\"select * from secure_biometric_interface d where d.id = ?1 AND (d.is_deleted is null or d.is_deleted = false) AND d.is_active=true\",nativeQuery = true)\n\tSecureBiometricInterface findByIdAndIsDeletedFalseOrIsDeletedIsNullAndIsActiveTrue(String id);\n\t\n\t@Query(value = \"select * from secure_biometric_interface d where d.provider_id = ?1 AND d.sw_version=?2 AND (d.is_deleted is null or d.is_deleted = false)\", nativeQuery = true)\n\tList findByProviderIdAndSwVersion(String providerId, String swversion);\n\n\t@Query(value = \"select * from secure_biometric_interface d where d.provider_id = ?1 AND (d.is_deleted is null or d.is_deleted = false)\", nativeQuery = true)\n\tList findByProviderId(String providerId);\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/device/authdevice/service/DeviceDetailService.java", + "title": "DeviceDetailService.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/device/authdevice/service/DeviceDetailService.java", + "language": "java", + "content": "package io.mosip.pms.device.authdevice.service;\n\nimport io.mosip.pms.common.dto.PageResponseV2Dto;\nimport io.mosip.pms.common.response.dto.ResponseWrapperV2;\nimport io.mosip.pms.device.dto.DeviceDetailFilterDto;\nimport io.mosip.pms.device.dto.DeviceDetailSummaryDto;\nimport io.mosip.pms.partner.request.dto.SbiAndDeviceMappingRequestDto;\nimport io.mosip.pms.device.response.dto.DeviceDetailResponseDto;\nimport org.springframework.stereotype.Service;\n\nimport io.mosip.pms.common.dto.DeviceFilterValueDto;\nimport io.mosip.pms.common.dto.PageResponseDto;\nimport io.mosip.pms.device.exception.DeviceServiceException;\nimport io.mosip.pms.device.request.dto.DeviceDetailDto;\nimport io.mosip.pms.device.request.dto.DeviceDetailUpdateDto;\nimport io.mosip.pms.device.request.dto.DeviceSearchDto;\nimport io.mosip.pms.device.request.dto.UpdateDeviceDetailStatusDto;\nimport io.mosip.pms.device.request.dto.DeactivateDeviceRequestDto;\nimport io.mosip.pms.device.response.dto.DeviceDetailSearchResponseDto;\nimport io.mosip.pms.device.response.dto.FilterResponseCodeDto;\nimport io.mosip.pms.device.response.dto.IdDto;\nimport io.mosip.pms.device.response.dto.RegistrationSubTypeDto;\n\n@Service\npublic interface DeviceDetailService {\n\t/**\n\t * Function to save Device Details to the Database\n\t * \n\t * @param deviceDetails input from user deviceDetails DTO\n\t * \n\t * @return IdResponseDto Device Details ID which is successfully inserted\n\t * @throws DeviceServiceException if any error occurred while saving device\n\t * Specification\n\t */\n\tpublic IdDto createDeviceDetails(DeviceDetailDto deviceDetails);\n\n\t/**\n\t * Function to update Device Details\n\t * \n\t * @param deviceDetails input from user deviceDetails DTO\n\t * \n\t * @return IdResponseDto Device Details ID which is successfully updated\n\t * @throws DeviceServiceException if any error occurred while updating\n\t * device Specification\n\t */\n\n\tpublic IdDto updateDeviceDetails(DeviceDetailUpdateDto deviceDetails);\n\t\n\t/**\n\t * Function to approve/reject device details\n\t * \n\t * @param deviceDetails\n\t * @return \n\t */\n\tpublic String updateDeviceDetailStatus(UpdateDeviceDetailStatusDto deviceDetails);\t\n\n\t/**\n\t * \n\t * @param \n\t * @param entity\n\t * @param dto\n\t * @return\n\t */\n\tpublic PageResponseDto searchDeviceDetails(Class entity, DeviceSearchDto dto);\n\t\n\t/**\n\t * \n\t * @param \n\t * @param entity\n\t * @param dto\n\t * @return\n\t */\n\tpublic PageResponseDto searchDeviceType(Class entity, DeviceSearchDto dto);\n\t\n\t/**\n\t * \n\t * @param deviceFilterValueDto\n\t * @return\n\t */\n\tpublic FilterResponseCodeDto deviceFilterValues(DeviceFilterValueDto deviceFilterValueDto);\n\t\n\t/**\n\t * \n\t * @param deviceFilterValueDto\n\t * @return\n\t */\n\tpublic FilterResponseCodeDto deviceSubTypeFilterValues(DeviceFilterValueDto deviceFilterValueDto);\n\t\n\t/**\n\t * \n\t * @param deviceFilterValueDto\n\t * @return\n\t */\n\tpublic FilterResponseCodeDto deviceTypeFilterValues(DeviceFilterValueDto deviceFilterValueDto);\n\n\tpublic ResponseWrapperV2 deactivateDevice(String deviceDetailId, DeactivateDeviceRequestDto requestDto);\n\n ResponseWrapperV2> getAllDeviceDetails(String sortFieldName, String sortType, Integer pageNo, Integer pageSize, DeviceDetailFilterDto filterDto);\n\n\tpublic ResponseWrapperV2 approveOrRejectMappingDeviceToSbi(String deviceId, SbiAndDeviceMappingRequestDto requestDto);\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/device/authdevice/service/FtpChipDetailService.java", + "title": "FtpChipDetailService.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/device/authdevice/service/FtpChipDetailService.java", + "language": "java", + "content": "package io.mosip.pms.device.authdevice.service;\n\nimport java.io.IOException;\nimport java.util.List;\n\nimport io.mosip.pms.common.dto.PageResponseV2Dto;\nimport io.mosip.pms.common.response.dto.ResponseWrapperV2;\nimport io.mosip.pms.device.dto.FtmChipDetailsDto;\nimport io.mosip.pms.device.dto.FtmChipFilterDto;\nimport io.mosip.pms.device.response.dto.*;\nimport io.mosip.pms.partner.response.dto.FtmCertificateDownloadResponseDto;\nimport org.springframework.stereotype.Service;\n\nimport com.fasterxml.jackson.core.JsonParseException;\nimport com.fasterxml.jackson.core.JsonProcessingException;\nimport com.fasterxml.jackson.databind.JsonMappingException;\n\nimport io.mosip.pms.common.dto.PageResponseDto;\nimport io.mosip.pms.device.authdevice.entity.FTPChipDetail;\nimport io.mosip.pms.device.request.dto.DeviceSearchDto;\nimport io.mosip.pms.device.request.dto.DeactivateFtmRequestDto;\nimport io.mosip.pms.device.request.dto.FtpChipCertDownloadRequestDto;\nimport io.mosip.pms.device.request.dto.FtpChipCertificateRequestDto;\nimport io.mosip.pms.device.request.dto.FtpChipDetailDto;\nimport io.mosip.pms.device.request.dto.FtpChipDetailStatusDto;\nimport io.mosip.pms.device.request.dto.FtpChipDetailUpdateDto;\n\n@Service\npublic interface FtpChipDetailService {\t\n\t\n\t/**\n\t * \n\t * @param ftpChipId\n\t * @return\n\t */\n\tpublic FTPChipDetail getFtpChipDeatils(String ftpChipId);\n\t\n\t/**\n\t * Inserts the chip make and model into database\n\t * @param chipDetails\n\t * @return\n\t */\n\tpublic IdDto createFtpChipDetails(FtpChipDetailDto chipDetails);\n\n\t/**\n\t * Updated the chip make & mode details\n\t * @param chipDetails\n\t * @return\n\t */\n\tpublic IdDto updateFtpChipDetails(FtpChipDetailUpdateDto chipDetails);\n\t\n\t/**\n\t * Changes the chip status\n\t * @param chipDetails\n\t * @return\n\t */\n\tpublic String updateFtpChipDetailStatus(FtpChipDetailStatusDto chipDetails);\n\t\n\t/**\n * Function to Upload Partner certificates\n * \n * @param FtpChipCertificateRequestDto partnerCertResponseDto\n * @return {@link FtpCertificateResponseDto} instance\n * @throws IOException \n * @throws JsonProcessingException \n * @throws JsonMappingException \n * @throws JsonParseException \n */\n public FtpCertificateResponseDto uploadCertificate(FtpChipCertificateRequestDto ftpChipCertRequestDto) throws JsonParseException, JsonMappingException, JsonProcessingException, IOException;\n\n /**\n * Function to Download Partner certificates\n * \n * @param FtpChipCertDownloadRequestDto certDownloadRequestDto\n * @return {@link FtpCertDownloadResponeDto} instance\n * @throws IOException \n * @throws JsonProcessingException \n * @throws JsonMappingException \n * @throws JsonParseException \n */\n public FtpCertDownloadResponeDto getCertificate(FtpChipCertDownloadRequestDto certDownloadRequestDto) throws JsonParseException, JsonMappingException, JsonProcessingException, IOException;\n \n /**\n * \n * @param \n * @param entity\n * @param dto\n * @return\n */\n public PageResponseDto searchFTPChipDetails(Class entity, DeviceSearchDto dto);\n\n\tpublic ResponseWrapperV2 deactivateFtm(String ftmId, DeactivateFtmRequestDto requestDto);\n\n\tpublic ResponseWrapperV2 getFtmCertificateData(String ftmId);\n\n\tpublic ResponseWrapperV2> getPartnersFtmChipDetails(String sortFieldName, String sortType, Integer pageNo, Integer pageSize, FtmChipFilterDto filterDto);\n\n\tpublic ResponseWrapperV2> ftmChipDetail();\n\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/device/authdevice/service/SecureBiometricInterfaceService.java", + "title": "SecureBiometricInterfaceService.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/device/authdevice/service/SecureBiometricInterfaceService.java", + "language": "java", + "content": "package io.mosip.pms.device.authdevice.service;\n\nimport io.mosip.pms.common.dto.PageResponseV2Dto;\nimport io.mosip.pms.common.response.dto.ResponseWrapperV2;\nimport io.mosip.pms.partner.dto.DeviceDto;\nimport io.mosip.pms.device.response.dto.SbiDetailsResponseDto;\nimport io.mosip.pms.device.response.dto.SbiSummaryDto;\nimport io.mosip.pms.device.dto.SbiFilterDto;\n\nimport io.mosip.pms.device.dto.SbiDetailsDto;\nimport org.springframework.stereotype.Service;\n\nimport io.mosip.pms.common.dto.FilterValueDto;\nimport io.mosip.pms.common.dto.PageResponseDto;\nimport io.mosip.pms.device.request.dto.DeviceDetailSBIMappingDto;\nimport io.mosip.pms.device.request.dto.DeviceSearchDto;\nimport io.mosip.pms.device.request.dto.DeactivateSbiRequestDto;\nimport io.mosip.pms.device.request.dto.SecureBiometricInterfaceCreateDto;\nimport io.mosip.pms.device.request.dto.SecureBiometricInterfaceStatusUpdateDto;\nimport io.mosip.pms.device.request.dto.SecureBiometricInterfaceUpdateDto;\nimport io.mosip.pms.device.request.dto.DeviceDetailDto;\nimport io.mosip.pms.device.response.dto.FilterResponseCodeDto;\nimport io.mosip.pms.device.response.dto.IdDto;\nimport io.mosip.pms.device.response.dto.MappedDeviceDetailsReponse;\nimport io.mosip.pms.device.response.dto.SbiSearchResponseDto;\n\nimport java.util.List;\n\n@Service\npublic interface SecureBiometricInterfaceService {\n\t\n\tpublic IdDto createSecureBiometricInterface(SecureBiometricInterfaceCreateDto SecureBiometricInterfaceDto);\n\t\n\tpublic IdDto updateSecureBiometricInterface(SecureBiometricInterfaceUpdateDto SecureBiometricInterfaceDto);\n\t\n\tpublic String updateSecureBiometricInterfaceStatus(SecureBiometricInterfaceStatusUpdateDto secureBiometricInterfaceDto);\t\n\n\tpublic PageResponseDto searchSecureBiometricInterface(Class entity, DeviceSearchDto dto);\n\t\n\tpublic String mapDeviceDetailAndSbi(DeviceDetailSBIMappingDto input);\n\t\n\tpublic String deleteDeviceDetailAndSbiMapping(DeviceDetailSBIMappingDto input);\n\t\n\tpublic PageResponseDto searchMappedDeviceDetails(Class entity, DeviceSearchDto dto);\n\t\n\tpublic FilterResponseCodeDto filterValues(FilterValueDto filterValueDto);\n\n\tpublic ResponseWrapperV2 addDeviceToSbi(DeviceDetailDto deviceDetailDto, String sbiId);\n\n\tpublic ResponseWrapperV2> getAllDevicesForSbi(String sbiId);\n\n\tpublic ResponseWrapperV2 deactivateSbi(String id, DeactivateSbiRequestDto deactivateSbiRequestDto);\n\n\tpublic ResponseWrapperV2> getAllSbiDetails(String sortFieldName, String sortType, Integer pageNo, Integer pageSize, SbiFilterDto filterDto);\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/device/constant/DeviceConstant.java", + "title": "DeviceConstant.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/device/constant/DeviceConstant.java", + "language": "java", + "content": "package io.mosip.pms.device.constant;\n\npublic class DeviceConstant {\n\t\n\tprivate DeviceConstant() {\n\t\t\n\t}\n\n\tpublic static final Double METERTOMILECONVERSION = 0.000621371;\n\tpublic static final String DATETIMEFORMAT = \" format should be yyyy-mm-ddThh:mm:ss format\";\n\tpublic static final String VALID = \"Valid\";\n\tpublic static final String INVALID = \"Invalid\";\n\tpublic static final String CENTERTYPENAME = \"centertypename\";\n\tpublic static final String CENTERTYPECODE = \"centerTypeCode\";\n\tpublic static final String CENTERLOCCODE = \"locationCode\";\n\tpublic static final String NAME = \"name\";\n\tpublic static final String POSTAL_CODE = \"postalCode\";\n\tpublic static final String CITY = \"city\";\n\tpublic static final String PROVINCE = \"province\";\n\tpublic static final String REGION = \"region\";\n\tpublic static final String ADMINISTRATIVE_ZONE = \"administrativeZone\";\n\tpublic static final String HIERARCHY_NAME = \"hierarchyName\";\n\tpublic static final String ZONE = \"zone\";\n\tpublic static final String ZONE_CODE = \"zoneCode\";\n\tpublic static final String HIERARCHY_LEVEL = \"hierarchyLevel\";\n\tpublic static final String MAPPED_SUCCESSFULLY = \"mapped\";\n\tpublic static final String DOC_CATEGORY_AND_DOC_TYPE_MAPPING_SUCCESS_MESSAGE = \"Document Category %s - Document Type Mapping %s is added successfully\";\n\tpublic static final String UNMAPPED_SUCCESSFULLY = \"un-mapped\";\n\tpublic static final String DOC_CATEGORY_AND_DOC_TYPE_UNMAPPING_SUCCESS_MESSAGE = \"Document Category %s - Document Type Mapping %s is updated successfully\";\n\tpublic static final String DEVICE_AND_REGISTRATION_CENTER_UNMAPPING_SUCCESS_MESSAGE = \"Device %s is successfully Un-Mapped to the Registration Center %s \";\n\tpublic static final String USER_AND_REGISTRATION_CENTER_UNMAPPING_SUCCESS_MESSAGE = \"User %s is successfully Un-Mapped to the Registration Center %s\";\n\tpublic static final String USER_AND_REGISTRATION_CENTER_MAPPING_SUCCESS_MESSAGE = \"User %s is successfully mapped to the Registration Center %s\";\n\tpublic static final String SUCCESS = \"Success\";\n\tpublic static final String IS_ACTIVE = \"isActive\";\n\tpublic static final String DEVICE_REGISTER_UPDATE_MESSAGE = \"Device status updated successfully\";\n\tpublic static final String INVALID_REG_CENTER_TYPE = \"Invalid centerTypeCode\";\n\tpublic static final String INVALID_LOCATION_CODE = \"Invalid Location Code\";\n\tpublic static final String ERROR_OCCURED_REGISTERED_DEVICE = \"Regsitered device table\";\n\tpublic static final String ERROR_OCCURED_DEVICE_PROVIDER = \"Device provider table\";\n\tpublic static final String ERROR_OCCURED_MOSIP_DEVICE_SERVICE = \"MDS table\";\n\tpublic static final String ERROR_OCCURED_REGISTERED_DEVICE_HISTORY = \"Regsitered device table\";\n\tpublic static final String ERROR_OCCURED_DEVICE_PROVIDER_HISTORY = \"Device provider table\";\n\tpublic static final String ERROR_OCCURED_MOSIP_DEVICE_SERVICE_HISTORY = \"MDS table\";\n\n\tpublic static final String SEARCH_API_IS_CALLED = \"Search API called::\";\n\tpublic static final String SUCCESSFUL_SEARCH = \" %s Search Success\";\n\tpublic static final String SUCCESSFUL_SEARCH_DESC = \" System successfully searched List of %s\";\n\tpublic static final String SEARCH_FAILED = \"%s - Search Failure\";\n\tpublic static final String FILTER_API_IS_CALLED = \"Filter API called::\";\n\tpublic static final String SUCCESSFUL_FILTER = \" %s - Filter Success\";\n\tpublic static final String SUCCESSFUL_FILTER_DESC = \" System successfully searched filter values for %s\";\n\tpublic static final String FILTER_FAILED = \"%s - Filter Failure\";\n\tpublic static final String CREATE_API_IS_CALLED = \"Create API called::\";\n\tpublic static final String SUCCESSFUL_CREATE = \"Create %s - Success\";\n\tpublic static final String SUCCESSFUL_CREATE_DESC = \"System successfully created a %s\";\n\tpublic static final String SUCCESSFUL_UPDATE_DESC = \"System successfully updated a %s\";\n\tpublic static final String FAILURE_CREATE = \"Create %s - Failure\";\n\tpublic static final String UPDATE_API_IS_CALLED = \"Update API called::\";\n\tpublic static final String SUCCESSFUL_UPDATE = \"Update %s - Success\";\n\tpublic static final String FAILURE_UPDATE = \"Update %s - Failure\";\n\tpublic static final String DECOMMISION_API_CALLED = \"%s Decommission API called\";\n\tpublic static final String DECOMMISSION_SUCCESS = \"Decommission %s - Success\";\n\tpublic static final String DECOMMISSION_FAILURE = \"Decommission %s - Failure\";\n\tpublic static final String DECOMMISSION_SUCCESS_DESC = \"System successfully decommissioned a %s\";\n\tpublic static final String FAILURE_DECOMMISSION = \"Decommission %s - Failure\";\n\tpublic static final String FAILURE_DESC = \"%s_%s\";\n\tpublic static final String CREATE_ERROR_AUDIT = \"Create Error %s \";\n\tpublic static final String GET_ALL = \"GET ALL %s \";\n\tpublic static final String GET_ALL_SUCCESS = \"GET ALL Success %s \";\n\tpublic static final String GET_ALL_SUCCESS_DESC = \"System successfully get all %s \";\n\tpublic static final String GET_LANG = \" get all %s \";\n\tpublic static final String GET_LANG_SUCCESS = \"Get lang success %s \";\n\tpublic static final String GET_LANG_SUCCESS_DESC = \"System successfully get lang %s \";\n\tpublic static final String DEVICE_VALIDATION_API_CALLED = \"Device validation API called::\";\n\tpublic static final String DEVICE_VALIDATION_SUCCESS = \"Device Validation - Success\";\n\tpublic static final String DEVICE_VALIDATION_SUCCESS_DESC = \"System successfully validated the Device Details %s\";\n\tpublic static final String DEVICE_VALIDATION_FAILURE = \"Device Validation - Failure\";\n\tpublic static final String DEVICE_VALIDATION_HISTORY_API_CALLED = \"Device validation history API called\";\n\tpublic static final String DEVICE_VALIDATION_HISTORY_SUCCESS = \"Device history validation - Success\";\n\tpublic static final String DEVICE_VALIDATION_HISTORY_SUCCESS_DESC = \"System successfully validated the Device history Details %s\";\n\tpublic static final String DEVICE_VALIDATION_HISTORY_FAILURE = \"Device history validation - Failure\";\n\tpublic static final String MAP_API_IS_CALLED = \"Map API called::\";\n\tpublic static final String UNMAP_API_IS_CALLED = \"Un-Map API called::\";\n\tpublic static final String SUCCESSFUL_MAP = \"MAP %s - Success\";\n\tpublic static final String SUCCESSFUL_UNMAP = \"UNMAP %s - Success\";\n\tpublic static final String FAILURE_MAP = \"MAP %s - Failure\";\n\tpublic static final String FAILURE_UNMAP = \"UNMAP %s - Failure\";\n\tpublic static final String MODEL = \"model\";\n\tpublic static final String MAKE = \"make\";\n\tpublic static final String DP_ID = \"dpId\";\n\tpublic static final String DP = \"dp\";\n\tpublic static final String SERIAL_NO = \"serialNo\";\n\tpublic static final String TYPE = \"type\";\n\tpublic static final String SUBTYPE = \"subType\";\n\n\tpublic static final String AUDIT_SYSTEM = \"SYSTEM\";\n\t\n\tpublic static final String PENDING_APPROVAL=\"Pending_Approval\";\n\tpublic static final String APPROVE = \"Activate\";\n\tpublic static final String REJECT=\"De-activate\";\n//\tpublic static final String APPROVED = \"Activated\";\n//\tpublic static final String REJECTED=\"De-activated\";\n\n\tpublic static final String STATUS_UPDATE_FAILURE = \"Status Update %s - Failure\";\n\tpublic static final String STATUS_UPDATE_API_IS_CALLED = \"Status update API called::\";\n\tpublic static final String CERTIFICATE_UPLOAD_API_IS_CALLED = \"Certificate upload API called::\";\n\tpublic static final String GET_CERTIFICATE_API_IS_CALLED = \"GET Certificate API called::\";\n\tpublic static final String SUCCESSFUL_UPLOAD=\"Upload %s - Success\";\n\tpublic static final String SUCCESSFUL_DOWNLOAD=\"Download %s - Success\";\n\tpublic static final String APPROVED = \"approved\";\n\tpublic static final String REJECTED = \"rejected\";\n\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/device/constant/DeviceErrorMessages.java", + "title": "DeviceErrorMessages.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/device/constant/DeviceErrorMessages.java", + "language": "java", + "content": "package io.mosip.pms.device.constant;\n\npublic enum DeviceErrorMessages {\n\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/device/constant/FoundationalTrustProviderErrorMessages.java", + "title": "FoundationalTrustProviderErrorMessages.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/device/constant/FoundationalTrustProviderErrorMessages.java", + "language": "java", + "content": "package io.mosip.pms.device.constant;\n\npublic enum FoundationalTrustProviderErrorMessages {\n\tFTP_PROVIDER_NOT_EXISTS(\"PMP_AUT_030\",\"The FTP provider is either inactive or does not exist.\"),\n\tFTP_CHIP_ID_NOT_EXISTS(\"PMP_AUT_031\",\"ftp chip id not exists.\"),\n\tFTP_PROVIDER_MAKE_MODEL_EXISTS(\"PMP_AUT_032\",\"FTM Chip details already exists for the same make and model\"),\n\tFTP_CERT_NOT_UPLOADED(\"PMP_AUT_033\",\"Certificate is not uploaded.\"),\n\tFTP_CHIP_ID_PROVIDER_ID_NOT_MATCHED(\"PMP_AUT_034\",\"Ftp chip detail id and ftp provider id not mappped. \"),\n\tFTP_PROVIDER_DETAILS_EXISTS(\"PMP_AUT_037\",\"Given ftp chip details already registered.\"),\n\tINVALID_FTP_CHIP_STATUS(\"PMP_AUT_038\",\"The certificate can only be uploaded for FTM that is either pending certificate upload or has an approved status.\"),\n\tFTP_CHIP_DEACTIVATED(\"PMP_AUT_039\",\"FTM chip is deactivated.\"),\n\tFTP_CHIP_DETAIL_ID_GENERATION_FAILURE(\"PMP_AUT_040\",\"Failed to generate a unique FTP Chip Detail ID\");\n\t\n\tprivate final String errorCode;\n\tprivate final String errorMessage;\n\n\tprivate FoundationalTrustProviderErrorMessages(final String errorCode, final String errorMessage) {\n\t\tthis.errorCode = errorCode;\n\t\tthis.errorMessage = errorMessage;\n\t}\n\n\tpublic String getErrorCode() {\n\t\treturn errorCode;\n\t}\n\n\tpublic String getErrorMessage() {\n\t\treturn errorMessage;\n\t}\n\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/device/constant/SecureBiometricInterfaceConstant.java", + "title": "SecureBiometricInterfaceConstant.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/device/constant/SecureBiometricInterfaceConstant.java", + "language": "java", + "content": "package io.mosip.pms.device.constant;\n\npublic enum SecureBiometricInterfaceConstant {\n\t \n\tDEVICE_DETAIL_INVALID(\"PMS_AUT_006\",\"Invalid device detail\"),\n\tSBI_NOT_FOUND(\"PMS_AUT_007\",\"Secure Biometric Interface not found for the id %s\"),\n\tSBI_STATUS_CODE(\"PMS_AUT_026\",\"ApprovalStatus should be Activate / De-activate\"),\n\tDIFFERENT_DEVICE_PROVIDERS(\"PMS_AUT_506\",\"Provide device details of same provider.\"),\n\tSWCREATEDDATE_SHOULD_BE_LESSTHAN_EXPIRYDATE(\"PMS_AUT_507\",\"ExpiryDate should be greaterthan createdDate\"),\n\tEXPIRYDATE_SHOULD_BE_GREATERTHAN_TODAYSDATE(\"PMS_AUT_508\",\"ExpiryDate should be greaterthan/equal Today.\"),\n\tDD_SBI_PROVIDER_NOT_MATCHING(\"PMS_AUT_509\",\"Device Details and SBI do not belongs to same provider.\"),\n\tDD_SBI_MAPPING_NOT_EXISTS(\"PMS_AUT_510\",\"Mapping not exists for given data.\"),\n\tSBI_NOT_APPROVED(\"PMS_AUT_511\",\"SBI for which device is being mapped is not approved\"),\n\tSBI_RECORDS_EXISTS(\"PMS_AUT_512\",\"SBI details exists for given SBI Version. Multiple SBI with same SBI Version cannot be added.\"),\n\tSBI_EXPIRED(\"PMS_AUT_513\", \"SBI for which device is being mapped is expired\"),\n\tSWCREATEDDATE_SHOULD_BE_PAST_OR_TODAY(\"PMS_AUT_514\",\"The created date should be less than or equal to the current date.\"),\n\tEXPIRYDATE_SHOULD_NOT_BE_GREATER_THAN_TEN_YEARS(\"PMS_AUT_515\", \"Expiry date should not be greater than %s years from today\"),\n\tCREATEDDATE_SHOULD_NOT_BE_LESS_THAN_TEN_YEARS(\"PMS_AUT_516\", \"Created date should not be less than %s years from today\"),\n\tSBI_ALREADY_APPROVED(\"PMS_AUT_517\", \"The selected SBI has been already approved\"),\n\tSBI_ALREADY_REJECTED(\"PMS_AUT_518\", \"The selected SBI has been already rejected\");\n\t\n\t/**\n\t * The error code.\n\t */\n\tprivate String errorCode;\n\n\t/**\n\t * The error message.\n\t */\n\tprivate String errorMessage;\n\n\t/**\n\t * Constructor for partnerIdExceptionConstant.\n\t * \n\t * @param errorCode\n\t * the errorCode.\n\t * @param errorMessage\n\t * the errorMessage.\n\t */\n\tSecureBiometricInterfaceConstant(String errorCode, String errorMessage) {\n\t\tthis.errorCode = errorCode;\n\t\tthis.errorMessage = errorMessage;\n\t}\n\n\t/**\n\t * Getter for error code.\n\t * \n\t * @return the error code.\n\t */\n\tpublic String getErrorCode() {\n\t\treturn errorCode;\n\t}\n\n\t/**\n\t * Getter for error message.\n\t * \n\t * @return the error message.\n\t */\n\tpublic String getErrorMessage() {\n\t\treturn errorMessage;\n\t}\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/device/dto/DeRegisterDeviceReqDto.java", + "title": "DeRegisterDeviceReqDto.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/device/dto/DeRegisterDeviceReqDto.java", + "language": "java", + "content": "package io.mosip.pms.device.dto;\n\nimport javax.validation.constraints.NotNull;\nimport javax.validation.constraints.Size;\n\nimport lombok.Data;\n@Data\npublic class DeRegisterDeviceReqDto {\n\t@NotNull\n\t@Size(min=1,max=36)\n\tprivate String deviceCode;\n\t@NotNull\n\tprivate String env;\n\tpublic String getDeviceCode() {\n\t\treturn deviceCode;\n\t}\n\tpublic void setDeviceCode(String deviceCode) {\n\t\tthis.deviceCode = deviceCode;\n\t}\n\tpublic String getEnv() {\n\t\treturn env;\n\t}\n\tpublic void setEnv(String env) {\n\t\tthis.env = env;\n\t}\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/device/dto/DeviceData.java", + "title": "DeviceData.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/device/dto/DeviceData.java", + "language": "java", + "content": "package io.mosip.pms.device.dto;\n\nimport javax.validation.constraints.NotNull;\nimport javax.validation.constraints.Size;\n\nimport io.mosip.pms.device.validator.ValidFoundational;\nimport io.mosip.pms.device.validator.ValidPurpose;\nimport lombok.Data;\n\n@Data\n@ValidFoundational(baseField = \"certificationLevel\", matchField = { \"foundationalTrustProviderId\" })\npublic class DeviceData {\n\n\t\n\t@Size(min = 1, max = 36)\n\tprivate String deviceId;\n\n\t@ValidPurpose(message = \"Invalid Purpose received\")\n\tprivate String purpose;\n\t\n\t@NotNull\n\tprivate String deviceInfo;\t\n\t\n\tprivate String foundationalTrustProviderId;\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/device/dto/DeviceDetailFilterDto.java", + "title": "DeviceDetailFilterDto.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/device/dto/DeviceDetailFilterDto.java", + "language": "java", + "content": "package io.mosip.pms.device.dto;\n\nimport lombok.Data;\n\n@Data\npublic class DeviceDetailFilterDto {\n private String deviceId;\n private String partnerId;\n private String orgName;\n private String deviceType;\n private String deviceSubType;\n private String status;\n private String make;\n private String model;\n private String sbiId;\n private String sbiVersion;\n\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/device/dto/DeviceDetailSummaryDto.java", + "title": "DeviceDetailSummaryDto.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/device/dto/DeviceDetailSummaryDto.java", + "language": "java", + "content": "package io.mosip.pms.device.dto;\n\nimport io.swagger.v3.oas.annotations.media.Schema;\nimport lombok.Data;\n\nimport java.time.LocalDateTime;\n\n@Data\npublic class DeviceDetailSummaryDto {\n\n @Schema(description = \"Unique identifier for the device\", example = \"device12\")\n private String deviceId;\n\n @Schema(description = \"Unique identifier for the partner\", example = \"partner123\")\n private String partnerId;\n\n @Schema(description = \"Name of the partner organization\", example = \"Organization ABC\")\n private String orgName;\n\n @Schema(description = \"Type of the device (e.g., FACE, FINGER, IRIS)\", example = \"FINGER\")\n private String deviceType;\n\n @Schema(description = \"Subtype of the device (e.g., single, double)\", example = \"single\")\n private String deviceSubType;\n\n @Schema(description = \"Status of the device (e.g., approved, rejected, pending_approval, deactivated)\", allowableValues = {\"approved\", \"rejected\", \"pending_approval\", \"deactivated\"}, example = \"approved\")\n private String status;\n\n @Schema(description = \"Make of the device\", example = \"Make123\")\n private String make;\n\n @Schema(description = \"Model of the device\", example = \"Model02\")\n private String model;\n\n @Schema(description = \"Date and time when the record was created\", example = \"2024-08-01T14:30:00Z\")\n private LocalDateTime createdDateTime;\n\n @Schema(description = \"Unique identifier for the Secure Biometric Interface (SBI) associated with the device.\", example = \"sbi12\")\n private String sbiId;\n\n @Schema(description = \"Software version of the Secure Biometric Interface (SBI).\", example = \"sw12\")\n private String sbiVersion;\n\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/device/dto/DeviceInfo.java", + "title": "DeviceInfo.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/device/dto/DeviceInfo.java", + "language": "java", + "content": "package io.mosip.pms.device.dto;\n\nimport java.time.LocalDateTime;\nimport java.util.List;\n\nimport javax.validation.constraints.NotNull;\nimport javax.validation.constraints.Size;\n\nimport com.fasterxml.jackson.annotation.JsonFormat;\n\nimport io.mosip.pms.device.validator.ValidCertificateLevel;\nimport lombok.Data;\n\n@Data\npublic class DeviceInfo {\n\n\tprivate List deviceSubId;\n\n\t@ValidCertificateLevel(message = \"Invalid Certification level received\")\n\tprivate String certification;\n\n\tprivate String digitalId;\n\n\t@NotNull\n\t@Size(min = 1, max = 128)\n\tprivate String firmware;\n\n\t@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = \"yyyy-MM-dd'T'HH:mm:ss.SSS'Z'\")\n\tprivate LocalDateTime deviceExpiry;\n\n\t@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = \"yyyy-MM-dd'T'HH:mm:ss.SSS'Z'\")\n\tprivate LocalDateTime timestamp;\n\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/device/dto/DeviceResponse.java", + "title": "DeviceResponse.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/device/dto/DeviceResponse.java", + "language": "java", + "content": "package io.mosip.pms.device.dto;\n\nimport lombok.Data;\n\n@Data\npublic class DeviceResponse {\n\n\tprivate String response;\n}\n\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/device/dto/DigitalId.java", + "title": "DigitalId.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/device/dto/DigitalId.java", + "language": "java", + "content": "package io.mosip.pms.device.dto;\n\nimport java.time.LocalDateTime;\n\nimport javax.validation.constraints.NotBlank;\nimport javax.validation.constraints.Size;\n\nimport com.fasterxml.jackson.annotation.JsonFormat;\n\nimport io.swagger.annotations.ApiModelProperty;\nimport lombok.Data;\n\n@Data\npublic class DigitalId {\n\n\t/** The serial no. */\n\t@NotBlank\n\t@Size(min = 1, max = 64)\n\t@ApiModelProperty(value = \"serialNumber\", required = true, dataType = \"java.lang.String\")\n\tprivate String serialNo;\n\n\t/** The Device Provider Name. */\n\t@NotBlank\n\t@Size(min = 1, max = 128)\n\t@ApiModelProperty(value = \"providerName\", required = true, dataType = \"java.lang.String\")\n\tprivate String deviceProvider;\n\n\t/** The Device Provider id. */\n\t@NotBlank\n\t@Size(min = 1, max = 36)\n\t@ApiModelProperty(value = \"providerId\", required = true, dataType = \"java.lang.String\")\n\tprivate String deviceProviderId;\n\n\t/** The make. */\n\t@NotBlank\n\t@Size(min = 1, max = 36)\n\t@ApiModelProperty(value = \"make\", required = true, dataType = \"java.lang.String\")\n\tprivate String make;\n\n\t/** The model. */\n\t@NotBlank\n\t@Size(min = 1, max = 36)\n\t@ApiModelProperty(value = \"model\", required = true, dataType = \"java.lang.String\")\n\tprivate String model;\n\n\t@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = \"yyyy-MM-dd'T'HH:mm:ss.SSS'Z'\")\n\tprivate LocalDateTime dateTime;\n\n\t/**\n\t * Field for deviceTypeCode\n\t */\n\t@NotBlank\n\t@Size(min = 1, max = 36)\n\t@ApiModelProperty(value = \"type\", required = true, dataType = \"java.lang.String\")\n\tprivate String type;\n\n\t/**\n\t * Field for deviceSubTypeCode\n\t */\n\t@NotBlank\n\t@Size(min = 1, max = 36)\n\t@ApiModelProperty(value = \"deviceSubType\", required = true, dataType = \"java.lang.String\")\n\tprivate String deviceSubType;\n\n}\n\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/device/dto/FtmChipDetailsDto.java", + "title": "FtmChipDetailsDto.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/device/dto/FtmChipDetailsDto.java", + "language": "java", + "content": "package io.mosip.pms.device.dto;\n\nimport io.swagger.v3.oas.annotations.media.Schema;\nimport lombok.Data;\n\nimport java.time.LocalDateTime;\nimport java.util.Date;\n\n@Data\npublic class FtmChipDetailsDto {\n\n @Schema(description = \"Unique identifier for the FTM Chip details added by the partner\", example = \"ftp-001\")\n private String ftmId;\n\n @Schema(description = \"Unique identifier for the partner\", example = \"partner123\")\n private String partnerId;\n\n @Schema(description = \"Current status of the partner. Possible values are approved, deactivated and InProgress\", example = \"approved\")\n private String partnerStatus;\n\n @Schema(description = \"Make of the FTM chip\", example = \"make-123\")\n private String make;\n\n @Schema(description = \"Model of the FTM chip\", example = \"model-123\")\n private String model;\n\n @Schema(description = \"Current status of the FTM chip details added by the partner. Possible values are pending_cert_upload, pending_approval, rejected, approved\", example = \"pending_approval\")\n private String status;\n\n @Schema(description = \"Indicates whether the FTM chip details is active (true if active, false otherwise)\", example = \"false\")\n private Boolean isActive;\n\n @Schema(description = \"Indicates whether the FTM Chip certificate is available (true if available, false otherwise)\", example = \"true\")\n private Boolean isCertificateAvailable;\n\n @Schema(description = \"Date and time in ISO format indicating when the FTM Chip certificate was uploaded\", example = \"2024-07-15T10:00:00Z\")\n private LocalDateTime certificateUploadDateTime;\n\n @Schema(description = \"Date and time in ISO format indicating when the FTM Chip certificate will expire\", example = \"2025-07-15T10:00:00Z\")\n private LocalDateTime certificateExpiryDateTime;\n\n @Schema(description = \"Indicates whether the FTM certificate is expired (true if expired, false otherwise)\", example = \"false\")\n private Boolean isCertificateExpired;\n\n @Schema(description = \"Date and time in ISO format indicating when the FTM Chip details were added by the partner\", example = \"2024-08-01T14:30:00Z\")\n private LocalDateTime createdDateTime;\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/device/dto/FtmChipFilterDto.java", + "title": "FtmChipFilterDto.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/device/dto/FtmChipFilterDto.java", + "language": "java", + "content": "package io.mosip.pms.device.dto;\n\nimport lombok.Data;\n\n@Data\npublic class FtmChipFilterDto {\n private String partnerId;\n private String orgName;\n private String ftmId;\n private String make;\n private String model;\n private String status;\n}" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/device/dto/JWTSignatureRequestDto.java", + "title": "JWTSignatureRequestDto.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/device/dto/JWTSignatureRequestDto.java", + "language": "java", + "content": "package io.mosip.pms.device.dto;\n\nimport javax.validation.constraints.NotBlank;\n\nimport io.swagger.annotations.ApiModelProperty;\nimport lombok.AllArgsConstructor;\nimport lombok.Data;\nimport lombok.NoArgsConstructor;\n\n/**\n * \n * @author Nagarjuna\n * @since 1.2.0\n *\n */\n\n@Data\n@NoArgsConstructor\n@AllArgsConstructor\npublic class JWTSignatureRequestDto {\n\n @NotBlank\n @ApiModelProperty(notes = \"Base64 encoded JSON Data to sign\", example = \"ewogICAiYW55S2V5IjogIlRlc3QgSnNvbiIKfQ\", required = true)\n\tprivate String dataToSign;\n\n\t/**\n\t * Application id of decrypting module\n\t */\n\t@ApiModelProperty(notes = \"Application id to be used for signing\", example = \"KERNEL\", required = false)\n\tprivate String applicationId;\n\n\t/**\n\t * Refrence Id\n\t */\n\t@ApiModelProperty(notes = \"Refrence Id\", example = \"SIGN\", required = false)\n\tprivate String referenceId;\n\n\t/**\n\t * Flag to include payload in JWT Signature Header\n\t */\n\t@ApiModelProperty(notes = \"Flag to include payload in JWT Signature Header.\", example = \"false\", required = false)\n\tprivate Boolean includePayload;\n\n\t/**\n\t * Flag to include certificate in JWT Signature Header\n\t */\n\t@ApiModelProperty(notes = \"Flag to include certificate in JWT Signature Header.\", example = \"false\", required = false)\n\tprivate Boolean includeCertificate;\n\n\t/**\n\t * Flag to include certificate hash in JWT Signature Header\n\t */\n\t@ApiModelProperty(notes = \"Flag to include certificate hash(sha256) in JWT Signature Header.\", example = \"false\", required = false)\n\tprivate Boolean includeCertHash;\n\n\t/**\n\t * Certificate URL to include in JWT Signature Header\n\t */\n\t@ApiModelProperty(notes = \"Flag to include certificate hash(sha256) in JWT Signature Header.\", required = false)\n\tprivate String certificateUrl;\n\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/device/dto/JWTSignatureResponseDto.java", + "title": "JWTSignatureResponseDto.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/device/dto/JWTSignatureResponseDto.java", + "language": "java", + "content": "package io.mosip.pms.device.dto;\n\nimport java.time.LocalDateTime;\n\nimport lombok.AllArgsConstructor;\nimport lombok.Data;\nimport lombok.NoArgsConstructor;\n\n/**\n * \n * @author Nagarjuna \n * @since 1.2.0\n *\n */\n@Data\n@NoArgsConstructor\n@AllArgsConstructor\npublic class JWTSignatureResponseDto {\n\n\t/**\n\t * encrypted data\n\t */\n\tprivate String jwtSignedData;\n\n\t/**\n\t * response time.\n\t */\n\tprivate LocalDateTime timestamp;\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/device/dto/SbiDetailsDto.java", + "title": "SbiDetailsDto.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/device/dto/SbiDetailsDto.java", + "language": "java", + "content": "package io.mosip.pms.device.dto;\n\nimport io.swagger.v3.oas.annotations.media.Schema;\nimport lombok.Data;\nimport lombok.Getter;\nimport lombok.Setter;\n\nimport java.time.LocalDateTime;\n\n@Data\n@Getter\n@Setter\npublic class SbiDetailsDto {\n @Schema(description = \"Unique identifier for the SBI\", example = \"sbi-001\")\n private String sbiId;\n\n @Schema(description = \"Version of the SBI\", example = \"1.0.0\")\n private String sbiVersion;\n\n @Schema(description = \"Unique identifier for the partner\", example = \"partner123\")\n private String partnerId;\n\n @Schema(description = \"Current status of the SBI\", example = \"approved\")\n private String status;\n\n @Schema(description = \"Indicates whether the SBI is active (true if active, false otherwise)\", example = \"false\")\n private boolean isSbiActive;\n\n @Schema(description = \"Indicates whether the SBI is expired (true if expired, false otherwise)\", example = \"false\")\n private boolean isSbiExpired;\n\n @Schema(description = \"Number of approved devices associated with the SBI\", example = \"29\")\n private Integer countOfApprovedDevices;\n\n @Schema(description = \"Number of pending devices associated with the SBI\", example = \"10\")\n private Integer countOfPendingDevices;\n\n @Schema(description = \"Date and time when the SBI was created\", example = \"2024-07-15T10:00:00Z\")\n private LocalDateTime sbiCreatedDateTime;\n\n @Schema(description = \"Date and time when the SBI expires\", example = \"2025-07-15T10:00:00Z\")\n private LocalDateTime sbiExpiryDateTime;\n\n @Schema(description = \"Date and time when the record was created\", example = \"2024-08-01T14:30:00Z\")\n private LocalDateTime createdDateTime;\n\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/device/dto/SbiFilterDto.java", + "title": "SbiFilterDto.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/device/dto/SbiFilterDto.java", + "language": "java", + "content": "package io.mosip.pms.device.dto;\n\nimport lombok.Data;\n\n@Data\npublic class SbiFilterDto {\n\n private String partnerId;\n private String orgName;\n private String sbiId;\n private String sbiVersion;\n private String status;\n private String sbiExpiryStatus;\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/device/exception/InfoItem.java", + "title": "InfoItem.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/device/exception/InfoItem.java", + "language": "java", + "content": "package io.mosip.pms.device.exception;\n\nimport java.io.Serializable;\n\nimport lombok.AllArgsConstructor;\nimport lombok.Getter;\nimport lombok.NoArgsConstructor;\nimport lombok.Setter;\n\n/**\n * This class is the entity class for the BaseUncheckedException and\n * BaseCheckedException class.\n * \n * @author sanjeev.shrivastava\n */\n\n@AllArgsConstructor\n@NoArgsConstructor\nclass InfoItem implements Serializable {\n\n\tprivate static final long serialVersionUID = -779695043380592601L;\n\n\t@Getter\n\t@Setter\n\tpublic String errorCode = null;\n\n\t@Getter\n\t@Setter\n\tpublic String errorText = null;\n\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/device/request/dto/DeRegisterDevicePostDto.java", + "title": "DeRegisterDevicePostDto.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/device/request/dto/DeRegisterDevicePostDto.java", + "language": "java", + "content": "package io.mosip.pms.device.request.dto;\n\nimport javax.validation.constraints.NotBlank;\nimport javax.validation.constraints.NotNull;\n\nimport lombok.Data;\n@Data\npublic class DeRegisterDevicePostDto {\n\t\n\t@NotBlank\n\tprivate String device;\n\n\tpublic String getDevice() {\n\t\treturn device;\n\t}\n\n\tpublic void setDevice(String device) {\n\t\tthis.device = device;\n\t}\n\t\n\t@NotNull\n\tprivate Boolean isItForRegistrationDevice;\n\n\n\tpublic Boolean getIsItForRegistrationDevice() {\n\t\treturn isItForRegistrationDevice;\n\t}\n\n\tpublic void setIsItForRegistrationDevice(Boolean isItForRegistrationDevice) {\n\t\tthis.isItForRegistrationDevice = isItForRegistrationDevice;\n\t}\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/device/request/dto/DeactivateDeviceRequestDto.java", + "title": "DeactivateDeviceRequestDto.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/device/request/dto/DeactivateDeviceRequestDto.java", + "language": "java", + "content": "package io.mosip.pms.device.request.dto;\n\nimport io.swagger.v3.oas.annotations.media.Schema;\nimport lombok.Data;\n\n@Data\npublic class DeactivateDeviceRequestDto {\n\n @Schema(description = \"Status for deactivate device\", example = \"De-Activate\")\n private String status;\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/device/request/dto/DeactivateFtmRequestDto.java", + "title": "DeactivateFtmRequestDto.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/device/request/dto/DeactivateFtmRequestDto.java", + "language": "java", + "content": "package io.mosip.pms.device.request.dto;\n\nimport io.swagger.v3.oas.annotations.media.Schema;\nimport lombok.Data;\n\n@Data\npublic class DeactivateFtmRequestDto {\n\n @Schema(description = \"Status for deactivate FTM\", example = \"De-Activate\")\n private String status;\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/device/request/dto/DeactivateSbiRequestDto.java", + "title": "DeactivateSbiRequestDto.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/device/request/dto/DeactivateSbiRequestDto.java", + "language": "java", + "content": "package io.mosip.pms.device.request.dto;\n\nimport io.swagger.v3.oas.annotations.media.Schema;\nimport lombok.Data;\n\n@Data\npublic class DeactivateSbiRequestDto {\n\n @Schema(description = \"Status for deactivate SBI\", example = \"De-Activate\")\n private String status;\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/device/request/dto/DeviceDetailDto.java", + "title": "DeviceDetailDto.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/device/request/dto/DeviceDetailDto.java", + "language": "java", + "content": "package io.mosip.pms.device.request.dto;\n\nimport javax.validation.constraints.NotBlank;\nimport javax.validation.constraints.Size;\n\nimport io.swagger.annotations.ApiModelProperty;\nimport lombok.Data;\n\n@Data\npublic class DeviceDetailDto {\t\n\t\n\t@Size(min = 1, max = 36, message = \"Length should be in between 1 and 36 chars\")\n\t@ApiModelProperty(value = \"id\", required = true, dataType = \"java.lang.String\")\n\tprivate String id;\n\n\t@NotBlank(message=\"value is empty or null\")\n\t@Size(min = 1, max = 36, message = \"Length should be in between 1 and 36 chars\")\n\t@ApiModelProperty(value = \"deviceProviderId\", required = true, dataType = \"java.lang.String\")\n\tprivate String deviceProviderId;\n\n\t@NotBlank(message=\"value is empty or null\")\n\t@Size(min = 1, max = 36, message = \"Length should be in between 1 and 36 chars\")\n\t@ApiModelProperty(value = \"deviceTypeCode\", required = true, dataType = \"java.lang.String\")\n\tprivate String deviceTypeCode;\n\n\t@NotBlank(message=\"value is empty or null\")\n\t@Size(min = 1, max = 36, message = \"Length should be in between 1 and 36 chars\")\n\t@ApiModelProperty(value = \"deviceSubTypeCode\", required = true, dataType = \"java.lang.String\")\n\tprivate String deviceSubTypeCode;\n\n\n\t@NotBlank(message=\"value is empty or null\")\n\t@Size(min = 1, max = 36, message = \"Length should be in between 1 and 36 chars\")\n\t@ApiModelProperty(value = \"make\", required = true, dataType = \"java.lang.String\")\n\tprivate String make;\n\n\n\t@NotBlank(message=\"value is empty or null\")\n\t@Size(min = 1, max = 36, message = \"Length should be in between 1 and 36 chars\")\n\t@ApiModelProperty(value = \"model\", required = true, dataType = \"java.lang.String\")\n\tprivate String model;\t\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/device/request/dto/DeviceDetailSBIMappingDto.java", + "title": "DeviceDetailSBIMappingDto.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/device/request/dto/DeviceDetailSBIMappingDto.java", + "language": "java", + "content": "package io.mosip.pms.device.request.dto;\n\nimport javax.validation.constraints.NotBlank;\nimport javax.validation.constraints.NotNull;\n\nimport lombok.Data;\n\n@Data\npublic class DeviceDetailSBIMappingDto {\n\n\t@NotBlank(message=\"value is empty or null\")\n\t@NotNull(message=\"value is empty or null\")\n\tprivate String deviceDetailId;\n\n\t@NotBlank(message=\"value is empty or null\")\n\t@NotNull(message=\"value is empty or null\")\n\tprivate String sbiId;\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/device/request/dto/DeviceDetailUpdateDto.java", + "title": "DeviceDetailUpdateDto.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/device/request/dto/DeviceDetailUpdateDto.java", + "language": "java", + "content": "package io.mosip.pms.device.request.dto;\n\nimport javax.validation.constraints.NotBlank;\nimport javax.validation.constraints.Size;\n\nimport io.swagger.annotations.ApiModelProperty;\nimport lombok.Data;\n\n@Data\npublic class DeviceDetailUpdateDto {\n\t\n\t@NotBlank(message=\"value is empty or null\")\n\t@Size(min = 1, max = 36, message = \"Length should be in between 1 and 36 chars\")\n\t@ApiModelProperty(value = \"id\", required = true, dataType = \"java.lang.String\")\n\tprivate String id;\n\n\t@NotBlank(message=\"value is empty or null\")\n\t@Size(min = 1, max = 36, message = \"Length should be in between 1 and 36 chars\")\n\t@ApiModelProperty(value = \"deviceTypeCode\", required = true, dataType = \"java.lang.String\")\n\tprivate String deviceTypeCode;\n\n\t@NotBlank(message=\"value is empty or null\")\n\t@Size(min = 1, max = 36, message = \"Length should be in between 1 and 36 chars\")\n\t@ApiModelProperty(value = \"deviceSubTypeCode\", required = true, dataType = \"java.lang.String\")\n\tprivate String deviceSubTypeCode;\n\n\n\t@NotBlank(message=\"value is empty or null\")\n\t@Size(min = 1, max = 36, message = \"Length should be in between 1 and 36 chars\")\n\t@ApiModelProperty(value = \"make\", required = true, dataType = \"java.lang.String\")\n\tprivate String make;\n\n\n\t@NotBlank(message=\"value is empty or null\")\n\t@Size(min = 1, max = 36, message = \"Length should be in between 1 and 36 chars\")\n\t@ApiModelProperty(value = \"model\", required = true, dataType = \"java.lang.String\")\n\tprivate String model;\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/device/request/dto/DeviceSearchDto.java", + "title": "DeviceSearchDto.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/device/request/dto/DeviceSearchDto.java", + "language": "java", + "content": "package io.mosip.pms.device.request.dto;\n\nimport io.mosip.pms.common.dto.SearchDto;\nimport io.swagger.annotations.ApiModelProperty;\nimport lombok.AllArgsConstructor;\nimport lombok.Data;\nimport lombok.EqualsAndHashCode;\nimport lombok.NoArgsConstructor;\n\n@Data\n@AllArgsConstructor\n@NoArgsConstructor\n@EqualsAndHashCode(callSuper=true)\npublic class DeviceSearchDto extends SearchDto {\n\n\t@ApiModelProperty(notes = \"purpose is used to differentiate the device details.\", required = true, example = \"AUTH/REGISTRATION\")\n\tprivate String purpose;\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/device/request/dto/DigitalIdDto.java", + "title": "DigitalIdDto.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/device/request/dto/DigitalIdDto.java", + "language": "java", + "content": "package io.mosip.pms.device.request.dto;\n\nimport javax.validation.constraints.NotBlank;\nimport javax.validation.constraints.NotNull;\n\nimport io.swagger.annotations.ApiModelProperty;\nimport lombok.Data;\n\n/**\n * Innner Json for DigitalId\n * \n * @author Srinivasan\n * @author Megha Tanga\n * @since 1.0.0\n *\n */\n@Data\npublic class DigitalIdDto {\n\n\t/** The serial no. */\n\n\t@NotNull\n\t@ApiModelProperty(value = \"serialNo\", required = true, dataType = \"java.lang.String\")\n\tprivate String serialNo;\n\n\t/** The Device Provider Name. */\n\t@NotNull\n\t@ApiModelProperty(value = \"dp\", required = true, dataType = \"java.lang.String\")\n\tprivate String dp;\n\n\t@NotNull\n\t@ApiModelProperty(value = \"dpId\", required = true, dataType = \"java.lang.String\")\n\tprivate String dpId;\n\n\t/** The make. */\n\n\t@NotNull\n\t@ApiModelProperty(value = \"make\", required = true, dataType = \"java.lang.String\")\n\tprivate String make;\n\n\t/** The model. */\n\n\t@NotNull\n\t@ApiModelProperty(value = \"mpdel\", required = true, dataType = \"java.lang.String\")\n\tprivate String model;\n\n\t@NotBlank\n\t@ApiModelProperty(value = \"deviceSubType\", dataType = \"java.lang.String\")\n\tprivate String deviceSubType;\n\n\t@NotBlank\n\t@ApiModelProperty(value = \"type\", dataType = \"java.lang.String\")\n\tprivate String type;\n\n\t/** The date time. */\n\n\tprivate String dateTime;\n\n}\n\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/device/request/dto/FtpCertDownloadRequestDto.java", + "title": "FtpCertDownloadRequestDto.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/device/request/dto/FtpCertDownloadRequestDto.java", + "language": "java", + "content": "package io.mosip.pms.device.request.dto;\n\nimport javax.validation.constraints.NotBlank;\n\nimport io.swagger.annotations.ApiModel;\nimport io.swagger.annotations.ApiModelProperty;\nimport lombok.AllArgsConstructor;\nimport lombok.Data;\nimport lombok.NoArgsConstructor;\n\n/**\n * Partner Certificate Download Request DTO.\n * \n * @author Nagarjuna \n * @since 1.2.0\n*/\n\n@Data\n@AllArgsConstructor\n@NoArgsConstructor\n@ApiModel(description = \"Model representing request to download partner certificates.\")\npublic class FtpCertDownloadRequestDto {\n \n /**\n\t * Certificate ID of Partner.\n\t */\n\t@ApiModelProperty(notes = \"Partner ID\", required = true)\n\t@NotBlank\n\tString partnerId;\n}" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/device/request/dto/FtpCertificateRequestDto.java", + "title": "FtpCertificateRequestDto.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/device/request/dto/FtpCertificateRequestDto.java", + "language": "java", + "content": "package io.mosip.pms.device.request.dto;\n\nimport javax.validation.constraints.NotBlank;\nimport javax.validation.constraints.NotNull;\n\nimport io.swagger.annotations.ApiModel;\nimport io.swagger.annotations.ApiModelProperty;\nimport lombok.AllArgsConstructor;\nimport lombok.Data;\nimport lombok.NoArgsConstructor;\n\n/**\n * Partner Certificates Request DTO.\n * \n * @author Nagarjuna\n * @since 1.2.0\n*/\n\n@Data\n@AllArgsConstructor\n@NoArgsConstructor\n@ApiModel(description = \"Model representing request to upload Partner certificates.\")\npublic class FtpCertificateRequestDto {\n \n\t/**\n\t * \n\t */\n\t@NotBlank\n\t@NotNull\n\tString partnerId;\n\t\n /**\n\t * Certificate Data of Partner.\n\t */\n\t@ApiModelProperty(notes = \"X509 Certificate Data\", required = true)\n\t@NotBlank\n\tString certificateData;\n\t\n\t/**\n\t * Certificate Data of Partner.\n\t */\n\t@ApiModelProperty(notes = \"Organization Name\", required = true)\n\t@NotBlank\n String organizationName;\n \n /**\n\t * Partner Type.\n\t */\n\t@ApiModelProperty(notes = \"Partner Type\", required = true)\n\t@NotBlank\n\tString partnerType;\n\t\n\t@NotBlank\n\t@NotNull\n\tString partnerDomain;\n}" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/device/request/dto/FtpChipCertDownloadRequestDto.java", + "title": "FtpChipCertDownloadRequestDto.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/device/request/dto/FtpChipCertDownloadRequestDto.java", + "language": "java", + "content": "package io.mosip.pms.device.request.dto;\n\nimport javax.validation.constraints.NotBlank;\nimport io.swagger.annotations.ApiModel;\nimport io.swagger.annotations.ApiModelProperty;\nimport lombok.AllArgsConstructor;\nimport lombok.Data;\nimport lombok.NoArgsConstructor;\n\n/**\n * Ftp chip Certificate Download Request DTO.\n * \n * @author Nagarjuna \n * @since 1.2.0\n*/\n\n@Data\n@AllArgsConstructor\n@NoArgsConstructor\n@ApiModel(description = \"Model representing request to download ftp chip certificates.\")\npublic class FtpChipCertDownloadRequestDto {\n \n /**\n\t * Certificate ID of Partner.\n\t */\n\t@ApiModelProperty(notes = \"ftpChipDetailId\", required = true)\n\t@NotBlank\n\tString ftpChipDetailId;\n}" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/device/request/dto/FtpChipCertificateRequestDto.java", + "title": "FtpChipCertificateRequestDto.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/device/request/dto/FtpChipCertificateRequestDto.java", + "language": "java", + "content": "package io.mosip.pms.device.request.dto;\n\nimport javax.validation.constraints.NotBlank;\nimport javax.validation.constraints.NotNull;\n\nimport io.swagger.annotations.ApiModel;\nimport io.swagger.annotations.ApiModelProperty;\nimport lombok.AllArgsConstructor;\nimport lombok.Data;\nimport lombok.NoArgsConstructor;\n\n/**\n * Ftp Chip Certificates Request DTO.\n * \n * @author Nagarjuna\n * @since 1.2.0\n*/\n\n@Data\n@AllArgsConstructor\n@NoArgsConstructor\n@ApiModel(description = \"Model representing request to upload ftp chip certificates.\")\npublic class FtpChipCertificateRequestDto {\n \n\t/**\n\t * ftp provider Id\n\t */\n\t@NotBlank(message=\"value is empty or null\")\n\tString ftpProviderId;\n\t\n\t/**\n\t * ftp chip id\n\t */\n\t@NotBlank(message=\"value is empty or null\")\n\tString ftpChipDeatilId;\t\n\t\n\t@NotNull(message=\"value is empty or null\")\n\tBoolean isItForRegistrationDevice;\n /**\n\t * Certificate Data of Partner.\n\t */\n\t@ApiModelProperty(notes = \"X509 Certificate Data\", required = true)\n\t@NotBlank(message=\"value is empty or null\")\n\tString certificateData;\n\t\n\t/**\n\t * Certificate Data of Partner.\n\t */\n\t@ApiModelProperty(notes = \"Organization Name\", required = true)\n\t@NotBlank(message=\"value is empty or null\")\n String organizationName; \n \n\t@NotBlank(message=\"value is empty or null\")\n\tString partnerDomain;\n}" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/device/request/dto/FtpChipDetailDto.java", + "title": "FtpChipDetailDto.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/device/request/dto/FtpChipDetailDto.java", + "language": "java", + "content": "package io.mosip.pms.device.request.dto;\n\nimport javax.validation.constraints.NotBlank;\nimport javax.validation.constraints.Size;\n\nimport io.swagger.annotations.ApiModelProperty;\nimport lombok.Data;\n\n@Data\npublic class FtpChipDetailDto {\n\n\t@NotBlank(message=\"value is empty or null\")\n\t@Size(min = 1, max = 36, message = \"Length should be in between 1 and 36 chars\")\n\t@ApiModelProperty(value = \"ftpProviderId\", required = true, dataType = \"java.lang.String\")\n\tprivate String ftpProviderId;\n\n\t@NotBlank(message=\"value is empty or null\")\n\t@Size(min = 1, max = 36, message = \"Length should be in between 1 and 36 chars\")\n\t@ApiModelProperty(value = \"make\", required = true, dataType = \"java.lang.String\")\n\tprivate String make;\n\n\n\t@NotBlank(message=\"value is empty or null\")\n\t@Size(min = 1, max = 36, message = \"Length should be in between 1 and 36 chars\")\n\t@ApiModelProperty(value = \"model\", required = true, dataType = \"java.lang.String\")\n\tprivate String model;\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/device/request/dto/FtpChipDetailStatusDto.java", + "title": "FtpChipDetailStatusDto.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/device/request/dto/FtpChipDetailStatusDto.java", + "language": "java", + "content": "package io.mosip.pms.device.request.dto;\n\nimport javax.validation.constraints.NotBlank;\nimport javax.validation.constraints.NotNull;\nimport javax.validation.constraints.Size;\n\nimport io.swagger.annotations.ApiModelProperty;\nimport lombok.Data;\n\n@Data\npublic class FtpChipDetailStatusDto {\n\t\n\t@NotBlank(message=\"value is empty or null\")\n\t@Size(min = 1, max = 36, message = \"Length should be in between 1 and 36 chars\")\n\t@ApiModelProperty(value = \"ftpChipDetailId\", required = true, dataType = \"java.lang.String\")\n\tprivate String ftpChipDetailId;\n\t\n\t@NotNull(message=\"value is empty or null\")\t\t\n\tprivate Boolean approvalStatus;\t\t\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/device/request/dto/FtpChipDetailUpdateDto.java", + "title": "FtpChipDetailUpdateDto.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/device/request/dto/FtpChipDetailUpdateDto.java", + "language": "java", + "content": "package io.mosip.pms.device.request.dto;\n\nimport javax.validation.constraints.NotBlank;\nimport javax.validation.constraints.Size;\n\nimport io.swagger.annotations.ApiModelProperty;\nimport lombok.Data;\n@Data\npublic class FtpChipDetailUpdateDto {\n\t\n\t@NotBlank(message=\"value is empty or null\")\n\t@Size(min = 1, max = 36, message = \"Length should be in between 1 and 36 chars\")\n\t@ApiModelProperty(value = \"ftpChipDetailId\", required = true, dataType = \"java.lang.String\")\n\tprivate String ftpChipDetailId;\n\n\t@NotBlank(message=\"value is empty or null\")\n\t@Size(min = 1, max = 36, message = \"Length should be in between 1 and 36 chars\")\n\t@ApiModelProperty(value = \"make\", required = true, dataType = \"java.lang.String\")\n\tprivate String make;\n\n\t@NotBlank(message=\"value is empty or null\")\n\t@Size(min = 1, max = 36, message = \"Length should be in between 1 and 36 chars\")\n\t@ApiModelProperty(value = \"model\", required = true, dataType = \"java.lang.String\")\n\tprivate String model;\t\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/device/request/dto/RegisteredDevicePostDto.java", + "title": "RegisteredDevicePostDto.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/device/request/dto/RegisteredDevicePostDto.java", + "language": "java", + "content": "package io.mosip.pms.device.request.dto;\n\nimport javax.validation.constraints.NotBlank;\nimport javax.validation.constraints.NotNull;\n\nimport lombok.Data;\n\n@Data\npublic class RegisteredDevicePostDto {\n\n\t@NotNull\n\t@NotBlank\n\tprivate String deviceData;\n\n\tpublic String getDeviceData() {\n\t\treturn deviceData;\n\t}\n\n\tpublic void setDeviceData(String deviceData) {\n\t\tthis.deviceData = deviceData;\n\t}\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/device/request/dto/SecureBiometricInterfaceCreateDto.java", + "title": "SecureBiometricInterfaceCreateDto.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/device/request/dto/SecureBiometricInterfaceCreateDto.java", + "language": "java", + "content": "package io.mosip.pms.device.request.dto;\n\nimport java.time.LocalDateTime;\nimport javax.validation.constraints.NotBlank;\nimport javax.validation.constraints.NotEmpty;\nimport javax.validation.constraints.Size;\n\nimport com.fasterxml.jackson.annotation.JsonFormat;\n\nimport io.swagger.annotations.ApiModelProperty;\nimport lombok.Data;\n@Data\npublic class SecureBiometricInterfaceCreateDto {\n\t\n\t@NotBlank(message=\"value is empty or null\")\n\t@Size(min = 1, max = 36, message = \"Length should be in between 1 and 36 chars\")\n\t@ApiModelProperty(value = \"softBinaryHash\", required = true, dataType = \"java.lang.String\")\n\tprivate String swBinaryHash;\n\t\n\t@NotBlank(message=\"value is empty or null\")\n\t@Size(min = 1, max = 64, message = \"Length should be in between 1 and 64 chars\")\n\t@ApiModelProperty(value = \"softwareVersion\", required = true, dataType = \"java.lang.String\")\n\tprivate String swVersion;\n\t\n\t@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = \"yyyy-MM-dd'T'HH:mm:ss.SSS'Z'\")\n\tprivate LocalDateTime swCreateDateTime;\n\n\t@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = \"yyyy-MM-dd'T'HH:mm:ss.SSS'Z'\")\n\tprivate LocalDateTime swExpiryDateTime;\n\n\t@NotBlank(message=\"value is empty or null\")\n\t@NotEmpty(message=\"value is empty or null\")\n\tprivate String providerId;\n\t\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/device/request/dto/SecureBiometricInterfaceStatusUpdateDto.java", + "title": "SecureBiometricInterfaceStatusUpdateDto.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/device/request/dto/SecureBiometricInterfaceStatusUpdateDto.java", + "language": "java", + "content": "package io.mosip.pms.device.request.dto;\n\nimport javax.validation.constraints.NotBlank;\nimport javax.validation.constraints.Size;\n\nimport io.swagger.annotations.ApiModelProperty;\nimport lombok.Data;\n\n@Data\npublic class SecureBiometricInterfaceStatusUpdateDto {\n\t\n\t@NotBlank(message=\"value is empty or null\")\n\t@Size(min = 1, max = 36, message = \"Length should be in between 1 and 36 chars\")\n\t@ApiModelProperty(value = \"id\", required = true, dataType = \"java.lang.String\")\n\tprivate String id;\n\t\n\t@NotBlank(message=\"value is empty or null\")\n\t@Size(min = 1, max = 36, message = \"Length should be in between 1 and 36 chars\")\n\t@ApiModelProperty(value = \"approvalStatus\", required = true, dataType = \"java.lang.String\")\n\tprivate String approvalStatus;\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/device/request/dto/SecureBiometricInterfaceUpdateDto.java", + "title": "SecureBiometricInterfaceUpdateDto.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/device/request/dto/SecureBiometricInterfaceUpdateDto.java", + "language": "java", + "content": "package io.mosip.pms.device.request.dto;\n\nimport java.time.LocalDateTime;\nimport javax.validation.constraints.NotBlank;\nimport javax.validation.constraints.NotNull;\nimport javax.validation.constraints.Size;\n\nimport com.fasterxml.jackson.annotation.JsonFormat;\n\nimport io.swagger.annotations.ApiModelProperty;\nimport lombok.Data;\n\n@Data\npublic class SecureBiometricInterfaceUpdateDto {\n\t\n\t@NotBlank(message=\"value is empty or null\")\n\t@Size(min = 1, max = 36, message = \"Length should be in between 1 and 36 chars\")\n\t@ApiModelProperty(value = \"id\", required = true, dataType = \"java.lang.String\")\n\tprivate String id;\n\t\n\t@NotBlank(message=\"value is empty or null\")\n\t@Size(min = 1, max = 36, message = \"Length should be in between 1 and 36 chars\")\n\t@ApiModelProperty(value = \"softBinaryHash\", required = true, dataType = \"java.lang.String\")\n\tprivate String swBinaryHash;\n\t\n\t@NotBlank(message=\"value is empty or null\")\n\t@Size(min = 1, max = 64, message = \"Length should be in between 1 and 64 chars\")\n\t@ApiModelProperty(value = \"softwareVersion\", required = true, dataType = \"java.lang.String\")\n\tprivate String swVersion;\n\t\n\t@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = \"yyyy-MM-dd'T'HH:mm:ss.SSS'Z'\")\n\tprivate LocalDateTime swCreateDateTime;\n\n\t@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = \"yyyy-MM-dd'T'HH:mm:ss.SSS'Z'\")\n\tprivate LocalDateTime swExpiryDateTime;\n\t\n\t@NotNull(message=\"value is empty or null\")\n\tprivate Boolean isActive;\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/device/request/dto/UpdateDeviceDetailStatusDto.java", + "title": "UpdateDeviceDetailStatusDto.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/device/request/dto/UpdateDeviceDetailStatusDto.java", + "language": "java", + "content": "package io.mosip.pms.device.request.dto;\n\nimport javax.validation.constraints.NotBlank;\nimport javax.validation.constraints.Size;\n\nimport io.swagger.annotations.ApiModelProperty;\nimport lombok.Data;\n\n@Data\npublic class UpdateDeviceDetailStatusDto {\n\t\n\t@NotBlank(message=\"value is empty or null\")\n\t@Size(min = 1, max = 36, message = \"Length should be in between 1 and 36 chars\")\n\t@ApiModelProperty(value = \"id\", required = true, dataType = \"java.lang.String\")\n\tprivate String id;\n\t\n\t@NotBlank(message=\"value is empty or null\")\n\t@Size(min = 1, max = 36, message = \"Length should be in between 1 and 36 chars\")\n\t@ApiModelProperty(value = \"approvalStatus\", required = true, dataType = \"java.lang.String\")\n\tprivate String approvalStatus;\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/device/request/dto/ValidateDeviceDto.java", + "title": "ValidateDeviceDto.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/device/request/dto/ValidateDeviceDto.java", + "language": "java", + "content": "package io.mosip.pms.device.request.dto;\n\nimport javax.validation.Valid;\nimport javax.validation.constraints.NotBlank;\n\nimport io.swagger.annotations.ApiParam;\nimport lombok.AllArgsConstructor;\nimport lombok.Data;\nimport lombok.NoArgsConstructor;\n\n/**\n * The Class ValidateDeviceDto.\n * \n * @author Nagarjuna\n * @since 1.2.0\n */\n@Data\n@NoArgsConstructor\n@AllArgsConstructor\npublic class ValidateDeviceDto {\n\n\t/** The device code. */\n\t@NotBlank\n\tprivate String deviceCode;\n\n\t/** The digital id. */\n\t@Valid\n\tprivate DigitalIdDto digitalId;\n\n\t/** The device service version. */\n\t@NotBlank\n\tprivate String deviceServiceVersion;\n\t\n\n\t@ApiParam(value = \"2019-09-09T09:09:09.000Z\", required = true)\n\tprivate String timeStamp;\n\t\n\n\n\tprivate String purpose;\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/device/response/dto/ColumnCodeValue.java", + "title": "ColumnCodeValue.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/device/response/dto/ColumnCodeValue.java", + "language": "java", + "content": "package io.mosip.pms.device.response.dto;\n\nimport lombok.Data;\n\n@Data\npublic class ColumnCodeValue {\n\n\tprivate String fieldID;\n\tprivate String fieldValue;\n\tprivate String fieldCode;\n\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/device/response/dto/DeviceDeRegisterResponse.java", + "title": "DeviceDeRegisterResponse.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/device/response/dto/DeviceDeRegisterResponse.java", + "language": "java", + "content": "package io.mosip.pms.device.response.dto;\n\nimport java.time.LocalDateTime;\n\nimport com.fasterxml.jackson.annotation.JsonFormat;\n\nimport lombok.Data;\n\n@Data\npublic class DeviceDeRegisterResponse {\n\n\tprivate String status;\n\tprivate String deviceCode;\n\tprivate String env;\n\t@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = \"yyyy-MM-dd'T'HH:mm:ss.SSS'Z'\")\n\tprivate LocalDateTime timeStamp;\n\n}" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/device/response/dto/DeviceDetailResponseDto.java", + "title": "DeviceDetailResponseDto.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/device/response/dto/DeviceDetailResponseDto.java", + "language": "java", + "content": "package io.mosip.pms.device.response.dto;\n\nimport com.fasterxml.jackson.annotation.JsonProperty;\nimport io.swagger.v3.oas.annotations.media.Schema;\nimport lombok.Data;\n\n@Data\npublic class DeviceDetailResponseDto {\n @Schema(description = \"Unique identifier of Device\", example = \"12345\")\n private String deviceId;\n\n @Schema(description = \"Status of the Device (e.g., approved, pending, rejected)\", example = \"approved\")\n private String status;\n\n @Schema(description = \"Indicates whether the device is active (true if active, false otherwise)\", example = \"true\")\n @JsonProperty(\"isActive\")\n private boolean isActive;\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/device/response/dto/DeviceDetailSearchResponseDto.java", + "title": "DeviceDetailSearchResponseDto.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/device/response/dto/DeviceDetailSearchResponseDto.java", + "language": "java", + "content": "package io.mosip.pms.device.response.dto;\n\nimport javax.persistence.Column;\nimport javax.validation.constraints.NotNull;\nimport javax.validation.constraints.Size;\n\nimport io.swagger.annotations.ApiModelProperty;\nimport lombok.AllArgsConstructor;\nimport lombok.Data;\nimport lombok.NoArgsConstructor;\n\n@Data\n@AllArgsConstructor\n@NoArgsConstructor\npublic class DeviceDetailSearchResponseDto {\t\n\n\t@Size(min = 1, max = 36)\n\t@ApiModelProperty(value = \"id\", required = true, dataType = \"java.lang.String\")\n\tprivate String id;\n\n\n\t@NotNull\n\t@Size(min = 1, max = 36)\n\t@ApiModelProperty(value = \"deviceProviderId\", required = true, dataType = \"java.lang.String\")\n\tprivate String deviceProviderId;\n\n\t@NotNull\n\t@Size(min = 1, max = 36)\n\t@ApiModelProperty(value = \"deviceTypeCode\", required = true, dataType = \"java.lang.String\")\n\tprivate String deviceTypeCode;\n\n\t@NotNull\n\t@Size(min = 1, max = 36)\n\t@ApiModelProperty(value = \"deviceSubTypeCode\", required = true, dataType = \"java.lang.String\")\n\tprivate String deviceSubTypeCode;\n\n\n\t@NotNull\n\t@Size(min = 1, max = 36)\n\t@ApiModelProperty(value = \"make\", required = true, dataType = \"java.lang.String\")\n\tprivate String make;\n\n\n\t@NotNull\n\t@Size(min = 1, max = 36)\n\t@ApiModelProperty(value = \"model\", required = true, dataType = \"java.lang.String\")\n\tprivate String model;\n\n\t@Size(min = 0, max = 128)\n\t@ApiModelProperty(value = \"partnerOrganizationName\", required = true, dataType = \"java.lang.String\")\n\tprivate String partnerOrganizationName;\n\n\tprivate boolean isActive;\t\n\n\t@Column(name=\"approval_status\",length=36,nullable=false)\n\tprivate String approvalStatus;\t\n\t\n\tpublic String getApprovalStatus() {\n\t\treturn approvalStatus;\n\t}\n\n\tpublic void setApprovalStatus(String approvalStatus) {\n\t\tthis.approvalStatus = approvalStatus;\n\t}\n\t\n\tpublic boolean getIsActive() {\n\t\treturn isActive;\n\t}\n\n\tpublic void setIsActive(boolean isActive) {\n\t\tthis.isActive = isActive;\n\t}\n\n\tpublic String getId() {\n\t\treturn id;\n\t}\n\n\tpublic void setId(String id) {\n\t\tthis.id = id;\n\t}\n\n\tpublic String getDeviceProviderId() {\n\t\treturn deviceProviderId;\n\t}\n\n\tpublic void setDeviceProviderId(String deviceProviderId) {\n\t\tthis.deviceProviderId = deviceProviderId;\n\t}\n\n\tpublic String getDeviceTypeCode() {\n\t\treturn deviceTypeCode;\n\t}\n\n\tpublic void setDeviceTypeCode(String deviceTypeCode) {\n\t\tthis.deviceTypeCode = deviceTypeCode;\n\t}\n\n\tpublic String getDeviceSubTypeCode() {\n\t\treturn deviceSubTypeCode;\n\t}\n\n\tpublic void setDeviceSubTypeCode(String deviceSubTypeCode) {\n\t\tthis.deviceSubTypeCode = deviceSubTypeCode;\n\t}\n\n\tpublic String getMake() {\n\t\treturn make;\n\t}\n\n\tpublic void setMake(String make) {\n\t\tthis.make = make;\n\t}\n\n\tpublic String getModel() {\n\t\treturn model;\n\t}\n\n\tpublic void setModel(String model) {\n\t\tthis.model = model;\n\t}\n\n\tpublic String getPartnerOrganizationName() {\n\t\treturn partnerOrganizationName;\n\t}\n\n\tpublic void setPartnerOrganizationName(String partnerOrganizationName) {\n\t\tthis.partnerOrganizationName = partnerOrganizationName;\n\t}\n}" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/device/response/dto/FTPSearchResponseDto.java", + "title": "FTPSearchResponseDto.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/device/response/dto/FTPSearchResponseDto.java", + "language": "java", + "content": "package io.mosip.pms.device.response.dto;\n\nimport java.time.LocalDateTime;\n\nimport javax.persistence.Column;\nimport javax.persistence.Id;\n\npublic class FTPSearchResponseDto {\n\t\n\t@Id \n\t@Column(name = \"id\", length = 36,nullable=false)\n\tprivate String ftpChipDetailId;\n\t\n\t@Column(name = \"foundational_trust_provider_id\", length = 36)\n\tprivate String ftpProviderId;\n\t\n\t@Column(name=\"make\",length=36)\n\tprivate String make;\n\t\n\t@Column(name=\"model\",length=36)\n\tprivate String model;\n\t\n\t@Column(name=\"certificate_alias\",length=36,nullable=false)\n\tprivate String certificateAlias;\n\t\n\t@Column(name=\"partner_org_name\",length=128)\n\tprivate String partnerOrganizationName;\n\t\n\t@Column(name=\"is_active\",nullable=false)\n\tprivate boolean isActive;\n\t\n\t@Column(name=\"is_deleted\")\n\tprivate boolean isDeleted;\n\t\n\t@Column(name=\"cr_by\",length=256,nullable=false)\n\tprivate String crBy;\n\n\t@Column(name=\"cr_dtimes\",nullable=false)\n\tprivate LocalDateTime crDtimes;\n\n\t@Column(name=\"del_dtimes\")\n\tprivate LocalDateTime delDtimes;\n\t\n\t@Column(name=\"upd_by\",length=256)\n\tprivate String updBy;\n\n\t@Column(name=\"upd_dtimes\")\n\tprivate LocalDateTime updDtimes;\n\t\n\t@Column(name=\"approval_status\",length=36,nullable=false)\n\tprivate String approvalStatus;\n\n\tpublic String getFtpChipDetailId() {\n\t\treturn ftpChipDetailId;\n\t}\n\n\tpublic void setFtpChipDetailId(String ftpChipDetailId) {\n\t\tthis.ftpChipDetailId = ftpChipDetailId;\n\t}\n\n\tpublic String getFtpProviderId() {\n\t\treturn ftpProviderId;\n\t}\n\n\tpublic void setFtpProviderId(String ftpProviderId) {\n\t\tthis.ftpProviderId = ftpProviderId;\n\t}\n\n\tpublic String getMake() {\n\t\treturn make;\n\t}\n\n\tpublic void setMake(String make) {\n\t\tthis.make = make;\n\t}\n\n\tpublic String getModel() {\n\t\treturn model;\n\t}\n\n\tpublic void setModel(String model) {\n\t\tthis.model = model;\n\t}\n\n\tpublic String getCertificateAlias() {\n\t\treturn certificateAlias;\n\t}\n\n\tpublic void setCertificateAlias(String certificateAlias) {\n\t\tthis.certificateAlias = certificateAlias;\n\t}\n\n\tpublic String getPartnerOrganizationName() {\n\t\treturn partnerOrganizationName;\n\t}\n\n\tpublic void setPartnerOrganizationName(String partnerOrganizationName) {\n\t\tthis.partnerOrganizationName = partnerOrganizationName;\n\t}\n\n\tpublic boolean isActive() {\n\t\treturn isActive;\n\t}\n\n\tpublic void setActive(boolean isActive) {\n\t\tthis.isActive = isActive;\n\t}\n\n\tpublic boolean isDeleted() {\n\t\treturn isDeleted;\n\t}\n\n\tpublic void setDeleted(boolean isDeleted) {\n\t\tthis.isDeleted = isDeleted;\n\t}\n\n\tpublic String getCrBy() {\n\t\treturn crBy;\n\t}\n\n\tpublic void setCrBy(String crBy) {\n\t\tthis.crBy = crBy;\n\t}\n\n\tpublic LocalDateTime getCrDtimes() {\n\t\treturn crDtimes;\n\t}\n\n\tpublic void setCrDtimes(LocalDateTime crDtimes) {\n\t\tthis.crDtimes = crDtimes;\n\t}\n\n\tpublic LocalDateTime getDelDtimes() {\n\t\treturn delDtimes;\n\t}\n\n\tpublic void setDelDtimes(LocalDateTime delDtimes) {\n\t\tthis.delDtimes = delDtimes;\n\t}\n\n\tpublic String getUpdBy() {\n\t\treturn updBy;\n\t}\n\n\tpublic void setUpdBy(String updBy) {\n\t\tthis.updBy = updBy;\n\t}\n\n\tpublic LocalDateTime getUpdDtimes() {\n\t\treturn updDtimes;\n\t}\n\n\tpublic void setUpdDtimes(LocalDateTime updDtimes) {\n\t\tthis.updDtimes = updDtimes;\n\t}\n\t\n\tpublic String getApprovalStatus() {\n\t\treturn approvalStatus;\n\t}\n\n\tpublic void setApprovalStatus(String approvalStatus) {\n\t\tthis.approvalStatus = approvalStatus;\n\t}\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/device/response/dto/FilterResponseCodeDto.java", + "title": "FilterResponseCodeDto.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/device/response/dto/FilterResponseCodeDto.java", + "language": "java", + "content": "package io.mosip.pms.device.response.dto;\n\nimport java.util.List;\n\nimport lombok.AllArgsConstructor;\nimport lombok.Data;\nimport lombok.NoArgsConstructor;\n\n@Data\n@AllArgsConstructor\n@NoArgsConstructor\npublic class FilterResponseCodeDto {\n\n\tprivate List filters;\n}" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/device/response/dto/FtmDetailResponseDto.java", + "title": "FtmDetailResponseDto.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/device/response/dto/FtmDetailResponseDto.java", + "language": "java", + "content": "package io.mosip.pms.device.response.dto;\n\nimport com.fasterxml.jackson.annotation.JsonProperty;\nimport io.swagger.v3.oas.annotations.media.Schema;\nimport lombok.Data;\n\n@Data\npublic class FtmDetailResponseDto {\n\n @Schema(description = \"Unique identifier of FTM Chip Details\", example = \"ftm456\")\n private String ftmId;\n\n @Schema(description = \"Status of the FTM Chip details. Possible values are pending_cert_upload, pending_approval, rejected, approved\", example = \"approved\")\n private String status;\n\n @Schema(description = \"True indicates that record is Active\", example = \"false\")\n @JsonProperty(\"isActive\")\n private boolean isActive;\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/device/response/dto/FtmDetailSummaryDto.java", + "title": "FtmDetailSummaryDto.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/device/response/dto/FtmDetailSummaryDto.java", + "language": "java", + "content": "package io.mosip.pms.device.response.dto;\n\nimport io.swagger.v3.oas.annotations.media.Schema;\nimport lombok.Data;\n\nimport java.time.LocalDateTime;\nimport java.util.Date;\n\n@Data\npublic class FtmDetailSummaryDto {\n\n @Schema(description = \"Unique identifier for the FTM Chip details added by the partner\", example = \"ftp-001\")\n private String ftmId;\n\n @Schema(description = \"Unique identifier for the partner\", example = \"partner123\")\n private String partnerId;\n\n @Schema(description = \"Name of the organisation\", example = \"org123\")\n private String orgName;\n\n @Schema(description = \"Make of the FTM chip\", example = \"make-123\")\n private String make;\n\n @Schema(description = \"Model of the FTM chip\", example = \"model-123\")\n private String model;\n\n @Schema(description = \"Current status of the FTM chip details added by the partner. Possible values are pending_cert_upload, pending_approval, rejected, approved, deactivated\", example = \"pending_approval\")\n private String status;\n\n @Schema(description = \"Indicates whether the FTM chip details is active (true if active, false otherwise)\", example = \"false\")\n private Boolean isActive;\n\n @Schema(description = \"Indicates whether the FTM Chip certificate is available (true if available, false otherwise)\", example = \"true\")\n private Boolean isCertificateAvailable;\n\n @Schema(description = \"Date and time in ISO format indicating when the FTM Chip details were added by the partner\", example = \"2024-08-01T14:30:00Z\")\n private LocalDateTime createdDateTime;\n}" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/device/response/dto/FtpCertDownloadResponeDto.java", + "title": "FtpCertDownloadResponeDto.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/device/response/dto/FtpCertDownloadResponeDto.java", + "language": "java", + "content": "package io.mosip.pms.device.response.dto;\n\nimport java.time.LocalDateTime;\n\nimport lombok.Data;\n\n/**\n * DTO class for download of partner certificate response.\n * \n * @author Nagarjuna \n * @since 1.2.0\n *\n */\n@Data\npublic class FtpCertDownloadResponeDto {\n \n /**\n\t * Partner Certificate Data.\n\t */\n\tprivate String certificateData;\n\n\t/**\n\t * Response timestamp.\n\t */\n\tprivate LocalDateTime timestamp;\n}" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/device/response/dto/FtpCertificateResponseDto.java", + "title": "FtpCertificateResponseDto.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/device/response/dto/FtpCertificateResponseDto.java", + "language": "java", + "content": "package io.mosip.pms.device.response.dto;\n\nimport java.time.LocalDateTime;\n\nimport lombok.Data;\n\n/**\n * DTO class for upload certificate response.\n * \n * @author Nagarjuna \n * @since 1.2.0\n *\n */\n@Data\npublic class FtpCertificateResponseDto {\n \n /**\n\t * Field for certificate\n\t */\n\tprivate String signedCertificateData;\n\t\n\t/**\n\t * Field for certificateId\n\t */\n private String certificateId;\n \n /**\n\t * Field for Response time\n\t */\n\tprivate LocalDateTime timestamp;\n\n}" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/device/response/dto/IdDto.java", + "title": "IdDto.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/device/response/dto/IdDto.java", + "language": "java", + "content": "package io.mosip.pms.device.response.dto;\n\nimport java.io.Serializable;\n\nimport lombok.Data;\n\n@Data\npublic class IdDto implements Serializable{\n\tprivate static final long serialVersionUID = 1L;\n\n\t\n\tprivate String id;\n\n\n\tpublic IdDto() {\n\t\tsuper();\n\t\t// TODO Auto-generated constructor stub\n\t}\n\n\n\tpublic IdDto(String id) {\n\t\tsuper();\n\t\tthis.id = id;\n\t}\n\n\n\tpublic String getId() {\n\t\treturn id;\n\t}\n\n\n\tpublic void setId(String id) {\n\t\tthis.id = id;\n\t}\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/device/response/dto/MappedDeviceDetailsReponse.java", + "title": "MappedDeviceDetailsReponse.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/device/response/dto/MappedDeviceDetailsReponse.java", + "language": "java", + "content": "package io.mosip.pms.device.response.dto;\n\nimport java.sql.Timestamp;\n\nimport lombok.Data;\n\n@Data\npublic class MappedDeviceDetailsReponse {\t\t\n\t\n\tprivate String deviceDetailId;\t\n\t\n\tprivate String sbiId;\n\t\n\tprivate String providerId;\t\n\t\n\tprivate String providerName;\n\n\tprivate String make;\n\t\n\tprivate String model;\n\t\n\tprivate String deviceTypeCode;\n\t\n\tprivate String deviceSubTypeCode;\n\t\n\tprivate byte[] swBinaryHash;\n\t\n\tprivate String swVersion;\n\n\tprivate String crBy;\n\n\tprivate Timestamp crDtimes;\n\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/device/response/dto/RegisterDeviceResponse.java", + "title": "RegisterDeviceResponse.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/device/response/dto/RegisterDeviceResponse.java", + "language": "java", + "content": "package io.mosip.pms.device.response.dto;\n\nimport java.time.LocalDateTime;\n\nimport com.fasterxml.jackson.annotation.JsonFormat;\n\nimport lombok.Data;\n\n@Data\npublic class RegisterDeviceResponse {\n\n\tprivate String status;\n\n\tprivate String digitalId;\n\n\tprivate String deviceCode;\n\n\tprivate String env;\n\n\t@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = \"yyyy-MM-dd'T'HH:mm:ss.SSS'Z'\")\n\tprivate LocalDateTime timeStamp;\n}" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/device/response/dto/RegistrationSubTypeDto.java", + "title": "RegistrationSubTypeDto.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/device/response/dto/RegistrationSubTypeDto.java", + "language": "java", + "content": "package io.mosip.pms.device.response.dto;\n\nimport java.time.LocalDateTime;\n\nimport lombok.Data;\n\n@Data\npublic class RegistrationSubTypeDto {\n\n\tprivate String code;\n\n\tprivate String deviceType;\n\n\tprivate String name;\n\n\tprivate String desciption;\n\n\tprivate boolean isActive;\n\n\tprivate Boolean isDeleted;\n\n\tprivate String crBy;\n\n\tprivate LocalDateTime crDtimes;\n\n\tprivate LocalDateTime delDtimes;\n\n\tprivate String updBy;\n\n\tprivate LocalDateTime updDtimes;\n\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/device/response/dto/ResponseDto.java", + "title": "ResponseDto.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/device/response/dto/ResponseDto.java", + "language": "java", + "content": "package io.mosip.pms.device.response.dto;\n\nimport lombok.Data;\n\n@Data\npublic class ResponseDto {\n\tprivate String status;\n\n\t/** The message. */\n\tprivate String message;\n\n\tpublic String getStatus() {\n\t\treturn status;\n\t}\n\n\tpublic void setStatus(String status) {\n\t\tthis.status = status;\n\t}\n\n\tpublic String getMessage() {\n\t\treturn message;\n\t}\n\n\tpublic void setMessage(String message) {\n\t\tthis.message = message;\n\t}\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/device/response/dto/SbiDetailsResponseDto.java", + "title": "SbiDetailsResponseDto.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/device/response/dto/SbiDetailsResponseDto.java", + "language": "java", + "content": "package io.mosip.pms.device.response.dto;\n\nimport com.fasterxml.jackson.annotation.JsonProperty;\nimport io.swagger.v3.oas.annotations.media.Schema;\nimport lombok.Data;\n\n@Data\npublic class SbiDetailsResponseDto {\n\n @Schema(description = \"Unique identifier for the SBI\", example = \"sbi-001\")\n private String sbiId;\n\n @Schema(description = \"Version of the SBI\", example = \"1.0.0\")\n private String sbiVersion;\n\n @Schema(description = \"Status of SBI (e.g., approved, pending, rejected)\", example = \"approved\")\n private String status;\n\n @Schema(description = \"Indicates whether the device is active (true if active, false otherwise)\", example = \"true\")\n @JsonProperty(\"isActive\")\n private boolean isActive;\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/device/response/dto/SbiSearchResponseDto.java", + "title": "SbiSearchResponseDto.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/device/response/dto/SbiSearchResponseDto.java", + "language": "java", + "content": "package io.mosip.pms.device.response.dto;\n\nimport java.time.LocalDateTime;\nimport javax.persistence.Column;\nimport javax.validation.constraints.NotNull;\nimport javax.validation.constraints.Size;\n\nimport com.fasterxml.jackson.annotation.JsonFormat;\n\nimport io.swagger.annotations.ApiModelProperty;\nimport lombok.Data;\n\n@Data\npublic class SbiSearchResponseDto {\t\n\t\n\tprivate String id;\n\t\n\t@NotNull\n\t@Size(min = 1, max = 36)\n\t@ApiModelProperty(value = \"softBinaryHash\", required = true, dataType = \"java.lang.String\")\n\tprivate byte[] swBinaryHash;\n\t\n\t@NotNull\n\t@Size(min = 1, max = 64)\n\t@ApiModelProperty(value = \"softwareVersion\", required = true, dataType = \"java.lang.String\")\n\tprivate String swVersion;\n\t\n\t@NotNull\n\t@Size(min = 1, max = 36)\n\t@ApiModelProperty(value = \"deviceDetailId\", required = true, dataType = \"java.lang.String\")\n\tprivate String deviceDetailId;\n\t\n\t@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = \"yyyy-MM-dd'T'HH:mm:ss.SSS'Z'\")\n\tprivate LocalDateTime swCreateDateTime;\n\n\t@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = \"yyyy-MM-dd'T'HH:mm:ss.SSS'Z'\")\n\tprivate LocalDateTime swExpiryDateTime;\n\n\tprivate Boolean isActive;\t\n\n\t@Column(name=\"approval_status\",length=36,nullable=false)\n\tprivate String approvalStatus;\n\t\n\t@Column(name=\"dprovider_id\",length=36,nullable=false)\n\tprivate String providerId;\n\t\n\t@Column(name=\"partner_org_name\",length=128)\n\tprivate String partnerOrganizationName;\n\t\n\t@Column(name=\"is_deleted\")\n\tprivate boolean isDeleted;\n\t\n\t@Column(name=\"cr_by\",length=256,nullable=false)\n\tprivate String crBy;\n\n\t@Column(name=\"cr_dtimes\",nullable=false)\n\tprivate LocalDateTime crDtimes;\n\n\t@Column(name=\"del_dtimes\")\n\tprivate LocalDateTime delDtimes;\n\t\n\t@Column(name=\"upd_by\",length=256)\n\tprivate String updBy;\n\n\t@Column(name=\"upd_dtimes\")\n\tprivate LocalDateTime updDtimes;\t\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/device/response/dto/SbiSummaryDto.java", + "title": "SbiSummaryDto.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/device/response/dto/SbiSummaryDto.java", + "language": "java", + "content": "package io.mosip.pms.device.response.dto;\n\nimport io.swagger.v3.oas.annotations.media.Schema;\nimport lombok.Data;\n\nimport java.time.LocalDateTime;\n\n@Data\npublic class SbiSummaryDto {\n\n @Schema(description = \"Unique identifier for the partner\", example = \"partner123\")\n private String partnerId;\n\n @Schema(description = \"Name of the partner organisation\", example = \"abc\")\n private String orgName;\n\n @Schema(description = \"Unique identifier for the SBI\", example = \"sbi-001\")\n private String sbiId;\n\n @Schema(description = \"Version of the SBI\", example = \"1.0.0\")\n private String sbiVersion;\n\n @Schema(description = \"Current status of the SBI\", example = \"approved\")\n private String status;\n\n @Schema(description = \"Indicates whether the SBI is active (true if active, false otherwise)\", example = \"false\")\n private Boolean isActive;\n\n @Schema(description = \"Date and time when the SBI was created\", example = \"2024-07-15T10:00:00Z\")\n private LocalDateTime sbiCreatedDateTime;\n\n @Schema(description = \"Date and time when the SBI expires\", example = \"2025-07-15T10:00:00Z\")\n private LocalDateTime sbiExpiryDateTime;\n\n @Schema(description = \"Current status of the SBI based on expiry date time\", example = \"expired\")\n private String sbiExpiryStatus;\n\n @Schema(description = \"Number of approved devices associated with the SBI\", example = \"29\")\n private Long countOfAssociatedDevices;\n\n @Schema(description = \"Number of approved devices associated with the SBI\", example = \"29\")\n private Long countOfApprovedDevices;\n\n @Schema(description = \"Number of pending devices associated with the SBI\", example = \"10\")\n private Long countOfPendingDevices;\n\n @Schema(description = \"Date and time when the record was created\", example = \"2024-08-01T14:30:00Z\")\n private LocalDateTime createdDateTime;\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/device/util/AuditUtil.java", + "title": "AuditUtil.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/device/util/AuditUtil.java", + "language": "java", + "content": "package io.mosip.pms.device.util;\n\nimport java.io.IOException;\nimport java.net.InetAddress;\nimport java.net.UnknownHostException;\nimport java.time.LocalDateTime;\nimport java.util.List;\nimport java.util.concurrent.atomic.AtomicInteger;\nimport java.util.function.Predicate;\n\nimport javax.annotation.PostConstruct;\n\nimport io.mosip.pms.oidc.client.contant.ClientServiceAuditEnum;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.beans.factory.annotation.Qualifier;\nimport org.springframework.beans.factory.annotation.Value;\nimport org.springframework.http.HttpEntity;\nimport org.springframework.http.HttpMethod;\nimport org.springframework.http.MediaType;\nimport org.springframework.http.ResponseEntity;\nimport org.springframework.security.access.AccessDeniedException;\nimport org.springframework.security.authentication.BadCredentialsException;\nimport org.springframework.security.core.context.SecurityContextHolder;\nimport org.springframework.stereotype.Component;\nimport org.springframework.web.client.HttpClientErrorException;\nimport org.springframework.web.client.HttpServerErrorException;\nimport org.springframework.web.client.HttpStatusCodeException;\nimport org.springframework.web.client.RestTemplate;\n\nimport com.fasterxml.jackson.core.type.TypeReference;\nimport com.fasterxml.jackson.databind.ObjectMapper;\n\nimport io.mosip.kernel.core.authmanager.exception.AuthNException;\nimport io.mosip.kernel.core.authmanager.exception.AuthZException;\nimport io.mosip.kernel.core.exception.ExceptionUtils;\nimport io.mosip.kernel.core.exception.ServiceError;\nimport io.mosip.kernel.core.util.DateUtils;\nimport io.mosip.pms.common.constant.AuditErrorCode;\nimport io.mosip.pms.common.exception.ValidationException;\nimport io.mosip.pms.common.request.dto.RequestWrapper;\nimport io.mosip.pms.common.response.dto.ResponseWrapper;\nimport io.mosip.pms.common.util.RestUtil;\nimport io.mosip.pms.device.exception.DeviceServiceException;\nimport io.mosip.pms.device.util.dto.AuditRequestDto;\nimport io.mosip.pms.device.util.dto.AuditResponseDto;\nimport io.mosip.pms.partner.constant.PartnerServiceAuditEnum;\n\n@Component\npublic class AuditUtil {\n\n\t/** The Constant APPLICATION_ID. */\n\tprivate static final String APPLICATION_ID = \"MOSIP_7\";\n\n\t/** The Constant APPLICATION_NAME. */\n\tprivate static final String APPLICATION_NAME = \"PARTNER_MANAGEMENT\";\n\n\t/** The Constant UNKNOWN_HOST. */\n\tprivate static final String UNKNOWN_HOST = \"Unknown Host\";\n\t\n\tprivate static final String NOID = \"NO_ID\";\n\t\n\tprivate static final String NOIDTYPE= \"NO_ID_TYPE\";\n\n\tprivate String hostIpAddress = null;\n\n\tprivate String hostName = null;\n\n\tprivate AtomicInteger eventCounter;\n\n\t@Value(\"${mosip.kernel.masterdata.audit-url}\")\n\tprivate String auditUrl;\n\t\n\t@Autowired\n\tprivate ObjectMapper objectMapper;\n\n\t@Autowired\n\tRestUtil restUtil;\t\n\t\n\t@Autowired\n\t@Qualifier(\"selfTokenRestTemplate\")\n\tprivate RestTemplate restTemplate;\n\t\n\t/**\n\t * Audit request.\n\t *\n\t * @param auditRequestDto the audit request dto\n\t */\n\t@PostConstruct\n\tprivate void init() {\n\t\tif (System.getProperty(\"seqGen\") == null) {\n\t\t\teventCounter = new AtomicInteger(500);\n\t\t} else {\n\t\t\tInteger eventCount = Integer.getInteger(System.getProperty(\"seqGen\"));\n\t\t\teventCounter = new AtomicInteger(eventCount);\n\t\t}\n\n\t}\n\n\tpublic void auditRequest(String eventName, String eventType, String description) {\n\t\tString eventId = \"ADM-\" + eventCounter.incrementAndGet();\n\t\tsetAuditRequestDto(eventName, eventType, description, eventId, NOID, NOIDTYPE);\n\t}\n\n\tpublic void auditRequest(String eventName, String eventType, String description, String eventId) {\n\t\tsetAuditRequestDto(eventName, eventType, description, eventId, NOID, NOIDTYPE);\n\t}\n\t\n\tpublic void auditRequest(String eventName, String eventType, String description, String eventId, String refId, String refIdType) {\n\t\tsetAuditRequestDto(eventName, eventType, description, eventId, refId, refIdType);\n\t}\n\n\t/**\n\t * Sets the audit request dto.\n\t *\n\t * @param auditRequestDto the new audit request dto\n\t */\n\tprivate void setAuditRequestDto(String eventName, String eventType, String description, String eventId, String refId, String refIdType) {\n\t\tAuditRequestDto auditRequestDto = new AuditRequestDto();\n\t\tif (!validateSecurityContextHolder()) {\n\n\t\t}\n\n\t\tauditRequestDto.setEventId(eventId);\n\t\tauditRequestDto.setId(refId);\n\t\tauditRequestDto.setIdType(refIdType);\n\t\tauditRequestDto.setEventName(eventName);\n\t\tauditRequestDto.setEventType(eventType);\n\t\tauditRequestDto.setModuleId(\"PMP-AUT\");\n\t\tauditRequestDto.setModuleName(\"partner service\");\n\t\tauditRequestDto.setDescription(description);\n\t\tauditRequestDto.setActionTimeStamp(DateUtils.getUTCCurrentDateTime());\n\t\tauditRequestDto.setHostIp(hostIpAddress);\n\t\tauditRequestDto.setHostName(hostName);\n\t\tauditRequestDto.setApplicationId(APPLICATION_ID);\n\t\tauditRequestDto.setApplicationName(APPLICATION_NAME);\n\t\tauditRequestDto.setSessionUserId(SecurityContextHolder.getContext().getAuthentication().getName());\n\t\tauditRequestDto.setSessionUserName(SecurityContextHolder.getContext().getAuthentication().getName());\n\t\tauditRequestDto.setCreatedBy(SecurityContextHolder.getContext().getAuthentication().getName());\t\t\n\t\tcallAuditManager(auditRequestDto);\n\t}\n\t\n\tpublic void setAuditRequestDto(io.mosip.pms.partner.manager.constant.PartnerManageEnum PartnerManageEnum) {\n\t\tAuditRequestDto auditRequestDto = new AuditRequestDto();\n\t\tauditRequestDto.setHostIp(hostIpAddress);\n\t\tauditRequestDto.setHostName(hostName);\n\t\tauditRequestDto.setApplicationId(PartnerManageEnum.getApplicationId());\n\t\tauditRequestDto.setApplicationName(PartnerManageEnum.getApplicationName());\n\t\tauditRequestDto.setSessionUserId(SecurityContextHolder.getContext().getAuthentication().getName());\n\t\tauditRequestDto.setSessionUserName(SecurityContextHolder.getContext().getAuthentication().getName());\n\t\tauditRequestDto.setCreatedBy(SecurityContextHolder.getContext().getAuthentication().getName());\n\t\tauditRequestDto.setActionTimeStamp(DateUtils.getUTCCurrentDateTime());\n\t\tauditRequestDto.setDescription(PartnerManageEnum.getDescription());\n\t\tauditRequestDto.setEventType(PartnerManageEnum.getType());\n\t\tauditRequestDto.setEventName(PartnerManageEnum.getName());\n\t\tauditRequestDto.setModuleId(PartnerManageEnum.getModuleId());\n\t\tauditRequestDto.setModuleName(PartnerManageEnum.getModuleName());\n\t\tauditRequestDto.setEventId(PartnerManageEnum.getEventId());\n\t\tauditRequestDto.setId(PartnerManageEnum.getId());\n\t\tauditRequestDto.setIdType(PartnerManageEnum.getIdType());\n\t\tcallAuditManager(auditRequestDto);\n\t}\n\t\n\tpublic void setAuditRequestDto(io.mosip.pms.partner.manager.constant.PartnerManageEnum PartnerManageEnum, String refId, String refIdType) {\n\t\tAuditRequestDto auditRequestDto = new AuditRequestDto();\n\t\tauditRequestDto.setHostIp(hostIpAddress);\n\t\tauditRequestDto.setHostName(hostName);\n\t\tauditRequestDto.setApplicationId(PartnerManageEnum.getApplicationId());\n\t\tauditRequestDto.setApplicationName(PartnerManageEnum.getApplicationName());\n\t\tauditRequestDto.setSessionUserId(SecurityContextHolder.getContext().getAuthentication().getName());\n\t\tauditRequestDto.setSessionUserName(SecurityContextHolder.getContext().getAuthentication().getName());\n\t\tauditRequestDto.setCreatedBy(SecurityContextHolder.getContext().getAuthentication().getName());\n\t\tauditRequestDto.setActionTimeStamp(DateUtils.getUTCCurrentDateTime());\n\t\tauditRequestDto.setDescription(PartnerManageEnum.getDescription());\n\t\tauditRequestDto.setEventType(PartnerManageEnum.getType());\n\t\tauditRequestDto.setEventName(PartnerManageEnum.getName());\n\t\tauditRequestDto.setModuleId(PartnerManageEnum.getModuleId());\n\t\tauditRequestDto.setModuleName(PartnerManageEnum.getModuleName());\n\t\tauditRequestDto.setEventId(PartnerManageEnum.getEventId());\n\t\tauditRequestDto.setId(refId);\n\t\tauditRequestDto.setIdType(refIdType);\n\t\tcallAuditManager(auditRequestDto);\n\t}\n\t\n\tpublic void setAuditRequestDto(PartnerServiceAuditEnum PartnerManageEnum) {\n\t\tAuditRequestDto auditRequestDto = new AuditRequestDto();\n\t\tauditRequestDto.setHostIp(hostIpAddress);\n\t\tauditRequestDto.setHostName(hostName);\n\t\tauditRequestDto.setApplicationId(PartnerManageEnum.getApplicationId());\n\t\tauditRequestDto.setApplicationName(PartnerManageEnum.getApplicationName());\n\t\tauditRequestDto.setSessionUserId(SecurityContextHolder.getContext().getAuthentication().getName());\n\t\tauditRequestDto.setSessionUserName(SecurityContextHolder.getContext().getAuthentication().getName());\n\t\tauditRequestDto.setCreatedBy(SecurityContextHolder.getContext().getAuthentication().getName());\n\t\tauditRequestDto.setActionTimeStamp(DateUtils.getUTCCurrentDateTime());\n\t\tauditRequestDto.setDescription(PartnerManageEnum.getDescription());\n\t\tauditRequestDto.setEventType(PartnerManageEnum.getType());\n\t\tauditRequestDto.setEventName(PartnerManageEnum.getName());\n\t\tauditRequestDto.setModuleId(PartnerManageEnum.getModuleId());\n\t\tauditRequestDto.setModuleName(PartnerManageEnum.getModuleName());\n\t\tauditRequestDto.setEventId(PartnerManageEnum.getEventId());\n\t\tauditRequestDto.setId(PartnerManageEnum.getId());\n\t\tauditRequestDto.setIdType(PartnerManageEnum.getIdType());\n\t\tcallAuditManager(auditRequestDto);\n\t}\n\t\n\tpublic void setAuditRequestDto(PartnerServiceAuditEnum PartnerManageEnum, String refId, String refIdType) {\n\t\tAuditRequestDto auditRequestDto = new AuditRequestDto();\n\t\tauditRequestDto.setHostIp(hostIpAddress);\n\t\tauditRequestDto.setHostName(hostName);\n\t\tauditRequestDto.setApplicationId(PartnerManageEnum.getApplicationId());\n\t\tauditRequestDto.setApplicationName(PartnerManageEnum.getApplicationName());\n\t\tauditRequestDto.setSessionUserId(SecurityContextHolder.getContext().getAuthentication().getName());\n\t\tauditRequestDto.setSessionUserName(SecurityContextHolder.getContext().getAuthentication().getName());\n\t\tauditRequestDto.setCreatedBy(SecurityContextHolder.getContext().getAuthentication().getName());\n\t\tauditRequestDto.setActionTimeStamp(DateUtils.getUTCCurrentDateTime());\n\t\tauditRequestDto.setDescription(PartnerManageEnum.getDescription());\n\t\tauditRequestDto.setEventType(PartnerManageEnum.getType());\n\t\tauditRequestDto.setEventName(PartnerManageEnum.getName());\n\t\tauditRequestDto.setModuleId(PartnerManageEnum.getModuleId());\n\t\tauditRequestDto.setModuleName(PartnerManageEnum.getModuleName());\n\t\tauditRequestDto.setEventId(PartnerManageEnum.getEventId());\n\t\tauditRequestDto.setId(refId);\n\t\tauditRequestDto.setIdType(refIdType);\n\t\tcallAuditManager(auditRequestDto);\n\t}\n\n\t/**\n\t * Validate security context holder.\n\t *\n\t * @return true, if successful\n\t */\n\tprivate boolean validateSecurityContextHolder() {\n\t\tPredicate contextPredicate = i -> SecurityContextHolder.getContext() != null;\n\t\tPredicate authPredicate = i -> SecurityContextHolder.getContext()\n\t\t\t\t.getAuthentication() != null;\n\t\tPredicate principlePredicate = i -> SecurityContextHolder.getContext()\n\t\t\t\t.getAuthentication().getPrincipal() != null;\n\t\treturn contextPredicate.and(authPredicate).and(principlePredicate) != null;\n\n\t}\n\n\t/**\n\t * Gets the server ip.\n\t *\n\t * @return the server ip\n\t */\n\tpublic String getServerIp() {\n\t\ttry {\n\t\t\treturn InetAddress.getLocalHost().getHostAddress();\n\t\t} catch (UnknownHostException e) {\n\t\t\treturn UNKNOWN_HOST;\n\t\t}\n\t}\n\n\t/**\n\t * Gets the server name.\n\t *\n\t * @return the server name\n\t */\n\tpublic String getServerName() {\n\t\ttry {\n\t\t\treturn InetAddress.getLocalHost().getHostName();\n\t\t} catch (UnknownHostException e) {\n\t\t\treturn UNKNOWN_HOST;\n\t\t}\n\t}\n\n\t/**\n\t * To Set the Host Ip & Host Name\n\t */\n\t@PostConstruct\n\tpublic void getHostDetails() {\n\t\thostIpAddress = getServerIp();\n\t\thostName = getServerName();\n\t}\n\n\t/**\n\t * For Auditing Login Services\n\t * \n\t * @param auditRequestDto\n\t * @param token\n\t * @return\n\t */\n\tpublic void callAuditManager(AuditRequestDto auditRequestDto) {\n\n\t\tRequestWrapper auditReuestWrapper = new RequestWrapper<>();\n\t\tauditReuestWrapper.setRequest(auditRequestDto);\n\t\tHttpEntity> httpEntity = new HttpEntity<>(auditReuestWrapper);\n\t\tResponseEntity response =null;\n\t\ttry {\n\t\t\tresponse = restTemplate.exchange(auditUrl, HttpMethod.POST, httpEntity, String.class);\n\n\t\t} catch (HttpClientErrorException | HttpServerErrorException ex) {\n\t\t\thandlException(ex);\n\t\t}\n\t\tString responseBody = response.getBody();\n\t\tgetAuditDetailsFromResponse(responseBody);\n\n\t}\n\n\tprivate AuditResponseDto getAuditDetailsFromResponse(String responseBody) {\n\n\t\tList validationErrorsList = null;\n\t\tvalidationErrorsList = ExceptionUtils.getServiceErrorList(responseBody);\n\t\tAuditResponseDto auditResponseDto = null;\n\t\tif (!validationErrorsList.isEmpty()) {\n\t\t\tthrow new ValidationException(validationErrorsList);\n\t\t}\n\t\tResponseWrapper responseObject = null;\n\t\ttry {\n\n\t\t\tresponseObject = objectMapper.readValue(responseBody,\n\t\t\t\t\tnew TypeReference>() {\n\t\t\t\t\t});\n\t\t\tauditResponseDto = responseObject.getResponse();\n\t\t} catch (IOException | NullPointerException exception) {\n\t\t\tthrow new DeviceServiceException(AuditErrorCode.AUDIT_PARSE_EXCEPTION.getErrorCode(),\n\t\t\t\t\tAuditErrorCode.AUDIT_PARSE_EXCEPTION.getErrorMessage());\n\t\t}\n\n\t\treturn auditResponseDto;\n\t}\n\n\tprivate void handlException(HttpStatusCodeException ex) {\n\t\tList validationErrorsList = ExceptionUtils.getServiceErrorList(ex.getResponseBodyAsString());\n\n\t\tif (ex.getRawStatusCode() == 401) {\n\t\t\tif (!validationErrorsList.isEmpty()) {\n\t\t\t\tthrow new AuthNException(validationErrorsList);\n\t\t\t} else {\n\t\t\t\tthrow new BadCredentialsException(\"Authentication failed from AuthManager\");\n\t\t\t}\n\t\t}\n\t\tif (ex.getRawStatusCode() == 403) {\n\t\t\tif (!validationErrorsList.isEmpty()) {\n\t\t\t\tthrow new AuthZException(validationErrorsList);\n\t\t\t} else {\n\t\t\t\tthrow new AccessDeniedException(\"Access denied from AuthManager\");\n\t\t\t}\n\t\t}\n\t\tthrow new DeviceServiceException(AuditErrorCode.AUDIT_EXCEPTION.getErrorCode(),\n\t\t\t\tAuditErrorCode.AUDIT_EXCEPTION.getErrorMessage() + ex);\n\n\t}\n\n\tpublic void setAuditRequestDto(ClientServiceAuditEnum clientServiceAuditEnum, String refId, String refIdType) {\n\t\tAuditRequestDto auditRequestDto = new AuditRequestDto();\n\t\tauditRequestDto.setHostIp(hostIpAddress);\n\t\tauditRequestDto.setHostName(hostName);;\n\t\tauditRequestDto.setApplicationId(clientServiceAuditEnum.getApplicationId());\n\t\tauditRequestDto.setApplicationName(clientServiceAuditEnum.getApplicationName());\n\t\tauditRequestDto.setSessionUserId(SecurityContextHolder.getContext().getAuthentication().getName());\n\t\tauditRequestDto.setSessionUserName(SecurityContextHolder.getContext().getAuthentication().getName());\n\t\tauditRequestDto.setCreatedBy(SecurityContextHolder.getContext().getAuthentication().getName());\n\t\tauditRequestDto.setActionTimeStamp(DateUtils.getUTCCurrentDateTime());\n\t\tauditRequestDto.setDescription(clientServiceAuditEnum.getDescription());\n\t\tauditRequestDto.setEventType(clientServiceAuditEnum.getType());\n\t\tauditRequestDto.setEventName(clientServiceAuditEnum.getName());\n\t\tauditRequestDto.setModuleId(clientServiceAuditEnum.getModuleId());\n\t\tauditRequestDto.setModuleName(clientServiceAuditEnum.getModuleName());\n\t\tauditRequestDto.setEventId(clientServiceAuditEnum.getEventId());\n\t\tauditRequestDto.setId(refId);\n\t\tauditRequestDto.setIdType(refIdType);\n\t\tcallAuditManager(auditRequestDto);\n\t}\n\n\tpublic void setAuditRequestDto(ClientServiceAuditEnum clientServiceAuditEnum) {\n\t\tAuditRequestDto auditRequestDto = new AuditRequestDto();\n\t\tauditRequestDto.setHostIp(hostIpAddress);\n\t\tauditRequestDto.setHostName(hostName);;\n\t\tauditRequestDto.setApplicationId(clientServiceAuditEnum.getApplicationId());\n\t\tauditRequestDto.setApplicationName(clientServiceAuditEnum.getApplicationName());\n\t\tauditRequestDto.setSessionUserId(SecurityContextHolder.getContext().getAuthentication().getName());\n\t\tauditRequestDto.setSessionUserName(SecurityContextHolder.getContext().getAuthentication().getName());\n\t\tauditRequestDto.setCreatedBy(SecurityContextHolder.getContext().getAuthentication().getName());\n\t\tauditRequestDto.setActionTimeStamp(DateUtils.getUTCCurrentDateTime());\n\t\tauditRequestDto.setDescription(clientServiceAuditEnum.getDescription());\n\t\tauditRequestDto.setEventType(clientServiceAuditEnum.getType());\n\t\tauditRequestDto.setEventName(clientServiceAuditEnum.getName());\n\t\tauditRequestDto.setModuleId(clientServiceAuditEnum.getModuleId());\n\t\tauditRequestDto.setModuleName(clientServiceAuditEnum.getModuleName());\n\t\tauditRequestDto.setEventId(clientServiceAuditEnum.getEventId());\n\t\tcallAuditManager(auditRequestDto);\n\t}\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/device/util/DeviceHelper.java", + "title": "DeviceHelper.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/device/util/DeviceHelper.java", + "language": "java", + "content": "package io.mosip.pms.device.util;\n\nimport io.mosip.kernel.core.logger.spi.Logger;\nimport io.mosip.kernel.core.util.EmptyCheckUtils;\nimport io.mosip.pms.common.constant.CommonConstant;\nimport io.mosip.pms.common.util.PMSLogger;\nimport io.mosip.pms.device.authdevice.entity.DeviceDetail;\nimport io.mosip.pms.device.authdevice.repository.DeviceDetailRepository;\nimport io.mosip.pms.device.constant.DeviceConstant;\nimport io.mosip.pms.device.constant.DeviceDetailExceptionsConstant;\nimport io.mosip.pms.device.request.dto.DeviceDetailDto;\nimport io.mosip.pms.partner.constant.ErrorCode;\nimport io.mosip.pms.partner.exception.PartnerServiceException;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.beans.factory.annotation.Value;\nimport org.springframework.security.core.Authentication;\nimport org.springframework.security.core.context.SecurityContextHolder;\nimport org.springframework.stereotype.Component;\n\nimport java.time.LocalDateTime;\nimport java.time.ZoneId;\n\n@Component\npublic class DeviceHelper {\n\n private static final Logger LOGGER = PMSLogger.getLogger(DeviceHelper.class);\n\n @Value(\"${mosip.pms.id.generation.max.retries}\")\n private int maxRetries;\n\n @Autowired\n DeviceDetailRepository deviceDetailRepository;\n\n @Autowired\n AuditUtil auditUtil;\n\n public DeviceDetail getCreateMapping(DeviceDetail deviceDetail, DeviceDetailDto deviceDetailDto) {\n String id = deviceDetailDto.getId();\n\n if (id != null && !id.isBlank()) {\n if (deviceDetailRepository.existsById(id)) {\n LOGGER.error(\"Device Detail with same Id already exists: {}\", id);\n sendAuditLogAndThrowException(\n DeviceDetailExceptionsConstant.DEVICE_DETAIL_EXIST.getErrorCode(),\n DeviceDetailExceptionsConstant.DEVICE_DETAIL_EXIST.getErrorMessage(),\n \"AUT-002\",\n deviceDetailDto.getDeviceProviderId(),\n ErrorCode.DEVICE_DETAIL_ID_ALREADY_EXISTS.getErrorCode(),\n ErrorCode.DEVICE_DETAIL_ID_ALREADY_EXISTS.getErrorMessage()\n );\n }\n } else {\n id = generateUniqueDeviceId(deviceDetail, deviceDetailDto);\n }\n\n deviceDetail.setId(id);\n deviceDetail.setIsActive(false);\n deviceDetail.setIsDeleted(false);\n deviceDetail.setApprovalStatus(CommonConstant.PENDING_APPROVAL);\n Authentication authN = SecurityContextHolder.getContext().getAuthentication();\n if (!EmptyCheckUtils.isNullEmpty(authN)) {\n deviceDetail.setCrBy(authN.getName());\n }\n deviceDetail.setCrDtimes(LocalDateTime.now(ZoneId.of(\"UTC\")));\n deviceDetail.setDeviceProviderId(deviceDetailDto.getDeviceProviderId());\n deviceDetail.setMake(deviceDetailDto.getMake());\n deviceDetail.setModel(deviceDetailDto.getModel());\n return deviceDetail;\n }\n\n private String generateUniqueDeviceId(DeviceDetail deviceDetail, DeviceDetailDto deviceDetailDto) {\n String id;\n // Generate ID and ensure uniqueness\n int attempts = 0;\n id = DeviceUtil.generateId();\n\n while (deviceDetailRepository.existsById(id)) {\n if (attempts >= maxRetries) {\n LOGGER.error(\"Failed to generate unique {} (field: '{}') for entity '{}' after {} attempts\",\n \"Device Detail ID\", \"id\", deviceDetail.getClass().getSimpleName(), maxRetries);\n\n sendAuditLogAndThrowException(\n DeviceDetailExceptionsConstant.DEVICE_DETAIL_ID_GENERATION_FAILURE.getErrorCode(),\n DeviceDetailExceptionsConstant.DEVICE_DETAIL_ID_GENERATION_FAILURE.getErrorMessage(),\n \"AUT-003\",\n deviceDetailDto.getDeviceProviderId(),\n ErrorCode.UNABLE_TO_GENERATE_UNIQUE_ID.getErrorCode(),\n String.format(ErrorCode.UNABLE_TO_GENERATE_UNIQUE_ID.getErrorMessage(),\n \"Device Detail ID\", \"id\", deviceDetail.getClass().getSimpleName(), maxRetries)\n );\n }\n id = DeviceUtil.generateId();\n attempts++;\n }\n return id;\n }\n\n private void sendAuditLogAndThrowException(\n String auditErrorCode,\n String auditErrorMessage,\n String auditCode,\n String deviceProviderId,\n String exceptionErrorCode,\n String exceptionErrorMessage) {\n\n // Audit\n auditUtil.auditRequest(\n String.format(DeviceConstant.FAILURE_CREATE, DeviceDetail.class.getCanonicalName()),\n DeviceConstant.AUDIT_SYSTEM,\n String.format(DeviceConstant.FAILURE_DESC, auditErrorCode, auditErrorMessage),\n auditCode,\n deviceProviderId,\n \"partnerId\"\n );\n\n // Throw\n throw new PartnerServiceException(exceptionErrorCode, exceptionErrorMessage);\n }\n}" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/device/util/DeviceUtil.java", + "title": "DeviceUtil.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/device/util/DeviceUtil.java", + "language": "java", + "content": "package io.mosip.pms.device.util;\n\nimport java.security.SecureRandom;\n\npublic class DeviceUtil {\n\n\t/**\n\t * \n\t * @return\n\t */\n\tpublic static String generateId(){\n\t\tSecureRandom random = new SecureRandom();\n\t\treturn random.nextInt((100000)) + \"\";\n\t}\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/device/util/dto/AuditRequestDto.java", + "title": "AuditRequestDto.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/device/util/dto/AuditRequestDto.java", + "language": "java", + "content": "package io.mosip.pms.device.util.dto;\n\nimport java.time.LocalDateTime;\n\nimport javax.validation.constraints.NotNull;\nimport javax.validation.constraints.Size;\n\nimport com.fasterxml.jackson.annotation.JsonFormat;\n\nimport lombok.AllArgsConstructor;\nimport lombok.Data;\nimport lombok.NoArgsConstructor;\n\n@Data\n@NoArgsConstructor\n@AllArgsConstructor\npublic class AuditRequestDto {\n\t@NotNull\n\t@Size(min = 1, max = 64)\n\tprivate String eventId;\n\n\t@NotNull\n\t@Size(min = 1, max = 128)\n\tprivate String eventName;\n\n\t@NotNull\n\t@Size(min = 1, max = 64)\n\tprivate String eventType;\n\n\t@NotNull\n\t@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = \"yyyy-MM-dd'T'HH:mm:ss.SSS'Z'\")\n\tprivate LocalDateTime actionTimeStamp;\n\n\t@NotNull\n\t@Size(min = 1, max = 128)\n\tprivate String hostName;\n\n\t@NotNull\n\t@Size(min = 1, max = 16)\n\tprivate String hostIp;\n\n\t@NotNull\n\t@Size(min = 1, max = 64)\n\tprivate String applicationId;\n\n\t@NotNull\n\t@Size(min = 1, max = 128)\n\tprivate String applicationName;\n\n\t@NotNull\n\t@Size(min = 1, max = 256)\n\tprivate String sessionUserId;\n\n\t@Size(min = 1, max = 128)\n\tprivate String sessionUserName;\n\n\t@NotNull\n\t@Size(min = 1, max = 64)\n\n\tprivate String id;\n\t@NotNull\n\t@Size(min = 1, max = 64)\n\tprivate String idType;\n\n\t@NotNull\n\t@Size(min = 1, max = 256)\n\tprivate String createdBy;\n\n\t@Size(max = 128)\n\tprivate String moduleName;\n\n\t@Size(max = 64)\n\tprivate String moduleId;\n\n\t@Size(max = 2048)\n\tprivate String description;\n\n\tprivate transient int eventIdCounter = 800;\n}\n\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/device/util/dto/AuditResponseDto.java", + "title": "AuditResponseDto.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/device/util/dto/AuditResponseDto.java", + "language": "java", + "content": "package io.mosip.pms.device.util.dto;\n\nimport lombok.AllArgsConstructor;\nimport lombok.Data;\nimport lombok.NoArgsConstructor;\n\n@Data\n@NoArgsConstructor\n@AllArgsConstructor\npublic class AuditResponseDto {\n\n\t/** The status. */\n\tprivate boolean status;\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/device/validator/CertificateLevelValidator.java", + "title": "CertificateLevelValidator.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/device/validator/CertificateLevelValidator.java", + "language": "java", + "content": "package io.mosip.pms.device.validator;\n\nimport javax.validation.ConstraintValidator;\nimport javax.validation.ConstraintValidatorContext;\n\nimport org.springframework.web.client.RestClientException;\n\nimport io.mosip.kernel.core.util.EmptyCheckUtils;\nimport io.mosip.pms.common.exception.RequestException;\nimport io.mosip.pms.device.constant.RegisteredDeviceErrorCode;\nimport lombok.Data;\n\n@Data\npublic class CertificateLevelValidator implements ConstraintValidator {\n\t/*\n\t * (non-Javadoc)\n\t * \n\t * @see javax.validation.ConstraintValidator#isValid(java.lang.Object,\n\t * javax.validation.ConstraintValidatorContext)\n\t */\n\t@Override\n\tpublic boolean isValid(String certificationLevel, ConstraintValidatorContext context) {\n\t\tif (EmptyCheckUtils.isNullEmpty(certificationLevel) || certificationLevel.trim().length() > 3) {\n\t\t\treturn false;\n\t\t} else {\n\t\t\ttry {\n\n\t\t\t\tfor (String string : RegisteredDeviceConstant.CERTIFICATELEVELARR) {\n\t\t\t\t\tif (certificationLevel.equals(string)) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (RestClientException e) {\n\t\t\t\tthrow new RequestException(\n\t\t\t\t\t\tRegisteredDeviceErrorCode.CERTIFICATION_LEVEL_VALIDATION_EXCEPTION.getErrorCode(),\n\t\t\t\t\t\tRegisteredDeviceErrorCode.CERTIFICATION_LEVEL_VALIDATION_EXCEPTION.getErrorMessage() + \" \"\n\t\t\t\t\t\t\t\t+ e.getMessage());\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\t}\n}\n\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/device/validator/FoundationalValidator.java", + "title": "FoundationalValidator.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/device/validator/FoundationalValidator.java", + "language": "java", + "content": "package io.mosip.pms.device.validator;\n//package io.mosip.pmp.authdevice.util;\n//\n//import javax.validation.ConstraintValidator;\n//import javax.validation.ConstraintValidatorContext;\n//\n//import org.springframework.web.client.RestClientException;\n//\n//import io.mosip.kernel.core.util.EmptyCheckUtils;\n//import io.mosip.pmp.authdevice.constants.RegisteredDeviceErrorCode;\n//import io.mosip.pmp.authdevice.dto.DeviceData;\n//import io.mosip.pmp.authdevice.dto.DeviceInfo;\n//import io.mosip.pmp.authdevice.exception.RequestException;\n//\n//public class FoundationalValidator implements ConstraintValidator {\n//\n//\t/*\n//\t * (non-Javadoc)\n//\t * \n//\t * @see javax.validation.ConstraintValidator#isValid(java.lang.Object,\n//\t * javax.validation.ConstraintValidatorContext)\n//\t */\n//\t@Override\n//\tpublic boolean isValid(DeviceInfo deviceInfo, ConstraintValidatorContext context) {\n//\t\tif (deviceInfo == null || deviceInfo.getCertification() == null)\n//\t\t\t\t{\n//\t\t\treturn false;\n//\t\t} else {\n//\t\t\ttry {\n//\t\t\t\tif (deviceInfo.getCertification().equals(RegisteredDeviceConstant.L1)) {\n//\t\t\t\t\tif (EmptyCheckUtils.isNullEmpty(deviceInfo.getFoundationalTrustProviderId())\n//\t\t\t\t\t/*\n//\t\t\t\t\t * || EmptyCheckUtils.isNullEmpty(value.getFoundationalTrustSignature()) ||\n//\t\t\t\t\t * EmptyCheckUtils.isNullEmpty(value.getFoundationalTrustCertificate())\n//\t\t\t\t\t */\n//\t\t\t\t\t)\n//\t\t\t\t\t\treturn false;\n//\t\t\t\t} else if (deviceData.getDeviceInfo().getCertification().equals(RegisteredDeviceConstant.L0)) {\n//\t\t\t\t\tif (EmptyCheckUtils.isNullEmpty(deviceData.getFoundationalTrustProviderId())\n//\t\t\t\t\t/*\n//\t\t\t\t\t * || EmptyCheckUtils.isNullEmpty(value.getFoundationalTrustSignature()) ||\n//\t\t\t\t\t * EmptyCheckUtils.isNullEmpty(value.getFoundationalTrustCertificate())\n//\t\t\t\t\t */ )\n//\t\t\t\t\t\treturn true;\n//\t\t\t\t} else {\n//\t\t\t\t\tif (EmptyCheckUtils.isNullEmpty(deviceData.getFoundationalTrustProviderId())\n//\t\t\t\t\t/*\n//\t\t\t\t\t * || EmptyCheckUtils.isNullEmpty(value.getFoundationalTrustSignature()) ||\n//\t\t\t\t\t * EmptyCheckUtils.isNullEmpty(value.getFoundationalTrustCertificate())\n//\t\t\t\t\t */ )\n//\t\t\t\t\t\treturn true;\n//\t\t\t\t}\n//\n//\t\t\t} catch (RestClientException e) {\n//\t\t\t\tthrow new RequestException(RegisteredDeviceErrorCode.FOUNDATIONAL_VALUE.getErrorCode(),\n//\t\t\t\t\t\tRegisteredDeviceErrorCode.FOUNDATIONAL_VALUE.getErrorMessage() + \" \" + e.getMessage());\n//\t\t\t}\n//\t\t\treturn true;\n//\t\t}\n//\t}\n//}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/device/validator/PurposeValidator.java", + "title": "PurposeValidator.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/device/validator/PurposeValidator.java", + "language": "java", + "content": "package io.mosip.pms.device.validator;\n\nimport javax.validation.ConstraintValidator;\nimport javax.validation.ConstraintValidatorContext;\n\nimport org.springframework.web.client.RestClientException;\n\nimport io.mosip.kernel.core.util.EmptyCheckUtils;\nimport io.mosip.pms.common.exception.RequestException;\nimport io.mosip.pms.device.constant.RegisteredDeviceErrorCode;\nimport lombok.Data;\n\n@Data\npublic class PurposeValidator implements ConstraintValidator{\n\t@Override\n\tpublic boolean isValid(String statusCode, ConstraintValidatorContext context) {\n\t\tif (EmptyCheckUtils.isNullEmpty(statusCode)) {\n\t\t\treturn false;\n\t\t} else {\n\t\t\ttry {\n\n\t\t\t\tfor (String string : RegisteredDeviceConstant.PURPOSEARR) {\n\t\t\t\t\tif (statusCode.equalsIgnoreCase(string)) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (RestClientException e) {\n\t\t\t\tthrow new RequestException(RegisteredDeviceErrorCode.PURPOSE_VALIDATION_EXCEPTION.getErrorCode(),\n\t\t\t\t\t\tRegisteredDeviceErrorCode.PURPOSE_VALIDATION_EXCEPTION.getErrorMessage() + \" \"\n\t\t\t\t\t\t\t\t+ e.getMessage());\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\t}\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/device/validator/RegisteredDeviceConstant.java", + "title": "RegisteredDeviceConstant.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/device/validator/RegisteredDeviceConstant.java", + "language": "java", + "content": "package io.mosip.pms.device.validator;\n\npublic class RegisteredDeviceConstant {\n\tpublic static final String REGISTRATION = \"Registration\";\n\tpublic static final String AUTH = \"Auth\";\n\tstatic final String PURPOSEARR[] = { REGISTRATION, AUTH };\n\n\t// PurposeValidator values\n\tpublic static final String REGISTERED = \"registered\";\n\tpublic static final String RETIRED = \"retired\";\n\tpublic static final String REVOKED = \"revoked\";\n\tstatic final String STATUSARR[] = { REGISTERED, RETIRED, REVOKED };\n\n\t// TypeValidator values\n\tpublic static final String FINGERPRINT = \"Fingerprint\";\n\tpublic static final String SLAB_FINGERPRINT = \"Slab Fingerprint\";\n\tpublic static final String IRIS_MONOCULAR = \"Iris Monocular\";\n\tpublic static final String IRIS_BINOCULAR = \"Iris Binocular\";\n\tpublic static final String FACE = \"Face\";\n\tstatic final String TYPEARR[] = { FINGERPRINT, SLAB_FINGERPRINT, IRIS_MONOCULAR, IRIS_BINOCULAR, FACE };\n\n\t// CertificateLevelValidator values\n\tpublic static final String L0 = \"L0\";\n\tpublic static final String L1 = \"L1\";\n\tpublic static final String L2 = \"L2\";\n\tstatic final String CERTIFICATELEVELARR[] = { L0, L1, L2 };\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/device/validator/ValidCertificateLevel.java", + "title": "ValidCertificateLevel.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/device/validator/ValidCertificateLevel.java", + "language": "java", + "content": "package io.mosip.pms.device.validator;\n\nimport java.lang.annotation.Documented;\nimport java.lang.annotation.Retention;\nimport java.lang.annotation.Target;\nimport java.lang.annotation.ElementType;\nimport java.lang.annotation.RetentionPolicy;\nimport javax.validation.Constraint;\nimport javax.validation.Payload;\n\n@Documented\n@Constraint(validatedBy = CertificateLevelValidator.class)\n@Target(ElementType.FIELD)\n@Retention(RetentionPolicy.RUNTIME)\npublic @interface ValidCertificateLevel {\n\tString message() default \"Certificate Level not supported\";\n\n\tClass[] groups() default {};\n\n\tClass[] payload() default {};\n\n}" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/device/validator/ValidFoundational.java", + "title": "ValidFoundational.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/device/validator/ValidFoundational.java", + "language": "java", + "content": "package io.mosip.pms.device.validator;\n\nimport java.lang.annotation.Documented;\nimport java.lang.annotation.ElementType;\nimport java.lang.annotation.Retention;\nimport java.lang.annotation.RetentionPolicy;\nimport java.lang.annotation.Target;\n\nimport javax.validation.Payload;\n\n@Documented\n//@Constraint(validatedBy = FoundationalValidator.class)\n@Target(ElementType.TYPE)\n@Retention(RetentionPolicy.RUNTIME)\npublic @interface ValidFoundational {\n\tString message() default \"If certification level received is L1 then FoundationalTPId OR FoundationalTrustSignature OR FoundationalTrustCertificate should not be null or empty\";\n\n\tClass[] groups() default {};\n\n\tClass[] payload() default {};\n\n\tString baseField();\n\n\tString[] matchField();\n\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/device/validator/ValidPurpose.java", + "title": "ValidPurpose.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/device/validator/ValidPurpose.java", + "language": "java", + "content": "package io.mosip.pms.device.validator;\n\nimport java.lang.annotation.Documented;\nimport java.lang.annotation.Retention;\nimport java.lang.annotation.Target;\nimport java.lang.annotation.ElementType;\nimport java.lang.annotation.RetentionPolicy;\nimport javax.validation.Constraint;\nimport javax.validation.Payload;\n\n@Documented\n@Constraint(validatedBy = PurposeValidator.class)\n@Target(ElementType.FIELD)\n@Retention(RetentionPolicy.RUNTIME)\npublic @interface ValidPurpose {\n\tString message() default \"Purpose value not supported\";\n\n\tClass[] groups() default {};\n\n\tClass[] payload() default {};\n\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/notification/job/PartnerNotificationScheduledJob.java", + "title": "PartnerNotificationScheduledJob.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/notification/job/PartnerNotificationScheduledJob.java", + "language": "java", + "content": "package io.mosip.pms.notification.job;\n\nimport java.time.LocalDateTime;\nimport java.util.ArrayList;\nimport java.util.List;\nimport java.util.stream.Collectors;\n\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.beans.factory.annotation.Value;\nimport org.springframework.scheduling.annotation.Scheduled;\nimport org.springframework.stereotype.Component;\n\nimport io.mosip.kernel.core.logger.spi.Logger;\nimport io.mosip.pms.common.constant.EventType;\nimport io.mosip.pms.common.entity.AuthPolicy;\nimport io.mosip.pms.common.entity.PartnerPolicy;\nimport io.mosip.pms.common.repository.AuthPolicyRepository;\nimport io.mosip.pms.common.repository.PartnerPolicyRepository;\nimport io.mosip.pms.common.response.dto.NotificationDto;\nimport io.mosip.pms.common.service.NotificatonService;\nimport io.mosip.pms.common.util.PMSLogger;\nimport io.mosip.pms.partner.constant.PartnerConstants;\n\n@Component\npublic class PartnerNotificationScheduledJob {\n\n\tprivate Logger log = PMSLogger.getLogger(PartnerNotificationScheduledJob.class);\n\n\t@Autowired\n\tPartnerPolicyRepository partnerPolicyRepo;\n\n\t@Autowired\n\tAuthPolicyRepository policyRepo;\n\n\t@Autowired\n\tNotificatonService notificationService;\n\n\t@Value(\"${notifications.sent.before.days:3}\")\n\tprivate int notificationsSentBeforeDays;\n\n\t@Scheduled(initialDelayString = \"#{60 * 60 * 1000 * ${pms.notifications-schedule.init-delay}}\", fixedRateString = \"#{60 * 60 * 1000 * ${pms.notifications-schedule.fixed-rate}}\")\n\tpublic void getAllAPIKeys() {\n\t\tList notificationsDto = new ArrayList<>();\n\t\tList partnerMappedPolices = partnerPolicyRepo.findAPIKeysLessThanGivenDate(\n\t\t\t\tLocalDateTime.now().plusDays(notificationsSentBeforeDays), LocalDateTime.now());\n\t\tlog.info(\"TotalNoOfRecords \" + partnerMappedPolices.size() + \"with date less than \"\n\t\t\t\t+ LocalDateTime.now().plusDays(notificationsSentBeforeDays));\n\t\tif (partnerMappedPolices.size() > 0) {\n\t\t\tList policies = getPolicies(partnerMappedPolices);\n\t\t\tfor (PartnerPolicy partnerPolicy : partnerMappedPolices) {\n\t\t\t\tAuthPolicy policy = policies.stream().filter(p -> p.getId().equals(partnerPolicy.getPolicyId()))\n\t\t\t\t\t\t.findFirst().orElse(null);\n\t\t\t\tnotificationsDto.add(prepareNotificationDto(partnerPolicy, policy));\n\t\t\t}\n\t\t}\n\n\t\tif (notificationsDto.size() > 0) {\n\t\t\t\n\t\t\ttry {\n\t\t\t\tnotificationService.sendNotications(EventType.APIKEY_EXPIRED, notificationsDto);\n\t\t\t} catch (Exception e) {\n\t\t\t\tlog.error(\"Error occured while sending the APIKEY_EXPIRED notifications.\", e.getLocalizedMessage(),\n\t\t\t\t\t\te.getMessage());\n\t\t\t}\n\t\t\tlog.info(\"Notifications sent successfully.\",LocalDateTime.now());\n\t\t}\n\t}\n\n\t/**\n\t * \n\t * @param partnerPolicy\n\t * @param policy\n\t * @return\n\t */\n\tprivate NotificationDto prepareNotificationDto(PartnerPolicy partnerPolicy, AuthPolicy policy) {\n\t\tNotificationDto dto = new NotificationDto();\n\t\tdto.setApiKey(partnerPolicy.getPolicyApiKey());\n\t\tdto.setApiKeyExpiryDate(partnerPolicy.getValidToDatetime().toLocalDateTime());\n\t\tdto.setEmailId(partnerPolicy.getPartner().getEmailId());\n\t\tdto.setPartnerId(partnerPolicy.getPartner().getId());\n\t\tdto.setPolicyExpiryDateTime(policy == null ? null : policy.getValidToDate());\n\t\tdto.setPolicyId(partnerPolicy.getPolicyId());\n\t\tdto.setPolicyName(policy == null ? null : policy.getName());\n\t\tdto.setLangCode(partnerPolicy.getPartner().getLangCode());\n\t\tdto.setPolicyStatus((policy != null && policy.getIsActive() == true) ? PartnerConstants.ACTIVE : PartnerConstants.DEACTIVE);\n\t\tdto.setApiKeyStatus(partnerPolicy.getIsActive() == true ? PartnerConstants.ACTIVE : PartnerConstants.DEACTIVE);\n\t\treturn dto;\n\t}\n\n\t/**\n\t * \n\t * @param partnerPolicies\n\t * @return\n\t */\n\tprivate List getPolicies(List partnerPolicies) {\n\t\treturn policyRepo\n\t\t\t\t.findByPolicyIds(partnerPolicies.stream().map(PartnerPolicy::getPolicyId).collect(Collectors.toList()));\n\t}\n}" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/oauth/client/dto/AuthenticationFactor.java", + "title": "AuthenticationFactor.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/oauth/client/dto/AuthenticationFactor.java", + "language": "java", + "content": "package io.mosip.pms.oauth.client.dto;\n\nimport java.util.List;\nimport com.fasterxml.jackson.annotation.JsonIgnoreProperties;\n\nimport lombok.Data;\n\n@Data\n@JsonIgnoreProperties(ignoreUnknown = true)\npublic class AuthenticationFactor {\n\n private String type;\n private int count;\n private List subTypes;\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/oauth/client/dto/ClientDetail.java", + "title": "ClientDetail.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/oauth/client/dto/ClientDetail.java", + "language": "java", + "content": "/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n */\npackage io.mosip.pms.oauth.client.dto;\n\nimport lombok.Data;\n\nimport java.util.List;\n\n@Data\npublic class ClientDetail {\n\n private String id;\n private String name;\n private String policyId;\n private String policyName;\n private String relyingPartyId;\n private String logoUri;\n private List redirectUris;\n private String publicKey;\n private List claims;\n private List acrValues;\n private String status;\n private List grantTypes;\n private List clientAuthMethods;\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/oauth/client/dto/ClientDetailCreateRequest.java", + "title": "ClientDetailCreateRequest.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/oauth/client/dto/ClientDetailCreateRequest.java", + "language": "java", + "content": "package io.mosip.pms.oauth.client.dto;\n\nimport java.util.List;\nimport java.util.Map;\n\nimport javax.validation.constraints.NotBlank;\nimport javax.validation.constraints.NotEmpty;\nimport javax.validation.constraints.NotNull;\nimport javax.validation.constraints.Size;\n\nimport org.hibernate.validator.constraints.URL;\n\nimport lombok.AllArgsConstructor;\nimport lombok.Data;\nimport lombok.NoArgsConstructor;\n\n@Data\n@AllArgsConstructor\n@NoArgsConstructor\npublic class ClientDetailCreateRequest {\n\n @NotBlank\n @Size(min = 1, max = 256)\n private String name;\n \n @NotBlank\n @Size(min = 1, max = 36)\n private String policyId;\n\n @NotEmpty\n private Map publicKey;\n\n @NotBlank\n @Size(min = 1, max = 100)\n private String authPartnerId;\n\n @NotBlank\n @URL \n @Size(max = 2048)\n private String logoUri;\n\n @NotNull\n @Size(min = 1, max = 5)\n private List redirectUris;\n \n @NotNull\n @Size(min = 1, max = 3)\n private List grantTypes;\n\n @NotNull\n @Size(min = 1, max = 3)\n private List clientAuthMethods;\n\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/oauth/client/dto/ClientDetailCreateRequestV2.java", + "title": "ClientDetailCreateRequestV2.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/oauth/client/dto/ClientDetailCreateRequestV2.java", + "language": "java", + "content": "package io.mosip.pms.oauth.client.dto;\n\nimport java.util.List;\nimport java.util.Map;\n\nimport javax.validation.constraints.NotBlank;\nimport javax.validation.constraints.NotEmpty;\nimport javax.validation.constraints.Size;\n\nimport lombok.AllArgsConstructor;\nimport lombok.Data;\nimport lombok.NoArgsConstructor;\n\n@Data\n@AllArgsConstructor\n@NoArgsConstructor\npublic class ClientDetailCreateRequestV2 extends ClientDetailCreateRequest{\n\n\t @NotEmpty\n\t private Map<@Size(min=3, max=3) String, @NotBlank String> clientNameLangMap;\n\t \n\t public ClientDetailCreateRequestV2(String name, String policyId, Map publicKey, String authPartnerId,\n\t\t\t String logoUri, List redirectUris, List grantTypes, List clientAuthMethods,\n Map clientNameLangMap) {\n\t\t\t\tsuper(name, policyId, publicKey, authPartnerId, logoUri, redirectUris,\n\t\t\t\tgrantTypes, clientAuthMethods);\n\t\t\t\tthis.clientNameLangMap = clientNameLangMap;\n\t\t\t}\n\t \n\t}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/oauth/client/dto/ClientDetailResponse.java", + "title": "ClientDetailResponse.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/oauth/client/dto/ClientDetailResponse.java", + "language": "java", + "content": "/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n */\npackage io.mosip.pms.oauth.client.dto;\n\nimport lombok.Data;\n\n@Data\npublic class ClientDetailResponse {\n\n private String clientId;\n private String status;\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/oauth/client/dto/ClientDetailUpdateRequest.java", + "title": "ClientDetailUpdateRequest.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/oauth/client/dto/ClientDetailUpdateRequest.java", + "language": "java", + "content": "/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n */\npackage io.mosip.pms.oauth.client.dto;\n\nimport lombok.AllArgsConstructor;\nimport lombok.Data;\nimport lombok.NoArgsConstructor;\n\nimport org.hibernate.validator.constraints.URL;\n\nimport javax.validation.constraints.*;\nimport java.util.List;\nimport java.util.Map;\n\n@Data\n@AllArgsConstructor\n@NoArgsConstructor\npublic class ClientDetailUpdateRequest {\n\n @NotNull\n @NotBlank\n @URL\n @Size( max = 2048)\n private String logoUri;\n\n @NotNull\n @Size(min = 1, max = 5)\n private List<@NotBlank String> redirectUris;\n\n @NotNull\n @NotBlank\n @Pattern(regexp = \"(ACTIVE)|(INACTIVE)\", flags = Pattern.Flag.CASE_INSENSITIVE)\n private String status;\n\n @NotNull\n @Size(min = 1, max = 3)\n private List grantTypes;\n\n @NotNull\n @NotBlank\n private String clientName;\n\n @NotNull\n @Size(min = 1, max = 3)\n private List clientAuthMethods;\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/oauth/client/dto/ClientDetailUpdateRequestV2.java", + "title": "ClientDetailUpdateRequestV2.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/oauth/client/dto/ClientDetailUpdateRequestV2.java", + "language": "java", + "content": "/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n */\npackage io.mosip.pms.oauth.client.dto;\n\nimport lombok.AllArgsConstructor;\nimport lombok.Data;\nimport lombok.NoArgsConstructor;\n\nimport javax.validation.constraints.*;\nimport java.util.List;\nimport java.util.Map;\n\n@Data\n@AllArgsConstructor\n@NoArgsConstructor\npublic class ClientDetailUpdateRequestV2 extends ClientDetailUpdateRequest{\n\n\t\n\t@NotEmpty\n\tprivate Map<@Size(min=3, max=3) String, @NotBlank String> clientNameLangMap;\n\n\tpublic ClientDetailUpdateRequestV2(String logoUri, List redirectUris, String status, List grantTypes, String clientName, List clientAuthMethods,\n Map clientNameLangMap) {\n\t\t\t\tsuper(logoUri, redirectUris, status, grantTypes, clientName, clientAuthMethods);\n\t\t\t\tthis.clientNameLangMap = clientNameLangMap;\n\t\t\t}\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/oauth/client/dto/ClientFilterDto.java", + "title": "ClientFilterDto.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/oauth/client/dto/ClientFilterDto.java", + "language": "java", + "content": "package io.mosip.pms.oauth.client.dto;\n\nimport lombok.Data;\n\n@Data\npublic class ClientFilterDto {\n private String partnerId;\n private String orgName;\n private String policyGroupName;\n private String policyName;\n private String clientName;\n private String status;\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/oauth/client/dto/ClientSummaryDto.java", + "title": "ClientSummaryDto.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/oauth/client/dto/ClientSummaryDto.java", + "language": "java", + "content": "package io.mosip.pms.oauth.client.dto;\n\nimport io.swagger.v3.oas.annotations.media.Schema;\nimport lombok.Data;\n\nimport java.util.Date;\n\n@Data\npublic class ClientSummaryDto {\n\n @Schema(description = \"Unique identifier for the partner\", example = \"partner123\")\n private String partnerId;\n\n @Schema(description = \"Name of the partner organisation\", example = \"abc\")\n private String orgName;\n\n @Schema(description = \"Unique identifier for the policy group\", example = \"policyGroup789\")\n private String policyGroupId;\n\n @Schema(description = \"Name of the policy group\", example = \"Security Policies\")\n private String policyGroupName;\n\n @Schema(description = \"Description of the policy group\", example = \"Security Policies\")\n private String policyGroupDescription;\n\n @Schema(description = \"Name of the policy\", example = \"Data Protection Policy\")\n private String policyName;\n\n @Schema(description = \"Description of the policy\", example = \"Data Protection Policy\")\n private String policyDescription;\n\n @Schema(description = \"Unique identifier for the OIDC (OpenID Connect) client\", example = \"oidcClient456\")\n private String clientId;\n\n @Schema(description = \"Name of the OIDC client\", example = \"MyOIDCClient\")\n private String clientName;\n\n @Schema(description = \"Current status of the OIDC client\", example = \"active\")\n private String status;\n\n @Schema(description = \"Date and time when the record was last updated\", example = \"2024-08-08T12:00:00Z\")\n private Date updatedDateTime;\n\n @Schema(description = \"Date and time when the record was created\", example = \"2024-08-08T10:00:00Z\")\n private Date createdDateTime;\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/oauth/client/dto/CreateClientRequestDto.java", + "title": "CreateClientRequestDto.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/oauth/client/dto/CreateClientRequestDto.java", + "language": "java", + "content": "package io.mosip.pms.oauth.client.dto;\n\nimport java.util.List;\nimport java.util.Map;\n\nimport javax.validation.constraints.NotBlank;\nimport javax.validation.constraints.NotNull;\nimport javax.validation.constraints.Size;\n\nimport lombok.AllArgsConstructor;\nimport lombok.Data;\nimport lombok.NoArgsConstructor;\n\n@Data\n@AllArgsConstructor\n@NoArgsConstructor\npublic class CreateClientRequestDto { \n private String clientId;\n private String clientName;\n private Map publicKey;\n private String relyingPartyId;\n private List userClaims;\n private List authContextRefs;\n private String logoUri;\n private List redirectUris;\n private List grantTypes;\n private List clientAuthMethods;\n \n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/oauth/client/dto/CreateClientRequestDtoV2.java", + "title": "CreateClientRequestDtoV2.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/oauth/client/dto/CreateClientRequestDtoV2.java", + "language": "java", + "content": "package io.mosip.pms.oauth.client.dto;\n\nimport java.util.List;\nimport java.util.Map;\n\nimport javax.validation.constraints.NotBlank;\nimport javax.validation.constraints.NotEmpty;\nimport javax.validation.constraints.Size;\n\nimport lombok.AllArgsConstructor;\nimport lombok.Data;\nimport lombok.NoArgsConstructor;\n\n@Data\n@AllArgsConstructor\n@NoArgsConstructor\npublic class CreateClientRequestDtoV2 extends CreateClientRequestDto {\n\n\t@NotEmpty\n\t private Map<@Size(min=3, max=3) String, @NotBlank String> clientNameLangMap;\n\t\n\t public CreateClientRequestDtoV2(String clientId, String clientName, Map publicKey, String relyingPartyId,\n\t\t\t List userClaims, List authContextRefs, String logoUri, List redirectUris, List grantTypes, List clientAuthMethods,\n Map clientNameLangMap) {\n\t\t\t\tsuper(clientId, clientName, publicKey, relyingPartyId, userClaims, authContextRefs,\n\t\t\t\tlogoUri, redirectUris, grantTypes, clientAuthMethods);\n\t\t\t\tthis.clientNameLangMap = clientNameLangMap;\n\t\t\t}\n\n\tpublic CreateClientRequestDtoV2(CreateClientRequestDto createRequest, Map clientNameLangMap) {\n\t\tsuper(createRequest.getClientId(), createRequest.getClientName(), createRequest.getPublicKey(), createRequest.getRelyingPartyId(), createRequest.getUserClaims(), \n\t\t\t\tcreateRequest.getAuthContextRefs(), createRequest.getLogoUri(), createRequest.getRedirectUris(), createRequest.getGrantTypes(), createRequest.getClientAuthMethods());\n\t\t\t\tthis.clientNameLangMap = clientNameLangMap;\n\t}\n\t\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/oauth/client/dto/ProcessedClientDetail.java", + "title": "ProcessedClientDetail.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/oauth/client/dto/ProcessedClientDetail.java", + "language": "java", + "content": "package io.mosip.pms.oauth.client.dto;\n\nimport io.mosip.pms.common.entity.AuthPolicy;\nimport io.mosip.pms.common.entity.Partner;\nimport io.mosip.pms.common.entity.ClientDetail;\nimport lombok.Data;\n\n@Data\npublic class ProcessedClientDetail {\n\t\n\tprivate ClientDetail clientDetail;\n\tprivate Partner partner;\n\tprivate AuthPolicy policy;\n\t\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/oauth/client/dto/RequestWrapper.java", + "title": "RequestWrapper.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/oauth/client/dto/RequestWrapper.java", + "language": "java", + "content": "/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n */\npackage io.mosip.pms.oauth.client.dto;\n\nimport lombok.Data;\n\nimport java.time.LocalDateTime;\n\nimport javax.validation.Valid;\nimport javax.validation.constraints.NotNull;\n\nimport com.fasterxml.jackson.annotation.JsonFormat;\n\n@Data\npublic class RequestWrapper {\n\t\n\t@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = \"yyyy-MM-dd'T'HH:mm:ss.SSS'Z'\")\n\tprivate String requestTime;\n\t\n\t@NotNull\n\t@Valid\n\tprivate T request;\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/oauth/client/dto/UpdateClientRequestDto.java", + "title": "UpdateClientRequestDto.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/oauth/client/dto/UpdateClientRequestDto.java", + "language": "java", + "content": "package io.mosip.pms.oauth.client.dto;\n\nimport lombok.AllArgsConstructor;\nimport lombok.Data;\nimport lombok.NoArgsConstructor;\n\nimport org.hibernate.validator.constraints.URL;\n\nimport javax.validation.constraints.*;\nimport java.util.List;\nimport java.util.Map;\n\n@Data\n@AllArgsConstructor\n@NoArgsConstructor\npublic class UpdateClientRequestDto {\n \n\t@NotBlank\n @URL\n private String logoUri;\n\n @NotNull\n @Size(min = 1)\n private List<@NotBlank String> redirectUris;\n\n @NotBlank\n @Pattern(regexp = \"(ACTIVE)|(INACTIVE)\")\n private String status;\n\n @NotNull\n @Size(min = 1)\n private List grantTypes;\n\n @NotBlank\n private String clientName;\n\n private List userClaims;\n \n private List authContextRefs;\n \n @NotNull\n @Size(min = 1)\n private List clientAuthMethods;\n\n\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/oauth/client/dto/UpdateClientRequestDtoV2.java", + "title": "UpdateClientRequestDtoV2.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/oauth/client/dto/UpdateClientRequestDtoV2.java", + "language": "java", + "content": "package io.mosip.pms.oauth.client.dto;\n\nimport java.util.List;\nimport java.util.Map;\n\nimport javax.validation.constraints.NotBlank;\nimport javax.validation.constraints.NotEmpty;\nimport javax.validation.constraints.NotNull;\nimport javax.validation.constraints.Size;\n\nimport lombok.AllArgsConstructor;\nimport lombok.Data;\nimport lombok.NoArgsConstructor;\n\n@Data\n@AllArgsConstructor\n@NoArgsConstructor\npublic class UpdateClientRequestDtoV2 extends UpdateClientRequestDto{\n\n\t@NotEmpty\n\tprivate Map<@Size(min=3, max=3) String, @NotBlank String> clientNameLangMap;\n\n\tpublic UpdateClientRequestDtoV2(String logoUri, @NotNull List<@NotBlank String> redirectUris, String status,\n\t\t\t@NotNull List grantTypes, String clientName, List userClaims, List authContextRefs,\n\t\t\t@NotNull List clientAuthMethods, Map clientNameLangMap) {\n\t\tsuper(logoUri, redirectUris, status, grantTypes, clientName, userClaims, authContextRefs, clientAuthMethods);\n\t\tthis.clientNameLangMap = clientNameLangMap;\n\t}\n\n\tpublic UpdateClientRequestDtoV2(UpdateClientRequestDto updateRequest, Map clientNameLangMap) {\n\t\tsuper(updateRequest.getLogoUri(), updateRequest.getRedirectUris(), updateRequest.getStatus(), updateRequest.getGrantTypes(), updateRequest.getClientName(), \n\t\t\t\tupdateRequest.getUserClaims(), updateRequest.getAuthContextRefs(), updateRequest.getClientAuthMethods());\n\t\tthis.clientNameLangMap = clientNameLangMap;\n\t}\n\t\n\t\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/oauth/client/service/ClientManagementService.java", + "title": "ClientManagementService.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/oauth/client/service/ClientManagementService.java", + "language": "java", + "content": "package io.mosip.pms.oauth.client.service;\n\nimport io.mosip.pms.common.dto.PageResponseV2Dto;\nimport io.mosip.pms.common.response.dto.ResponseWrapperV2;\nimport io.mosip.pms.oauth.client.dto.*;\n\nimport java.util.List;\n\npublic interface ClientManagementService {\n\t\n /**\n * API to register Relying party client\n * @param clientDetailCreateRequest\n * @return\n * @throws Exception \n * @throws IdPException\n */\n ClientDetailResponse createOIDCClient(ClientDetailCreateRequest clientDetailCreateRequest) throws Exception;\n\n /**\n * API to update registered Relying party client\n * @param clientId\n * @param clientDetailCreateRequest\n * @return\n * @throws Exception \n * @throws IdPException\n */\n ClientDetailResponse updateOIDCClient(String clientId, ClientDetailUpdateRequest clientDetailCreateRequest) throws Exception;\n \n \n /**\n * Api to get the active client detail with the provided client name.\n * @param clientId\n * @return\n */\n ClientDetail getClientDetails(String clientId);\n\n /**\n * API to create OIDC Client with new Client Name Lang Map \n * based on V2 OIDC Client Create API of Esignet\n * @param createRequest\n * @return\n * @throws Exception\n */\n\tClientDetailResponse createOAuthClient(ClientDetailCreateRequestV2 createRequest) throws Exception;\n\n\t/**\n\t * API to update OIDC Client with new Client Name Lang Map \n * based on V2 OIDC Client Update API of Esignet\n\t * @param clientId\n\t * @param updateRequest\n\t * @return\n\t * @throws Exception\n\t */\n\tClientDetailResponse updateOAuthClient(String clientId, ClientDetailUpdateRequestV2 updateRequest)\n\t\t\tthrows Exception;\n\n\tResponseWrapperV2> getPartnersClients(String sortFieldName, String sortType, Integer pageNo, Integer pageSize, ClientFilterDto filterDto);\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/oidc/client/contant/ClientServiceAuditEnum.java", + "title": "ClientServiceAuditEnum.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/oidc/client/contant/ClientServiceAuditEnum.java", + "language": "java", + "content": "package io.mosip.pms.oidc.client.contant;\n\nimport io.mosip.pms.partner.manager.constant.AuditConstant;\n\npublic enum ClientServiceAuditEnum {\n\n CREATE_CLIENT(\"PMS_PRT_300\", AuditConstant.AUDIT_SYSTEM, \"POST CREATE OIDC CLIENT\",\n \"Creating the OIDC Client\", AuditConstant.PARTNER_MODULE_ID, AuditConstant.PARTNER_MODULE_NAME, \"NO_ID\",\n \"NO_ID_TYPE\", AuditConstant.APPLICATION_NAME, AuditConstant.APPLICATION_ID),\n CREATE_CLIENT_SUCCESS(\"PMS_PRT_301\", AuditConstant.AUDIT_SYSTEM, \"POST CREATE OIDC CLIENT\",\n \"Creating the OIDC Client Success\", AuditConstant.PARTNER_MODULE_ID, AuditConstant.PARTNER_MODULE_NAME, \"NO_ID\",\n \"NO_ID_TYPE\", AuditConstant.APPLICATION_NAME, AuditConstant.APPLICATION_ID),\n CREATE_CLIENT_FAILURE(\"PMS_PRT_302\", AuditConstant.AUDIT_SYSTEM, \"POST CREATE OIDC CLIENT\",\n \"Creating the OIDC Client Failed\", AuditConstant.PARTNER_MODULE_ID, AuditConstant.PARTNER_MODULE_NAME, \"NO_ID\",\n \"NO_ID_TYPE\", AuditConstant.APPLICATION_NAME, AuditConstant.APPLICATION_ID),\n UPDATE_CLIENT(\"PMS_PRT_303\", AuditConstant.AUDIT_SYSTEM, \"PUT UPDATE OIDC CLIENT\",\n \"Updating OIDC Client\", AuditConstant.PARTNER_MODULE_ID, AuditConstant.PARTNER_MODULE_NAME, \"NO_ID\",\n \"NO_ID_TYPE\", AuditConstant.APPLICATION_NAME, AuditConstant.APPLICATION_ID),\n UPDATE_CLIENT_SUCCESS(\"PMS_PRT_304\", AuditConstant.AUDIT_SYSTEM, \"PUT UPDATE OIDC CLIENT\",\n \"Updating OIDC Client Success\", AuditConstant.PARTNER_MODULE_ID, AuditConstant.PARTNER_MODULE_NAME, \"NO_ID\",\n \"NO_ID_TYPE\", AuditConstant.APPLICATION_NAME, AuditConstant.APPLICATION_ID),\n UPDATE_CLIENT_FAILURE(\"PMS_PRT_305\", AuditConstant.AUDIT_SYSTEM, \"PUT UPDATE OIDC CLIENT\",\n \"Updating OIDC Client Failed\", AuditConstant.PARTNER_MODULE_ID, AuditConstant.PARTNER_MODULE_NAME, \"NO_ID\",\n \"NO_ID_TYPE\", AuditConstant.APPLICATION_NAME, AuditConstant.APPLICATION_ID),\n GET_CLIENT_FAILURE(\"PMS_PRT_306\", AuditConstant.AUDIT_SYSTEM, \"GET OIDC CLIENT\",\n \"Get OIDC Client\", AuditConstant.PARTNER_MODULE_ID, AuditConstant.PARTNER_MODULE_NAME, \"NO_ID\",\n \"NO_ID_TYPE\", AuditConstant.APPLICATION_NAME, AuditConstant.APPLICATION_ID);\n\n private final String eventId;\n\n private final String type;\n\n private String name;\n\n private String description;\n\n private String moduleId;\n\n private String moduleName;\n\n private String id;\n\n private String idType;\n\n private String applicationId;\n\n private String applicationName;\n\n public String getEventId() {\n return eventId;\n }\n\n public String getType() {\n return type;\n }\n\n public String getName() {\n return name;\n }\n\n public String getDescription() {\n return description;\n }\n\n public String getModuleId() {\n return moduleId;\n }\n\n public String getModuleName() {\n return moduleName;\n }\n\n public String getId() {\n return id;\n }\n\n public String getIdType() {\n return idType;\n }\n\n public String getApplicationId() {\n return applicationId;\n }\n\n public String getApplicationName() {\n return applicationName;\n }\n\n ClientServiceAuditEnum(String eventId, String type, String name, String description, String moduleId,\n String moduleName, String id, String idType, String applicationId, String applicationName) {\n this.eventId = eventId;\n this.type = type;\n this.name = name;\n this.description = description;\n this.moduleId = moduleId;\n this.moduleName = moduleName;\n this.id = id;\n this.idType = idType;\n this.applicationId = applicationId;\n this.applicationName = applicationName;\n }\n\n}" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/partner/constant/PartnerConstants.java", + "title": "PartnerConstants.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/partner/constant/PartnerConstants.java", + "language": "java", + "content": "package io.mosip.pms.partner.constant;\n\npublic final class PartnerConstants {\n\t\n\tpublic static final String ACTIVATED = \"activated\";\n\t\n\tpublic static final String IN_PROGRESS=\"InProgress\";\n\t\n\tpublic static final String DE_ACTIVATED=\"de-activated\";\n\t\n\tpublic static final String APPROVED=\"approved\";\n\t\n\tpublic static final String REJECTED=\"rejected\";\n\t\n\tpublic static final String ERRORS = \"errors\";\n\n\tpublic static final String ERRORCODE = \"errorCode\";\n\n\tpublic static final String ERRORMESSAGE = \"message\";\n\n\tpublic static final String ACTIVE = \"active\";\n\n\tpublic static final String DEACTIVE = \"De-active\";\n\t\n\tpublic static final String PARTNER_DATA = \"partnerData\"; \n\t\n\tpublic static final String MISP_DATA = \"mispLicenseData\";\n\t\n\tpublic static final String POLICY_DATA = \"policyData\";\n\t\n\tpublic static final String APIKEY_DATA = \"apiKeyData\";\n\t\n\tpublic static final String CERT_CHAIN_DATA_SHARE_URL = \"certChainDatashareUrl\";\n\t\n\tpublic static final String PARTNER_DOMAIN = \"partnerDomain\";\n\t\n\tpublic static final String CLIENT_DATA=\"clientData\";\n\n\tpublic static final String ASC = \"asc\";\n\n\tpublic static final String DESC = \"desc\";\n\n\tpublic static final String PARTNER_ADMIN = \"PARTNER_ADMIN\";\n\n\tpublic static final String DEACTIVATE = \"De-Activate\";\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/partner/constant/PartnerServiceAuditEnum.java", + "title": "PartnerServiceAuditEnum.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/partner/constant/PartnerServiceAuditEnum.java", + "language": "java", + "content": "package io.mosip.pms.partner.constant;\n\nimport io.mosip.pms.partner.manager.constant.AuditConstant;\n\npublic enum PartnerServiceAuditEnum {\n\n\tREGISTER_PARTNER(\"PMS_PRT_101\", AuditConstant.AUDIT_SYSTEM, \"POST REGISTER PARTNER\",\n\t\t\t\"Registering the partner\", AuditConstant.PARTNER_MODULE_ID, AuditConstant.PARTNER_MODULE_NAME, \"NO_ID\",\n\t\t\t\"NO_ID_TYPE\", AuditConstant.APPLICATION_NAME, AuditConstant.APPLICATION_ID),\n\tREGISTER_PARTNER_SUCCESS(\"PMS_PRT_201\", AuditConstant.AUDIT_SYSTEM, \"POST REGISTER PARTNER\",\n\t\t\t\"Registering the partner success\", AuditConstant.PARTNER_MODULE_ID, AuditConstant.PARTNER_MODULE_NAME, \"NO_ID\",\n\t\t\t\"NO_ID_TYPE\", AuditConstant.APPLICATION_NAME, AuditConstant.APPLICATION_ID),\n\tREGISTER_PARTNER_FAILURE(\"PMS_PRT_401\", AuditConstant.AUDIT_SYSTEM, \"POST REGISTER PARTNER\",\n\t\t\t\"Registering the partner failed\", AuditConstant.PARTNER_MODULE_ID, AuditConstant.PARTNER_MODULE_NAME, \"NO_ID\",\n\t\t\t\"NO_ID_TYPE\", AuditConstant.APPLICATION_NAME, AuditConstant.APPLICATION_ID),\n\tUPLOAD_CA_CERT(\"PMS_PRT_102\", AuditConstant.AUDIT_SYSTEM, \"POST UPLOADING CA CERT\",\n\t\t\t\"Uploading CA cert\", AuditConstant.PARTNER_MODULE_ID, AuditConstant.PARTNER_MODULE_NAME, \"NO_ID\",\n\t\t\t\"NO_ID_TYPE\", AuditConstant.APPLICATION_NAME, AuditConstant.APPLICATION_ID),\n\tUPLOAD_CA_CERT_SUCCESS(\"PMS_PRT_202\", AuditConstant.AUDIT_SYSTEM, \"POST UPLOADING CA CERT\",\n\t\t\t\"Uploading CA cert success\", AuditConstant.PARTNER_MODULE_ID, AuditConstant.PARTNER_MODULE_NAME, \"NO_ID\",\n\t\t\t\"NO_ID_TYPE\", AuditConstant.APPLICATION_NAME, AuditConstant.APPLICATION_ID),\n\tUPLOAD_CA_CERT_FAILURE(\"PMS_PRT_402\", AuditConstant.AUDIT_SYSTEM, \"POST UPLOADING CA CERT\",\n\t\t\t\"Uploading CA cert failed\", AuditConstant.PARTNER_MODULE_ID, AuditConstant.PARTNER_MODULE_NAME, \"NO_ID\",\n\t\t\t\"NO_ID_TYPE\", AuditConstant.APPLICATION_NAME, AuditConstant.APPLICATION_ID),\n\tUPLOAD_PARTNER_CERT(\"PMS_PRT_103\", AuditConstant.AUDIT_SYSTEM, \"POST UPLOADING PARTNER CERT\",\n\t\t\t\"Uploading Partner cert\", AuditConstant.PARTNER_MODULE_ID, AuditConstant.PARTNER_MODULE_NAME, \"NO_ID\",\n\t\t\t\"NO_ID_TYPE\", AuditConstant.APPLICATION_NAME, AuditConstant.APPLICATION_ID),\n\tUPLOAD_PARTNER_CERT_SUCCESS(\"PMS_PRT_203\", AuditConstant.AUDIT_SYSTEM, \"POST UPLOADING PARTNER CERT\",\n\t\t\t\"Uploading Partner cert success\", AuditConstant.PARTNER_MODULE_ID, AuditConstant.PARTNER_MODULE_NAME, \"NO_ID\",\n\t\t\t\"NO_ID_TYPE\", AuditConstant.APPLICATION_NAME, AuditConstant.APPLICATION_ID),\n\tUPLOAD_PARTNER_CERT_FAILURE(\"PMS_PRT_403\", AuditConstant.AUDIT_SYSTEM, \"POST UPLOADING PARTNER CERT\",\n\t\t\t\"Uploading Partner cert failed\", AuditConstant.PARTNER_MODULE_ID, AuditConstant.PARTNER_MODULE_NAME, \"NO_ID\",\n\t\t\t\"NO_ID_TYPE\", AuditConstant.APPLICATION_NAME, AuditConstant.APPLICATION_ID),\n\tSUBMIT_API_REQUEST(\"PMS_PRT_104\", AuditConstant.AUDIT_SYSTEM, \"PATCH REQUEST FOR API KEY\",\n\t\t\t\"Requesting for API Key\", AuditConstant.PARTNER_MODULE_ID, AuditConstant.PARTNER_MODULE_NAME, \"NO_ID\",\n\t\t\t\"NO_ID_TYPE\", AuditConstant.APPLICATION_NAME, AuditConstant.APPLICATION_ID),\n\tSUBMIT_API_REQUEST_SUCCESS(\"PMS_PRT_204\", AuditConstant.AUDIT_SYSTEM, \"PATCH REQUEST FOR API KEY\",\n\t\t\t\"Requesting for API Key success\", AuditConstant.PARTNER_MODULE_ID, AuditConstant.PARTNER_MODULE_NAME, \"NO_ID\",\n\t\t\t\"NO_ID_TYPE\", AuditConstant.APPLICATION_NAME, AuditConstant.APPLICATION_ID),\n\tSUBMIT_API_REQUEST_FAILURE(\"PMS_PRT_404\", AuditConstant.AUDIT_SYSTEM, \"PATCH REQUEST FOR API KEY\",\n\t\t\t\"Requesting for API Key failed\", AuditConstant.PARTNER_MODULE_ID, AuditConstant.PARTNER_MODULE_NAME, \"NO_ID\",\n\t\t\t\"NO_ID_TYPE\", AuditConstant.APPLICATION_NAME, AuditConstant.APPLICATION_ID),\n\tUPDATE_PARTNER(\"PMS_PRT_105\", AuditConstant.AUDIT_SYSTEM, \"PUT UPDATE PARTNER\",\n\t\t\t\"Updating Partner \", AuditConstant.PARTNER_MODULE_ID, AuditConstant.PARTNER_MODULE_NAME, \"NO_ID\",\n\t\t\t\"NO_ID_TYPE\", AuditConstant.APPLICATION_NAME, AuditConstant.APPLICATION_ID),\n\tUPDATE_PARTNER_SUCCESS(\"PMS_PRT_205\", AuditConstant.AUDIT_SYSTEM, \"PUT UPDATE PARTNER\",\n\t\t\t\"Updating Partner success\", AuditConstant.PARTNER_MODULE_ID, AuditConstant.PARTNER_MODULE_NAME, \"NO_ID\",\n\t\t\t\"NO_ID_TYPE\", AuditConstant.APPLICATION_NAME, AuditConstant.APPLICATION_ID),\n\tUPDATE_PARTNER_FAILURE(\"PMS_PRT_405\", AuditConstant.AUDIT_SYSTEM, \"PUT UPDATE PARTNER\",\n\t\t\t\"Updating Partner failed\", AuditConstant.PARTNER_MODULE_ID, AuditConstant.PARTNER_MODULE_NAME, \"NO_ID\",\n\t\t\t\"NO_ID_TYPE\", AuditConstant.APPLICATION_NAME, AuditConstant.APPLICATION_ID),\n\tADD_CONTACTS(\"PMS_PRT_106\", AuditConstant.AUDIT_SYSTEM, \"POST ADD CONTACTS\",\n\t\t\t\"Adding contacts \", AuditConstant.PARTNER_MODULE_ID, AuditConstant.PARTNER_MODULE_NAME, \"NO_ID\",\n\t\t\t\"NO_ID_TYPE\", AuditConstant.APPLICATION_NAME, AuditConstant.APPLICATION_ID),\n\tADD_CONTACTS_SUCCESS(\"PMS_PRT_206\", AuditConstant.AUDIT_SYSTEM, \"POST ADD CONTACTS\",\n\t\t\t\"Adding contacts success\", AuditConstant.PARTNER_MODULE_ID, AuditConstant.PARTNER_MODULE_NAME, \"NO_ID\",\n\t\t\t\"NO_ID_TYPE\", AuditConstant.APPLICATION_NAME, AuditConstant.APPLICATION_ID),\n\tADD_CONTACTS_FAILURE(\"PMS_PRT_406\", AuditConstant.AUDIT_SYSTEM, \"POST ADD CONTACTS\",\n\t\t\t\"Adding contacts failed\", AuditConstant.PARTNER_MODULE_ID, AuditConstant.PARTNER_MODULE_NAME, \"NO_ID\",\n\t\t\t\"NO_ID_TYPE\", AuditConstant.APPLICATION_NAME, AuditConstant.APPLICATION_ID),\n\tADD_BIO_EXTRACTORS(\"PMS_PRT_107\", AuditConstant.AUDIT_SYSTEM, \"POST ADD BIO EXTRACTORS\",\n\t\t\t\"Adding bio extractors \", AuditConstant.PARTNER_MODULE_ID, AuditConstant.PARTNER_MODULE_NAME, \"NO_ID\",\n\t\t\t\"NO_ID_TYPE\", AuditConstant.APPLICATION_NAME, AuditConstant.APPLICATION_ID),\n\tADD_BIO_EXTRACTORS_SUCCESS(\"PMS_PRT_207\", AuditConstant.AUDIT_SYSTEM, \"POST ADD BIO EXTRACTORS\",\n\t\t\t\"Adding bio extractors success\", AuditConstant.PARTNER_MODULE_ID, AuditConstant.PARTNER_MODULE_NAME, \"NO_ID\",\n\t\t\t\"NO_ID_TYPE\", AuditConstant.APPLICATION_NAME, AuditConstant.APPLICATION_ID),\n\tADD_BIO_EXTRACTORS_FAILURE(\"PMS_PRT_407\", AuditConstant.AUDIT_SYSTEM, \"POST ADD BIO EXTRACTORS\",\n\t\t\t\"Adding bio extractors failed\", AuditConstant.PARTNER_MODULE_ID, AuditConstant.PARTNER_MODULE_NAME, \"NO_ID\",\n\t\t\t\"NO_ID_TYPE\", AuditConstant.APPLICATION_NAME, AuditConstant.APPLICATION_ID),\n\tMAP_POLICY_CREDENTIAL_TYPE(\"PMS_PRT_108\", AuditConstant.AUDIT_SYSTEM, \"POST MAP POLICY CREDENTIAL TYPE\",\n\t\t\t\"Mapping policy and credential type \", AuditConstant.PARTNER_MODULE_ID, AuditConstant.PARTNER_MODULE_NAME, \"NO_ID\",\n\t\t\t\"NO_ID_TYPE\", AuditConstant.APPLICATION_NAME, AuditConstant.APPLICATION_ID),\n\tMAP_POLICY_CREDENTIAL_TYPE_SUCCESS(\"PMS_PRT_208\", AuditConstant.AUDIT_SYSTEM, \"POST MAP POLICY CREDENTIAL TYPE\",\n\t\t\t\"Mapping policy and credential type success\", AuditConstant.PARTNER_MODULE_ID, AuditConstant.PARTNER_MODULE_NAME, \"NO_ID\",\n\t\t\t\"NO_ID_TYPE\", AuditConstant.APPLICATION_NAME, AuditConstant.APPLICATION_ID),\n\tMAP_POLICY_CREDENTIAL_TYPE_FAILURE(\"PMS_PRT_408\", AuditConstant.AUDIT_SYSTEM, \"POST MAP POLICY CREDENTIAL TYPE\",\n\t\t\t\"Mapping policy and credential type failed\", AuditConstant.PARTNER_MODULE_ID, AuditConstant.PARTNER_MODULE_NAME, \"NO_ID\",\n\t\t\t\"NO_ID_TYPE\", AuditConstant.APPLICATION_NAME, AuditConstant.APPLICATION_ID),\n\tSEARCH_PARTNER(\"PMS_PRT_109\", AuditConstant.AUDIT_SYSTEM, \"POST SEARCH PARTNER\",\n\t\t\t\"Searching Partner \", AuditConstant.PARTNER_MODULE_ID, AuditConstant.PARTNER_MODULE_NAME, \"NO_ID\",\n\t\t\t\"NO_ID_TYPE\", AuditConstant.APPLICATION_NAME, AuditConstant.APPLICATION_ID),\n\tSEARCH_PARTNER_SUCCESS(\"PMS_PRT_209\", AuditConstant.AUDIT_SYSTEM, \"POST SEARCH PARTNER\",\n\t\t\t\"Searching Partner success\", AuditConstant.PARTNER_MODULE_ID, AuditConstant.PARTNER_MODULE_NAME, \"NO_ID\",\n\t\t\t\"NO_ID_TYPE\", AuditConstant.APPLICATION_NAME, AuditConstant.APPLICATION_ID),\n\tSEARCH_PARTNER_FAILURE(\"PMS_PRT_409\", AuditConstant.AUDIT_SYSTEM, \"POST SEARCH PARTNER\",\n\t\t\t\"Searching Partner failed\", AuditConstant.PARTNER_MODULE_ID, AuditConstant.PARTNER_MODULE_NAME, \"NO_ID\",\n\t\t\t\"NO_ID_TYPE\", AuditConstant.APPLICATION_NAME, AuditConstant.APPLICATION_ID),\n\tSEARCH_PARTNER_TYPE(\"PMS_PRT_110\", AuditConstant.AUDIT_SYSTEM, \"POST SEARCH PARTNER TYPE\",\n\t\t\t\"Searching Partner type\", AuditConstant.PARTNER_MODULE_ID, AuditConstant.PARTNER_MODULE_NAME, \"NO_ID\",\n\t\t\t\"NO_ID_TYPE\", AuditConstant.APPLICATION_NAME, AuditConstant.APPLICATION_ID),\n\tSEARCH_PARTNER_TYPE_SUCCESS(\"PMS_PRT_210\", AuditConstant.AUDIT_SYSTEM, \"POST SEARCH PARTNER TYPE\",\n\t\t\t\"Searching Partner type success\", AuditConstant.PARTNER_MODULE_ID, AuditConstant.PARTNER_MODULE_NAME, \"NO_ID\",\n\t\t\t\"NO_ID_TYPE\", AuditConstant.APPLICATION_NAME, AuditConstant.APPLICATION_ID),\n\tSEARCH_PARTNER_TYPE_FAILURE(\"PMS_PRT_410\", AuditConstant.AUDIT_SYSTEM, \"POST SEARCH PARTNER TYPE\",\n\t\t\t\"Searching Partner type failed\", AuditConstant.PARTNER_MODULE_ID, AuditConstant.PARTNER_MODULE_NAME, \"NO_ID\",\n\t\t\t\"NO_ID_TYPE\", AuditConstant.APPLICATION_NAME, AuditConstant.APPLICATION_ID),\n\tSEARCH_PARTNER_APIKEY(\"PMS_PRT_111\", AuditConstant.AUDIT_SYSTEM, \"POST SEARCH PARTNER APIKEY\",\n\t\t\t\"Searching Partner apikey\", AuditConstant.PARTNER_MODULE_ID, AuditConstant.PARTNER_MODULE_NAME, \"NO_ID\",\n\t\t\t\"NO_ID_TYPE\", AuditConstant.APPLICATION_NAME, AuditConstant.APPLICATION_ID),\n\tSEARCH_PARTNER_APIKEY_SUCCESS(\"PMS_PRT_211\", AuditConstant.AUDIT_SYSTEM, \"POST SEARCH PARTNER APIKEY\",\n\t\t\t\"Searching Partner apikey success\", AuditConstant.PARTNER_MODULE_ID, AuditConstant.PARTNER_MODULE_NAME, \"NO_ID\",\n\t\t\t\"NO_ID_TYPE\", AuditConstant.APPLICATION_NAME, AuditConstant.APPLICATION_ID),\n\tSEARCH_PARTNER_APIKEY_FAILURE(\"PMS_PRT_411\", AuditConstant.AUDIT_SYSTEM, \"POST SEARCH PARTNER APIKEY\",\n\t\t\t\"Searching Partner apikey failed\", AuditConstant.PARTNER_MODULE_ID, AuditConstant.PARTNER_MODULE_NAME, \"NO_ID\",\n\t\t\t\"NO_ID_TYPE\", AuditConstant.APPLICATION_NAME, AuditConstant.APPLICATION_ID),\n\tSEARCH_PARTNER_APIKEY_REQUEST(\"PMS_PRT_112\", AuditConstant.AUDIT_SYSTEM, \"POST SEARCH PARTNER APIKEY REQUEST\",\n\t\t\t\"Searching Partner apikey request\", AuditConstant.PARTNER_MODULE_ID, AuditConstant.PARTNER_MODULE_NAME, \"NO_ID\",\n\t\t\t\"NO_ID_TYPE\", AuditConstant.APPLICATION_NAME, AuditConstant.APPLICATION_ID),\n\tSEARCH_PARTNER_APIKEY_REQUEST_SUCCESS(\"PMS_PRT_212\", AuditConstant.AUDIT_SYSTEM, \"POST SEARCH PARTNER APIKEY REQUEST\",\n\t\t\t\"Searching Partner apikey request success\", AuditConstant.PARTNER_MODULE_ID, AuditConstant.PARTNER_MODULE_NAME, \"NO_ID\",\n\t\t\t\"NO_ID_TYPE\", AuditConstant.APPLICATION_NAME, AuditConstant.APPLICATION_ID),\n\tSEARCH_PARTNER_APIKEY_REQUEST_FAILURE(\"PMS_PRT_412\", AuditConstant.AUDIT_SYSTEM, \"POST SEARCH PARTNER APIKEY REQUEST\",\n\t\t\t\"Searching Partner apikey request failed\", AuditConstant.PARTNER_MODULE_ID, AuditConstant.PARTNER_MODULE_NAME, \"NO_ID\",\n\t\t\t\"NO_ID_TYPE\", AuditConstant.APPLICATION_NAME, AuditConstant.APPLICATION_ID),\n\tFILTER_PARTNER(\"PMS_PRT_113\", AuditConstant.AUDIT_SYSTEM, \"POST FILTER PARTNER\",\n\t\t\t\"Filtering Partner\", AuditConstant.PARTNER_MODULE_ID, AuditConstant.PARTNER_MODULE_NAME, \"NO_ID\",\n\t\t\t\"NO_ID_TYPE\", AuditConstant.APPLICATION_NAME, AuditConstant.APPLICATION_ID),\n\tFILTER_PARTNER_SUCCESS(\"PMS_PRT_213\", AuditConstant.AUDIT_SYSTEM, \"POST FILTER PARTNER\",\n\t\t\t\"Filtering Partner success\", AuditConstant.PARTNER_MODULE_ID, AuditConstant.PARTNER_MODULE_NAME, \"NO_ID\",\n\t\t\t\"NO_ID_TYPE\", AuditConstant.APPLICATION_NAME, AuditConstant.APPLICATION_ID),\n\tFILTER_PARTNER_FAILURE(\"PMS_PRT_413\", AuditConstant.AUDIT_SYSTEM, \"POST FILTER PARTNER\",\n\t\t\t\"Filtering Partner failed\", AuditConstant.PARTNER_MODULE_ID, AuditConstant.PARTNER_MODULE_NAME, \"NO_ID\",\n\t\t\t\"NO_ID_TYPE\", AuditConstant.APPLICATION_NAME, AuditConstant.APPLICATION_ID),\n\tFILTER_PARTNER_APIKEY_REQUESTS(\"PMS_PRT_114\", AuditConstant.AUDIT_SYSTEM, \"POST FILTER PARTNER APIKEY REQUESTS\",\n\t\t\t\"Filtering Partner apikey requests\", AuditConstant.PARTNER_MODULE_ID, AuditConstant.PARTNER_MODULE_NAME, \"NO_ID\",\n\t\t\t\"NO_ID_TYPE\", AuditConstant.APPLICATION_NAME, AuditConstant.APPLICATION_ID),\n\tFILTER_PARTNER_APIKEY_REQUESTS_SUCCESS(\"PMS_PRT_214\", AuditConstant.AUDIT_SYSTEM, \"POST FILTER PARTNER APIKEY REQUESTS\",\n\t\t\t\"Filtering Partner apikey requests success\", AuditConstant.PARTNER_MODULE_ID, AuditConstant.PARTNER_MODULE_NAME, \"NO_ID\",\n\t\t\t\"NO_ID_TYPE\", AuditConstant.APPLICATION_NAME, AuditConstant.APPLICATION_ID),\n\tFILTER_PARTNER_APIKEY_REQUESTS_FAILURE(\"PMS_PRT_414\", AuditConstant.AUDIT_SYSTEM, \"POST FILTER PARTNER APIKEY REQUESTS\",\n\t\t\t\"Filtering Partner apikey requests failed\", AuditConstant.PARTNER_MODULE_ID, AuditConstant.PARTNER_MODULE_NAME, \"NO_ID\",\n\t\t\t\"NO_ID_TYPE\", AuditConstant.APPLICATION_NAME, AuditConstant.APPLICATION_ID),\n\tRETRIVE_PARTNER_CERT(\"PMS_PRT_115\", AuditConstant.AUDIT_SYSTEM, \"GET PARTNER CERT\",\n\t\t\t\"Retrieving partner cert\", AuditConstant.PARTNER_MODULE_ID, AuditConstant.PARTNER_MODULE_NAME, \"NO_ID\",\n\t\t\t\"NO_ID_TYPE\", AuditConstant.APPLICATION_NAME, AuditConstant.APPLICATION_ID),\n\tRETRIVE_PARTNER_CERT_SUCCESS(\"PMS_PRT_215\", AuditConstant.AUDIT_SYSTEM, \"GET PARTNER CERT\",\n\t\t\t\"Retrieving partner cert success\", AuditConstant.PARTNER_MODULE_ID, AuditConstant.PARTNER_MODULE_NAME, \"NO_ID\",\n\t\t\t\"NO_ID_TYPE\", AuditConstant.APPLICATION_NAME, AuditConstant.APPLICATION_ID),\n\tRETRIVE_PARTNER_CERT_FAILURE(\"PMS_PRT_415\", AuditConstant.AUDIT_SYSTEM, \"GET PARTNER CERT\",\n\t\t\t\"Retrieving partner cert failed\", AuditConstant.PARTNER_MODULE_ID, AuditConstant.PARTNER_MODULE_NAME, \"NO_ID\",\n\t\t\t\"NO_ID_TYPE\", AuditConstant.APPLICATION_NAME, AuditConstant.APPLICATION_ID),\n\tRETRIVE_PARTNER_APIKEYS(\"PMS_PRT_117\", AuditConstant.AUDIT_SYSTEM, \"GET PARTNER APIKEY REQUESTS\",\n\t\t\t\"Retrieving partner apikey requests\", AuditConstant.PARTNER_MODULE_ID, AuditConstant.PARTNER_MODULE_NAME, \"NO_ID\",\n\t\t\t\"NO_ID_TYPE\", AuditConstant.APPLICATION_NAME, AuditConstant.APPLICATION_ID),\n\tRETRIVE_PARTNER_APIKEYS_SUCCESS(\"PMS_PRT_217\", AuditConstant.AUDIT_SYSTEM, \"GET PARTNER APIKEY REQUESTS\",\n\t\t\t\"Retrieving partner apikey requests success\", AuditConstant.PARTNER_MODULE_ID, AuditConstant.PARTNER_MODULE_NAME, \"NO_ID\",\n\t\t\t\"NO_ID_TYPE\", AuditConstant.APPLICATION_NAME, AuditConstant.APPLICATION_ID),\n\tRETRIVE_PARTNER_APIKEYS_FAILURE(\"PMS_PRT_417\", AuditConstant.AUDIT_SYSTEM, \"GET PARTNER APIKEY REQUESTS\",\n\t\t\t\"Retrieving partner apikey requests failed\", AuditConstant.PARTNER_MODULE_ID, AuditConstant.PARTNER_MODULE_NAME, \"NO_ID\",\n\t\t\t\"NO_ID_TYPE\", AuditConstant.APPLICATION_NAME, AuditConstant.APPLICATION_ID),\n\tRETRIVE_PARTNER_APIKEY_STATUS(\"PMS_PRT_118\", AuditConstant.AUDIT_SYSTEM, \"GET PARTNER APIKEY REQUEST STATUS\",\n\t\t\t\"Retrieving partner apikey status\", AuditConstant.PARTNER_MODULE_ID, AuditConstant.PARTNER_MODULE_NAME, \"NO_ID\",\n\t\t\t\"NO_ID_TYPE\", AuditConstant.APPLICATION_NAME, AuditConstant.APPLICATION_ID),\n\tRETRIVE_PARTNER_APIKEY_STATUS_SUCCESS(\"PMS_PRT_218\", AuditConstant.AUDIT_SYSTEM, \"GET PARTNER APIKEY REQUEST STATUS\",\n\t\t\t\"Retrieving partner apikey status success\", AuditConstant.PARTNER_MODULE_ID, AuditConstant.PARTNER_MODULE_NAME, \"NO_ID\",\n\t\t\t\"NO_ID_TYPE\", AuditConstant.APPLICATION_NAME, AuditConstant.APPLICATION_ID),\n\tRETRIVE_PARTNER_APIKEY_STATUS_FAILURE(\"PMS_PRT_418\", AuditConstant.AUDIT_SYSTEM, \"GET PARTNER APIKEY REQUEST STATUS\",\n\t\t\t\"Retrieving partner apikey status failed\", AuditConstant.PARTNER_MODULE_ID, AuditConstant.PARTNER_MODULE_NAME, \"NO_ID\",\n\t\t\t\"NO_ID_TYPE\", AuditConstant.APPLICATION_NAME, AuditConstant.APPLICATION_ID),\n\tRETRIVE_PARTNER(\"PMS_PRT_119\", AuditConstant.AUDIT_SYSTEM, \"GET PARTNER \",\n\t\t\t\"Retrieving partner\", AuditConstant.PARTNER_MODULE_ID, AuditConstant.PARTNER_MODULE_NAME, \"NO_ID\",\n\t\t\t\"NO_ID_TYPE\", AuditConstant.APPLICATION_NAME, AuditConstant.APPLICATION_ID),\n\tRETRIVE_PARTNER_SUCCESS(\"PMS_PRT_219\", AuditConstant.AUDIT_SYSTEM, \"GET PARTNER \",\n\t\t\t\"Retrieving partner success\", AuditConstant.PARTNER_MODULE_ID, AuditConstant.PARTNER_MODULE_NAME, \"NO_ID\",\n\t\t\t\"NO_ID_TYPE\", AuditConstant.APPLICATION_NAME, AuditConstant.APPLICATION_ID),\n\tRETRIVE_PARTNER_FAILURE(\"PMS_PRT_419\", AuditConstant.AUDIT_SYSTEM, \"GET PARTNER \",\n\t\t\t\"Retrieving partner failed\", AuditConstant.PARTNER_MODULE_ID, AuditConstant.PARTNER_MODULE_NAME, \"NO_ID\",\n\t\t\t\"NO_ID_TYPE\", AuditConstant.APPLICATION_NAME, AuditConstant.APPLICATION_ID),\n\tMAP_POLICY_GROUP(\"PMS_PRT_121\", AuditConstant.AUDIT_SYSTEM, \"PUT MAP POLICY GROUP\",\n\t\t\t\"Mapping policy group to partner\", AuditConstant.PARTNER_MODULE_ID, AuditConstant.PARTNER_MODULE_NAME, \"NO_ID\",\n\t\t\t\"NO_ID_TYPE\", AuditConstant.APPLICATION_NAME, AuditConstant.APPLICATION_ID),\n\tMAP_POLICY_GROUP_SUCCESS(\"PMS_PRT_221\", AuditConstant.AUDIT_SYSTEM, \"PUT MAP POLICY GROUP\",\n\t\t\t\"Mapping policy group to partner success\", AuditConstant.PARTNER_MODULE_ID, AuditConstant.PARTNER_MODULE_NAME, \"NO_ID\",\n\t\t\t\"NO_ID_TYPE\", AuditConstant.APPLICATION_NAME, AuditConstant.APPLICATION_ID),\n\tMAP_POLICY_GROUP_FAILURE(\"PMS_PRT_421\", AuditConstant.AUDIT_SYSTEM, \"PUT MAP POLICY GROUP\",\n\t\t\t\"Mapping policy group to partner failed\", AuditConstant.PARTNER_MODULE_ID, AuditConstant.PARTNER_MODULE_NAME, \"NO_ID\",\n\t\t\t\"NO_ID_TYPE\", AuditConstant.APPLICATION_NAME, AuditConstant.APPLICATION_ID),\n\tMAP_POLICY_PARTNER(\"PMS_PRT_122\", AuditConstant.AUDIT_SYSTEM, \"POST REQUEST FOR POLICY MAP\",\n\t\t\t\"Requesting for policy mapping\", AuditConstant.PARTNER_MODULE_ID, AuditConstant.PARTNER_MODULE_NAME, \"NO_ID\",\n\t\t\t\"NO_ID_TYPE\", AuditConstant.APPLICATION_NAME, AuditConstant.APPLICATION_ID),\n\tMAP_POLICY_PARTNER_SUCCESS(\"PMS_PRT_222\", AuditConstant.AUDIT_SYSTEM, \"POST REQUEST FOR POLICY MAP\",\n\t\t\t\"Requesting for policy mapping success\", AuditConstant.PARTNER_MODULE_ID, AuditConstant.PARTNER_MODULE_NAME, \"NO_ID\",\n\t\t\t\"NO_ID_TYPE\", AuditConstant.APPLICATION_NAME, AuditConstant.APPLICATION_ID),\n\tMAP_POLICY_PARTNER_FAILURE(\"PMS_PRT_422\", AuditConstant.AUDIT_SYSTEM, \"POST REQUEST FOR POLICY MAP\",\n\t\t\t\"Requesting for policy mapping failed\", AuditConstant.PARTNER_MODULE_ID, AuditConstant.PARTNER_MODULE_NAME, \"NO_ID\",\n\t\t\t\"NO_ID_TYPE\", AuditConstant.APPLICATION_NAME, AuditConstant.APPLICATION_ID);\n\t\n\tprivate final String eventId;\n\n\tprivate final String type;\n\n\tprivate String name;\n\n\tprivate String description;\n\n\tprivate String moduleId;\n\n\tprivate String moduleName;\n\n\tprivate String id;\n\n\tprivate String idType;\n\n\tprivate String applicationId;\n\n\tprivate String applicationName;\n\n\tprivate PartnerServiceAuditEnum(String eventId, String type, String name, String description, String moduleId,\n\t\t\tString moduleName, String id, String idType, String applicationId, String applicationName) {\n\t\tthis.eventId = eventId;\n\t\tthis.type = type;\n\t\tthis.name = name;\n\t\tthis.description = description;\n\t\tthis.moduleId = moduleId;\n\t\tthis.moduleName = moduleName;\n\t\tthis.id = id;\n\t\tthis.idType = idType;\n\t\tthis.applicationId = applicationId;\n\t\tthis.applicationName = applicationName;\n\n\t}\n\n\tpublic String getEventId() {\n\t\treturn eventId;\n\t}\n\n\tpublic String getType() {\n\t\treturn type;\n\t}\n\n\tpublic String getName() {\n\t\treturn name;\n\t}\n\n\tpublic String getDescription() {\n\t\treturn description;\n\t}\n\n\tpublic String getModuleId() {\n\t\treturn moduleId;\n\t}\n\n\tpublic String getModuleName() {\n\t\treturn moduleName;\n\t}\n\n\tpublic String getId() {\n\t\treturn id;\n\t}\n\n\tpublic String getIdType() {\n\t\treturn idType;\n\t}\n\n\tpublic void setDescription(String des) {\n\t\tthis.description = des;\n\t}\n\n\tpublic String getApplicationId() {\n\t\treturn applicationId;\n\t}\n\n\tpublic void setId(String id) {\n\t\tthis.id = id;\n\t}\n\n\tpublic void setName(String name) {\n\t\tthis.name = name;\n\t}\n\n\tpublic String getApplicationName() {\n\t\treturn applicationName;\n\t}\n\n\t/*\n\t * Replace %s value in description and id with second parameter passed\n\t */\n\tpublic static PartnerServiceAuditEnum getPartnerManageEnumWithValue(PartnerServiceAuditEnum e, String s) {\n\t\te.setDescription(String.format(e.getDescription(), s));\n\t\tif (e.getId().equalsIgnoreCase(\"%s\"))\n\t\t\te.setId(s);\n\t\treturn e;\n\t}\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/partner/dto/AccessTokenResponse.java", + "title": "AccessTokenResponse.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/partner/dto/AccessTokenResponse.java", + "language": "java", + "content": "package io.mosip.pms.partner.dto;\n\nimport lombok.AllArgsConstructor;\nimport lombok.Data;\nimport lombok.NoArgsConstructor;\n\n@AllArgsConstructor\n@NoArgsConstructor\n@Data\npublic class AccessTokenResponse {\n\tprivate String access_token;\n\tprivate String expires_in;\n\tprivate String refresh_expires_in;\n\tprivate String refresh_token;\n\tprivate String token_type;\n\tprivate String session_state;\n\tprivate String scope;\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/partner/dto/ApiKeyResponseDto.java", + "title": "ApiKeyResponseDto.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/partner/dto/ApiKeyResponseDto.java", + "language": "java", + "content": "package io.mosip.pms.partner.dto;\n\nimport io.swagger.v3.oas.annotations.media.Schema;\nimport lombok.Data;\nimport lombok.Getter;\nimport lombok.Setter;\n\nimport java.time.LocalDateTime;\n\n@Data\n@Getter\n@Setter\npublic class ApiKeyResponseDto {\n @Schema(description = \"Current status of the entity\", example = \"active\")\n private String status;\n\n @Schema(description = \"Label or identifier for the API key\", example = \"api-key-001\")\n private String apiKeyLabel;\n\n @Schema(description = \"Unique identifier for the partner\", example = \"partner123\")\n private String partnerId;\n\n @Schema(description = \"Unique identifier for the policy group\", example = \"policyGroup456\")\n private String policyGroupId;\n\n @Schema(description = \"Name of the policy group\", example = \"Compliance Policies\")\n private String policyGroupName;\n\n @Schema(description = \"Description of the policy group\", example = \"Group of policies related to regulatory compliance and standards\")\n private String policyGroupDescription;\n\n @Schema(description = \"Unique identifier for the policy\", example = \"policy789\")\n private String policyId;\n\n @Schema(description = \"Name of the policy\", example = \"Data Protection Policy\")\n private String policyName;\n\n @Schema(description = \"Description of the policy name\", example = \"Policy that outlines data protection measures\")\n private String policyDescription;\n\n @Schema(description = \"Date and time when the record was created\", example = \"2024-07-15T10:00:00Z\")\n private LocalDateTime createdDateTime;\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/partner/dto/AuthorizedRolesDto.java", + "title": "AuthorizedRolesDto.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/partner/dto/AuthorizedRolesDto.java", + "language": "java", + "content": "package io.mosip.pms.partner.dto;\n\nimport lombok.Getter;\nimport lombok.Setter;\nimport org.springframework.boot.context.properties.ConfigurationProperties;\nimport org.springframework.stereotype.Component;\n\nimport java.util.List;\n\n\n@Component(\"authorizedRoles\")\n@ConfigurationProperties(prefix = \"mosip.role.pms\")\n@Getter\n@Setter\npublic class AuthorizedRolesDto {\n\n\t//OIDC Client Controller\n\tprivate List postoidcclient;\n\n\tprivate List putoidcclient;\n\n\tprivate List getoidcclient;\n\n\t//Device Detail controller\n\tprivate List postdevicedetail;\n\t\n\tprivate List putdevicedetail;\n\t\n\tprivate List patchdevicedetail;\n\t\n\tprivate List postdevicedetailsearch;\n\t\n\tprivate List postdevicedetaildevicetypesearch;\n\t\n\tprivate List postdevicedetailfiltervalues;\n\t\n\tprivate List postdevicedetaildevicetypefiltervalues;\n\t\n\tprivate List postdevicedetaildevicesubtypefiltervalues;\n\t\n\t//FTPChipDetail Controller\n\t\n\tprivate List postftpchipdetail;\n\t\n\tprivate List putftpchipdetail;\n\t\n\tprivate List patchftpchipdetail;\n\t\n\tprivate List postftpchipdetailuploadcertificate;\n\t\n\tprivate List getftpchipdetailgetpartnercertificate;\n\t\n\tprivate List postftpchipdetailsearch;\n\n\tprivate List getpartnersftmchipdetails;\n\n\tprivate List getallsbidetails;\n\n\t//Secure Biometric Interface controller\n\t\n\tprivate List postsecurebiometricinterface;\n\t\n\tprivate List putsecurebiometricinterface;\n\t\n\tprivate List patchsecurebiometricinterface;\n\t\n\tprivate List postsecurebiometricinterfacesearch;\n\t\n\tprivate List putsecurebiometricinterfacedevicedetailsmap;\n\t\n\tprivate List putsecurebiometricinterfacedevicedetailsmapremove;\n\t\n\tprivate List postsecurebiometricinterfacedevicedetailsmapsearch;\n\t\n\tprivate List postsecurebiometricinterfacefiltervalues;\n\t\n\t\n\t//partner controller\n\n\tprivate List postpartnersbioextractors;\n\t\n\tprivate List getpartnersbioextractors;\n\t\n\tprivate List postpartnerscredentialtypepolicies;\n\t\n\tprivate List getpartnerscredentialtypepolicies;\n\t\n\tprivate List postpartnerscontactadd;\n\t\n\tprivate List putpartners;\n\t\n\tprivate List putpartnersnew;\n\t\n\tprivate List getpartnerspartnerid;\n\t\n\tprivate List getpartnersapikeyrequest;\n\t\n\tprivate List postpartnerscacertificateupload;\n\t\n\tprivate List postpartnerscertificateupload;\n\t\n\tprivate List getpartnerscertificate;\n\t\n\tprivate List postpartnerssearch;\n\t\n\tprivate List postpartnerspartnertypesearch;\n\t\n\tprivate List postpartnersfiltervalues;\n\t\n\tprivate List postpartnersapikeyrequestfiltervalues;\n\t\n\tprivate List postpartnersapikeyrequestsearch;\n\t\n\tprivate List postpartnersapikeysearch;\n\t\n\tprivate List putpartnerspolicygroup;\n\t\n\tprivate List postpartnerspolicymap;\n\t\n\tprivate List patchpartnersgenerateapikey;\n\t\n\t//partner manager controller\n\t\n\tprivate List putpartnersapikeypolicies;\n\t\n\tprivate List patchpartners;\n\t\n\tprivate List getpartners;\n\n\tprivate List getpartnersnew;\n\t\n\tprivate List getpartnersapikey;\n\t\n\tprivate List putpartnerspolicymapping;\n\t\n\tprivate List patchpartnerspolicyapikeystatus;\n\n\tprivate List getadminpartners;\n\t\n\t//MISP License controller\n\t\n\tprivate List postmisplicense;\n\t\n\tprivate List putmisplicense;\n\t\n\tprivate List getmisplicense;\n\t\n\tprivate List getmisplicensekey;\n\t\n\tprivate List postmispfiltervalues;\n\t\n\tprivate List postmispsearch;\n\n\t//Multi Partner Service Controller\n\n\tprivate List getpartnercertificates;\n\n\tprivate List getapikeysforauthpartners;\n\n\tprivate List getoauthclients;\n\n\tprivate List userconsent;\n\n\tprivate List getsbidetails;\n\n\tprivate List postadddevicetosbi;\n\n\tprivate List postdevicewithsbimapping;\n\n\tprivate List patchdeactivatedevice;\n\n\tprivate List patchdeactivatesbi;\n\n\tprivate List getftmchipdetails;\n\n\tprivate List patchdeactivateftm;\n\n\tprivate List getoriginalftmcertificate;\n\n\tprivate List getpartnerdetails;\n\n\tprivate List getallpartnerpolicymappingrequests;\n\n\tprivate List getoauthpartnersclients;\n\n\tprivate List getpartnersapikeyrequests;\n\n\tprivate List getalldevicedetails;\n\n\tprivate List gettrustcertificates;\n\n\tprivate List getdownloadtrustcertificates;\n\n\tprivate List getpartnersv3;\n\t\t\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/partner-management-services/blob/master/partner/partner-management-service/src/main/java/io/mosip/pms/partner/dto/CertificateDto.java", + "title": "CertificateDto.java", + "repo": "mosip/partner-management-services", + "file_path": "partner/partner-management-service/src/main/java/io/mosip/pms/partner/dto/CertificateDto.java", + "language": "java", + "content": "package io.mosip.pms.partner.dto;\n\nimport io.swagger.v3.oas.annotations.media.Schema;\nimport lombok.Data;\nimport lombok.Getter;\nimport lombok.Setter;\n\nimport java.util.Date;\n\n@Data\n@Getter\n@Setter\npublic class CertificateDto {\n @Schema(description = \"Unique identifier for the partner\", example = \"partner123\")\n private String partnerId;\n\n @Schema(description = \"Name of the certificate issued to the partner\", example = \"cert-001\")\n private String certificateIssuedTo;\n\n @Schema(description = \"Date when the certificate was uploaded\", example = \"2024-07-15T10:00:00Z\")\n private Date certificateUploadDateTime;\n\n @Schema(description = \"Date when the certificate expires\", example = \"2025-07-15T10:00:00Z\")\n private Date certificateExpiryDateTime;\n\n @Schema(description = \"Type of partner (e.g., distributor, supplier, etc.)\", example = \"distributor\")\n private String partnerType;\n\n @Schema(description = \"Indicates whether the certificate is available (true if available, false otherwise)\", example = \"true\")\n private Boolean isCertificateAvailable;\n\n @Schema(description = \"Indicates if the partner is active. 'true' means active and 'false' means inactive.\", example = \"true\")\n private Boolean isPartnerActive; \n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/constant/BulkUploadErrorCode.java", + "title": "BulkUploadErrorCode.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/constant/BulkUploadErrorCode.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.constant;\r\n/**\r\n * \r\n * @author dhanendra\r\n *\r\n */\r\npublic enum BulkUploadErrorCode {\r\n\r\n\tUNABLE_TO_RETRIEVE_TRANSCATION(\"ADMN-BLK-TRNSCTNS-001\",\"Unable ro retrieve the transactions\"),\r\n\tBULK_OPERATION_ERROR(\"ADMN-BLK-001\",\r\n\t\t\t\"Any error occured during the bulk operation. If the category is masterdata, list operations are listed. If the category is packet, list of failed packet informations are listed\"),\r\n\tBULK_UPDATE_OPERATION_ERROR(\"ADM-BLK-001\", \"Data is not exist in db\"),\r\n\tINVALID_ARGUMENT(\"KER-MSD-999\", \"Invalid value : \"),\r\n\tDUPLICATE_RECORD(\"ADM-BLK-003\", \"Duplicate Record\"),\r\n\tINVALID_FILE_FORMAT(\"ADM-BLK-004\", \"Supported formats are xls, xlsx and csv files\"),\r\n\tINVALID_PCK_FILE_FORMAT(\"ADM-BLK-005\", \"Supported format is only zip file\"),\r\n\tEMPTY_FILE(\"ADM-BLK-006\", \"Empty file is not acceptable please provide valid file\"),\r\n\tNO_FILE(\"ADM-BLK-007\", \"No file uploaded\"),\r\n\tENTRY_EXISTS_SAME_IDENTIFIER(\"ADM-BLK-008\", \"Entry found with same primary key values\"),\r\n\tBATCH_ERROR(\"ADM-BLK-009\", \"Failed to process entry\");\r\n\r\n\r\n\tprivate final String errorCode;\r\n\tprivate final String errorMessage;\r\n\r\n\r\n\tprivate BulkUploadErrorCode(final String errorCode, final String errorMessage) {\r\n\t\tthis.errorCode = errorCode;\r\n\t\tthis.errorMessage = errorMessage;\r\n\t}\r\n\r\n\tpublic String getErrorCode() {\r\n\t\treturn errorCode;\r\n\t}\r\n\r\n\tpublic String getErrorMessage() {\r\n\t\treturn errorMessage;\r\n\t}\r\n}\r\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/contoller/BulkDataUploadController.java", + "title": "BulkDataUploadController.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/contoller/BulkDataUploadController.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.contoller;\n\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.security.access.prepost.PreAuthorize;\nimport org.springframework.web.bind.annotation.GetMapping;\nimport org.springframework.web.bind.annotation.PathVariable;\nimport org.springframework.web.bind.annotation.PostMapping;\nimport org.springframework.web.bind.annotation.RequestParam;\nimport org.springframework.web.bind.annotation.RestController;\nimport org.springframework.web.multipart.MultipartFile;\n\nimport io.mosip.admin.bulkdataupload.dto.BulkDataGetExtnDto;\nimport io.mosip.admin.bulkdataupload.dto.BulkDataResponseDto;\nimport io.mosip.admin.bulkdataupload.dto.PageDto;\nimport io.mosip.admin.bulkdataupload.service.BulkDataService;\nimport io.mosip.admin.packetstatusupdater.util.AuditUtil;\nimport io.mosip.admin.packetstatusupdater.util.EventEnum;\nimport io.mosip.kernel.core.http.ResponseWrapper;\nimport io.swagger.annotations.ApiParam;\n\n\n/**\n * The class BulkDataUploadController\n * \n * @author dhanendra\n *\n */\n\n\n@RestController\npublic class BulkDataUploadController {\n\n\t@Autowired\n\tprivate AuditUtil auditUtil;\n\t\n\t@Autowired\n\tprivate BulkDataService bulkDataService;\n\t@PreAuthorize(\"hasAnyRole(@authorizedRoles.getPostbulkupload())\")\n\t@PostMapping(value = { \"/bulkupload\" }, consumes = { \"multipart/form-data\" })\n\t//@PreAuthorize(\"hasRole('GLOBAL_ADMIN')\")\n\tpublic ResponseWrapper uploadData(@RequestParam(value = \"tableName\", required = false, defaultValue = \"\") String tableName,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t @RequestParam(\"operation\") String operation,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t @RequestParam(\"category\") String category,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t @RequestParam(\"files\") MultipartFile[] files,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t @RequestParam(value = \"centerId\", required = false) String centerId,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t @RequestParam(value = \"source\", required = false, defaultValue = \"REGISTRATION_CLIENT\") String source,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t @RequestParam(value = \"process\", required = false, defaultValue = \"NEW\") String process,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t @RequestParam(value = \"supervisorStatus\", required = false, defaultValue = \"APPROVED\") String supervisorStatus) {\n\t\tauditUtil.setAuditRequestDto(EventEnum.BULKDATA_UPLOAD_API_CALLED,null);\n\t\tResponseWrapper responseWrapper = new ResponseWrapper<>();\n\t\tresponseWrapper.setResponse(bulkDataService.bulkDataOperation(tableName, operation, category, files, centerId, source,\n\t\t\t\tprocess, supervisorStatus));\n\t\tauditUtil.setAuditRequestDto(EventEnum.BULKDATA_UPLOAD_SUCCESS,null);\n\t\treturn responseWrapper;\n\t\t\n\t}\n\t@PreAuthorize(\"hasAnyRole(@authorizedRoles.getGetbulkuploadtranscationtranscationid())\")\n\t@GetMapping(\"/bulkupload/transcation/{transcationId}\")\n\t//@PreAuthorize(\"hasRole('GLOBAL_ADMIN')\")\n\tpublic ResponseWrapper getTranscationDetail(@PathVariable(\"transcationId\") String transcationId) throws Exception {\n\t\tauditUtil.setAuditRequestDto(EventEnum.getEventEnumWithValue(EventEnum.BULKDATA_TRANSACTION,transcationId),null);\n\t\tResponseWrapper responseWrapper = new ResponseWrapper<>();\n\t\tresponseWrapper.setResponse(bulkDataService.getTrascationDetails(transcationId));\n\t\tauditUtil.setAuditRequestDto(EventEnum.getEventEnumWithValue(EventEnum.BULKDATA_TRANSACTION_SUCCESS,transcationId),null);\n\t\treturn responseWrapper;\n\t}\n\t@PreAuthorize(\"hasAnyRole(@authorizedRoles.getGetbulkuploadgetalltransactions())\")\n\t@GetMapping(\"/bulkupload/getAllTransactions\")\n\t//@PreAuthorize(\"hasRole('GLOBAL_ADMIN')\")\n\tpublic ResponseWrapper> getTranscationDetail(\n\t\t\t@RequestParam(name = \"pageNumber\", defaultValue = \"0\") @ApiParam(value = \"page no for the requested data\", defaultValue = \"0\") int pageNumber,\n\t\t\t@RequestParam(name = \"pageSize\", defaultValue = \"10\") @ApiParam(value = \"page size for the requested data\", defaultValue = \"10\") int pageSize,\n\t\t\t@RequestParam(name = \"sortBy\", defaultValue = \"createdDateTime\") @ApiParam(value = \"sort the requested data based on param value\", defaultValue = \"createdDateTime\") String sortBy,\n\t\t\t@RequestParam(name = \"orderBy\", defaultValue = \"desc\") @ApiParam(value = \"order the requested data based on param\", defaultValue = \"desc\") String orderBy,\n\t\t\t@RequestParam(name = \"category\", defaultValue = \"masterdata\") String category){\n\t\tauditUtil.setAuditRequestDto(EventEnum.BULKDATA_TRANSACTION_ALL,null);\n\t\tResponseWrapper> responseWrapper = new ResponseWrapper>();\n\t\tresponseWrapper.setResponse(bulkDataService.getAllTrascationDetails(pageNumber,pageSize,sortBy,orderBy,category));\n\t\tauditUtil.setAuditRequestDto(EventEnum.BULKDATA_TRANSACTION_ALL_SUCCESS,null);\n\t\treturn responseWrapper;\n\t}\n\t\n\t\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/ExceptionalHoliday.java", + "title": "ExceptionalHoliday.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/ExceptionalHoliday.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.entity;\n\nimport java.io.Serializable;\nimport java.time.LocalDate;\n\nimport jakarta.persistence.Column;\nimport jakarta.persistence.Entity;\nimport jakarta.persistence.Id;\nimport jakarta.persistence.IdClass;\nimport jakarta.persistence.Table;\n\nimport io.mosip.admin.bulkdataupload.entity.id.ExcptionalHolidayId;\nimport lombok.AllArgsConstructor;\nimport lombok.Data;\nimport lombok.EqualsAndHashCode;\nimport lombok.NoArgsConstructor;\n\n/**\n * @author Kishan Rathore\n *\n */\n@EqualsAndHashCode(callSuper = true)\n@Data\n@NoArgsConstructor\n@AllArgsConstructor\n@Entity\n@Table(name = \"reg_exceptional_holiday\", schema = \"master\")\n@IdClass(ExcptionalHolidayId.class)\npublic class ExceptionalHoliday extends BaseEntity implements Serializable {\n\t/**\n\t* \n\t*/\n\tprivate static final long serialVersionUID = 3849193075880488107L;\n\n\t@Id\n\t@Column(name = \"regcntr_id\", nullable = false, length = 10)\n\tprivate String registrationCenterId;\n\n\t@Id\n\t@Column(name = \"hol_date\", nullable = false)\n\tprivate LocalDate holidayDate;\n\n\t@Column(name = \"hol_name\", length = 128)\n\tprivate String holidayName;\n\n\t@Column(name = \"hol_reason\", length = 256)\n\tprivate String holidayReason;\n\n\t@Column(name = \"lang_code\", length = 3)\n\tprivate String langCode;\n\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/RegExceptionalHoliday.java", + "title": "RegExceptionalHoliday.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/RegExceptionalHoliday.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.entity;\r\n\r\nimport java.io.Serializable;\r\nimport java.time.LocalDate;\r\n\r\nimport jakarta.persistence.Column;\r\nimport jakarta.persistence.Entity;\r\nimport jakarta.persistence.Id;\r\nimport jakarta.persistence.IdClass;\r\nimport jakarta.persistence.Table;\r\n\r\nimport io.mosip.admin.bulkdataupload.entity.id.RegExceptionalHolidayID;\r\nimport lombok.AllArgsConstructor;\r\nimport lombok.Data;\r\nimport lombok.EqualsAndHashCode;\r\nimport lombok.NoArgsConstructor;\r\n\r\n@Data\r\n@EqualsAndHashCode(callSuper = true)\r\n@Entity\r\n@Table(name = \"reg_exceptional_holiday\", schema = \"master\")\r\n@NoArgsConstructor\r\n@AllArgsConstructor\r\n@IdClass(RegExceptionalHolidayID.class)\r\npublic class RegExceptionalHoliday extends BaseEntity implements Serializable {\r\n\r\n\t/**\r\n\t * \r\n\t */\r\n\tprivate static final long serialVersionUID = -1510743278106214553L;\r\n\r\n\t@Id\r\n\t@Column(name = \"regcntr_id\", nullable = false, length = 10)\r\n\tprivate String registrationCenterId;\r\n\r\n\t@Id\r\n\t@Column(name = \"hol_date\", nullable = false)\r\n\tprivate LocalDate exceptionHolidayDate;\r\n\r\n\t@Column(name = \"hol_name\", nullable = false, length = 128)\r\n\tprivate String exceptionHolidayName;\r\n\r\n\t@Column(name = \"hol_reason\", nullable = false, length = 256)\r\n\tprivate String exceptionHolidayReson;\r\n\r\n\t@Column(name = \"lang_code\", nullable = false, length = 3)\r\n\tprivate String langCode;\r\n\r\n}\r\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/id/RegExceptionalHolidayID.java", + "title": "RegExceptionalHolidayID.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/id/RegExceptionalHolidayID.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.entity.id;\r\n\r\nimport java.io.Serializable;\r\nimport java.time.LocalDate;\r\n\r\nimport jakarta.persistence.Column;\r\n\r\nimport lombok.AllArgsConstructor;\r\nimport lombok.Data;\r\nimport lombok.NoArgsConstructor;\r\n\r\n@Data\r\n@NoArgsConstructor\r\n@AllArgsConstructor\r\npublic class RegExceptionalHolidayID implements Serializable {\r\n\r\n\t/**\r\n\t * \r\n\t */\r\n\tprivate static final long serialVersionUID = 499662213516904291L;\r\n\r\n\t@Column(name = \"regcntr_id\", nullable = false, length = 10)\r\n\tprivate String registrationCenterId;\r\n\r\n\t@Column(name = \"hol_date\", nullable = false)\r\n\tprivate LocalDate exceptionHolidayDate;\r\n}\r\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/repositories/ExceptionalHolidayRepository.java", + "title": "ExceptionalHolidayRepository.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/repositories/ExceptionalHolidayRepository.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.repositories;\n\nimport java.util.List;\n\nimport org.springframework.data.jpa.repository.Query;\nimport org.springframework.stereotype.Repository;\n\nimport io.mosip.admin.bulkdataupload.entity.ExceptionalHoliday;\nimport io.mosip.admin.bulkdataupload.entity.id.ExcptionalHolidayId;\nimport io.mosip.kernel.core.dataaccess.spi.repository.BaseRepository;\n\n/**\n * @author Kishan Rathore\n *\n */\n@Repository\npublic interface ExceptionalHolidayRepository extends BaseRepository {\n\n\t@Query(\"From ExceptionalHoliday where registrationCenterId=?1 and langCode=?2 and (isDeleted = false or isDeleted is null) and isActive = true\")\n\tList findAllNonDeletedExceptionalHoliday(String regCenterId, String langcode);\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/repositories/RegExceptionalHolidayRepository.java", + "title": "RegExceptionalHolidayRepository.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/repositories/RegExceptionalHolidayRepository.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.repositories;\r\n\r\nimport java.time.LocalDate;\r\nimport java.util.List;\r\n\r\nimport org.springframework.data.jpa.repository.Query;\r\nimport org.springframework.stereotype.Repository;\r\n\r\nimport io.mosip.admin.bulkdataupload.entity.RegExceptionalHoliday;\r\nimport io.mosip.admin.bulkdataupload.entity.id.RegExceptionalHolidayID;\r\nimport io.mosip.kernel.core.dataaccess.spi.repository.BaseRepository;\r\n\r\n@Repository(\"RegExceptionalHolidayRepo\")\r\npublic interface RegExceptionalHolidayRepository\r\n\t\textends BaseRepository {\r\n\r\n\t@Query(\"From RegExceptionalHoliday where registrationCenterId=?1 and langCode=?2 and (isDeleted is null or isDeleted = false) and isActive = true\")\r\n\tpublic List findByRegIdAndLangcode(String registrationCenterId, String langCode);\r\n\r\n\t@Query(\"From RegExceptionalHoliday where registrationCenterId=?1 and langCode=?2 and exceptionHolidayDate= ?3 and (isDeleted is null or isDeleted = false) and isActive = true\")\r\n\tpublic RegExceptionalHoliday findByRegIdAndLangcodeAndExpHoliday(String registrationCenterId, String langCode,\r\n\t\t\tLocalDate exceptionHolidayDate);\r\n\r\n\t@Query(\"From RegExceptionalHoliday where langCode=?1 and (isDeleted is null or isDeleted = false) and isActive = true\")\r\n\tpublic List findByLangcode(String langCode);\r\n\r\n\t@Query(\"From RegExceptionalHoliday where registrationCenterId=?1 and exceptionHolidayDate= ?2 \")\r\n\tpublic Object findByRegIdAndExpHoliday(String registrationCenterId, LocalDate exceptionHolidayDate);\r\n\r\n}\r\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/service/impl/BulkDataUploadServiceImpl.java", + "title": "BulkDataUploadServiceImpl.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/service/impl/BulkDataUploadServiceImpl.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.service.impl;\r\n\r\nimport io.mosip.admin.bulkdataupload.batch.*;\r\nimport io.mosip.admin.bulkdataupload.constant.BulkUploadErrorCode;\r\nimport io.mosip.admin.bulkdataupload.dto.BulkDataGetExtnDto;\r\nimport io.mosip.admin.bulkdataupload.dto.BulkDataResponseDto;\r\nimport io.mosip.admin.bulkdataupload.dto.PageDto;\r\nimport io.mosip.admin.bulkdataupload.entity.BaseEntity;\r\nimport io.mosip.admin.bulkdataupload.entity.BulkUploadTranscation;\r\nimport io.mosip.admin.bulkdataupload.repositories.BulkUploadTranscationRepository;\r\nimport io.mosip.admin.bulkdataupload.service.BulkDataService;\r\nimport io.mosip.admin.bulkdataupload.service.PacketUploadService;\r\nimport io.mosip.admin.config.Mapper;\r\nimport io.mosip.admin.packetstatusupdater.exception.DataNotFoundException;\r\nimport io.mosip.admin.packetstatusupdater.exception.RequestException;\r\nimport io.mosip.admin.packetstatusupdater.util.AuditUtil;\r\nimport io.mosip.admin.packetstatusupdater.util.EventEnum;\r\nimport io.mosip.kernel.core.util.EmptyCheckUtils;\r\nimport org.slf4j.Logger;\r\nimport org.slf4j.LoggerFactory;\r\nimport org.springframework.batch.core.*;\r\nimport org.springframework.batch.core.configuration.annotation.StepScope;\r\nimport org.springframework.batch.core.job.builder.JobBuilder;\r\nimport org.springframework.batch.core.launch.JobLauncher;\r\nimport org.springframework.batch.core.launch.support.RunIdIncrementer;\r\nimport org.springframework.batch.core.repository.JobRepository;\r\nimport org.springframework.batch.core.step.builder.StepBuilder;\r\nimport org.springframework.batch.extensions.excel.poi.PoiItemReader;\r\nimport org.springframework.batch.item.ItemProcessor;\r\nimport org.springframework.batch.item.ItemReader;\r\nimport org.springframework.batch.item.ItemWriter;\r\nimport org.springframework.batch.item.file.FlatFileItemReader;\r\nimport org.springframework.batch.item.file.LineCallbackHandler;\r\nimport org.springframework.batch.item.file.mapping.BeanWrapperFieldSetMapper;\r\nimport org.springframework.batch.item.file.transform.DelimitedLineTokenizer;\r\nimport org.springframework.beans.factory.annotation.Autowired;\r\nimport org.springframework.beans.factory.annotation.Qualifier;\r\nimport org.springframework.beans.factory.annotation.Value;\r\nimport org.springframework.context.ApplicationContext;\r\nimport org.springframework.core.convert.ConversionService;\r\nimport org.springframework.core.convert.converter.Converter;\r\nimport org.springframework.core.convert.support.DefaultConversionService;\r\nimport org.springframework.core.io.InputStreamResource;\r\nimport org.springframework.data.domain.Page;\r\nimport org.springframework.data.domain.PageRequest;\r\nimport org.springframework.data.domain.Pageable;\r\nimport org.springframework.data.domain.Sort;\r\nimport org.springframework.data.domain.Sort.Direction;\r\nimport org.springframework.security.core.Authentication;\r\nimport org.springframework.security.core.GrantedAuthority;\r\nimport org.springframework.security.core.context.SecurityContextHolder;\r\nimport org.springframework.stereotype.Service;\r\nimport org.springframework.transaction.PlatformTransactionManager;\r\nimport org.springframework.web.client.RestTemplate;\r\nimport org.springframework.web.multipart.MultipartFile;\r\n\r\nimport jakarta.persistence.EntityManager;\r\nimport jakarta.persistence.EntityManagerFactory;\r\nimport javax.sql.DataSource;\r\nimport jakarta.validation.Validator;\r\nimport java.io.IOException;\r\nimport java.sql.Timestamp;\r\nimport java.time.LocalDate;\r\nimport java.time.LocalDateTime;\r\nimport java.time.LocalTime;\r\nimport java.time.ZoneId;\r\nimport java.time.format.DateTimeFormatter;\r\nimport java.util.*;\r\nimport java.util.function.Predicate;\r\nimport java.util.stream.Collectors;\r\n\r\n\r\n/**\r\n * BulkDataUpload service\r\n * \r\n * @author dhanendra\r\n *\r\n */\r\n@Service\r\npublic class BulkDataUploadServiceImpl implements BulkDataService {\r\n\r\n\tprivate static final Logger logger = LoggerFactory.getLogger(BulkDataUploadServiceImpl.class);\r\n\tprivate static final String DATA_READ_ROLE = \"ROLE_DATA_READ\";\r\n\tprivate static Predicate emptyCheck = String::isBlank;\r\n\tprivate static String STATUS_MESSAGE = \"SUCCESS: %d, FAILED: %d\";\r\n\tprivate static String CSV_UPLOAD_MESSAGE = \"FILE: %s, READ: %d, STATUS: %s, MESSAGE: %s\";\r\n\tprivate static String PKT_UPLOAD_MESSAGE = \"FILE: %s, STATUS: %s, MESSAGE: %s\";\r\n\r\n\tprivate static final String SECURITY_PARAM_NAME = \"security-param\";\r\n\r\n\t@Autowired\r\n\tApplicationContext applicationContext;\r\n\r\n\t@Autowired\r\n\tprivate AuditUtil auditUtil;\r\n\t\r\n\t@Autowired\r\n\tprivate Mapper mapper;\r\n\r\n\t@Autowired\r\n\tprivate EntityManager em;\r\n\r\n\t@Autowired\r\n\tprivate EntityManagerFactory emf;\r\n\r\n\t@Autowired\r\n\tprivate RestTemplate restTemplate;\r\n\r\n\t@Autowired\r\n\tprivate BulkUploadTranscationRepository bulkTranscationRepo;\r\n\r\n\t@Autowired\r\n\tprivate PlatformTransactionManager platformTransactionManager;\r\n\r\n\t@Autowired\r\n\tprivate PacketUploadService packetUploadService;\r\n\r\n\t@Autowired\r\n\t@Qualifier(\"asyncJobLauncher\")\r\n\tprivate JobLauncher jobLauncher;\r\n\r\n\t@Autowired\r\n\tprivate JobRepository jobRepository;\r\n\t\r\n\t@Autowired\r\n\tprivate CustomChunkListener customChunkListener;\r\n\r\n\t@Autowired\r\n\tprivate JobResultListener jobResultListener;\r\n\t\r\n\t@Autowired\r\n\tprivate PacketJobResultListener packetJobResultListener;\r\n\r\n\t@Value(\"${mosip.mandatory-languages}\")\r\n\tprivate String mandatoryLanguages;\r\n\r\n\t@Value(\"${mosip.optional-languages}\")\r\n\tprivate String optionalLanguages;\r\n\r\n\t@Value(\"${mosip.admin.batch.line.delimiter:|}\")\r\n\tprivate String lineDelimiter;\r\n\r\n\t@Value(\"${mosip.admin.batch.name.delimiter:\\\\|}\")\r\n\tprivate String nameDelimiter;\r\n\t\r\n\t@Autowired\r\n\tprivate Validator validator;\r\n\r\n\tprivate Map entityMap = new HashMap();\r\n\r\n\r\n\t@Override\r\n\tpublic BulkDataGetExtnDto getTrascationDetails(String transcationId) {\r\n\r\n\t\tBulkDataGetExtnDto bulkDataGetExtnDto = new BulkDataGetExtnDto();\r\n\t\ttry {\r\n\t\t\tBulkUploadTranscation bulkUploadTranscation = bulkTranscationRepo.findTransactionById(transcationId);\r\n\t\t\tbulkDataGetExtnDto.setTranscationId(bulkUploadTranscation.getId());\r\n\t\t\tbulkDataGetExtnDto.setCount(bulkUploadTranscation.getRecordCount());\r\n\t\t\tbulkDataGetExtnDto.setOperation(bulkUploadTranscation.getUploadOperation());\r\n\t\t\tbulkDataGetExtnDto.setStatus(bulkUploadTranscation.getStatusCode());\r\n\t\t\tbulkDataGetExtnDto.setStatusDescription(bulkUploadTranscation.getUploadDescription());\r\n\t\t\tbulkDataGetExtnDto.setEntityName(bulkUploadTranscation.getEntityName());\r\n\t\t\tbulkDataGetExtnDto.setCategory(bulkUploadTranscation.getCategory());\r\n\t\t\tbulkDataGetExtnDto.setUploadedBy(bulkUploadTranscation.getUploadedBy());\r\n\t\t\tbulkDataGetExtnDto.setTimeStamp(bulkUploadTranscation.getCreatedDateTime().toString());\r\n\t\t} catch (Exception e) {\r\n\t\t\tauditUtil.setAuditRequestDto(EventEnum.getEventEnumWithValue(EventEnum.BULKDATA_TRANSACTION_ERROR,\r\n\t\t\t\t\ttranscationId + \" - \" + e.getMessage()),null);\r\n\t\t\tthrow new DataNotFoundException(BulkUploadErrorCode.UNABLE_TO_RETRIEVE_TRANSCATION.getErrorCode(),\r\n\t\t\t\t\tBulkUploadErrorCode.UNABLE_TO_RETRIEVE_TRANSCATION.getErrorMessage(), e);\r\n\t\t}\r\n\r\n\t\treturn bulkDataGetExtnDto;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic PageDto getAllTrascationDetails(int pageNumber, int pageSize, String sortBy,\r\n\t\t\tString orderBy, String category) {\r\n\t\tPage pageData = null;\r\n\t\tList bulkDataGetExtnDtos2 = new ArrayList();\r\n\t\tPageDto pageDto2 = new PageDto();\r\n\t\ttry {\r\n\t\t\tPageable pageable = PageRequest.of(pageNumber, pageSize, Sort.by(Direction.fromString(orderBy), sortBy));\r\n\t\t\tpageData = bulkTranscationRepo.findByCategory(category, pageable);\r\n\t\t\tfor (BulkUploadTranscation bulkUploadTranscation : pageData.getContent()) {\r\n\t\t\t\tBulkDataGetExtnDto bulkDataGetExtnDto = new BulkDataGetExtnDto();\r\n\r\n\t\t\t\tbulkDataGetExtnDto.setTranscationId(bulkUploadTranscation.getId());\r\n\t\t\t\tbulkDataGetExtnDto.setCount(bulkUploadTranscation.getRecordCount());\r\n\t\t\t\tbulkDataGetExtnDto.setOperation(bulkUploadTranscation.getUploadOperation());\r\n\t\t\t\tbulkDataGetExtnDto.setStatus(bulkUploadTranscation.getStatusCode());\r\n\t\t\t\tbulkDataGetExtnDto.setStatusDescription(bulkUploadTranscation.getUploadDescription());\r\n\t\t\t\tbulkDataGetExtnDto.setCategory(bulkUploadTranscation.getCategory());\r\n\t\t\t\tbulkDataGetExtnDto.setEntityName(bulkUploadTranscation.getEntityName());\r\n\t\t\t\tbulkDataGetExtnDto.setCategory(bulkUploadTranscation.getCategory());\r\n\t\t\t\tbulkDataGetExtnDto.setUploadedBy(bulkUploadTranscation.getUploadedBy());\r\n\t\t\t\tbulkDataGetExtnDto.setTimeStamp(bulkUploadTranscation.getCreatedDateTime().toString());\r\n\t\t\t\tbulkDataGetExtnDtos2.add(bulkDataGetExtnDto);\r\n\r\n\t\t\t}\r\n\t\t} catch (Exception e) {\r\n\t\t\tauditUtil.setAuditRequestDto(EventEnum.BULKDATA_TRANSACTION_ALL_ERROR,null);\r\n\t\t\tthrow new DataNotFoundException(BulkUploadErrorCode.UNABLE_TO_RETRIEVE_TRANSCATION.getErrorCode(),\r\n\t\t\t\t\tBulkUploadErrorCode.UNABLE_TO_RETRIEVE_TRANSCATION.getErrorMessage(), e);\r\n\t\t}\r\n\t\tpageDto2 = new PageDto(pageData.getNumber(), pageData.getTotalPages(),\r\n\t\t\t\tpageData.getTotalElements(), bulkDataGetExtnDtos2);\r\n\t\treturn pageDto2;\r\n\t}\r\n\r\n\tprivate BulkDataResponseDto importDataFromFile(String tableName, String operation, String category,\r\n\t\t\tMultipartFile[] files) {\r\n\r\n\t\tif(!isValidOperation(operation)) {\r\n\t\t\tauditUtil.setAuditRequestDto(EventEnum.BULKDATA_INVALID_OPERATION,null);\r\n\t\t\tthrow new RequestException(BulkUploadErrorCode.INVALID_ARGUMENT.getErrorCode(),\r\n\t\t\t\t\tBulkUploadErrorCode.INVALID_ARGUMENT.getErrorMessage() + \"OPERATION\");\r\n\t\t}\r\n\r\n\t\tif (files == null || files.length == 0) {\r\n\t\t\tauditUtil.setAuditRequestDto(EventEnum.BULKDATA_INVALID_ARGUMENT,null);\r\n\t\t\tthrow new RequestException(BulkUploadErrorCode.NO_FILE.getErrorCode(),\r\n\t\t\t\t\tBulkUploadErrorCode.NO_FILE.getErrorMessage());\r\n\t\t}\r\n\r\n\t\tif (tableName == null || tableName.isBlank()) {\r\n\t\t\tauditUtil.setAuditRequestDto(EventEnum.BULKDATA_INVALID_ARGUMENT,null);\r\n\t\t\tthrow new RequestException(BulkUploadErrorCode.INVALID_ARGUMENT.getErrorCode(),\r\n\t\t\t\t\tBulkUploadErrorCode.INVALID_ARGUMENT.getErrorMessage() + \"TABLENAME\");\r\n\t\t}\r\n\r\n\t\tClass entity = mapper.getEntity(tableName);\r\n\t\tif (entity == null) {\r\n\t\t\tauditUtil.setAuditRequestDto(EventEnum.BULKDATA_INVALID_ARGUMENT,null);\r\n\t\t\tthrow new RequestException(BulkUploadErrorCode.INVALID_ARGUMENT.getErrorCode(),\r\n\t\t\t\t\tBulkUploadErrorCode.INVALID_ARGUMENT.getErrorMessage() + \"TABLENAME\");\r\n\t\t}\r\n\r\n\t\tlogger.info(\"category {}, tablename: {} , operation: {}, Uploaded files : {}\", AuditUtil.neutralizeParam(category), AuditUtil.neutralizeParam(tableName), AuditUtil.neutralizeParam(operation),\r\n\t\t\t\tAuditUtil.neutralizeParam(files.length));\r\n\r\n\t\tauditUtil.setAuditRequestDto(EventEnum.getEventEnumWithValue(EventEnum.BULKDATA_UPLOAD,\r\n\t\t\t\t\"{category:'\" + category + \"',tablename:'\" + tableName + \"',operation:'\" + operation + \"'}\"),null);\r\n\r\n\t\tBulkUploadTranscation bulkUploadTranscation = saveTranscationDetails(0, operation,\r\n\t\t\t\tentity.getSimpleName(), category, \"\", \"PROCESSING\");\r\n\r\n\t\tArrays.stream(new MultipartFile[]{files[0]}).forEach(file -> {\r\n\t\t\tString message = null;\r\n\t\t\ttry {\r\n\t\t\t\tlogger.info(\"Is file empty ? {}, file-size :{}\", file.isEmpty(), file.getSize());\r\n\t\t\t\tif (file.isEmpty()) {\r\n\t\t\t\t\tthrow new RequestException(BulkUploadErrorCode.EMPTY_FILE.getErrorCode(),\r\n\t\t\t\t\t\t\tBulkUploadErrorCode.EMPTY_FILE.getErrorMessage());\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (!file.getOriginalFilename().endsWith(\".csv\") && !file.getOriginalFilename().endsWith(\".xls\") && !file.getOriginalFilename().endsWith(\".xlsx\")) {\r\n\t\t\t\t\tthrow new RequestException(BulkUploadErrorCode.INVALID_FILE_FORMAT.getErrorCode(),\r\n\t\t\t\t\t\t\tBulkUploadErrorCode.INVALID_FILE_FORMAT.getErrorMessage());\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tBoolean isCSV = file.getOriginalFilename().endsWith(\".csv\");\r\n\t\t\t\t\r\n\t\t\t\tauditUtil.setAuditRequestDto(EventEnum.getEventEnumWithValue(EventEnum.BULKDATA_UPLOAD_CSV,\r\n\t\t\t\t\t\toperation + \" from \" + file.getOriginalFilename()),null);\r\n\r\n\t\t\t\tJobParameters jobParameters = new JobParametersBuilder()\r\n\t\t\t\t\t\t.addString(\"transactionId\", bulkUploadTranscation.getId())\r\n\t\t\t\t\t\t.addString(\"username\", SecurityContextHolder.getContext().getAuthentication().getName())\r\n\t\t\t\t\t\t.addLong(\"time\", System.currentTimeMillis())\r\n\t\t\t\t\t\t.toJobParameters();\r\n\t\t\t\tjobLauncher.run(getJob(file,operation, mapper.getRepo(entity), setCreateMetaData(), entity, isCSV),\r\n\t\t\t\t\t\t\t\tjobParameters);\r\n\r\n\t\t\t\tauditUtil.setAuditRequestDto(EventEnum.getEventEnumWithValue(EventEnum.BULKDATA_UPLOAD_JOBDETAILS,\r\n\t\t\t\t\t\tbulkUploadTranscation.getId()),null);\r\n\r\n\t\t\t} catch (Throwable e) {\r\n\t\t\t\tlogger.error(\"Failed to import data from CSV\", e);\r\n\t\t\t\tmessage = String.format(CSV_UPLOAD_MESSAGE, file.getOriginalFilename(), 0, \"FAILED\", e.getMessage());\r\n\t\t\t}\r\n\r\n\t\t\t//On failure of launching job\r\n\t\t\tif(message != null) {\r\n\t\t\t\tauditUtil.setAuditRequestDto(EventEnum.getEventEnumWithValue(EventEnum.BULKDATA_UPLOAD_COMPLETED,\r\n\t\t\t\t\t\tbulkUploadTranscation.getId() + \" --> \" + message),null);\r\n\r\n\t\t\t\tbulkUploadTranscation.setUploadDescription(message);\r\n\t\t\t\tbulkUploadTranscation.setRecordCount(0);\r\n\t\t\t\tupdateBulkUploadTransaction(bulkUploadTranscation);\r\n\t\t\t}\r\n\r\n\t\t});\r\n\t\treturn setResponseDetails(bulkUploadTranscation, tableName);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic BulkDataResponseDto bulkDataOperation(String tableName, String operation, String category,\r\n MultipartFile[] files, String centerId, String source, String process,\r\n\t\t\t\t\t\t\t\t\t\t\t\t String supervisorStatus) {\r\n\r\n\t\tauditUtil.setAuditRequestDto(EventEnum.getEventEnumWithValue(EventEnum.BULKDATA_UPLOAD_CATEGORY, category),null);\r\n\r\n\t\tswitch (category.toLowerCase()) {\r\n\t\t\tcase \"masterdata\":\r\n\t\t\t\treturn importDataFromFile(tableName, operation, category, files);\r\n\r\n\t\t\tcase \"packet\":\r\n\t\t\t\treturn uploadPackets(files, operation, category, centerId, source, process, supervisorStatus);\r\n\t\t}\r\n\r\n\t\tauditUtil.setAuditRequestDto(EventEnum.BULKDATA_INVALID_CATEGORY,null);\r\n\t\tthrow new RequestException(BulkUploadErrorCode.INVALID_ARGUMENT.getErrorCode(),\r\n\t\t\t\tBulkUploadErrorCode.INVALID_ARGUMENT.getErrorMessage() + \"CATEGORY\");\r\n\t}\r\n\r\n\r\n\tprivate void updateBulkUploadTransaction(BulkUploadTranscation bulkUploadTranscation) {\r\n\t\tbulkUploadTranscation.setStatusCode(\"COMPLETED\");\r\n\t\tbulkUploadTranscation.setUploadedDateTime(Timestamp.valueOf(LocalDateTime.now(ZoneId.of(\"UTC\"))));\r\n\t\tbulkUploadTranscation.setUpdatedBy(\"JOB\");\r\n\t\tbulkTranscationRepo.save(bulkUploadTranscation);\r\n\t}\r\n\r\n\tprivate BulkDataResponseDto uploadPackets(MultipartFile[] files, String operation, String category, String centerId,\r\n\t\t\t\t\t\t\t\t\t\t\t String source, String process, String supervisorStatus) {\r\n\r\n\t\tif (files == null || files.length == 0) {\r\n\t\t\tauditUtil.setAuditRequestDto(EventEnum.BULKDATA_INVALID_ARGUMENT,null);\r\n\t\t\tthrow new RequestException(BulkUploadErrorCode.EMPTY_FILE.getErrorCode(),\r\n\t\t\t\t\tBulkUploadErrorCode.EMPTY_FILE.getErrorMessage());\r\n\t\t}\r\n\t\tAuthentication authentication = SecurityContextHolder.getContext().getAuthentication();\r\n\t\tauditUtil.setAuditRequestDto(EventEnum.getEventEnumWithValue(EventEnum.BULKDATA_UPLOAD,\r\n\t\t\t\t\"{category:'\" + category + \"',operation:'\" + operation + \"'}\"),null);\r\n\r\n\t\tboolean hasDataReadRole = hasDataReadRole();\r\n\t\tBulkUploadTranscation bulkUploadTranscation = saveTranscationDetails(0,\r\n\t\t\t\toperation, \"\", category, hasDataReadRole ? \"NOTE: Only after successful RID sync, Packet upload will be attempted\" :\r\n\t\t\t\t\"NOTE: Only packet upload is attempted. DATA_READ role is not present to perform RID sync\", \"PROCESSING\");\r\n\r\n\t\tArrays.stream(files).forEach( file -> {\r\n\t\t\tString message = null;\r\n\t\t\tauditUtil.setAuditRequestDto(EventEnum.getEventEnumWithValue(EventEnum.BULKDATA_PACKET_UPLOAD, file.getOriginalFilename()),null);\r\n\t\t\ttry {\r\n\t\t\t\tif (!file.getOriginalFilename().endsWith(\".zip\")) {\r\n\t\t\t\t\tthrow new RequestException(BulkUploadErrorCode.INVALID_PCK_FILE_FORMAT.getErrorCode(),\r\n\t\t\t\t\t\t\tBulkUploadErrorCode.INVALID_PCK_FILE_FORMAT.getErrorMessage());\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlogger.info(\"Is packet file empty ? {}, file-size :{}\", file.isEmpty(), file.getSize());\r\n\r\n\t\t\t\tif (file.isEmpty()) {\r\n\t\t\t\t\tthrow new RequestException(BulkUploadErrorCode.EMPTY_FILE.getErrorCode(),\r\n\t\t\t\t\t\t\tBulkUploadErrorCode.EMPTY_FILE.getErrorMessage());\r\n\t\t\t\t}\r\n\r\n\t\t\t\tJob job = new JobBuilder(\"packetJob\",jobRepository)\r\n\t\t\t\t\t\t.listener(packetJobResultListener)\r\n\t\t\t\t\t\t.incrementer(new RunIdIncrementer())\r\n\t\t\t\t\t\t.start(new StepBuilder(\"packetStep\",jobRepository)\r\n\t\t\t\t\t\t\t\t.tasklet(new PacketUploadTasklet(file.getOriginalFilename(), file.getBytes(),\r\n\t\t\t\t\t\t\t\t\t\tpacketUploadService, centerId, supervisorStatus,\r\n\t\t\t\t\t\t\t\t\t\tsource, process, hasDataReadRole ? \"SYNC-UPLOAD\" : \"UPLOAD\"),platformTransactionManager)\r\n\t\t\t\t\t\t\t\t.build())\r\n\t\t\t\t\t\t.build();\r\n\r\n\t\t\t\tJobParameters jobParameters = new JobParametersBuilder()\r\n\t\t\t\t\t\t.addString(\"transactionId\", bulkUploadTranscation.getId())\r\n\t\t\t\t\t\t.addString(\"username\", SecurityContextHolder.getContext().getAuthentication().getName())\r\n\t\t\t\t\t\t.addLong(\"time\", System.currentTimeMillis())\r\n\t\t\t\t\t\t.toJobParameters();\r\n\t\t\t\tJobExecution execution = jobLauncher.run(job, jobParameters);\r\n\t\t\t\texecution.getExecutionContext().put(SECURITY_PARAM_NAME, authentication);\r\n\r\n\t\t\t} catch (Throwable e) {\r\n\t\t\t\tlogger.error(\"Failed to sync and upload packet\", e);\r\n\t\t\t\tmessage = String.format(PKT_UPLOAD_MESSAGE, file.getOriginalFilename(), \"FAILED\", e.getMessage());\r\n\t\t\t}\r\n\r\n\t\t\tif(message != null) {\r\n\t\t\t\tauditUtil.setAuditRequestDto(EventEnum.getEventEnumWithValue(EventEnum.BULKDATA_UPLOAD_PACKET_STATUS, message),null);\r\n\t\t\t\tbulkUploadTranscation.setStatusCode(\"FAILED\");\r\n\t\t\t\tbulkUploadTranscation.setUploadDescription(message);\r\n\t\t\t\tupdateBulkUploadTransaction(bulkUploadTranscation);\r\n\t\t\t}\r\n\t\t});\r\n\t\treturn setResponseDetails(bulkUploadTranscation, \"\");\r\n\t}\r\n\r\n\tprivate boolean hasDataReadRole() {\r\n\t\tCollection grantedAuthorities = (Collection) SecurityContextHolder\r\n\t\t\t\t.getContext().getAuthentication().getAuthorities();\r\n\t\treturn grantedAuthorities.stream().anyMatch( ga -> ga.getAuthority().equalsIgnoreCase(DATA_READ_ROLE));\r\n\t}\r\n\r\n\tprivate Job getJob(MultipartFile file, String operation, String repositoryName, String contextUser,\r\n\t\t\t\t\t Class entity, Boolean isCSV) throws IOException {\r\n\t\t\r\n\t\tStep step = new StepBuilder(\"step\",jobRepository)\r\n\t\t\t\t.>chunk(100,platformTransactionManager)\r\n\t\t\t\t.reader(isCSV?csvItemReader(file, entity):excelItemReader(file, entity))\r\n\t\t\t\t.processor(processor(operation, contextUser))\r\n\t\t\t\t.writer(itemWriterMapper(repositoryName, operationMapper(operation), entity))\r\n\t\t\t\t.listener(customChunkListener)\r\n\t\t\t\t.build();\r\n\t\treturn new JobBuilder(\"job\",jobRepository)\r\n\t\t\t\t.listener(jobResultListener)\r\n\t\t\t\t.incrementer(new RunIdIncrementer())\r\n\t\t\t\t.start(step)\r\n\t\t\t\t.build();\r\n\t}\r\n\r\n\tprivate ConversionService customConversionService() {\r\n\t\tDefaultConversionService customConversionService = new DefaultConversionService();\r\n\t\tDefaultConversionService.addDefaultConverters(customConversionService);\r\n\t\tcustomConversionService.addConverter(new Converter() {\r\n\t\t\t@Override\r\n\t\t\tpublic LocalDateTime convert(String text) {\r\n\t\t\t\treturn LocalDateTime.parse(text, DateTimeFormatter.ISO_DATE_TIME);\r\n\t\t\t}\r\n\t\t});\r\n\t\tcustomConversionService.addConverter(new Converter() {\r\n\r\n\t\t\t@Override\r\n\t\t\tpublic LocalDate convert(String text) {\r\n\t\t\t\treturn LocalDate.parse(text, DateTimeFormatter.ISO_DATE);\r\n\t\t\t}\r\n\r\n\t\t});\r\n\r\n\t\tcustomConversionService.addConverter(new Converter() {\r\n\r\n\t\t\t@Override\r\n\t\t\tpublic LocalTime convert(String text) {\r\n\t\t\t\treturn LocalTime.parse(text, DateTimeFormatter.ISO_TIME);\r\n\t\t\t}\r\n\r\n\t\t});\r\n\r\n\t\tcustomConversionService.addConverter(new Converter() {\r\n\t\t\t@Override\r\n\t\t\tpublic Double convert(String text) {\r\n\t\t\t\treturn Double.parseDouble(text);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn customConversionService;\r\n\t}\r\n\t\r\n\t@StepScope\r\n\tprivate ItemReader excelItemReader(MultipartFile file, Class clazz) throws IOException {\r\n PoiItemReader reader = new PoiItemReader<>();\r\n reader.setLinesToSkip(1);\r\n reader.setResource(new InputStreamResource(file.getInputStream()));\r\n reader.setName(\"Excel-Reader\");\r\n \r\n CustomExcelRowMapper rowMapper = new CustomExcelRowMapper<>(customConversionService(),validator);\r\n rowMapper.setTargetType(clazz);\r\n reader.setRowMapper(rowMapper);\r\n return reader;\r\n }\r\n\r\n\t@StepScope\r\n\tprivate FlatFileItemReader csvItemReader(MultipartFile file, Class clazz) throws IOException {\r\n\r\n\t\tDelimitedLineTokenizer lineTokenizer = new DelimitedLineTokenizer();\r\n\t\tlineTokenizer.setDelimiter(lineDelimiter);\r\n\t\tlineTokenizer.setStrict(false);\r\n\r\n\t\tFlatFileItemReader flatFileItemReader = new FlatFileItemReader<>();\r\n\t\tflatFileItemReader.setEncoding(\"UTF-8\");\r\n\t\tflatFileItemReader.setResource(new InputStreamResource(file.getInputStream()));\r\n\t\tflatFileItemReader.setName(\"CSV-Reader\");\r\n\t\tflatFileItemReader.setRecordSeparatorPolicy(new CustomRecordSeparatorPolicy());\r\n\t\tflatFileItemReader.setLinesToSkip(1);\r\n\t\tflatFileItemReader.setSkippedLinesCallback(new LineCallbackHandler() {\r\n\t\t\t@Override\r\n\t\t\tpublic void handleLine(String s) {\r\n\t\t\t\tlineTokenizer.setNames(s.split(nameDelimiter));\r\n\t\t\t}\r\n\t\t});\r\n\t\tBeanWrapperFieldSetMapper fieldSetMapper = new BeanWrapperFieldSetMapper<>();\r\n\t\tfieldSetMapper.setTargetType(clazz);\r\n\t\tfieldSetMapper.setConversionService(customConversionService());\r\n\t\tCustomLineMapper lineMapper = new CustomLineMapper(setupLanguages(), validator);\r\n\t\tlineMapper.setLineTokenizer(lineTokenizer);\r\n\t\tlineMapper.setFieldSetMapper(fieldSetMapper);\r\n\t\tflatFileItemReader.setLineMapper(lineMapper);\r\n\t\treturn flatFileItemReader;\r\n\r\n\t}\r\n\r\n\tprivate ItemProcessor processor(String operation, String contextUser) {\r\n\t\tItemProcessor itemprocessor = new ItemProcessor() {\r\n\t\t\tLocalDateTime now = LocalDateTime.now(ZoneId.of(\"UTC\"));\r\n\t\t\t@Override\r\n\t\t\tpublic Object process(Object item) throws Exception {\r\n\t\t\t\tswitch (operation.toLowerCase()) {\r\n\t\t\t\t\tcase \"insert\":\r\n\t\t\t\t\t\t((BaseEntity) item).setCreatedBy(contextUser);\r\n\t\t\t\t\t\t((BaseEntity) item).setCreatedDateTime(now);\r\n\t\t\t\t\t\t((BaseEntity) item).setIsDeleted(false);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"update\":\r\n\t\t\t\t\t\t((BaseEntity) item).setUpdatedBy(contextUser);\r\n\t\t\t\t\t\t((BaseEntity) item).setUpdatedDateTime(now);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"delete\":\r\n\t\t\t\t\t\t((BaseEntity) item).setIsActive(false);\r\n\t\t\t\t\t\t((BaseEntity) item).setIsDeleted(true);\r\n\t\t\t\t\t\t((BaseEntity) item).setDeletedDateTime(now);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t\treturn item;\r\n\t\t\t}\r\n\t\t};\r\n\t\treturn itemprocessor;\r\n\t}\r\n\r\n\r\n\tprivate ItemWriter> insertItemWriter(String repoBeanName, String methodName, Class entity) {\r\n\t\tRepositoryListItemWriter> writer = new RepositoryListItemWriter<>(em, emf, entity, mapper,\r\n\t\t\t\tapplicationContext);\r\n\t\twriter.setRepoBeanName(repoBeanName);\r\n\t\twriter.setOperation(\"insert\");\r\n\t\twriter.setMethodName(methodName);\r\n\t\treturn writer;\r\n\t}\r\n\r\n\tprivate ItemWriter> updateItemWriter(String repoName, Class entity) {\r\n\t\tRepositoryListItemWriter> writer = new RepositoryListItemWriter<>(em, emf, entity, mapper,\r\n\t\t\t\tapplicationContext);\r\n\t\twriter.setRepoBeanName(repoName);\r\n\t\twriter.setOperation(\"update\");\r\n\t\treturn writer;\r\n\t}\r\n\r\n\t@SuppressWarnings(\"unchecked\")\r\n\tprivate ItemWriter> deleteItemWriter(String repoName, Class entity) {\r\n\t\tRepositoryListItemWriter> writer = new RepositoryListItemWriter<>(em, emf, entity, mapper,\r\n\t\t\t\tapplicationContext);\r\n\t\twriter.setRepoBeanName(repoName);\r\n\t\twriter.setOperation(\"delete\");\r\n\t\treturn writer;\r\n\t}\r\n\r\n\tprivate BulkUploadTranscation saveTranscationDetails(int count, String operation, String entityName,\r\n\t\t\tString category, String message, String status) {\r\n\t\tBulkUploadTranscation bulkUploadTranscation = new BulkUploadTranscation();\r\n\t\tLocalDateTime now = LocalDateTime.now(ZoneId.of(\"UTC\"));\r\n\t\tbulkUploadTranscation.setIsActive(true);\r\n\t\tbulkUploadTranscation.setLangCode(\"eng\");\r\n\t\tbulkUploadTranscation.setStatusCode(status);\r\n\t\tbulkUploadTranscation.setCreatedBy(setCreateMetaData());\r\n\t\tbulkUploadTranscation.setCreatedDateTime(now);\r\n\t\tbulkUploadTranscation.setEntityName(entityName);\r\n\t\tbulkUploadTranscation.setUploadedBy(setCreateMetaData());\r\n\t\tbulkUploadTranscation.setUploadedDateTime(Timestamp.valueOf(now));\r\n\t\tbulkUploadTranscation.setCategory(category);\r\n\t\tbulkUploadTranscation.setUploadDescription(message);\r\n\t\tbulkUploadTranscation.setUploadOperation(operation);\r\n\t\tbulkUploadTranscation.setRecordCount(count);\r\n\t\treturn bulkTranscationRepo.save(bulkUploadTranscation);\r\n\t}\r\n\r\n\tprivate BulkDataResponseDto setResponseDetails(BulkUploadTranscation bulkUploadTranscation, String tableName) {\r\n\r\n\t\tBulkDataResponseDto bulkDataResponseDto = new BulkDataResponseDto();\r\n\t\tbulkDataResponseDto.setTranscationId(bulkUploadTranscation.getId());\r\n\t\tbulkDataResponseDto.setOperation(bulkUploadTranscation.getUploadOperation());\r\n\t\tbulkDataResponseDto.setStatus(bulkUploadTranscation.getStatusCode());\r\n\t\tbulkDataResponseDto.setSuccessCount(bulkUploadTranscation.getRecordCount());\r\n\t\tbulkDataResponseDto.setCategory(bulkUploadTranscation.getCategory());\r\n\t\tbulkDataResponseDto.setStatusDescription(bulkUploadTranscation.getUploadDescription());\r\n\t\tbulkDataResponseDto.setTableName(tableName);\r\n\t\tbulkDataResponseDto.setTimeStamp(bulkUploadTranscation.getCreatedDateTime().toString());\r\n\t\tbulkDataResponseDto.setUploadedBy(bulkUploadTranscation.getUploadedBy());\r\n\t\treturn bulkDataResponseDto;\r\n\t}\r\n\r\n\tprivate static String setCreateMetaData() {\r\n\t\tString contextUser = \"superadmin\";\r\n\t\tAuthentication authN = SecurityContextHolder.getContext().getAuthentication();\r\n\t\tif (!EmptyCheckUtils.isNullEmpty(authN)) {\r\n\t\t\tcontextUser = authN.getName();\r\n\t\t}\r\n\t\treturn contextUser;\r\n\t}\r\n\r\n\r\n\tprivate static String operationMapper(String operationName) {\r\n\t\tif (operationName.equalsIgnoreCase(\"insert\"))\r\n\t\t\toperationName = \"create\";\r\n\r\n\t\treturn operationName;\r\n\t}\r\n\r\n\tItemWriter> itemWriterMapper(String repoBeanName, String operationName, Class entity) {\r\n\t\tItemWriter> item = null;\r\n\t\tif (operationName.equalsIgnoreCase(\"create\"))\r\n\t\t\titem = insertItemWriter(repoBeanName, operationName, entity);\r\n\t\telse if (operationName.equalsIgnoreCase(\"update\"))\r\n\t\t\titem = updateItemWriter(repoBeanName, entity);\r\n\t\telse if (operationName.equalsIgnoreCase(\"delete\"))\r\n\t\t\titem = deleteItemWriter(repoBeanName, entity);\r\n\t\treturn item;\r\n\t}\r\n\t\r\n\tprivate boolean isValidOperation(String operation) {\r\n\t\treturn operation != null && (operation.equalsIgnoreCase(\"insert\")\r\n\t\t\t\t|| operation.equalsIgnoreCase(\"update\")\r\n\t\t\t\t|| operation.equalsIgnoreCase(\"delete\"));\r\n\t}\r\n\r\n\tprivate List setupLanguages() {\r\n\t\tList configuredLanguages = new ArrayList<>();\r\n\t\tif(mandatoryLanguages != null && !mandatoryLanguages.isBlank()) {\r\n\t\t\tconfiguredLanguages.addAll(Arrays.asList(mandatoryLanguages.split(\",\"))\r\n\t\t\t\t\t.stream()\r\n\t\t\t\t\t.filter(emptyCheck.negate())\r\n\t\t\t\t\t.collect(Collectors.toList()));\r\n\t\t}\r\n\r\n\t\tif(optionalLanguages != null && !optionalLanguages.isBlank()) {\r\n\t\t\tconfiguredLanguages.addAll(Arrays.asList(optionalLanguages.split(\",\"))\r\n\t\t\t\t\t.stream()\r\n\t\t\t\t\t.filter(emptyCheck.negate())\r\n\t\t\t\t\t.collect(Collectors.toList()));\r\n\t\t}\r\n\t\treturn configuredLanguages;\r\n\t}\r\n}\r\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/constant/ApplicantDetailErrorCode.java", + "title": "ApplicantDetailErrorCode.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/constant/ApplicantDetailErrorCode.java", + "language": "java", + "content": "package io.mosip.admin.constant;\n\npublic enum ApplicantDetailErrorCode {\n\n UNABLE_TO_RETRIEVE_RID_DETAILS(\"ADM-AVD-001\", \"A technical error occurred while retrieving the data, please try again after some time.\"),\n RID_INVALID(\"ADM-AVD-002\",\"RID is invalid\"),\n RID_NOT_FOUND(\"ADM-AVD-003\",\"The card for this request ID is not generated. Please check the status of the ID.\"),\n DATA_NOT_FOUND(\"ADM-AVD-004\",\"Applicant Photo Not Found\"),\n DIGITAL_CARD_RID_NOT_FOUND(\"ADM-AVD-005\", \"Digital card not found for the RID, please try after few days\"),\n DIGITAL_CARD_NOT_ACKNOWLEDGED(\"ADM-AVD-006\", \"Please acknowledge the details before downloading digital card\"),\n REQ_ID_NOT_FOUND(\"ADM-AVD-007\",\"Request id not found\"),\n\n LIMIT_EXCEEDED(\"ADM-AVD-008\",\"Your daily search limit has exceeded. Please try searching again tomorrow.\"),\n\n DATA_SHARE_EXPIRED_EXCEPTION(\"ADM-AVD-008\", \"Data share usuage expired\");\n\n private final String errorCode;\n private final String errorMessage;\n\n private ApplicantDetailErrorCode(final String errorCode, final String errorMessage) {\n this.errorCode = errorCode;\n this.errorMessage = errorMessage;\n }\n\n public String getErrorCode() {\n return errorCode;\n }\n\n public String getErrorMessage() {\n return errorMessage;\n }\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/constant/AuthAdapterErrorCode.java", + "title": "AuthAdapterErrorCode.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/constant/AuthAdapterErrorCode.java", + "language": "java", + "content": "package io.mosip.admin.constant;\n\n/**\n * Error Code for Auth Adapter\n * \n * @author Urvil Joshi\n * @since 1.0.0\n *\n */\npublic enum AuthAdapterErrorCode {\n\t/**\n\t * UNAUTHORIZED\n\t */\n\tUNAUTHORIZED(\"KER-ATH-401\", \"Authentication Failed\"),\n\t/**\n\t * FORBIDDEN\n\t */\n\tFORBIDDEN(\"KER-ATH-403\", \"Forbidden\"),\n\t/**\n\t * FORBIDDEN\n\t */\n\tCONNECT_EXCEPTION(\"KER-ATH-002\", \"Fail to connect to auth service\"),\n\t/**\n\t * RESPONSE_PARSE_ERROR\n\t */\n\tRESPONSE_PARSE_ERROR(\"KER-ATH-001\", \"Error occur while parsing error from response\");\n\n\t/**\n\t * The error code\n\t */\n\tprivate final String errorCode;\n\t/**\n\t * The error message\n\t */\n\tprivate final String errorMessage;\n\n\t/**\n\t * Constructor to set error code and message\n\t * \n\t * @param errorCode the error code\n\t * @param errorMessage the error message\n\t */\n\tprivate AuthAdapterErrorCode(final String errorCode, final String errorMessage) {\n\t\tthis.errorCode = errorCode;\n\t\tthis.errorMessage = errorMessage;\n\t}\n\n\t/**\n\t * Function to get error code\n\t * \n\t * @return {@link #errorCode}\n\t */\n\tpublic String getErrorCode() {\n\t\treturn errorCode;\n\t}\n\n\t/**\n\t * Function to get the error message\n\t * \n\t * @return {@link #errorMessage}r\n\t */\n\tpublic String getErrorMessage() {\n\t\treturn errorMessage;\n\t}\n\n}" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/constant/LostRidErrorCode.java", + "title": "LostRidErrorCode.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/constant/LostRidErrorCode.java", + "language": "java", + "content": "package io.mosip.admin.constant;\n\npublic enum LostRidErrorCode {\n\n\tUNABLE_TO_RETRIEVE_LOSTRID(\"ADMN-LRID-001\", \"Unable to find the lost rid..\"),\n\tUNABLE_TO_RETRIEVE_LOSTRID_DATA(\"ADMN-LRID-002\", \"Unable to find the lost rid data\"),\n\n\tUNABLE_TO_RETRIEVE_APPLICANT_PHOTO(\"ADMN-LRID-003\", \"Unable to retrieve applicantPhoto\");\n\n\tprivate final String errorCode;\n\tprivate final String errorMessage;\n\n\tprivate LostRidErrorCode(final String errorCode, final String errorMessage) {\n\t\tthis.errorCode = errorCode;\n\t\tthis.errorMessage = errorMessage;\n\t}\n\n\tpublic String getErrorCode() {\n\t\treturn errorCode;\n\t}\n\n\tpublic String getErrorMessage() {\n\t\treturn errorMessage;\n\t}\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/controller/AdminController.java", + "title": "AdminController.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/controller/AdminController.java", + "language": "java", + "content": "package io.mosip.admin.controller;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\nimport io.mosip.admin.dto.*;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.security.access.prepost.PreAuthorize;\nimport org.springframework.web.bind.annotation.*;\n\nimport io.mosip.admin.packetstatusupdater.util.AuditUtil;\nimport io.mosip.admin.packetstatusupdater.util.EventEnum;\nimport io.mosip.admin.service.AdminService;\nimport io.mosip.kernel.core.exception.ServiceError;\nimport io.mosip.kernel.core.http.RequestWrapper;\nimport io.mosip.kernel.core.http.ResponseWrapper;\n\n@RestController\npublic class AdminController {\n\n\t@Autowired\n\tAdminService adminService;\n\t\n\t@Autowired\n\tAuditUtil auditUtil;\n\n\t@PreAuthorize(\"hasAnyRole(@authorizedRoles.getPostlostRid())\")\n\t@PostMapping(\"/lostRid\")\n\tpublic ResponseWrapper lostRid(@RequestBody RequestWrapper searchInfo) {\n\t\tauditUtil.setAuditRequestDto(EventEnum.LOST_RID_API_CALLED,null);\n\t\tLostRidResponseDto lostRidResponseDto = adminService.lostRid(searchInfo.getRequest());\n\t\tauditUtil.setAuditRequestDto(EventEnum.LOST_RID_SUCCESS,null);\n\t\treturn buildLostRidResponse(lostRidResponseDto);\n\t}\n\n\t@PreAuthorize(\"hasAnyRole(@authorizedRoles.getGetlostRiddetailsrid())\")\n\t@GetMapping(\"/lostRid/details/{rid}\")\n\tpublic ResponseWrapper getLostRidDetails(@PathVariable(\"rid\") String rid) {\n\t\tauditUtil.setAuditRequestDto(EventEnum.LOST_RID_API_CALLED,null);\n\t\tResponseWrapper responseWrapper = new ResponseWrapper<>();\n\t\tresponseWrapper.setResponse(adminService.getLostRidDetails(rid));\n\t\tauditUtil.setAuditRequestDto(EventEnum.LOST_RID_SUCCESS,null);\n\t\treturn responseWrapper;\n\t}\n\t\n\tprivate ResponseWrapper buildLostRidResponse(LostRidResponseDto lostRidResponseDto) {\n\t\tResponseWrapper responseWrapper = new ResponseWrapper<>();\n\t\tLostRidExtnDto lostRidExtnDto = new LostRidExtnDto();\n\t\tList sr=new ArrayList<>();\n\t\tif (!lostRidResponseDto.getErrors().isEmpty()) {\n\t\t\tfor (ErrorDTO ed : lostRidResponseDto.getErrors()) {\n\t\t\t\tServiceError se = new ServiceError();\n\t\t\t\tse.setErrorCode(ed.getErrorCode());\n\t\t\t\tse.setMessage(ed.getErrorMessage());\n\t\t\t\tsr.add(se);\n\t\t\t}\n\t\t}\n\t\tlostRidExtnDto.setData(lostRidResponseDto.getResponse());\n\t\tresponseWrapper.setResponse(lostRidExtnDto);\n\t\tresponseWrapper.setErrors(sr);\n\t\treturn responseWrapper;\n\t}\n\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/controller/ApplicantDetailsController.java", + "title": "ApplicantDetailsController.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/controller/ApplicantDetailsController.java", + "language": "java", + "content": "package io.mosip.admin.controller;\n\nimport io.mosip.admin.dto.ApplicantDetailsDto;\nimport io.mosip.admin.dto.ApplicantUserDetailsDto;\nimport io.mosip.admin.packetstatusupdater.util.AuditUtil;\nimport io.mosip.admin.packetstatusupdater.util.EventEnum;\nimport io.mosip.admin.service.ApplicantDetailService;\nimport io.mosip.kernel.core.http.ResponseWrapper;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.core.io.InputStreamResource;\nimport org.springframework.http.MediaType;\nimport org.springframework.http.ResponseEntity;\nimport org.springframework.security.access.prepost.PreAuthorize;\nimport org.springframework.web.bind.annotation.GetMapping;\nimport org.springframework.web.bind.annotation.PathVariable;\nimport org.springframework.web.bind.annotation.RequestParam;\nimport org.springframework.web.bind.annotation.RestController;\n\nimport java.io.ByteArrayInputStream;\n\n@RestController\npublic class ApplicantDetailsController {\n\n @Autowired\n AuditUtil auditUtil;\n\n @Autowired\n ApplicantDetailService applicantDetailService;\n\n //@PreAuthorize(\"hasRole('DIGITALCARD_ADMIN')\")\n @PreAuthorize(\"hasAnyRole(@authorizedRoles.getGetapplicantDetailsrid())\")\n @GetMapping(\"/applicantDetails/{rid}\")\n public ResponseWrapper getApplicantDetails(@PathVariable(\"rid\") String rid) throws Exception {\n auditUtil.setAuditRequestDto(EventEnum.APPLICANT_VERIFICATION_API_CALLED,null);\n ResponseWrapper responseWrapper = new ResponseWrapper<>();\n responseWrapper.setResponse(applicantDetailService.getApplicantDetails(rid));\n auditUtil.setAuditRequestDto(EventEnum.APPLICANT_VERIFICATION_SUCCESS,null);\n return responseWrapper;\n }\n\n // @PreAuthorize(\"hasRole('DIGITALCARD_ADMIN')\")\n @PreAuthorize(\"hasAnyRole(@authorizedRoles.getGetapplicantDetailsgetLoginDetails())\")\n @GetMapping(\"/applicantDetails/getLoginDetails\")\n public ResponseWrapper getApplicantUserDetails() throws Exception {\n auditUtil.setAuditRequestDto(EventEnum.APPLICANT_LOGIN_DETAILS_API_CALLED,null);\n ResponseWrapper responseWrapper = new ResponseWrapper<>();\n responseWrapper.setResponse(applicantDetailService.getApplicantUserDetails());\n auditUtil.setAuditRequestDto(EventEnum.APPLICANT_LOGIN_DETAILS_SUCCESS,null);\n return responseWrapper;\n }\n\n // @PreAuthorize(\"hasRole('DIGITALCARD_ADMIN')\")\n @PreAuthorize(\"hasAnyRole(@authorizedRoles.getGetriddigitalcardrid())\")\n @GetMapping(\"/rid-digital-card/{rid}\")\n public ResponseEntity getRIDDigitalCard(\n @PathVariable(\"rid\") String rid,@RequestParam(\"isAcknowledged\") boolean isAcknowledged) throws Exception {\n auditUtil.setAuditRequestDto(EventEnum.RID_DIGITAL_CARD_REQ,null);\n byte[] pdfBytes = applicantDetailService.getRIDDigitalCard(rid,isAcknowledged);\n InputStreamResource resource = new InputStreamResource(new ByteArrayInputStream(pdfBytes));\n auditUtil.setAuditRequestDto(EventEnum.RID_DIGITAL_CARD_REQ_SUCCESS,null);\n return ResponseEntity.ok().contentType(MediaType.parseMediaType(\"application/pdf\"))\n .header(\"Content-Disposition\", \"attachment; filename=\\\"\" +\n rid + \".pdf\\\"\")\n .body((Object) resource);\n }\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/controller/KeyManagerProxyController.java", + "title": "KeyManagerProxyController.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/controller/KeyManagerProxyController.java", + "language": "java", + "content": "package io.mosip.admin.controller;\n\nimport io.mosip.admin.packetstatusupdater.util.AuditUtil;\nimport io.mosip.admin.packetstatusupdater.util.EventEnum;\nimport io.mosip.admin.service.AdminProxyService;\nimport io.swagger.v3.oas.annotations.Operation;\nimport io.swagger.v3.oas.annotations.media.Content;\nimport io.swagger.v3.oas.annotations.media.Schema;\nimport io.swagger.v3.oas.annotations.responses.ApiResponse;\nimport io.swagger.v3.oas.annotations.responses.ApiResponses;\nimport io.swagger.v3.oas.annotations.tags.Tag;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.beans.factory.annotation.Value;\nimport org.springframework.http.HttpStatus;\nimport org.springframework.http.MediaType;\nimport org.springframework.http.ResponseEntity;\nimport org.springframework.web.bind.annotation.*;\n\nimport jakarta.servlet.http.HttpServletRequest;\n\n@RestController\n@RequestMapping(\"/keymanager/\")\n@Tag(name = \"keymanager-proxy-controller\", description = \"KeyManager Proxy Controller\")\npublic class KeyManagerProxyController {\n\n\t@Autowired\n\tAuditUtil auditUtil;\n\n\t@Autowired\n\tprivate AdminProxyService service;\n\n\t@Value(\"${mosip.admin.keymanager.service.url}\")\n\tprivate String url;\n\n\t@RequestMapping(path = \"/**\", produces = MediaType.APPLICATION_JSON_VALUE, method = RequestMethod.GET)\n\t@Operation(summary = \"KeyManager proxy\", description = \"KeyManager proxy\", tags = \"KeyManager-controller\")\n\t@ApiResponses(value = {\n\t\t\t@ApiResponse(responseCode = \"200\", description = \"OK\"),\n\t\t\t@ApiResponse(responseCode = \"401\", description = \"Unauthorized\", content = @Content(schema = @Schema(hidden = true))),\n\t\t\t@ApiResponse(responseCode = \"403\", description = \"Forbidden\", content = @Content(schema = @Schema(hidden = true))),\n\t\t\t@ApiResponse(responseCode = \"404\", description = \"Not Found\", content = @Content(schema = @Schema(hidden = true)))\n\t})\n\tpublic ResponseEntity getKeyManagerProxyController(@RequestBody(required = false) String body, HttpServletRequest request) {\n\t\tauditUtil.setAuditRequestDto(EventEnum.KEYMANAGER_PROXY_API_CALLED, null);\n\t\treturn ResponseEntity.status(HttpStatus.OK).body(service.getResponse(null, request, url));\n\t}\n\n\t@RequestMapping(path = \"/**\", produces = MediaType.APPLICATION_JSON_VALUE, method = RequestMethod.POST)\n\t@Operation(summary = \"KeyManager proxy\", description = \"KeyManager proxy\", tags = \"KeyManager-controller\")\n\t@ApiResponses(value = {\n\t\t\t@ApiResponse(responseCode = \"200\", description = \"OK\"),\n\t\t\t@ApiResponse(responseCode = \"401\", description = \"Unauthorized\", content = @Content(schema = @Schema(hidden = true))),\n\t\t\t@ApiResponse(responseCode = \"403\", description = \"Forbidden\", content = @Content(schema = @Schema(hidden = true))),\n\t\t\t@ApiResponse(responseCode = \"404\", description = \"Not Found\", content = @Content(schema = @Schema(hidden = true)))\n\t})\n\tpublic ResponseEntity postKeyManagerProxyController(@RequestBody(required = false) String body, HttpServletRequest request) {\n\t\tauditUtil.setAuditRequestDto(EventEnum.MASTERDATA_PROXY_API_CALLED, null);\n\t\treturn ResponseEntity.status(HttpStatus.OK).body(service.getResponse(body, request, url));\n\t}\n\n\t@RequestMapping(path = \"/**\", produces = MediaType.APPLICATION_JSON_VALUE, method = RequestMethod.DELETE)\n\t@Operation(summary = \"KeyManager proxy\", description = \"KeyManager proxy\", tags = \"KeyManager-controller\")\n\t@ApiResponses(value = {\n\t\t\t@ApiResponse(responseCode = \"200\", description = \"OK\"),\n\t\t\t@ApiResponse(responseCode = \"401\", description = \"Unauthorized\", content = @Content(schema = @Schema(hidden = true))),\n\t\t\t@ApiResponse(responseCode = \"403\", description = \"Forbidden\", content = @Content(schema = @Schema(hidden = true))),\n\t\t\t@ApiResponse(responseCode = \"404\", description = \"Not Found\", content = @Content(schema = @Schema(hidden = true)))\n\t})\n\tpublic ResponseEntity deleteKeyManagerProxyController(@RequestBody(required = false) String body, HttpServletRequest request) {\n\t\tauditUtil.setAuditRequestDto(EventEnum.MASTERDATA_PROXY_API_CALLED, null);\n\t\treturn ResponseEntity.status(HttpStatus.OK).body(service.getResponse(null, request, url));\n\t}\n\n\t@RequestMapping(path = \"/**\", produces = MediaType.APPLICATION_JSON_VALUE, method = RequestMethod.PUT)\n\t@Operation(summary = \"KeyManager proxy\", description = \"KeyManager proxy\", tags = \"KeyManager-controller\")\n\t@ApiResponses(value = {\n\t\t\t@ApiResponse(responseCode = \"200\", description = \"OK\"),\n\t\t\t@ApiResponse(responseCode = \"401\", description = \"Unauthorized\", content = @Content(schema = @Schema(hidden = true))),\n\t\t\t@ApiResponse(responseCode = \"403\", description = \"Forbidden\", content = @Content(schema = @Schema(hidden = true))),\n\t\t\t@ApiResponse(responseCode = \"404\", description = \"Not Found\", content = @Content(schema = @Schema(hidden = true)))\n\t})\n\tpublic ResponseEntity putKeyManagerProxyController(@RequestBody(required = false) String body, HttpServletRequest request) {\n\t\tauditUtil.setAuditRequestDto(EventEnum.MASTERDATA_PROXY_API_CALLED, null);\n\t\treturn ResponseEntity.status(HttpStatus.OK).body(service.getResponse(body, request, url));\n\t}\n\n\t@RequestMapping(path = \"/**\", produces = MediaType.APPLICATION_JSON_VALUE, method = RequestMethod.PATCH)\n\t@Operation(summary = \"KeyManager proxy\", description = \"KeyManager proxy for PATCH requests\", tags = \"KeyManager-controller\")\n\t@ApiResponses(value = {\n\t\t\t@ApiResponse(responseCode = \"200\", description = \"OK\"),\n\t\t\t@ApiResponse(responseCode = \"401\", description = \"Unauthorized\", content = @Content(schema = @Schema(hidden = true))),\n\t\t\t@ApiResponse(responseCode = \"403\", description = \"Forbidden\", content = @Content(schema = @Schema(hidden = true))),\n\t\t\t@ApiResponse(responseCode = \"404\", description = \"Not Found\", content = @Content(schema = @Schema(hidden = true)))\n\t})\n\tpublic ResponseEntity patchKeyManagerProxyController(@RequestBody(required = false) String body, HttpServletRequest request) {\n\t\tauditUtil.setAuditRequestDto(EventEnum.MASTERDATA_PROXY_API_CALLED, null);\n\t\treturn ResponseEntity.status(HttpStatus.OK).body(service.getResponse(body, request, url));\n\t}\n\n}\n\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/controller/MasterdataProxyController.java", + "title": "MasterdataProxyController.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/controller/MasterdataProxyController.java", + "language": "java", + "content": "package io.mosip.admin.controller;\n\nimport io.mosip.admin.packetstatusupdater.util.AuditUtil;\nimport io.mosip.admin.packetstatusupdater.util.EventEnum;\nimport io.mosip.admin.service.AdminProxyService;\nimport io.swagger.v3.oas.annotations.Operation;\nimport io.swagger.v3.oas.annotations.media.Content;\nimport io.swagger.v3.oas.annotations.media.Schema;\nimport io.swagger.v3.oas.annotations.responses.ApiResponse;\nimport io.swagger.v3.oas.annotations.responses.ApiResponses;\nimport io.swagger.v3.oas.annotations.tags.Tag;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.beans.factory.annotation.Value;\nimport org.springframework.http.HttpStatus;\nimport org.springframework.http.MediaType;\nimport org.springframework.http.ResponseEntity;\nimport org.springframework.web.bind.annotation.*;\n\nimport jakarta.servlet.http.HttpServletRequest;\n\n@RestController\n@RequestMapping(\"/masterdata\")\n@Tag(name = \"masterdata-proxy-controller\", description = \"Proxy Masterdata Controller\")\npublic class MasterdataProxyController {\n\n\t@Autowired\n\tAuditUtil auditUtil;\n\n\t@Autowired\n\tprivate AdminProxyService service;\n\n\t@Value(\"${mosip.admin.masterdata.service.url}\")\n\tprivate String url;\n\n\t@RequestMapping(path = \"/**\", produces = MediaType.APPLICATION_JSON_VALUE, method = RequestMethod.GET)\n\t@Operation(summary = \"Master data proxy\", description = \"Master data proxy\", tags = \"proxy-masterdata-controller\")\n\t@ApiResponses(value = {\n\t\t\t@ApiResponse(responseCode = \"200\", description = \"OK\"),\n\t\t\t@ApiResponse(responseCode = \"401\", description = \"Unauthorized\", content = @Content(schema = @Schema(hidden = true))),\n\t\t\t@ApiResponse(responseCode = \"403\", description = \"Forbidden\", content = @Content(schema = @Schema(hidden = true))),\n\t\t\t@ApiResponse(responseCode = \"404\", description = \"Not Found\", content = @Content(schema = @Schema(hidden = true)))\n\t})\n\tpublic ResponseEntity getMasterDataProxyController(@RequestBody(required = false) String body, HttpServletRequest request) {\n\t\tauditUtil.setAuditRequestDto(EventEnum.MASTERDATA_PROXY_API_CALLED, null);\n\t\treturn ResponseEntity.status(HttpStatus.OK).body(service.getResponse(null, request, url));\n\t}\n\n\t@RequestMapping(path = \"/**\", produces = MediaType.APPLICATION_JSON_VALUE, method = RequestMethod.POST)\n\t@Operation(summary = \"Master data proxy\", description = \"Master data proxy\", tags = \"proxy-masterdata-controller\")\n\t@ApiResponses(value = {\n\t\t\t@ApiResponse(responseCode = \"200\", description = \"OK\"),\n\t\t\t@ApiResponse(responseCode = \"401\", description = \"Unauthorized\", content = @Content(schema = @Schema(hidden = true))),\n\t\t\t@ApiResponse(responseCode = \"403\", description = \"Forbidden\", content = @Content(schema = @Schema(hidden = true))),\n\t\t\t@ApiResponse(responseCode = \"404\", description = \"Not Found\", content = @Content(schema = @Schema(hidden = true)))\n\t})\n\tpublic ResponseEntity postMasterDataProxyController(@RequestBody(required = false) String body, HttpServletRequest request) {\n\t\tauditUtil.setAuditRequestDto(EventEnum.MASTERDATA_PROXY_API_CALLED, null);\n\t\treturn ResponseEntity.status(HttpStatus.OK).body(service.getResponse(body, request, url));\n\t}\n\n\t@RequestMapping(path = \"/**\", produces = MediaType.APPLICATION_JSON_VALUE, method = RequestMethod.DELETE)\n\t@Operation(summary = \"Master data proxy\", description = \"Master data proxy\", tags = \"proxy-masterdata-controller\")\n\t@ApiResponses(value = {\n\t\t\t@ApiResponse(responseCode = \"200\", description = \"OK\"),\n\t\t\t@ApiResponse(responseCode = \"401\", description = \"Unauthorized\", content = @Content(schema = @Schema(hidden = true))),\n\t\t\t@ApiResponse(responseCode = \"403\", description = \"Forbidden\", content = @Content(schema = @Schema(hidden = true))),\n\t\t\t@ApiResponse(responseCode = \"404\", description = \"Not Found\", content = @Content(schema = @Schema(hidden = true)))\n\t})\n\tpublic ResponseEntity deleteMasterDataProxyController(@RequestBody(required = false) String body, HttpServletRequest request) {\n\t\tauditUtil.setAuditRequestDto(EventEnum.MASTERDATA_PROXY_API_CALLED, null);\n\t\treturn ResponseEntity.status(HttpStatus.OK).body(service.getResponse(null, request, url));\n\t}\n\n\t@RequestMapping(path = \"/**\", produces = MediaType.APPLICATION_JSON_VALUE, method = RequestMethod.PUT)\n\t@Operation(summary = \"Master data proxy\", description = \"Master data proxy\", tags = \"proxy-masterdata-controller\")\n\t@ApiResponses(value = {\n\t\t\t@ApiResponse(responseCode = \"200\", description = \"OK\"),\n\t\t\t@ApiResponse(responseCode = \"401\", description = \"Unauthorized\", content = @Content(schema = @Schema(hidden = true))),\n\t\t\t@ApiResponse(responseCode = \"403\", description = \"Forbidden\", content = @Content(schema = @Schema(hidden = true))),\n\t\t\t@ApiResponse(responseCode = \"404\", description = \"Not Found\", content = @Content(schema = @Schema(hidden = true)))\n\t})\n\tpublic ResponseEntity putMasterDataProxyController(@RequestBody(required = false) String body, HttpServletRequest request) {\n\t\tauditUtil.setAuditRequestDto(EventEnum.MASTERDATA_PROXY_API_CALLED, null);\n\t\treturn ResponseEntity.status(HttpStatus.OK).body(service.getResponse(body, request, url));\n\t}\n\n\n\t@RequestMapping(path = \"/**\", produces = MediaType.APPLICATION_JSON_VALUE, method = RequestMethod.PATCH)\n\t@Operation(summary = \"Master data proxy\", description = \"Master data proxy for PATCH requests\", tags = \"proxy-masterdata-controller\")\n\t@ApiResponses(value = {\n\t\t\t@ApiResponse(responseCode = \"200\", description = \"OK\"),\n\t\t\t@ApiResponse(responseCode = \"401\", description = \"Unauthorized\", content = @Content(schema = @Schema(hidden = true))),\n\t\t\t@ApiResponse(responseCode = \"403\", description = \"Forbidden\", content = @Content(schema = @Schema(hidden = true))),\n\t\t\t@ApiResponse(responseCode = \"404\", description = \"Not Found\", content = @Content(schema = @Schema(hidden = true)))\n\t})\n\tpublic ResponseEntity patchMasterDataProxyController(@RequestBody(required = false) String body, HttpServletRequest request) {\n\t\tauditUtil.setAuditRequestDto(EventEnum.MASTERDATA_PROXY_API_CALLED, null);\n\t\treturn ResponseEntity.status(HttpStatus.OK).body(service.getResponse(body, request, url));\n\t}\n\n}\n\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/controller/RoleController.java", + "title": "RoleController.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/controller/RoleController.java", + "language": "java", + "content": "package io.mosip.admin.controller;\n\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.web.bind.annotation.GetMapping;\nimport org.springframework.web.bind.annotation.RestController;\n\nimport io.mosip.admin.dto.RoleExtnDto;\nimport io.mosip.admin.service.RoleService;\nimport io.mosip.kernel.core.http.ResponseWrapper;\n\n@RestController\npublic class RoleController {\n\n\t@Autowired\n\tRoleService roleService;\n\t\n\t@GetMapping(\"/roles\")\n\tprivate ResponseWrapper getRequiredRoles() {\n\t\tResponseWrapper responseWrapper = new ResponseWrapper<>();\n\t\tresponseWrapper.setResponse(roleService.getRequiredRoles());\n\t\treturn responseWrapper;\n\t}\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/packetstatusupdater/constant/AdminManagerProxyErrorCode.java", + "title": "AdminManagerProxyErrorCode.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/packetstatusupdater/constant/AdminManagerProxyErrorCode.java", + "language": "java", + "content": "package io.mosip.admin.packetstatusupdater.constant;\r\n\r\npublic enum AdminManagerProxyErrorCode {\r\n\tADMIN_LOG_FAILED(\"ADM-PKT-000\",\"Failed to log the admin audit\"),\r\n\tINVALID_ADMIN_LOG(\"ADM-PKT-005\",\"Invalid admin log details\");\r\n\t\r\n\tprivate final String errorCode;\r\n\tprivate final String errorMessage;\r\n\r\n\tprivate AdminManagerProxyErrorCode(final String errorCode, final String errorMessage) {\r\n\t\tthis.errorCode = errorCode;\r\n\t\tthis.errorMessage = errorMessage;\r\n\t}\r\n\r\n\tpublic String getErrorCode() {\r\n\t\treturn errorCode;\r\n\t}\r\n\r\n\tpublic String getErrorMessage() {\r\n\t\treturn errorMessage;\r\n\t}\r\n\r\n}\r\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/packetstatusupdater/constant/AuditErrorCode.java", + "title": "AuditErrorCode.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/packetstatusupdater/constant/AuditErrorCode.java", + "language": "java", + "content": "package io.mosip.admin.packetstatusupdater.constant;\n\npublic enum AuditErrorCode {\n\n\tAUDIT_PARSE_EXCEPTION(\"KER-MSD-196\", \"Parse Error exception\"),\n\tAUDIT_EXCEPTION(\"KER-MSD-198\",\"Audit Exception from client::\");\n\n\tprivate final String errorCode;\n\tprivate final String errorMessage;\n\n\tprivate AuditErrorCode(String errorCode, String errorMessage) {\n\t\tthis.errorCode = errorCode;\n\t\tthis.errorMessage = errorMessage;\n\t}\n\n\tpublic String getErrorCode() {\n\t\treturn this.errorCode;\n\t}\n\n\tpublic String getErrorMessage() {\n\t\treturn this.errorMessage;\n\t}\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/packetstatusupdater/constant/PacketStatusUpdateErrorCode.java", + "title": "PacketStatusUpdateErrorCode.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/packetstatusupdater/constant/PacketStatusUpdateErrorCode.java", + "language": "java", + "content": "package io.mosip.admin.packetstatusupdater.constant;\n\npublic enum PacketStatusUpdateErrorCode {\n\n\tADMIN_UNAUTHORIZED(\"ADM-PKT-001\",\"Admin is not authorized\"),\n\tRID_INVALID(\"ADM-PKT-002\",\"RID is invalid\"),\n\tCENTER_ID_NOT_PRESENT(\"ADM_PKT-003\",\"Center does not exist\"),\n\tRID_NOT_FOUND(\"ADM-PKT-004\",\"RID Not Found\"),\n\tPACKET_JSON_PARSE_EXCEPTION(\"ADM-PKT-010\",\"JSON parse exception while parsing response\"),\n\tPACKET_FETCH_EXCEPTION(\"ADM-PKT-090\",\"Error occured while fetching packet status update\");\n\t\n\t\n\tprivate final String errorCode;\n\tprivate final String errorMessage;\n\n\tprivate PacketStatusUpdateErrorCode(final String errorCode, final String errorMessage) {\n\t\tthis.errorCode = errorCode;\n\t\tthis.errorMessage = errorMessage;\n\t}\n\n\tpublic String getErrorCode() {\n\t\treturn errorCode;\n\t}\n\n\tpublic String getErrorMessage() {\n\t\treturn errorMessage;\n\t}\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/packetstatusupdater/constant/RequestErrorCode.java", + "title": "RequestErrorCode.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/packetstatusupdater/constant/RequestErrorCode.java", + "language": "java", + "content": "package io.mosip.admin.packetstatusupdater.constant;\n\n/**\n * Constants for Request input related errors.\n * \n * @author Bal Vikash Sharma\n * @since 1.0.0\n *\n */\npublic enum RequestErrorCode {\n\n\tREQUEST_DATA_NOT_VALID(\"KER-MSD-999\", \"Invalid request input\"),\n\tREQUEST_INVALID_COLUMN(\"KER-MSD-319\", \"Invalid request input\"),\n\tREQUEST_INVALID_SEC_LANG_ID(\"KER-MSD-999\", \"Invalid id passed for Secondary language\"),\n\tINTERNAL_SERVER_ERROR(\"KER-MSD-500\", \"Internal server error\"),\n\tALREADY_ACTIVE_OR_INACTIVE(\"KER-MSD-998\",\"Already activated or deactivated\");\n\n\tprivate final String errorCode;\n\tprivate final String errorMessage;\n\n\tprivate RequestErrorCode(final String errorCode, final String errorMessage) {\n\t\tthis.errorCode = errorCode;\n\t\tthis.errorMessage = errorMessage;\n\t}\n\n\tpublic String getErrorCode() {\n\t\treturn errorCode;\n\t}\n\n\tpublic String getErrorMessage() {\n\t\treturn errorMessage;\n\t}\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/packetstatusupdater/controller/AuditManagerProxyController.java", + "title": "AuditManagerProxyController.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/packetstatusupdater/controller/AuditManagerProxyController.java", + "language": "java", + "content": "package io.mosip.admin.packetstatusupdater.controller;\r\n\r\nimport jakarta.validation.Valid;\r\n\r\nimport org.springframework.beans.factory.annotation.Autowired;\r\nimport org.springframework.security.access.prepost.PreAuthorize;\r\nimport org.springframework.web.bind.annotation.*;\r\n\r\nimport io.mosip.admin.packetstatusupdater.dto.AuditManagerRequestDto;\r\nimport io.mosip.admin.packetstatusupdater.dto.AuditManagerResponseDto;\r\nimport io.mosip.admin.packetstatusupdater.service.AuditManagerProxyService;\r\nimport io.mosip.kernel.core.http.RequestWrapper;\r\nimport io.mosip.kernel.core.http.ResponseFilter;\r\nimport io.mosip.kernel.core.http.ResponseWrapper;\r\n\r\nimport java.util.Map;\r\n\r\n/**\r\n * @author Megha Tanga\r\n */\r\n\r\n@RestController\r\n@RequestMapping(value = \"/auditmanager/log\")\r\npublic class AuditManagerProxyController {\r\n\t/**\r\n\t * AuditManager Service field with functions related to auditing\r\n\t */\r\n\t@Autowired\r\n\tAuditManagerProxyService auditManagerProxyService;\r\n\t\r\n\t\r\n\t/**\r\n\t * Function to proxy service to log admin UI audit\r\n\t * \r\n\t * @param requestDto\r\n\t * {@link AuditManagerRequestDto} having required fields for auditing\r\n\t * @return The {@link AuditManagerResponseDto} having the status of audit\r\n\t */\r\n\t@ResponseFilter\r\n\t@PreAuthorize(\"hasAnyRole(@authorizedRoles.getPostauditmanagerlog())\")\r\n\t@PostMapping\r\n\tpublic ResponseWrapper addAudit(@RequestBody @Valid RequestWrapper requestDto,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t @RequestHeader Map headers) {\r\n\t\tResponseWrapper response = new ResponseWrapper<>();\r\n\t\tresponse.setResponse(auditManagerProxyService.logAdminAudit(requestDto.getRequest()));\r\n\t\treturn response;\r\n\t}\r\n\r\n}" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/packetstatusupdater/controller/PacketUpdateStatusController.java", + "title": "PacketUpdateStatusController.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/packetstatusupdater/controller/PacketUpdateStatusController.java", + "language": "java", + "content": "package io.mosip.admin.packetstatusupdater.controller;\r\n\r\nimport org.springframework.beans.factory.annotation.Autowired;\r\nimport org.springframework.security.access.prepost.PreAuthorize;\r\nimport org.springframework.web.bind.annotation.GetMapping;\r\nimport org.springframework.web.bind.annotation.RequestMapping;\r\nimport org.springframework.web.bind.annotation.RequestParam;\r\nimport org.springframework.web.bind.annotation.RestController;\r\n\r\nimport io.mosip.admin.packetstatusupdater.dto.PacketStatusUpdateResponseDto;\r\nimport io.mosip.admin.packetstatusupdater.service.PacketStatusUpdateService;\r\nimport io.mosip.admin.packetstatusupdater.util.AuditUtil;\r\nimport io.mosip.admin.packetstatusupdater.util.EventEnum;\r\nimport io.mosip.kernel.core.http.ResponseFilter;\r\nimport io.mosip.kernel.core.http.ResponseWrapper;\r\n\r\n/**\r\n * The Class PacketUpdateStatusController.\r\n * \r\n * @author Srinivasan\r\n */\r\n@RestController\r\n@RequestMapping(\"/packetstatusupdate\")\r\npublic class PacketUpdateStatusController {\r\n\r\n\t/** The packet update status service. */\r\n\t@Autowired\r\n\tprivate PacketStatusUpdateService packetUpdateStatusService;\r\n\r\n\t@Autowired\r\n\tprivate AuditUtil auditUtil;\r\n\r\n\t/**\r\n\t * Validate packet.\r\n\t *\r\n\t * @param rId the r id\r\n\t * @return the response wrapper\r\n\t */\r\n\t@PreAuthorize(\"hasAnyRole(@authorizedRoles.getGetpacketstatusupdate())\")\r\n\t@GetMapping\r\n\t//@PreAuthorize(\"hasAnyRole('ZONAL_ADMIN','GLOBAL_ADMIN')\")\r\n\t@ResponseFilter\r\n\tpublic ResponseWrapper validatePacket(@RequestParam(value = \"rid\") String rId,\r\n\t\t\t@RequestParam(value = \"langCode\", required = false) String langCode) {\r\n\r\n\t\tauditUtil.setAuditRequestDto(EventEnum.getEventEnumWithValue(EventEnum.PKT_STATUS_UPD_API_CALLED, rId),null);\r\n\t\tResponseWrapper responseWrapper = new ResponseWrapper<>();\r\n\t\tresponseWrapper.setResponse(packetUpdateStatusService.getStatus(rId, langCode));\r\n\t\tauditUtil.setAuditRequestDto(EventEnum.getEventEnumWithValue(EventEnum.PKT_STATUS_UPD_SUCCESS, rId),null);\r\n\t\treturn responseWrapper;\r\n\t}\r\n}\r\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/packetstatusupdater/exception/AdminServiceException.java", + "title": "AdminServiceException.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/packetstatusupdater/exception/AdminServiceException.java", + "language": "java", + "content": "package io.mosip.admin.packetstatusupdater.exception;\r\n\r\nimport java.util.List;\r\n\r\nimport io.mosip.kernel.core.exception.BaseUncheckedException;\r\nimport io.mosip.kernel.core.exception.ServiceError;\r\n\r\npublic class AdminServiceException extends BaseUncheckedException {\r\n\t/**\r\n\t * Generated serialVersionUID\r\n\t */\r\n\tprivate static final long serialVersionUID = 8764526395763989084L;\r\n\r\n\tprivate List errors;\r\n\r\n\tpublic AdminServiceException(List errors) {\r\n\t\tthis.errors = errors;\r\n\t}\r\n\r\n public AdminServiceException(String errorCode, String errorMsg) {\r\n }\r\n\r\n public List getErrors() {\r\n\t\treturn errors;\r\n\t}\r\n\r\n}\r\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/packetstatusupdater/exception/ApiExceptionHandler.java", + "title": "ApiExceptionHandler.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/packetstatusupdater/exception/ApiExceptionHandler.java", + "language": "java", + "content": "package io.mosip.admin.packetstatusupdater.exception;\r\n\r\nimport java.io.IOException;\r\nimport java.time.LocalDateTime;\r\nimport java.time.ZoneId;\r\n\r\nimport jakarta.servlet.http.HttpServletRequest;\r\n\r\nimport io.mosip.admin.bulkdataupload.service.impl.BulkDataUploadServiceImpl;\r\nimport io.mosip.kernel.authcodeflowproxy.api.exception.AuthCodeProxyExceptionHandler;\r\nimport org.slf4j.Logger;\r\nimport org.slf4j.LoggerFactory;\r\nimport org.springframework.beans.factory.annotation.Autowired;\r\nimport org.springframework.core.Ordered;\r\nimport org.springframework.core.annotation.Order;\r\nimport org.springframework.http.HttpStatus;\r\nimport org.springframework.http.ResponseEntity;\r\nimport org.springframework.security.access.AccessDeniedException;\r\nimport org.springframework.web.bind.annotation.ExceptionHandler;\r\nimport org.springframework.web.bind.annotation.RestControllerAdvice;\r\nimport org.springframework.web.servlet.mvc.method.annotation.ResponseEntityExceptionHandler;\r\nimport org.springframework.web.util.ContentCachingRequestWrapper;\r\n\r\nimport com.fasterxml.jackson.databind.JsonNode;\r\nimport com.fasterxml.jackson.databind.ObjectMapper;\r\nimport com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;\r\n\r\nimport io.mosip.admin.constant.AuthAdapterErrorCode;\r\nimport io.mosip.admin.packetstatusupdater.constant.RequestErrorCode;\r\nimport io.mosip.kernel.core.authmanager.exception.AuthNException;\r\nimport io.mosip.kernel.core.authmanager.exception.AuthZException;\r\nimport io.mosip.kernel.core.exception.BaseUncheckedException;\r\nimport io.mosip.kernel.core.exception.ExceptionUtils;\r\nimport io.mosip.kernel.core.exception.ServiceError;\r\nimport io.mosip.kernel.core.http.ResponseWrapper;\r\nimport io.mosip.kernel.core.util.EmptyCheckUtils;\r\n\r\n\r\n/**\r\n * Rest Controller Advice for Admin\r\n * \r\n * @author Srinivasan\r\n *\r\n * @since 1.0.0\r\n */\r\n@RestControllerAdvice\r\n@Order(Ordered.HIGHEST_PRECEDENCE)\r\npublic class ApiExceptionHandler {\r\n\r\n\t@Autowired\r\n\tprivate ObjectMapper objectMapper;\r\n\r\n\tprivate static final Logger logger = LoggerFactory.getLogger(ApiExceptionHandler.class);\r\n\r\n\r\n\t/*@ExceptionHandler(value = {AuthCodeProxyExceptionHandler.class})\r\n\tpublic ResponseEntity> defaultErrorHandler(\r\n\t\t\tfinal HttpServletRequest httpServletRequest, AuthCodeProxyExceptionHandler e) throws IOException {\r\n\t\tResponseWrapper errorResponse = setErrors(httpServletRequest);\r\n\t\terrorResponse.getErrors().addAll(e.getList());\r\n\t\treturn new ResponseEntity<>(errorResponse, e.getHttpStatus());\r\n\t}*/\r\n\t@ExceptionHandler(RequestException.class)\r\n\tpublic ResponseEntity> controlRequestException(\r\n\t\t\tfinal HttpServletRequest httpServletRequest, final RequestException e) throws IOException {\r\n\t\tlogger.info(\"exception : {} \",e);\r\n\t\treturn getErrorResponseEntity(e, HttpStatus.OK, httpServletRequest);\r\n\t}\r\n\r\n\t@ExceptionHandler(MasterDataServiceException.class)\r\n\tpublic ResponseEntity> controlDataServiceException(\r\n\t\t\tfinal HttpServletRequest httpServletRequest, final MasterDataServiceException e) throws IOException {\r\n\t\tlogger.info(\"exception : {} \",e);\r\n\t\treturn getErrorResponseEntity(e, HttpStatus.INTERNAL_SERVER_ERROR, httpServletRequest);\r\n\t}\r\n\r\n\t@ExceptionHandler(DataNotFoundException.class)\r\n\tpublic ResponseEntity> controlDataNotFoundException(\r\n\t\t\tfinal HttpServletRequest httpServletRequest, final DataNotFoundException e) throws IOException {\r\n\t\treturn getErrorResponseEntity(e, HttpStatus.OK, httpServletRequest);\r\n\t}\r\n\r\n\r\n\r\n\t@ExceptionHandler(AccessDeniedException.class)\r\n\tpublic ResponseEntity> onAccessDeniedException(\r\n\t\t\tfinal HttpServletRequest httpServletRequest, final AccessDeniedException e) throws IOException {\r\n\t\tResponseWrapper errorResponse = setErrors(httpServletRequest);\r\n\t\tServiceError error = new ServiceError(AuthAdapterErrorCode.FORBIDDEN.getErrorCode(),\r\n\t\t\t\tAuthAdapterErrorCode.FORBIDDEN.getErrorMessage());\r\n\t\terrorResponse.getErrors().add(error);\r\n\t\tExceptionUtils.logRootCause(e);\r\n\t\treturn new ResponseEntity<>(errorResponse, HttpStatus.FORBIDDEN);\r\n\t}\r\n\t\r\n\t@ExceptionHandler(AuthZException.class)\r\n\tpublic ResponseEntity> onAuthZException(\r\n\t\t\tfinal HttpServletRequest httpServletRequest, final AuthZException e) throws IOException {\r\n\t\tResponseWrapper errorResponse = setErrors(httpServletRequest);\r\n\t\tServiceError error = new ServiceError(AuthAdapterErrorCode.FORBIDDEN.getErrorCode(),\r\n\t\t\t\tAuthAdapterErrorCode.FORBIDDEN.getErrorMessage());\r\n\t\terrorResponse.getErrors().add(error);\r\n\t\tExceptionUtils.logRootCause(e);\r\n\t\treturn new ResponseEntity<>(errorResponse, HttpStatus.FORBIDDEN);\r\n\t}\r\n\t\r\n\t@ExceptionHandler(AuthNException.class)\r\n\tpublic ResponseEntity> onAuthNException(\r\n\t\t\tfinal HttpServletRequest httpServletRequest, final AuthNException e) throws IOException {\r\n\t\tResponseWrapper errorResponse = setErrors(httpServletRequest);\r\n\t\tServiceError error = new ServiceError(AuthAdapterErrorCode.UNAUTHORIZED.getErrorCode(),\r\n\t\t\t\tAuthAdapterErrorCode.UNAUTHORIZED.getErrorMessage());\r\n\t\terrorResponse.getErrors().add(error);\r\n\t\tExceptionUtils.logRootCause(e);\r\n\t\treturn new ResponseEntity<>(errorResponse, HttpStatus.UNAUTHORIZED);\r\n\t}\r\n\r\n\r\n\t@ExceptionHandler(value = { Exception.class, RuntimeException.class })\r\n\tpublic ResponseEntity> defaultErrorHandler(\r\n\t\t\tfinal HttpServletRequest httpServletRequest, Exception e) throws IOException {\r\n\t\tlogger.info(\"exception : {} \",e);\r\n\t\tResponseWrapper errorResponse = setErrors(httpServletRequest);\r\n\t\tServiceError error = new ServiceError(RequestErrorCode.INTERNAL_SERVER_ERROR.getErrorCode(), e.getMessage());\r\n\t\terrorResponse.getErrors().add(error);\r\n\t\treturn new ResponseEntity<>(errorResponse, HttpStatus.INTERNAL_SERVER_ERROR);\r\n\t}\r\n\r\n\tprivate ResponseEntity> getErrorResponseEntity(BaseUncheckedException e,\r\n\t\t\tHttpStatus httpStatus, HttpServletRequest httpServletRequest) throws IOException {\r\n\t\tResponseWrapper responseWrapper = setErrors(httpServletRequest);\r\n\t\tServiceError error = new ServiceError(e.getErrorCode(), e.getErrorText());\r\n\t\tresponseWrapper.getErrors().add(error);\r\n\t\treturn new ResponseEntity<>(responseWrapper, httpStatus);\r\n\t}\r\n\r\n\tprivate ResponseWrapper setErrors(HttpServletRequest httpServletRequest) throws IOException {\r\n\t\tResponseWrapper responseWrapper = new ResponseWrapper<>();\r\n\t\tresponseWrapper.setResponsetime(LocalDateTime.now(ZoneId.of(\"UTC\")));\r\n\t\tString requestBody = null;\r\n\t\tif (httpServletRequest instanceof ContentCachingRequestWrapper) {\r\n\t\t\trequestBody = new String(((ContentCachingRequestWrapper) httpServletRequest).getContentAsByteArray());\r\n\t\t}\r\n\t\tif (EmptyCheckUtils.isNullEmpty(requestBody)) {\r\n\t\t\treturn responseWrapper;\r\n\t\t}\r\n\t\tobjectMapper.registerModule(new JavaTimeModule());\r\n\t\tJsonNode reqNode = objectMapper.readTree(requestBody);\r\n\t\tresponseWrapper.setId(reqNode.path(\"id\").asText());\r\n\t\tresponseWrapper.setVersion(reqNode.path(\"version\").asText());\r\n\t\treturn responseWrapper;\r\n\t}\r\n\r\n\t@ExceptionHandler(ValidationException.class)\r\n\tpublic ResponseEntity> validationException(HttpServletRequest httpServletRequest,\r\n\t\t\tfinal ValidationException exception) throws IOException {\r\n\t\tResponseWrapper errorResponse = setErrors(httpServletRequest);\r\n\t\terrorResponse.getErrors().addAll(exception.getErrors());\r\n\t\treturn new ResponseEntity<>(errorResponse, HttpStatus.OK);\r\n\t}\r\n\r\n}\r\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/packetstatusupdater/exception/DataNotFoundException.java", + "title": "DataNotFoundException.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/packetstatusupdater/exception/DataNotFoundException.java", + "language": "java", + "content": "\npackage io.mosip.admin.packetstatusupdater.exception;\n\nimport io.mosip.kernel.core.exception.BaseUncheckedException;\n\n/**\n * Thrown while performing operation return of the operation assume some data\n * but got no data.\n * \n * @see io.mosip.kernel.core.exception.BaseUncheckedException\n * \n * @author Bal Vikash Sharma\n * \n * @since 1.0.0\n *\n */\npublic class DataNotFoundException extends BaseUncheckedException {\n\n\t/**\n\t * Generated serial version id\n\t */\n\tprivate static final long serialVersionUID = 2785372588639412708L;\n\n\t/**\n\t * Constructor to initialize handler exception\n\t * \n\t * @param errorCode The error code for this exception\n\t * @param errorMessage The error message for this exception\n\t */\n\tpublic DataNotFoundException(String errorCode, String errorMessage) {\n\t\tsuper(errorCode, errorMessage);\n\t}\n\n\t/**\n\t * Constructor the initialize Handler exception\n\t * \n\t * @param errorCode The error code for this exception\n\t * @param errorMessage The error message for this exception\n\t * @param rootCause the specified cause\n\t */\n\tpublic DataNotFoundException(String errorCode, String errorMessage, Throwable rootCause) {\n\t\tsuper(errorCode, errorMessage, rootCause);\n\t}\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/packetstatusupdater/exception/DeviceRegisterException.java", + "title": "DeviceRegisterException.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/packetstatusupdater/exception/DeviceRegisterException.java", + "language": "java", + "content": "package io.mosip.admin.packetstatusupdater.exception;\n\nimport io.mosip.kernel.core.exception.BaseUncheckedException;\n\npublic class DeviceRegisterException extends BaseUncheckedException{\n\n\t/**\n\t * \n\t */\n\tprivate static final long serialVersionUID = -1259410481176574774L;\n\n\tpublic DeviceRegisterException(String errorCode, String errorMessage) {\n\t\tsuper(errorCode, errorMessage);\n\t}\n\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/packetstatusupdater/exception/MasterDataServiceException.java", + "title": "MasterDataServiceException.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/packetstatusupdater/exception/MasterDataServiceException.java", + "language": "java", + "content": "package io.mosip.admin.packetstatusupdater.exception;\n\nimport io.mosip.kernel.core.exception.BaseUncheckedException;\n\n/**\n * Custom Exception Class in case of error occurred in services.\n * \n * @see io.mosip.kernel.core.exception.BaseUncheckedException\n * @author Bal Vikash Sharma\n * @since 1.0.0\n */\npublic class MasterDataServiceException extends BaseUncheckedException {\n\n\t/**\n\t * Generated serial version id\n\t */\n\tprivate static final long serialVersionUID = 8621530697947108810L;\n\n\t/**\n\t * Constructor the initialize Handler exception\n\t * \n\t * @param errorCode The error code for this exception\n\t * @param errorMessage The error message for this exception\n\t */\n\tpublic MasterDataServiceException(String errorCode, String errorMessage) {\n\t\tsuper(errorCode, errorMessage);\n\t}\n\n\t/**\n\t * Constructor the initialize Handler exception\n\t * \n\t * @param errorCode The error code for this exception\n\t * @param errorMessage The error message for this exception\n\t * @param rootCause the specified cause\n\t */\n\tpublic MasterDataServiceException(String errorCode, String errorMessage, Throwable rootCause) {\n\t\tsuper(errorCode, errorMessage, rootCause);\n\t}\n\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/packetstatusupdater/exception/RequestException.java", + "title": "RequestException.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/packetstatusupdater/exception/RequestException.java", + "language": "java", + "content": "\npackage io.mosip.admin.packetstatusupdater.exception;\n\nimport io.mosip.kernel.core.exception.BaseUncheckedException;\n\n/**\n * Customized exception class for invalid request provided by the user.\n * \n * @see io.mosip.kernel.core.exception.BaseUncheckedException\n * @author Bal Vikash Sharma\n * @since 1.0.0\n *\n */\npublic class RequestException extends BaseUncheckedException {\n\n\t/**\n\t * Generated serial version id\n\t */\n\tprivate static final long serialVersionUID = 2785372588639412708L;\n\n\t/**\n\t * Constructor to initialize handler exception\n\t * \n\t * @param errorCode The error code for this exception\n\t * @param errorMessage The error message for this exception\n\t */\n\tpublic RequestException(String errorCode, String errorMessage) {\n\t\tsuper(errorCode, errorMessage);\n\t}\n\n\t/**\n\t * Constructor the initialize Handler exception\n\t * \n\t * @param errorCode The error code for this exception\n\t * @param errorMessage The error message for this exception\n\t * @param rootCause the specified cause\n\t */\n\tpublic RequestException(String errorCode, String errorMessage, Throwable rootCause) {\n\t\tsuper(errorCode, errorMessage, rootCause);\n\t}\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/packetstatusupdater/exception/ValidationException.java", + "title": "ValidationException.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/packetstatusupdater/exception/ValidationException.java", + "language": "java", + "content": "package io.mosip.admin.packetstatusupdater.exception;\n\nimport java.util.List;\n\nimport io.mosip.kernel.core.exception.BaseUncheckedException;\nimport io.mosip.kernel.core.exception.ServiceError;\n\n/**\n * Exception to hold validation errors\n * \n * @author Abhishek Kumar\n * @since 1.0.0\n */\npublic class ValidationException extends BaseUncheckedException {\n\n\t/**\n\t * Generated serialVersionUID\n\t */\n\tprivate static final long serialVersionUID = 8764526395763989084L;\n\n\tprivate List errors;\n\n\tpublic ValidationException(List errors) {\n\t\tthis.errors = errors;\n\t}\n\n\tpublic List getErrors() {\n\t\treturn errors;\n\t}\n\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/packetstatusupdater/service/impl/AuditManagerProxyServiceImpl.java", + "title": "AuditManagerProxyServiceImpl.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/packetstatusupdater/service/impl/AuditManagerProxyServiceImpl.java", + "language": "java", + "content": "package io.mosip.admin.packetstatusupdater.service.impl;\r\n\r\nimport java.time.LocalDateTime;\r\nimport java.time.ZoneOffset;\r\nimport java.time.temporal.ChronoUnit;\r\nimport java.util.*;\r\nimport java.util.regex.Pattern;\r\n\r\nimport org.slf4j.Logger;\r\nimport org.slf4j.LoggerFactory;\r\nimport org.springframework.beans.factory.annotation.Autowired;\r\nimport org.springframework.beans.factory.annotation.Value;\r\nimport org.springframework.http.HttpEntity;\r\nimport org.springframework.http.HttpHeaders;\r\nimport org.springframework.security.core.context.SecurityContextHolder;\r\nimport org.springframework.stereotype.Service;\r\nimport org.springframework.web.client.HttpClientErrorException;\r\nimport org.springframework.web.client.HttpServerErrorException;\r\nimport org.springframework.web.client.RestTemplate;\r\n\r\nimport io.mosip.admin.packetstatusupdater.constant.AdminManagerProxyErrorCode;\r\nimport io.mosip.admin.packetstatusupdater.dto.AuditManagerRequestDto;\r\nimport io.mosip.admin.packetstatusupdater.dto.AuditManagerResponseDto;\r\nimport io.mosip.admin.packetstatusupdater.exception.MasterDataServiceException;\r\nimport io.mosip.admin.packetstatusupdater.service.AuditManagerProxyService;\r\nimport io.mosip.kernel.core.http.RequestWrapper;\r\n\r\nimport jakarta.servlet.http.HttpServletRequest;\r\nimport jakarta.validation.constraints.NotNull;\r\n\r\n/**\r\n * \r\n * @author Megha Tanga\r\n *\r\n */\r\n@Service\r\npublic class AuditManagerProxyServiceImpl implements AuditManagerProxyService {\r\n\r\n\tprivate static final Logger logger = LoggerFactory.getLogger(AuditManagerProxyServiceImpl.class);\r\n\tprivate static final String X_FORWARDED_FOR = \"X-Forwarded-For\";\r\n\r\n\t@Value(\"${mosip.kernel.audit.manager.api}\")\r\n\tString auditmanagerapi;\r\n\r\n\t@Value(\"#{'${mosip.admin.audit.manager.allowed.moduleId:ADM-NAV,KER-MSD}'.split(',')}\")\r\n\tprivate List allowedModuleIds;\r\n\r\n\t@Value(\"#{'${mosip.admin.audit.manager.allowed.moduleName:Kernel-Masterdata,Navigation}'.split(',')}\")\r\n\tprivate List allowedModuleNames;\r\n\r\n\t@Value(\"#{'${mosip.admin.audit.manager.allowed.eventTypes:Navigation: Click Event,Navigation: Page View Event}'.split(',')}\")\r\n\tprivate List allowedEventTypes;\r\n\r\n\t@Value(\"#{'${mosip.admin.audit.manager.allowed.ids:NO_ID}'.split(',')}\")\r\n\tprivate List allowedIds;\r\n\r\n\t@Value(\"#{'${mosip.admin.audit.manager.allowed.idTypes:ADMIN}'.split(',')}\")\r\n\tprivate List allowedIdTypes;\r\n\r\n\t@Value(\"${mosip.admin.audit.manager.eventId.pattern:^ADM-[0-9]{3}$}\")\r\n\tprivate String eventIdPattern;\r\n\r\n\t@Value(\"${mosip.admin.audit.manager.eventName.pattern:^(Click|Page View): ([\\\\W|\\\\w]{1,100}$)}\")\r\n\tprivate String eventNamePattern;\r\n\r\n\t@Value(\"${mosip.admin.audit.manager.application.id:10009}\")\r\n\tprivate String applicationId;\r\n\r\n\t@Value(\"${mosip.admin.audit.manager.application.name:Admin Portal}\")\r\n\tprivate String applicationName;\r\n\r\n\t@Value(\"${mosip.admin.audit.manager.actiontime.maxlimit.mins:-5}\")\r\n\tprivate int maxMinutes;\r\n\r\n\t@Value(\"${mosip.admin.audit.manager.actiontime.minlimit.mins:5}\")\r\n\tprivate int minMinutes;\r\n\r\n\t@Autowired\r\n\tRestTemplate restTemplate;\r\n\r\n\t@Autowired\r\n\tHttpServletRequest request;\r\n\r\n\tprivate String getHeaderValue(String headerName) {\r\n\t\tIterator headerNames = request.getHeaderNames().asIterator();\r\n\t\twhile(headerNames.hasNext()) {\r\n\t\t\tString current = headerNames.next();\r\n\t\t\tif(current.equalsIgnoreCase(headerName))\r\n\t\t\t\treturn request.getHeader(current);\r\n\t\t}\r\n\t\treturn null;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic AuditManagerResponseDto logAdminAudit(AuditManagerRequestDto auditManagerRequestDto) {\r\n\r\n\t\tString hostName = getHeaderValue(X_FORWARDED_FOR);\r\n\t\tif(hostName == null) {\r\n\t\t\thostName = getHeaderValue(HttpHeaders.ORIGIN);\r\n\t\t}\r\n\r\n\t\tvalidateAuditRequestDto(auditManagerRequestDto, hostName);\r\n\r\n\t\tauditManagerRequestDto.setHostIp(hostName);\r\n\t\tauditManagerRequestDto.setHostName(hostName);\r\n\t\tauditManagerRequestDto.setApplicationId(applicationId);\r\n\t\tauditManagerRequestDto.setApplicationName(applicationName);\r\n\r\n\t\tString username = SecurityContextHolder.getContext().getAuthentication().getName();\r\n\t\tauditManagerRequestDto.setSessionUserId(username);\r\n\t\tauditManagerRequestDto.setSessionUserName(username);\r\n\t\tauditManagerRequestDto.setCreatedBy(getHeaderValue(HttpHeaders.REFERER));\r\n\r\n\t\tRequestWrapper request = new RequestWrapper<>();\r\n\t\trequest.setId(\"mosip.admin.audit\");\r\n\t\trequest.setVersion(\"0.1\");\r\n\t\trequest.setRequesttime(LocalDateTime.now());\r\n\t\trequest.setRequest(auditManagerRequestDto);\r\n\r\n\t\tHttpEntity> entity = new HttpEntity<>(request);\r\n\r\n\t\ttry {\r\n\t\t\trestTemplate.postForEntity(auditmanagerapi, entity, String.class);\r\n\t\t} catch (HttpClientErrorException | HttpServerErrorException ex) {\r\n\t\t\tthrow new MasterDataServiceException(AdminManagerProxyErrorCode.ADMIN_LOG_FAILED.getErrorCode(),\r\n\t\t\t\t\tAdminManagerProxyErrorCode.ADMIN_LOG_FAILED.getErrorMessage(), ex);\r\n\t\t}\r\n\r\n\t\tAuditManagerResponseDto auditManagerResponseDto = new AuditManagerResponseDto();\r\n\t\tauditManagerResponseDto.setStatus(\"Success\");\r\n\t\tauditManagerResponseDto.setMessage(\"Audit logged successfuly\");\r\n\t\treturn auditManagerResponseDto;\r\n\r\n\t}\r\n\r\n\tprivate void validateAuditRequestDto(AuditManagerRequestDto auditManagerRequestDto, String hostName) {\r\n\t\tif(hostName == null || hostName.isBlank()) {\r\n\t\t\tlogger.error(\"Audit log hostname validation failed\");\r\n\t\t\tthrow new MasterDataServiceException(AdminManagerProxyErrorCode.INVALID_ADMIN_LOG.getErrorCode(),\r\n\t\t\t\t\tAdminManagerProxyErrorCode.INVALID_ADMIN_LOG.getErrorMessage());\r\n\t\t}\r\n\r\n\t\tvalidateRequestTimestamp(auditManagerRequestDto.getActionTimeStamp());\r\n\r\n\t\tif(!allowedModuleIds.contains(auditManagerRequestDto.getModuleId()) ||\r\n\t\t\t\t!allowedModuleNames.contains(auditManagerRequestDto.getModuleName()) ||\r\n\t\t\t\t!allowedEventTypes.contains(auditManagerRequestDto.getEventType()) ||\r\n\t\t\t\t!allowedIds.contains(auditManagerRequestDto.getId()) ||\r\n\t\t\t\t!allowedIdTypes.contains(auditManagerRequestDto.getIdType())) {\r\n\t\t\tlogger.error(\"Audit log allowed values validation failed\");\r\n\t\t\tthrow new MasterDataServiceException(AdminManagerProxyErrorCode.INVALID_ADMIN_LOG.getErrorCode(),\r\n\t\t\t\t\tAdminManagerProxyErrorCode.INVALID_ADMIN_LOG.getErrorMessage());\r\n\t\t}\r\n\r\n\t\tif(!Pattern.matches(eventIdPattern, auditManagerRequestDto.getEventId()) ||\r\n\t\t\t\t!Pattern.matches(eventNamePattern, auditManagerRequestDto.getEventName())) {\r\n\t\t\tlogger.error(\"Audit log pattern check validation failed\");\r\n\t\t\tthrow new MasterDataServiceException(AdminManagerProxyErrorCode.INVALID_ADMIN_LOG.getErrorCode(),\r\n\t\t\t\t\tAdminManagerProxyErrorCode.INVALID_ADMIN_LOG.getErrorMessage());\r\n\t\t}\r\n\t}\r\n\r\n\tprivate void validateRequestTimestamp(@NotNull LocalDateTime actionTimestamp) {\r\n\t\tlong value = actionTimestamp.until(LocalDateTime.now(ZoneOffset.UTC), ChronoUnit.MINUTES);\r\n\t\tif(value <= minMinutes && value >= maxMinutes) { return; }\r\n\r\n\t\tlogger.error(\"Audit log action timestamp validation failed : {}\", actionTimestamp);\r\n\t\tthrow new MasterDataServiceException(AdminManagerProxyErrorCode.INVALID_ADMIN_LOG.getErrorCode(),\r\n\t\t\t\tAdminManagerProxyErrorCode.INVALID_ADMIN_LOG.getErrorMessage());\r\n\t}\r\n\r\n}" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/packetstatusupdater/service/impl/PacketStatusUpdateServiceImpl.java", + "title": "PacketStatusUpdateServiceImpl.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/packetstatusupdater/service/impl/PacketStatusUpdateServiceImpl.java", + "language": "java", + "content": "package io.mosip.admin.packetstatusupdater.service.impl;\r\n\r\nimport java.time.LocalDateTime;\r\nimport java.util.ArrayList;\r\nimport java.util.Comparator;\r\nimport java.util.List;\r\nimport java.util.Properties;\r\n\r\nimport org.springframework.beans.factory.annotation.Autowired;\r\nimport org.springframework.beans.factory.annotation.Value;\r\nimport org.springframework.core.env.Environment;\r\nimport org.springframework.http.HttpHeaders;\r\nimport org.springframework.http.MediaType;\r\nimport org.springframework.http.ResponseEntity;\r\nimport org.springframework.stereotype.Component;\r\nimport org.springframework.web.client.RestTemplate;\r\nimport org.springframework.web.util.UriComponentsBuilder;\r\n\r\nimport com.fasterxml.jackson.core.type.TypeReference;\r\nimport com.fasterxml.jackson.databind.ObjectMapper;\r\n\r\nimport io.mosip.admin.packetstatusupdater.constant.PacketStatusUpdateErrorCode;\r\nimport io.mosip.admin.packetstatusupdater.dto.PacketStatusUpdateDto;\r\nimport io.mosip.admin.packetstatusupdater.dto.PacketStatusUpdateResponseDto;\r\nimport io.mosip.admin.packetstatusupdater.exception.MasterDataServiceException;\r\nimport io.mosip.admin.packetstatusupdater.exception.RequestException;\r\nimport io.mosip.admin.packetstatusupdater.service.PacketStatusUpdateService;\r\nimport io.mosip.admin.packetstatusupdater.util.AuditUtil;\r\nimport io.mosip.admin.packetstatusupdater.util.EventEnum;\r\nimport io.mosip.kernel.core.exception.ExceptionUtils;\r\nimport io.mosip.kernel.core.exception.ServiceError;\r\nimport io.mosip.kernel.core.http.ResponseWrapper;\r\nimport io.mosip.kernel.core.idvalidator.spi.RidValidator;\r\nimport io.mosip.kernel.core.logger.spi.Logger;\r\nimport io.mosip.kernel.core.signatureutil.exception.ParseResponseException;\r\nimport io.mosip.kernel.core.util.DateUtils2;\r\nimport io.mosip.kernel.logger.logback.factory.Logfactory;\r\n\r\n/**\r\n * Packet Status Update service.\r\n * \r\n * @author Srinivasan\r\n *\r\n */\r\n@Component\r\npublic class PacketStatusUpdateServiceImpl implements PacketStatusUpdateService {\r\n\t\r\n\tprivate final Logger logger = Logfactory.getSlf4jLogger(PacketStatusUpdateServiceImpl.class);\r\n\r\n\r\n\t/** The packet update status url. */\r\n\t@Value(\"${mosip.kernel.packet-status-update-url}\")\r\n\tprivate String packetUpdateStatusUrl;\r\n\r\n\t/** The zone validation url. */\r\n\t@Value(\"${mosip.kernel.zone-validation-url}\")\r\n\tprivate String zoneValidationUrl;\r\n\r\n\t@Value(\"${mosip.supported-languages}\")\r\n\tprivate String supportedLang;\r\n\r\n\t/** The rest template. */\r\n\t@Autowired\r\n\tprivate RestTemplate restTemplate;\r\n\r\n\t/** The object mapper. */\r\n\t@Autowired\r\n\tprivate ObjectMapper objectMapper;\r\n\r\n\t@Autowired\r\n\tprivate AuditUtil auditUtil;\r\n\t\r\n\t@Autowired\r\n\tprivate Environment environment;\r\n\r\n\t@Autowired\r\n\tprivate Properties packetProperties;\r\n\t\r\n\t@Autowired\r\n\tprivate RidValidator ridValidator;\r\n\r\n\tprivate static final String SLASH = \"/\";\r\n\r\n\t/*\r\n\t * (non-Javadoc)\r\n\t * \r\n\t * @see io.mosip.admin.packetstatusupdater.service.PacketStatusUpdateService#\r\n\t * getStatus(java.lang.String)\r\n\t */\r\n\t@Override\r\n\tpublic PacketStatusUpdateResponseDto getStatus(String rId, String langCode) {\r\n\t\t//Any Packet status can be viewed from any admin from any center\r\n\t\tauditUtil.setAuditRequestDto(EventEnum.PACKET_STATUS,null);\r\n\t\treturn getPacketStatus(rId);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the packet status.\r\n\t *\r\n\t * @param rId\r\n\t * the r id\r\n\t * @return the packet status\r\n\t */\r\n\t@SuppressWarnings({ \"unchecked\" })\r\n\tprivate PacketStatusUpdateResponseDto getPacketStatus(String rId) {\r\n\t\ttry {\r\n\t\t/*\tif (!ridValidator.validateId(rId)) {\r\n\t\t\t\tthrow new MasterDataServiceException(PacketStatusUpdateErrorCode.RID_INVALID.getErrorCode(),\r\n\t\t\t\t\t\tPacketStatusUpdateErrorCode.RID_INVALID.getErrorMessage());\r\n\t\t\t}\r\n*/\r\n\t\t\tHttpHeaders packetHeaders = new HttpHeaders();\r\n\t\t\tpacketHeaders.setContentType(MediaType.APPLICATION_JSON);\r\n\t\t\tUriComponentsBuilder urlBuilder = UriComponentsBuilder.fromUriString(packetUpdateStatusUrl)\r\n\t\t\t\t\t.path(rId);\r\n\t\t\tResponseEntity response = restTemplate.getForEntity(urlBuilder.toUriString(), String.class);\r\n\t\t\tif (response.getStatusCode().is2xxSuccessful()) {\r\n\t\t\t\tList packetStatusUpdateDtos = getPacketResponse(ArrayList.class,\r\n\t\t\t\t\t\tresponse.getBody());\r\n\t\t\t\tPacketStatusUpdateResponseDto regProcPacketStatusRequestDto = new PacketStatusUpdateResponseDto();\r\n\t\t\t\tList packStautsDto = objectMapper.convertValue(packetStatusUpdateDtos,\r\n\t\t\t\t\t\tnew TypeReference>() {\r\n\t\t\t\t\t\t});\r\n\t\t\t\tpackStautsDto.sort(createdDateTimesResultComparator);\r\n\t\t\t\tsetStatusMessage(packStautsDto);\r\n\t\t\t\tregProcPacketStatusRequestDto.setPacketStatusUpdateList(packStautsDto);\r\n\t\t\t\tpackStautsDto.stream().forEach(pcksts -> {\r\n\t\t\t\t\tauditUtil.setAuditRequestDto(EventEnum.getEventEnumBasedOnPAcketStatus(pcksts),null);\r\n\t\t\t\t});\r\n\t\t\t\treturn regProcPacketStatusRequestDto;\r\n\t\t\t}\r\n\t\t}\r\n\t\tcatch (RequestException e) {\r\n\t\t\tlogger.error(\"SESSIONID\", \"ADMIN-SERVICE\",\r\n\t\t\t\t\t\"ADMIN-SERVICE\", e.getMessage() + ExceptionUtils.getStackTrace(e));\r\n\t\t\tthrow e;\r\n\t\t}catch (Exception e) {\r\n\t\t\tlogger.error(\"SESSIONID\", \"ADMIN-SERVICE\",\r\n\t\t\t\t\t\"ADMIN-SERVICE\", e.getMessage() + ExceptionUtils.getStackTrace(e));\r\n\t\t\tthrow new MasterDataServiceException(PacketStatusUpdateErrorCode.PACKET_FETCH_EXCEPTION.getErrorCode(),\r\n\t\t\t\t\tPacketStatusUpdateErrorCode.PACKET_FETCH_EXCEPTION.getErrorMessage(), e);\r\n\t\t}\r\n\t\tauditUtil.setAuditRequestDto(EventEnum.getEventEnumWithValue(EventEnum.PACKET_STATUS_ERROR,rId),null);\r\n\t\tthrow new RequestException(PacketStatusUpdateErrorCode.PACKET_FETCH_EXCEPTION.getErrorCode(),\r\n\t\t\t\tPacketStatusUpdateErrorCode.PACKET_FETCH_EXCEPTION.getErrorMessage());\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Gets the packet response.\r\n\t *\r\n\t * @param \r\n\t * the generic type\r\n\t * @param clazz\r\n\t * the clazz\r\n\t * @param responseBody\r\n\t * the response body\r\n\t * @return the packet response\r\n\t */\r\n\r\n\tprivate T getPacketResponse(Class clazz, String responseBody) {\r\n\r\n\r\n\t\tList validationErrorsList = null;\r\n\t\tvalidationErrorsList = ExceptionUtils.getServiceErrorList(responseBody);\r\n\t\tT packetStatusUpdateDto = null;\r\n\r\n\t\tif(validationErrorsList != null && !validationErrorsList.isEmpty()) {\r\n\t\t\tfor (ServiceError serviceError : validationErrorsList) {\r\n\t\t\t\tswitch (serviceError.getErrorCode()) {\r\n\t\t\t\t\tcase \"RPR-RTS-001\":\r\n\t\t\t\t\t\tauditUtil.setAuditRequestDto(EventEnum.RID_NOT_FOUND,null);\r\n\t\t\t\t\t\tlogger.error(PacketStatusUpdateErrorCode.RID_NOT_FOUND.getErrorMessage());\r\n\t\t\t\t\t\tthrow new RequestException(PacketStatusUpdateErrorCode.RID_NOT_FOUND.getErrorCode(),\r\n\t\t\t\t\t\t\t\tPacketStatusUpdateErrorCode.RID_NOT_FOUND.getErrorMessage());\r\n\r\n\t\t\t\t\tcase \"KER-MSD-042\":\r\n\t\t\t\t\t\tauditUtil.setAuditRequestDto(EventEnum.CENTRE_NOT_EXISTS,null);\r\n\t\t\t\t\t\tlogger.error(PacketStatusUpdateErrorCode.CENTER_ID_NOT_PRESENT.getErrorMessage());\r\n\t\t\t\t\t\tthrow new RequestException(PacketStatusUpdateErrorCode.CENTER_ID_NOT_PRESENT.getErrorCode(),\r\n\t\t\t\t\t\t\t\tPacketStatusUpdateErrorCode.CENTER_ID_NOT_PRESENT.getErrorMessage());\r\n\r\n\t\t\t\t\tcase \"ADM-PKT-001\":\r\n\t\t\t\t\t\tauditUtil.setAuditRequestDto(EventEnum.USER_NOT_AUTHORIZED,null);\r\n\t\t\t\t\t\tlogger.error(PacketStatusUpdateErrorCode.ADMIN_UNAUTHORIZED.getErrorMessage());\r\n\t\t\t\t\t\tthrow new RequestException(PacketStatusUpdateErrorCode.ADMIN_UNAUTHORIZED.getErrorCode(),\r\n\t\t\t\t\t\t\t\tPacketStatusUpdateErrorCode.ADMIN_UNAUTHORIZED.getErrorMessage());\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tauditUtil.setAuditRequestDto(EventEnum.PACKET_STATUS_ERROR,null);\r\n\t\t\tlogger.error(\"Unknown error from get packet status API : {}\", validationErrorsList);\r\n\t\t\tthrow new RequestException(PacketStatusUpdateErrorCode.PACKET_FETCH_EXCEPTION.getErrorCode(),\r\n\t\t\t\t\tPacketStatusUpdateErrorCode.PACKET_FETCH_EXCEPTION.getErrorMessage());\r\n\t\t}\r\n\r\n\t\ttry {\r\n\t\t\tResponseWrapper responseObject = objectMapper.readValue(responseBody, new TypeReference>() {});\r\n\t\t\tpacketStatusUpdateDto = responseObject.getResponse();\r\n\t\t} catch (NullPointerException | java.io.IOException exception) {\r\n\t\t\tauditUtil.setAuditRequestDto(EventEnum.PACKET_JSON_PARSE_EXCEPTION,null);\r\n\t\t\tlogger.error(\"SESSIONID\", \"ADMIN-SERVICE\",\r\n\t\t\t\t\t\"ADMIN-SERVICE\", exception.getMessage() + ExceptionUtils.getStackTrace(exception));\r\n\t\t\tthrow new ParseResponseException(PacketStatusUpdateErrorCode.PACKET_JSON_PARSE_EXCEPTION.getErrorCode(),\r\n\t\t\t\t\tPacketStatusUpdateErrorCode.PACKET_JSON_PARSE_EXCEPTION.getErrorMessage());\r\n\r\n\t\t}\r\n\t\treturn packetStatusUpdateDto;\r\n\t}\r\n\r\n\r\n\tComparator createdDateTimesResultComparator = new Comparator() {\r\n\t\t@Override\r\n\t\tpublic int compare(PacketStatusUpdateDto o1, PacketStatusUpdateDto o2) {\r\n\t\t\tLocalDateTime o1CreatedDateTimes = DateUtils2.parseToLocalDateTime(o1.getCreatedDateTimes());\r\n\t\t\tLocalDateTime o2CreatedDateTimes = DateUtils2.parseToLocalDateTime(o2.getCreatedDateTimes());\r\n\t\t\treturn o1CreatedDateTimes.compareTo(o2CreatedDateTimes);\r\n\t\t}\r\n\t};\r\n\t\r\n\t/**\r\n\t * @param packStautsDtos\r\n\t * Description: It's calling the property file and set the comment based on the sub-status-code\r\n\t */\r\n\tprivate void setStatusMessage(List packStautsDtos) {\r\n\t\tif (null != packetProperties) {\r\n\t\t\tpackStautsDtos.stream().forEach(packStautsDto -> {\r\n\t\t\t\tString subStatusCode = packStautsDto.getSubStatusCode();\r\n\t\t\t\tif (subStatusCode != null && !subStatusCode.isEmpty()) {\r\n\t\t\t\t\tpackStautsDto.setStatusComment(packetProperties.getProperty(subStatusCode));\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n}\r\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/service/impl/AdminServiceImpl.java", + "title": "AdminServiceImpl.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/service/impl/AdminServiceImpl.java", + "language": "java", + "content": "package io.mosip.admin.service.impl;\n\nimport java.util.*;\n\nimport io.mosip.admin.constant.ApplicantDetailErrorCode;\nimport io.mosip.admin.dto.*;\nimport io.mosip.admin.util.Utility;\nimport io.mosip.biometrics.util.ConvertRequestDto;\nimport io.mosip.biometrics.util.face.FaceDecoder;\nimport io.mosip.kernel.core.http.RequestWrapper;\nimport io.mosip.kernel.core.http.ResponseWrapper;\nimport org.apache.commons.codec.binary.Base64;\nimport org.apache.commons.codec.binary.StringUtils;\nimport org.json.simple.JSONArray;\nimport org.json.simple.JSONObject;\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.beans.factory.annotation.Value;\nimport org.springframework.http.MediaType;\nimport org.springframework.stereotype.Service;\n\nimport com.fasterxml.jackson.databind.ObjectMapper;\n\nimport io.mosip.admin.constant.LostRidErrorCode;\nimport io.mosip.admin.packetstatusupdater.constant.ApiName;\nimport io.mosip.admin.packetstatusupdater.exception.RequestException;\nimport io.mosip.admin.packetstatusupdater.util.RestClient;\nimport io.mosip.admin.service.AdminService;\nimport io.mosip.kernel.core.util.DateUtils2;\n\n\n@Service\npublic class AdminServiceImpl implements AdminService {\n\n\t@Value(\"${mosip.registration.processor.lostrid.version:mosip.registration.processor.workflow.search}\")\n\tprivate String lostRidReqVersion;\n\n\t@Value(\"${mosip.registration.processor.lostrid.id:mosip.registration.lostrid}\")\n\tprivate String lostRidRequestId;\n\n\t@Value(\"${mosip.admin.lostrid.details.fields:fullName,dateOfBirth}\")\n\tprivate String[] fields;\n\n\t@Value(\"${mosip.admin.lostrid.details.name.field:fullName}\")\n\tprivate String nameField;\n\n\t@Value(\"${mosip.admin.lostrid.details.biometric.field:individualBiometrics}\")\n\tprivate String biometricField;\n\n\tprivate static final String PROCESS = \"NEW\";\n\n\tprivate static final String SOURCE = \"REGISTRATION_CLIENT\";\n\n\tprivate static final String RESPONSE = \"response\";\n\n\tprivate static final String SEGEMENTS = \"segments\";\n\n\tprivate static final String VALUE = \"value\";\n\n\tprivate static final Logger logger = LoggerFactory.getLogger(AdminServiceImpl.class);\n\n\t@Autowired\n\tprivate Utility utility;\n\n\n\t@Autowired\n\tRestClient restClient;\n\n\t@Autowired\n\tObjectMapper objectMapper;\n\n\n\t@Override\n\tpublic LostRidResponseDto lostRid(SearchInfo searchInfo) {\n\t\tLostRidResponseDto lostRidResponseDto = new LostRidResponseDto();\n\t\tRegProcRequestWrapper procRequestWrapper = new RegProcRequestWrapper<>();\n\t\tcreateLostRidRequest(searchInfo);\n\t\tprocRequestWrapper.setId(lostRidRequestId);\n\t\tprocRequestWrapper.setVersion(lostRidReqVersion);\n\t\tprocRequestWrapper.setRequest(searchInfo);\n\t\tString dateTime = DateUtils2.formatToISOString(DateUtils2.getUTCCurrentDateTime());\n\t\tprocRequestWrapper.setRequesttime(dateTime);\n\t\ttry {\n\t\t\tString response = restClient.postApi(ApiName.LOST_RID_API, MediaType.APPLICATION_JSON,\n\t\t\t\t\tprocRequestWrapper, String.class);\n\t\t\tlostRidResponseDto = objectMapper.readValue(response, LostRidResponseDto.class);\n\t\t} catch (Exception e) {\n\t\t\tthrow new RequestException(LostRidErrorCode.UNABLE_TO_RETRIEVE_LOSTRID.getErrorCode(),\n\t\t\t\t\tLostRidErrorCode.UNABLE_TO_RETRIEVE_LOSTRID.getErrorMessage()\n\t\t\t\t\t\t\t+ e);\n\t\t}\n\t\treturn lostRidResponseDto;\n\t}\n\n\tprivate void createLostRidRequest(SearchInfo searchInfoRequest) {\n\t\tfor(FilterInfo fi:searchInfoRequest.getFilters()){\n\t\t\tif(fi.getType().equalsIgnoreCase(\"contains\")) {\n\t\t\t\tfi.setType(\"equals\");\n\t\t\t}\n\t\t}\n\t\tif (searchInfoRequest.getSort().isEmpty()) {\n\t\t\tList sortInfos = searchInfoRequest.getSort();\n\t\t\tSortInfo sortInfo = new SortInfo();\n\t\t\tsortInfo.setSortField(\"registrationDate\");\n\t\t\tsortInfo.setSortType(\"desc\");\n\t\t\tsortInfos.add(sortInfo);\n\t\t\tsearchInfoRequest.setSort(sortInfos);\n\t\t}\n\n\t}\n\n\tpublic String getApplicantPhoto(byte[] isodata) throws Exception {\n\t\t ConvertRequestDto convertRequestDto = new ConvertRequestDto();\n\t\t convertRequestDto.setVersion(\"ISO19794_5_2011\");\n\t\t\tconvertRequestDto.setInputBytes(isodata);\n\t\t\tbyte[] data = FaceDecoder.convertFaceISOToImageBytes(convertRequestDto);\n\t\t\tString encodedBytes = new String(data);\n\n\t\treturn encodedBytes;\n\t}\n\n\t@Override\n\tpublic LostRidDetailsDto getLostRidDetails(String rid) {\n\t\tLostRidDetailsDto lostRidDetailsDto=new LostRidDetailsDto();\n\t\tMap lostRidDataMap=new HashMap<>();\n\t\tSearchFieldDtos fieldDtos=new SearchFieldDtos();\n\t\tRequestWrapper fieldDtosRequestWrapper=new RequestWrapper<>();\n\t\tConvertRequestDto convertRequestDto = new ConvertRequestDto();\n\t\ttry {\n\t\t\tSearchFieldResponseDto fieldResponseDto=new SearchFieldResponseDto();\n\t\t\tbuildSearchFieldsRequestDto(fieldDtos,rid);\n\t\t\tfieldDtosRequestWrapper.setRequest(fieldDtos);\n\t\t\tResponseWrapper fieldDtosResponseWrapper = restClient.postApi(ApiName.PACKET_MANAGER_SEARCHFIELDS, MediaType.APPLICATION_JSON,\n\t\t\t\t\tfieldDtosRequestWrapper, ResponseWrapper.class);\n\t\t\tfieldResponseDto = objectMapper.readValue(objectMapper.writeValueAsString(fieldDtosResponseWrapper.getResponse()), SearchFieldResponseDto.class);\n\t\t\tfor (String field: fields) {\n\t\t\t\tif (fieldResponseDto.getFields().containsKey(field) && field.equalsIgnoreCase(nameField)) {\n\t\t\t\t\tString value = fieldResponseDto.getFields().get(field);\n\t\t\t\t\torg.json.JSONArray jsonArray = new org.json.JSONArray(value);\n\t\t\t\t\torg.json.JSONObject jsonObject = (org.json.JSONObject) jsonArray.get(0);\n\t\t\t\t\tlostRidDataMap.put(field, jsonObject.getString(VALUE));\n\t\t\t\t} else {\n\t\t\t\t\tlostRidDataMap.put(field, fieldResponseDto.getFields().get(field));\n\t\t\t\t}\n\t\t\t}\n\t\t\tgetApplicantPhoto(rid,lostRidDataMap);\n\t\t\tlostRidDetailsDto.setLostRidDataMap(lostRidDataMap);\n\t\t} catch (Exception e) {\n\t\t\tlogger.error(\"error is occured while searching fields\",e);\n\t\t\tthrow new RequestException(LostRidErrorCode.UNABLE_TO_RETRIEVE_LOSTRID_DATA.getErrorCode(),\n\t\t\t\t\tLostRidErrorCode.UNABLE_TO_RETRIEVE_LOSTRID_DATA.getErrorMessage()\n\t\t\t\t\t\t\t, e);\n\t\t}\n\t\treturn lostRidDetailsDto;\n\t}\n\n\n\tprivate void getApplicantPhoto(String rid, Map lostRidDataMap){\n\t\tRequestWrapper biometricRequestDtoRequestWrapper=new RequestWrapper<>();\n\t\tBiometricRequestDto biometricRequestDto=new BiometricRequestDto();\n\t\tConvertRequestDto convertRequestDto = new ConvertRequestDto();\n\t\ttry {\n\t\t\tbuildBiometricRequestDto(biometricRequestDto,rid);\n\t\t\tbiometricRequestDtoRequestWrapper.setRequest(biometricRequestDto);\n\t\t\tString response = restClient.postApi(ApiName.PACKET_MANAGER_BIOMETRIC, MediaType.APPLICATION_JSON,\n\t\t\t\t\tbiometricRequestDtoRequestWrapper, String.class);\n\t\t\tJSONObject responseObj= objectMapper.readValue(response,JSONObject.class);\n\t\t\tJSONObject responseJsonObj=utility.getJSONObject(responseObj,RESPONSE);\n\t\t\tJSONArray segements=utility.getJSONArray(responseJsonObj,SEGEMENTS);\n\t\t\tJSONObject jsonObject=utility.getJSONObjectFromArray(segements,0);\n\t\t\tconvertRequestDto.setVersion(\"ISO19794_5_2011\");\n\t\t\tconvertRequestDto.setInputBytes(Base64.decodeBase64((String) jsonObject.get(\"bdb\")));\n\t\t\tbyte[] data = FaceDecoder.convertFaceISOToImageBytes(convertRequestDto);\n\t\t\tString encodedBytes = StringUtils.newStringUtf8(Base64.encodeBase64(data, false));\n\t\t\tString imageData = \"data:image/png;base64,\" + encodedBytes;\n\t\t\tif(response!=null && responseObj.get(\"response\")==null) {\n\t\t\t\tlogger.error(\"biometric api response is null : {}\",response);\n\t\t\t\tthrow new RequestException(ApplicantDetailErrorCode.RID_NOT_FOUND.getErrorCode(),\n\t\t\t\t\t\tApplicantDetailErrorCode.RID_NOT_FOUND.getErrorMessage());\n\t\t\t}\n\t\t\tlostRidDataMap.put(\"applicantPhoto\",imageData);\n\t\t} catch (Exception e) {\n\t\t\tlogger.error(\"error is occured while getting applicantPhoto\",e);\n\t\t\tthrow new RequestException(LostRidErrorCode.UNABLE_TO_RETRIEVE_APPLICANT_PHOTO.getErrorCode(),\n\t\t\t\t\tLostRidErrorCode.UNABLE_TO_RETRIEVE_APPLICANT_PHOTO.getErrorMessage()\n\t\t\t\t\t\t\t,e);\n\t\t}\n\t}\n\n\n\tprivate void buildBiometricRequestDto(BiometricRequestDto biometricRequestDto, String rid) {\n\t\tList modalities=new ArrayList<>();\n\t\tbiometricRequestDto.setSource(SOURCE);\n\t\tbiometricRequestDto.setId(rid);\n\t\tbiometricRequestDto.setProcess(PROCESS);\n\t\tbiometricRequestDto.setPerson(biometricField);\n\t\tmodalities.add(\"Face\");\n\t\tbiometricRequestDto.setModalities(modalities);\n\t}\n\n\n\tprivate void buildSearchFieldsRequestDto(SearchFieldDtos fieldDtos, String rid) {\n\t\tfieldDtos.setSource(SOURCE);\n\t\tfieldDtos.setId(rid);\n\t\tfieldDtos.setProcess(PROCESS);\n\t\tfieldDtos.setFields(Arrays.asList(fields));\n\t\tfieldDtos.setBypassCache(false);\n\t}\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/service/impl/ApplicantDetailServiceImpl.java", + "title": "ApplicantDetailServiceImpl.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/service/impl/ApplicantDetailServiceImpl.java", + "language": "java", + "content": "package io.mosip.admin.service.impl;\n\nimport com.fasterxml.jackson.databind.ObjectMapper;\nimport io.mosip.admin.bulkdataupload.entity.ApplicantUserDetailsEntity;\nimport io.mosip.admin.bulkdataupload.entity.ApplicantUserDetailsRepository;\nimport io.mosip.admin.constant.ApplicantDetailErrorCode;\nimport io.mosip.admin.dto.ApplicantDetailsDto;\nimport io.mosip.admin.dto.ApplicantUserDetailsDto;\nimport io.mosip.admin.dto.DigitalCardStatusResponseDto;\nimport io.mosip.admin.packetstatusupdater.constant.ApiName;\nimport io.mosip.admin.packetstatusupdater.exception.DataNotFoundException;\nimport io.mosip.admin.packetstatusupdater.exception.MasterDataServiceException;\nimport io.mosip.admin.packetstatusupdater.exception.RequestException;\nimport io.mosip.admin.packetstatusupdater.util.AuditUtil;\nimport io.mosip.admin.packetstatusupdater.util.EventEnum;\nimport io.mosip.admin.packetstatusupdater.util.RestClient;\nimport io.mosip.admin.service.ApplicantDetailService;\nimport io.mosip.admin.util.CbeffToBiometricUtil;\nimport io.mosip.admin.util.Utility;\nimport io.mosip.biometrics.util.ConvertRequestDto;\nimport io.mosip.biometrics.util.face.FaceDecoder;\nimport io.mosip.kernel.core.idvalidator.exception.InvalidIDException;\nimport org.apache.commons.codec.binary.Base64;\nimport org.apache.commons.codec.binary.StringUtils;\nimport org.json.JSONException;\nimport org.json.simple.JSONArray;\nimport org.json.simple.JSONObject;\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.beans.factory.annotation.Value;\nimport org.springframework.security.core.context.SecurityContextHolder;\nimport org.springframework.security.core.userdetails.UserDetails;\nimport org.springframework.stereotype.Service;\nimport org.springframework.web.client.ResourceAccessException;\n\nimport java.time.LocalDate;\nimport java.time.LocalDateTime;\nimport java.util.*;\n\n@Service\npublic class ApplicantDetailServiceImpl implements ApplicantDetailService {\n\n private static final String FACE = \"Face\";\n\n private static final Logger log = LoggerFactory.getLogger(ApplicantDetailServiceImpl.class);\n\n @Autowired\n RestClient restClient;\n\n @Autowired\n private ObjectMapper objectMapper;\n\n @Autowired\n private AuditUtil auditUtil;\n\n @Autowired\n CbeffToBiometricUtil cbeffToBiometricUtil;\n\n\n @Autowired\n Utility utility;\n\n @Autowired\n private ApplicantUserDetailsRepository applicantUserDetailsRepository;\n\n private static final String IDENTITY = \"identity\";\n\n private static final String RESPONSE = \"response\";\n\n private static final String AVAILABLE = \"available\";\n\n private static final String DOCUMENTS=\"documents\";\n\n private static final String APPLICANTPHOTO = \"applicantPhoto\";\n\n private static final String VALUE = \"value\";\n private static final String DOB = \"dob\";\n\n @Value(\"${mosip.admin.applicant-details.exposed-identity-fields}\")\n private String[] applicantDetails;\n\n @Value(\"${mosip.admin.applicant-details.max.login.count:15}\")\n private int maxcount;\n\n\n @Override\n public ApplicantDetailsDto getApplicantDetails(String rid) throws Exception {\n ApplicantDetailsDto applicantDetailsDto =new ApplicantDetailsDto();\n Map applicantDataMap=new HashMap<>();\n List pathsegments=new ArrayList<>();\n String individualBiometrics=null;\n pathsegments.add(rid);\n String imageData=null;\n try {\n String userId = ((UserDetails) SecurityContextHolder.getContext().getAuthentication().getPrincipal()).getUsername();\n long count=applicantUserDetailsRepository.countByUserIdAndLoginDate(userId, LocalDate.now());\n if((int)count>=maxcount){\n throw new RequestException(ApplicantDetailErrorCode.LIMIT_EXCEEDED.getErrorCode(),\n ApplicantDetailErrorCode.LIMIT_EXCEEDED.getErrorMessage());\n }\n String response = restClient.getApi(ApiName.RETRIEVE_IDENTITY_API,pathsegments,\"type\",\"bio\",String.class);\n JSONObject responseObj= objectMapper.readValue(response,JSONObject.class);\n if(response!=null && responseObj.get(\"response\")==null) {\n throw new RequestException(ApplicantDetailErrorCode.RID_NOT_FOUND.getErrorCode(),\n ApplicantDetailErrorCode.RID_NOT_FOUND.getErrorMessage());\n }\n JSONObject responseJsonObj= utility.getJSONObject(responseObj,RESPONSE);\n JSONObject identityObj=utility.getJSONObject(responseJsonObj,IDENTITY);\n JSONArray documents=utility.getJSONArray(responseJsonObj,DOCUMENTS);\n String idenitityJson=utility.getMappingJson();\n JSONObject idenitityJsonObject=objectMapper.readValue(idenitityJson,JSONObject.class);\n JSONObject mapperIdentity=utility.getJSONObject(idenitityJsonObject,IDENTITY);\n List mapperJsonKeys = new ArrayList<>(mapperIdentity.keySet());\n for(String valueObj: applicantDetails){\n if (valueObj == null) {\n log.warn(\"Encountered null value in applicantDetails list\");\n continue;\n }\n if(!valueObj.equalsIgnoreCase(APPLICANTPHOTO)){\n LinkedHashMap jsonObject = utility.getJSONValue(mapperIdentity, valueObj);\n if (jsonObject != null && VALUE != null && jsonObject.containsKey(VALUE)) {\n String value = jsonObject.get(VALUE);\n applicantDataMap.put(value, identityObj.get(value).toString());\n }\n } else {\n getImageData(documents,applicantDataMap);\n }\n }\n saveApplicantLoginDetails();\n applicantDetailsDto.setApplicantDataMap(applicantDataMap);\n } catch (ResourceAccessException | JSONException e) {\n auditUtil.setAuditRequestDto(EventEnum.APPLICANT_VERIFICATION_ERROR,null);\n throw new RequestException(ApplicantDetailErrorCode.UNABLE_TO_RETRIEVE_RID_DETAILS.getErrorCode(),\n ApplicantDetailErrorCode.UNABLE_TO_RETRIEVE_RID_DETAILS.getErrorMessage(),e);\n }catch (InvalidIDException | DataNotFoundException e){\n auditUtil.setAuditRequestDto(EventEnum.APPLICANT_VERIFICATION_ERROR,null);\n throw new RequestException(e.getErrorCode(), e.getErrorText());\n }\n return applicantDetailsDto;\n }\n\n @Override\n public byte[] getRIDDigitalCard(String rid, boolean isAcknowledged) throws Exception {\n if(!isAcknowledged){\n throw new MasterDataServiceException(\n ApplicantDetailErrorCode.DIGITAL_CARD_NOT_ACKNOWLEDGED.getErrorCode(),\n ApplicantDetailErrorCode.DIGITAL_CARD_NOT_ACKNOWLEDGED.getErrorMessage());\n }\n DigitalCardStatusResponseDto digitalCardStatusResponseDto =getDigitialCardStatus(rid);\n if(!digitalCardStatusResponseDto.getStatusCode().equalsIgnoreCase(AVAILABLE)) {\n auditUtil.setAuditRequestDto(EventEnum.RID_DIGITAL_CARD_REQ_EXCEPTION,null);\n throw new MasterDataServiceException(\n ApplicantDetailErrorCode.DIGITAL_CARD_RID_NOT_FOUND.getErrorCode(),\n ApplicantDetailErrorCode.DIGITAL_CARD_RID_NOT_FOUND.getErrorMessage());\n }\n return restClient.getApi(digitalCardStatusResponseDto.getUrl(), byte[].class);\n }\n\n @Override\n public ApplicantUserDetailsDto getApplicantUserDetails() {\n String userId = ((UserDetails) SecurityContextHolder.getContext().getAuthentication().getPrincipal()).getUsername();\n ApplicantUserDetailsDto applicantUserDetailsDto=new ApplicantUserDetailsDto();\n applicantUserDetailsDto.setMaxCount(maxcount);\n long count=applicantUserDetailsRepository.countByUserIdAndLoginDate(userId,LocalDate.now());\n applicantUserDetailsDto.setCount((int)count);\n return applicantUserDetailsDto;\n }\n\n private DigitalCardStatusResponseDto getDigitialCardStatus(String rid)\n throws Exception {\n\n List pathsegments=new ArrayList<>();\n pathsegments.add(rid);\n String response = restClient.getApi(ApiName.DIGITAL_CARD_STATUS_URL,pathsegments,\"\",\"\",String.class);\n JSONObject responseObj= objectMapper.readValue(response,JSONObject.class);\n if(responseObj.containsKey(\"response\") && responseObj.get(\"response\")==null) {\n throw new MasterDataServiceException(ApplicantDetailErrorCode.REQ_ID_NOT_FOUND.getErrorCode(),\n ApplicantDetailErrorCode.REQ_ID_NOT_FOUND.getErrorMessage());\n }\n JSONObject responseJsonObj= utility.getJSONObject(responseObj,RESPONSE);\n DigitalCardStatusResponseDto digitalCardStatusResponseDto = objectMapper.readValue(\n responseJsonObj.toJSONString(), DigitalCardStatusResponseDto.class);\n return digitalCardStatusResponseDto;\n }\n\n private void getImageData(JSONArray documents, Map applicantDataMap) throws Exception {\n ConvertRequestDto convertRequestDto = new ConvertRequestDto();\n JSONObject documentObj=utility.getJSONObjectFromArray(documents,0);\n String individualBiometrics = utility.getJSONValue(documentObj, VALUE);\n List subtype = new ArrayList<>();\n byte[] photoByte = cbeffToBiometricUtil.getImageBytes(individualBiometrics, FACE, subtype);\n if (photoByte != null) {\n convertRequestDto.setVersion(\"ISO19794_5_2011\");\n convertRequestDto.setInputBytes(photoByte);\n byte[] data = FaceDecoder.convertFaceISOToImageBytes(convertRequestDto);\n String encodedBytes = StringUtils.newStringUtf8(Base64.encodeBase64(data, false));\n String imageData = \"data:image/png;base64,\" + encodedBytes;\n applicantDataMap.put(APPLICANTPHOTO, imageData);\n } else {\n throw new DataNotFoundException(ApplicantDetailErrorCode.DATA_NOT_FOUND.getErrorCode(), ApplicantDetailErrorCode.DATA_NOT_FOUND.getErrorMessage());\n }\n }\n public void saveApplicantLoginDetails(){\n String userId = ((UserDetails) SecurityContextHolder.getContext().getAuthentication().getPrincipal()).getUsername();\n ApplicantUserDetailsEntity applicantUserDetailsEntity=new ApplicantUserDetailsEntity();\n applicantUserDetailsEntity.setUserId(userId);\n applicantUserDetailsEntity.setLoginDate(LocalDate.now());\n applicantUserDetailsEntity.setCreatedBy(SecurityContextHolder.getContext().getAuthentication().getName());\n applicantUserDetailsEntity.setCreatedDateTime(LocalDateTime.now());\n applicantUserDetailsEntity.setIsActive(true);\n applicantUserDetailsRepository.save(applicantUserDetailsEntity);\n }\n\n}\n\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/service/impl/RoleServiceImpl.java", + "title": "RoleServiceImpl.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/service/impl/RoleServiceImpl.java", + "language": "java", + "content": "package io.mosip.admin.service.impl;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\nimport org.springframework.beans.factory.annotation.Value;\nimport org.springframework.stereotype.Service;\n\nimport io.mosip.admin.dto.RoleExtnDto;\nimport io.mosip.admin.service.RoleService;\n\n@Service\npublic class RoleServiceImpl implements RoleService {\n\n\t@Value(\"${mosip.admin-services.required.roles}\")\n\tprivate String requiredRoles;\n\n\t@Override\n\tpublic RoleExtnDto getRequiredRoles() {\n\t\tRoleExtnDto roleExtnDto = new RoleExtnDto();\n\t\tString[] requiredRole = requiredRoles.split(\",\");\n\t\tList listRequiredRoles = new ArrayList();\n\t\tfor (String role : requiredRole) {\n\t\t\tlistRequiredRoles.add(role);\n\t\t}\n\t\troleExtnDto.setRoles(listRequiredRoles);\n\t\treturn roleExtnDto;\n\t}\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/hotlist-service/src/main/java/io/mosip/hotlist/constant/HotlistErrorConstants.java", + "title": "HotlistErrorConstants.java", + "repo": "mosip/admin-services", + "file_path": "admin/hotlist-service/src/main/java/io/mosip/hotlist/constant/HotlistErrorConstants.java", + "language": "java", + "content": "package io.mosip.hotlist.constant;\n\nimport java.util.Arrays;\nimport java.util.Collections;\nimport java.util.List;\nimport java.util.stream.Collectors;\n\n/**\n * The Enum HotlistErrorConstants.\n *\n * @author Manoj SP\n */\npublic enum HotlistErrorConstants {\n\n\t/** The missing input parameter. */\n\tMISSING_INPUT_PARAMETER(\"ADM-HTL-001\", \"Missing Input Parameter - %s\"),\n\n\t/** The invalid input parameter. */\n\tINVALID_INPUT_PARAMETER(\"ADM-HTL-002\", \"Invalid Input Parameter - %s\"),\n\n\t/** The id type not allowed. */\n\tID_TYPE_NOT_ALLOWED(\"ADM-HTL-003\", \"Input IdType not allowed to hotlist\"),\n\n\t/** The invalid request. */\n\tINVALID_REQUEST(\"ADM-HTL-004\", \"Invalid Request\"),\n\n\t/** The data validation failed. */\n\tDATA_VALIDATION_FAILED(\"ADM-HTL-005\", \"Input Data Validation Failed\"),\n\n\t/** The database access error. */\n\tDATABASE_ACCESS_ERROR(\"ADM-HTL-006\", \"Error occured while performing DB operations\"),\n\n\t/** The no record found. */\n\tNO_RECORD_FOUND(\"ADM-HTL-007\", \"No Record(s) found\"),\n\n\t/** The record exists. */\n\tRECORD_EXISTS(\"ADM-HTL-008\", \"Failed to hotlist as existing hotlist is still active\"),\n\n\t/** The client error. */\n\tCLIENT_ERROR(\"ADM-HTL-009\", \"4XX - Client Error occured\"),\n\n\t/** The server error. */\n\tSERVER_ERROR(\"ADM-HTL-010\", \"5XX - Server Error occured\"),\n\n\t/** The connection timed out. */\n\tCONNECTION_TIMED_OUT(\"ADM-HTL-011\", \"Connection timed out\"),\n\n\t/** The authorization failed. */\n\tAUTHORIZATION_FAILED(\"ADM-HTL-012\", \"Authorization Failed\"),\n\n\t/** The authentication failed. */\n\tAUTHENTICATION_FAILED(\"ADM-HTL-013\", \"Authentication Failed\"),\n\n\t/** The encryption decryption failed. */\n\tENCRYPTION_DECRYPTION_FAILED(\"ADM-HTL-014\", \"Failed to either encrypt/decrypt message using Kernel Crypto Manager\"),\n\n\t/** The unknown error. */\n\tUNKNOWN_ERROR(\"ADM-HTL-015\", \"Unknown error occurred\");\n\n\t/** The error code. */\n\tprivate final String errorCode;\n\n\t/** The error message. */\n\tprivate final String errorMessage;\n\n\t/**\n\t * Instantiates a new hotlist error constants.\n\t *\n\t * @param errorCode the error code\n\t * @param errorMessage the error message\n\t */\n\tprivate HotlistErrorConstants(String errorCode, String errorMessage) {\n\t\tthis.errorCode = errorCode;\n\t\tthis.errorMessage = errorMessage;\n\t}\n\n\t/**\n\t * Gets the error code.\n\t *\n\t * @return the error code\n\t */\n\tpublic String getErrorCode() {\n\t\treturn errorCode;\n\t}\n\n\t/**\n\t * Gets the error message.\n\t *\n\t * @return the error message\n\t */\n\tpublic String getErrorMessage() {\n\t\treturn errorMessage;\n\t}\n\n\t/**\n\t * Gets the all error codes.\n\t *\n\t * @return the all error codes\n\t */\n\tpublic static List getAllErrorCodes() {\n\t\treturn Collections.unmodifiableList(Arrays.asList(HotlistErrorConstants.values()).parallelStream()\n\t\t\t\t.map(HotlistErrorConstants::getErrorCode).collect(Collectors.toList()));\n\t}\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/hotlist-service/src/main/java/io/mosip/hotlist/controller/HotlistController.java", + "title": "HotlistController.java", + "repo": "mosip/admin-services", + "file_path": "admin/hotlist-service/src/main/java/io/mosip/hotlist/controller/HotlistController.java", + "language": "java", + "content": "package io.mosip.hotlist.controller;\n\nimport io.mosip.hotlist.constant.AuditEvents;\nimport io.mosip.hotlist.constant.AuditModules;\nimport io.mosip.hotlist.dto.HotlistRequestResponseDTO;\nimport io.mosip.hotlist.exception.HotlistAppException;\nimport io.mosip.hotlist.helper.AuditHelper;\nimport io.mosip.hotlist.logger.HotlistLogger;\nimport io.mosip.hotlist.security.HotlistSecurityManager;\nimport io.mosip.hotlist.service.HotlistService;\nimport io.mosip.hotlist.validator.HotlistValidator;\nimport io.mosip.kernel.core.exception.ServiceError;\nimport io.mosip.kernel.core.http.RequestWrapper;\nimport io.mosip.kernel.core.http.ResponseWrapper;\nimport io.mosip.kernel.core.logger.spi.Logger;\nimport io.swagger.annotations.ApiParam;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.http.MediaType;\nimport org.springframework.security.access.prepost.PreAuthorize;\nimport org.springframework.validation.BeanPropertyBindingResult;\nimport org.springframework.validation.annotation.Validated;\nimport org.springframework.web.bind.MethodArgumentNotValidException;\nimport org.springframework.web.bind.WebDataBinder;\nimport org.springframework.web.bind.annotation.*;\n\nimport java.util.Collections;\n\n/**\n * The Class HotlistController.\n *\n * @author Manoj SP\n */\n@RestController\npublic class HotlistController {\n\n\tprivate static final String BLOCK = \"block\";\n\n\tprivate static final String UNBLOCK = \"unblock\";\n\n\tprivate static final String RETRIEVE = \"retrieveHotlist\";\n\n\tprivate static final String HOTLIST_CONTROLLER = \"HotlistController\";\n\n\t/** The mosip logger. */\n\tprivate static Logger mosipLogger = HotlistLogger.getLogger(HotlistController.class);\n\n\t/** The validator. */\n\t@Autowired\n\tprivate HotlistValidator validator;\n\n\t/**\n\t * Inits the binder.\n\t *\n\t * @param binder the binder\n\t */\n\t@InitBinder\n\tpublic void initBinder(WebDataBinder binder) {\n\t\tbinder.addValidators(validator);\n\t}\n\n\t/** The hotlist service. */\n\t@Autowired\n\tprivate HotlistService hotlistService;\n\n\t@Autowired\n\tprivate AuditHelper auditHelper;\n\n\t/**\n\t * Block.\n\t *\n\t * @param request the request\n\t * @return the response wrapper\n\t */\n\t@PreAuthorize(\"hasAnyRole(@authorizedRoles.getPostHotlistBlock())\")\n\t@PostMapping(path = \"/block\", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)\n\tpublic ResponseWrapper block(\n\t\t\t@Validated @RequestBody RequestWrapper request) {\n\t\tResponseWrapper response = new ResponseWrapper<>();\n\t\ttry {\n\t\t\tHotlistRequestResponseDTO blockResponse = hotlistService.block(request.getRequest());\n\t\t\tresponse.setResponse(blockResponse);\n\t\t\tauditHelper.audit(AuditModules.HOTLIST_SERVICE, AuditEvents.BLOCK_REQUEST,\n\t\t\t\t\tHotlistSecurityManager.hash(request.getRequest().getId().getBytes()), request.getRequest().getIdType(),\n\t\t\t\t\t\"BLOCK HOTLIST REQUESTED\");\n\t\t} catch (HotlistAppException e) {\n\t\t\tmosipLogger.error(HotlistSecurityManager.getUser(), HOTLIST_CONTROLLER, BLOCK, e.getMessage());\n\t\t\tresponse.setErrors(Collections.singletonList(new ServiceError(e.getErrorCode(), e.getErrorText())));\n\t\t\tauditHelper.auditError(AuditModules.HOTLIST_SERVICE, AuditEvents.BLOCK_REQUEST,\n\t\t\t\t\tHotlistSecurityManager.hash(request.getRequest().getId().getBytes()), request.getRequest().getIdType(), e);\n\t\t}\n\t\treturn response;\n\t}\n\n\t/**\n\t * Retrieve hotlist.\n\t *\n\t * @param id the id\n\t * @param idType the id type\n\t * @return the response wrapper\n\t * @throws MethodArgumentNotValidException\n\t */\n\t@PreAuthorize(\"hasAnyRole(@authorizedRoles.getGetHotlistStatus())\")\n\t@GetMapping(path = \"/status/{idType}/{id}\", produces = MediaType.APPLICATION_JSON_VALUE)\n\tpublic ResponseWrapper retrieveHotlist(\n\t\t\t@ApiParam(\"Id\") @PathVariable(\"id\") String id,\n\t\t\t@ApiParam(\"Id type\") @PathVariable(\"idType\") String idType)\n\t\t\tthrows MethodArgumentNotValidException {\n\t\tResponseWrapper response = new ResponseWrapper<>();\n\t\tBeanPropertyBindingResult errors = new BeanPropertyBindingResult(new HotlistRequestResponseDTO(), \"request\");\n\t\tvalidator.validateId(id, errors);\n\t\tvalidator.validateIdType(idType, errors);\n\t\tif (errors.hasErrors()) {\n\t\t\tthrow new MethodArgumentNotValidException(null, errors);\n\t\t}\n\t\ttry {\n\t\t\tresponse.setResponse(hotlistService.retrieveHotlist(id, idType));\n\t\t\tauditHelper.audit(AuditModules.HOTLIST_SERVICE, AuditEvents.RETRIEVE_HOTLIST,\n\t\t\t\t\tHotlistSecurityManager.hash(id.getBytes()), idType, \"RETRIEVE HOTLIST REQUESTED\");\n\t\t} catch (HotlistAppException e) {\n\t\t\tmosipLogger.error(HotlistSecurityManager.getUser(), HOTLIST_CONTROLLER, RETRIEVE, e.getMessage());\n\t\t\tresponse.setErrors(Collections.singletonList(new ServiceError(e.getErrorCode(), e.getErrorText())));\n\t\t\tauditHelper.auditError(AuditModules.HOTLIST_SERVICE, AuditEvents.RETRIEVE_HOTLIST,\n\t\t\t\t\tHotlistSecurityManager.hash(id.getBytes()), idType, e);\n\t\t}\n\t\treturn response;\n\t}\n\n\t/**\n\t * Update.\n\t *\n\t * @param request the request\n\t * @return the response wrapper\n\t */\n\t@PreAuthorize(\"hasAnyRole(@authorizedRoles.getPostHotlistUnblock())\")\n\t@PostMapping(path = \"/unblock\", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)\n\tpublic ResponseWrapper unblock(\n\t\t\t@Validated @RequestBody RequestWrapper request) {\n\t\tResponseWrapper response = new ResponseWrapper<>();\n\t\ttry {\n\t\t\tHotlistRequestResponseDTO updateHotlistResponse = hotlistService.unblock(request.getRequest());\n\t\t\tresponse.setResponse(updateHotlistResponse);\n\t\t\tauditHelper.audit(AuditModules.HOTLIST_SERVICE, AuditEvents.UNBLOCK_HOTLIST,\n\t\t\t\t\tHotlistSecurityManager.hash(request.getRequest().getId().getBytes()), request.getRequest().getIdType(),\n\t\t\t\t\t\"UNBLOCK HOTLIST REQUESTED\");\n\t\t} catch (HotlistAppException e) {\n\t\t\tmosipLogger.error(HotlistSecurityManager.getUser(), HOTLIST_CONTROLLER, UNBLOCK, e.getMessage());\n\t\t\tresponse.setErrors(Collections.singletonList(new ServiceError(e.getErrorCode(), e.getErrorText())));\n\t\t\tauditHelper.auditError(AuditModules.HOTLIST_SERVICE, AuditEvents.UNBLOCK_HOTLIST,\n\t\t\t\t\tHotlistSecurityManager.hash(request.getRequest().getId().getBytes()), request.getRequest().getIdType(), e);\n\t\t}\n\t\treturn response;\n\t}\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/hotlist-service/src/main/java/io/mosip/hotlist/event/HotlistEventHandler.java", + "title": "HotlistEventHandler.java", + "repo": "mosip/admin-services", + "file_path": "admin/hotlist-service/src/main/java/io/mosip/hotlist/event/HotlistEventHandler.java", + "language": "java", + "content": "package io.mosip.hotlist.event;\n\nimport io.mosip.hotlist.constant.HotlistErrorConstants;\nimport io.mosip.hotlist.exception.HotlistRetryException;\nimport io.mosip.hotlist.logger.HotlistLogger;\nimport io.mosip.hotlist.security.HotlistSecurityManager;\nimport io.mosip.kernel.core.logger.spi.Logger;\nimport io.mosip.kernel.core.retry.WithRetry;\nimport io.mosip.kernel.core.util.DateUtils2;\nimport io.mosip.kernel.core.websub.model.Event;\nimport io.mosip.kernel.core.websub.model.EventModel;\nimport io.mosip.kernel.core.websub.spi.PublisherClient;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.beans.factory.annotation.Value;\nimport org.springframework.http.HttpHeaders;\nimport org.springframework.http.MediaType;\nimport org.springframework.scheduling.annotation.Async;\nimport org.springframework.stereotype.Component;\n\nimport java.time.LocalDateTime;\nimport java.util.HashMap;\nimport java.util.Map;\nimport java.util.Objects;\nimport java.util.UUID;\n\n/**\n * @author Manoj SP\n *\n */\n@Component\npublic class HotlistEventHandler {\n\n\t/** The Constant PUBLISH_EVENT. */\n\tprivate static final String PUBLISH_EVENT = \"publishEvent\";\n\n\t/** The mosip logger. */\n\tprivate static Logger mosipLogger = HotlistLogger.getLogger(HotlistEventHandler.class);\n\n\t/** The topic. */\n\t@Value(\"${mosip.hotlist.topic-to-publish}\")\n\tprivate String topic;\n\n\t/** The web sub hub url. */\n\t@Value(\"${websub.publish.url}\")\n\tprivate String webSubHubUrl;\n\n\t/** The app id. */\n\t@Value(\"${spring.application.name:HOTLIST}\")\n\tprivate String appId;\n\n\t/** The publisher. */\n\t@Autowired\n\tprivate PublisherClient publisher;\n\n\t/**\n\t * Publish event.\n\t *\n\t * @param id the id\n\t * @param idType the id type\n\t * @param status the status\n\t * @param expiryTimestamp the expiry timestamp\n\t */\n\t@Async\n\t@WithRetry\n\tpublic void publishEvent(String id, String idType, String status, LocalDateTime expiryTimestamp) {\n\t\ttry {\n\t\t\tEventModel payload = new EventModel();\n\t\t\tpayload.setPublisher(appId);\n\t\t\tpayload.setTopic(topic);\n\t\t\tString publishedOn = DateUtils2.formatToISOString(DateUtils2.getUTCCurrentDateTime());\n\t\t\tpayload.setPublishedOn(publishedOn);\n\t\t\tEvent event = new Event();\n\t\t\tevent.setId(UUID.randomUUID().toString());\n\t\t\tevent.setTimestamp(publishedOn);\n\t\t\tMap data = new HashMap<>();\n\t\t\tdata.put(\"id\", id);\n\t\t\tdata.put(\"idType\", idType);\n\t\t\tdata.put(\"status\", status);\n\t\t\tdata.put(\"expiryTimestamp\",\n\t\t\t\t\tObjects.nonNull(expiryTimestamp) ? DateUtils2.formatToISOString(expiryTimestamp) : expiryTimestamp);\n\t\t\tevent.setData(data);\n\t\t\tpayload.setEvent(event);\n\t\t\tmosipLogger.debug(HotlistSecurityManager.getUser(), \"HotlistServiceImpl\", PUBLISH_EVENT,\n\t\t\t\t\t\"PUBLISHING EVENT - \" + payload.toString());\n\t\t\tpublisher.publishUpdate(topic, payload, MediaType.APPLICATION_JSON_VALUE, null, webSubHubUrl);\n\t\t} catch (Exception e) {\n\t\t\tmosipLogger.error(HotlistSecurityManager.getUser(), \"HotlistServiceImpl\", \"publishEvent\",\n\t\t\t\t\t\"FAILED TO PUBLISH EVENT WITH ERROR - \" + e.getMessage());\n\t\t\tthrow new HotlistRetryException(HotlistErrorConstants.UNKNOWN_ERROR, e);\n\t\t}\n\t}\n}" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/hotlist-service/src/main/java/io/mosip/hotlist/exception/AuthenticationException.java", + "title": "AuthenticationException.java", + "repo": "mosip/admin-services", + "file_path": "admin/hotlist-service/src/main/java/io/mosip/hotlist/exception/AuthenticationException.java", + "language": "java", + "content": "package io.mosip.hotlist.exception;\n\nimport io.mosip.hotlist.constant.HotlistErrorConstants;\nimport io.mosip.kernel.core.exception.BaseUncheckedException;\n\n/**\n * The Class AuthenticationException.\n *\n * @author Manoj SP\n */\npublic class AuthenticationException extends BaseUncheckedException {\n\n\t/** The Constant serialVersionUID. */\n\tprivate static final long serialVersionUID = 6748760277721155095L;\n\t\n\t/** The status code. */\n\tprivate int statusCode;\n\n\t/**\n\t * Instantiates a new authentication exception.\n\t */\n\tpublic AuthenticationException() {\n\t\tsuper();\n\t}\n\n\t/**\n\t * Instantiates a new authentication exception.\n\t *\n\t * @param errorCode the error code\n\t * @param errorMessage the error message\n\t * @param statusCode the status code\n\t */\n\tpublic AuthenticationException(String errorCode, String errorMessage, int statusCode) {\n\t\tsuper(errorCode, errorMessage);\n\t\tthis.statusCode = statusCode;\n\t}\n\n\t/**\n\t * Instantiates a new authentication exception.\n\t *\n\t * @param errorCode the error code\n\t * @param errorMessage the error message\n\t * @param rootCause the root cause\n\t * @param statusCode the status code\n\t */\n\tpublic AuthenticationException(String errorCode, String errorMessage, Throwable rootCause, int statusCode) {\n\t\tsuper(errorCode, errorMessage, rootCause);\n\t\tthis.statusCode = statusCode;\n\t}\n\n\t/**\n\t * Instantiates a new authentication exception.\n\t *\n\t * @param exceptionConstant the exception constant\n\t * @param statusCode the status code\n\t */\n\tpublic AuthenticationException(HotlistErrorConstants exceptionConstant, int statusCode) {\n\t\tthis(exceptionConstant.getErrorCode(), exceptionConstant.getErrorMessage(), statusCode);\n\t\tthis.statusCode = statusCode;\n\t}\n\n\t/**\n\t * Instantiates a new authentication exception.\n\t *\n\t * @param exceptionConstant the exception constant\n\t * @param rootCause the root cause\n\t * @param statusCode the status code\n\t */\n\tpublic AuthenticationException(HotlistErrorConstants exceptionConstant, Throwable rootCause, int statusCode) {\n\t\tthis(exceptionConstant.getErrorCode(), exceptionConstant.getErrorMessage(), rootCause, statusCode);\n\t\tthis.statusCode = statusCode;\n\t}\n\t\n\t/**\n\t * Gets the status code.\n\t *\n\t * @return the status code\n\t */\n\tpublic int getStatusCode() {\n\t\treturn statusCode;\n\t}\n}" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/hotlist-service/src/main/java/io/mosip/hotlist/exception/HotlistAppException.java", + "title": "HotlistAppException.java", + "repo": "mosip/admin-services", + "file_path": "admin/hotlist-service/src/main/java/io/mosip/hotlist/exception/HotlistAppException.java", + "language": "java", + "content": "package io.mosip.hotlist.exception;\n\nimport io.mosip.hotlist.constant.HotlistErrorConstants;\nimport io.mosip.kernel.core.exception.BaseCheckedException;\n\n/**\n * The Class HotlistAppException.\n *\n * @author Manoj SP\n */\npublic class HotlistAppException extends BaseCheckedException {\n\n\t/** The Constant serialVersionUID. */\n\tprivate static final long serialVersionUID = 2718788886693768207L;\n\t\n\t/**\n\t * Instantiates a new hotlist app exception.\n\t */\n\tpublic HotlistAppException() {\n\t\tsuper();\n\t}\n\t\n\t/**\n\t * Instantiates a new hotlist app exception.\n\t *\n\t * @param errorConstant the error constant\n\t */\n\tpublic HotlistAppException(HotlistErrorConstants errorConstant) {\n\t\tsuper(errorConstant.getErrorCode(), errorConstant.getErrorMessage());\n\t}\n\t\n\t/**\n\t * Instantiates a new hotlist app exception.\n\t *\n\t * @param errorCode the error code\n\t * @param errorMessage the error message\n\t */\n\tpublic HotlistAppException(String errorCode, String errorMessage) {\n\t\tsuper(errorCode, errorMessage);\n\t}\n\t\n\t/**\n\t * Instantiates a new hotlist app exception.\n\t *\n\t * @param errorConstant the error constant\n\t * @param rootCause the root cause\n\t */\n\tpublic HotlistAppException(HotlistErrorConstants errorConstant, Throwable rootCause) {\n\t\tsuper(errorConstant.getErrorCode(), errorConstant.getErrorMessage(), rootCause);\n\t}\n\t\n\t\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/hotlist-service/src/main/java/io/mosip/hotlist/exception/HotlistAppUncheckedException.java", + "title": "HotlistAppUncheckedException.java", + "repo": "mosip/admin-services", + "file_path": "admin/hotlist-service/src/main/java/io/mosip/hotlist/exception/HotlistAppUncheckedException.java", + "language": "java", + "content": "package io.mosip.hotlist.exception;\n\nimport io.mosip.hotlist.constant.HotlistErrorConstants;\nimport io.mosip.kernel.core.exception.BaseUncheckedException;\nimport lombok.Data;\nimport lombok.EqualsAndHashCode;\n\n/**\n * The Class HotlistAppUncheckedException.\n *\n * @author Manoj SP\n */\n\n/**\n * To string.\n *\n * @return the java.lang. string\n */\n@Data\n\n/**\n * Hash code.\n *\n * @return the int\n */\n@EqualsAndHashCode(callSuper = false)\npublic class HotlistAppUncheckedException extends BaseUncheckedException {\n\n\t/** The Constant serialVersionUID. */\n\tprivate static final long serialVersionUID = 2718788886693768207L;\n\t\n\t/** The error constant. */\n\tprivate HotlistErrorConstants errorConstant;\n\n\t/**\n\t * Instantiates a new hotlist app unchecked exception.\n\t */\n\tpublic HotlistAppUncheckedException() {\n\t\tsuper();\n\t}\n\t\n\t/**\n\t * Instantiates a new hotlist app unchecked exception.\n\t *\n\t * @param errorConstant the error constant\n\t */\n\tpublic HotlistAppUncheckedException(HotlistErrorConstants errorConstant) {\n\t\tsuper(errorConstant.getErrorCode(), errorConstant.getErrorMessage());\n\t\tthis.errorConstant = errorConstant;\n\t}\n\t\n\t/**\n\t * Instantiates a new hotlist app unchecked exception.\n\t *\n\t * @param errorConstant the error constant\n\t * @param rootCause the root cause\n\t */\n\tpublic HotlistAppUncheckedException(HotlistErrorConstants errorConstant, Throwable rootCause) {\n\t\tsuper(errorConstant.getErrorCode(), errorConstant.getErrorMessage(), rootCause);\n\t\tthis.errorConstant = errorConstant;\n\t}\n\t\n\t\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/hotlist-service/src/main/java/io/mosip/hotlist/exception/HotlistExceptionHandler.java", + "title": "HotlistExceptionHandler.java", + "repo": "mosip/admin-services", + "file_path": "admin/hotlist-service/src/main/java/io/mosip/hotlist/exception/HotlistExceptionHandler.java", + "language": "java", + "content": "package io.mosip.hotlist.exception;\n\nimport io.mosip.hotlist.dto.HotlistRequestResponseDTO;\nimport io.mosip.hotlist.logger.HotlistLogger;\nimport io.mosip.hotlist.security.HotlistSecurityManager;\nimport io.mosip.kernel.core.exception.ServiceError;\nimport io.mosip.kernel.core.http.ResponseWrapper;\nimport io.mosip.kernel.core.logger.spi.Logger;\nimport jakarta.annotation.Nullable;\nimport jakarta.servlet.ServletException;\nimport org.apache.commons.lang3.exception.ExceptionUtils;\nimport org.springframework.beans.BeansException;\nimport org.springframework.http.HttpHeaders;\nimport org.springframework.http.HttpStatus;\nimport org.springframework.http.HttpStatusCode;\nimport org.springframework.http.ResponseEntity;\nimport org.springframework.http.converter.HttpMessageNotReadableException;\nimport org.springframework.security.access.AccessDeniedException;\nimport org.springframework.web.bind.MethodArgumentNotValidException;\nimport org.springframework.web.bind.annotation.ExceptionHandler;\nimport org.springframework.web.bind.annotation.RestControllerAdvice;\nimport org.springframework.web.context.request.WebRequest;\nimport org.springframework.web.servlet.mvc.method.annotation.ResponseEntityExceptionHandler;\n\nimport java.time.format.DateTimeParseException;\nimport java.util.Collections;\nimport java.util.Objects;\nimport java.util.stream.Collectors;\n\nimport static io.mosip.hotlist.constant.HotlistErrorConstants.*;\nimport static io.mosip.hotlist.constant.HotlistErrorConstants.INVALID_REQUEST;\n\n/**\n * The Class HotlistExceptionHandler.\n *\n * @author Manoj SP\n */\n@RestControllerAdvice\npublic class HotlistExceptionHandler extends ResponseEntityExceptionHandler {\n\n\t/** The Constant REQUEST_TIME. */\n\tprivate static final String REQUEST_TIME = \"requesttime\";\n\n\t/** The Constant EXPIRY_TIMESTAMP. */\n\tprivate static final CharSequence EXPIRY_TIMESTAMP = \"expiryTimestamp\";\n\n\t/** The Constant EXPIRY_TIMESTAMP_PATH. */\n\tprivate static final String EXPIRY_TIMESTAMP_PATH = \"request/\" + EXPIRY_TIMESTAMP;\n\n\t/** The Constant HOTLIST_SERVICE. */\n\tprivate static final String HOTLIST_SERVICE = \"Hotlist-service\";\n\n\t/** The Constant HOTLIST_EXCEPTION_HANDLER. */\n\tprivate static final String HOTLIST_EXCEPTION_HANDLER = \"HotlistExceptionHandler\";\n\n\t/** The mosip logger. */\n\tprivate static Logger mosipLogger = HotlistLogger.getLogger(HotlistExceptionHandler.class);\n\n\t/**\n\t * Handle all exceptions.\n\t *\n\t * @param ex the ex\n\t * @param request the request\n\t * @return the response entity\n\t */\n\t@ExceptionHandler(Exception.class)\n\tprotected ResponseEntity handleAllExceptions(Exception ex) {\n\t\tmosipLogger.error(HotlistSecurityManager.getUser(), HOTLIST_SERVICE, HOTLIST_EXCEPTION_HANDLER,\n\t\t\t\t\"handleAllExceptions - \\n\" + ExceptionUtils.getStackTrace(ex));\n\t\treturn new ResponseEntity<>(\n\t\t\t\tbuildExceptionResponse(UNKNOWN_ERROR.getErrorCode(), UNKNOWN_ERROR.getErrorMessage()), HttpStatus.OK);\n\t}\n\n\t/**\n\t * Handle access denied exception.\n\t *\n\t * @param ex the ex\n\t * @param request the request\n\t * @return the response entity\n\t */\n\t@ExceptionHandler(AccessDeniedException.class)\n\tprotected ResponseEntity> handleAccessDeniedException(Exception ex) {\n\t\tmosipLogger.error(HotlistSecurityManager.getUser(), HOTLIST_SERVICE, HOTLIST_EXCEPTION_HANDLER,\n\t\t\t\t\"handleAccessDeniedException - \\n\" + ExceptionUtils.getStackTrace(ex));\n\t\treturn new ResponseEntity<>(\n\t\t\t\tbuildExceptionResponse(AUTHORIZATION_FAILED.getErrorCode(), AUTHORIZATION_FAILED.getErrorMessage()),\n\t\t\t\tHttpStatus.OK);\n\t}\n\n\t/**\n\t * Handle id app exception.\n\t *\n\t * @param ex the ex\n\t * @param request the request\n\t * @return the response entity\n\t */\n\t@ExceptionHandler(HotlistAppException.class)\n\tprotected ResponseEntity> handleHotlistAppException(\n\t\t\tHotlistAppException ex) {\n\t\tmosipLogger.error(HotlistSecurityManager.getUser(), HOTLIST_SERVICE, HOTLIST_EXCEPTION_HANDLER,\n\t\t\t\t\"handleIdAppException - \\n\" + ExceptionUtils.getStackTrace(ex));\n\t\treturn new ResponseEntity<>(\n\t\t\t\tbuildExceptionResponse(UNKNOWN_ERROR.getErrorCode(), UNKNOWN_ERROR.getErrorMessage()), HttpStatus.OK);\n\t}\n\n\t/**\n\t * Handle exception internal.\n\t *\n\t * @param ex the ex\n\t * @param errorMessage the error message\n\t * @param headers the headers\n\t * @param status the status\n\t * @param request the request\n\t * @return the response entity\n\t */\n\t@Override\n\tprotected ResponseEntity handleExceptionInternal(Exception ex, @Nullable Object errorMessage,\n\t\t\tHttpHeaders headers, HttpStatusCode status, WebRequest request) {\n\t\tmosipLogger.error(HotlistSecurityManager.getUser(), HOTLIST_SERVICE, HOTLIST_EXCEPTION_HANDLER,\n\t\t\t\t\"handleExceptionInternal - \\n\" + (ex instanceof MethodArgumentNotValidException\n\t\t\t\t\t\t? ((MethodArgumentNotValidException) ex).getBindingResult().getAllErrors()\n\t\t\t\t\t\t: ExceptionUtils.getStackTrace(ex)));\n\t\tif (ex instanceof MethodArgumentNotValidException) {\n\t\t\tResponseWrapper response = new ResponseWrapper<>();\n\t\t\tresponse.setErrors(((MethodArgumentNotValidException) ex).getBindingResult().getAllErrors().stream()\n\t\t\t\t\t.map(objectError -> new ServiceError(objectError.getCode(), objectError.getDefaultMessage()))\n\t\t\t\t\t.collect(Collectors.toList()));\n\t\t\treturn new ResponseEntity<>(response, HttpStatus.OK);\n\t\t} else if (ex instanceof HttpMessageNotReadableException && Objects.nonNull(ex.getCause())\n\t\t\t\t&& org.apache.commons.lang3.exception.ExceptionUtils.getRootCause(ex).getClass()\n\t\t\t\t\t\t.isAssignableFrom(DateTimeParseException.class)) {\n\t\t\tString expMsg=((HttpMessageNotReadableException) ex).getMessage() ;\n\t\t\tif (null!=expMsg && expMsg.contains(EXPIRY_TIMESTAMP)) {\n\t\t\t\treturn new ResponseEntity<>(\n\t\t\t\t\t\tbuildExceptionResponse(INVALID_INPUT_PARAMETER.getErrorCode(),\n\t\t\t\t\t\t\t\tString.format(INVALID_INPUT_PARAMETER.getErrorMessage(), EXPIRY_TIMESTAMP_PATH)),\n\t\t\t\t\t\tHttpStatus.OK);\n\t\t\t} else if (null!=expMsg && expMsg.contains(REQUEST_TIME)) {\n\t\t\t\treturn new ResponseEntity<>(buildExceptionResponse(INVALID_INPUT_PARAMETER.getErrorCode(),\n\t\t\t\t\t\tString.format(INVALID_INPUT_PARAMETER.getErrorMessage(), REQUEST_TIME)), HttpStatus.OK);\n\t\t\t} else {\n\t\t\t\treturn new ResponseEntity<>(\n\t\t\t\t\t\tbuildExceptionResponse(INVALID_REQUEST.getErrorCode(), INVALID_REQUEST.getErrorMessage()),\n\t\t\t\t\t\tHttpStatus.OK);\n\t\t\t}\n\t\t} else if (ex instanceof HttpMessageNotReadableException || ex instanceof ServletException\n\t\t\t\t|| ex instanceof BeansException) {\n\t\t\treturn new ResponseEntity<>(\n\t\t\t\t\tbuildExceptionResponse(INVALID_REQUEST.getErrorCode(), INVALID_REQUEST.getErrorMessage()),\n\t\t\t\t\tHttpStatus.OK);\n\t\t} else {\n\t\t\treturn handleAllExceptions(ex);\n\t\t}\n\t}\n\n\t/**\n\t * Builds the exception response.\n\t *\n\t * @param errorCode the error code\n\t * @param errorMessage the error message\n\t * @return the object\n\t */\n\tprivate ResponseWrapper buildExceptionResponse(String errorCode, String errorMessage) {\n\t\tResponseWrapper response = new ResponseWrapper<>();\n\t\tresponse.setErrors(Collections.singletonList(new ServiceError(errorCode, errorMessage)));\n\t\treturn response;\n\t}\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/hotlist-service/src/main/java/io/mosip/hotlist/exception/HotlistRetryException.java", + "title": "HotlistRetryException.java", + "repo": "mosip/admin-services", + "file_path": "admin/hotlist-service/src/main/java/io/mosip/hotlist/exception/HotlistRetryException.java", + "language": "java", + "content": "package io.mosip.hotlist.exception;\n\nimport io.mosip.hotlist.constant.HotlistErrorConstants;\nimport io.mosip.kernel.core.exception.BaseCheckedException;\nimport io.mosip.kernel.core.exception.BaseUncheckedException;\n\n/**\n * The Class HotlistRetryException - Unchecked exception used to trigger retry.\n *\n * @author Manoj SP\n */\npublic class HotlistRetryException extends BaseUncheckedException {\n\n\t/** The Constant serialVersionUID. */\n\tprivate static final long serialVersionUID = 6748760277721155095L;\n\n\t/**\n\t * Instantiates a new hotlist retry exception.\n\t */\n\tpublic HotlistRetryException() {\n\t\tsuper();\n\t}\n\n\t/**\n\t * Instantiates a new hotlist retry exception.\n\t *\n\t * @param errorCode the error code\n\t * @param errorMessage the error message\n\t */\n\tpublic HotlistRetryException(String errorCode, String errorMessage) {\n\t\tsuper(errorCode, errorMessage);\n\t}\n\n\t/**\n\t * Instantiates a new hotlist retry exception.\n\t *\n\t * @param errorCode the error code\n\t * @param errorMessage the error message\n\t * @param rootCause the root cause\n\t */\n\tpublic HotlistRetryException(String errorCode, String errorMessage, Throwable rootCause) {\n\t\tsuper(errorCode, errorMessage, rootCause);\n\t}\n\n\t/**\n\t * Instantiates a new hotlist retry exception.\n\t *\n\t * @param exceptionConstant the exception constant\n\t */\n\tpublic HotlistRetryException(HotlistErrorConstants exceptionConstant) {\n\t\tthis(exceptionConstant.getErrorCode(), exceptionConstant.getErrorMessage());\n\t}\n\n\t/**\n\t * Instantiates a new hotlist retry exception.\n\t *\n\t * @param exceptionConstant the exception constant\n\t */\n\tpublic HotlistRetryException(HotlistErrorConstants exceptionConstant, Throwable rootCause) {\n\t\tthis(exceptionConstant.getErrorCode(), exceptionConstant.getErrorMessage(), rootCause);\n\t}\n\n\t/**\n\t * Instantiates a new hotlist retry exception.\n\t *\n\t * @param BaseCheckedException the root cause\n\t */\n\tpublic HotlistRetryException(BaseCheckedException rootCause) {\n\t\tthis(rootCause.getErrorCode(), rootCause.getErrorText(), rootCause);\n\t}\n\n\t/**\n\t * Instantiates a new hotlist retry exception.\n\t *\n\t * @param BaseUncheckedException the root cause\n\t */\n\tpublic HotlistRetryException(BaseUncheckedException rootCause) {\n\t\tthis(rootCause.getErrorCode(), rootCause.getErrorText(), rootCause);\n\t}\n}" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/hotlist-service/src/main/java/io/mosip/hotlist/exception/RestServiceException.java", + "title": "RestServiceException.java", + "repo": "mosip/admin-services", + "file_path": "admin/hotlist-service/src/main/java/io/mosip/hotlist/exception/RestServiceException.java", + "language": "java", + "content": "package io.mosip.hotlist.exception;\n\nimport io.mosip.hotlist.constant.HotlistErrorConstants;\n\nimport java.util.Optional;\n\n/**\n * Thrown when an exception occurs using Rest exchange.\n * \n * @author Manoj SP\n *\n */\npublic class RestServiceException extends HotlistAppException {\n\n\t/** The Constant serialVersionUID. */\n\tprivate static final long serialVersionUID = 372518972095526748L;\n\n\t/** The response body. */\n\tprivate transient String responseBodyAsString;\n\n\t/** The response body. */\n\tprivate transient Object responseBody;\n\n\t/**\n\t * Instantiates a new rest service exception.\n\t */\n\tpublic RestServiceException() {\n\t\tsuper();\n\t}\n\n\t/**\n\t * Instantiates a new rest client exception.\n\t *\n\t * @param exceptionConstant the exception constant\n\t */\n\tpublic RestServiceException(HotlistErrorConstants exceptionConstant) {\n\t\tsuper(exceptionConstant);\n\t}\n\n\t/**\n\t * Instantiates a new rest client exception.\n\t *\n\t * @param exceptionConstant the exception constant\n\t * @param rootCause the root cause\n\t */\n\tpublic RestServiceException(HotlistErrorConstants exceptionConstant, Throwable rootCause) {\n\t\tsuper(exceptionConstant, rootCause);\n\t}\n\n\t/**\n\t * Instantiates a new rest service exception.\n\t *\n\t * @param exceptionConstant the exception constant\n\t * @param responseBodyAsString the response body as string\n\t * @param responseBody the response body\n\t */\n\tpublic RestServiceException(HotlistErrorConstants exceptionConstant, String responseBodyAsString,\n\t\t\tObject responseBody) {\n\t\tsuper(exceptionConstant);\n\t\tthis.responseBody = responseBody;\n\t\tthis.responseBodyAsString = responseBodyAsString;\n\t}\n\n\t/**\n\t * Gets the response body.\n\t *\n\t * @return the response body\n\t */\n\tpublic Optional getResponseBody() {\n\t\treturn Optional.ofNullable(responseBody);\n\t}\n\n\t/**\n\t * Gets the response body as string.\n\t *\n\t * @return the response body as string\n\t */\n\tpublic Optional getResponseBodyAsString() {\n\t\treturn Optional.ofNullable(responseBodyAsString);\n\t}\n\n}" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/hotlist-service/src/main/java/io/mosip/hotlist/service/impl/HotlistServiceImpl.java", + "title": "HotlistServiceImpl.java", + "repo": "mosip/admin-services", + "file_path": "admin/hotlist-service/src/main/java/io/mosip/hotlist/service/impl/HotlistServiceImpl.java", + "language": "java", + "content": "package io.mosip.hotlist.service.impl;\n\nimport com.fasterxml.jackson.databind.ObjectMapper;\nimport io.mosip.hotlist.constant.HotlistErrorConstants;\nimport io.mosip.hotlist.dto.HotlistRequestResponseDTO;\nimport io.mosip.hotlist.entity.Hotlist;\nimport io.mosip.hotlist.entity.HotlistHistory;\nimport io.mosip.hotlist.event.HotlistEventHandler;\nimport io.mosip.hotlist.exception.HotlistAppException;\nimport io.mosip.hotlist.logger.HotlistLogger;\nimport io.mosip.hotlist.repository.HotlistHistoryRepository;\nimport io.mosip.hotlist.repository.HotlistRepository;\nimport io.mosip.hotlist.security.HotlistSecurityManager;\nimport io.mosip.hotlist.service.HotlistService;\nimport io.mosip.kernel.core.hotlist.constant.HotlistStatus;\nimport io.mosip.kernel.core.logger.spi.Logger;\nimport io.mosip.kernel.core.util.DateUtils2;\nimport jakarta.transaction.Transactional;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.beans.factory.annotation.Value;\nimport org.springframework.dao.DataAccessException;\nimport org.springframework.stereotype.Service;\nimport org.springframework.transaction.TransactionException;\n\nimport java.time.LocalDateTime;\nimport java.util.Objects;\nimport java.util.Optional;\n\n/**\n * The Class HotlistServiceImpl.\n *\n * @author Manoj SP\n */\n@Service\n@Transactional\npublic class HotlistServiceImpl implements HotlistService {\n\n\t/** The Constant RETRIEVE_HOTLIST. */\n\tprivate static final String RETRIEVE_HOTLIST = \"retrieveHotlist\";\n\n\t/** The Constant BLOCK. */\n\tprivate static final String BLOCK = \"block\";\n\n\t/** The Constant HOTLIST_SERVICE_IMPL. */\n\tprivate static final String HOTLIST_SERVICE_IMPL = \"HotlistServiceImpl\";\n\n\t/** The mosip logger. */\n\tprivate static Logger mosipLogger = HotlistLogger.getLogger(HotlistServiceImpl.class);\n\n\t/** The topic. */\n\t@Value(\"${mosip.hotlist.topic-to-publish}\")\n\tprivate String topic;\n\n\t/** The web sub hub url. */\n\t@Value(\"${websub.publish.url}\")\n\tprivate String webSubHubUrl;\n\n\t/** The app id. */\n\t@Value(\"${spring.application.name:HOTLIST}\")\n\tprivate String appId;\n\n\t/** The hotlist repo. */\n\t@Autowired\n\tprivate HotlistRepository hotlistRepo;\n\n\t/** The hotlist H repo. */\n\t@Autowired\n\tprivate HotlistHistoryRepository hotlistHRepo;\n\n\t/** The mapper. */\n\t@Autowired\n\tprivate ObjectMapper mapper;\n\n\t/** The event handler. */\n\t@Autowired\n\tprivate HotlistEventHandler eventHandler;\n\n\t/**\n\t * Block.\n\t *\n\t * @param blockRequest the block request\n\t * @return the hotlist request response DTO\n\t * @throws HotlistAppException the hotlist app exception\n\t */\n\t@Override\n\tpublic HotlistRequestResponseDTO block(HotlistRequestResponseDTO blockRequest) throws HotlistAppException {\n\t\ttry {\n\t\t\tString idHash = HotlistSecurityManager.hash(blockRequest.getId().getBytes());\n\t\t\tOptional hotlistedOptionalData = hotlistRepo.findByIdHashAndIdTypeAndIsDeleted(idHash,\n\t\t\t\t\tblockRequest.getIdType(), false);\n\t\t\tString dbStatus = HotlistStatus.UNBLOCKED;\n\t\t\tString requestedStatus = HotlistStatus.BLOCKED;\n\t\t\tLocalDateTime expiryTimestamp = blockRequest.getExpiryTimestamp();\n\t\t\tif (hotlistedOptionalData.isPresent()) {\n\t\t\t\tupdateStatus(blockRequest, idHash, hotlistedOptionalData, dbStatus, requestedStatus);\n\t\t\t} else {\n\t\t\t\tString status = Objects.nonNull(expiryTimestamp) ? dbStatus : requestedStatus;\n\t\t\t\tHotlist hotlist = new Hotlist();\n\t\t\t\tbuildHotlistEntity(blockRequest, idHash, status, hotlist);\n\t\t\t\thotlist.setCreatedBy(HotlistSecurityManager.getUser());\n\t\t\t\thotlist.setCreatedDateTime(DateUtils2.getUTCCurrentDateTime());\n\t\t\t\thotlist.setIsDeleted(false);\n\t\t\t\thotlistHRepo.save(mapper.convertValue(hotlist, HotlistHistory.class));\n\t\t\t\thotlistRepo.save(hotlist);\n\t\t\t\teventHandler.publishEvent(idHash, blockRequest.getIdType(), status, hotlist.getExpiryTimestamp());\n\t\t\t}\n\t\t\treturn buildResponse(blockRequest.getId(), null, requestedStatus, isExpired(expiryTimestamp));\n\t\t} catch (DataAccessException | TransactionException e) {\n\t\t\tmosipLogger.error(HotlistSecurityManager.getUser(), HOTLIST_SERVICE_IMPL, BLOCK, e.getMessage());\n\t\t\tthrow new HotlistAppException(HotlistErrorConstants.DATABASE_ACCESS_ERROR, e);\n\t\t}\n\t}\n\n\t/**\n\t * Retrieve hotlist.\n\t *\n\t * @param id the id\n\t * @param idType the id type\n\t * @return the hotlist request response DTO\n\t * @throws HotlistAppException the hotlist app exception\n\t */\n\t@Override\n\tpublic HotlistRequestResponseDTO retrieveHotlist(String id, String idType) throws HotlistAppException {\n\t\ttry {\n\t\t\tOptional hotlistedOptionalData = hotlistRepo\n\t\t\t\t\t.findByIdHashAndIdTypeAndIsDeleted(HotlistSecurityManager.hash(id.getBytes()), idType, false);\n\t\t\tif (hotlistedOptionalData.isPresent()) {\n\t\t\t\tHotlist hotlistedData = hotlistedOptionalData.get();\n\t\t\t\tString status = hotlistedData.getStatus();\n\t\t\t\tif (Objects.nonNull(isExpired(hotlistedData.getExpiryTimestamp()))) {\n\t\t\t\t\tswitch (status) {\n\t\t\t\t\tcase HotlistStatus.BLOCKED:\n\t\t\t\t\t\tstatus = HotlistStatus.UNBLOCKED;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase HotlistStatus.UNBLOCKED:\n\t\t\t\t\t\tstatus = HotlistStatus.BLOCKED;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\treturn buildResponse(id, idType, status, hotlistedData.getExpiryTimestamp());\n\t\t\t\t}\n\t\t\t\treturn buildResponse(id, idType, status, null);\n\t\t\t} else {\n\t\t\t\treturn buildResponse(id, idType, HotlistStatus.UNBLOCKED, null);\n\t\t\t}\n\t\t} catch (DataAccessException | TransactionException e) {\n\t\t\tmosipLogger.error(HotlistSecurityManager.getUser(), HOTLIST_SERVICE_IMPL, RETRIEVE_HOTLIST, e.getMessage());\n\t\t\tthrow new HotlistAppException(HotlistErrorConstants.DATABASE_ACCESS_ERROR, e);\n\t\t}\n\t}\n\n\t/**\n\t * Update hotlist.\n\t *\n\t * @param unblockRequest the update request\n\t * @return the hotlist request response DTO\n\t * @throws HotlistAppException the hotlist app exception\n\t */\n\t@Override\n\tpublic HotlistRequestResponseDTO unblock(HotlistRequestResponseDTO unblockRequest) throws HotlistAppException {\n\t\ttry {\n\t\t\tString idHash = HotlistSecurityManager.hash(unblockRequest.getId().getBytes());\n\t\t\tOptional hotlistedOptionalData = hotlistRepo.findByIdHashAndIdTypeAndIsDeleted(idHash,\n\t\t\t\t\tunblockRequest.getIdType(), false);\n\t\t\tString dbStatus = HotlistStatus.BLOCKED;\n\t\t\tString requestedStatus = HotlistStatus.UNBLOCKED;\n\t\t\tif (hotlistedOptionalData.isPresent()) {\n\t\t\t\tupdateStatus(unblockRequest, idHash, hotlistedOptionalData, dbStatus, requestedStatus);\n\t\t\t}\n\t\t\treturn buildResponse(unblockRequest.getId(), null, requestedStatus, isExpired(unblockRequest.getExpiryTimestamp()));\n\t\t} catch (DataAccessException | TransactionException e) {\n\t\t\tmosipLogger.error(HotlistSecurityManager.getUser(), HOTLIST_SERVICE_IMPL, \"unblock\", e.getMessage());\n\t\t\tthrow new HotlistAppException(HotlistErrorConstants.DATABASE_ACCESS_ERROR, e);\n\t\t}\n\t}\n\n\tprivate void updateStatus(HotlistRequestResponseDTO request, String idHash, Optional hotlistedOptionalData,\n\t\t\tString dbStatus, String requestedStatus) {\n\t\tif (hotlistedOptionalData.isPresent() && hotlistedOptionalData.get().getStatus().contentEquals(dbStatus)) {\n\t\t\tupdateHotlist(request, idHash, Objects.nonNull(request.getExpiryTimestamp()) ? dbStatus : requestedStatus,\n\t\t\t\t\thotlistedOptionalData);\n\t\t} else {\n\t\t\trequest.setExpiryTimestamp(null);\n\t\t\tupdateHotlist(request, idHash, requestedStatus, hotlistedOptionalData);\n\t\t}\n\t}\n\n\t/**\n\t * Update hotlist.\n\t *\n\t * @param updateRequest the update request\n\t * @param idHash the id hash\n\t * @param status the status\n\t * @param hotlistedOptionalData the hotlisted optional data\n\t * @return the hotlist request response DTO\n\t */\n\tprivate HotlistRequestResponseDTO updateHotlist(HotlistRequestResponseDTO updateRequest, String idHash, String status,\n\t\t\tOptional hotlistedOptionalData) {\n\t\tif(!hotlistedOptionalData.isPresent())\n\t\t\treturn null;\n\t\tHotlist hotlist = hotlistedOptionalData.get();\n\t\tbuildHotlistEntity(updateRequest, idHash, status, hotlist);\n\t\thotlist.setUpdatedBy(HotlistSecurityManager.getUser());\n\t\thotlist.setUpdatedDateTime(DateUtils2.getUTCCurrentDateTime());\n\t\thotlistHRepo.save(mapper.convertValue(hotlist, HotlistHistory.class));\n\t\thotlistRepo.save(hotlist);\n\t\teventHandler.publishEvent(idHash, updateRequest.getIdType(), status, hotlist.getExpiryTimestamp());\n\t\treturn buildResponse(hotlist.getIdValue(), null, updateRequest.getStatus(), null);\n\t}\n\n\t/**\n\t * Builds the hotlist entity.\n\t *\n\t * @param request the request\n\t * @param idHash the id hash\n\t * @param status the status\n\t * @param hotlist the hotlist\n\t */\n\tprivate void buildHotlistEntity(HotlistRequestResponseDTO request, String idHash, String status, Hotlist hotlist) {\n\t\thotlist.setIdHash(idHash);\n\t\thotlist.setIdValue(request.getId());\n\t\thotlist.setIdType(request.getIdType());\n\t\thotlist.setStatus(status);\n\t\thotlist.setStartTimestamp(DateUtils2.getUTCCurrentDateTime());\n\t\thotlist.setExpiryTimestamp(Objects.nonNull(request.getExpiryTimestamp()) ? request.getExpiryTimestamp() : null);\n\t}\n\n\tprivate LocalDateTime isExpired(LocalDateTime expiryTimestamp) {\n\t\treturn Objects.nonNull(expiryTimestamp) && expiryTimestamp.isAfter(DateUtils2.getUTCCurrentDateTime()) ? expiryTimestamp\n\t\t\t\t: null;\n\t}\n\n\t/**\n\t * Builds the response.\n\t *\n\t * @param id the id\n\t * @param idType the id type\n\t * @param status the status\n\t * @param expiryTimestamp the expiry timestamp\n\t * @return the hotlist request response DTO\n\t */\n\tprivate HotlistRequestResponseDTO buildResponse(String id, String idType, String status, LocalDateTime expiryTimestamp) {\n\t\tHotlistRequestResponseDTO response = new HotlistRequestResponseDTO();\n\t\tresponse.setId(id);\n\t\tresponse.setIdType(idType);\n\t\tresponse.setStatus(status);\n\t\tresponse.setExpiryTimestamp(expiryTimestamp);\n\t\treturn response;\n\t}\n\n}" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/kernel-masterdata-service/src/main/java/io/mosip/kernel/masterdata/constant/ApplicantTypeErrorCode.java", + "title": "ApplicantTypeErrorCode.java", + "repo": "mosip/admin-services", + "file_path": "admin/kernel-masterdata-service/src/main/java/io/mosip/kernel/masterdata/constant/ApplicantTypeErrorCode.java", + "language": "java", + "content": "package io.mosip.kernel.masterdata.constant;\n\n/**\n * Error code constants\n * \n * @author Bal Vikash Sharma\n * @since 1.0.0\n */\npublic enum ApplicantTypeErrorCode {\n\tINVALID_REQUEST_EXCEPTION(\"KER-MSD-148\", \"One or more input parameter is invalid or does not exist\"),\n\tNO_APPLICANT_FOUND_EXCEPTION(\"KER-MSD-147\", \"Applicant Type data does not exist\"),\n\tAPPLICANT_TYPE_FETCH_EXCEPTION(\"KER-MSD-149\",\n\t\t\t\"Error occurred while fetching Applicant Type-Document Category-Document Type Mapping details\"),\n\tAPPLICANT_TYPE_NOT_FOUND_EXCEPTION(\"KER-MSD-150\", \"Document Category- Document Type mapping not found\");\n\n\tprivate final String errorCode;\n\tprivate final String errorMessage;\n\n\tprivate ApplicantTypeErrorCode(String errorCode, String errorMessage) {\n\t\tthis.errorCode = errorCode;\n\t\tthis.errorMessage = errorMessage;\n\t}\n\n\tpublic String getErrorCode() {\n\t\treturn this.errorCode;\n\t}\n\n\tpublic String getErrorMessage() {\n\t\treturn this.errorMessage;\n\t}\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/kernel-masterdata-service/src/main/java/io/mosip/kernel/masterdata/constant/ApplicationErrorCode.java", + "title": "ApplicationErrorCode.java", + "repo": "mosip/admin-services", + "file_path": "admin/kernel-masterdata-service/src/main/java/io/mosip/kernel/masterdata/constant/ApplicationErrorCode.java", + "language": "java", + "content": "package io.mosip.kernel.masterdata.constant;\n\n/**\n * Error code constants\n * \n * @author Neha Sinha\n * @since 1.0.0\n */\npublic enum ApplicationErrorCode {\n\tAPPLICATION_FETCH_EXCEPTION(\"KER-MSD-001\", \"Error occurred while fetching Applications\"),\n\tAPPLICATION_INSERT_EXCEPTION(\"KER-MSD-101\", \"Error occurred while inserting application details\"),\n\tAPPLICATION_NOT_FOUND_EXCEPTION(\"KER-MSD-002\", \"Application not found\"),\n\tAPPLICATION_REQUEST_EXCEPTION(\"KER-MSD-201\", \"Bad Request Found\"),\n\tAPPLICATION_CONFIG_FETCH_EXCEPTION(\"KER-MSD-193\", \"Error occurred while fetching Application config\");\n\n\n\tprivate final String errorCode;\n\tprivate final String errorMessage;\n\n\tprivate ApplicationErrorCode(String errorCode, String errorMessage) {\n\t\tthis.errorCode = errorCode;\n\t\tthis.errorMessage = errorMessage;\n\t}\n\n\tpublic String getErrorCode() {\n\t\treturn this.errorCode;\n\t}\n\n\tpublic String getErrorMessage() {\n\t\treturn this.errorMessage;\n\t}\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/kernel-masterdata-service/src/main/java/io/mosip/kernel/masterdata/constant/AuditErrorCode.java", + "title": "AuditErrorCode.java", + "repo": "mosip/admin-services", + "file_path": "admin/kernel-masterdata-service/src/main/java/io/mosip/kernel/masterdata/constant/AuditErrorCode.java", + "language": "java", + "content": "package io.mosip.kernel.masterdata.constant;\n\npublic enum AuditErrorCode {\n\n\tAUDIT_PARSE_EXCEPTION(\"KER-MSD-197\", \"Parse Error exception\"),\n\tAUDIT_EXCEPTION(\"KER-MSD-199\", \"Audit Exception from client::\");\n\n\tprivate final String errorCode;\n\tprivate final String errorMessage;\n\n\tprivate AuditErrorCode(String errorCode, String errorMessage) {\n\t\tthis.errorCode = errorCode;\n\t\tthis.errorMessage = errorMessage;\n\t}\n\n\tpublic String getErrorCode() {\n\t\treturn this.errorCode;\n\t}\n\n\tpublic String getErrorMessage() {\n\t\treturn this.errorMessage;\n\t}\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/kernel-masterdata-service/src/main/java/io/mosip/kernel/masterdata/constant/BiometricAttributeErrorCode.java", + "title": "BiometricAttributeErrorCode.java", + "repo": "mosip/admin-services", + "file_path": "admin/kernel-masterdata-service/src/main/java/io/mosip/kernel/masterdata/constant/BiometricAttributeErrorCode.java", + "language": "java", + "content": "package io.mosip.kernel.masterdata.constant;\n\n/**\n * Constants for Biometric Attribute\n * \n * @author Udya Kumar\n * @since 1.0.0\n *\n */\npublic enum BiometricAttributeErrorCode {\n\tBIOMETRICATTRIBUTE_NOT_FOUND_EXCEPTION(\"KER-MSD-004\", \"BiometricAttribute not found\"),\n\tBIOMETRIC_TYPE_FETCH_EXCEPTION(\"KER-MSD-003\", \"Error occurred while fetching BiometricAttributes\"),\n\tBIOMETRICATTRIBUTE_INSERT_EXCEPTION(\"KER-APP-103\", \"Error occurred while inserting BiometricAttributes\");\n\n\tprivate final String errorCode;\n\tprivate final String errorMessage;\n\n\tprivate BiometricAttributeErrorCode(final String errorCode, final String errorMessage) {\n\t\tthis.errorCode = errorCode;\n\t\tthis.errorMessage = errorMessage;\n\t}\n\n\tpublic String getErrorCode() {\n\t\treturn errorCode;\n\t}\n\n\tpublic String getErrorMessage() {\n\t\treturn errorMessage;\n\t}\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/kernel-masterdata-service/src/main/java/io/mosip/kernel/masterdata/constant/BiometricTypeErrorCode.java", + "title": "BiometricTypeErrorCode.java", + "repo": "mosip/admin-services", + "file_path": "admin/kernel-masterdata-service/src/main/java/io/mosip/kernel/masterdata/constant/BiometricTypeErrorCode.java", + "language": "java", + "content": "package io.mosip.kernel.masterdata.constant;\n\n/**\n * Constants for Biometric Type\n * \n * @author Neha\n * @since 1.0.0\n */\npublic enum BiometricTypeErrorCode {\n\tBIOMETRIC_TYPE_FETCH_EXCEPTION(\"KER-MSD-005\", \"Error occurred while fetching Biometric Types\"),\n\tBIOMETRIC_TYPE_INSERT_EXCEPTION(\"KER-MSD-105\", \"Error occurred while inserting biometric type details\"),\n\tBIOMETRIC_TYPE_NOT_FOUND(\"KER-MSD-006\", \"Biometric Type not found\");\n\n\tprivate final String errorCode;\n\tprivate final String errorMessage;\n\n\tprivate BiometricTypeErrorCode(final String errorCode, final String errorMessage) {\n\t\tthis.errorCode = errorCode;\n\t\tthis.errorMessage = errorMessage;\n\t}\n\n\tpublic String getErrorCode() {\n\t\treturn this.errorCode;\n\t}\n\n\tpublic String getErrorMessage() {\n\t\treturn this.errorMessage;\n\t}\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/kernel-masterdata-service/src/main/java/io/mosip/kernel/masterdata/constant/BlocklistedWordsErrorCode.java", + "title": "BlocklistedWordsErrorCode.java", + "repo": "mosip/admin-services", + "file_path": "admin/kernel-masterdata-service/src/main/java/io/mosip/kernel/masterdata/constant/BlocklistedWordsErrorCode.java", + "language": "java", + "content": "package io.mosip.kernel.masterdata.constant;\n\n/**\n * ENUM constants for blocklisted words.\n * \n * @author Abhishek Kumar\n * @author Sagar Mahapatra\n * @since 1.0.0\n */\npublic enum BlocklistedWordsErrorCode {\n\tNO_BLOCKLISTED_WORDS_FOUND(\"KER-MSD-008\", \"Blocklisted word not found\"),\n\tDUPLICATE_BLOCKLISTED_WORDS_FOUND(\"KER-MSD-071\", \"Duplicate Blocklisted word request\"),\n\tBLOCKLISTED_WORDS_FETCH_EXCEPTION(\"KER-MSD-007\", \"Error occurred while fetching Blocklisted words\"),\n\tBLOCKLISTED_WORDS_INSERT_EXCEPTION(\"KER-MSD-070\", \"Error occurred while inserting Blocklisted words\"),\n\tBLOCKLISTED_WORDS_UPDATE_EXCEPTION(\"KER-MSD-105\", \"Error occurred while updating Blocklisted Word\"),\n\tBLOCKLISTED_WORDS_DELETE_EXCEPTION(\"KER-MSD-213\", \"Error occurred while deleting Blocklisted Word\");\n\n\t/**\n\t * The error code.\n\t */\n\tprivate final String errorCode;\n\t/**\n\t * The error message.\n\t */\n\tprivate final String errorMessage;\n\n\t/**\n\t * Constructor for BlocklistedWordsErrorCode.\n\t * \n\t * @param errorCode the error code.\n\t * @param errorMessage the error message.\n\t */\n\tprivate BlocklistedWordsErrorCode(final String errorCode, final String errorMessage) {\n\t\tthis.errorCode = errorCode;\n\t\tthis.errorMessage = errorMessage;\n\t}\n\n\t/**\n\t * Getter for error code.\n\t * \n\t * @return the error code.\n\t */\n\tpublic String getErrorCode() {\n\t\treturn errorCode;\n\t}\n\n\t/**\n\t * Getter for error message.\n\t * \n\t * @return the error message.\n\t */\n\tpublic String getErrorMessage() {\n\t\treturn errorMessage;\n\t}\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/kernel-masterdata-service/src/main/java/io/mosip/kernel/masterdata/constant/DeviceErrorCode.java", + "title": "DeviceErrorCode.java", + "repo": "mosip/admin-services", + "file_path": "admin/kernel-masterdata-service/src/main/java/io/mosip/kernel/masterdata/constant/DeviceErrorCode.java", + "language": "java", + "content": "package io.mosip.kernel.masterdata.constant;\n\n/**\n * Constants for device Details\n * \n * @author Megha Tanga\n * @author Neha Sinha\n * @author Ramadurai Pandian\n * @since 1.0.0\n *\n */\npublic enum DeviceErrorCode {\n\tDEVICE_FETCH_EXCEPTION(\"KER-MSD-009\", \"Error occured while fetching Devices\"),\n\tDEVICE_NOT_FOUND_EXCEPTION(\"KER-MSD-010\", \"Device not Found\"),\n\tDEVICE_NOT_EXISTS_EXCEPTION(\"KER-MSD-042\", \"Device ID %s does not exist\"),\n\tDEVICE_INSERT_EXCEPTION(\"KER-MSD-069\", \"Error occurred while inserting Device details\"),\n\tDEVICE_UPDATE_EXCEPTION(\"KER-MSD-083\", \"Error while updating\"),\n\tDEVICE_DELETE_EXCEPTION(\"KER-MSD-084\", \"Error while deleting\"),\n\tDEPENDENCY_EXCEPTION(\"KER-MSD-191\", \"Cannot delete as dependency found\"),\n\tMAPPED_DEVICE_ID_NOT_FOUND_EXCEPTION(\"KER-MSD-332\", \"No Device id mapped found\"),\n\tDEVICE_ID_ALREADY_MAPPED_EXCEPTION(\"KER-MSD-333\", \"All Device Id are mapped\"),\n\tINVALID_DEVICE_FILTER_VALUE_EXCEPTION(\"KER-MSD-334\", \"Invalid filter value\"),\n\tDEVICE_ID_NOT_FOUND_FOR_NAME_EXCEPTION(\"KER-MSD-335\", \"No Device Id found for name:%s\"),\n\tDEVICE_SPECIFICATION_ID_NOT_FOUND_FOR_NAME_EXCEPTION(\"KER-MSD-336\", \"No Device specification id found for name:%s\"),\n\tDEVICE_NOT_TAGGED_TO_ZONE(\"KER-MSD-344\", \"No zone assigned to the user\"),\n\tZONE_NOT_EXIST(\"KER-MSD-345\", \"Zone %s doesn't exist\"),\n\tREGISTRATION_CENTER_DEVICE_FETCH_EXCEPTION(\"KER-MSD-440\",\n\t\t\t\"Error occurred while fetching a Device details mapped with the given Registration Center\"),\n\tDEVICE_REGISTRATION_CENTER_NOT_FOUND_EXCEPTION(\"KER-MSD-441\", \"Registration Center and Device Not Found\"),\n\tDEVICE_ZONE_NOT_FOUND_EXCEPTION(\"KER-MSD-395\", \"User is not authorized to decommission the Device \"),\n\tMAPPED_TO_REGCENTER(\"KER-MSD-438\", \"Device cannot be Decommissioned as it is assigned to a Registration Center\"),\n\tDEVICE_ERROR(\"KER-MSD-700\", \"Device Error\"),\n\tINVALID_DEVICE_ZONE(\"KER-MSD-439\", \"Admin not authorized to access this Device for this Zone\"),\n\tDECOMMISSIONED(\"KER-MSD-DDD\", \"Device has been already decommissioned or Device not found\"), \n\tINVALID_CENTER_ZONE(\"KER-MSD-219\", \"The zone of the registration center in the request does not match the zone of the device\"),\n\tINVALID_CENTER(\"KER-MSD-222\", \"The registration center in the request is not present in db\");\n\n\tprivate final String errorCode;\n\tprivate final String errorMessage;\n\n\tprivate DeviceErrorCode(final String errorCode, final String errorMessage) {\n\t\tthis.errorCode = errorCode;\n\t\tthis.errorMessage = errorMessage;\n\t}\n\n\tpublic String getErrorCode() {\n\t\treturn errorCode;\n\t}\n\n\tpublic String getErrorMessage() {\n\t\treturn errorMessage;\n\t}\n\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/kernel-masterdata-service/src/main/java/io/mosip/kernel/masterdata/constant/DeviceHistoryErrorCode.java", + "title": "DeviceHistoryErrorCode.java", + "repo": "mosip/admin-services", + "file_path": "admin/kernel-masterdata-service/src/main/java/io/mosip/kernel/masterdata/constant/DeviceHistoryErrorCode.java", + "language": "java", + "content": "package io.mosip.kernel.masterdata.constant;\n\n/**\n * Constants for Device History Details\n * \n * @author Megha Tanga\n * @since 1.0.0\n *\n */\npublic enum DeviceHistoryErrorCode {\n\tDEVICE_HISTORY_FETCH_EXCEPTION(\"KER-MSD-128\", \"Error occured while fetching Device History details\"),\n\tDEVICE_HISTORY_NOT_FOUND_EXCEPTION(\"KER-MSD-129\", \"Device History not found\"),\n\tINVALIDE_EFFECTIVE_DATE_TIME_FORMATE_EXCEPTION(\"KER-MSD-130\", \"Invalid date format\");\n\n\tprivate final String errorCode;\n\tprivate final String errorMessage;\n\n\tprivate DeviceHistoryErrorCode(final String errorCode, final String errorMessage) {\n\t\tthis.errorCode = errorCode;\n\t\tthis.errorMessage = errorMessage;\n\t}\n\n\tpublic String getErrorCode() {\n\t\treturn errorCode;\n\t}\n\n\tpublic String getErrorMessage() {\n\t\treturn errorMessage;\n\t}\n\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/kernel-masterdata-service/src/main/java/io/mosip/kernel/masterdata/constant/DeviceProviderErrorCode.java", + "title": "DeviceProviderErrorCode.java", + "repo": "mosip/admin-services", + "file_path": "admin/kernel-masterdata-service/src/main/java/io/mosip/kernel/masterdata/constant/DeviceProviderErrorCode.java", + "language": "java", + "content": "package io.mosip.kernel.masterdata.constant;\n\npublic class DeviceProviderErrorCode {\n\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/kernel-masterdata-service/src/main/java/io/mosip/kernel/masterdata/constant/DeviceProviderManagementErrorCode.java", + "title": "DeviceProviderManagementErrorCode.java", + "repo": "mosip/admin-services", + "file_path": "admin/kernel-masterdata-service/src/main/java/io/mosip/kernel/masterdata/constant/DeviceProviderManagementErrorCode.java", + "language": "java", + "content": "package io.mosip.kernel.masterdata.constant;\n\n/**\n * \n * @author Srinivasan\n * @since 1.0.0\n *\n */\npublic enum DeviceProviderManagementErrorCode {\n\n\tDEVICE_DOES_NOT_EXIST(\"ADM-DPM-001\", \"Device is marked Inactive or not found\"),\n\tDEVICE_REVOKED_OR_RETIRED(\"ADM-DPM-002\", \"Device is revoked/retired\"),\n\tDATABASE_EXCEPTION(\"ADM-DPM-009\", \"Error occurred while checking a Device Details %s\"),\n\tDEVICE_PROVIDER_NOT_EXIST(\"ADM-DPM-003\", \"Device Provider does not exist\"),\n\tDEVICE_PROVIDER_INACTIVE(\"ADM-DPM-004\", \"Device Provider is marked Inactive or not found\"),\n\tMDS_DOES_NOT_EXIST(\"ADM-DPM-005\", \"deviceServiceVersion not found\"),\n\tMDS_INACTIVE_STATE(\"ADM-DPM-006\", \"MDS in inactive state\"),\n\tSOFTWARE_VERSION_IS_NOT_A_MATCH(\"ADM-DPM-007\", \"Software version does not match against the Device Details\"),\n\tPROVIDER_AND_DEVICE_CODE_NOT_MAPPED(\"ADM-DPM-008\", \"Device code does not match against - %s\"),\n\tPROVIDER_AND_TYPE_MAPPED(\"ADM-DPM-051\", \"Device code does not match against - type\"),\n\tPROVIDER_AND_SUBTYPE_MAPPED(\"ADM-DPM-052\", \"Device code does not match against - subType\"),\n\tDEVICE_PROVIDER_INSERTION_EXCEPTION(\"ADM-DPM-012\", \"Error occurred while registering Device Provider\"),\n\tDEVICE_PROVIDER_EXIST(\"ADM-DPM-011\", \"%s Device Provider already exist\"),\n\tDEVICE_PROVIDER_UPDATE_EXCEPTION(\"ADM-DPM-014\", \"Error occurred while updating a Device Provider\"),\n\tDEVICE_PROVIDER_DEVICE_CODE_NOT_MAPPED(\"ADM-DPM-015\", \"Device code not mapped against device provider\"),\n\tNO_SUCH_FIELD_EXCEPTION(\"ADM-DPM-016\", \"No such field present\");\n\n\tprivate final String errorCode;\n\tprivate final String errorMessage;\n\n\tprivate DeviceProviderManagementErrorCode(final String errorCode, final String errorMessage) {\n\t\tthis.errorCode = errorCode;\n\t\tthis.errorMessage = errorMessage;\n\t}\n\n\tpublic String getErrorCode() {\n\t\treturn errorCode;\n\t}\n\n\tpublic String getErrorMessage() {\n\t\treturn errorMessage;\n\t}\n\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/kernel-masterdata-service/src/main/java/io/mosip/kernel/masterdata/constant/DeviceRegisterErrorCode.java", + "title": "DeviceRegisterErrorCode.java", + "repo": "mosip/admin-services", + "file_path": "admin/kernel-masterdata-service/src/main/java/io/mosip/kernel/masterdata/constant/DeviceRegisterErrorCode.java", + "language": "java", + "content": "package io.mosip.kernel.masterdata.constant;\n\n/**\n * Constants for Device History Details\n * \n * @author Srinivasan\n * @since 1.0.0\n *\n */\npublic enum DeviceRegisterErrorCode {\n\tDEVICE_REGISTER_FETCH_EXCEPTION(\"ADM-DPM-056\", \"Error occured while fetching Device Register details\"),\n\tINVALID_STATUS_CODE(\"ADM-DPM-037\", \"Invalid status received\"),\n\tDEVICE_REGISTER_UPDATE_EXCEPTION(\"ADM-DPM-057\", \"Error occured while updating Device Register details\"),\n\tDEVICE_REGISTER_CREATE_EXCEPTION(\"ADM-DPM-058\", \"Error occured while create Device Register details\"),\n\tDEVICE_REGISTER_DELETED_EXCEPTION(\"ADM-DPM-050\", \"Error occured while deleted Device Register details\"),\n\tDATA_NOT_FOUND_EXCEPTION(\"ADM-DPM-038\", \"Data not found for provided device code\"),\n\tDATA_NOT_FOUND_DEVICE_REGISTER(\"ADM-DPM-038\", \"Data not found for provided device code\"),\n\tDEVICE_DE_REGISTERED_ALREADY(\"KER-DPR-002\", \"Device already de-registered\"),\n\tDEVICE_REGISTER_NOT_FOUND_EXCEPTION(\"KER-DPR-001\", \"No register device found\"),\n\tINVALID_DEVICE_CODE_LENGTH(\"KER-DPR-003\", \"Device code length exceeds the accepted limit\"),\n\tINVALID_ENVIRONMENT(\"KER-DPR-004\", \"Invalid environment\"),\n\tDEVICE_REGISTERED_STATUS_ALREADY(\"KER-DPM-039\", \"Device already is in %s status\"),\n\tDEVICE_REVOKED(\"ADM-DPM-059\", \"Device has been revoked\");\n\n\tprivate final String errorCode;\n\tprivate final String errorMessage;\n\n\tprivate DeviceRegisterErrorCode(final String errorCode, final String errorMessage) {\n\t\tthis.errorCode = errorCode;\n\t\tthis.errorMessage = errorMessage;\n\t}\n\n\tpublic String getErrorCode() {\n\t\treturn errorCode;\n\t}\n\n\tpublic String getErrorMessage() {\n\t\treturn errorMessage;\n\t}\n\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/kernel-masterdata-service/src/main/java/io/mosip/kernel/masterdata/constant/DeviceSpecificationErrorCode.java", + "title": "DeviceSpecificationErrorCode.java", + "repo": "mosip/admin-services", + "file_path": "admin/kernel-masterdata-service/src/main/java/io/mosip/kernel/masterdata/constant/DeviceSpecificationErrorCode.java", + "language": "java", + "content": "package io.mosip.kernel.masterdata.constant;\n\n/**\n * Constants for Device Specification\n * \n * @author Udya Kumar\n * @author Megha Tanga\n * @since 1.0.0\n *\n */\npublic enum DeviceSpecificationErrorCode {\n\n\tDEVICE_SPECIFICATION_NOT_FOUND_EXCEPTION(\"KER-MSD-012\", \"Device Specification not found\"),\n\tDEVICE_SPECIFICATION_DATA_FETCH_EXCEPTION(\"KER-MSD-011\", \"Error occured while fetching Device Specifications\"),\n\tDEVICE_SPECIFICATION_INSERT_EXCEPTION(\"KER-MSD-054\", \"Error occurred while inserting Device Specification details\"),\n\tDEVICE_SPECIFICATION_UPDATE_EXCEPTION(\"KER-MSD-081\", \"Error occured while updating Device Specification\"),\n\tDEVICE_SPECIFICATION_DELETE_EXCEPTION(\"KER-MSD-082\", \"Error occured while deleting Device Specification\"),\n\tDEVICE_DELETE_DEPENDENCY_EXCEPTION(\"KER-MSD-121\", \"Cannot delete dependency found\"),\n\tPAGE_DATA_NOT_FOUND_EXCEPTION(\"KER-MSD-347\", \"No Devices found for the received Device Type\"),\n\tINVALID_DEVICE_TYPE_CODE__EXCEPTION(\"KER-MSD-714\", \"Invalid dtype_code received\"),\n\tDEVICE_SPECIFICATION_UPDATE_MAPPING_EXCEPTION(\"KER-MSD-217\",\n\t\t\t\"Mapping exist before deactivating remove the mapping\");\n\n\tprivate final String errorCode;\n\tprivate final String errorMessage;\n\n\tprivate DeviceSpecificationErrorCode(final String errorCode, final String errorMessage) {\n\t\tthis.errorCode = errorCode;\n\t\tthis.errorMessage = errorMessage;\n\t}\n\n\tpublic String getErrorCode() {\n\t\treturn errorCode;\n\t}\n\n\tpublic String getErrorMessage() {\n\t\treturn errorMessage;\n\t}\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/kernel-masterdata-service/src/main/java/io/mosip/kernel/masterdata/constant/DeviceTypeErrorCode.java", + "title": "DeviceTypeErrorCode.java", + "repo": "mosip/admin-services", + "file_path": "admin/kernel-masterdata-service/src/main/java/io/mosip/kernel/masterdata/constant/DeviceTypeErrorCode.java", + "language": "java", + "content": "package io.mosip.kernel.masterdata.constant;\n\n/**\n * Constants for Device Type Details\n * \n * @author Megha Tanga\n * @since 1.0.0\n *\n */\npublic enum DeviceTypeErrorCode {\n\tDEVICE_TYPE_INSERT_EXCEPTION(\"KER-MSD-053\", \"Error occurred while inserting Device Type details\"),\n\tDEVICE_TYPE_FETCH_EXCEPTION(\"KER-MSD-230\", \"Error occurred while fetching Device Type details\"),\n\tDEVICE_TYPE_MAPPING_EXCEPTION(\"KER-MSD-195\", \"Error occured while mapping Device Type details\"),\n\tDEVICE_TYPE_NOT_FOUND_EXCEPTION(\"KER-MSD-209\", \"Required Device Type detail Not Found\"),\n\tDEVICE_TYPE_UPDATE_EXCEPTION(\"KER-MSD-231\", \"Error occurred while updating Device Type details\"),\n\tDEVICE_TYPE_UPDATE_MAPPING_EXCEPTION(\"KER-MSD-055\",\n\t\t\t\"Mapping exist before deactivating remove the mapping\");\n\n\tprivate final String errorCode;\n\tprivate final String errorMessage;\n\n\tprivate DeviceTypeErrorCode(final String errorCode, final String errorMessage) {\n\t\tthis.errorCode = errorCode;\n\t\tthis.errorMessage = errorMessage;\n\t}\n\n\tpublic String getErrorCode() {\n\t\treturn errorCode;\n\t}\n\n\tpublic String getErrorMessage() {\n\t\treturn errorMessage;\n\t}\n\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/kernel-masterdata-service/src/main/java/io/mosip/kernel/masterdata/constant/DocumentCategoryErrorCode.java", + "title": "DocumentCategoryErrorCode.java", + "repo": "mosip/admin-services", + "file_path": "admin/kernel-masterdata-service/src/main/java/io/mosip/kernel/masterdata/constant/DocumentCategoryErrorCode.java", + "language": "java", + "content": "package io.mosip.kernel.masterdata.constant;\n\n/**\n * Constants for Document category\n * \n * @author Neha\n * @author Ritesh Sinha\n * @since 1.0.0\n */\npublic enum DocumentCategoryErrorCode {\n\n\tDOCUMENT_CATEGORY_FETCH_EXCEPTION(\"KER-MSD-233\", \"Error occured while fetching Document Category details\"),\n\tDOCUMENT_CATEGORY_INSERT_EXCEPTION(\"KER-MSD-051\", \"Error occured while inserting Document Category details\"),\n\tDOCUMENT_CATEGORY_NOT_FOUND_EXCEPTION(\"KER-MSD-014\", \"Document Category not found\"),\n\tDOCUMENT_CATEGORY_UPDATE_EXCEPTION(\"KER-MSD-089\", \"Error occured while updating Document Category details\"),\n\tDOCUMENT_CATEGORY_DELETE_EXCEPTION(\"KER-MSD-090\", \"Error occured while deleting Document Category details\"),\n\tDOCUMENT_CATEGORY_DELETE_DEPENDENCY_EXCEPTION(\"KER-MSD-123\", \"Cannot delete dependency found\"),\n\tDOCUMENT_CATEGORY_UPDATE_MAPPING_EXCEPTION(\"KER-MSD-234\", \"Mapping exist before deactivating remove the mapping\");\n\n\tprivate final String errorCode;\n\tprivate final String errorMessage;\n\n\tprivate DocumentCategoryErrorCode(final String errorCode, final String errorMessage) {\n\t\tthis.errorCode = errorCode;\n\t\tthis.errorMessage = errorMessage;\n\t}\n\n\tpublic String getErrorCode() {\n\t\treturn errorCode;\n\t}\n\n\tpublic String getErrorMessage() {\n\t\treturn errorMessage;\n\t}\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/kernel-masterdata-service/src/main/java/io/mosip/kernel/masterdata/constant/DocumentTypeErrorCode.java", + "title": "DocumentTypeErrorCode.java", + "repo": "mosip/admin-services", + "file_path": "admin/kernel-masterdata-service/src/main/java/io/mosip/kernel/masterdata/constant/DocumentTypeErrorCode.java", + "language": "java", + "content": "package io.mosip.kernel.masterdata.constant;\n\n/**\n * Constants for Document Type.\n * \n * @author Ritesh Sinha\n * @author Uday Kumar\n * @since 1.0.0\n */\npublic enum DocumentTypeErrorCode {\n\n\tDOCUMENT_TYPE_FETCH_EXCEPTION(\"KER-MSD-015\", \"Error occured while fetching Document Types\"),\n\tDOCUMENT_TYPE_INSERT_EXCEPTION(\"KER-MSD-052\", \"Error occured while inserting Document Type details\"),\n\tDOCUMENT_TYPE_NOT_FOUND_EXCEPTION(\"KER-MSD-118\", \"Document Type not found\"),\n\tDOCUMENT_TYPE_UPDATE_EXCEPTION(\"KER-MSD-091\", \"Error occur while updating Document Type details\"),\n\tDOCUMENT_TYPE_DELETE_DEPENDENCY_EXCEPTION(\"KER-MSD-124\", \"Cannot delete dependency found\"),\n\tDOCUMENT_TYPE_DELETE_EXCEPTION(\"KER-MSD-092\", \"Error occured while deleting Document Type details\"),\n\tDOCUMENT_TYPE_REACTIVATION_EXCEPTION(\"KER-MSD-235\", \"Can not reactivate the document type\"),\n\tDOCUMENT_TYPE_REDEACTIVATION_EXCEPTION(\"KER-MSD-094\", \"Can not deactivate the deactivated document type\"),\n\tDOCUMENT_TYPE_MENDATORY_PARAMETER_MISSING_EXCEPTION(\"KER-MSD-095\",\n\t\t\t\"Mendatory Parameter is missing in document type details\"),\n\tDOCUMENT_TYPE_UPDATE_MAPPING_EXCEPTION(\"KER-MSD-119\", \"Mapping exist before deactivating remove the mapping\");\n\n\tprivate final String errorCode;\n\tprivate final String errorMessage;\n\n\tprivate DocumentTypeErrorCode(final String errorCode, final String errorMessage) {\n\t\tthis.errorCode = errorCode;\n\t\tthis.errorMessage = errorMessage;\n\t}\n\n\tpublic String getErrorCode() {\n\t\treturn errorCode;\n\t}\n\n\tpublic String getErrorMessage() {\n\t\treturn errorMessage;\n\t}\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/kernel-masterdata-service/src/main/java/io/mosip/kernel/masterdata/constant/ExceptionalHolidayErrorCode.java", + "title": "ExceptionalHolidayErrorCode.java", + "repo": "mosip/admin-services", + "file_path": "admin/kernel-masterdata-service/src/main/java/io/mosip/kernel/masterdata/constant/ExceptionalHolidayErrorCode.java", + "language": "java", + "content": "package io.mosip.kernel.masterdata.constant;\n\npublic enum ExceptionalHolidayErrorCode {\n\n\tEXCEPTIONAL_HOLIDAY_FETCH_EXCEPTION(\"KER-EHD-001\", \"Error occured while fetching Exceptional Holidays\"),\n\tEXCEPTIONAL_HOLIDAY_NOTFOUND(\"KER-EHD-002\", \"Exceptional Holiday not found\"),\n\tREGISTRATION_CENTER_NOT_FOUND(\"KER-MSD-802\", \"Center ID is invalid\"),\n\tINVALIDE_LANGCODE(\"KER-MSD-999\",\"Language Code is Invalid\");\n\t\n\tprivate final String errorCode;\n\tprivate final String errorMessage;\n\n\tprivate ExceptionalHolidayErrorCode(final String errorCode, final String errorMessage) {\n\t\tthis.errorCode = errorCode;\n\t\tthis.errorMessage = errorMessage;\n\t}\n\n\tpublic String getErrorCode() {\n\t\treturn errorCode;\n\t}\n\n\tpublic String getErrorMessage() {\n\t\treturn errorMessage;\n\t}\n\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/kernel-masterdata-service/src/main/java/io/mosip/kernel/masterdata/constant/FoundationalTrustProviderErrorCode.java", + "title": "FoundationalTrustProviderErrorCode.java", + "repo": "mosip/admin-services", + "file_path": "admin/kernel-masterdata-service/src/main/java/io/mosip/kernel/masterdata/constant/FoundationalTrustProviderErrorCode.java", + "language": "java", + "content": "package io.mosip.kernel.masterdata.constant;\n\n/**\n * Constants for device Details\n * \n * @author Megha Tanga\n * @author Neha Sinha\n * @author Ramadurai Pandian\n * @since 1.0.0\n *\n */\npublic enum FoundationalTrustProviderErrorCode {\n\tID_NOT_PRESENT(\"ADM-DPM-054\", \"FTP is not present for id\"),\n\tMANDATORY_PARAM_MISSING(\"ADM-DPM-053\", \"Mandatory input parameter is missing\"),\n\tFTP_ALREADY_PRESENT(\"ADM-DPM-055\", \"Foundational Trust Provider already exist\"),\n\tFTP_REGISTER_ERROR(\"ADM-DPM-017\", \"Error occurred while registering a Foundational Trust Provider\");\n\n\tprivate final String errorCode;\n\tprivate final String errorMessage;\n\n\tprivate FoundationalTrustProviderErrorCode(final String errorCode, final String errorMessage) {\n\t\tthis.errorCode = errorCode;\n\t\tthis.errorMessage = errorMessage;\n\t}\n\n\tpublic String getErrorCode() {\n\t\treturn errorCode;\n\t}\n\n\tpublic String getErrorMessage() {\n\t\treturn errorMessage;\n\t}\n\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/kernel-masterdata-service/src/main/java/io/mosip/kernel/masterdata/constant/GenderTypeErrorCode.java", + "title": "GenderTypeErrorCode.java", + "repo": "mosip/admin-services", + "file_path": "admin/kernel-masterdata-service/src/main/java/io/mosip/kernel/masterdata/constant/GenderTypeErrorCode.java", + "language": "java", + "content": "package io.mosip.kernel.masterdata.constant;\n\n/**\n * This enum contains error codes for exceptions generated during fetching\n * gender data\n * \n * @author Sidhant Agarwal\n * @author Urvil Joshi\n * @since 1.0.0\n *\n */\npublic enum GenderTypeErrorCode {\n\n\tGENDER_TYPE_FETCH_EXCEPTION(\"KER-MSD-017\", \"Error occured while fetching gender types\"),\n\n\tGENDER_TYPE_NOT_FOUND(\"KER-MSD-018\", \"Gender Type not found\"),\n\n\tGENDER_TYPE_INSERT_EXCEPTION(\"KER-MSD-068\", \"Could not insert Gender Data\"),\n\n\tGENDER_TYPE_UPDATE_EXCEPTION(\"KER-MSD-194\", \"Error occurred while updating Gender Type details\"),\n\n\tGENDER_TYPE_DELETE_EXCEPTION(\"KER-MSD-102\", \"Error occurred while deleting Gender Type details\");\n\n\tprivate final String errorCode;\n\tprivate final String errorMessage;\n\n\tprivate GenderTypeErrorCode(final String errorCode, final String errorMessage) {\n\t\tthis.errorCode = errorCode;\n\t\tthis.errorMessage = errorMessage;\n\t}\n\n\tpublic String getErrorCode() {\n\t\treturn errorCode;\n\t}\n\n\tpublic String getErrorMessage() {\n\t\treturn errorMessage;\n\t}\n\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/kernel-masterdata-service/src/main/java/io/mosip/kernel/masterdata/constant/HolidayErrorCode.java", + "title": "HolidayErrorCode.java", + "repo": "mosip/admin-services", + "file_path": "admin/kernel-masterdata-service/src/main/java/io/mosip/kernel/masterdata/constant/HolidayErrorCode.java", + "language": "java", + "content": "package io.mosip.kernel.masterdata.constant;\n\npublic enum HolidayErrorCode {\n\n\tHOLIDAY_FETCH_EXCEPTION(\"KER-MSD-019\", \"Error occured while fetching Holidays\"),\n\tHOLIDAY_NOTFOUND(\"KER-MSD-020\", \"Holiday not found\"),\n\tHOLIDAY_INSERT_EXCEPTION(\"KER-MSD-729\", \"Error Occured while inserting holiday\"),\n\tHOLIDAY_UPDATE_EXCEPTION(\"KER-MSD-731\", \"Error occurred while updating Holiday\"),\n\tHOLIDAY_LOCATION_INVALID(\"KER-MSD-730\", \"Invalid 'location_code' received\"),\n\tDUPLICATE_REQUEST(\"KER-MSD-240\", \"Duplicate holiday reaquest received\"),\n\tUPDATE_HOLIDAY_LOCATION_INVALID(\"KER-MSD-732\", \"Invalid 'location_code' received\"),\n\tHOLIDAY_DELETE_EXCEPTION(\"KER-MSD-100\", \"Error occurred while deleting Holiday\");\n\n\tprivate final String errorCode;\n\tprivate final String errorMessage;\n\n\tprivate HolidayErrorCode(final String errorCode, final String errorMessage) {\n\t\tthis.errorCode = errorCode;\n\t\tthis.errorMessage = errorMessage;\n\t}\n\n\tpublic String getErrorCode() {\n\t\treturn errorCode;\n\t}\n\n\tpublic String getErrorMessage() {\n\t\treturn errorMessage;\n\t}\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/kernel-masterdata-service/src/main/java/io/mosip/kernel/masterdata/constant/IdTypeErrorCode.java", + "title": "IdTypeErrorCode.java", + "repo": "mosip/admin-services", + "file_path": "admin/kernel-masterdata-service/src/main/java/io/mosip/kernel/masterdata/constant/IdTypeErrorCode.java", + "language": "java", + "content": "package io.mosip.kernel.masterdata.constant;\n\n/**\n * ENUM class for handling the constants of IdType.\n * \n * @author Sagar Mahapatra\n * @since 1.0.0\n *\n */\npublic enum IdTypeErrorCode {\n\tID_TYPE_NOT_FOUND_EXCEPTION(\"KER-MSD-022\", \"ID Type not found.\"),\n\tID_TYPE_FETCH_EXCEPTION(\"KER-MSD-021\", \"Error occurred while fetching ID Types\"),\n\tID_TYPE_INSERT_EXCEPTION(\"KER-MSD-059\", \"Error occurred while inserting ID Type details.\");\n\n\tprivate final String errorCode;\n\tprivate final String errorMessage;\n\n\tprivate IdTypeErrorCode(final String errorCode, final String errorMessage) {\n\t\tthis.errorCode = errorCode;\n\t\tthis.errorMessage = errorMessage;\n\t}\n\n\tpublic String getErrorCode() {\n\t\treturn errorCode;\n\t}\n\n\tpublic String getErrorMessage() {\n\t\treturn errorMessage;\n\t}\n\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/kernel-masterdata-service/src/main/java/io/mosip/kernel/masterdata/constant/IndividualTypeErrorCode.java", + "title": "IndividualTypeErrorCode.java", + "repo": "mosip/admin-services", + "file_path": "admin/kernel-masterdata-service/src/main/java/io/mosip/kernel/masterdata/constant/IndividualTypeErrorCode.java", + "language": "java", + "content": "package io.mosip.kernel.masterdata.constant;\n\n/**\n * Constants for Individual type related errors.\n * \n * @author Bal Vikash Sharma\n * @since 1.0.0\n *\n */\npublic enum IndividualTypeErrorCode {\n\n\tNO_INDIVIDUAL_TYPE_FOUND_EXCEPTION(\"KER-MSD-151\", \"Individual Type not found\"),\n\tINDIVIDUAL_TYPE_FETCH_EXCEPTION(\"KER-MSD-152\", \"Error occured while fetching Individual Type\"),\n\tINDIVIDUAL_TYPE_INSERT_EXCEPTION(\"KER-MSD-153\", \"Data insertion in IndividualTypeRepository is failed\"),\n\tINDIVIDUAL_TYPE_UPDATE_EXCEPTION(\"KER-MSD-154\", \"Data updation in IndividualTypeRepository is failed\");\n\n\tprivate final String errorCode;\n\tprivate final String errorMessage;\n\n\tprivate IndividualTypeErrorCode(final String errorCode, final String errorMessage) {\n\t\tthis.errorCode = errorCode;\n\t\tthis.errorMessage = errorMessage;\n\t}\n\n\tpublic String getErrorCode() {\n\t\treturn errorCode;\n\t}\n\n\tpublic String getErrorMessage() {\n\t\treturn errorMessage;\n\t}\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/kernel-masterdata-service/src/main/java/io/mosip/kernel/masterdata/constant/LanguageErrorCode.java", + "title": "LanguageErrorCode.java", + "repo": "mosip/admin-services", + "file_path": "admin/kernel-masterdata-service/src/main/java/io/mosip/kernel/masterdata/constant/LanguageErrorCode.java", + "language": "java", + "content": "package io.mosip.kernel.masterdata.constant;\n\n/**\n * Constants for Language related errors.\n * \n * @author Bal Vikash Sharma\n * @since 1.0.0\n *\n */\npublic enum LanguageErrorCode {\n\n\tINVALID_LANGUAGE_CODE(\"KER-MSD-023\", \"Invalid language code\"),\n\tNO_LANGUAGE_FOUND_EXCEPTION(\"KER-MSD-24\", \"Language not found\"),\n\tLANGUAGE_FETCH_EXCEPTION(\"KER-MSD-23\", \"Error occured while fetching Languages\"),\n\tLANGUAGE_CREATE_EXCEPTION(\"KER-MSD-049\", \"Error occurred while inserting Language details\"),\n\tLANGUAGE_UPDATE_EXCEPTION(\"KER-MSD-701\", \"Error occured while updating Language\"),\n\tLANGUAGE_DELETE_EXCEPTION(\"KER-MSD-702\", \"Error occured while deleting Language\");\n\n\tprivate final String errorCode;\n\tprivate final String errorMessage;\n\n\tprivate LanguageErrorCode(final String errorCode, final String errorMessage) {\n\t\tthis.errorCode = errorCode;\n\t\tthis.errorMessage = errorMessage;\n\t}\n\n\tpublic String getErrorCode() {\n\t\treturn errorCode;\n\t}\n\n\tpublic String getErrorMessage() {\n\t\treturn errorMessage;\n\t}\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/kernel-masterdata-service/src/main/java/io/mosip/kernel/masterdata/constant/LocationErrorCode.java", + "title": "LocationErrorCode.java", + "repo": "mosip/admin-services", + "file_path": "admin/kernel-masterdata-service/src/main/java/io/mosip/kernel/masterdata/constant/LocationErrorCode.java", + "language": "java", + "content": "package io.mosip.kernel.masterdata.constant;\n\npublic enum LocationErrorCode {\n\tLOCATION_FETCH_EXCEPTION(\"KER-MSD-025\", \"Error occurred while fetching Location Hierarchy\"),\n\tLOCATION_NOT_FOUND_EXCEPTION(\"KER-MSD-026\", \"Location not found\"),\n\tLOCATION_LEVEL_FETCH_EXCEPTION(\"KER-MSD-241\", \"Error occured while fetching Location Hierarchy Levels\"),\n\tLOCATION_INSERT_EXCEPTION(\"KER-MSD-242\", \"Error occured while inserting location hierarchy details\"),\n\tLOCATION_UPDATE_EXCEPTION(\"KER-MSD-097\", \"Error occured wihile updating location hierarchy details\"),\n\tLOCATION_DELETE_EXCEPTION(\"KER-MSD-098\", \"Error occured wihile deleting location hierarchy details\"),\n\tLOCATION_LEVEL_NOT_FOUND_EXCEPTION(\"KER-MSD-028\", \"Location Hierarchy Level not found\"),\n\tINVALID_LANG_CODE(\"KER-MSD_386\", \"Invalid Language Code :\"),\n\tINVALID_DIFF_HIERARCY_LEVEL(\"KER-MSD-389\",\n\t\t\t\"Location hierarchy level should not be different in different languages\"),\n\tINVALID_HIERARCY_LEVEL(\"KER-MSD-244\",\n\t\t\t\"Location hierarchy is invalid\"),\n\tDATA_IN_PRIMARY_LANG_MISSING(\"KER-MSD-388\", \"Location data is not present in the primary language : %s\"),\n\tPARENT_LOC_NOT_FOUND(\"KER-MSD-243\", \"Parent location not found\"),\n\tPARENT_LOC_NOT_EXIST(\"KER-MSD-027\", \"Parent Location %s does not exist\"),\n\tDIFFERENT_LOC_CODE(\"KER-MSD-387\", \"Location Code should not be different for a Location in different languages\"),\n\tUNABLE_TO_ACTIVATE(\"KER-MSD-384\",\n\t\t\t\"Cannot Activate the Location as data is not present in all the required languages\"),\n\tLOCATION_ALREDAY_EXIST_UNDER_HIERARCHY(\"KER-MSD-385\", \"Location %s already exist under the hierarchy\"),\n\tLOCATION_CHILD_STATUS_EXCEPTION(\"KER-MSD-300\",\n\t\t\t\"Cannot deactivate the Location as active child Location are mapped\"),\n\tNO_DATA_FOR_FILTER_VALUES(\"KER-MSD-710\", \"No Data Found for the given filter column\");\n\n\tprivate String errorCode;\n\tprivate String errorMessage;\n\n\tprivate LocationErrorCode(final String errorCode, final String errorMessage) {\n\t\tthis.errorCode = errorCode;\n\t\tthis.errorMessage = errorMessage;\n\t}\n\n\tpublic String getErrorCode() {\n\t\treturn errorCode;\n\t}\n\n\tpublic String getErrorMessage() {\n\t\treturn errorMessage;\n\t}\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/kernel-masterdata-service/src/main/java/io/mosip/kernel/masterdata/constant/LocationHierarchyErrorCode.java", + "title": "LocationHierarchyErrorCode.java", + "repo": "mosip/admin-services", + "file_path": "admin/kernel-masterdata-service/src/main/java/io/mosip/kernel/masterdata/constant/LocationHierarchyErrorCode.java", + "language": "java", + "content": "package io.mosip.kernel.masterdata.constant;\n\n/**\n * \n * @author Megha Tanga\n * @since 1.0.0\n *\n */\n\npublic enum LocationHierarchyErrorCode {\n\tLOCATION_HIERARCHY_FETCH_EXCEPTION(\"KER-MSD-399\", \"Error occured while fetching Location Hierarchy\"),\n\tLOCATION_HIERARCHY_NOT_FOUND_EXCEPTION(\"KER-MSD-398\", \"Location Hierarchy not Found\");\n\n\tprivate final String errorCode;\n\tprivate final String errorMessage;\n\n\tprivate LocationHierarchyErrorCode(final String errorCode, final String errorMessage) {\n\t\tthis.errorCode = errorCode;\n\t\tthis.errorMessage = errorMessage;\n\t}\n\n\tpublic String getErrorCode() {\n\t\treturn errorCode;\n\t}\n\n\tpublic String getErrorMessage() {\n\t\treturn errorMessage;\n\t}\n}\n\n\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/kernel-masterdata-service/src/main/java/io/mosip/kernel/masterdata/constant/MOSIPDeviceServiceErrorCode.java", + "title": "MOSIPDeviceServiceErrorCode.java", + "repo": "mosip/admin-services", + "file_path": "admin/kernel-masterdata-service/src/main/java/io/mosip/kernel/masterdata/constant/MOSIPDeviceServiceErrorCode.java", + "language": "java", + "content": "package io.mosip.kernel.masterdata.constant;\n\npublic enum MOSIPDeviceServiceErrorCode {\n\n\tREG_DEVICE_TYPE_NOT_FOUND(\"ADM-DPM-040\", \"Reg Device Type Code not found in the list of Reg Device Types\"),\n\tREG_DEVICE_SUB_TYPE_NOT_FOUND(\"ADM-DPM-041\",\n\t\t\t\"Reg Device Sub Type Code not found in the list of Reg Device Sub Types\"),\n\tDEVICE_PROVIDER_NOT_FOUND(\"ADM-DPM-039\", \"Device Provider Id not found in the list of Device Providers\"),\n\tMDS_EXIST(\"ADM-DPM-021\", \"MOSIP-Device-Service already exist\"),\n\tMDS_INSERTION_EXCEPTION(\"ADM-DPM-022\", \"Error occurred while storing MDS Details\"),\n\tMDS_NOT_FOUND(\"ADM-DPM-023\", \"MDS ID %s does not exist\"),\n\tMDS_DB_UPDATION_ERROR(\"ADM-DPM-024\", \"Error occurred while updating MDS Details\");\n\n\tprivate final String errorCode;\n\tprivate final String errorMessage;\n\n\tprivate MOSIPDeviceServiceErrorCode(final String errorCode, final String errorMessage) {\n\t\tthis.errorCode = errorCode;\n\t\tthis.errorMessage = errorMessage;\n\t}\n\n\tpublic String getErrorCode() {\n\t\treturn errorCode;\n\t}\n\n\tpublic String getErrorMessage() {\n\t\treturn errorMessage;\n\t}\n\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/kernel-masterdata-service/src/main/java/io/mosip/kernel/masterdata/constant/MachineErrorCode.java", + "title": "MachineErrorCode.java", + "repo": "mosip/admin-services", + "file_path": "admin/kernel-masterdata-service/src/main/java/io/mosip/kernel/masterdata/constant/MachineErrorCode.java", + "language": "java", + "content": "package io.mosip.kernel.masterdata.constant;\n\n/**\n * Constants for Machine Details\n * \n * @author Megha Tanga\n * @author Ramadurai Pandian\n * @since 1.0.0\n *\n */\npublic enum MachineErrorCode {\n\tMACHINE_FETCH_EXCEPTION(\"KER-MSD-029\", \"Error occured while fetching Machines\"),\n\tMACHINE_NOT_FOUND_EXCEPTION(\"KER-MSD-030\", \"Machine not Found\"),\n\tMACHINE_NOT_EXIST_EXCEPTION(\"KER-MSD-214\", \"Machine ID %s does not exist\"),\n\tMACHINE_INSERT_EXCEPTION(\"KER-MSD-250\", \"Error occurred while inserting Machine details\"),\n\tMACHINE_UPDATE_EXCEPTION(\"KER-MSD-252\", \"Error occurred while updating Machine details\"),\n\tMACHINE_DELETE_EXCEPTION(\"KER-MSD-251\", \"Error occurred while deleting Machine details\"),\n\tDEPENDENCY_EXCEPTION(\"KER-MSD-190\", \"Cannot delete as dependency found\"),\n\tREGISTRATION_CENTER_MACHINE_FETCH_EXCEPTION(\"KER-MSD-331\",\n\t\t\t\"Error occurred while fetching a Machine details mapped with the given Registration Center\"),\n\tMAPPED_MACHINE_ID_NOT_FOUND_EXCEPTION(\"KER-MSD-326\", \"No assigned Machines found\"),\n\tMACHINE_ID_ALREADY_MAPPED_EXCEPTION(\"KER-MSD-327\", \"No unassigned Machines found\"),\n\tINVALID_MACHINE_FILTER_VALUE_EXCEPTION(\"KER-MSD-328\", \"Invalid Filter value for Mapstatus column\"),\n\tMACHINE_ID_NOT_FOUND_FOR_NAME_EXCEPTION(\"KER-MSD-329\", \"No Machine exist for Machine Type name:%s\"),\n\tMACHINE_SPECIFICATION_ID_NOT_FOUND_FOR_NAME_EXCEPTION(\"KER-MSD-330\",\n\t\t\t\"No Machine Specification found for the Machine Type name:%s\"),\n\tMACHINE_NOT_TAGGED_TO_ZONE(\"KER-MSD-342\", \"No zone assigned to the user\"),\n\tMACHINE_ZONE_NOT_FOUND_EXCEPTION(\"KER-MSD-225\", \"User is not authorized to decommission the machine \"),\n\tINVALID_MACHINE_ZONE(\"KER-MSD-255\", \"Admin not authorized to access this Machine for this Zone\"),\n\tZONE_NOT_EXIST(\"KER-MSD-343\", \"Zone %s doesn't exist\"),\n\tMACHINE_ID(\"KER-MSD-437\", \"Machine ID %s does not exist for primary language\"),\n\tMAPPED_TO_REGCENTER(\"KER-MSD-256\", \"Machine cannot Decommissioned as some Registration centers are mapped\"), \n\tINVALID_PUBLIC_KEY(\"KER-MSD-257\", \"Invalid public key provided\"),\n\tINVALID_SIGN_PUBLIC_KEY(\"KER-MSD-410\", \"Invalid sign public key provided\"),\n\tMACHINE_NAME_EXISTS(\"KER-MSD-413\", \"Entry already found for the provided machine name\"),\n\tMACHINE_KEYS_ALREADY_MAPPED(\"KER-MSD-414\", \"Entry already found for the provided public keys\");\n\t\n\tprivate final String errorCode;\n\tprivate final String errorMessage;\n\n\tprivate MachineErrorCode(final String errorCode, final String errorMessage) {\n\t\tthis.errorCode = errorCode;\n\t\tthis.errorMessage = errorMessage;\n\t}\n\n\tpublic String getErrorCode() {\n\t\treturn errorCode;\n\t}\n\n\tpublic String getErrorMessage() {\n\t\treturn errorMessage;\n\t}\n\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/kernel-masterdata-service/src/main/java/io/mosip/kernel/masterdata/constant/MachineHistoryErrorCode.java", + "title": "MachineHistoryErrorCode.java", + "repo": "mosip/admin-services", + "file_path": "admin/kernel-masterdata-service/src/main/java/io/mosip/kernel/masterdata/constant/MachineHistoryErrorCode.java", + "language": "java", + "content": "/**\n * \n */\npackage io.mosip.kernel.masterdata.constant;\n\n/**\n * Constants for Machine History Details\n * \n * @author Megha Tanga\n * @since 1.0.0\n *\n */\npublic enum MachineHistoryErrorCode {\n\tMACHINE_HISTORY_FETCH_EXCEPTION(\"KER-MSD-031\", \"Error occured while fetching Machine History details\"),\n\tMACHINE_HISTORY_NOT_FOUND_EXCEPTION(\"KER-MSD-032\", \"Machine History not found\"),\n\tINVALIDE_EFFECTIVE_DATE_TIME_FORMATE_EXCEPTION(\"KER-MSD-033\", \"Invalid date format\");\n\n\tprivate final String errorCode;\n\tprivate final String errorMessage;\n\n\tprivate MachineHistoryErrorCode(final String errorCode, final String errorMessage) {\n\t\tthis.errorCode = errorCode;\n\t\tthis.errorMessage = errorMessage;\n\t}\n\n\tpublic String getErrorCode() {\n\t\treturn errorCode;\n\t}\n\n\tpublic String getErrorMessage() {\n\t\treturn errorMessage;\n\t}\n\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/kernel-masterdata-service/src/main/java/io/mosip/kernel/masterdata/constant/MachineSpecificationErrorCode.java", + "title": "MachineSpecificationErrorCode.java", + "repo": "mosip/admin-services", + "file_path": "admin/kernel-masterdata-service/src/main/java/io/mosip/kernel/masterdata/constant/MachineSpecificationErrorCode.java", + "language": "java", + "content": "package io.mosip.kernel.masterdata.constant;\n\npublic enum MachineSpecificationErrorCode {\n\n\tMACHINE_SPECIFICATION_NOT_FOUND_EXCEPTION(\"KER-MSD-117\", \"Machine Specification not Found\"),\n\tMACHINE_SPECIFICATION_INSERT_EXCEPTION(\"KER-MSD-258\",\n\t\t\t\"Error occurred while inserting Machine Specification details\"),\n\tMACHINE_SPECIFICATION_UPDATE_EXCEPTION(\"KER-MSD-085\",\n\t\t\t\"Error occurred while updating Machine Specification details\"),\n\tMACHINE_SPECIFICATION_FETCH_EXCEPTION(\"KER-MSD-087\", \"Error occurred while fetching Machine Specification details\"),\n\tMACHINE_SPECIFICATION_DELETE_EXCEPTION(\"KER-MSD-086\",\n\t\t\t\"Error occurred while deleteding Machine Specification details\"),\n\n\tMACHINE_DELETE_DEPENDENCY_EXCEPTION(\"KER-MSD-122\", \"Cannot delete dependency found\"),\n\tMACHINE_ID_NOT_FOUND_FOR_NAME_EXCEPTION(\"KER-MSD-349\", \"No Machine exist for Machine Type name:%s\"),\n\tINVALID_MACHINE_TYPE_CODE__EXCEPTION(\"KER-MSD-722\", \"Invalid mtype_code received\"),\n\tMACHINE_SPECIFICATION_UPDATE_MAPPING_EXCEPTION(\"KER-MSD-088\",\n\t\t\t\"Mapping exist before deactivating remove the mapping\");\n\n\tprivate final String errorCode;\n\tprivate final String errorMessage;\n\n\tprivate MachineSpecificationErrorCode(final String errorCode, final String errorMessage) {\n\t\tthis.errorCode = errorCode;\n\t\tthis.errorMessage = errorMessage;\n\t}\n\n\tpublic String getErrorCode() {\n\t\treturn errorCode;\n\t}\n\n\tpublic String getErrorMessage() {\n\t\treturn errorMessage;\n\t}\n\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/kernel-masterdata-service/src/main/java/io/mosip/kernel/masterdata/constant/MachineTypeErrorCode.java", + "title": "MachineTypeErrorCode.java", + "repo": "mosip/admin-services", + "file_path": "admin/kernel-masterdata-service/src/main/java/io/mosip/kernel/masterdata/constant/MachineTypeErrorCode.java", + "language": "java", + "content": "package io.mosip.kernel.masterdata.constant;\n\n/**\n * Constants for Machine Type Details\n * \n * @author Megha Tanga\n * @since 1.0.0\n *\n */\npublic enum MachineTypeErrorCode {\n\n\tMACHINE_TYPE_INSERT_EXCEPTION(\"KER-MSD-061\", \"Error occurred while inserting Machine Type details\"),\n\tMACHINE_TYPE_FETCH_EXCEPTION(\"KER-MSD-062\", \"Error occurred while fetching Machine Type details\"),\n\tMACHINE_TYPE_NOT_FOUND(\"KER-MSD-063\", \"Machine Type Not Found\"),\n\tMACHINE_TYPE_UPDATE_EXCEPTION(\"KER-MSD-064\", \"Error occurred while updating Machine Type details\"),\n\tMACHINE_TYPE_UPDATE_MAPPING_EXCEPTION(\"KER-MSD-065\", \"Mapping exist before deactivating remove the mapping\");\n\n\tprivate final String errorCode;\n\tprivate final String errorMessage;\n\n\tprivate MachineTypeErrorCode(final String errorCode, final String errorMessage) {\n\t\tthis.errorCode = errorCode;\n\t\tthis.errorMessage = errorMessage;\n\t}\n\n\tpublic String getErrorCode() {\n\t\treturn errorCode;\n\t}\n\n\tpublic String getErrorMessage() {\n\t\treturn errorMessage;\n\t}\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/kernel-masterdata-service/src/main/java/io/mosip/kernel/masterdata/constant/MasterdataSearchErrorCode.java", + "title": "MasterdataSearchErrorCode.java", + "repo": "mosip/admin-services", + "file_path": "admin/kernel-masterdata-service/src/main/java/io/mosip/kernel/masterdata/constant/MasterdataSearchErrorCode.java", + "language": "java", + "content": "package io.mosip.kernel.masterdata.constant;\n\n/**\n * Error codes for masterdata search\n * \n * @author Abhishek Kumar\n * @since 1.0.0\n */\npublic enum MasterdataSearchErrorCode {\n\tINVALID_COLUMN(\"KER-MSD-310\", \"Invalid column received : %s\"),\n\tINVALID_PAGINATION_VALUE(\"KER-MSD-313\", \"Invalid pagination value received pagestart:%d and pagefetch:%d\"),\n\tFILTER_TYPE_NOT_AVAILABLE(\"KER-MSD-312\", \"Filter type is missing\"),\n\tMISSING_FILTER_COLUMN(\"KER-MSD-311\", \"Column is missing in request\"),\n\tINVALID_SORT_INPUT(\"KER-MSD-314\", \"Missing sort field or sort type values\"),\n\tINVALID_BETWEEN_VALUES(\"KER-MSD-315\", \"Invalid fromValue or toValue\"),\n\tINVALID_PAGINATION(\"KER-MSD-356\", \"Pagination cannot be null\"),\n\tINVALID_SORT_TYPE(\"KER-MSD-358\", \"Sort type %s is not supported\"),\n\tERROR_OCCURED_WHILE_SORTING(\"KER-MSD-359\", \"Error occured while sorting\"),\n\tINVALID_SORT_FIELD(\"KER-MSD-357\", \"Invalid sort field %s\"),\n\tINVALID_VALUE(\"KER-MSD-390\", \"Invalid filter value\"),\n\tLAST_UPDATED_PARSE_EXCEPTION(\"KER-MSD-261\", \"Error occurred while parsing lastUpdated timesatamp\"),\n\tINVALID_TIMESTAMP_EXCEPTION(\"KER-MSD-262\", \"Timestamp cannot be future date\"),\n\tINVALID_LANGCODE(\"KER-LANG-ERR\",\"Language Code is Invalid\");\n\n\t/**\n\t * The error code.\n\t */\n\tprivate final String errorCode;\n\t/**\n\t * The error message.\n\t */\n\tprivate final String errorMessage;\n\n\t/**\n\t * Constructor for MasterdataSearchErrorCode.\n\t * \n\t * @param errorCode the error code.\n\t * @param errorMessage the error message.\n\t */\n\tprivate MasterdataSearchErrorCode(final String errorCode, final String errorMessage) {\n\t\tthis.errorCode = errorCode;\n\t\tthis.errorMessage = errorMessage;\n\t}\n\n\t/**\n\t * Getter for error code.\n\t * \n\t * @return the error code.\n\t */\n\tpublic String getErrorCode() {\n\t\treturn errorCode;\n\t}\n\n\t/**\n\t * Getter for error message.\n\t * \n\t * @return the error message.\n\t */\n\tpublic String getErrorMessage() {\n\t\treturn errorMessage;\n\t}\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/kernel-masterdata-service/src/main/java/io/mosip/kernel/masterdata/constant/ModuleErrorCode.java", + "title": "ModuleErrorCode.java", + "repo": "mosip/admin-services", + "file_path": "admin/kernel-masterdata-service/src/main/java/io/mosip/kernel/masterdata/constant/ModuleErrorCode.java", + "language": "java", + "content": "package io.mosip.kernel.masterdata.constant;\n\n/**\n * \n * @author Megha Tanga\n * @since 1.0.0\n *\n */\n\npublic enum ModuleErrorCode {\n\tMODULE_FETCH_EXCEPTION(\"KER-MSD-245\", \"Error occured while fetching Module\"),\n\tMODULE_NOT_FOUND_EXCEPTION(\"KER-MSD-248\", \"Module not Found\");\n\n\tprivate final String errorCode;\n\tprivate final String errorMessage;\n\n\tprivate ModuleErrorCode(final String errorCode, final String errorMessage) {\n\t\tthis.errorCode = errorCode;\n\t\tthis.errorMessage = errorMessage;\n\t}\n\n\tpublic String getErrorCode() {\n\t\treturn errorCode;\n\t}\n\n\tpublic String getErrorMessage() {\n\t\treturn errorMessage;\n\t}\n}\n\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/kernel-masterdata-service/src/main/java/io/mosip/kernel/masterdata/constant/PacketRejectionReasonErrorCode.java", + "title": "PacketRejectionReasonErrorCode.java", + "repo": "mosip/admin-services", + "file_path": "admin/kernel-masterdata-service/src/main/java/io/mosip/kernel/masterdata/constant/PacketRejectionReasonErrorCode.java", + "language": "java", + "content": "package io.mosip.kernel.masterdata.constant;\n\npublic enum PacketRejectionReasonErrorCode {\n\tNO_PACKET_REJECTION_REASONS_FOUND(\"KER-MSD-036\", \"Reason not found\"),\n\tPACKET_REJECTION_REASONS_FETCH_EXCEPTION(\"KER-MSD-035\", \"Error occured while fetching Reasons\"),\n\tPACKET_REJECTION_REASONS_CATEGORY_INSERT_EXCEPTION(\"KER-MSD-057\", \"Error occure while inserting reason details \"),\n\tPACKET_REJECTION_REASONS_LIST_INSERT_EXCEPTION(\"KER-MSD-058\", \"Error occure while inserting reason details \");\n\n\tprivate final String errorCode;\n\tprivate final String errorMessage;\n\n\tprivate PacketRejectionReasonErrorCode(final String errorCode, final String errorMessage) {\n\t\tthis.errorCode = errorCode;\n\t\tthis.errorMessage = errorMessage;\n\t}\n\n\tpublic String getErrorCode() {\n\t\treturn errorCode;\n\t}\n\n\tpublic String getErrorMessage() {\n\t\treturn errorMessage;\n\t}\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/kernel-masterdata-service/src/main/java/io/mosip/kernel/masterdata/constant/PacketWorkflowErrorCode.java", + "title": "PacketWorkflowErrorCode.java", + "repo": "mosip/admin-services", + "file_path": "admin/kernel-masterdata-service/src/main/java/io/mosip/kernel/masterdata/constant/PacketWorkflowErrorCode.java", + "language": "java", + "content": "package io.mosip.kernel.masterdata.constant;\n\npublic enum PacketWorkflowErrorCode {\n\n\tERROR_OCCURED_WHILE_SEARCHING(\"KER-MSD-263\", \"error occured while searching the record : invalid rquest\"),\n\tERROR_OCCURED_WHILE_RESUMING_PACKET(\"KER-MSD-364\", \"failed to resume packet\");\n\n\tprivate String errorCode;\n\tprivate String errorMessage;\n\n\tprivate PacketWorkflowErrorCode(final String errorCode, final String errorMessage) {\n\t\tthis.errorCode = errorCode;\n\t\tthis.errorMessage = errorMessage;\n\t}\n\n\tpublic String getErrorCode() {\n\t\treturn errorCode;\n\t}\n\n\tpublic String getErrorMessage() {\n\t\treturn errorMessage;\n\t}\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/kernel-masterdata-service/src/main/java/io/mosip/kernel/masterdata/constant/RegisteredDeviceErrorCode.java", + "title": "RegisteredDeviceErrorCode.java", + "repo": "mosip/admin-services", + "file_path": "admin/kernel-masterdata-service/src/main/java/io/mosip/kernel/masterdata/constant/RegisteredDeviceErrorCode.java", + "language": "java", + "content": "package io.mosip.kernel.masterdata.constant;\n\npublic enum RegisteredDeviceErrorCode {\n\n\tDEVICE_PROVIDER_NOT_EXIST(\"ADM-DPM-032\",\n\t\t\t\"Device Provider ID/Name does not exist in the list of Registered Device Providers\"),\n\tDEVICE_DATA_NOT_EXIST(\"KER-MSD-999\",\n\t\t\t\"Device data can't be null\"),\n\tREGISTERED_DEVICE_INSERTION_EXCEPTION(\"ADM-DPM-035\", \"Error occurred while storing Registered Device Details\"),\n\tSERIALNUM_NOT_EXIST(\"ADM-DPM-042\", \"%s Cannot register device as it is not a white-listed device\"),\n\tSTATUS_CODE_VALIDATION_EXCEPTION(\"ADM-DPM-028\", \"Error occured while validating Status Code\"),\n\tTYPE_VALIDATION_EXCEPTION(\"KER-DPM-sss\", \"Error occured while validating Type Value\"),\n\tCERTIFICATION_LEVEL_VALIDATION_EXCEPTION(\"ADM-DPM-034\", \" Error occured while validating Certification Level\"),\n\tPURPOSE_VALIDATION_EXCEPTION(\"ADM-DPM-033\", \"Error occured while validating Purpose Value\"),\n\tDEVICE_TYPE_NOT_EXIST(\"ADM-DPM-026\", \"%s Device Type does not exist\"),\n\tSERIALNO_DPID_ALREADY_EXIST(\"ADM-DPM-043\", \"Serial no and DpId already exist\"),\n\tDEVICE_SUB_TYPE_NOT_EXIST(\"ADM-DPM-027\", \"%s Device Sub-Type does not exist\"),\n\tTIMESTAMP_AFTER_CURRENTTIME(\"MSD-RDS-001\", \"Time Stamp input is %s min after the current timestamp\"),\n\tTIMESTAMP_BEFORE_CURRENTTIME(\"MSD-RDS-002\", \"Time Stamp input is %s min before the current timestamp\"),\n\tFOUNDATIONAL_VALUE(\"ADM-DPM-030\", \"Error occured while validating Foundational\");\n\n\tprivate final String errorCode;\n\tprivate final String errorMessage;\n\n\tprivate RegisteredDeviceErrorCode(final String errorCode, final String errorMessage) {\n\t\tthis.errorCode = errorCode;\n\t\tthis.errorMessage = errorMessage;\n\t}\n\n\tpublic String getErrorCode() {\n\t\treturn errorCode;\n\t}\n\n\tpublic String getErrorMessage() {\n\t\treturn errorMessage;\n\t}\n\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/kernel-masterdata-service/src/main/java/io/mosip/kernel/masterdata/constant/RegistrationCenterDeviceErrorCode.java", + "title": "RegistrationCenterDeviceErrorCode.java", + "repo": "mosip/admin-services", + "file_path": "admin/kernel-masterdata-service/src/main/java/io/mosip/kernel/masterdata/constant/RegistrationCenterDeviceErrorCode.java", + "language": "java", + "content": "package io.mosip.kernel.masterdata.constant;\n\n/**\n * Constants for RegistrationCenterDevice related errors.\n * \n * @author Dharmesh Khandelwal\n * @author Bal Vikash Sharma\n * @since 1.0.0\n *\n */\npublic enum RegistrationCenterDeviceErrorCode {\n\n\tREGISTRATION_CENTER_DEVICE_CREATE_EXCEPTION(\"KER-MSD-075\",\n\t\t\t\"Error occurred while inserting a mapping of Device and Center\"),\n\tREGISTRATION_CENTER_DEVICE_DATA_NOT_FOUND(\"KER-MSD-115\", \"Mapping for Device and Center not found\"),\n\tREGISTRATION_CENTER_DEVICE_DELETE_EXCEPTION(\"KER-MSD-211\",\n\t\t\t\"Error occurred while deleting a mapping of Device and Center\"),\n\tDEVICE_REGISTRATION_CENTER_NOT_FOUND_EXCEPTION(\"KER-MSD-441\", \"Registration Center and Device Not Found\"),\n\tREGISTRATION_CENTER_NOT_FOUND_EXCEPTION(\"KER-MSD-409\", \"Registration Center not found\"),\n\tREGISTRATION_CENTER_DEVICE_FETCH_EXCEPTION(\"KER-MSD-433\", \"Error occurred while fetching Center Device details\"),\n\tREGISTRATION_CENTER_DEVICE_ALREADY_UNMAPPED_EXCEPTION(\"KER-MSD-434\",\n\t\t\t\"Already is in inactive status\"),\n\tDEVICE_AND_REG_CENTER_MAPPING_NOT_FOUND_EXCEPTION(\"KER-MSD-435\",\n\t\t\t\"Device Id %s - Center Id %s mapping does not exist\"),\n\tINVALIDE_DEVICE_ZONE(\"KER-MSD-415\", \"Admin not authorized to map/un-map this Device\"),\n\tINVALIDE_CENTER_ZONE(\"KER-MSD-411\", \"Admin not authorized to map/un-map this Registration Center\"),\n\tREGISTRATION_CENTER_DEVICE_MAPPING_EXCEPTION(\"KER-MSD-436\",\n\t\t\t\"Error occurred while mapping Device to Registration Center\"),\n\tREGISTRATION_CENTER_DEVICE_NOT_IN_SAME_HIERARCHY(\"KER-MSD-416\",\n\t\t\t\"Device cannot be mapped to the Center as Center and Device does not belong to the same Administrative Zone\"),\n\tREGISTRATION_CENTER_ALREADY_MAPPED(\"KER-MSD-419\",\n\t\t\t\"Cannot map the Device as it is mapped to another Registration Center\"),\n\tREGISTATION_CENTER_DEVICE_DECOMMISIONED_STATE(\"KER-MSD-418\",\n\t\t\t\"Cannot map as the Registration Center/Device is Decommissioned\"),\n\tDEVICE_NOT_FOUND_EXCEPTION(\"KER-MSD-417\", \"Device not Found\");\n\n\tprivate final String errorCode;\n\tprivate final String errorMessage;\n\n\tprivate RegistrationCenterDeviceErrorCode(final String errorCode, final String errorMessage) {\n\t\tthis.errorCode = errorCode;\n\t\tthis.errorMessage = errorMessage;\n\t}\n\n\tpublic String getErrorCode() {\n\t\treturn errorCode;\n\t}\n\n\tpublic String getErrorMessage() {\n\t\treturn errorMessage;\n\t}\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/kernel-masterdata-service/src/main/java/io/mosip/kernel/masterdata/constant/RegistrationCenterDeviceHistoryErrorCode.java", + "title": "RegistrationCenterDeviceHistoryErrorCode.java", + "repo": "mosip/admin-services", + "file_path": "admin/kernel-masterdata-service/src/main/java/io/mosip/kernel/masterdata/constant/RegistrationCenterDeviceHistoryErrorCode.java", + "language": "java", + "content": "/**\n * \n */\npackage io.mosip.kernel.masterdata.constant;\n\n/**\n * Constants for Registration center device History\n * \n * @author Uday Kumar\n * @since 1.0.0\n *\n */\npublic enum RegistrationCenterDeviceHistoryErrorCode {\n\tREGISTRATION_CENTER_DEVICE_HISTORY_FETCH_EXCEPTION(\"KER-MSD-132\",\n\t\t\t\"Error occured while fetching registration center device history details\"),\n\tREGISTRATION_CENTER_DEVICE_HISTORY_NOT_FOUND_EXCEPTION(\"KER-MSD-133\",\n\t\t\t\" registration center device history not found\"),\n\tINVALIDE_EFFECTIVE_DATE_TIME_FORMATE_EXCEPTION(\"KER-MSD-033\", \"Invalid date format\");\n\n\tprivate final String errorCode;\n\tprivate final String errorMessage;\n\n\tprivate RegistrationCenterDeviceHistoryErrorCode(final String errorCode, final String errorMessage) {\n\t\tthis.errorCode = errorCode;\n\t\tthis.errorMessage = errorMessage;\n\t}\n\n\tpublic String getErrorCode() {\n\t\treturn errorCode;\n\t}\n\n\tpublic String getErrorMessage() {\n\t\treturn errorMessage;\n\t}\n\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/kernel-masterdata-service/src/main/java/io/mosip/kernel/masterdata/constant/RegistrationCenterErrorCode.java", + "title": "RegistrationCenterErrorCode.java", + "repo": "mosip/admin-services", + "file_path": "admin/kernel-masterdata-service/src/main/java/io/mosip/kernel/masterdata/constant/RegistrationCenterErrorCode.java", + "language": "java", + "content": "package io.mosip.kernel.masterdata.constant;\n\n/**\n * Constants for Registration Center\n * \n * @author Dharmesh Khandelwal\n * @author Abhishek Kumar\n * @author Sagar Mahapatra\n * @author MeghaTanga\n * @since 1.0.0\n *\n */\npublic enum RegistrationCenterErrorCode {\n\tREGISTRATION_CENTER_FETCH_EXCEPTION(\"KER-MSD-041\", \"Error occured while fetching Registration Centers\"),\n\tREGISTRATION_CENTER_INSERT_EXCEPTION(\"KER-MSD-060\", \"Error occurred while Inserting Registration Center details\"),\n\tREGISTRATION_CENTER_UPDATE_EXCEPTION(\"KER-MSD-111\", \"Error occurred while updating Registration Center details\"),\n\tREGISTRATION_CENTER_DELETE_EXCEPTION(\"KER-MSD-112\", \"Error occurred while deleting Registration Center details\"),\n\tREGISTRATION_CENTER_NOT_FOUND(\"KER-MSD-215\", \"Registration Center not found\"),\n\tREGISTRATION_CENTER_LANGUAGE_EXCEPTION(\"KER-MSD-303\",\n\t\t\t\"Received data is not present in all Languages supported by MOSIP\"),\n\tREGISTRATION_CENTER_ID_EXCEPTION(\"KER-MSD-304\", \"Center IDs received for all languages is not same\"),\n\tREGISTRATION_CENTER_ID_LANGUAGECODE_EXCEPTION(\"KER-MSD-305\",\n\t\t\t\"Center ID and Language Code combination is not unique in the request received\"),\n\tREGISTRATION_CENTER_LANGUAGECODE_EXCEPTION(\"KER-MSD-306\", \"Records with duplicate language code found\"),\n\tDEPENDENCY_EXCEPTION(\"KER-MSD-192\", \"Cannot delete as dependency found\"),\n\tDATE_TIME_PARSE_EXCEPTION(\"KER-MSD-043\", \"Invalid date format\"),\n\tREGISTRATION_CENTER_LUNCH_START_CENTER_END_EXCEPTION(\"KER-MSD-259\",\n\t\t\t\"Lunch Start time cannot less than Center Start time\"),\n\tREGISTRATION_CENTER_LUNCH_END_CENTER_END_EXCEPTION(\"KER-MSD-260\",\n\t\t\t\"Lunch end Time cannot be Greater Than Center End Time\"),\n\tREGISTRATION_CENTER_START_END_EXCEPTION(\"KER-MSD-309\", \"Center Start Time must be smaller than Center End Time\"),\n\tREGISTRATION_CENTER_LUNCH_START_END_EXCEPTION(\"KER-MSD-308\",\n\t\t\t\"Center Lunch Start Time must be smaller than Center Lunch End Time\"),\n\tREGISTRATION_CENTER_FORMATE_EXCEPTION(\"KER-MSD-307\",\n\t\t\t\"Latitude or Longitude must have maximum 2 digits before and minimum 4 digits after decimal\"),\n\tDATA_TO_BE_VALIDATED_WITH_NOT_FOUND(\"KER-MSD-703\", \"start/end time Data not configured in database\"),\n\tNO_LOCATION_DATA_AVAILABLE(\"KER-MSD-320\", \"No Location found for value %s\"),\n\tNO_CENTERTYPE_AVAILABLE(\"KER-MSD-321\", \"No Registration Center type found for value %s\"),\n\tNO_ZONE_AVAILABLE(\"KER-MSD-340\", \"Zone %s doesn't exist\"),\n\tWORKING_NONWORKING_EXCEPTION(\"KER-MSD-803\", \"Cannot create as data for all seven days is not received\"),\n\n\tPRIMARY_LANGUAGE_EXCEPTION(\"KER-MSD-704\", \"Received data is not present in Primary Language supported by MOSIP\"),\n\tSECONDARY_LANGUAGE_EXCEPTION(\"KER-MSD-705\", \"%s Language does not supported by MOSIP\"),\n\tREGISTRATION_CENTER_ALL_Lang(\"KER-MSD-706\",\n\t\t\t\"For the given ID data is present in all supported Language code of the MOSIP, So go for Edit\"),\n\n\tLANGUAGE_EXCEPTION(\"KER-MSD-382\", \"Received language code %s is not a configured language\"),\n\tPRIMARY_LANGUAGE_EMPTY_EXCEPTION(\"KER-MSD-999\", \"Primary language code %s is empty or null in configuration\"),\n\tSECONDARY_LANGUAGE_EMPTY_EXCEPTION(\"KER-MSD-999\", \"Secondary language code %s is empty or null in configuration\"),\n\tREGISTRATION_CENTER_ID(\"KER-MSD-381\", \"Center ID %s does not exist for primary language\"),\n\n\tID_NOT_UNIQUE(\"KER-MSD-362\", \"Please make sure that all entered IDs are same-%s\"),\n\tCENTER_TYPE_CODE_NOT_UNIQUE(\"KER-MSD-363\", \"Please make sure that all entered Center-Type-Code are same-%s\"),\n\tLATITUDE_NOT_UNIQUE(\"KER-MSD-264\", \"Please make sure that all entered Latitude are same-%s\"),\n\tLONGITUDE_NOT_UNIQUE(\"KER-MSD-265\", \"Please make sure that all entered Longitude are same-%s\"),\n\tCONTACT_PHONE_NOT_UNIQUE(\"KER-MSD-366\", \"Please make sure that all entered Contact-Phone are same-%s\"),\n\tWORKING_HOURS_NOT_UNIQUE(\"KER-MSD-367\", \"Please make sure that all entered Working-Hours are same-%s\"),\n\tCENTER_STRART_TIME_NOT_UNIQUE(\"KER-MSD-368\", \"Please make sure that all entered Center-Start-Time are same-%s\"),\n\tCENTER_END_TIME_NOT_UNIQUE(\"KER-MSD-369\", \"Please make sure that all entered Center-End-Time are same-%s\"),\n\tLUNCH_START_TIME_NOT_UNIQUE(\"KER-MSD-370\", \"Please make sure that all entered Lunch-Start-Time are same-%s\"),\n\tLUNCH_END_TIME_NOT_UNIQUE(\"KER-MSD-371\", \"Please make sure that all entered Lunch-End-Time are same-%s\"),\n\tTIME_ZONE_NOT_UNIQUE(\"KER-MSD-253\", \"Please make sure that all entered Time-Zone are same-%s\"),\n\tHOLIDAY_LOCATION_CODE_NOT_UNIQUE(\"KER-MSD-373\",\n\t\t\t\"Please make sure that all entered Holiday-Location-Code are same-%s\"),\n\tZONE_CODE_NOT_UNIQUE(\"KER-MSD-218\", \"Please make sure that all entered Zone-Code are same-%s\"),\n\tPERKIOSKPROCESSTIME_NOT_UNIQUE(\"KER-MSD-375\",\n\t\t\t\"Please make sure that all entered Per-Kiosk-Process-Time are same-%s\"),\n\tIS_ACTIVE_NOT_UNIQUE(\"KER-MSD-376\", \"Please make sure that all entered Is-Active Status are same-%s\"),\n\tID_SIZE(\"KER-MSD-377\", \"Please make sure that ID size must be between 1-10 charectors-%s\"),\n\tID_LANGUAGE(\"KER-MSD-378\",\n\t\t\t\"Cannot activate as the Center against ID %s is not present in all the configured languages \"),\n\tIS_ACTIVE(\"KER-MSD-379\", \"Center against the ID %d Received is already Active\"),\n\tIS_IN_ACTIVE(\"KER-MSD-380\", \"Center against the ID %d Received is already Inactive\"),\n\tDEFAULT_LANGUAGE(\"KER-MSD-383\", \"Recived data dones not contain data for Primary Langauge\"),\n\tINVALIDE_ZONE(\"KER-MSD-346\", \"Received Zone Code is not a leaf Zone \"),\n\n\tUSER_ZONE_NOT_FOUND(\"KER-MSD-341\", \"No zone assigned to the user\"),\n\tMAPPED_TO_DEVICE(\"KER-MSD-350\",\n\t\t\t\"Cannot Decommission the Registration Center, as some devices are mapped to the Registration Center\"),\n\tMAPPED_TO_USER(\"KER-MSD-352\",\n\t\t\t\"Cannot Decommission the Registration Center, as some users are mapped to the Registration Center\"),\n\tMAPPED_TO_MACHINE(\"KER-MSD-351\",\n\t\t\t\"Cannot Decommission the Registration Center, as some machines are mapped to the Registration Center\"),\n\tDECOMMISSION_FAILED(\"KER-MSD-354\", \"Internal Server Error\"),\n\tINVALID_RCID_LENGTH(\"KER-MSD-353\", \"Center ID specified for decommission has invalid length\"),\n\tREG_CENTER_INVALIDE_ZONE(\"KER-MSD-441\", \"Admin not authorized to access this Registration Center for this Zone\"),\n\tDECOMMISSIONED(\"KER-MSD-216\",\n\t\t\t\"Registration center has been already decommissioned or Registration center not found\"),\n\tHOLIDAY_NOT_FOUND(\"KER-MSD-221\", \"HolidayLocationCode Not Found\"),\n\tEXP_HOLIDAY_DATE(\"ADM-SSS-sss\", \"this holiday date is persent in pre-defined list of country holidays\"),\n\tWORKING_NON_WORKING_NULL(\"ADM-fff-sss\", \"working non working request is null\"),\n\tHOLIDAY_YEAR_PATTERN(\"KER-MSD-443\",\"Invalid year provided\"),\n\tEXP_HOLIDAY_NULL(\"ADM-fff-eee\", \"Expectional Holiday request is null\"),\n\tLOCATION_HIERARCHY_INVALID(\"ADM-MSD-445\", \"location hierarchy is invalid\"),\n\tLOCATION_INVALID(\"ADM-MSD-446\", \"Location not found\"),\n\tCENTER_NOT_FOUND_FOR_LANG(\"KER-MSD-280\",\"Center Type not found for language\"),\n\tCLONE_NOT_SUPPORTED(\"ADM-MSD-447\",\"Clone not supported\"),\n\tINVALID_NO_OF_KIOSK(\"KER-MSD-281\",\"Invalid number of kiosks\");\n\n\tprivate final String errorCode;\n\tprivate final String errorMessage;\n\n\tprivate RegistrationCenterErrorCode(final String errorCode, final String errorMessage) {\n\t\tthis.errorCode = errorCode;\n\t\tthis.errorMessage = errorMessage;\n\t}\n\n\tpublic String getErrorCode() {\n\t\treturn errorCode;\n\t}\n\n\tpublic String getErrorMessage() {\n\t\treturn errorMessage;\n\t}\n\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/kernel-masterdata-service/src/main/java/io/mosip/kernel/masterdata/constant/RegistrationCenterMachineDeviceErrorCode.java", + "title": "RegistrationCenterMachineDeviceErrorCode.java", + "repo": "mosip/admin-services", + "file_path": "admin/kernel-masterdata-service/src/main/java/io/mosip/kernel/masterdata/constant/RegistrationCenterMachineDeviceErrorCode.java", + "language": "java", + "content": "package io.mosip.kernel.masterdata.constant;\n\n/**\n * Constants for RegistrationCenterMachineDevice related errors.\n * \n * @author Bal Vikash Sharma\n * @since 1.0.0\n *\n */\npublic enum RegistrationCenterMachineDeviceErrorCode {\n\n\tREGISTRATION_CENTER_MACHINE_DEVICE_CREATE_EXCEPTION(\"KER-MSD-076\",\n\t\t\t\"Error occurred while inserting a mapping of Center, Machine and Device\"),\n\n\tREGISTRATION_CENTER_MACHINE_DEVICE_DELETE_EXCEPTION(\"KER-MSD-107\",\n\t\t\t\"Error occurred while deleting a mapping of Center, Machine and Device\"),\n\tREGISTRATION_CENTER_MACHINE_DEVICE_DATA_NOT_FOUND_EXCEPTION(\"KER-MSD-116\",\n\t\t\t\"Mapping for Center, Machine and Device not found\");\n\n\tprivate final String errorCode;\n\tprivate final String errorMessage;\n\n\tprivate RegistrationCenterMachineDeviceErrorCode(final String errorCode, final String errorMessage) {\n\t\tthis.errorCode = errorCode;\n\t\tthis.errorMessage = errorMessage;\n\t}\n\n\tpublic String getErrorCode() {\n\t\treturn errorCode;\n\t}\n\n\tpublic String getErrorMessage() {\n\t\treturn errorMessage;\n\t}\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/kernel-masterdata-service/src/main/java/io/mosip/kernel/masterdata/constant/RegistrationCenterMachineDeviceHistoryErrorCode.java", + "title": "RegistrationCenterMachineDeviceHistoryErrorCode.java", + "repo": "mosip/admin-services", + "file_path": "admin/kernel-masterdata-service/src/main/java/io/mosip/kernel/masterdata/constant/RegistrationCenterMachineDeviceHistoryErrorCode.java", + "language": "java", + "content": "package io.mosip.kernel.masterdata.constant;\n\n/**\n * \n * @author Srinivasan\n *\n */\npublic enum RegistrationCenterMachineDeviceHistoryErrorCode {\n\n\tREGISTRATION_CENTER_MACHINE_DEVICE_HISTORY_CREATE_EXCEPTION(\"KER-MSD-707\",\n\t\t\t\"Error occurred while inserting a mapping for Center, Machine and Device\");\n\n\tprivate final String errorCode;\n\tprivate final String errorMessage;\n\n\tprivate RegistrationCenterMachineDeviceHistoryErrorCode(final String errorCode, final String errorMessage) {\n\t\tthis.errorCode = errorCode;\n\t\tthis.errorMessage = errorMessage;\n\t}\n\n\tpublic String getErrorCode() {\n\t\treturn errorCode;\n\t}\n\n\tpublic String getErrorMessage() {\n\t\treturn errorMessage;\n\t}\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/kernel-masterdata-service/src/main/java/io/mosip/kernel/masterdata/constant/RegistrationCenterMachineErrorCode.java", + "title": "RegistrationCenterMachineErrorCode.java", + "repo": "mosip/admin-services", + "file_path": "admin/kernel-masterdata-service/src/main/java/io/mosip/kernel/masterdata/constant/RegistrationCenterMachineErrorCode.java", + "language": "java", + "content": "package io.mosip.kernel.masterdata.constant;\n\n/**\n * Constants for RegistrationCenterMachine related errors.\n * \n * @author Dharmesh Khandelwal\n * @author Bal Vikash Sharma\n * @since 1.0.0\n *\n */\npublic enum RegistrationCenterMachineErrorCode {\n\n\tREGISTRATION_CENTER_MACHINE_CREATE_EXCEPTION(\"KER-MSD-074\",\n\t\t\t\"Error occurred while inserting a mapping of Machine and Center\"),\n\tREGISTRATION_CENTER_MACHINE_DATA_NOT_FOUND(\"KER-MSD-114\", \"Mapping does not exist\"),\n\tREGISTRATION_CENTER_MACHINE_DELETE_EXCEPTION(\"KER-MSD-106\",\n\t\t\t\"Error occurred while deleting a mapping of Machine and Center\"),\n\tREGISTRATION_CENTER_MACHINE_FETCH_EXCEPTION(\"KER-MSD-601\", \"Error occurred while fetching Center Machine details\"),\n\tREGISTRATION_CENTER_ZONE_INVALID(\"KER-MSD-411\",\n\t\t\t\"Admin not authorized to map/un-map this Registration Center\"),\n\tREGISTRATION_MACHINE_ZONE_INVALID(\"KER-MSD-412\",\n\t\t\t\"Admin not authorized to map/un-map this Machine\"),\n\tREGISTRATION_CENTER_MACHINE_STATUS(\"KER-MSD-602\", \"Already is in inactive status\"),\n\tREGISTRATION_CENTER_NOT_FOUND(\"KER-MSD-409\", \"Registration Center not found\"),\n\tREGISTRATION_CENTER_MACHINE_DECOMMISIONED_STATE(\"KER-MSD-421\",\n\t\t\t\"Registration center mapped to machine is decommisioned\"),\n\tREGISTRATION_CENTER_MACHINE_ALREADY_ACTIVE(\"KER-MSD-600\", \"Registration center already mapped to machine\"),\n\tREGISTRATION_CENTER_MACHINE_NOT_IN_SAME_HIERARCHY(\"KER-MSD-420\",\n\t\t\t\"Registration center and machine is not in same hierarchy\");\n\n\tprivate final String errorCode;\n\tprivate final String errorMessage;\n\n\tprivate RegistrationCenterMachineErrorCode(final String errorCode, final String errorMessage) {\n\t\tthis.errorCode = errorCode;\n\t\tthis.errorMessage = errorMessage;\n\t}\n\n\tpublic String getErrorCode() {\n\t\treturn errorCode;\n\t}\n\n\tpublic String getErrorMessage() {\n\t\treturn errorMessage;\n\t}\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/kernel-masterdata-service/src/main/java/io/mosip/kernel/masterdata/constant/RegistrationCenterMachineUserMappingErrorCode.java", + "title": "RegistrationCenterMachineUserMappingErrorCode.java", + "repo": "mosip/admin-services", + "file_path": "admin/kernel-masterdata-service/src/main/java/io/mosip/kernel/masterdata/constant/RegistrationCenterMachineUserMappingErrorCode.java", + "language": "java", + "content": "package io.mosip.kernel.masterdata.constant;\n\n/**\n * Constants for Registration Center\n * \n * @author Dharmesh Khandelwal\n * @author Sidhant Agarwal\n * @since 1.0.0\n *\n */\npublic enum RegistrationCenterMachineUserMappingErrorCode {\n\n\tREGISTRATION_CENTER_USER_MACHINE_MAPPING_INSERT_EXCEPTION(\"KER-MSD-078\",\n\t\t\t\"Error occurred while inserting mapping of Center, User and Machine details\"),\n\tREGISTRATION_CENTER_USER_MACHINE_NOT_FOUND(\"KER-MSD-131\",\n\t\t\t\"Registration Center, Machine and User Mapping not found\"),\n\tREGISTRATION_CENTER_USER_MACHINE_DELETE_EXCEPTION(\"KER-MSD-108\",\n\t\t\t\"Error occurred while deleting mapping of Center, User and Machine details\"),\n\tREGISTRATION_CENTER_USER_MACHINE_UPDATE_EXCEPTION(\"KER-MSD-136\",\n\t\t\t\"Error occurred while updating mapping of Center, User and Machine details\");\n\n\t/**\n\t * The error code\n\t */\n\tprivate final String errorCode;\n\t/**\n\t * The error message\n\t */\n\tprivate final String errorMessage;\n\n\t/**\n\t * Constructor to set error code and message\n\t * \n\t * @param errorCode the error code\n\t * @param errorMessage the error message\n\t */\n\tprivate RegistrationCenterMachineUserMappingErrorCode(final String errorCode, final String errorMessage) {\n\t\tthis.errorCode = errorCode;\n\t\tthis.errorMessage = errorMessage;\n\t}\n\n\t/**\n\t * Function to get error code\n\t * \n\t * @return {@link #errorCode}\n\t */\n\tpublic String getErrorCode() {\n\t\treturn errorCode;\n\t}\n\n\t/**\n\t * Function to get the error message\n\t * \n\t * @return {@link #errorMessage}r\n\t */\n\tpublic String getErrorMessage() {\n\t\treturn errorMessage;\n\t}\n\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/kernel-masterdata-service/src/main/java/io/mosip/kernel/masterdata/constant/RegistrationCenterTypeErrorCode.java", + "title": "RegistrationCenterTypeErrorCode.java", + "repo": "mosip/admin-services", + "file_path": "admin/kernel-masterdata-service/src/main/java/io/mosip/kernel/masterdata/constant/RegistrationCenterTypeErrorCode.java", + "language": "java", + "content": "package io.mosip.kernel.masterdata.constant;\n\npublic enum RegistrationCenterTypeErrorCode {\n\tREGISTRATION_CENTER_TYPE_FETCH_EXCEPTION(\"KER-MSD-013\",\n\t\t\t\"Error occurred while fetching Registration Center Type details\"),\n\tREGISTRATION_CENTER_TYPE_INSERT_EXCEPTION(\"KER-MSD-050\",\n\t\t\t\"Error occurred while inserting Registration Center Type details\"),\n\tREGISTRATION_CENTER_TYPE_NOT_FOUND_EXCEPTION(\"KER-MSD-120\", \"Registration Center Type not found\"),\n\tREGISTRATION_CENTER_TYPE_UPDATE_EXCEPTION(\"KER-MSD-109\",\n\t\t\t\"Error occurred while updating Registration Center Type details\"),\n\tREGISTRATION_CENTER_TYPE_DELETE_EXCEPTION(\"KER-MSD-110\",\n\t\t\t\"Error occurred while deleting Registration Center Type details\"),\n\tREGISTRATION_CENTER_TYPE_DELETE_DEPENDENCY_EXCEPTION(\"KER-MSD-127\", \"Cannot delete dependency found\"),\n\tREGISTRATION_CENTER_TYPE_UPDATE_MAPPING_EXCEPTION(\"KER-MSD-270\",\n\t\t\t\"Mapping exist before deactivating remove the mapping\");\n\n\tprivate final String errorCode;\n\tprivate final String errorMessage;\n\n\tprivate RegistrationCenterTypeErrorCode(final String errorCode, final String errorMessage) {\n\t\tthis.errorCode = errorCode;\n\t\tthis.errorMessage = errorMessage;\n\t}\n\n\tpublic String getErrorCode() {\n\t\treturn errorCode;\n\t}\n\n\tpublic String getErrorMessage() {\n\t\treturn errorMessage;\n\t}\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/kernel-masterdata-service/src/main/java/io/mosip/kernel/masterdata/constant/RegistrationCenterUserErrorCode.java", + "title": "RegistrationCenterUserErrorCode.java", + "repo": "mosip/admin-services", + "file_path": "admin/kernel-masterdata-service/src/main/java/io/mosip/kernel/masterdata/constant/RegistrationCenterUserErrorCode.java", + "language": "java", + "content": "package io.mosip.kernel.masterdata.constant;\n\n/**\n * \n * @author Megha Tanga\n *\n */\npublic enum RegistrationCenterUserErrorCode {\n\n\tREGISTRATION_CENTER_USER_ALREADY_UNMAPPED_EXCEPTION(\"KER-MSD-423\",\n\t\t\t\"User Id %s - Center Id %s mapping does not exist\"),\n\tUSER_AND_REG_CENTER_MAPPING_NOT_FOUND_EXCEPTION(\"KER-MSD-423\", \"User Id %s - Center Id %s mapping does not exist\"),\n\tREGISTRATION_CENTER_USER_MAPPING_EXCEPTION(\"KER-MSD-424\",\n\t\t\t\"Error occurred while mapping User to Registration Center \"),\n\tREGISTRATION_CENTER_USER_UNMAPPING_EXCEPTION(\"KER-MSD-425\",\n\t\t\t\"Error occurred while unmapping User to Registration Center \"),\n\tREGISTRATION_CENTER_USER_ALREADY_MAPPED_EXCEPTION(\"KER-MSD-426\", \"Registration Center-User mapping already exist\"),\n\tREGISTRATION_CENTER_USER_INSERT_EXCEPTION(\"KER-MSD-424\",\n\t\t\t\"Error occurred while mapping User to Registration Center\"),\n\tREGISTRATION_CENTER_NOT_FOUND(\"KER-MSD-428\",\n\t\t\t\"Cannot map as the Registration Center is Decommissioned State or does not exist\"),\n\tINVALIDE_USER_ZONE(\"KER-MSD-429\", \"Admin not authorized to map/un-map this User\"),\n\tINVALIDE_CENTER_ZONE(\"KER-MSD-430\", \"Admin not authorized to map/unmap to this Registration Center\"),\n\tINVALIDE_CENTER_USER_ZONE(\"KER-MSD-431\",\n\t\t\t\"User cannot be mapped/un-mappped to the Center as Center and User does not belong to the same Administrative Zone\"),\n\tUSER_NOT_FOUND(\"KER-MSD-427\", \"User is not map to any Zone\"), USER_MAPPED_REGISTRATION_CENTER(\"KER-MSD-432\",\n\t\t\t\"Cannot map the User as it is mapped to another Registration Center\");\n\n\tprivate final String errorCode;\n\tprivate final String errorMessage;\n\n\tprivate RegistrationCenterUserErrorCode(final String errorCode, final String errorMessage) {\n\t\tthis.errorCode = errorCode;\n\t\tthis.errorMessage = errorMessage;\n\t}\n\n\tpublic String getErrorCode() {\n\t\treturn errorCode;\n\t}\n\n\tpublic String getErrorMessage() {\n\t\treturn errorMessage;\n\t}\n\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/kernel-masterdata-service/src/main/java/io/mosip/kernel/masterdata/constant/RegistrationCenterUserMappingHistoryErrorCode.java", + "title": "RegistrationCenterUserMappingHistoryErrorCode.java", + "repo": "mosip/admin-services", + "file_path": "admin/kernel-masterdata-service/src/main/java/io/mosip/kernel/masterdata/constant/RegistrationCenterUserMappingHistoryErrorCode.java", + "language": "java", + "content": "package io.mosip.kernel.masterdata.constant;\n\n/**\n * Constants for Registration Center\n * \n * @author Dharmesh Khandelwal\n * @author Abhishek Kumar\n * @since 1.0.0\n *\n */\npublic enum RegistrationCenterUserMappingHistoryErrorCode {\n\n\tREGISTRATION_CENTER_USER_MACHINE_MAPPING_HISTORY_FETCH_EXCEPTION(\"KER-MSD-037\",\n\t\t\t\"Error occured while fetching Registration Center, Machine, User mappings\"),\n\tREGISTRATION_CENTER_USER_MACHINE_MAPPING_HISTORY_NOT_FOUND(\"KER-MSD-038\",\n\t\t\t\"Registration Center, Machine, User not found\"),\n\tDATE_TIME_PARSE_EXCEPTION(\"KER-MSD-039\", \"Invalid date format\");\n\n\t/**\n\t * The error code\n\t */\n\tprivate final String errorCode;\n\t/**\n\t * The error message\n\t */\n\tprivate final String errorMessage;\n\n\t/**\n\t * Constructor to set error code and message\n\t * \n\t * @param errorCode the error code\n\t * @param errorMessage the error message\n\t */\n\tprivate RegistrationCenterUserMappingHistoryErrorCode(final String errorCode, final String errorMessage) {\n\t\tthis.errorCode = errorCode;\n\t\tthis.errorMessage = errorMessage;\n\t}\n\n\t/**\n\t * Function to get error code\n\t * \n\t * @return {@link #errorCode}\n\t */\n\tpublic String getErrorCode() {\n\t\treturn errorCode;\n\t}\n\n\t/**\n\t * Function to get the error message\n\t * \n\t * @return {@link #errorMessage}r\n\t */\n\tpublic String getErrorMessage() {\n\t\treturn errorMessage;\n\t}\n\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/kernel-masterdata-service/src/main/java/io/mosip/kernel/masterdata/constant/RequestErrorCode.java", + "title": "RequestErrorCode.java", + "repo": "mosip/admin-services", + "file_path": "admin/kernel-masterdata-service/src/main/java/io/mosip/kernel/masterdata/constant/RequestErrorCode.java", + "language": "java", + "content": "package io.mosip.kernel.masterdata.constant;\n\n/**\n * Constants for Request input related errors.\n * \n * @author Bal Vikash Sharma\n * @since 1.0.0\n *\n */\npublic enum RequestErrorCode {\n\n\tREQUEST_DATA_NOT_VALID(\"KER-MSD-999\", \"Invalid request input\"),\n\tREQUEST_INVALID_COLUMN(\"KER-MSD-319\", \"Invalid request input\"),\n\tREQUEST_INVALID_SEC_LANG_ID(\"KER-MSD-999\", \"Invalid id passed for Secondary language\"),\n\tINTERNAL_SERVER_ERROR(\"KER-MSD-500\", \"Internal server error\"),\n\tALREADY_ACTIVE_OR_INACTIVE(\"KER-MSD-998\", \"Already activated or deactivated\"),\n\tREQUEST_INVALID_PRI_LANG_ID(\"KER-MSD-997\", \"Invalid id passed for Primary language\"),\n\tREQUEST_ID_ALREADY_EXIST(\"KER-MSD-996\", \"Id already exists\"),\n\tREQUEST_INVALID_SEC_LANG(\"KER-MSD-999\",\n\t\t\t\"Cannot create data in secondary language as data does not exist in primary language\"),\n\tREQUEST_CODE_ALREADY_EXIST(\"KER-MSD-994\", \"Code already exists\");\n\n\tprivate final String errorCode;\n\tprivate final String errorMessage;\n\n\tprivate RequestErrorCode(final String errorCode, final String errorMessage) {\n\t\tthis.errorCode = errorCode;\n\t\tthis.errorMessage = errorMessage;\n\t}\n\n\tpublic String getErrorCode() {\n\t\treturn errorCode;\n\t}\n\n\tpublic String getErrorMessage() {\n\t\treturn errorMessage;\n\t}\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/kernel-masterdata-service/src/main/java/io/mosip/kernel/masterdata/constant/SchemaErrorCode.java", + "title": "SchemaErrorCode.java", + "repo": "mosip/admin-services", + "file_path": "admin/kernel-masterdata-service/src/main/java/io/mosip/kernel/masterdata/constant/SchemaErrorCode.java", + "language": "java", + "content": "package io.mosip.kernel.masterdata.constant;\n\n/**\n * \n * @author anusha\n *\n */\npublic enum SchemaErrorCode {\n\t\n\tDYNAMIC_FIELD_FETCH_EXCEPTION(\"KER-SCH-001\", \"Error occurred while fetching dynamic fields\"),\n\tDYNAMIC_FIELD_INSERT_EXCEPTION(\"KER-SCH-002\", \"Error occurred while inserting dynamic field\"),\n\tDYNAMIC_FIELD_DELETE_EXCEPTION(\"KER-SCH-020\", \"Error occurred while deleting dynamic field\"),\n\n\tDYNAMIC_FIELD_NOT_FOUND_EXCEPTION(\"KER-SCH-003\", \"Dynamic field not found\"),\n\tDYNAMIC_FIELD_VALUE_NOT_FOUND_EXCEPTION(\"KER-SCH-021\", \"Dynamic field value not found\"),\t\n\tSCHEMA_FETCH_EXCEPTION(\"KER-SCH-004\", \"Error occurred while fetching Identity schema\"),\n\tSCHEMA_INSERT_EXCEPTION(\"KER-SCH-005\", \"Error occurred while inserting Identity schema\"),\n\tSCHEMA_UPDATE_EXCEPTION(\"KER-SCH-006\", \"Error occurred while updating Identity schema\"),\n\tSCHEMA_NOT_FOUND_EXCEPTION(\"KER-SCH-007\", \"Identity schema not found\"),\n\tNO_PUBLISHED_SCHEMA_FOUND_EXCEPTION(\"KER-SCH-008\", \"No published Identity schema\"),\n\tSCHEMA_ALREADY_PUBLISHED(\"KER-SCH-009\", \"Schema already published\"),\n\tSCHEMA_EFFECTIVE_FROM_IS_OLDER(\"KER-SCH-010\", \"Schema effective from date cannot be older\"),\n\t\n\tDYNAMIC_FIELD_UPDATE_EXCEPTION(\"KER-SCH-011\", \"Error occurred while updating dynamic field\"),\n\tDYNAMIC_FIELD_ALREADY_EXISTS(\"KER-SCH-012\", \"Dynamic field already exists\"),\n\tVALUE_PARSE_ERROR(\"KER-SCH-013\", \"Error while parsing json string\"),\n\tSCHEMA_JSON_EXCEPTION(\"KER-SCH-014\", \"Error while constructing schema json\"),\n\t\n\tSCHEMA_REQUEST_EXCEPTION(\"KER-SCH-015\", \"Bad Request Found\"),\n\t\n\tDUPLICATE_FIELD_EXCEPTION(\"KER-SCH-016\", \"Duplicate fields found %s\"),\n\tSUB_TYPE_REQUIRED_EXCEPTION(\"KER-SCH-017\", \"SubType is required for field %s\"),\n\tBIO_ATTRIBUTES_REQUIRED_EXCEPTION(\"KER-SCH-018\", \"BioAttributes are required for field %s\"),\n\tBIO_ATTRIBUTES_DUPLICATED_EXCEPTION(\"KER-SCH-019\", \"Same BioAttributes used in field with same SubType : %s\"),\n\n\tPUBLISHED_SCHEMA_EXCEPTION(\"KER-SCH-022\", \"Published identity schema can't be deleted\"),\n\n\tDYNAMIC_FIELD_VALUE_JSON_INVALID(\"KER-DYN-001\", \"Dynamic field is invalid, must contain code and value keys\");\n\n\tprivate final String errorCode;\n\tprivate final String errorMessage;\n\n\tprivate SchemaErrorCode(String errorCode, String errorMessage) {\n\t\tthis.errorCode = errorCode;\n\t\tthis.errorMessage = errorMessage;\n\t}\n\n\tpublic String getErrorCode() {\n\t\treturn this.errorCode;\n\t}\n\n\tpublic String getErrorMessage() {\n\t\treturn this.errorMessage;\n\t}\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/kernel-masterdata-service/src/main/java/io/mosip/kernel/masterdata/constant/TemplateErrorCode.java", + "title": "TemplateErrorCode.java", + "repo": "mosip/admin-services", + "file_path": "admin/kernel-masterdata-service/src/main/java/io/mosip/kernel/masterdata/constant/TemplateErrorCode.java", + "language": "java", + "content": "package io.mosip.kernel.masterdata.constant;\n\n/**\n * Error code for Template\n * \n * @author Neha\n * @since 1.0.0\n */\npublic enum TemplateErrorCode {\n\n\tTEMPLATE_FETCH_EXCEPTION(\"KER-MSD-045\", \"Error ocurred while fetching Templates\"),\n\tTEMPLATE_INSERT_EXCEPTION(\"KER-MSD-145\", \"Exception during inserting data into db\"),\n\tTEMPLATE_NOT_FOUND(\"KER-MSD-046\", \"Template not found.\"),\n\tTEMPLATE_UPDATE_EXCEPTION(\"KER-MSD-095\", \"Error occured while updating Template\"),\n\tTEMPLATE_DELETE_EXCEPTION(\"KER-MSD-096\", \"Error occured while deleting Template\");\n\n\tprivate final String errorCode;\n\tprivate final String errorMessage;\n\n\tprivate TemplateErrorCode(final String errorCode, final String errorMessage) {\n\t\tthis.errorCode = errorCode;\n\t\tthis.errorMessage = errorMessage;\n\t}\n\n\tpublic String getErrorCode() {\n\t\treturn errorCode;\n\t}\n\n\tpublic String getErrorMessage() {\n\t\treturn errorMessage;\n\t}\n\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/kernel-masterdata-service/src/main/java/io/mosip/kernel/masterdata/constant/TemplateFileFormatErrorCode.java", + "title": "TemplateFileFormatErrorCode.java", + "repo": "mosip/admin-services", + "file_path": "admin/kernel-masterdata-service/src/main/java/io/mosip/kernel/masterdata/constant/TemplateFileFormatErrorCode.java", + "language": "java", + "content": "package io.mosip.kernel.masterdata.constant;\n\n/**\n * Error code for TemplateFileFormat\n * \n * @author Neha Sinha\n * @author Megha Tanga\n * @since 1.0.0\n */\npublic enum TemplateFileFormatErrorCode {\n\n\tTEMPLATE_FILE_FORMAT_INSERT_EXCEPTION(\"KER-MSD-232\", \"Error occurred while inserting Template File Format details\"),\n\tTEMPLATE_FILE_FORMAT_NOT_FOUND(\"KER-MSD-046\", \"Template not found.\"),\n\tTEMPLATE_FILE_FORMAT_UPDATE_EXCEPTION(\"KER-MSD-093\", \"Error occurred while updating Template\"),\n\tTEMPLATE_FILE_FORMAT_DELETE_EXCEPTION(\"KER-MSD-236\", \"Error occurred while deleting Template\"),\n\tTEMPLATE_FILE_FORMAT_DELETE_DEPENDENCY_EXCEPTION(\"KER-MSD-125\", \"Cannot delete dependency found.\"),\n\tTEMPLATE_FILE_FORMAT_FETCH_EXCEPTION(\"KER-MSD-246\", \"Error occurred while fetching Template File Format\"),\n\tTEMPLATE_FILE_FORMAT_UPDATE_MAPPING_EXCEPTION(\"KER-MSD-237\",\n\t\t\t\"Mapping exist before deactivating remove the mapping\");\n\n\tprivate final String errorCode;\n\tprivate final String errorMessage;\n\n\tprivate TemplateFileFormatErrorCode(final String errorCode, final String errorMessage) {\n\t\tthis.errorCode = errorCode;\n\t\tthis.errorMessage = errorMessage;\n\t}\n\n\tpublic String getErrorCode() {\n\t\treturn errorCode;\n\t}\n\n\tpublic String getErrorMessage() {\n\t\treturn errorMessage;\n\t}\n\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/kernel-masterdata-service/src/main/java/io/mosip/kernel/masterdata/constant/TemplateTypeErrorCode.java", + "title": "TemplateTypeErrorCode.java", + "repo": "mosip/admin-services", + "file_path": "admin/kernel-masterdata-service/src/main/java/io/mosip/kernel/masterdata/constant/TemplateTypeErrorCode.java", + "language": "java", + "content": "package io.mosip.kernel.masterdata.constant;\n\n/**\n * \n * @author Uday Kumar\n * @author Megha Tanga\n * @since 1.0.0\n *\n */\n\npublic enum TemplateTypeErrorCode {\n\tTEMPLATE_TYPE_INSERT_EXCEPTION(\"KER-MSD-072\", \"Error occurred while inserting Template Type details into db\"),\n\tTEMPLATE_TYPE_FETCH_EXCEPTION(\"KER-MSD-247\", \"Error occurred while fetching Template Type\"),\n\tTEMPLATE_TYPE_NOT_FOUND_EXCEPTION(\"KER-MSD-249\", \"Template Type not Found\");\n\n\tprivate final String errorCode;\n\tprivate final String errorMessage;\n\n\tprivate TemplateTypeErrorCode(final String errorCode, final String errorMessage) {\n\t\tthis.errorCode = errorCode;\n\t\tthis.errorMessage = errorMessage;\n\t}\n\n\tpublic String getErrorCode() {\n\t\treturn errorCode;\n\t}\n\n\tpublic String getErrorMessage() {\n\t\treturn errorMessage;\n\t}\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/kernel-masterdata-service/src/main/java/io/mosip/kernel/masterdata/constant/TitleErrorCode.java", + "title": "TitleErrorCode.java", + "repo": "mosip/admin-services", + "file_path": "admin/kernel-masterdata-service/src/main/java/io/mosip/kernel/masterdata/constant/TitleErrorCode.java", + "language": "java", + "content": "package io.mosip.kernel.masterdata.constant;\n\n/**\n * Enum for error codes for fetching titles from master data\n * \n * @author Sidhant Agarwal\n * @since 1.0.0\n *\n */\npublic enum TitleErrorCode {\n\n\tTITLE_FETCH_EXCEPTION(\"KER-MSD-047\", \"Error occured while fetching Titles\"),\n\tTITLE_NOT_FOUND(\"KER-MSD-048\", \"Title not found\"),\n\tTITLE_INSERT_EXCEPTION(\"KER-MSD-708\", \"Error occurred while inserting Title details\t\"),\n\tTITLE_UPDATE_EXCEPTION(\"KER-MSD-103\", \"Error occurred while updating Title details\"),\n\tTITLE_DELETE_EXCEPTION(\"KER-MSD-104\", \"Error occurred while deleting Title details\");\n\n\tprivate final String errorCode;\n\tprivate final String errorMessage;\n\n\tprivate TitleErrorCode(final String errorCode, final String errorMessage) {\n\t\tthis.errorCode = errorCode;\n\t\tthis.errorMessage = errorMessage;\n\t}\n\n\tpublic String getErrorCode() {\n\t\treturn errorCode;\n\t}\n\n\tpublic String getErrorMessage() {\n\t\treturn errorMessage;\n\t}\n\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/kernel-masterdata-service/src/main/java/io/mosip/kernel/masterdata/constant/UISpecErrorCode.java", + "title": "UISpecErrorCode.java", + "repo": "mosip/admin-services", + "file_path": "admin/kernel-masterdata-service/src/main/java/io/mosip/kernel/masterdata/constant/UISpecErrorCode.java", + "language": "java", + "content": "package io.mosip.kernel.masterdata.constant;\n\npublic enum UISpecErrorCode {\n\n\tUI_SPEC_FETCH_EXCEPTION(\"KER-UIS-001\", \"Error occurred while fetching UI spec\"),\n\tUI_SPEC_INSERT_EXCEPTION(\"KER-UIS-002\", \"Error occurred while inserting UI spec\"),\n\tUI_SPEC_UPDATE_EXCEPTION(\"KER-UIS-003\", \"Error occurred while updating UI spec\"),\n\tUI_SPEC_NOT_FOUND_EXCEPTION(\"KER-UIS-004\", \"UI spec not found\"),\n\tNO_PUBLISHED_UI_SPEC_FOUND_EXCEPTION(\"KER-UIS-005\", \"No published UI spec\"),\n\tUI_SPEC_ALREADY_PUBLISHED(\"KER-UIS-006\", \"UI spec already published\"),\n\tUI_SPEC_EFFECTIVE_FROM_IS_OLDER(\"UIS-UIS-007\", \"UI spec effective from date cannot be older\"),\t\n\tUI_SPEC_VALUE_PARSE_ERROR(\"KER-UIS-008\", \"Error while parsing json string\"),\n\tIDENTITY_SPEC_NOT_FOUND_ERROR(\"KER-UIS-009\", \"Identity schema not found\"),\n\tUI_SPEC_DUPLICATE_ENTRY(\"KER-UIS-010\",\"Draft UI spec entry already exists. Kindly update the existing UI spec draft\");\n\t\n\n\tprivate final String errorCode;\n\tprivate final String errorMessage;\n\n\tprivate UISpecErrorCode(String errorCode, String errorMessage) {\n\t\tthis.errorCode = errorCode;\n\t\tthis.errorMessage = errorMessage;\n\t}\n\n\tpublic String getErrorCode() {\n\t\treturn this.errorCode;\n\t}\n\n\tpublic String getErrorMessage() {\n\t\treturn this.errorMessage;\n\t}\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/kernel-masterdata-service/src/main/java/io/mosip/kernel/masterdata/constant/UserDetailsErrorCode.java", + "title": "UserDetailsErrorCode.java", + "repo": "mosip/admin-services", + "file_path": "admin/kernel-masterdata-service/src/main/java/io/mosip/kernel/masterdata/constant/UserDetailsErrorCode.java", + "language": "java", + "content": "package io.mosip.kernel.masterdata.constant;\n\n/**\n * @author Sidhant Agarwal\n * @since 1.0.0\n *\n */\npublic enum UserDetailsErrorCode {\n\tINVALID_EFFECTIVE_DATE_TIME_FORMATE_EXCEPTION(\"KER-USR-002\", \"Invalid Date Format\"),\n\tUSER_FETCH_EXCEPTION(\"KER-USR-004\", \"Error occurred while retrieving User details\"),\n\tUSER_CREATION_EXCEPTION(\"KER-USR-005\", \"User creation failed\"),\n\tUSER_UNMAP_EXCEPTION(\"KER-USR-006\", \"User unmap failed\"),\n\tUSER_NOT_FOUND(\"KER-USR-007\", \"User Center mapping not found\"),\n\tZONE_USER_MAPPING_NOT_FOUND(\"KER-USR-008\", \"Zone user mapping not exists or not active\"),\n\tUSER_DETAILS_PARSE_ERROR(\"KER-USR-009\",\"Error occured while parsing auth service userdetails response\"),\n\tZONE_USER_MAPPING_ERROR(\"KER-USR-010\",\"Error occured while zone user mapping\"),\n\tZONE_USER_MAPPING_NOT_ACTIVE(\"KER-USR-025\",\"Kindly activate user-zone mapping before activating user-center\"),\n\tCENTER_LANG_MAPPING_NOT_EXISTS(\"KER-USR-012\",\"Reg center is not exists for given language\"),\n\tUSER_ALREADY_EXISTS(\"KER-USR-013\", \"User already exists\"),\n\tINVALID_ZONE(\"KER-USR-014\", \"Admin not authorized to access for this Zone\"),\n\tINVALID_ZONE_MAPPING(\"KER-USR-015\", \"Provided center zone is not part of user zone\");\n\n\tprivate final String errorCode;\n\tprivate final String errorMessage;\n\n\tprivate UserDetailsErrorCode(final String errorCode, final String errorMessage) {\n\t\tthis.errorCode = errorCode;\n\t\tthis.errorMessage = errorMessage;\n\t}\n\n\tpublic String getErrorCode() {\n\t\treturn errorCode;\n\t}\n\n\tpublic String getErrorMessage() {\n\t\treturn errorMessage;\n\t}\n\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/kernel-masterdata-service/src/main/java/io/mosip/kernel/masterdata/constant/UserDetailsHistoryErrorCode.java", + "title": "UserDetailsHistoryErrorCode.java", + "repo": "mosip/admin-services", + "file_path": "admin/kernel-masterdata-service/src/main/java/io/mosip/kernel/masterdata/constant/UserDetailsHistoryErrorCode.java", + "language": "java", + "content": "package io.mosip.kernel.masterdata.constant;\n\n/**\n * @author Sidhant Agarwal\n * @since 1.0.0\n *\n */\npublic enum UserDetailsHistoryErrorCode {\n\tINVALID_EFFECTIVE_DATE_TIME_FORMATE_EXCEPTION(\"KER-USR-002\", \"Invalid Date Format\"),\n\tUSER_HISTORY_FETCH_EXCEPTION(\"KER-USR-001\", \"Error occurred while retrieving User History\"),\n\tUSER_HISTORY_NOT_FOUND_EXCEPTION(\"KER-USR-003\", \"User History not found\"), USER_HISTORY_CREATE_FAILED(\"KER-USR-015\", \"User History creation failed\");\n\n\tprivate final String errorCode;\n\tprivate final String errorMessage;\n\n\tprivate UserDetailsHistoryErrorCode(final String errorCode, final String errorMessage) {\n\t\tthis.errorCode = errorCode;\n\t\tthis.errorMessage = errorMessage;\n\t}\n\n\tpublic String getErrorCode() {\n\t\treturn errorCode;\n\t}\n\n\tpublic String getErrorMessage() {\n\t\treturn errorMessage;\n\t}\n\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/kernel-masterdata-service/src/main/java/io/mosip/kernel/masterdata/constant/ValidDocumentErrorCode.java", + "title": "ValidDocumentErrorCode.java", + "repo": "mosip/admin-services", + "file_path": "admin/kernel-masterdata-service/src/main/java/io/mosip/kernel/masterdata/constant/ValidDocumentErrorCode.java", + "language": "java", + "content": "package io.mosip.kernel.masterdata.constant;\n\n/**\n * Constant for valid document.\n * \n * @author Ritesh Sinha\n * @author Neha Sinha\n * \n * @since 1.0.0\n *\n */\npublic enum ValidDocumentErrorCode {\n\n\tVALID_DOCUMENT_INSERT_EXCEPTION(\"KER-MSD-212\", \"Exception during inserting data into DB\"),\n\tVALID_DOCUMENT_NOT_FOUND_EXCEPTION(\"KER-MSD-016\", \"Valid document not found\"),\n\tVALID_DOCUMENT_DELETE_EXCEPTION(\"KER-MSD-113\",\n\t\t\t\"Error occurred while deleting a mapping of Document Category and Document Type details\"),\n\tVALID_DOCUMENT_FETCH_EXCEPTION(\"KER-MSD-205\",\n\t\t\t\"Error occurred while fetching Document Categories and Document Types\"),\n\tVALID_DOCUMENT_ALREADY_MAPPED_EXCEPTION(\"KER-MSD-360\",\n\t\t\t\"Document Type is already mapped to the received Document Category\"),\n\tDOC_CATEGORY_AND_DOC_TYPE_MAPPING_NOT_FOUND_EXCEPTION(\"KER-MSD-361\",\n\t\t\t\"Document Category Code %s - Document Type %s Mapping does not exist\"),\n\tVALID_DOCUMENT_ALREADY_UNMAPPED_EXCEPTION(\"KER-MSD-271\",\n\t\t\t\"Document Type is already unmapped from the received Document Category\"),\n\tDOCUMENT_CATEGORY_NOT_FOUND(\"KER-MSD-355\", \"No Document Category found for the Document Category Code Received\");\n\n\t/**\n\t * The errorCode.\n\t */\n\tprivate final String errorCode;\n\n\t/**\n\t * The errorMessage.\n\t */\n\tprivate final String errorMessage;\n\n\t/**\n\t * Constructor for ValidDocumentErrorCode.\n\t * \n\t * @param errorCode the error code.\n\t * @param errorMessage the error message.\n\t */\n\tprivate ValidDocumentErrorCode(final String errorCode, final String errorMessage) {\n\t\tthis.errorCode = errorCode;\n\t\tthis.errorMessage = errorMessage;\n\t}\n\n\t/**\n\t * Getter for error code.\n\t * \n\t * @return the error code.\n\t */\n\tpublic String getErrorCode() {\n\t\treturn errorCode;\n\t}\n\n\t/**\n\t * Getter for error message\n\t * \n\t * @return the error message.\n\t */\n\tpublic String getErrorMessage() {\n\t\treturn errorMessage;\n\t}\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/kernel-masterdata-service/src/main/java/io/mosip/kernel/masterdata/constant/ValidLangCodeErrorCode.java", + "title": "ValidLangCodeErrorCode.java", + "repo": "mosip/admin-services", + "file_path": "admin/kernel-masterdata-service/src/main/java/io/mosip/kernel/masterdata/constant/ValidLangCodeErrorCode.java", + "language": "java", + "content": "package io.mosip.kernel.masterdata.constant;\n\n/**\n * Constants for valid language code\n * \n * @author Neha\n * @since 1.0.0\n *\n */\npublic enum ValidLangCodeErrorCode {\n\n\tLANG_CODE_VALIDATION_EXCEPTION(\"KER-MSD-999\", \"Error occured while validating Language Code\");\n\n\tprivate String errorCode;\n\tprivate String errorMessage;\n\n\tprivate ValidLangCodeErrorCode(String errorCode, String errorMessage) {\n\t\tthis.errorCode = errorCode;\n\t\tthis.errorMessage = errorMessage;\n\t}\n\n\tpublic String getErrorCode() {\n\t\treturn errorCode;\n\t}\n\n\tpublic String getErrorMessage() {\n\t\treturn errorMessage;\n\t}\n\n}" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/kernel-masterdata-service/src/main/java/io/mosip/kernel/masterdata/constant/ValidationErrorCode.java", + "title": "ValidationErrorCode.java", + "repo": "mosip/admin-services", + "file_path": "admin/kernel-masterdata-service/src/main/java/io/mosip/kernel/masterdata/constant/ValidationErrorCode.java", + "language": "java", + "content": "package io.mosip.kernel.masterdata.constant;\n\n/**\n * Search filter validation error constants\n * \n * @author Abhishek Kumar\n * @author Megha Tanga\n * @since 1.0.0\n */\npublic enum ValidationErrorCode {\n\tNO_FILTER_FOUND(\"KER-MSD-316\", \"Column %s doesn't support filter\"),\n\tCOLUMN_DOESNT_EXIST(\"KER-MSD-317\", \"Column %s doesn't exist for the searched entity\"),\n\tFILTER_NOT_SUPPORTED(\"KER-MSD-318\", \"Column %s doesn't support filter type %s\"),\n\tINVALID_COLUMN_VALUE(\"KER-MSD-272\", \"Column value is null or empty\"),\n\tNO_FILTER_COLUMN_FOUND(\"KER-MSD-322\", \"Filter Type cannot be empty or null\"),\n\tFILTER_COLUMN_DOESNT_EXIST(\"KER-MSD-323\", \"Filter Type for column %s is not supported\"),\n\tFILTER_COLUMN_NOT_SUPPORTED(\"KER-MSD-324\", \"Received Filter Type not supported\"),\n\tCOLUMN_DOESNT_EXIST_FILTER(\"KER-MSD-348\", \"Received column does not support filter\"),\n\tCONSTRAINT_VIOLATION(\"KER-MSD-709\", \"Contraint Violation-\"),\n\tINVALID_COLUMN_NAME(\"KER-MSD-325\", \"Invalid Column Name passed\");\n\n\t/**\n\t * Error Code\n\t */\n\tprivate final String errorCode;\n\t/**\n\t * Error Message\n\t */\n\tprivate final String errorMessage;\n\n\t/**\n\t * Constructor to initialize\n\t * \n\t * @param errorCode validation error code\n\t * @param errorMessage validation error message\n\t */\n\tprivate ValidationErrorCode(final String errorCode, final String errorMessage) {\n\t\tthis.errorCode = errorCode;\n\t\tthis.errorMessage = errorMessage;\n\t}\n\n\t/**\n\t * Method to fetch error code\n\t * \n\t * @return error Code\n\t */\n\tpublic String getErrorCode() {\n\t\treturn errorCode;\n\t}\n\n\t/**\n\t * Method to fetch error message\n\t * \n\t * @return error message\n\t */\n\tpublic String getErrorMessage() {\n\t\treturn errorMessage;\n\t}\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/.github/workflows/chart-lint-publish.yml", + "title": "chart-lint-publish.yml", + "repo": "mosip/admin-services", + "file_path": ".github/workflows/chart-lint-publish.yml", + "language": "yml", + "content": "name: Validate / Publish helm charts\n\non:\n release:\n types: [published]\n pull_request:\n types: [opened, reopened, synchronize]\n paths:\n - 'helm/**'\n workflow_dispatch:\n inputs:\n IGNORE_CHARTS:\n description: 'Provide list of charts to be ignored separated by pipe(|)'\n required: false\n default: '\"\"'\n type: string\n CHART_PUBLISH:\n description: 'Chart publishing to gh-pages branch'\n required: false\n default: 'NO'\n type: string\n options:\n - YES\n - NO\n INCLUDE_ALL_CHARTS:\n description: 'Include all charts for Linting/Publishing (YES/NO)'\n required: false\n default: 'NO'\n type: string\n options:\n - YES\n - NO\n push:\n branches:\n - '!release-branch'\n - '!master'\n - 1.*\n - 0.*\n - develop\n - release*\n paths:\n - 'helm/**'\n\njobs:\n chart-lint-publish:\n uses: mosip/kattu/.github/workflows/chart-lint-publish.yml@master\n with:\n CHARTS_DIR: ./helm\n CHARTS_URL: https://mosip.github.io/mosip-helm\n REPOSITORY: mosip-helm\n BRANCH: gh-pages\n INCLUDE_ALL_CHARTS: \"${{ inputs.INCLUDE_ALL_CHARTS || 'NO' }}\"\n IGNORE_CHARTS: \"${{ inputs.IGNORE_CHARTS || '\\\"\\\"' }}\"\n CHART_PUBLISH: \"${{ inputs.CHART_PUBLISH || 'YES' }}\"\n LINTING_CHART_SCHEMA_YAML_URL: \"https://raw.githubusercontent.com/mosip/kattu/master/.github/helm-lint-configs/chart-schema.yaml\"\n LINTING_LINTCONF_YAML_URL: \"https://raw.githubusercontent.com/mosip/kattu/master/.github/helm-lint-configs/lintconf.yaml\"\n LINTING_CHART_TESTING_CONFIG_YAML_URL: \"https://raw.githubusercontent.com/mosip/kattu/master/.github/helm-lint-configs/chart-testing-config.yaml\"\n LINTING_HEALTH_CHECK_SCHEMA_YAML_URL: \"https://raw.githubusercontent.com/mosip/kattu/master/.github/helm-lint-configs/health-check-schema.yaml\"\n DEPENDENCIES: \"mosip,https://mosip.github.io/mosip-helm;\"\n secrets:\n TOKEN: ${{ secrets.ACTION_PAT }}\n SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK }}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/.github/workflows/push-trigger.yml", + "title": "push-trigger.yml", + "repo": "mosip/admin-services", + "file_path": ".github/workflows/push-trigger.yml", + "language": "yml", + "content": "name: Maven Package upon a push\n\non:\n release:\n types: [published]\n pull_request:\n types: [opened, reopened, synchronize]\n workflow_dispatch:\n inputs:\n message:\n description: 'Message for manually triggering'\n required: false\n default: 'Triggered for Updates'\n type: string\n push:\n branches:\n - '!release-branch'\n - release-1*\n - master\n - 1.*\n - develop*\n - MOSIP*\n\njobs:\n build-maven-admin-services:\n uses: mosip/kattu/.github/workflows/maven-build.yml@master-java21\n with:\n SERVICE_LOCATION: ./admin\n BUILD_ARTIFACT: admin\n secrets:\n OSSRH_USER: ${{ secrets.OSSRH_USER }}\n OSSRH_SECRET: ${{ secrets.OSSRH_SECRET }}\n OSSRH_TOKEN: ${{ secrets.OSSRH_TOKEN }}\n GPG_SECRET: ${{ secrets.GPG_SECRET }}\n SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK }}\n\n publish_to_nexus:\n if: \"${{ !contains(github.ref, 'master') && github.event_name != 'pull_request' && github.event_name != 'release' && github.event_name != 'prerelease' && github.event_name != 'publish' }}\"\n needs: build-maven-admin-services\n uses: mosip/kattu/.github/workflows/maven-publish-to-nexus.yml@master-java21\n with:\n SERVICE_LOCATION: ./admin\n secrets:\n OSSRH_USER: ${{ secrets.OSSRH_USER }}\n OSSRH_SECRET: ${{ secrets.OSSRH_SECRET }}\n OSSRH_URL: ${{ secrets.OSSRH_CENTRAL_URL }}\n OSSRH_TOKEN: ${{ secrets.OSSRH_TOKEN }}\n GPG_SECRET: ${{ secrets.GPG_SECRET }}\n SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK }}\n\n build-dockers:\n needs: build-maven-admin-services\n strategy:\n matrix:\n include:\n - SERVICE_LOCATION: 'admin/admin-service'\n SERVICE_NAME: 'admin-service'\n BUILD_ARTIFACT: 'admin'\n - SERVICE_LOCATION: 'admin/hotlist-service'\n SERVICE_NAME: 'hotlist-service'\n BUILD_ARTIFACT: 'admin'\n - SERVICE_LOCATION: 'admin/kernel-masterdata-service'\n SERVICE_NAME: 'kernel-masterdata-service'\n BUILD_ARTIFACT: 'admin'\n - SERVICE_LOCATION: 'admin/kernel-syncdata-service'\n SERVICE_NAME: 'kernel-syncdata-service'\n BUILD_ARTIFACT: 'admin'\n fail-fast: false\n name: ${{ matrix.SERVICE_NAME }}\n uses: mosip/kattu/.github/workflows/docker-build.yml@master-java21\n with:\n SERVICE_LOCATION: ${{ matrix.SERVICE_LOCATION }}\n SERVICE_NAME: ${{ matrix.SERVICE_NAME }}\n BUILD_ARTIFACT: ${{ matrix.BUILD_ARTIFACT }}\n secrets:\n DEV_NAMESPACE_DOCKER_HUB: ${{ secrets.DEV_NAMESPACE_DOCKER_HUB }}\n ACTOR_DOCKER_HUB: ${{ secrets.ACTOR_DOCKER_HUB }}\n RELEASE_DOCKER_HUB: ${{ secrets.RELEASE_DOCKER_HUB }}\n SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK }}\n\n sonar_analysis:\n needs: build-maven-admin-services\n if: \"${{ github.event_name != 'pull_request' }}\"\n uses: mosip/kattu/.github/workflows/maven-sonar-analysis.yml@master-java21\n with:\n SERVICE_LOCATION: ./admin\n secrets:\n SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}\n ORG_KEY: ${{ secrets.ORG_KEY }}\n OSSRH_USER: ${{ secrets.OSSRH_USER }}\n OSSRH_SECRET: ${{ secrets.OSSRH_SECRET }}\n OSSRH_TOKEN: ${{ secrets.OSSRH_TOKEN }}\n GPG_SECRET: ${{ secrets.GPG_SECRET }}\n SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK }}\n\n build-maven-apitest-masterdata:\n uses: mosip/kattu/.github/workflows/maven-build.yml@master-java21\n with:\n SERVICE_LOCATION: ./api-test\n BUILD_ARTIFACT: apitest-masterdata\n secrets:\n OSSRH_USER: ${{ secrets.OSSRH_USER }}\n OSSRH_SECRET: ${{ secrets.OSSRH_SECRET }}\n OSSRH_TOKEN: ${{ secrets.OSSRH_TOKEN }}\n GPG_SECRET: ${{ secrets.GPG_SECRET }}\n SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK }}\n\n publish_to_nexus_apitest:\n if: \"${{ !contains(github.ref, 'master') && github.event_name != 'pull_request' && github.event_name != 'release' && github.event_name != 'prerelease' && github.event_name != 'publish' }}\"\n needs: build-maven-apitest-masterdata\n uses: mosip/kattu/.github/workflows/maven-publish-to-nexus.yml@master-java21\n with:\n SERVICE_LOCATION: ./api-test\n secrets:\n OSSRH_USER: ${{ secrets.OSSRH_USER }}\n OSSRH_SECRET: ${{ secrets.OSSRH_SECRET }}\n OSSRH_URL: ${{ secrets.OSSRH_CENTRAL_URL }}\n OSSRH_TOKEN: ${{ secrets.OSSRH_TOKEN }}\n GPG_SECRET: ${{ secrets.GPG_SECRET }}\n SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK }}\n\n build-apitest-masterdata-local:\n needs: build-maven-apitest-masterdata\n runs-on: ubuntu-latest\n env:\n NAMESPACE: ${{ secrets.dev_namespace_docker_hub }}\n SERVICE_NAME: apitest-masterdata\n SERVICE_LOCATION: api-test\n BUILD_ARTIFACT: apitest-masterdata-local\n steps:\n - uses: actions/checkout@v3\n - name: Set up JDK 21\n uses: actions/setup-java@v3\n with:\n distribution: 'temurin'\n java-version: 21\n server-id: ossrh # Value of the distributionManagement/repository/id field of the pom.xml\n settings-path: ${{ github.workspace }} # location for the settings.xml file\n\n - name: Setup the settings file for ossrh server\n run: echo \" ossrh ${{secrets.ossrh_user}} ${{secrets.ossrh_secret}} ossrh true gpg2 ${{secrets.gpg_secret}} allow-snapshots true snapshots-repo https://oss.sonatype.org/content/repositories/snapshots false true releases-repo https://oss.sonatype.org/service/local/staging/deploy/maven2 true false sonar . https://sonarcloud.io false \" > $GITHUB_WORKSPACE/settings.xml\n\n - name: Build Automationtests with Maven\n run: |\n cd ${{ env.SERVICE_LOCATION}}\n mvn clean package -s $GITHUB_WORKSPACE/settings.xml\n\n - name: Copy configuration files to target directory.\n run: |\n cp -r ${{ env.SERVICE_LOCATION}}/target/classes/config ${{ env.SERVICE_LOCATION}}/target/config\n cp -r ${{ env.SERVICE_LOCATION}}/testNgXmlFiles ${{ env.SERVICE_LOCATION}}/target/testNgXmlFiles\n\n - name: Ready the springboot artifacts\n if: ${{ !contains(github.ref, 'master') || !contains(github.ref, 'main') }}\n run: |\n ## FIND JARS & COPY ONLY EXECUTABLE JARs STORED UNDER TARGET DIRECTORY \n find ${{ env.SERVICE_LOCATION }} -path '*/target/*' -exec zip ${{ env.BUILD_ARTIFACT }}.zip {} +\n\n - name: Upload the springboot jars\n if: ${{ !contains(github.ref, 'master') || !contains(github.ref, 'main') }}\n uses: actions/upload-artifact@v4\n with:\n name: ${{ env.BUILD_ARTIFACT }}\n path: ${{ env.BUILD_ARTIFACT }}.zip\n\n - uses: 8398a7/action-slack@v3\n with:\n status: ${{ job.status }}\n fields: repo,message,author,commit,workflow,job # selectable (default: repo,message)\n env:\n SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }} # required\n if: failure() # Pick up events even if the job fails or is canceled.\n\n build-dockers_apitest_masterdata:\n needs: build-apitest-masterdata-local\n strategy:\n matrix:\n include:\n - SERVICE_LOCATION: 'api-test'\n SERVICE_NAME: 'apitest-masterdata'\n BUILD_ARTIFACT: 'apitest-masterdata-local'\n ONLY_DOCKER: true\n fail-fast: false\n name: ${{ matrix.SERVICE_NAME }}\n uses: mosip/kattu/.github/workflows/docker-build.yml@master-java21\n with:\n SERVICE_LOCATION: ${{ matrix.SERVICE_LOCATION }}\n SERVICE_NAME: ${{ matrix.SERVICE_NAME }}\n BUILD_ARTIFACT: ${{ matrix.BUILD_ARTIFACT }}\n ONLY_DOCKER: ${{ matrix.ONLY_DOCKER }}\n secrets:\n DEV_NAMESPACE_DOCKER_HUB: ${{ secrets.DEV_NAMESPACE_DOCKER_HUB }}\n ACTOR_DOCKER_HUB: ${{ secrets.ACTOR_DOCKER_HUB }}\n RELEASE_DOCKER_HUB: ${{ secrets.RELEASE_DOCKER_HUB }}\n SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK }}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/.travis.yml", + "title": ".travis.yml", + "repo": "mosip/admin-services", + "file_path": ".travis.yml", + "language": "yml", + "content": "language: java\njdk: openjdk11\ninstall: true\ncache:\n directories:\n - $HOME/.m2\nscript: cd admin && mvn install -DskipTests=false -Dgpg.skip=true -Dmaven.javadoc.skip=true -B -V\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/pom.xml", + "title": "pom.xml", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/pom.xml", + "language": "xml", + "content": "\n\n\t4.0.0\n\t\n\t\tio.mosip.admin\n\t\tadmin-parent\n\t\t1.3.0\n\t\n\tadmin-service\n\tadmin-service\n\t1.3.0\n\thttp://maven.apache.org\n\tjar\n\t\n\t\tUTF-8\n\t\t1.8.0\n\t\t1.3.0\n\t\t1.3.0\n\t\t21\n\t\t21\n\t\t3.8.0\n\t\t2.22.0\n\t\t3.0.2\n\t\t3.1.0\n\t\t0.8.11\n\t\t3.7.0.1746\n\t\t2.3\n\t\t2.22.0\n\t\t1.3.0\n\t\t1.3.0\n\t\t3.1.1\n\t\t0.7.0\n\t\n\t\n\t\t\n\t\t\t\n\t\t\t\tio.mosip.kernel\n\t\t\t\tkernel-bom\n\t\t\t\t${kernel.core.version}\n\t\t\t\tpom\n\t\t\t\timport\n\t\t\t\n\t\t\t\n\n\t\t\n\t\n\t\n\t\t\n\t\t\tio.mosip.kernel\n\t\t\tkernel-core\n\t\t\t${kernel.core.version}\n\t\t\t\n\t\t\t\t\n\t\t\t\t\torg.apache.logging.log4j\n\t\t\t\t\tlog4j-to-slf4j\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\torg.apache.logging.log4j\n\t\t\t\t\tlog4j-api\n\t\t\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t\torg.projectlombok\n\t\t\tlombok\n\t\t\tcompile\n\t\t\n\t\t\n\t\t commons-io\n\t\t commons-io\n\t\t\n\n\t\t\n\t\t\n\t\t\torg.apache.poi\n\t\t\tpoi-ooxml\n\t\t\t5.2.5\n\t\t\n\t\t\n\t\t org.springframework.batch.extensions\n\t\t spring-batch-excel\n\t\t 0.1.0\n\t\t\n\t\n\t \n\t\t\tio.mosip.kernel\n\t\t\tkernel-authcodeflowproxy-api\n\t\t\t${mosip.openid.bridge.version}\n\t\t\t\n\t\t\t\t\n\t\t\t\t\tio.mosip.kernel\n\t\t\t\t\tkernel-core\n\t\t\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t\tio.mosip.kernel\n\t\t\tkernel-dataaccess-hibernate\n\t\t\t${kernel.core.version}\n\t\t\n\t\t\n\t org.springframework.boot\n\t spring-boot-starter-batch\n\t \n\t\t\n\t\t\torg.postgresql\n\t\t\tpostgresql\n\t\t\t42.7.2\n\t\t\n\t\t\n\t\t\n\t\t javax.xml.bind\n\t\t jaxb-api\n\t\t \n\t\t \n \t\tcom.google.code.gson\n \t\tgson\n \t\t2.10.1\n\t\t\n\t\t\n\t\t\torg.springframework.boot\n\t\t\tspring-boot-starter-security\n\t\t\n\t\t\n\t\t\torg.springframework.security\n\t\t\tspring-security-test\n\t\t\n\t\t\n\t\t\torg.springframework.boot\n\t\t\tspring-boot-configuration-processor\n\t\t\tprovided\n\t\t\n\t\t\n\t\t\tio.mosip.kernel\n\t\t\tkernel-idvalidator-rid\n\t\t\t${kernel.core.version}\n \t\t\n\t\t\n\t\t\torg.springdoc\n\t\t\tspringdoc-openapi-starter-webmvc-ui\n\t\t\t2.5.0\n\t\t\n\t\t\n\t\t\tio.mosip.commons\n\t\t\tcommons-packet-manager\n\t\t\t${mosip.commons.packetmanager.version}\n\t\t\t\n\t\t\t\t\n\t\t\t\t\torg.springframework.cloud\n\t\t\t\t\tspring-cloud-starter-config\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\torg.springframework.boot\n\t\t\t\t\tspring-boot-starter\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\tio.mosip.kernel\n\t\t\t\t\tkernel-core\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\torg.springframework.boot\n\t\t\t\t\tspring-boot-starter-security\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\tio.vertx\n\t\t\t\t\tvertx-web\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\tio.mosip.kernel\n\t\t\t\t\tkernel-auth-adapter\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\tio.mosip.kernel\n\t\t\t\t\tkernel-logger-logback\n\t\t\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t\torg.digibooster.spring.batch\n\t\t\tspring-batch-security\n\t\t\t1.1.0-RELEASE\n\t\t\t\n\t\t\t\t\n\t\t\t\t\torg.slf4j\n\t\t\t\t\tslf4j-api\n\t\t\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t\tio.mosip.kernel\n\t\t\tkernel-cbeffutil-api\n\t\t\t${mosip.biometric.util.version}\n\t\t\n\t\t\n\t\t\tio.mosip.biometric.util\n\t\t\tbiometrics-util\n\t\t\t${mosip.biometric.util.version}\n\t\t\t\n\t\t\t\t\n\t\t\t\t\tcom.fasterxml.jackson.dataformat\n\t\t\t\t\tjackson-dataformat-xml\n\t\t\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t\torg.hibernate.validator\n\t\t\thibernate-validator\n\t\t\n\t\t\n\t\t\torg.junit.vintage\n\t\t\tjunit-vintage-engine\n\t\t\n\t\t\n\t\t\torg.mockito\n\t\t\tmockito-core\n\t\t\n\t\t\n\t\t\torg.bouncycastle\n\t\t\tbcutil-jdk18on\n\t\t\t1.78.1\n\t\t\n \n com.h2database\n h2\n test\n \n\t\n\t\n\t\t\n\t\t\tossrh\n\t\t\thttps://central.sonatype.com/repository/maven-snapshots/\n\t\t\n\t\t\n\t\t\tossrh\n\t\t\thttps://central.sonatype.com/api/v1/publisher\n\t\t\n\t\n\n\t\n\t\t\n\t\t\t\n\t\t\t\torg.springframework.boot\n\t\t\t\tspring-boot-maven-plugin\n\t\t\t\t\n\t\t\t\t\ttrue\n\t\t\t\t\tZIP\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tbuild-info\n\t\t\t\t\t\t\trepackage\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tfalse\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\t\t\t\n\t\t\t\torg.apache.maven.plugins\n\t\t\t\tmaven-surefire-plugin\n\t\t\t\t${maven.surefire.plugin.version}\n\t\t\t\t\n\t\t\t\t\t${skipTests}\n\t\t\t\t\tfalse\n\t\t\t\t\t\n\t\t\t\t\t\t${argLine} --add-opens java.xml/jdk.xml.internal=ALL-UNNAMED\n\t\t\t\t\t\t--add-modules=ALL-SYSTEM\n\t\t\t\t\t\t--add-opens=java.base/java.lang=ALL-UNNAMED\n\t\t\t\t\t\t--illegal-access=permit\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t\n\n\nopenapi-doc-generate-profile\n\n\t\n\t\tio.mosip.kernel\n\t\tkernel-auth-adapter\n\t\t${mosip.openid.bridge.version}\n\t\n\t\n\t\tio.netty\n\t\tnetty-transport\n\t\t4.1.72.Final\n\t\n\n\n\t\n\t\t\n\t\t\torg.sonatype.central\n\t\t\tcentral-publishing-maven-plugin\n\t\t\t${central.publishing.maven.plugin.version}\n\t\t\ttrue\n\t\t\t\n\t\t\t\tossrh\n\t\t\t\tfalse\n\t\t\t\n\t\t\n\t\t\n\t\t\torg.springframework.boot\n\t\t\tspring-boot-maven-plugin\n\t\t\t\n\t\t\t\ttrue\n\t\t\t\tZIP\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\tbuild-info-repackage\n\t\t\t\t\t\n\t\t\t\t\t\tbuild-info\n\t\t\t\t\t\trepackage\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\tfalse\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\tpre-integration-test\n\t\t\t\t\tpre-integration-test\n\t\t\t\t\t\n\t\t\t\t\t\tstart\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tsrc/test/resources\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\topenapi-profile\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t--server.port=8090\n\t\t\t\t\t\t\t--server.servlet.path=/app/generic\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\tpost-integration-test\n\t\t\t\t\tpost-integration-test\n\t\t\t\t\t\n\t\t\t\t\t\tstop\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t\torg.springdoc\n\t\t\tspringdoc-openapi-maven-plugin\n\t\t\t1.3\n\t\t\t\n\t\t\t\t\n\t\t\t\t\tintegration-test\n\t\t\t\t\t\n\t\t\t\t\t\tgenerate\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\thttp://localhost:8090/app/generic/v3/api-docs/Admin%20Service\n\t\t\t\t${artifactId}-openapi.json\n\t\t\t\t${project.build.directory}\n\t\t\t\tfalse\n\t\t\t\n\t\t\n\t\t\n\t\t\tmaven-deploy-plugin\n\t\t\t${maven.deploy.plugin.version}\n\t\t\t\n\t\t\t\ttrue\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\tdefault-deploy\n\t\t\t\t\tnone\n\t\t\t\t\t\n\t\t\t\t\t\tdeploy\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\ttrue\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t\n\n\n\t\t\n\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/AdminBootApplication.java", + "title": "AdminBootApplication.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/AdminBootApplication.java", + "language": "java", + "content": "package io.mosip.admin;\n\nimport java.util.concurrent.Executor;\n\nimport org.springframework.boot.SpringApplication;\nimport org.springframework.boot.autoconfigure.SpringBootApplication;\nimport org.springframework.context.annotation.Bean;\nimport org.springframework.context.annotation.ComponentScan;\nimport org.springframework.scheduling.annotation.EnableAsync;\nimport org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;\n\n@SpringBootApplication\n@EnableAsync\n@ComponentScan(value = {\"io.mosip.kernel.auth.*\",\"io.mosip.kernel.dataaccess.*\",\"io.mosip.admin.*\",\"io.mosip.commons.*\",\n\t\t\"${mosip.auth.adapter.impl.basepackage}\", \"io.mosip.kernel.idvalidator.rid.*\",\"io.mosip.kernel.biometrics.*\",\"io.mosip.kernel.authcodeflowproxy.*\"})\npublic class AdminBootApplication {\n\n\tpublic static void main(String[] args) {\n\t\tSpringApplication.run(AdminBootApplication.class, args);\n\t}\n\n\t@Bean\n\tpublic Executor taskExecutor() {\n\t\tThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();\n\t\texecutor.setCorePoolSize(20);\n\t\texecutor.setMaxPoolSize(40);\n\t\texecutor.setThreadNamePrefix(\"Admin-Async-Thread-\");\n\t\texecutor.initialize();\n\t\treturn executor;\n\t}\n\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/batch/CustomChunkListener.java", + "title": "CustomChunkListener.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/batch/CustomChunkListener.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.batch;\n\nimport org.springframework.batch.core.ChunkListener;\nimport org.springframework.batch.core.scope.context.ChunkContext;\n\nimport io.mosip.admin.bulkdataupload.repositories.BulkUploadTranscationRepository;\n\npublic class CustomChunkListener implements ChunkListener {\n\n private BulkUploadTranscationRepository bulkUploadTranscationRepository;\n \n \n\tpublic CustomChunkListener(BulkUploadTranscationRepository bulkUploadTranscationRepository) {\n\t\tthis.bulkUploadTranscationRepository = bulkUploadTranscationRepository;\n\t}\n\n\t@Override\n\tpublic void beforeChunk(ChunkContext context) {\n\t\t\n\t}\n\n\t@Override\n\tpublic void afterChunk(ChunkContext context) {\n\t\tString jobId = (String) context.getStepContext().getJobParameters().get(\"transactionId\");\n\t\tlong count = context.getStepContext().getStepExecution().getWriteCount();\n bulkUploadTranscationRepository.updateBulkUploadTransactionCount(jobId, Math.toIntExact(count));\n\t\t\n\t}\n\n\t@Override\n\tpublic void afterChunkError(ChunkContext context) {\n\t\t\n\t}\n\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/batch/CustomExcelRowMapper.java", + "title": "CustomExcelRowMapper.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/batch/CustomExcelRowMapper.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.batch;\n\nimport org.springframework.batch.extensions.excel.RowMapper;\nimport org.springframework.batch.extensions.excel.support.rowset.RowSet;\nimport org.springframework.batch.support.DefaultPropertyEditorRegistrar;\nimport org.springframework.beans.*;\nimport org.springframework.beans.factory.BeanFactory;\nimport org.springframework.beans.factory.BeanFactoryAware;\nimport org.springframework.beans.factory.InitializingBean;\nimport org.springframework.core.convert.ConversionService;\nimport org.springframework.util.Assert;\nimport org.springframework.validation.BindException;\nimport org.springframework.validation.DataBinder;\n\nimport java.util.*;\nimport java.util.concurrent.ConcurrentHashMap;\nimport java.util.concurrent.ConcurrentMap;\n\nimport jakarta.validation.ConstraintViolation;\nimport jakarta.validation.ConstraintViolationException;\nimport jakarta.validation.Validator;\n\npublic class CustomExcelRowMapper extends DefaultPropertyEditorRegistrar implements RowMapper, BeanFactoryAware, InitializingBean {\n private String name;\n private Class type;\n private BeanFactory beanFactory;\n private final ConcurrentMap> propertiesMatched = new ConcurrentHashMap();\n private int distanceLimit = 5;\n private boolean strict = true;\n private ConversionService conversionService;\n private Validator validator;\n\n public CustomExcelRowMapper(ConversionService conversionService,Validator validator ) {\n this.conversionService = conversionService;\n this.validator = validator;\n }\n\n public void setBeanFactory(BeanFactory beanFactory) {\n this.beanFactory = beanFactory;\n }\n\n public void setDistanceLimit(int distanceLimit) {\n this.distanceLimit = distanceLimit;\n }\n\n public void setPrototypeBeanName(String name) {\n this.name = name;\n }\n\n public void setTargetType(Class type) {\n this.type = type;\n }\n\n public void afterPropertiesSet() throws Exception {\n Assert.state(this.name != null || this.type != null, \"Either name or type must be provided.\");\n Assert.state(this.name == null || this.type == null, \"Both name and type cannot be specified together.\");\n }\n\n public T mapRow(RowSet rs) throws BindException {\n T copy = this.getBean();\n DataBinder binder = this.createBinder(copy);\n binder.setConversionService(this.conversionService);\n binder.bind(new MutablePropertyValues(this.getBeanProperties(copy, rs.getProperties())));\n\n\t Set> violations = validator.validate(copy);\n\t if (!violations.isEmpty()) {\n\t throw new ConstraintViolationException(violations);\n\t }\n\n \n if (binder.getBindingResult().hasErrors()) {\n throw new BindException(binder.getBindingResult());\n } else {\n return copy;\n }\n }\n\n protected DataBinder createBinder(Object target) {\n DataBinder binder = new DataBinder(target);\n binder.setIgnoreUnknownFields(!this.strict);\n this.initBinder(binder);\n this.registerCustomEditors(binder);\n return binder;\n }\n\n protected void initBinder(DataBinder binder) {\n }\n\n private T getBean() {\n return this.name != null ? (T) this.beanFactory.getBean(this.name) : BeanUtils.instantiateClass(this.type);\n }\n\n private Properties getBeanProperties(Object bean, Properties properties) {\n Class cls = bean.getClass();\n CustomExcelRowMapper.DistanceHolder distanceKey = new CustomExcelRowMapper.DistanceHolder(cls, this.distanceLimit);\n if (!this.propertiesMatched.containsKey(distanceKey)) {\n this.propertiesMatched.putIfAbsent(distanceKey, new ConcurrentHashMap());\n }\n\n Map matches = new HashMap((Map)this.propertiesMatched.get(distanceKey));\n Set keys = new HashSet(properties.keySet());\n Iterator var7 = keys.iterator();\n\n while(var7.hasNext()) {\n String key = (String)var7.next();\n if (matches.containsKey(key)) {\n this.switchPropertyNames(properties, key, (String)matches.get(key));\n } else {\n String name = this.findPropertyName(bean, key);\n if (name != null) {\n if (matches.containsValue(name)) {\n throw new NotWritablePropertyException(cls, name, \"Duplicate match with distance <= \" + this.distanceLimit + \" found for this property in input keys: \" + keys + \". (Consider reducing the distance limit or changing the input key names to get a closer match.)\");\n }\n\n matches.put(key, name);\n this.switchPropertyNames(properties, key, name);\n }\n }\n }\n\n this.propertiesMatched.replace(distanceKey, new ConcurrentHashMap(matches));\n return properties;\n }\n\n private String findPropertyName(Object bean, String key) {\n if (bean == null) {\n return null;\n } else {\n Class cls = bean.getClass();\n int index = PropertyAccessorUtils.getFirstNestedPropertySeparatorIndex(key);\n String prefix;\n String suffix;\n String name;\n if (index > 0) {\n prefix = key.substring(0, index);\n suffix = key.substring(index + 1);\n name = this.findPropertyName(bean, prefix);\n if (name == null) {\n return null;\n } else {\n Object nestedValue = this.getPropertyValue(bean, name);\n String nestedPropertyName = this.findPropertyName(nestedValue, suffix);\n return nestedPropertyName != null ? name + \".\" + nestedPropertyName : null;\n }\n } else {\n name = null;\n int distance = 0;\n index = key.indexOf(91);\n if (index > 0) {\n prefix = key.substring(0, index);\n suffix = key.substring(index);\n } else {\n prefix = key;\n suffix = \"\";\n }\n\n for(; name == null && distance <= this.distanceLimit; ++distance) {\n String[] candidates = PropertyMatches.forProperty(prefix, cls, distance).getPossibleMatches();\n if (candidates.length == 1) {\n String candidate = candidates[0];\n if (candidate.equals(prefix)) {\n name = key;\n } else {\n name = candidate + suffix;\n }\n }\n }\n\n return name;\n }\n }\n }\n\n private Object getPropertyValue(Object bean, String nestedName) {\n BeanWrapperImpl wrapper = new BeanWrapperImpl(bean);\n wrapper.setAutoGrowNestedPaths(true);\n Object nestedValue = wrapper.getPropertyValue(nestedName);\n if (nestedValue == null) {\n nestedValue = BeanUtils.instantiateClass(wrapper.getPropertyType(nestedName));\n wrapper.setPropertyValue(nestedName, nestedValue);\n }\n\n return nestedValue;\n }\n\n private void switchPropertyNames(Properties properties, String oldName, String newName) {\n String value = properties.getProperty(oldName);\n properties.remove(oldName);\n properties.setProperty(newName, value);\n }\n\n public void setStrict(boolean strict) {\n this.strict = strict;\n }\n\n private static class DistanceHolder {\n private final Class cls;\n private final int distance;\n\n DistanceHolder(Class cls, int distance) {\n this.cls = cls;\n this.distance = distance;\n }\n\n public boolean equals(Object obj) {\n if (this == obj) {\n return true;\n } else if (obj == null) {\n return false;\n } else if (this.getClass() != obj.getClass()) {\n return false;\n } else {\n CustomExcelRowMapper.DistanceHolder other = (CustomExcelRowMapper.DistanceHolder)obj;\n if (this.cls == null) {\n if (other.cls != null) {\n return false;\n }\n } else if (!this.cls.equals(other.cls)) {\n return false;\n }\n\n return this.distance == other.distance;\n }\n }\n\n public int hashCode() {\n int result = 1;\n result = 31 * result + (this.cls == null ? 0 : this.cls.hashCode());\n result = 31 * result + this.distance;\n return result;\n }\n }\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/batch/CustomLineMapper.java", + "title": "CustomLineMapper.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/batch/CustomLineMapper.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.batch;\n\nimport org.springframework.batch.item.file.LineMapper;\nimport org.springframework.batch.item.file.mapping.FieldSetMapper;\nimport org.springframework.batch.item.file.transform.FieldSet;\nimport org.springframework.batch.item.file.transform.LineTokenizer;\nimport org.springframework.beans.factory.InitializingBean;\nimport org.springframework.util.Assert;\n\nimport jakarta.validation.ConstraintViolation;\nimport jakarta.validation.ConstraintViolationException;\nimport jakarta.validation.Validator;\nimport java.util.Arrays;\nimport java.util.List;\nimport java.util.Objects;\nimport java.util.Set;\n\npublic class CustomLineMapper implements LineMapper, InitializingBean {\n\n private LineTokenizer tokenizer;\n\n private FieldSetMapper fieldSetMapper;\n \n\n private List supportedLanguages;\n\n private Validator validator;\n \n \n\n public CustomLineMapper(List languages, Validator validator) {\n this.supportedLanguages = languages;\n this.validator = validator;\n }\n\n @Override\n public T mapLine(String line, int lineNumber) throws Exception {\n FieldSet fieldSet = tokenizer.tokenize(line);\n String[] values = fieldSet.getValues();\n\n if(Arrays.stream(Objects.requireNonNull(values)).anyMatch( v -> v.isBlank()))\n throw new Exception(\"Blank values are not allowed\");\n\t Set> violations = validator.validate(fieldSetMapper.mapFieldSet(tokenizer.tokenize(line)));\n\t if (!violations.isEmpty()) {\n\t throw new ConstraintViolationException(violations);\n\t }\n\n for(int i = 0; i < fieldSet.getNames().length; i++) {\n String columnName = fieldSet.getNames()[i];\n if( (columnName.equals(\"langCode\") || columnName.equals(\"lang_code\")) && !supportedLanguages.contains(values[i])) {\n throw new Exception(\"Invalid language code provided\");\n }\n }\n\n return fieldSetMapper.mapFieldSet(tokenizer.tokenize(line));\n }\n\n public void setLineTokenizer(LineTokenizer tokenizer) {\n this.tokenizer = tokenizer;\n }\n\n public void setFieldSetMapper(FieldSetMapper fieldSetMapper) {\n this.fieldSetMapper = fieldSetMapper;\n }\n\n @Override\n public void afterPropertiesSet() {\n Assert.notNull(tokenizer, \"The LineTokenizer must be set\");\n Assert.notNull(fieldSetMapper, \"The FieldSetMapper must be set\");\n }\n}" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/batch/CustomRecordSeparatorPolicy.java", + "title": "CustomRecordSeparatorPolicy.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/batch/CustomRecordSeparatorPolicy.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.batch;\n\nimport org.springframework.batch.item.file.separator.SimpleRecordSeparatorPolicy;\n\npublic class CustomRecordSeparatorPolicy extends SimpleRecordSeparatorPolicy {\n @Override\n public boolean isEndOfRecord(final String line) {\n return line.trim().length() != 0 && super.isEndOfRecord(line);\n }\n\n @Override\n public String postProcess(final String record) {\n if (record == null || record.trim().length() == 0) {\n return null;\n }\n return super.postProcess(record);\n }\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/batch/JobResultListener.java", + "title": "JobResultListener.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/batch/JobResultListener.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.batch;\n\nimport io.mosip.admin.bulkdataupload.repositories.BulkUploadTranscationRepository;\nimport io.mosip.admin.packetstatusupdater.util.AuditUtil;\nimport io.mosip.admin.packetstatusupdater.util.EventEnum;\nimport org.digibooster.spring.batch.security.listener.JobExecutionSecurityContextListener;\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\nimport org.springframework.batch.core.JobExecution;\nimport org.springframework.batch.core.JobExecutionListener;\nimport org.springframework.batch.core.StepExecution;\nimport org.springframework.batch.item.file.FlatFileParseException;\nimport org.springframework.security.core.Authentication;\nimport org.springframework.security.core.context.SecurityContext;\nimport org.springframework.security.core.context.SecurityContextHolder;\n\nimport jakarta.validation.ConstraintViolationException;\nimport java.util.ArrayList;\nimport java.util.List;\n\npublic class JobResultListener implements JobExecutionListener {\n\n private static final Logger logger = LoggerFactory.getLogger(JobResultListener.class);\n private static String STATUS_MESSAGE = \"
    STATUS: %s, MESSAGE: %s\";\n private AuditUtil auditUtil;\n private JobExecutionSecurityContextListener jobExecutionSecurityContextListener;\n private BulkUploadTranscationRepository bulkUploadTranscationRepository;\n private static final String SECURITY_PARAM_NAME = \"security-param\";\n private static final ThreadLocal ORIGINAL_CONTEXT = new ThreadLocal<>();\n\n public JobResultListener(BulkUploadTranscationRepository bulkUploadTranscationRepository,\n AuditUtil auditUtil, JobExecutionSecurityContextListener jobExecutionSecurityContextListener) {\n this.bulkUploadTranscationRepository = bulkUploadTranscationRepository;\n this.auditUtil = auditUtil;\n this.jobExecutionSecurityContextListener = new JobExecutionSecurityContextListener();\n }\n\n @Override\n public void beforeJob(JobExecution jobExecution) {\n logger.info(\"Job started : {}\", jobExecution.getJobParameters().getString(\"transactionId\"));\n this.jobExecutionSecurityContextListener.restoreContext(jobExecution);\n\n if(jobExecution.getStepExecutions().isEmpty()) {\n restoreContext(jobExecution);\n }\n else {\n for(StepExecution stepExecution : jobExecution.getStepExecutions()) {\n this.jobExecutionSecurityContextListener.restoreContext(stepExecution.getJobExecution());\n }\n }\n \n }\n\n @Override\n public void afterJob(JobExecution jobExecution) {\n String jobId = jobExecution.getJobParameters().getString(\"transactionId\");\n logger.info(\"Job completed : {}\", jobId);\n try {\n List failures = new ArrayList();\n jobExecution.getStepExecutions().forEach(step -> {\n step.getFailureExceptions().forEach(failure -> {\n if (failure instanceof FlatFileParseException && failure.getCause() instanceof ConstraintViolationException) {\n failures.add(\"Line --> \" + ((FlatFileParseException) failure).getLineNumber() + \" --> \"+\n ((FlatFileParseException) failure).getCause().getMessage());\n }\n else if(failure instanceof FlatFileParseException){\n failures.add(\"Line --> \" + ((FlatFileParseException) failure).getLineNumber() +\n \" --> Datatype mismatch / Failed to write into object\");\n } else\n failures.add(failure.getCause() != null ? failure.getCause().getMessage() : failure.getMessage());\n });\n });\n\n String message = String.format(STATUS_MESSAGE,\n jobExecution.getStatus().toString(), failures.isEmpty() ? \"0 Errors\" : failures.toString());\n auditUtil.setAuditRequestDto(EventEnum.getEventEnumWithValue(EventEnum.BULKDATA_UPLOAD_COMPLETED,\n jobId + \" --> \" + message), jobExecution.getJobParameters().getString(\"username\"));\n\n bulkUploadTranscationRepository.updateBulkUploadTransactionStatus(jobId, jobExecution.getExitStatus().getExitCode(), message);\n\n } catch (Throwable t) {\n logger.error(\"Failed to update job status {}\", jobId, t);\n } finally {\n clearContext();\n this.jobExecutionSecurityContextListener.clearContext(jobExecution);\n }\n }\n\n\n private void restoreContext(JobExecution jobExecution) {\n if (jobExecution.getExecutionContext().containsKey(SECURITY_PARAM_NAME)) {\n logger.debug(\"Restore the security context\");\n Authentication authentication = (Authentication) jobExecution.getExecutionContext()\n .get(SECURITY_PARAM_NAME);\n SecurityContext securityContext = SecurityContextHolder.getContext();\n ORIGINAL_CONTEXT.set(securityContext.getAuthentication());\n securityContext.setAuthentication(authentication);\n } else {\n logger.error(\"Could not find key {} in the job execution context\", SECURITY_PARAM_NAME);\n }\n }\n\n private void clearContext() {\n logger.debug(\"Clear the security context\");\n SecurityContextHolder.clearContext();\n Authentication originalAuth = ORIGINAL_CONTEXT.get();\n if (originalAuth != null) {\n SecurityContextHolder.getContext().setAuthentication(originalAuth);\n ORIGINAL_CONTEXT.remove();\n }\n }\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/batch/PacketJobResultListener.java", + "title": "PacketJobResultListener.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/batch/PacketJobResultListener.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.batch;\n\nimport io.mosip.admin.bulkdataupload.repositories.BulkUploadTranscationRepository;\nimport io.mosip.admin.packetstatusupdater.util.AuditUtil;\nimport io.mosip.admin.packetstatusupdater.util.EventEnum;\nimport org.digibooster.spring.batch.security.listener.JobExecutionSecurityContextListener;\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\nimport org.springframework.batch.core.JobExecution;\nimport org.springframework.batch.core.JobExecutionListener;\nimport org.springframework.batch.core.StepExecution;\nimport org.springframework.batch.item.file.FlatFileParseException;\nimport org.springframework.security.core.Authentication;\nimport org.springframework.security.core.context.SecurityContext;\nimport org.springframework.security.core.context.SecurityContextHolder;\n\nimport java.util.ArrayList;\nimport java.util.List;\nimport java.util.Optional;\n\npublic class PacketJobResultListener implements JobExecutionListener {\n\n\tprivate static final Logger logger = LoggerFactory.getLogger(PacketJobResultListener.class);\n\n\tprivate static final String STATUS_MESSAGE = \"
    READ: %d, STATUS: %s, MESSAGE: %s\";\n\n\tprivate final AuditUtil auditUtil;\n\n\tprivate final JobExecutionSecurityContextListener jobExecutionSecurityContextListener;\n\n\tprivate final BulkUploadTranscationRepository bulkUploadTranscationRepository;\n\n\tprivate static final String SECURITY_PARAM_NAME = \"security-param\";\n\tprivate static final ThreadLocal ORIGINAL_CONTEXT = new ThreadLocal<>();\n\n\tpublic PacketJobResultListener(\n\t\t\tBulkUploadTranscationRepository bulkUploadTranscationRepository,\n\t\t\tAuditUtil auditUtil,\n\t\t\tJobExecutionSecurityContextListener jobExecutionSecurityContextListener) {\n\n\t\tthis.bulkUploadTranscationRepository = bulkUploadTranscationRepository;\n\t\tthis.auditUtil = auditUtil;\n\t\tthis.jobExecutionSecurityContextListener = jobExecutionSecurityContextListener;\n\t}\n\n\t@Override\n\tpublic void beforeJob(JobExecution jobExecution) {\n\t\tString jobId = jobExecution.getJobParameters().getString(\"transactionId\");\n\t\tlogger.info(\"Job started : {}\", jobId);\n\n\t\tthis.jobExecutionSecurityContextListener.restoreContext(jobExecution);\n\n\t\tif (jobExecution.getExecutionContext().containsKey(SECURITY_PARAM_NAME)) {\n\t\t\tAuthentication authentication =\n\t\t\t\t\t(Authentication) jobExecution.getExecutionContext().get(SECURITY_PARAM_NAME);\n\n\t\t\tSecurityContext securityContext = SecurityContextHolder.getContext();\n\t\t\tORIGINAL_CONTEXT.set(securityContext.getAuthentication());\n\t\t\tsecurityContext.setAuthentication(authentication);\n\t\t} else {\n\t\t\tlogger.error(\"Missing security-param in job context for job {}\", jobId);\n\t\t}\n\t}\n\n\t@Override\n\tpublic void afterJob(JobExecution jobExecution) {\n\t\tString jobId = jobExecution.getJobParameters().getString(\"transactionId\");\n\t\tlogger.info(\"Job completed : {}\", jobId);\n\n\t\ttry {\n\t\t\tList failures = new ArrayList<>();\n\n\t\t\tjobExecution.getStepExecutions().forEach(step ->\n\t\t\t\t\tstep.getFailureExceptions().forEach(failure -> {\n\t\t\t\t\t\tif (failure instanceof FlatFileParseException f) {\n\t\t\t\t\t\t\tfailures.add(\"Line --> \" + f.getLineNumber()\n\t\t\t\t\t\t\t\t\t+ \" --> Datatype mismatch / Failed to write into object\");\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tfailures.add(failure.getCause() != null\n\t\t\t\t\t\t\t\t\t? failure.getCause().getMessage()\n\t\t\t\t\t\t\t\t\t: failure.getMessage());\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t);\n\n\t\t\tOptional commitResult =\n\t\t\t\t\tjobExecution.getStepExecutions().stream()\n\t\t\t\t\t\t\t.map(StepExecution::getCommitCount)\n\t\t\t\t\t\t\t.findFirst();\n\n\t\t\tlong commitCount = commitResult.orElse(0L);\n\n\t\t\tString message = String.format(\n\t\t\t\t\tSTATUS_MESSAGE,\n\t\t\t\t\tcommitCount,\n\t\t\t\t\tjobExecution.getStatus().toString(),\n\t\t\t\t\tfailures.isEmpty() ? \"0 Errors\" : failures.toString()\n\t\t\t);\n\n\t\t\tauditUtil.setAuditRequestDto(\n\t\t\t\t\tEventEnum.getEventEnumWithValue(\n\t\t\t\t\t\t\tEventEnum.BULKDATA_UPLOAD_COMPLETED,\n\t\t\t\t\t\t\tjobId + \" --> \" + message),\n\t\t\t\t\tjobExecution.getJobParameters().getString(\"username\")\n\t\t\t);\n\n\t\t\tbulkUploadTranscationRepository.updateBulkUploadTransactionPacket(\n\t\t\t\t\tjobId,\n\t\t\t\t\tjobExecution.getExitStatus().getExitCode(),\n\t\t\t\t\tMath.toIntExact(commitCount),\n\t\t\t\t\tmessage\n\t\t\t);\n\n\t\t} catch (Throwable t) {\n\t\t\tlogger.error(\"Failed to update job status {}\", jobId, t);\n\t\t} finally {\n\t\t\tclearContext();\n\t\t\tthis.jobExecutionSecurityContextListener.clearContext(jobExecution);\n\t\t}\n\t}\n\n\tprivate void clearContext() {\n\t\tSecurityContextHolder.clearContext();\n\n\t\tAuthentication originalAuth = ORIGINAL_CONTEXT.get();\n\t\tif (originalAuth != null) {\n\t\t\tSecurityContextHolder.getContext().setAuthentication(originalAuth);\n\t\t\tORIGINAL_CONTEXT.remove();\n\t\t}\n\t}\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/batch/PacketUploadTasklet.java", + "title": "PacketUploadTasklet.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/batch/PacketUploadTasklet.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.batch;\n\nimport io.mosip.admin.bulkdataupload.dto.PacketUploadStatus;\nimport io.mosip.admin.bulkdataupload.service.PacketUploadService;\nimport org.springframework.batch.core.JobExecutionException;\nimport org.springframework.batch.core.StepContribution;\nimport org.springframework.batch.core.scope.context.ChunkContext;\nimport org.springframework.batch.core.step.tasklet.Tasklet;\nimport org.springframework.batch.repeat.RepeatStatus;\nimport org.springframework.beans.factory.InitializingBean;\nimport org.springframework.util.Assert;\n\npublic class PacketUploadTasklet implements Tasklet, InitializingBean {\n\n private String fileName;\n private byte[] file;\n private PacketUploadService packetUploadService;\n private String centerId;\n private String supervisorStatus;\n private String source;\n private String process;\n private String mode;\n\n public PacketUploadTasklet(String fileName, byte[] packet, PacketUploadService packetUploadService,\n String centerId, String supervisorStatus, String source, String process,\n String mode) {\n this.fileName = fileName;\n this.file = packet;\n this.packetUploadService = packetUploadService;\n this.centerId = centerId;\n this.source = source;\n this.process = process;\n this.supervisorStatus = supervisorStatus;\n this.mode = mode;\n }\n\n @Override\n public RepeatStatus execute(StepContribution contribution, ChunkContext chunkContext) throws Exception {\n PacketUploadStatus status = null;\n switch (mode) {\n case \"UPLOAD\" :\n status = packetUploadService.onlyUploadPacket(this.fileName, this.file);\n break;\n case \"SYNC-UPLOAD\":\n status = packetUploadService.syncAndUploadPacket(this.fileName, this.file, centerId, supervisorStatus, source, process,\n (String) chunkContext.getStepContext().getJobParameters().get(\"transactionId\"));\n break;\n }\n\n if(null!=status && status.isFailed())\n throw new JobExecutionException(this.fileName + \" --> \" + status.getMessage());\n\n return RepeatStatus.FINISHED;\n }\n\n @Override\n public void afterPropertiesSet() throws Exception {\n Assert.notNull(file, \"Packet file must be set\");\n Assert.notNull(packetUploadService, \"PacketUploadService must be set\");\n }\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/batch/RepositoryListItemWriter.java", + "title": "RepositoryListItemWriter.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/batch/RepositoryListItemWriter.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.batch;\n\nimport java.lang.reflect.InvocationTargetException;\nimport java.util.Iterator;\nimport java.util.List;\n\nimport jakarta.persistence.EntityManager;\nimport jakarta.persistence.EntityManagerFactory;\nimport jakarta.persistence.PersistenceUnitUtil;\n\nimport io.mosip.admin.bulkdataupload.entity.*;\nimport io.mosip.admin.config.Mapper;\nimport io.mosip.admin.config.MapperUtils;\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\nimport org.springframework.batch.core.JobExecutionException;\nimport org.springframework.batch.item.Chunk;\nimport org.springframework.batch.item.ItemWriter;\nimport org.springframework.batch.item.adapter.AbstractMethodInvokingDelegator;\nimport org.springframework.batch.item.adapter.DynamicMethodInvocationException;\nimport org.springframework.context.ApplicationContext;\nimport org.springframework.util.CollectionUtils;\nimport org.springframework.util.MethodInvoker;\n\nimport io.mosip.admin.bulkdataupload.constant.BulkUploadErrorCode;\nimport io.mosip.admin.packetstatusupdater.exception.RequestException;\nimport io.mosip.kernel.core.dataaccess.spi.repository.BaseRepository;\n\n/**\n * This class will write the information in database\n * @author dhanendra\n *\n * @param \n */\npublic class RepositoryListItemWriter implements ItemWriter {\n\tprivate static final Logger LOGGER = LoggerFactory.getLogger(RepositoryListItemWriter.class);\n\n private String methodName;\n private EntityManager em;\n private EntityManagerFactory emf;\n private Class entity;\n private Mapper mapper;\n private ApplicationContext applicationContext;\n private String repoBeanName;\n private String operation;\n\n public RepositoryListItemWriter() {\n }\n \n public RepositoryListItemWriter(EntityManager em,EntityManagerFactory emf,Class entity,Mapper mapper,ApplicationContext applicationContext) {\n \tthis.em=em;\n \tthis.emf=emf;\n \tthis.entity=entity;\n \tthis.mapper=mapper;\n \tthis.applicationContext=applicationContext;\n }\n\n public void setMethodName(String methodName) {\n this.methodName = methodName;\n }\n\n public void setOperation(String operation) {\n this.operation = operation;\n }\n\n public void setRepoBeanName(String repoBeanName) {\n this.repoBeanName = repoBeanName;\n }\n\n @Override\n public void write(Chunk items) throws Exception {\n if(!items.isEmpty()) {\n this.doWrite(items);\n }\n }\n\n protected void doWrite(Chunk items) throws Exception {\n \tLOGGER.info(\"Writing to the repository with \" + items.size() + \" items.\");\n try {\n BaseRepository baseRepository = (BaseRepository) applicationContext.getBean(this.repoBeanName);\n Iterator i$ = items.iterator();\n while(i$.hasNext()) {\n Object object = i$.next();\n PersistenceUnitUtil util = emf.getPersistenceUnitUtil();\n Object identifier = util.getIdentifier(object);\n T existingRecord = (T) em.find(entity, identifier);\n switch (this.operation) {\n case \"insert\":\n MethodInvoker invoker = this.createMethodInvoker(baseRepository, this.methodName);\n if(existingRecord !=null) {\n throw new RequestException(BulkUploadErrorCode.ENTRY_EXISTS_SAME_IDENTIFIER.getErrorCode(),\n \"Entry already exists with this id >> \" + identifier);\n }\n invoker.setArguments(new Object[]{object});\n this.doInvoke(invoker);\n break;\n\n case \"update\":\n BaseRepository baseRepositoryToUpdate = (BaseRepository) applicationContext.getBean(this.repoBeanName);\n if(existingRecord == null) {\n throw new RequestException(BulkUploadErrorCode.BULK_OPERATION_ERROR.getErrorCode(),\n \"No entry found with this id >> \" + identifier);\n }\n ((BaseEntity)object).setCreatedBy(((BaseEntity)existingRecord).getCreatedBy());\n ((BaseEntity)object).setCreatedDateTime(((BaseEntity)existingRecord).getCreatedDateTime());\n ((BaseEntity)object).setIsDeleted(((BaseEntity)existingRecord).getIsDeleted());\n baseRepositoryToUpdate.save(object);\n break;\n\n case \"delete\":\n BaseRepository baseRepositoryToDelete = (BaseRepository) applicationContext.getBean(this.repoBeanName);\n if(existingRecord == null) {\n throw new RequestException(BulkUploadErrorCode.BULK_OPERATION_ERROR.getErrorCode(),\n \"No entry found with this id >> \" + identifier);\n }\n ((BaseEntity)object).setCreatedBy(((BaseEntity)existingRecord).getCreatedBy());\n ((BaseEntity)object).setCreatedDateTime(((BaseEntity)existingRecord).getCreatedDateTime());\n ((BaseEntity)object).setUpdatedBy(((BaseEntity)existingRecord).getUpdatedBy());\n ((BaseEntity)object).setUpdatedDateTime(((BaseEntity)existingRecord).getUpdatedDateTime());\n baseRepositoryToDelete.save(object);\n break;\n }\n createHistoryRecord(object);\n }\n } catch (Throwable t) {\n LOGGER.error(BulkUploadErrorCode.BATCH_ERROR.getErrorCode(), t);\n throw new JobExecutionException(t.getMessage() + (t.getCause() != null ? t.getCause().getMessage() : \"\"));\n }\n }\n\n private void createHistoryRecord(Object object) {\n String historyRepoBeanName;\n BaseRepository historyBaseRepo;\n switch(entity.getCanonicalName()) {\n case \"io.mosip.admin.bulkdataupload.entity.ZoneUser\":\n historyRepoBeanName=mapper.getRepo(ZoneUserHistory.class);\n historyBaseRepo = (BaseRepository) applicationContext.getBean(historyRepoBeanName);\n ZoneUserHistory userHistory = new ZoneUserHistory();\n MapperUtils.map(object, userHistory);\n MapperUtils.setBaseFieldValue(object, userHistory);\n userHistory.setEffDTimes(userHistory.getCreatedDateTime());\n historyBaseRepo.save(userHistory);\n break;\n case \"io.mosip.admin.bulkdataupload.entity.UserDetails\":\n historyRepoBeanName=mapper.getRepo(UserDetailsHistory.class);\n historyBaseRepo = (BaseRepository) applicationContext.getBean(historyRepoBeanName);\n UserDetailsHistory userDetailHistory = new UserDetailsHistory();\n MapperUtils.map(object, userDetailHistory);\n MapperUtils.setBaseFieldValue(object, userDetailHistory);\n userDetailHistory.setEffDTimes(userDetailHistory.getCreatedDateTime());\n historyBaseRepo.save(userDetailHistory);\n break;\n case \"io.mosip.admin.bulkdataupload.entity.Machine\":\n historyRepoBeanName=mapper.getRepo(MachineHistory.class);\n historyBaseRepo = (BaseRepository) applicationContext.getBean(historyRepoBeanName);\n MachineHistory machineHistory = new MachineHistory();\n MapperUtils.map(object, machineHistory);\n MapperUtils.setBaseFieldValue(object, machineHistory);\n machineHistory.setEffectDateTime(machineHistory.getCreatedDateTime());\n historyBaseRepo.save(machineHistory);\n break;\n case \"io.mosip.admin.bulkdataupload.entity.Device\":\n historyRepoBeanName=mapper.getRepo(DeviceHistory.class);\n historyBaseRepo = (BaseRepository) applicationContext.getBean(historyRepoBeanName);\n DeviceHistory deviceHistory = new DeviceHistory();\n MapperUtils.map(object, deviceHistory);\n MapperUtils.setBaseFieldValue(object, deviceHistory);\n deviceHistory.setEffectDateTime(deviceHistory.getCreatedDateTime());\n historyBaseRepo.save(deviceHistory);\n break;\n case \"io.mosip.admin.bulkdataupload.entity.RegistrationCenter\":\n historyRepoBeanName=mapper.getRepo(RegistrationCenterHistory.class);\n historyBaseRepo = (BaseRepository) applicationContext.getBean(historyRepoBeanName);\n RegistrationCenterHistory registrationCenterHistory = new RegistrationCenterHistory();\n MapperUtils.map(object, registrationCenterHistory);\n MapperUtils.setBaseFieldValue(object, registrationCenterHistory);\n registrationCenterHistory.setEffectivetimes(registrationCenterHistory.getCreatedDateTime());\n historyBaseRepo.save(registrationCenterHistory);\n break;\n default:\n break;\n }\n }\n\n /*public void afterPropertiesSet() throws Exception {\n Assert.state(this.repository != null, \"A CrudRepository implementation is required\");\n }*/\n\n private Object doInvoke(MethodInvoker invoker) throws Exception {\n try {\n invoker.prepare();\n } catch (ClassNotFoundException var3) {\n throw new DynamicMethodInvocationException(var3);\n } catch (NoSuchMethodException var4) {\n throw new DynamicMethodInvocationException(var4);\n }\n\n try {\n return invoker.invoke();\n } catch (InvocationTargetException var5) {\n if(var5.getCause() instanceof Exception) {\n throw (Exception)var5.getCause();\n } else {\n throw new AbstractMethodInvokingDelegator.InvocationTargetThrowableWrapper(var5.getCause());\n }\n } catch (IllegalAccessException var6) {\n throw new DynamicMethodInvocationException(var6);\n }\n }\n\n private MethodInvoker createMethodInvoker(Object targetObject, String targetMethod) {\n MethodInvoker invoker = new MethodInvoker();\n invoker.setTargetObject(targetObject);\n invoker.setTargetMethod(targetMethod);\n return invoker;\n }\n\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/dto/BulkDataGetExtnDto.java", + "title": "BulkDataGetExtnDto.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/dto/BulkDataGetExtnDto.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.dto;\n\nimport java.util.UUID;\n\nimport lombok.Data;\n/**\n * \n * @author dhanendra\n *\n */\n@Data\npublic class BulkDataGetExtnDto {\n\n private String transcationId;\n\t\n\tprivate String entityName;\n\t\n\tprivate String operation;\n\t\n\tprivate int count;\n\t\n\tprivate String category;\n\t\n\tprivate String status;\n\t\n\tprivate String statusDescription;\n\t\n\tprivate String uploadedBy;\n\t\n\tprivate String timeStamp;\n\t\n\tprivate String logs;\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/dto/BulkDataGetResponseDto.java", + "title": "BulkDataGetResponseDto.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/dto/BulkDataGetResponseDto.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.dto;\n\nimport java.util.List;\n\nimport lombok.Data;\n/**\n * \n * @author dhanendra\n *\n */\n@Data\npublic class BulkDataGetResponseDto {\n\n\tprivate List records;\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/dto/BulkDataResponseDto.java", + "title": "BulkDataResponseDto.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/dto/BulkDataResponseDto.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.dto;\n\nimport java.util.UUID;\n\nimport lombok.Data;\n/**\n * \n * @author dhanendra\n *\n */\n@Data\npublic class BulkDataResponseDto {\n\t\n\tprivate String transcationId;\n\t\n\tprivate String tableName;\n\t\n\tprivate String operation;\n\t\n\tprivate int successCount;\n\t\n\tprivate String category;\n\t\n\tprivate String status;\n\t\n\tprivate String statusDescription;\n\t\n\tprivate String uploadedBy;\n\t\n\tprivate String timeStamp;\n\t\n\tprivate String logs;\n\t\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/dto/MachineRegistrationCenterDto.java", + "title": "MachineRegistrationCenterDto.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/dto/MachineRegistrationCenterDto.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.dto;\n\n\nimport io.swagger.annotations.ApiModelProperty;\nimport lombok.AllArgsConstructor;\nimport lombok.Data;\nimport lombok.NoArgsConstructor;\n\nimport jakarta.validation.constraints.NotNull;\nimport jakarta.validation.constraints.Size;\n\n/**\n * \n * @author M1047717\n *\n */\n@Data\n@AllArgsConstructor\n@NoArgsConstructor\npublic class MachineRegistrationCenterDto {\n\t/**\n\t * Field for registration Center Id\n\t */\n\t@NotNull\n\t@ApiModelProperty(value = \"id\", required = true, dataType = \"java.lang.String\")\n\tprivate String regCentId;\n\t/**\n\t * Field for machine id\n\t */\n\t@NotNull\n\t@ApiModelProperty(value = \"id\", required = true, dataType = \"java.lang.String\")\n\tprivate String id;\n\t/**\n\t * Field for machine name\n\t */\n\t@NotNull\n\t@ApiModelProperty(value = \"name\", required = true, dataType = \"java.lang.String\")\n\tprivate String name;\n\t/**\n\t * Field for machine serial number\n\t */\n\t@NotNull\n\t@ApiModelProperty(value = \"serialNum\", required = true, dataType = \"java.lang.String\")\n\tprivate String serialNum;\n\t/**\n\t * Field for machine mac address\n\t */\n\t@NotNull\n\t@ApiModelProperty(value = \"macAddress\", required = true, dataType = \"java.lang.String\")\n\tprivate String macAddress;\n\t/**\n\t * Field for machine IP address\n\t */\n\n\t@Size(min = 1, max = 17)\n\t@ApiModelProperty(value = \"ipAddress\", required = true, dataType = \"java.lang.String\")\n\tprivate String ipAddress;\n\t/**\n\t * Field for machine specification Id\n\t */\n\t@NotNull\n\t@ApiModelProperty(value = \"machineSpecId\", required = true, dataType = \"java.lang.String\")\n\tprivate String machineSpecId;\n\t/**\n\t * Field for language code\n\t */\n\t@ApiModelProperty(value = \"langCode\", required = true, dataType = \"java.lang.String\")\n\tprivate String langCode;\n\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/dto/PacketUploadStatus.java", + "title": "PacketUploadStatus.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/dto/PacketUploadStatus.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.dto;\n\nimport lombok.AllArgsConstructor;\nimport lombok.Data;\n\n@Data\n@AllArgsConstructor\npublic class PacketUploadStatus {\n\n private String message;\n private boolean isFailed;\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/dto/PageDto.java", + "title": "PageDto.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/dto/PageDto.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.dto;\n\nimport java.util.List;\n\nimport lombok.AllArgsConstructor;\nimport lombok.Data;\nimport lombok.NoArgsConstructor;\n\n@Data\n@AllArgsConstructor\n@NoArgsConstructor\npublic class PageDto {\n\tprivate int pageNo;\n\tprivate int totalPages;\n\tprivate long totalItems;\n\tprivate List data;\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/dto/RIDSyncDto.java", + "title": "RIDSyncDto.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/dto/RIDSyncDto.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.dto;\n\nimport lombok.Data;\n\nimport java.math.BigInteger;\n\n\n@Data\npublic class RIDSyncDto {\n private String langCode;\n private String registrationId;\n private String packetId;\n private String additionalInfoReqId;\n private String registrationType;\n private String packetHashValue;\n private BigInteger packetSize;\n private String supervisorStatus;\n private String supervisorComment;\n private String name;\n private String phone;\n private String email;\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/dto/RegistrationPacketSyncDTO.java", + "title": "RegistrationPacketSyncDTO.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/dto/RegistrationPacketSyncDTO.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.dto;\n\nimport lombok.Data;\n\nimport java.util.List;\n\n@Data\npublic class RegistrationPacketSyncDTO {\n\n private String id;\n private String requesttime;\n private String version;\n private List request;\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/dto/ValueDto.java", + "title": "ValueDto.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/dto/ValueDto.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.dto;\n\nimport lombok.AllArgsConstructor;\nimport lombok.Data;\nimport lombok.NoArgsConstructor;\n\n@Data\n@AllArgsConstructor\n@NoArgsConstructor\npublic class ValueDto {\n\n private String language;\n private String value;\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/ApplicantUserDetailsEntity.java", + "title": "ApplicantUserDetailsEntity.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/ApplicantUserDetailsEntity.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.entity;\n\nimport lombok.Data;\nimport org.hibernate.annotations.GenericGenerator;\n\nimport jakarta.persistence.*;\nimport java.io.Serializable;\nimport java.time.LocalDate;\n\n@Data\n@Entity\n@Table(name = \"applicant_login_detail\", schema = \"master\")\npublic class ApplicantUserDetailsEntity extends BaseEntity implements Serializable {\n\n private static final long serialVersionUID = -8541947587557590379L;\n\n @Id\n @GeneratedValue(generator = \"uuid\")\n @GenericGenerator(name = \"uuid\", strategy = \"org.hibernate.id.UUIDGenerator\")\n @Column(name = \"id\", nullable = false, length = 64)\n private String id;\n\n @Column(name = \"usr_id\", nullable = false, length = 64)\n private String userId;\n\n @Column(name = \"login_date\")\n private LocalDate loginDate;\n\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/ApplicantUserDetailsRepository.java", + "title": "ApplicantUserDetailsRepository.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/ApplicantUserDetailsRepository.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.entity;\n\nimport io.mosip.kernel.core.dataaccess.spi.repository.BaseRepository;\nimport org.springframework.stereotype.Repository;\n\nimport java.time.LocalDate;\n\n/**\n * @author Dhanendra\n *\n */\n@Repository\npublic interface ApplicantUserDetailsRepository extends BaseRepository {\n\n\n long countByUserIdAndLoginDate(String userId, LocalDate loginDate);\n\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/ApplicantValidDocument.java", + "title": "ApplicantValidDocument.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/ApplicantValidDocument.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.entity;\r\n\r\nimport java.io.Serializable;\r\n\r\nimport jakarta.persistence.AttributeOverride;\r\nimport jakarta.persistence.AttributeOverrides;\r\nimport jakarta.persistence.Column;\r\nimport jakarta.persistence.Entity;\r\nimport jakarta.persistence.Id;\r\nimport jakarta.persistence.IdClass;\r\nimport jakarta.persistence.Table;\r\n\r\n\r\nimport io.mosip.admin.bulkdataupload.entity.id.ApplicantValidDocumentId;\r\nimport lombok.AllArgsConstructor;\r\nimport lombok.Data;\r\nimport lombok.EqualsAndHashCode;\r\nimport lombok.NoArgsConstructor;\r\n\r\n/**\r\n * \r\n * Entity for Applicant valid document\r\n * \r\n * @author Bal Vikash Sharma\r\n * @since 1.0.0\r\n */\r\n@EqualsAndHashCode(callSuper = true)\r\n@Data\r\n@NoArgsConstructor\r\n@AllArgsConstructor\r\n@Entity\r\n@IdClass(ApplicantValidDocumentId.class)\r\n@Table(name = \"applicant_valid_document\", schema = \"master\")\r\npublic class ApplicantValidDocument extends BaseEntity implements Serializable {\r\n\r\n\tprivate static final long serialVersionUID = -5585825705521742941L;\r\n\r\n\t/**\r\n\t * Field for individual type code\r\n\t */\r\n\t@Id\r\n\t@AttributeOverrides({ @AttributeOverride(name = \"appTypeCode\", column = @Column(name = \"apptyp_code\")),\r\n\t\t\t@AttributeOverride(name = \"docCategoryCode\", column = @Column(name = \"doccat_code\")),\r\n\t\t\t@AttributeOverride(name = \"docTypeCode\", column = @Column(name = \"doctyp_code\")) })\r\n\tprivate String appTypeCode;\r\n\tprivate String docCategoryCode;\r\n\tprivate String docTypeCode;\r\n\t\r\n\t@Column(name = \"lang_code\", nullable = false, length = 3)\r\n\tprivate String langCode;\r\n\t\r\n}\r\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/Application.java", + "title": "Application.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/Application.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.entity;\r\n\r\nimport java.io.Serializable;\r\n\r\nimport jakarta.persistence.AttributeOverride;\r\nimport jakarta.persistence.AttributeOverrides;\r\nimport jakarta.persistence.Column;\r\nimport jakarta.persistence.Entity;\r\nimport jakarta.persistence.Id;\r\nimport jakarta.persistence.IdClass;\r\nimport jakarta.persistence.Table;\r\n\r\nimport io.mosip.admin.bulkdataupload.entity.id.CodeAndLanguageCodeID;\r\nimport lombok.AllArgsConstructor;\r\nimport lombok.Data;\r\nimport lombok.EqualsAndHashCode;\r\nimport lombok.NoArgsConstructor;\r\n\r\n/**\r\n * \r\n * @author Neha\r\n * @since 1.0.0\r\n *\r\n */\r\n@Data\r\n@NoArgsConstructor\r\n@AllArgsConstructor\r\n@EqualsAndHashCode(callSuper = true)\r\n@Entity\r\n@Table(name = \"appl_form_type\", schema = \"master\")\r\n@IdClass(CodeAndLanguageCodeID.class)\r\npublic class Application extends BaseEntity implements Serializable {\r\n\t/**\r\n\t * Generated serial version id\r\n\t */\r\n\tprivate static final long serialVersionUID = 893244317356416503L;\r\n\r\n\t@Id\r\n\t@AttributeOverrides({ @AttributeOverride(name = \"code\", column = @Column(name = \"code\", nullable = false)),\r\n\t\t\t@AttributeOverride(name = \"langCode\", column = @Column(name = \"lang_code\", nullable = false, length = 3)) })\r\n\tprivate String code;\r\n\tprivate String langCode;\r\n\r\n\t@Column(name = \"name\", nullable = false)\r\n\tprivate String name;\r\n\r\n\t@Column(name = \"descr\")\r\n\tprivate String description;\r\n\r\n}\r\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/BaseEntity.java", + "title": "BaseEntity.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/BaseEntity.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.entity;\n\nimport java.time.LocalDateTime;\n\nimport jakarta.persistence.Column;\nimport jakarta.persistence.MappedSuperclass;\n\nimport lombok.AllArgsConstructor;\nimport lombok.Data;\nimport lombok.NoArgsConstructor;\n\n@Data\n@AllArgsConstructor\n@NoArgsConstructor\n@MappedSuperclass\npublic class BaseEntity {\n\n\t@Column(name = \"is_active\", nullable = false)\n\tprivate Boolean isActive;\n\n\t@Column(name = \"cr_by\", nullable = false, length = 256)\n\tprivate String createdBy;\n\n\t@Column(name = \"cr_dtimes\", nullable = false)\n\tprivate LocalDateTime createdDateTime;\n\n\t@Column(name = \"upd_by\", length = 256)\n\tprivate String updatedBy;\n\n\t@Column(name = \"upd_dtimes\")\n\tprivate LocalDateTime updatedDateTime;\n\n\t@Column(name = \"is_deleted\")\n\tprivate Boolean isDeleted;\n\n\t@Column(name = \"del_dtimes\")\n\tprivate LocalDateTime deletedDateTime;\n\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/BiometricAttribute.java", + "title": "BiometricAttribute.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/BiometricAttribute.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.entity;\n\nimport java.io.Serializable;\n\nimport jakarta.persistence.AttributeOverride;\nimport jakarta.persistence.AttributeOverrides;\nimport jakarta.persistence.Column;\nimport jakarta.persistence.Entity;\nimport jakarta.persistence.Id;\nimport jakarta.persistence.IdClass;\nimport jakarta.persistence.JoinColumn;\nimport jakarta.persistence.JoinColumns;\nimport jakarta.persistence.ManyToOne;\nimport jakarta.persistence.Table;\n\nimport io.mosip.admin.bulkdataupload.entity.id.CodeAndLanguageCodeID;\nimport lombok.AllArgsConstructor;\nimport lombok.Data;\nimport lombok.EqualsAndHashCode;\nimport lombok.NoArgsConstructor;\n\n/**\n * \n * @author Uday Kumar\n * @since 1.0.0\n *\n */\n@EqualsAndHashCode(callSuper = true)\n@Data\n@NoArgsConstructor\n@AllArgsConstructor\n@Entity\n@Table(name = \"biometric_attribute\", schema = \"master\")\n@IdClass(CodeAndLanguageCodeID.class)\npublic class BiometricAttribute extends BaseEntity implements Serializable {\n\n\t/**\n\t * \n\t */\n\tprivate static final long serialVersionUID = -1302520630931339354L;\n\t@Id\n\t@AttributeOverrides({\n\t\t\t@AttributeOverride(name = \"code\", column = @Column(name = \"code\", nullable = false, length = 36)),\n\t\t\t@AttributeOverride(name = \"langCode\", column = @Column(name = \"lang_code\", nullable = false, length = 3)) })\n\tprivate String code;\n\tprivate String langCode;\n\n\t@Column(name = \"name\", nullable = false)\n\tprivate String name;\n\n\t@Column(name = \"descr\", length = 128)\n\tprivate String description;\n\n\t@Column(name = \"bmtyp_code\", length = 36, nullable = false)\n\tprivate String biometricTypeCode;\n\n\t@ManyToOne\n\t@JoinColumns({\n\t\t\t@JoinColumn(name = \"bmtyp_code\", referencedColumnName = \"code\", insertable = false, updatable = false),\n\t\t\t@JoinColumn(name = \"lang_code\", referencedColumnName = \"lang_code\", insertable = false, updatable = false) })\n\tprivate BiometricType biometricType;\n\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/BiometricType.java", + "title": "BiometricType.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/BiometricType.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.entity;\n\nimport java.io.Serializable;\n\nimport jakarta.persistence.AttributeOverride;\nimport jakarta.persistence.AttributeOverrides;\nimport jakarta.persistence.Column;\nimport jakarta.persistence.Entity;\nimport jakarta.persistence.Id;\nimport jakarta.persistence.IdClass;\nimport jakarta.persistence.Table;\n\nimport io.mosip.admin.bulkdataupload.entity.id.CodeAndLanguageCodeID;\nimport lombok.AllArgsConstructor;\nimport lombok.Data;\nimport lombok.EqualsAndHashCode;\nimport lombok.NoArgsConstructor;\n\n/**\n * @author Neha\n * @since 1.0.0\n * \n */\n@Data\n@NoArgsConstructor\n@AllArgsConstructor\n@Entity\n@EqualsAndHashCode(callSuper = true)\n@Table(name = \"biometric_type\", schema = \"master\")\n@IdClass(CodeAndLanguageCodeID.class)\npublic class BiometricType extends BaseEntity implements Serializable {\n\n\t/**\n\t * Generated serialization id\n\t */\n\tprivate static final long serialVersionUID = 4605128758645778470L;\n\n\t@Id\n\t@AttributeOverrides({ @AttributeOverride(name = \"code\", column = @Column(name = \"code\", nullable = false)),\n\t\t\t@AttributeOverride(name = \"langCode\", column = @Column(name = \"lang_code\", nullable = false, length = 3)) })\n\tprivate String code;\n\tprivate String langCode;\n\n\t@Column(name = \"name\", nullable = false)\n\tprivate String name;\n\n\t@Column(name = \"descr\")\n\tprivate String description;\n\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/BlocklistedWords.java", + "title": "BlocklistedWords.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/BlocklistedWords.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.entity;\r\n\r\nimport io.mosip.admin.validator.AlphabeticValidator;\r\nimport lombok.AllArgsConstructor;\r\nimport lombok.Data;\r\nimport lombok.EqualsAndHashCode;\r\nimport lombok.NoArgsConstructor;\r\n\r\nimport jakarta.persistence.Column;\r\nimport jakarta.persistence.Entity;\r\nimport jakarta.persistence.Id;\r\nimport jakarta.persistence.Table;\r\nimport java.io.Serializable;\r\n\r\n/**\r\n * Entity class for blocklisted words.\r\n * \r\n * @author Abhishek Kumar\r\n * @author Sagar Mahapatra\r\n * @since 1.0.0\r\n */\r\n@Data\r\n@NoArgsConstructor\r\n@AllArgsConstructor\r\n@Entity\r\n@Table(name = \"blocklisted_words\", schema = \"master\")\r\n@EqualsAndHashCode(callSuper = true)\r\npublic class BlocklistedWords extends BaseEntity implements Serializable {\r\n\r\n\t/**\r\n\t * Serialized version ID.\r\n\t */\r\n\tprivate static final long serialVersionUID = -402658536057675404L;\r\n\r\n\t/**\r\n\t * The blocklisted word.\r\n\t */\r\n\t@Id\r\n\t@Column(name = \"word\", length = 128)\r\n\t@AlphabeticValidator(message = \"Blocklisted word can only contain Alphabets\")\r\n\tprivate String word;\r\n\r\n\t/**\r\n\t * The language code of the word.\r\n\t */\r\n\t@Column(name = \"lang_code\", length = 3)\r\n\tprivate String langCode;\r\n\r\n\t/**\r\n\t * The description of the word.\r\n\t */\r\n\t@Column(name = \"descr\", length = 256)\r\n\tprivate String description;\r\n}\r\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/BulkUploadTranscation.java", + "title": "BulkUploadTranscation.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/BulkUploadTranscation.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.entity;\n\nimport java.sql.Timestamp;\nimport java.time.LocalDateTime;\nimport java.util.UUID;\n\nimport jakarta.persistence.Column;\nimport jakarta.persistence.Entity;\nimport jakarta.persistence.GeneratedValue;\nimport jakarta.persistence.Id;\nimport jakarta.persistence.Table;\n\nimport org.hibernate.annotations.GenericGenerator;\n\nimport lombok.AllArgsConstructor;\nimport lombok.Data;\nimport lombok.EqualsAndHashCode;\nimport lombok.NoArgsConstructor;\n/**\n * \n * @author dhanendra\n *\n */\n@Data\n@NoArgsConstructor\n@AllArgsConstructor\n@Entity\n@EqualsAndHashCode(callSuper = true)\n@Table(name = \"bulkupload_transaction\", schema = \"master\")\npublic class BulkUploadTranscation extends BaseEntity{\n\n\t@Id\n\t@GeneratedValue(generator = \"uuid\")\n\t@GenericGenerator(name = \"uuid\", strategy = \"org.hibernate.id.UUIDGenerator\")\n\t@Column(name = \"id\")\n\tprivate String id;\n\t\n\t@Column(name=\"entity_name\")\n\tprivate String entityName;\n\t\n\t@Column(name=\"upload_operation\")\n\tprivate String uploadOperation;\n\t\n\t@Column(name=\"status_code\")\n\tprivate String statusCode;\n\t\n\t@Column(name=\"upload_category\")\n\tprivate String category;\n\t\n\t@Column(name=\"record_count\")\n\tprivate int recordCount;\n\t\n\t@Column(name=\"uploaded_by\")\n\tprivate String uploadedBy;\n\t\n\t@Column(name=\"uploaded_dtimes\") \n\tprivate Timestamp uploadedDateTime;\n\t\n\t@Column(name=\"upload_description\")\n\tprivate String uploadDescription;\n\t\n\t@Column(name=\"lang_code\")\n\tprivate String langCode;\n\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/DaysOfWeek.java", + "title": "DaysOfWeek.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/DaysOfWeek.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.entity;\n\nimport java.io.Serializable;\n\nimport jakarta.persistence.Column;\nimport jakarta.persistence.Entity;\nimport jakarta.persistence.Id;\nimport jakarta.persistence.IdClass;\nimport jakarta.persistence.Table;\n\nimport io.mosip.admin.bulkdataupload.entity.id.WeekDayId;\nimport lombok.AllArgsConstructor;\nimport lombok.Data;\nimport lombok.EqualsAndHashCode;\nimport lombok.NoArgsConstructor;\n\n@Data\n@EqualsAndHashCode(callSuper = true)\n@NoArgsConstructor\n@AllArgsConstructor\n@Entity\n@Table(name = \"daysofweek_list\", schema = \"master\")\n@IdClass(WeekDayId.class)\npublic class DaysOfWeek extends BaseEntity implements Serializable {\n\n\t/**\n\t * \n\t */\n\tprivate static final long serialVersionUID = 5984896378379371310L;\n\n\t@Id\n\t@Column(name = \"code\", nullable = false, length = 3, insertable = false, updatable = false)\n\tprivate String code;\n\n\t@Id\n\t@Column(name = \"lang_code\", nullable = false, length = 3)\n\tprivate String langCode;\n\n\t@Column(name = \"name\", nullable = false, length = 36)\n\tprivate String name;\n\n\t@Column(name = \"day_seq\", nullable = false)\n\tprivate short daySeq;\n\n\t@Column(name = \"is_global_working\", nullable = false)\n\tprivate boolean isGlobalWorking;\n\n\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/Device.java", + "title": "Device.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/Device.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.entity;\r\n\r\nimport java.io.Serializable;\r\nimport java.time.LocalDateTime;\r\n\r\nimport jakarta.persistence.AttributeOverride;\r\nimport jakarta.persistence.AttributeOverrides;\r\nimport jakarta.persistence.Column;\r\nimport jakarta.persistence.Entity;\r\nimport jakarta.persistence.FetchType;\r\nimport jakarta.persistence.Id;\r\nimport jakarta.persistence.IdClass;\r\nimport jakarta.persistence.JoinColumn;\r\nimport jakarta.persistence.JoinColumns;\r\nimport jakarta.persistence.ManyToOne;\r\nimport jakarta.persistence.Table;\r\nimport jakarta.persistence.Transient;\r\n\r\nimport io.mosip.admin.bulkdataupload.entity.id.IdAndLanguageCodeID;\r\nimport lombok.AllArgsConstructor;\r\nimport lombok.Data;\r\nimport lombok.EqualsAndHashCode;\r\nimport lombok.NoArgsConstructor;\r\n\r\n/**\r\n * \r\n * Entity for Device Details\r\n * \r\n */\r\n/**\r\n * @author Sidhant Agarwal\r\n * @author Megha Tanga\r\n * @since 1.0.1\r\n *\r\n */\r\n\r\n@EqualsAndHashCode(callSuper = true)\r\n@Data\r\n@NoArgsConstructor\r\n@AllArgsConstructor\r\n@Entity\r\n@Table(name = \"device_master\", schema = \"master\")\r\n@IdClass(IdAndLanguageCodeID.class)\r\npublic class Device extends BaseEntity implements Serializable {\r\n\r\n\t/**\r\n\t * \r\n\t */\r\n\tprivate static final long serialVersionUID = -5585825705521742941L;\r\n\r\n\t@Id\r\n\t@AttributeOverrides({ @AttributeOverride(name = \"id\", column = @Column(name = \"id\", nullable = false, length = 36)),\r\n\t\t\t@AttributeOverride(name = \"langCode\", column = @Column(name = \"lang_code\", nullable = false, length = 3)) })\r\n\tprivate String id;\r\n\tprivate String langCode;\r\n\r\n\t/**\r\n\t * Field for device name\r\n\t */\r\n\t@Column(name = \"name\", nullable = false, length = 64)\r\n\tprivate String name;\r\n\r\n\t/**\r\n\t * Field for device serial number\r\n\t */\r\n\t@Column(name = \"serial_num\", nullable = false, length = 64)\r\n\tprivate String serialNum;\r\n\r\n\t/**\r\n\t * Field for device ip address\r\n\t */\r\n\t@Column(name = \"ip_address\", length = 17)\r\n\tprivate String ipAddress;\r\n\r\n\t/**\r\n\t * Field for device mac address\r\n\t */\r\n\t@Column(name = \"mac_address\", nullable = false, length = 64)\r\n\tprivate String macAddress;\r\n\r\n\t/**\r\n\t * Field for device specific id\r\n\t */\r\n\t@Column(name = \"dspec_id\", nullable = false, length = 36)\r\n\tprivate String deviceSpecId;\r\n\r\n\t@Column(name = \"validity_end_dtimes\")\r\n\tprivate LocalDateTime validityDateTime;\r\n\r\n\t@Column(name = \"zone_code\", length = 36)\r\n\tprivate String zoneCode;\r\n\t\r\n\t@Column(name = \"regcntr_id\", length = 10)\r\n\tprivate String regCenterId;\r\n\r\n\t@ManyToOne(fetch = FetchType.LAZY)\r\n\t@JoinColumns({ @JoinColumn(name = \"dspec_id\", referencedColumnName = \"id\", insertable = false, updatable = false),\r\n\t\t\t@JoinColumn(name = \"lang_code\", referencedColumnName = \"lang_code\", insertable = false, updatable = false) })\r\n\tprivate DeviceSpecification deviceSpecification;\r\n\r\n\t@Transient\r\n\tprivate String mapStatus;\r\n\r\n}\r\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/DeviceHistory.java", + "title": "DeviceHistory.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/DeviceHistory.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.entity;\r\n\r\nimport java.io.Serializable;\r\nimport java.time.LocalDateTime;\r\n\r\nimport jakarta.persistence.AttributeOverride;\r\nimport jakarta.persistence.AttributeOverrides;\r\nimport jakarta.persistence.Column;\r\nimport jakarta.persistence.Entity;\r\nimport jakarta.persistence.Id;\r\nimport jakarta.persistence.IdClass;\r\nimport jakarta.persistence.Table;\r\n\r\nimport io.mosip.admin.bulkdataupload.entity.id.IdAndEffectDateTimeID;\r\nimport lombok.AllArgsConstructor;\r\nimport lombok.Data;\r\nimport lombok.EqualsAndHashCode;\r\nimport lombok.NoArgsConstructor;\r\n\r\n@EqualsAndHashCode(callSuper = true)\r\n@Data\r\n@NoArgsConstructor\r\n@AllArgsConstructor\r\n@Entity\r\n@Table(name = \"device_master_h\", schema = \"master\")\r\n@IdClass(IdAndEffectDateTimeID.class)\r\npublic class DeviceHistory extends BaseEntity implements Serializable {\r\n\r\n\t/**\r\n\t * \r\n\t */\r\n\tprivate static final long serialVersionUID = -5585825705521742941L;\r\n\r\n\t@Id\r\n\t@AttributeOverrides({ @AttributeOverride(name = \"id\", column = @Column(name = \"id\", nullable = false, length = 36)),\r\n\t\t\t@AttributeOverride(name = \"effectDateTime\", column = @Column(name = \"eff_dtimes\", nullable = false)),\r\n\t\t\t@AttributeOverride(name = \"langCode\", column = @Column(name = \"lang_code\", nullable = false, length = 3)) })\r\n\tprivate String id;\r\n\tprivate LocalDateTime effectDateTime;\r\n\tprivate String langCode;\r\n\r\n\t/**\r\n\t * Field for device name\r\n\t */\r\n\t@Column(name = \"name\", nullable = false, length = 64)\r\n\tprivate String name;\r\n\r\n\t/**\r\n\t * Field for device serial number\r\n\t */\r\n\t@Column(name = \"serial_num\", nullable = false, length = 64)\r\n\tprivate String serialNum;\r\n\r\n\t/**\r\n\t * Field for device ip address\r\n\t */\r\n\t@Column(name = \"ip_address\", length = 17)\r\n\tprivate String ipAddress;\r\n\r\n\t/**\r\n\t * Field for device mac address\r\n\t */\r\n\t@Column(name = \"mac_address\", nullable = false, length = 64)\r\n\tprivate String macAddress;\r\n\r\n\t/**\r\n\t * Field for device specific id\r\n\t */\r\n\t@Column(name = \"dspec_id\", nullable = false, length = 36)\r\n\tprivate String deviceSpecId;\r\n\r\n\t@Column(name = \"validity_end_dtimes\")\r\n\tprivate LocalDateTime validityDateTime;\r\n\r\n\t@Column(name = \"zone_code\", length = 36)\r\n\tprivate String zoneCode;\r\n\t\r\n\t@Column(name = \"regcntr_id\", length = 10)\r\n\tprivate String regCenterId;\r\n\r\n}\r\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/DeviceProvider.java", + "title": "DeviceProvider.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/DeviceProvider.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.entity;\n\nimport jakarta.persistence.Column;\nimport jakarta.persistence.Entity;\nimport jakarta.persistence.Id;\nimport jakarta.persistence.Table;\n\nimport lombok.AllArgsConstructor;\nimport lombok.Data;\nimport lombok.EqualsAndHashCode;\nimport lombok.NoArgsConstructor;\n\n/**\n * Class DeviceProvider DTO.\n */\n@Entity\n@Table(name = \"device_provider\", schema = \"master\")\n@Data\n@EqualsAndHashCode(callSuper = true)\n@NoArgsConstructor\n@AllArgsConstructor\npublic class DeviceProvider extends BaseEntity {\n\n\t/** The id. */\n\t@Id\n\t@Column(name = \"id\")\n\tprivate String id;\n\n\t/** The vendor name. */\n\t@Column(name = \"vendor_name\")\n\tprivate String vendorName;\n\n\t/** The address. */\n\t@Column(name = \"address\")\n\tprivate String address;\n\n\t/** The email. */\n\t@Column(name = \"email\")\n\tprivate String email;\n\n\t/** The contact number. */\n\t@Column(name = \"contact_number\")\n\tprivate String contactNumber;\n\n\t/** The certificate alias. */\n\t@Column(name = \"certificate_alias\")\n\tprivate String certificateAlias;\n\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/DeviceProviderHistory.java", + "title": "DeviceProviderHistory.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/DeviceProviderHistory.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.entity;\n\nimport java.time.LocalDateTime;\n\nimport jakarta.persistence.Column;\nimport jakarta.persistence.Entity;\nimport jakarta.persistence.Id;\nimport jakarta.persistence.Table;\n\nimport lombok.AllArgsConstructor;\nimport lombok.Data;\nimport lombok.EqualsAndHashCode;\nimport lombok.NoArgsConstructor;\n\n/**\n * Class DeviceProvider DTO.\n */\n@Entity\n@Table(name = \"device_provider_h\", schema = \"master\")\n@Data\n@EqualsAndHashCode(callSuper = true)\n@NoArgsConstructor\n@AllArgsConstructor\npublic class DeviceProviderHistory extends BaseEntity {\n\n\t/** The id. */\n\t@Id\n\t@Column(name = \"id\")\n\tprivate String id;\n\n\t/** The vendor name. */\n\t@Column(name = \"vendor_name\")\n\tprivate String vendorName;\n\n\t/** The address. */\n\t@Column(name = \"address\")\n\tprivate String address;\n\n\t/** The email. */\n\t@Column(name = \"email\")\n\tprivate String email;\n\n\t/** The contact number. */\n\t@Column(name = \"contact_number\")\n\tprivate String contactNumber;\n\n\t/** The certificate alias. */\n\t@Column(name = \"certificate_alias\")\n\tprivate String certificateAlias;\n\n\t/** The effective date and time. */\n\t@Column(name = \"eff_dtimes\")\n\tprivate LocalDateTime effectivetimes;\n\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/DeviceRegister.java", + "title": "DeviceRegister.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/DeviceRegister.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.entity;\r\n\r\nimport java.time.LocalDateTime;\r\n\r\nimport jakarta.persistence.Column;\r\nimport jakarta.persistence.Entity;\r\nimport jakarta.persistence.Id;\r\nimport jakarta.persistence.Table;\r\n\r\nimport lombok.AllArgsConstructor;\r\nimport lombok.Data;\r\nimport lombok.EqualsAndHashCode;\r\nimport lombok.NoArgsConstructor;\r\n\r\n@Entity\r\n@Table(name = \"registered_device_master\", schema = \"master\")\r\n@EqualsAndHashCode(callSuper = true)\r\n@Data\r\n@NoArgsConstructor\r\n@AllArgsConstructor\r\npublic class DeviceRegister extends BaseEntity {\r\n\r\n\t@Id\r\n\t@Column(name = \"code\")\r\n\tprivate String deviceCode;\r\n\r\n\t@Column(name = \"dtype_code\")\r\n\tprivate String dTypeCode;\r\n\r\n\t@Column(name = \"dstype_code\")\r\n\tprivate String dSubTypeCode;\r\n\r\n\t@Column(name = \"status_code\")\r\n\tprivate String statusCode;\r\n\r\n\t@Column(name = \"device_id\")\r\n\tprivate String deviceId;\r\n\r\n\t@Column(name = \"device_sub_id\")\r\n\tprivate String deviceSubId;\r\n\r\n\t@Column(name = \"digital_id\")\r\n\tprivate String digitalId;\r\n\r\n\t@Column(name = \"provider_id\")\r\n\tprivate String deviceProviderId;\r\n\r\n\t@Column(name = \"provider_name\")\r\n\tprivate String deviceProviderName;\r\n\r\n\t@Column(name = \"purpose\")\r\n\tprivate String purpose;\r\n\r\n\t@Column(name = \"firmware\")\r\n\tprivate String firmware;\r\n\r\n\t@Column(name = \"make\")\r\n\tprivate String deviceMake;\r\n\r\n\t@Column(name = \"model\")\r\n\tprivate String deviceModel;\r\n\r\n\t@Column(name = \"expiry_date\")\r\n\tprivate LocalDateTime deviceExpiry;\r\n\r\n\t@Column(name = \"certification_level\")\r\n\tprivate String certificationLevel;\r\n\r\n\t@Column(name = \"foundational_trust_provider_iD\")\r\n\tprivate String foundationalTrustProviderID;\r\n\r\n\t@Column(name = \"serial_number\", nullable = false)\r\n\tprivate String serialNumber;\r\n\r\n}" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/DeviceRegisterHistory.java", + "title": "DeviceRegisterHistory.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/DeviceRegisterHistory.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.entity;\r\n\r\nimport java.time.LocalDateTime;\r\n\r\nimport jakarta.persistence.AttributeOverride;\r\nimport jakarta.persistence.Column;\r\nimport jakarta.persistence.Entity;\r\nimport jakarta.persistence.Id;\r\nimport jakarta.persistence.IdClass;\r\nimport jakarta.persistence.Table;\r\n\r\nimport io.mosip.admin.bulkdataupload.entity.id.DeviceRegisterHistoryId;\r\nimport lombok.AllArgsConstructor;\r\nimport lombok.Data;\r\nimport lombok.EqualsAndHashCode;\r\nimport lombok.NoArgsConstructor;\r\n\r\n@Entity\r\n@Table(name = \"registered_device_master_h\", schema = \"master\")\r\n@EqualsAndHashCode(callSuper = true)\r\n@Data\r\n@NoArgsConstructor\r\n@AllArgsConstructor\r\n@IdClass(DeviceRegisterHistoryId.class)\r\npublic class DeviceRegisterHistory extends BaseEntity {\r\n\r\n\t@Id\r\n\t@AttributeOverride(name = \"deviceCode\", column = @Column(name = \"code\"))\r\n\t@AttributeOverride(name = \"effectivetimes\", column = @Column(name = \"eff_dtimes\"))\r\n\tprivate String deviceCode;\r\n\r\n\tprivate LocalDateTime effectivetimes;\r\n\r\n\t@Column(name = \"dtype_code\")\r\n\tprivate String dTypeCode;\r\n\r\n\t@Column(name = \"dstype_code\")\r\n\tprivate String dSubTypeCode;\r\n\r\n\t@Column(name = \"digital_id\")\r\n\tprivate String digitalId;\r\n\r\n\t@Column(name = \"status_code\")\r\n\tprivate String statusCode;\r\n\r\n\t@Column(name = \"device_id\")\r\n\tprivate String deviceId;\r\n\r\n\t@Column(name = \"device_sub_id\")\r\n\tprivate String deviceSubId;\r\n\r\n\t@Column(name = \"provider_id\")\r\n\tprivate String deviceProviderId;\r\n\r\n\t@Column(name = \"provider_name\")\r\n\tprivate String deviceProviderName;\r\n\r\n\t@Column(name = \"purpose\")\r\n\tprivate String purpose;\r\n\r\n\t@Column(name = \"firmware\")\r\n\tprivate String firmware;\r\n\r\n\t@Column(name = \"make\")\r\n\tprivate String deviceMake;\r\n\r\n\t@Column(name = \"model\")\r\n\tprivate String deviceModel;\r\n\r\n\t@Column(name = \"expiry_date\")\r\n\tprivate LocalDateTime deviceExpiry;\r\n\r\n\t@Column(name = \"certification_level\")\r\n\tprivate byte[] certification;\r\n\r\n\t@Column(name = \"foundational_trust_provider_iD\")\r\n\tprivate String foundationalTrustProviderID;\r\n\r\n\t@Column(name = \"serial_number\", nullable = false)\r\n\tprivate String serialNumber;\r\n\r\n}\r\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/DeviceSpecification.java", + "title": "DeviceSpecification.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/DeviceSpecification.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.entity;\r\n\r\nimport java.io.Serializable;\r\n\r\nimport jakarta.persistence.AttributeOverride;\r\nimport jakarta.persistence.AttributeOverrides;\r\nimport jakarta.persistence.Column;\r\nimport jakarta.persistence.Entity;\r\nimport jakarta.persistence.FetchType;\r\nimport jakarta.persistence.Id;\r\nimport jakarta.persistence.IdClass;\r\nimport jakarta.persistence.JoinColumn;\r\nimport jakarta.persistence.JoinColumns;\r\nimport jakarta.persistence.ManyToOne;\r\nimport jakarta.persistence.Table;\r\n\r\nimport io.mosip.admin.bulkdataupload.entity.id.IdAndLanguageCodeID;\r\nimport lombok.AllArgsConstructor;\r\nimport lombok.Data;\r\nimport lombok.EqualsAndHashCode;\r\nimport lombok.NoArgsConstructor;\r\n\r\n/**\r\n * \r\n * Entity for Device Specification Details\r\n * \r\n * @author Uday\r\n * @author Megha Tanga\r\n * \r\n *\r\n */\r\n@EqualsAndHashCode(callSuper = true)\r\n@Data\r\n@NoArgsConstructor\r\n@AllArgsConstructor\r\n@Entity\r\n@Table(name = \"device_spec\", schema = \"master\")\r\n@IdClass(IdAndLanguageCodeID.class)\r\npublic class DeviceSpecification extends BaseEntity implements Serializable {\r\n\t/**\r\n\t* \r\n\t*/\r\n\tprivate static final long serialVersionUID = 1L;\r\n\r\n\t@Id\r\n\t@AttributeOverrides({ @AttributeOverride(name = \"id\", column = @Column(name = \"id\", nullable = false, length = 36)),\r\n\t\t\t@AttributeOverride(name = \"langCode\", column = @Column(name = \"lang_code\", nullable = false, length = 3)) })\r\n\tprivate String id;\r\n\tprivate String langCode;\r\n\r\n\t@Column(name = \"name\", nullable = false, length = 64)\r\n\tprivate String name;\r\n\r\n\t@Column(name = \"brand\", nullable = false, length = 32)\r\n\tprivate String brand;\r\n\r\n\t@Column(name = \"model\", nullable = false, length = 16)\r\n\tprivate String model;\r\n\r\n\t@Column(name = \"dtyp_code\", nullable = false, length = 36)\r\n\tprivate String deviceTypeCode;\r\n\r\n\t@Column(name = \"min_driver_ver\", nullable = false, length = 16)\r\n\tprivate String minDriverversion;\r\n\r\n\t@Column(name = \"descr\", length = 256)\r\n\tprivate String description;\r\n\r\n\t@ManyToOne(fetch = FetchType.LAZY)\r\n\t@JoinColumns({\r\n\t\t\t@JoinColumn(name = \"dtyp_code\", referencedColumnName = \"code\", insertable = false, updatable = false),\r\n\t\t\t@JoinColumn(name = \"lang_code\", referencedColumnName = \"lang_code\", insertable = false, updatable = false) })\r\n\tprivate DeviceType deviceType;\r\n\r\n}\r\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/DeviceType.java", + "title": "DeviceType.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/DeviceType.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.entity;\n\nimport java.io.Serializable;\n\nimport jakarta.persistence.AttributeOverride;\nimport jakarta.persistence.AttributeOverrides;\nimport jakarta.persistence.Column;\nimport jakarta.persistence.Entity;\nimport jakarta.persistence.Id;\nimport jakarta.persistence.IdClass;\nimport jakarta.persistence.Table;\n\nimport io.mosip.admin.bulkdataupload.entity.id.CodeAndLanguageCodeID;\nimport lombok.AllArgsConstructor;\nimport lombok.Data;\nimport lombok.EqualsAndHashCode;\nimport lombok.NoArgsConstructor;\n\n/**\n * \n * Entity for Device Type Details\n * \n * @author Megha Tanga\n * @since 1.0.0\n *\n */\n@EqualsAndHashCode(callSuper = true)\n@Data\n@NoArgsConstructor\n@AllArgsConstructor\n@Entity\n@Table(name = \"device_type\", schema = \"master\")\n@IdClass(CodeAndLanguageCodeID.class)\npublic class DeviceType extends BaseEntity implements Serializable {\n\n\tprivate static final long serialVersionUID = -8541947587557590379L;\n\n\t@Id\n\t@AttributeOverrides({\n\t\t\t@AttributeOverride(name = \"code\", column = @Column(name = \"code\", nullable = false, length = 36)),\n\t\t\t@AttributeOverride(name = \"langCode\", column = @Column(name = \"lang_code\", nullable = false, length = 3)) })\n\tprivate String code;\n\tprivate String langCode;\n\n\t@Column(name = \"name\", nullable = false, length = 64)\n\tprivate String name;\n\n\t@Column(name = \"descr\", length = 128)\n\tprivate String description;\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/DocumentCategory.java", + "title": "DocumentCategory.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/DocumentCategory.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.entity;\n\nimport java.io.Serializable;\n\nimport jakarta.persistence.AttributeOverride;\nimport jakarta.persistence.AttributeOverrides;\nimport jakarta.persistence.Column;\nimport jakarta.persistence.Entity;\nimport jakarta.persistence.Id;\nimport jakarta.persistence.IdClass;\nimport jakarta.persistence.OneToMany;\nimport jakarta.persistence.Table;\n\nimport io.mosip.admin.bulkdataupload.entity.id.CodeAndLanguageCodeID;\nimport lombok.AllArgsConstructor;\nimport lombok.Data;\nimport lombok.EqualsAndHashCode;\nimport lombok.NoArgsConstructor;\n\n/**\n * @author Neha\n * @author Ritesh Sinha\n * @since 1.0.0\n *\n */\n@Entity\n@Table(name = \"doc_category\", schema = \"master\")\n@EqualsAndHashCode(callSuper = true)\n@Data\n@NoArgsConstructor\n@AllArgsConstructor\n@IdClass(CodeAndLanguageCodeID.class)\npublic class DocumentCategory extends BaseEntity implements Serializable {\n\n\t/**\n\t * Generated serialization id\n\t */\n\tprivate static final long serialVersionUID = 1582360946027855765L;\n\t@Id\n\t@AttributeOverrides({ @AttributeOverride(name = \"code\", column = @Column(name = \"code\", nullable = false)),\n\t\t\t@AttributeOverride(name = \"langCode\", column = @Column(name = \"lang_code\", nullable = false, length = 3)) })\n\t@OneToMany(mappedBy = \"docCategoryCode\")\n\tprivate String code;\n\t@OneToMany(mappedBy = \"langCode\")\n\tprivate String langCode;\n\n\t@Column(name = \"name\", nullable = false)\n\tprivate String name;\n\n\t@Column(name = \"descr\")\n\tprivate String description;\n\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/DocumentType.java", + "title": "DocumentType.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/DocumentType.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.entity;\n\nimport java.io.Serializable;\n\nimport jakarta.persistence.AttributeOverride;\nimport jakarta.persistence.AttributeOverrides;\nimport jakarta.persistence.Column;\nimport jakarta.persistence.Entity;\nimport jakarta.persistence.Id;\nimport jakarta.persistence.IdClass;\nimport jakarta.persistence.OneToMany;\nimport jakarta.persistence.Table;\n\nimport io.mosip.admin.bulkdataupload.entity.id.CodeAndLanguageCodeID;\nimport lombok.AllArgsConstructor;\nimport lombok.Data;\nimport lombok.EqualsAndHashCode;\nimport lombok.NoArgsConstructor;\n\n/**\n * @author Ritesh Sinha\n * @author Uday Kumar\n * @since 1.0.0\n *\n */\n@EqualsAndHashCode(callSuper = true)\n@Entity\n@Data\n@AllArgsConstructor\n@NoArgsConstructor\n@Table(name = \"doc_type\", schema = \"master\")\n@IdClass(CodeAndLanguageCodeID.class)\npublic class DocumentType extends BaseEntity implements Serializable {\n\n\tprivate static final long serialVersionUID = 1L;\n\n\t@Id\n\t@AttributeOverrides({ @AttributeOverride(name = \"code\", column = @Column(name = \"code\", nullable = false)),\n\t\t\t@AttributeOverride(name = \"langCode\", column = @Column(name = \"lang_code\", nullable = false, length = 3)) })\n\t@OneToMany(mappedBy = \"docTypeCode\")\n\tprivate String code;\n\t@OneToMany(mappedBy = \"langCode\")\n\tprivate String langCode;\n\n\t@Column(name = \"name\", nullable = false)\n\tprivate String name;\n\n\t@Column(name = \"descr\")\n\tprivate String description;\n\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/DynamicField.java", + "title": "DynamicField.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/DynamicField.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.entity;\n\nimport jakarta.persistence.Column;\nimport jakarta.persistence.Entity;\nimport jakarta.persistence.Id;\nimport jakarta.persistence.Table;\n\nimport lombok.AllArgsConstructor;\nimport lombok.Data;\nimport lombok.EqualsAndHashCode;\nimport lombok.NoArgsConstructor;\n\n/**\n * \n * @author anusha\n *\n */\n\n@Data\n@NoArgsConstructor\n@AllArgsConstructor\n@EqualsAndHashCode(callSuper = true)\n@Entity\n@Table(name = \"dynamic_field\", schema = \"master\")\npublic class DynamicField extends BaseEntity {\n\t\n\t@Id\n\t@Column(name = \"id\", nullable = false)\n\tprivate String id;\n\t\n\t@Column(name = \"lang_code\", nullable= false, length = 3)\n\tprivate String langCode;\n\t\n\t@Column(name = \"name\", nullable= false, length = 15)\n\tprivate String name;\n\t\n\t@Column(name = \"description\", nullable= true)\n\tprivate String description;\t\n\t\n\t@Column(name = \"data_type\", nullable= false)\n\tprivate String dataType;\n\t\n\t@Column(name = \"value_json\", nullable= true, length = 1000)\n\tprivate String valueJson;\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/FoundationalTrustProvider.java", + "title": "FoundationalTrustProvider.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/FoundationalTrustProvider.java", + "language": "java", + "content": "/**\r\n * \r\n */\r\npackage io.mosip.admin.bulkdataupload.entity;\r\n\r\nimport java.io.Serializable;\r\n\r\nimport jakarta.persistence.Column;\r\nimport jakarta.persistence.Entity;\r\nimport jakarta.persistence.Id;\r\nimport jakarta.persistence.Table;\r\n\r\nimport lombok.AllArgsConstructor;\r\nimport lombok.Data;\r\nimport lombok.EqualsAndHashCode;\r\nimport lombok.NoArgsConstructor;\r\n\r\n/**\r\n * @author Ramadurai Pandian\r\n *\r\n */\r\n@Data\r\n@Entity\r\n@Table(name = \"foundational_trust_provider\", schema = \"master\")\r\n@NoArgsConstructor\r\n@AllArgsConstructor\r\n@EqualsAndHashCode(callSuper = true)\r\npublic class FoundationalTrustProvider extends BaseEntity implements Serializable {\r\n\r\n\t/**\r\n\t * \r\n\t */\r\n\tprivate static final long serialVersionUID = 7547973611404461248L;\r\n\r\n\t@Id\r\n\tprivate String id;\r\n\r\n\t/**\r\n\t * The FTP name.\r\n\t */\r\n\t@Column(name = \"name\", nullable = false, length = 36)\r\n\tprivate String name;\r\n\r\n\t/**\r\n\t * The FTP address.\r\n\t */\r\n\t@Column(name = \"address\", nullable = false, length = 512)\r\n\tprivate String address;\r\n\r\n\t/**\r\n\t * The FTP email.\r\n\t */\r\n\t@Column(name = \"email\", nullable = false, length = 256)\r\n\tprivate String email;\r\n\r\n\t/**\r\n\t * The FTP contactNo.\r\n\t */\r\n\t@Column(name = \"contact_number\", nullable = false, length = 256)\r\n\tprivate String contactNo;\r\n\r\n\t/**\r\n\t * The FTP certAlias.\r\n\t */\r\n\t@Column(name = \"certificate_alias\", nullable = false, length = 256)\r\n\tprivate String certAlias;\r\n\r\n}\r\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/FoundationalTrustProviderHistory.java", + "title": "FoundationalTrustProviderHistory.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/FoundationalTrustProviderHistory.java", + "language": "java", + "content": "/**\r\n * \r\n */\r\npackage io.mosip.admin.bulkdataupload.entity;\r\n\r\nimport java.io.Serializable;\r\nimport java.time.LocalDateTime;\r\n\r\nimport jakarta.persistence.Column;\r\nimport jakarta.persistence.Entity;\r\nimport jakarta.persistence.Id;\r\nimport jakarta.persistence.Table;\r\n\r\nimport lombok.AllArgsConstructor;\r\nimport lombok.Data;\r\nimport lombok.EqualsAndHashCode;\r\nimport lombok.NoArgsConstructor;\r\n\r\n/**\r\n * @author Ramadurai Pandian\r\n *\r\n */\r\n@Data\r\n@Entity\r\n@Table(name = \"foundational_trust_provider_h\", schema = \"master\")\r\n@NoArgsConstructor\r\n@AllArgsConstructor\r\n@EqualsAndHashCode(callSuper = true)\r\npublic class FoundationalTrustProviderHistory extends BaseEntity implements Serializable {\r\n\r\n\t/**\r\n\t * \r\n\t */\r\n\tprivate static final long serialVersionUID = 7547973611404461248L;\r\n\r\n\t@Id\r\n\t@Column(name = \"id\", nullable = false, length = 36)\r\n\tprivate String id;\r\n\r\n\t/**\r\n\t * The FTP name.\r\n\t */\r\n\t@Column(name = \"name\", nullable = false, length = 36)\r\n\tprivate String name;\r\n\r\n\t/**\r\n\t * The FTP address.\r\n\t */\r\n\t@Column(name = \"address\", nullable = false, length = 512)\r\n\tprivate String address;\r\n\r\n\t/**\r\n\t * The FTP email.\r\n\t */\r\n\t@Column(name = \"email\", nullable = false, length = 256)\r\n\tprivate String email;\r\n\r\n\t/**\r\n\t * The FTP contactNo.\r\n\t */\r\n\t@Column(name = \"contact_number\", nullable = false, length = 256)\r\n\tprivate String contactNo;\r\n\r\n\t/**\r\n\t * The FTP certAlias.\r\n\t */\r\n\t@Column(name = \"certificate_alias\", nullable = false, length = 256)\r\n\tprivate String certAlias;\r\n\r\n\t@Column(name = \"eff_dtimes\")\r\n\tprivate LocalDateTime effectivetimes;\r\n\r\n}\r\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/Gender.java", + "title": "Gender.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/Gender.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.entity;\n\nimport java.io.Serializable;\n\nimport jakarta.persistence.AttributeOverride;\nimport jakarta.persistence.AttributeOverrides;\nimport jakarta.persistence.Column;\nimport jakarta.persistence.Entity;\nimport jakarta.persistence.Id;\nimport jakarta.persistence.IdClass;\nimport jakarta.persistence.Table;\n\nimport io.mosip.admin.bulkdataupload.entity.id.CodeAndLanguageCodeID;\nimport lombok.AllArgsConstructor;\nimport lombok.Data;\nimport lombok.EqualsAndHashCode;\nimport lombok.NoArgsConstructor;\n\n/**\n * Gender entity mapped according to DB\n * \n * @author Urvil Joshi\n * @author Sidhant Agarwal\n * @since 1.0.0\n *\n */\n@EqualsAndHashCode(callSuper = true)\n@Data\n@NoArgsConstructor\n@AllArgsConstructor\n@Entity\n@Table(name = \"gender\", schema = \"master\")\n@IdClass(CodeAndLanguageCodeID.class)\npublic class Gender extends BaseEntity implements Serializable {\n\tprivate static final long serialVersionUID = 1323022736883315822L;\n\n\t@Id\n\t@AttributeOverrides({\n\t\t\t@AttributeOverride(name = \"code\", column = @Column(name = \"code\", nullable = false, length = 16)),\n\t\t\t@AttributeOverride(name = \"langCode\", column = @Column(name = \"lang_code\", nullable = false, length = 3)) })\n\n\tprivate String code;\n\n\tprivate String langCode;\n\n\t@Column(name = \"name\", unique = true, nullable = false, length = 64)\n\tprivate String genderName;\n\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/Holiday.java", + "title": "Holiday.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/Holiday.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.entity;\r\n\r\nimport java.io.Serializable;\r\nimport java.time.LocalDate;\r\n\r\nimport jakarta.persistence.AttributeOverride;\r\nimport jakarta.persistence.AttributeOverrides;\r\n\r\n//github.com/mosip/mosip.git\r\n\r\nimport jakarta.persistence.Column;\r\nimport jakarta.persistence.Entity;\r\nimport jakarta.persistence.Id;\r\nimport jakarta.persistence.IdClass;\r\nimport jakarta.persistence.Table;\r\n\r\nimport io.mosip.admin.bulkdataupload.entity.id.HolidayID;\r\nimport lombok.AllArgsConstructor;\r\nimport lombok.Data;\r\nimport lombok.EqualsAndHashCode;\r\nimport lombok.NoArgsConstructor;\r\n\r\n/**\r\n * \r\n * @author Abhishek Kumar\r\n * @author Uday Kumar\r\n * @version 1.0.0\r\n * @since 24-10-2018\r\n */\r\n@EqualsAndHashCode(callSuper = true)\r\n@Data\r\n@NoArgsConstructor\r\n@AllArgsConstructor\r\n@Entity\r\n@Table(name = \"loc_holiday\", schema = \"master\")\r\n@IdClass(HolidayID.class)\r\npublic class Holiday extends BaseEntity implements Serializable {\r\n\r\n\tprivate static final long serialVersionUID = 1329042436883315822L;\r\n\r\n\t@Id\r\n\t@AttributeOverrides({\r\n\t\t\t@AttributeOverride(name = \"holidayDate\", column = @Column(name = \"holiday_date\", nullable = false)),\r\n\t\t\t@AttributeOverride(name = \"locationCode\", column = @Column(name = \"location_code\", nullable = false, length = 36)),\r\n\t\t\t@AttributeOverride(name = \"langCode\", column = @Column(name = \"lang_code\", nullable = false, length = 3)) })\r\n\tprivate LocalDate holidayDate;\r\n\tprivate String locationCode;\r\n\tprivate String langCode;\r\n\t\r\n\t@Column(name = \"holiday_name\", nullable = false, length = 64)\r\n\tprivate String holidayName;\r\n\r\n\t@Column(name = \"id\", unique = true, nullable = false)\r\n\tprivate int holidayId;\r\n\r\n\t@Column(name = \"holiday_desc\", length = 128)\r\n\tprivate String holidayDesc;\r\n\r\n}\r\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/IdType.java", + "title": "IdType.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/IdType.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.entity;\n\nimport java.io.Serializable;\n\nimport jakarta.persistence.AttributeOverride;\nimport jakarta.persistence.AttributeOverrides;\nimport jakarta.persistence.Column;\nimport jakarta.persistence.Entity;\nimport jakarta.persistence.Id;\nimport jakarta.persistence.IdClass;\nimport jakarta.persistence.Table;\n\nimport io.mosip.admin.bulkdataupload.entity.id.CodeAndLanguageCodeID;\nimport lombok.AllArgsConstructor;\nimport lombok.Data;\nimport lombok.EqualsAndHashCode;\nimport lombok.NoArgsConstructor;\n\n/**\n * Entity class for IdType.\n * \n * @author Sagar Mahapatra\n * @since 1.0.0\n *\n */\n@Data\n@Entity\n@Table(name = \"id_type\", schema = \"master\")\n@IdClass(CodeAndLanguageCodeID.class)\n@NoArgsConstructor\n@AllArgsConstructor\n@EqualsAndHashCode(callSuper = true)\npublic class IdType extends BaseEntity implements Serializable {\n\n\t/**\n\t * Serializable version id.\n\t */\n\tprivate static final long serialVersionUID = -97767928612692201L;\n\n\t@Id\n\t@AttributeOverrides({ @AttributeOverride(name = \"code\", column = @Column(name = \"code\", length = 36)),\n\t\t\t@AttributeOverride(name = \"langCode\", column = @Column(name = \"lang_code\", nullable = false, length = 3)) })\n\t/**\n\t * The idtype code.\n\t */\n\tprivate String code;\n\n\t/**\n\t * The idtype language code.\n\t */\n\tprivate String langCode;\n\n\t/**\n\t * The idtype name.\n\t */\n\t@Column(name = \"name\", nullable = false, length = 64)\n\tprivate String name;\n\n\t/**\n\t * The idtype description.\n\t */\n\t@Column(name = \"descr\", length = 128)\n\tprivate String descr;\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/IdentitySchema.java", + "title": "IdentitySchema.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/IdentitySchema.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.entity;\n\nimport java.time.LocalDateTime;\n\nimport jakarta.persistence.Column;\nimport jakarta.persistence.Entity;\nimport jakarta.persistence.Id;\nimport jakarta.persistence.Table;\n\nimport lombok.AllArgsConstructor;\nimport lombok.Data;\nimport lombok.EqualsAndHashCode;\nimport lombok.NoArgsConstructor;\n\n\n/**\n * \n * @author Anusha\n *\n */\n\n@Data\n@NoArgsConstructor\n@AllArgsConstructor\n@EqualsAndHashCode(callSuper = true)\n@Entity\n@Table(name = \"identity_schema\", schema = \"master\")\npublic class IdentitySchema extends BaseEntity {\n\t\n\t@Id\n\t@Column(name = \"id\", nullable = false)\n\tprivate String id;\n\t\n\t//id_version is generated only when schema is published\n\t@Column(name = \"id_version\", nullable = false)\n\tprivate double idVersion;\n\t\n\t@Column(name = \"title\", nullable = true, length=50)\n\tprivate String title;\n\t\n\t@Column(name = \"description\", nullable = false, length=50)\n\tprivate String description;\n\n\t//schema_json is built only when schema is published\n\t@Column(name = \"schema_json\", nullable = false, length=10240)\n\tprivate String schemaJson;\n\t\n\t@Column(name = \"status_code\", nullable = false, length=16)\n\tprivate String status;\n\t\n\t@Column(name = \"add_props\", nullable = false)\n\tprivate boolean additionalProperties;\n\t\t \n\t@Column(name = \"effective_from\", nullable = false)\n\tprivate LocalDateTime effectiveFrom;\n\t\n\t@Column(name = \"lang_code\", nullable = false)\n\tprivate String langCode;\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/IndividualType.java", + "title": "IndividualType.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/IndividualType.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.entity;\r\n\r\nimport java.io.Serializable;\r\n\r\nimport jakarta.persistence.Column;\r\nimport jakarta.persistence.Entity;\r\nimport jakarta.persistence.Id;\r\nimport jakarta.persistence.IdClass;\r\nimport jakarta.persistence.Table;\r\n\r\nimport io.mosip.admin.bulkdataupload.entity.id.CodeAndLanguageCodeID;\r\nimport lombok.AllArgsConstructor;\r\nimport lombok.Data;\r\nimport lombok.EqualsAndHashCode;\r\nimport lombok.NoArgsConstructor;\r\n\r\n/**\r\n * \r\n * Entity for Individual type\r\n * \r\n * @author Bal Vikash Sharma\r\n * @author Sidhant Agarwal\r\n * @since 1.0.0\r\n */\r\n@EqualsAndHashCode(callSuper = true)\r\n@Data\r\n@NoArgsConstructor\r\n@AllArgsConstructor\r\n@Entity\r\n@Table(name = \"individual_type\", schema = \"master\")\r\n@IdClass(CodeAndLanguageCodeID.class)\r\npublic class IndividualType extends BaseEntity implements Serializable {\r\n\r\n\t/**\r\n\t * \r\n\t */\r\n\tprivate static final long serialVersionUID = -5585825705521742941L;\r\n\r\n\t/**\r\n\t * Field for individual type code\r\n\t */\r\n\t@Id\r\n\t@Column(name = \"code\")\r\n\tprivate String code;\r\n\r\n\t@Id\r\n\t@Column(name = \"lang_code\", nullable = false)\r\n\tprivate String langCode;\r\n\r\n\t/**\r\n\t * Field for individual type name\r\n\t */\r\n\t@Column(name = \"name\", nullable = false, length = 64)\r\n\tprivate String name;\r\n\r\n}" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/Language.java", + "title": "Language.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/Language.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.entity;\r\n\r\nimport java.io.Serializable;\r\n\r\nimport jakarta.persistence.Column;\r\nimport jakarta.persistence.Entity;\r\nimport jakarta.persistence.Id;\r\nimport jakarta.persistence.Table;\r\n\r\nimport lombok.AllArgsConstructor;\r\nimport lombok.Data;\r\nimport lombok.EqualsAndHashCode;\r\nimport lombok.NoArgsConstructor;\r\n\r\n/**\r\n * \r\n * Entity for language\r\n * \r\n * @author Bal Vikash Sharma\r\n * @since 1.0.0\r\n */\r\n@EqualsAndHashCode(callSuper = true)\r\n@Data\r\n@NoArgsConstructor\r\n@AllArgsConstructor\r\n@Entity\r\n@Table(name = \"language\", schema = \"master\")\r\npublic class Language extends BaseEntity implements Serializable {\r\n\r\n\t/**\r\n\t * \r\n\t */\r\n\tprivate static final long serialVersionUID = -5585825705521742941L;\r\n\r\n\t/**\r\n\t * Field for language code\r\n\t */\r\n\t@Id\r\n\t@Column(name = \"code\", unique = true, nullable = false, length = 3)\r\n\tprivate String code;\r\n\r\n\t/**\r\n\t * Field for language name\r\n\t */\r\n\t@Column(name = \"name\", nullable = false, length = 64)\r\n\tprivate String name;\r\n\r\n\t/**\r\n\t * Field for language family\r\n\t */\r\n\t@Column(name = \"family\", length = 64)\r\n\tprivate String family;\r\n\r\n\t/**\r\n\t * Field for language native name\r\n\t */\r\n\t@Column(name = \"native_name\", length = 64)\r\n\tprivate String nativeName;\r\n\r\n}\r\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/Location.java", + "title": "Location.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/Location.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.entity;\n\nimport java.io.Serializable;\nimport java.util.List;\n\nimport jakarta.persistence.Column;\nimport jakarta.persistence.Entity;\nimport jakarta.persistence.FetchType;\nimport jakarta.persistence.Id;\nimport jakarta.persistence.IdClass;\nimport jakarta.persistence.OneToMany;\nimport jakarta.persistence.Table;\n\nimport io.mosip.admin.bulkdataupload.entity.id.CodeAndLanguageCodeID;\nimport lombok.AllArgsConstructor;\nimport lombok.Data;\nimport lombok.EqualsAndHashCode;\nimport lombok.NoArgsConstructor;\n\n/**\n * \n * @author Srinivasan\n *\n */\n@EqualsAndHashCode(callSuper = true)\n@Data\n@NoArgsConstructor\n@AllArgsConstructor\n@Entity\n@Table(name = \"location\", schema = \"master\")\n@IdClass(CodeAndLanguageCodeID.class)\npublic class Location extends BaseEntity implements Serializable {\n\n\t/**\n\t * generated serial Id\n\t */\n\n\tprivate static final long serialVersionUID = -5585825705521742941L;\n\n\t@Id\n\t@Column(name = \"code\")\n\tprivate String code;\n\n\t@Column(name = \"name\", nullable = false, length = 128)\n\tprivate String name;\n\n\t@Column(name = \"hierarchy_level\", nullable = false)\n\tprivate short hierarchyLevel;\n\n\t@Column(name = \"hierarchy_level_name\", nullable = false, length = 64)\n\tprivate String hierarchyName;\n\n\t@Column(name = \"parent_loc_code\", nullable = false, length = 32)\n\tprivate String parentLocCode;\n\n\t@Id\n\t@Column(name = \"lang_code\", nullable = false, length = 3)\n\tprivate String langCode;\n\n\t@OneToMany(mappedBy = \"location\", fetch = FetchType.LAZY)\n\tprivate List registrationCenters;\n\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/LocationHierarchy.java", + "title": "LocationHierarchy.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/LocationHierarchy.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.entity;\r\n\r\nimport java.io.Serializable;\r\n\r\nimport jakarta.persistence.AttributeOverride;\r\nimport jakarta.persistence.AttributeOverrides;\r\nimport jakarta.persistence.Column;\r\nimport jakarta.persistence.Entity;\r\nimport jakarta.persistence.Id;\r\nimport jakarta.persistence.IdClass;\r\nimport jakarta.persistence.Table;\r\n\r\nimport io.mosip.admin.bulkdataupload.entity.id.LocationHierarchyId;\r\nimport lombok.AllArgsConstructor;\r\nimport lombok.Data;\r\nimport lombok.EqualsAndHashCode;\r\nimport lombok.NoArgsConstructor;\r\n\r\n/**\r\n * @author Megha Tanga\r\n * @since 1.0.0\r\n *\r\n */\r\n@EqualsAndHashCode(callSuper = true)\r\n@Data\r\n@NoArgsConstructor\r\n@AllArgsConstructor\r\n@Entity\r\n@Table(name = \"loc_hierarchy_list\", schema = \"master\")\r\n@IdClass(LocationHierarchyId.class)\r\npublic class LocationHierarchy extends BaseEntity implements Serializable {\r\n\r\n\tprivate static final long serialVersionUID = -854194758755759037L;\r\n\r\n\t@Id\r\n\t@AttributeOverrides({\r\n\t\t\t@AttributeOverride(name = \"hierarchyLevel\", column = @Column(name = \"hierarchy_level\", nullable = false)),\r\n\t\t\t@AttributeOverride(name = \"hierarchyLevelName\", column = @Column(name = \"hierarchy_level_name\", nullable = false, length = 64)),\r\n\t\t\t@AttributeOverride(name = \"langCode\", column = @Column(name = \"lang_code\", nullable = false, length = 3)) })\r\n\tprivate short hierarchyLevel;\r\n\tprivate String hierarchyLevelName;\r\n\tprivate String langCode;\r\n\t\r\n}\r\n\t\r\n\r\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/MOSIPDeviceService.java", + "title": "MOSIPDeviceService.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/MOSIPDeviceService.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.entity;\n\nimport java.time.LocalDateTime;\n\nimport jakarta.persistence.Column;\nimport jakarta.persistence.Entity;\nimport jakarta.persistence.FetchType;\nimport jakarta.persistence.Id;\nimport jakarta.persistence.JoinColumn;\nimport jakarta.persistence.ManyToOne;\nimport jakarta.persistence.Table;\n\nimport lombok.AllArgsConstructor;\nimport lombok.Data;\nimport lombok.EqualsAndHashCode;\nimport lombok.NoArgsConstructor;\n\n/**\n * The Entity MOSIPDeviceService.\n * \n * @author Megha Tanga\n */\n@Entity\n@Table(name = \"mosip_device_service\", schema = \"master\")\n@Data\n@EqualsAndHashCode(callSuper = true)\n@NoArgsConstructor\n@AllArgsConstructor\npublic class MOSIPDeviceService extends BaseEntity {\n\n\t/** The id. */\n\t@Id\n\t@Column(name = \"id\", nullable = false, length = 36)\n\tprivate String id;\n\n\t/** The sw binary hash. */\n\t@Column(name = \"sw_binary_hash\", nullable = false)\n\tprivate byte[] swBinaryHash;\n\n\t/** The sw version. */\n\t@Column(name = \"sw_version\", nullable = false, length = 64)\n\tprivate String swVersion;\n\n\t/** The d provider id. */\n\t@Column(name = \"dprovider_id\", nullable = false, length = 36)\n\tprivate String deviceProviderId;\n\n\t/** The d type code. */\n\t@Column(name = \"dstype_code\", nullable = false, length = 36)\n\tprivate String regDeviceSubCode;\n\n\t/** The ds type code. */\n\t@Column(name = \"dtype_code\", nullable = false, length = 36)\n\tprivate String regDeviceTypeCode;\n\n\t/** The make. */\n\t@Column(name = \"make\", length = 36)\n\tprivate String make;\n\n\t/** The model. */\n\t@Column(name = \"model\", length = 36)\n\tprivate String model;\n\n\t/** The sw created time. */\n\t@Column(name = \"sw_cr_dtimes\")\n\tprivate LocalDateTime swCreateDateTime;\n\n\t/** The sw expiry time. */\n\t@Column(name = \"sw_expiry_dtimes\")\n\tprivate LocalDateTime swExpiryDateTime;\n\n\t@ManyToOne(fetch = FetchType.LAZY)\n\t@JoinColumn(name = \"dprovider_id\", referencedColumnName = \"id\", insertable = false, updatable = false)\n\tprivate DeviceProvider deviceProvider;\n\n\t@ManyToOne(fetch = FetchType.LAZY)\n\t@JoinColumn(name = \"dtype_code\", referencedColumnName = \"code\", insertable = false, updatable = false)\n\tprivate RegistrationDeviceType registrationDeviceType;\n\n\t@ManyToOne(fetch = FetchType.LAZY)\n\t@JoinColumn(name = \"dstype_code\", referencedColumnName = \"code\", insertable = false, updatable = false)\n\tprivate RegistrationDeviceSubType registrationDeviceSubType;\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/MOSIPDeviceServiceHistory.java", + "title": "MOSIPDeviceServiceHistory.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/MOSIPDeviceServiceHistory.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.entity;\r\n\r\nimport java.io.Serializable;\r\nimport java.time.LocalDateTime;\r\n\r\nimport jakarta.persistence.Column;\r\nimport jakarta.persistence.Entity;\r\nimport jakarta.persistence.Id;\r\nimport jakarta.persistence.Table;\r\n\r\nimport lombok.AllArgsConstructor;\r\nimport lombok.Data;\r\nimport lombok.EqualsAndHashCode;\r\nimport lombok.NoArgsConstructor;\r\n\r\n/**\r\n * \r\n * @author Megha Tanga\r\n *\r\n */\r\n\r\n@Data\r\n@Entity\r\n@Table(name = \"mosip_device_service_h\", schema = \"master\")\r\n@NoArgsConstructor\r\n@AllArgsConstructor\r\n@EqualsAndHashCode(callSuper = true)\r\npublic class MOSIPDeviceServiceHistory extends BaseEntity implements Serializable {\r\n\r\n\t/**\r\n\t * \r\n\t */\r\n\tprivate static final long serialVersionUID = -4926799412583761896L;\r\n\r\n\t@Id\r\n\t@Column(name = \"id\", nullable = false, length = 36)\r\n\tprivate String id;\r\n\r\n\t@Column(name = \"sw_version\", nullable = false, length = 64, unique = true)\r\n\tprivate String swVersion;\r\n\r\n\t/** The d provider id. */\r\n\t@Column(name = \"dprovider_id\", nullable = false, length = 36)\r\n\tprivate String deviceProviderId;\r\n\r\n\t/** The d type code. */\r\n\t@Column(name = \"dstype_code\", nullable = false, length = 36)\r\n\tprivate String regDeviceSubCode;\r\n\r\n\t/** The ds type code. */\r\n\t@Column(name = \"dtype_code\", nullable = false, length = 36)\r\n\tprivate String regDeviceTypeCode;\r\n\r\n\t@Column(name = \"make\", nullable = false, length = 36, unique = true)\r\n\tprivate String make;\r\n\r\n\t@Column(name = \"model\", nullable = false, length = 36, unique = true)\r\n\tprivate String model;\r\n\r\n\t@Column(name = \"sw_cr_dtimes\", nullable = false)\r\n\tprivate LocalDateTime swCreateDateTime;\r\n\r\n\t@Column(name = \"sw_expiry_dtimes\", nullable = false)\r\n\tprivate LocalDateTime swExpiryDateTime;\r\n\r\n\t@Column(name = \"sw_binary_hash\", nullable = false)\r\n\tprivate byte[] swBinaryHash;\r\n\r\n\t@Column(name = \"eff_dtimes\", nullable = false)\r\n\tprivate LocalDateTime effectDateTime;\r\n\r\n}\r\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/Machine.java", + "title": "Machine.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/Machine.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.entity;\r\n\r\nimport java.io.Serializable;\r\nimport java.time.LocalDateTime;\r\n\r\nimport jakarta.persistence.AttributeOverride;\r\nimport jakarta.persistence.Column;\r\nimport jakarta.persistence.Entity;\r\nimport jakarta.persistence.FetchType;\r\nimport jakarta.persistence.Id;\r\nimport jakarta.persistence.JoinColumn;\r\nimport jakarta.persistence.JoinColumns;\r\nimport jakarta.persistence.ManyToOne;\r\nimport jakarta.persistence.Table;\r\nimport jakarta.persistence.Transient;\r\n\r\nimport lombok.AllArgsConstructor;\r\nimport lombok.Data;\r\nimport lombok.EqualsAndHashCode;\r\nimport lombok.NoArgsConstructor;\r\n\r\n/**\r\n * \r\n * Entity for Machine Details\r\n * \r\n * @author Megha Tanga\r\n * @since 1.0.1\r\n *\r\n */\r\n\r\n@EqualsAndHashCode(callSuper = true)\r\n@Data\r\n@NoArgsConstructor\r\n@AllArgsConstructor\r\n@Entity\r\n@Table(name = \"machine_master\", schema = \"master\")\r\npublic class Machine extends BaseEntity implements Serializable {\r\n\r\n\t/**\r\n\t * \r\n\t */\r\n\tprivate static final long serialVersionUID = -5585825705521742941L;\r\n\r\n\t@Id\r\n\t@AttributeOverride(name = \"id\", column = @Column(name = \"id\", nullable = false, length = 10))\r\n\tprivate String id;\r\n\t\r\n\t@Column(name = \"lang_code\", nullable = false, length = 3)\r\n\tprivate String langCode;\r\n\r\n\t/**\r\n\t * Field for machine name\r\n\t */\r\n\t@Column(name = \"name\", nullable = false, length = 64)\r\n\tprivate String name;\r\n\r\n\t/**\r\n\t * Field for machine serial number\r\n\t */\r\n\t@Column(name = \"serial_num\", nullable = true, length = 64)\r\n\tprivate String serialNum;\r\n\r\n\t/**\r\n\t * Field for machine ip address\r\n\t */\r\n\t@Column(name = \"ip_address\", length = 17)\r\n\tprivate String ipAddress;\r\n\t/**\r\n\t * Field for machine mac address\r\n\t */\r\n\t@Column(name = \"mac_address\", nullable = true, length = 64)\r\n\tprivate String macAddress;\r\n\r\n\t@Column(name = \"regcntr_id\", length = 10)\r\n\tprivate String regCenterId;\r\n\r\n\t/**\r\n\t * Field for machine specific id\r\n\t */\r\n\t@Column(name = \"mspec_id\", nullable = false, length = 36)\r\n\tprivate String machineSpecId;\r\n\r\n\t/**\r\n\t * Field for validity end Date and Time for machine\r\n\t */\r\n\t@Column(name = \"validity_end_dtimes\")\r\n\tprivate LocalDateTime validityDateTime;\r\n\r\n\t@Column(name = \"zone_code\", length = 36)\r\n\tprivate String zoneCode;\r\n\r\n\t@ManyToOne(fetch = FetchType.LAZY)\r\n\t@JoinColumns({ @JoinColumn(name = \"mspec_id\", referencedColumnName = \"id\", insertable = false, updatable = false),\r\n\t\t\t@JoinColumn(name = \"lang_code\", referencedColumnName = \"lang_code\", insertable = false, updatable = false) })\r\n\tprivate MachineSpecification machineSpecification;\r\n\r\n\t@Transient\r\n\tprivate String mapStatus;\r\n\t\r\n\t/**\r\n\t * Field for reg machine public key\r\n\t */\r\n\t@Column(name = \"public_key\", nullable = true, length = 1024)\r\n\tprivate String publicKey;\r\n\t\r\n\t/**\r\n\t * Field for reg machine public key SHA256 hash\r\n\t */\r\n\t@Column(name = \"key_index\", nullable = true)\r\n\tprivate String keyIndex;\r\n\r\n\t/**\r\n\t * Field for reg machine signature verification public key\r\n\t */\r\n\t@Column(name = \"sign_public_key\", nullable = true, length = 1024)\r\n\tprivate String signPublicKey;\r\n\r\n\t/**\r\n\t * Field for reg machine signature verification public key SHA256 hash\r\n\t */\r\n\t@Column(name = \"sign_key_index\", nullable = true)\r\n\tprivate String signKeyIndex;\r\n}\r\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/MachineHistory.java", + "title": "MachineHistory.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/MachineHistory.java", + "language": "java", + "content": "\r\npackage io.mosip.admin.bulkdataupload.entity;\r\n\r\nimport java.io.Serializable;\r\nimport java.time.LocalDateTime;\r\n\r\nimport jakarta.persistence.AttributeOverride;\r\nimport jakarta.persistence.AttributeOverrides;\r\nimport jakarta.persistence.Column;\r\nimport jakarta.persistence.Entity;\r\nimport jakarta.persistence.Id;\r\nimport jakarta.persistence.IdClass;\r\nimport jakarta.persistence.Table;\r\n\r\nimport io.mosip.admin.bulkdataupload.entity.id.IdAndEffectDateTimeID;\r\nimport lombok.AllArgsConstructor;\r\nimport lombok.Data;\r\nimport lombok.EqualsAndHashCode;\r\nimport lombok.NoArgsConstructor;\r\n\r\n/**\r\n * Entity for Machine History\r\n *\r\n * @author Megha Tanga\r\n * @since 1.0.0\r\n *\r\n */\r\n@EqualsAndHashCode(callSuper = true)\r\n@Data\r\n@NoArgsConstructor\r\n@AllArgsConstructor\r\n@Entity\r\n@Table(name = \"machine_master_h\", schema = \"master\")\r\n@IdClass(IdAndEffectDateTimeID.class)\r\npublic class MachineHistory extends BaseEntity implements Serializable {\r\n\t/**\r\n\t * \r\n\t */\r\n\t@Id\r\n\t@AttributeOverrides({ @AttributeOverride(name = \"id\", column = @Column(name = \"id\", nullable = false, length = 10)),\r\n\t\t\t@AttributeOverride(name = \"effectDateTime\", column = @Column(name = \"eff_dtimes\", nullable = false)),\r\n\t\t\t@AttributeOverride(name = \"langCode\", column = @Column(name = \"lang_code\", nullable = false, length = 3)) })\r\n\tprivate String id;\r\n\tprivate LocalDateTime effectDateTime;\r\n\tprivate String langCode;\r\n\r\n\t/**\r\n\t * \r\n\t */\r\n\tprivate static final long serialVersionUID = -5585825705521742941L;\r\n\t/**\r\n\t * Field for machine name\r\n\t */\r\n\t@Column(name = \"name\", nullable = false, length = 64)\r\n\tprivate String name;\r\n\r\n\t/**\r\n\t * Field for machine mac address\r\n\t */\r\n\t@Column(name = \"mac_address\", nullable = false, length = 64)\r\n\tprivate String macAddress;\r\n\r\n\t/**\r\n\t * Field for machine serial number\r\n\t */\r\n\t@Column(name = \"serial_num\", nullable = false, length = 64)\r\n\tprivate String serialNum;\r\n\r\n\t@Column(name = \"regcntr_id\", length = 10)\r\n\tprivate String regCenterId;\r\n\r\n\t/**\r\n\t * Field for machine ip address\r\n\t */\r\n\t@Column(name = \"ip_address\", length = 17)\r\n\tprivate String ipAddress;\r\n\r\n\t/**\r\n\t * Field for machine specific id\r\n\t */\r\n\t@Column(name = \"mspec_id\", nullable = false, length = 36)\r\n\tprivate String machineSpecId;\r\n\r\n\t/**\r\n\t * Field to hold effected date and time\r\n\t */\r\n\t@Column(name = \"validity_end_dtimes\")\r\n\tprivate LocalDateTime validityDateTime;\r\n\r\n\t@Column(name = \"zone_code\", length = 36)\r\n\tprivate String zoneCode;\r\n\t\r\n\t/**\r\n\t * Field for reg machine public key\r\n\t */\r\n\t@Column(name = \"public_key\", length=1024)\r\n\tprivate String publicKey;\r\n\t\r\n\r\n\t/**\r\n\t * Field for reg machine public key SHA256 hash\r\n\t */\r\n\t@Column(name = \"key_index\")\r\n\tprivate String keyIndex;\r\n\t\r\n\t@Column(name = \"sign_public_key\", nullable = true, length = 1024)\r\n\tprivate String signPublicKey;\r\n\r\n\t/**\r\n\t * Field for reg machine signature verification public key SHA256 hash\r\n\t */\r\n\t@Column(name = \"sign_key_index\", nullable = true)\r\n\tprivate String signKeyIndex;\r\n\r\n}\r\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/MachineSpecification.java", + "title": "MachineSpecification.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/MachineSpecification.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.entity;\r\n\r\nimport java.io.Serializable;\r\n\r\nimport jakarta.persistence.AttributeOverride;\r\nimport jakarta.persistence.Column;\r\nimport jakarta.persistence.Entity;\r\nimport jakarta.persistence.FetchType;\r\nimport jakarta.persistence.Id;\r\nimport jakarta.persistence.JoinColumn;\r\nimport jakarta.persistence.JoinColumns;\r\nimport jakarta.persistence.ManyToOne;\r\nimport jakarta.persistence.Table;\r\n\r\nimport io.mosip.admin.bulkdataupload.entity.id.IdAndLanguageCodeID;\r\nimport lombok.AllArgsConstructor;\r\nimport lombok.Data;\r\nimport lombok.EqualsAndHashCode;\r\nimport lombok.NoArgsConstructor;\r\n\r\n/**\r\n * Entity for Machine Specifications\r\n * \r\n * @author Megha Tanga\r\n * @since 1.0.0\r\n *\r\n */\r\n@EqualsAndHashCode(callSuper = true)\r\n@Data\r\n@NoArgsConstructor\r\n@AllArgsConstructor\r\n@Entity\r\n@Table(name = \"machine_spec\", schema = \"master\")\r\npublic class MachineSpecification extends BaseEntity implements Serializable {\r\n\r\n\t/**\r\n\t* \r\n\t*/\r\n\tprivate static final long serialVersionUID = 1L;\r\n\r\n\t@Id\r\n\t@AttributeOverride(name = \"id\", column = @Column(name = \"id\", nullable = false, length = 36))\r\n\tprivate String id;\r\n\t\r\n\t@Column(name = \"lang_code\", nullable = false, length = 3)\r\n\tprivate String langCode;\r\n\r\n\t/**\r\n\t * Field for machine Specification name\r\n\t */\r\n\t@Column(name = \"name\", nullable = false, length = 64)\r\n\tprivate String name;\r\n\r\n\t/**\r\n\t * Field for machine Specification brand\r\n\t */\r\n\t@Column(name = \"brand\", nullable = false, length = 32)\r\n\tprivate String brand;\r\n\r\n\t/**\r\n\t * Field for machine Specification model\r\n\t */\r\n\t@Column(name = \"model\", nullable = false, length = 16)\r\n\tprivate String model;\r\n\r\n\t/**\r\n\t * Field for machine Specification machineTypeCode\r\n\t */\r\n\t@Column(name = \"mtyp_code\", nullable = false, length = 36)\r\n\tprivate String machineTypeCode;\r\n\r\n\t/**\r\n\t * Field for machine Specification minDriverversion\r\n\t */\r\n\t@Column(name = \"min_driver_ver\", nullable = false, length = 16)\r\n\tprivate String minDriverversion;\r\n\r\n\t/**\r\n\t * Field for machine Specification description\r\n\t */\r\n\t@Column(name = \"descr\", length = 256)\r\n\tprivate String description;\r\n\r\n\t@ManyToOne(fetch = FetchType.LAZY)\r\n\t@JoinColumns({\r\n\t\t\t@JoinColumn(name = \"mtyp_code\", referencedColumnName = \"code\", insertable = false, updatable = false),\r\n\t\t\t@JoinColumn(name = \"lang_code\", referencedColumnName = \"lang_code\", insertable = false, updatable = false) })\r\n\tprivate MachineType machineType;\r\n\r\n}\r\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/MachineType.java", + "title": "MachineType.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/MachineType.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.entity;\r\n\r\nimport java.io.Serializable;\r\n\r\nimport jakarta.persistence.Column;\r\nimport jakarta.persistence.Entity;\r\nimport jakarta.persistence.Id;\r\nimport jakarta.persistence.Table;\r\n\r\nimport lombok.AllArgsConstructor;\r\nimport lombok.Data;\r\nimport lombok.EqualsAndHashCode;\r\nimport lombok.NoArgsConstructor;\r\n\r\n/**\r\n * Entity for Machine Type\r\n * \r\n * @author Megha Tanga\r\n * @since 1.0.0\r\n *\r\n */\r\n@EqualsAndHashCode(callSuper = true)\r\n@Data\r\n@NoArgsConstructor\r\n@AllArgsConstructor\r\n@Entity\r\n@Table(name = \"machine_type\", schema = \"master\")\r\npublic class MachineType extends BaseEntity implements Serializable {\r\n\r\n\tprivate static final long serialVersionUID = -8541947587557590379L;\r\n\r\n\t/**\r\n\t * Field for composite primary key code and Language code\r\n\t */\r\n\t@Id\r\n\t@Column(name = \"code\")\r\n\tprivate String code;\r\n\r\n\t@Column(name = \"lang_code\")\r\n\tprivate String langCode;\r\n\r\n\t/**\r\n\t * Field for Machine Type name\r\n\t */\r\n\t@Column(name = \"name\", nullable = false, length = 64)\r\n\tprivate String name;\r\n\r\n\t/**\r\n\t * Field for Machine Type description\r\n\t */\r\n\t@Column(name = \"descr\", length = 128)\r\n\tprivate String description;\r\n}\r\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/ModuleDetail.java", + "title": "ModuleDetail.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/ModuleDetail.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.entity;\r\n\r\nimport java.io.Serializable;\r\n\r\nimport jakarta.persistence.Column;\r\nimport jakarta.persistence.Entity;\r\nimport jakarta.persistence.Id;\r\nimport jakarta.persistence.IdClass;\r\nimport jakarta.persistence.Table;\r\n\r\nimport io.mosip.admin.bulkdataupload.entity.id.IdAndLanguageCodeID;\r\nimport lombok.AllArgsConstructor;\r\nimport lombok.Data;\r\nimport lombok.EqualsAndHashCode;\r\nimport lombok.NoArgsConstructor;\r\n\r\n@EqualsAndHashCode(callSuper = true)\r\n@Data\r\n@NoArgsConstructor\r\n@AllArgsConstructor\r\n@Entity\r\n@Table(name = \"module_detail\", schema = \"master\")\r\n@IdClass(IdAndLanguageCodeID.class)\r\npublic class ModuleDetail extends BaseEntity implements Serializable {\r\n\r\n\t/**\r\n\t * \r\n\t */\r\n\tprivate static final long serialVersionUID = 3084280743182524889L;\r\n\r\n\t@Id\r\n\t@Column(name = \"id\", nullable = false, length = 36)\r\n\tprivate String id;\r\n\r\n\t@Id\r\n\t@Column(name = \"lang_code\", nullable = false, length = 3)\r\n\tprivate String langCode;\r\n\r\n\t@Column(name = \"name\", nullable = false, length = 64)\r\n\tprivate String name;\r\n\r\n\t@Column(name = \"descr\", length = 128)\r\n\tprivate String description;\r\n\r\n}\r\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/ReasonCategory.java", + "title": "ReasonCategory.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/ReasonCategory.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.entity;\r\n\r\nimport java.io.Serializable;\r\nimport java.util.ArrayList;\r\nimport java.util.List;\r\n\r\nimport jakarta.persistence.CascadeType;\r\nimport jakarta.persistence.Column;\r\nimport jakarta.persistence.Entity;\r\nimport jakarta.persistence.Id;\r\nimport jakarta.persistence.IdClass;\r\nimport jakarta.persistence.OneToMany;\r\nimport jakarta.persistence.Table;\r\n\r\nimport io.mosip.admin.bulkdataupload.entity.id.CodeAndLanguageCodeID;\r\nimport lombok.AllArgsConstructor;\r\nimport lombok.Data;\r\nimport lombok.EqualsAndHashCode;\r\nimport lombok.NoArgsConstructor;\r\n\r\n@EqualsAndHashCode(callSuper = true)\r\n@Data\r\n@NoArgsConstructor\r\n@AllArgsConstructor\r\n@Entity\r\n@Table(name = \"reason_category\", schema = \"master\")\r\n@IdClass(CodeAndLanguageCodeID.class)\r\npublic class ReasonCategory extends BaseEntity implements Serializable {\r\n\r\n\t/**\r\n\t * \r\n\t */\r\n\tprivate static final long serialVersionUID = 1440279821197074364L;\r\n\r\n\t@Id\r\n\t@Column(name = \"code\", nullable = false)\r\n\tprivate String code;\r\n\r\n\t@Id\r\n\t@Column(name = \"lang_code\", nullable = false, length = 3)\r\n\tprivate String langCode;\r\n\r\n\t@Column(name = \"name\")\r\n\tprivate String name;\r\n\r\n\t@Column(name = \"descr\")\r\n\tprivate String description;\r\n\r\n\t@OneToMany(mappedBy = \"reasonCategory\", cascade = CascadeType.ALL)\r\n\tprivate List reasonList = new ArrayList<>();\r\n\r\n}\r\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/ReasonList.java", + "title": "ReasonList.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/ReasonList.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.entity;\r\n\r\nimport java.io.Serializable;\r\n\r\nimport jakarta.persistence.Column;\r\nimport jakarta.persistence.Entity;\r\nimport jakarta.persistence.Id;\r\nimport jakarta.persistence.IdClass;\r\nimport jakarta.persistence.JoinColumn;\r\nimport jakarta.persistence.JoinColumns;\r\nimport jakarta.persistence.ManyToOne;\r\nimport jakarta.persistence.Table;\r\n\r\nimport io.mosip.admin.bulkdataupload.entity.id.CodeLangCodeAndRsnCatCodeID;\r\nimport lombok.AllArgsConstructor;\r\nimport lombok.Data;\r\nimport lombok.EqualsAndHashCode;\r\nimport lombok.NoArgsConstructor;\r\n\r\n@EqualsAndHashCode(callSuper = true)\r\n@Data\r\n@NoArgsConstructor\r\n@AllArgsConstructor\r\n@Entity\r\n@Table(name = \"reason_list\", schema = \"master\")\r\n@IdClass(CodeLangCodeAndRsnCatCodeID.class)\r\npublic class ReasonList extends BaseEntity implements Serializable {\r\n\r\n\t/**\r\n\t * \r\n\t */\r\n\tprivate static final long serialVersionUID = -572990183711593868L;\r\n\r\n\t@Id\r\n\t@Column(name = \"rsncat_code\", nullable = false, length = 36)\r\n\tprivate String rsnCatCode;\r\n\t@Id\r\n\t@Column(name = \"code\", nullable = false, length = 36)\r\n\tprivate String code;\r\n\t@Id\r\n\t@Column(name = \"lang_code\", nullable = false, length = 3)\r\n\tprivate String langCode;\r\n\r\n\t@Column(name = \"name\", nullable = false, length = 64)\r\n\tprivate String name;\r\n\r\n\t@Column(name = \"descr\", length = 256)\r\n\tprivate String description;\r\n\r\n\t@ManyToOne\r\n\t@JoinColumns({\r\n\t\t\t@JoinColumn(name = \"rsncat_code\", referencedColumnName = \"code\", insertable = false, updatable = false),\r\n\t\t\t@JoinColumn(name = \"lang_code\", referencedColumnName = \"lang_code\", insertable = false, updatable = false) })\r\n\tprivate ReasonCategory reasonCategory;\r\n\r\n}\r\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/RegWorkingNonWorking.java", + "title": "RegWorkingNonWorking.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/RegWorkingNonWorking.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.entity;\r\n\r\nimport java.io.Serializable;\r\n\r\nimport jakarta.persistence.Column;\r\nimport jakarta.persistence.Entity;\r\nimport jakarta.persistence.Id;\r\nimport jakarta.persistence.IdClass;\r\nimport jakarta.persistence.JoinColumn;\r\nimport jakarta.persistence.JoinColumns;\r\nimport jakarta.persistence.ManyToOne;\r\nimport jakarta.persistence.Table;\r\n\r\nimport io.mosip.admin.bulkdataupload.entity.id.RegWorkingNonWorkingId;\r\nimport lombok.AllArgsConstructor;\r\nimport lombok.Data;\r\nimport lombok.EqualsAndHashCode;\r\nimport lombok.NoArgsConstructor;\r\n\r\n@Data\r\n@EqualsAndHashCode(callSuper = true)\r\n@Entity\r\n@Table(name = \"reg_working_nonworking\", schema = \"master\")\r\n@NoArgsConstructor\r\n@AllArgsConstructor\r\n@IdClass(RegWorkingNonWorkingId.class)\r\npublic class RegWorkingNonWorking extends BaseEntity implements Serializable {\r\n\r\n\t/**\r\n\t * \r\n\t */\r\n\tprivate static final long serialVersionUID = -5192880804937801240L;\r\n\r\n\t@Id\r\n\t@Column(name = \"regcntr_id\", nullable = false, length = 10)\r\n\tprivate String registrationCenterId;\r\n\r\n\t@Id\r\n\t@Column(name = \"day_code\", nullable = false, length = 3)\r\n\tprivate String dayCode;\r\n\r\n\t@Column(name = \"lang_code\", nullable = false, length = 3)\r\n\tprivate String languagecode;\r\n\r\n\t@Column(name = \"is_working\", nullable = false)\r\n\tprivate boolean isWorking;\r\n\r\n\t@ManyToOne\r\n\t@JoinColumns({ @JoinColumn(name = \"day_code\", referencedColumnName = \"code\", insertable = false, updatable = false),\r\n\t\t\t@JoinColumn(name = \"lang_code\", referencedColumnName = \"lang_code\", insertable = false, updatable = false) })\r\n\tprivate DaysOfWeek daysOfWeek;\r\n\r\n//\t@ManyToOne\r\n//\t@JoinColumns({\r\n//\t\t@JoinColumn(name=\"id\",referencedColumnName=\"id\",insertable=false,updatable=false),\r\n//\t\t@JoinColumn(name=\"lang_code\",referencedColumnName=\"lang_code\",insertable=false,updatable=false)\r\n//\t})\r\n//\tprivate RegistrationCenter registrationCenter;\r\n\r\n}\r\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/RegisteredDevice.java", + "title": "RegisteredDevice.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/RegisteredDevice.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.entity;\r\n\r\nimport java.time.LocalDateTime;\r\n\r\nimport jakarta.persistence.Column;\r\nimport jakarta.persistence.Entity;\r\nimport jakarta.persistence.FetchType;\r\nimport jakarta.persistence.Id;\r\nimport jakarta.persistence.JoinColumn;\r\nimport jakarta.persistence.ManyToOne;\r\nimport jakarta.persistence.Table;\r\n\r\nimport lombok.AllArgsConstructor;\r\nimport lombok.Data;\r\nimport lombok.EqualsAndHashCode;\r\nimport lombok.NoArgsConstructor;\r\n\r\n/**\r\n * Registered Device Service DTO\r\n * \r\n * @author Srinivasan\r\n * @since 1.0.0\r\n *\r\n */\r\n@Entity\r\n@Table(name = \"registered_device_master\", schema = \"master\")\r\n@Data\r\n@EqualsAndHashCode(callSuper = true)\r\n@NoArgsConstructor\r\n@AllArgsConstructor\r\npublic class RegisteredDevice extends BaseEntity {\r\n\r\n\t@Id\r\n\t@Column(name = \"code\", length = 36)\r\n\tprivate String code;\r\n\r\n\t@Column(name = \"dtype_code\", length = 36)\r\n\tprivate String deviceTypeCode;\r\n\r\n\t@Column(name = \"dstype_code\", length = 36)\r\n\tprivate String deviceSTypeCode;\r\n\r\n\t@Column(name = \"status_code\", length = 64)\r\n\tprivate String statusCode;\r\n\r\n\t@Column(name = \"device_id\", length = 256)\r\n\tprivate String deviceId;\r\n\r\n\t@Column(name = \"device_sub_id\", length = 256)\r\n\tprivate String deviceSubId;\r\n\r\n\t@Column(name = \"purpose\", length = 64)\r\n\tprivate String purpose;\r\n\r\n\t@Column(name = \"firmware\", length = 128)\r\n\tprivate String firmware;\r\n\r\n\t// json inner class\r\n\t@Column(name = \"digital_id\", length = 1024)\r\n\tprivate String digitalId;\r\n\r\n\t// inner class\r\n\t@Column(name = \"serial_number\", unique = true, length = 64)\r\n\tprivate String serialNo;\r\n\r\n\t// inner class\r\n\t@Column(name = \"provider_id\", unique = true, length = 36)\r\n\tprivate String dpId;\r\n\r\n\t// inner class\r\n\t@Column(name = \"provider_name\", length = 128)\r\n\tprivate String dp;\r\n\r\n\t// inner class\r\n\t@Column(name = \"make\", length = 36)\r\n\tprivate String make;\r\n\r\n\t// inner class\r\n\t@Column(name = \"model\", length = 36)\r\n\tprivate String model;\r\n\r\n\t@Column(name = \"expiry_date\")\r\n\tprivate LocalDateTime expiryDate;\r\n\r\n\t@Column(name = \"certification_level\", length = 3)\r\n\tprivate String certificationLevel;\r\n\r\n\t@Column(name = \"foundational_trust_provider_id\", length = 36)\r\n\tprivate String foundationalTPId;\r\n\r\n\t@ManyToOne(fetch = FetchType.LAZY)\r\n\t@JoinColumn(name = \"provider_id\", referencedColumnName = \"id\", insertable = false, updatable = false)\r\n\tprivate DeviceProvider deviceProvider;\r\n\r\n\t@ManyToOne(fetch = FetchType.LAZY)\r\n\t@JoinColumn(name = \"dtype_code\", referencedColumnName = \"code\", insertable = false, updatable = false)\r\n\tprivate RegistrationDeviceType registrationDeviceType;\r\n\r\n\t@ManyToOne(fetch = FetchType.LAZY)\r\n\t@JoinColumn(name = \"dstype_code\", referencedColumnName = \"code\", insertable = false, updatable = false)\r\n\tprivate RegistrationDeviceSubType registrationDeviceSubType;\r\n\r\n}\r\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/RegisteredDeviceHistory.java", + "title": "RegisteredDeviceHistory.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/RegisteredDeviceHistory.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.entity;\r\n\r\nimport java.time.LocalDateTime;\r\n\r\nimport jakarta.persistence.Column;\r\nimport jakarta.persistence.Entity;\r\nimport jakarta.persistence.Id;\r\nimport jakarta.persistence.Table;\r\n\r\nimport lombok.AllArgsConstructor;\r\nimport lombok.Data;\r\nimport lombok.EqualsAndHashCode;\r\nimport lombok.NoArgsConstructor;\r\n\r\n/**\r\n * Registered Device Service DTO\r\n * \r\n * @author Ramadurai Pandian\r\n * @since 1.0.0\r\n *\r\n */\r\n@Entity\r\n@Table(name = \"registered_device_master_h\", schema = \"master\")\r\n@Data\r\n@EqualsAndHashCode(callSuper = true)\r\n@NoArgsConstructor\r\n@AllArgsConstructor\r\npublic class RegisteredDeviceHistory extends BaseEntity {\r\n\r\n\t@Id\r\n\t@Column(name = \"code\")\r\n\tprivate String code;\r\n\r\n\t@Column(name = \"dtype_code\")\r\n\tprivate String deviceTypeCode;\r\n\r\n\t@Column(name = \"dstype_code\")\r\n\tprivate String deviceSTypeCode;\r\n\r\n\t@Column(name = \"status_code\")\r\n\tprivate String statusCode;\r\n\r\n\t@Column(name = \"device_id\")\r\n\tprivate String deviceId;\r\n\r\n\t@Column(name = \"device_sub_id\")\r\n\tprivate String deviceSubId;\r\n\r\n\t@Column(name = \"serial_number\")\r\n\tprivate String serialNo;\r\n\r\n\t@Column(name = \"provider_id\")\r\n\tprivate String dpId;\r\n\r\n\t@Column(name = \"provider_name\")\r\n\tprivate String dp;\r\n\r\n\t@Column(name = \"purpose\")\r\n\tprivate String purpose;\r\n\r\n\t@Column(name = \"firmware\")\r\n\tprivate String firmware;\r\n\r\n\t@Column(name = \"make\")\r\n\tprivate String make;\r\n\r\n\t@Column(name = \"model\")\r\n\tprivate String model;\r\n\r\n\t@Column(name = \"expiry_date\")\r\n\tprivate LocalDateTime expiryDate;\r\n\r\n\t@Column(name = \"certification_level\")\r\n\tprivate String certificationLevel;\r\n\r\n\t@Column(name = \"foundational_trust_provider_id\")\r\n\tprivate String foundationalTPId;\r\n\r\n\t@Column(name = \"eff_dtimes\")\r\n\tprivate LocalDateTime effectivetimes;\r\n\r\n\t// json inner class\r\n\t@Column(name = \"digital_id\", length = 1024)\r\n\tprivate String digitalId;\r\n\r\n}\r\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/RegistrationCenter.java", + "title": "RegistrationCenter.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/RegistrationCenter.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.entity;\n\nimport java.io.Serializable;\nimport java.time.LocalTime;\n\nimport jakarta.persistence.AttributeOverride;\nimport jakarta.persistence.AttributeOverrides;\nimport jakarta.persistence.Column;\nimport jakarta.persistence.Entity;\nimport jakarta.persistence.FetchType;\nimport jakarta.persistence.Id;\nimport jakarta.persistence.IdClass;\nimport jakarta.persistence.JoinColumn;\nimport jakarta.persistence.JoinColumns;\nimport jakarta.persistence.ManyToOne;\nimport jakarta.persistence.NamedNativeQueries;\nimport jakarta.persistence.NamedNativeQuery;\nimport jakarta.persistence.Table;\n\nimport io.mosip.admin.bulkdataupload.entity.id.IdAndLanguageCodeID;\nimport lombok.AllArgsConstructor;\nimport lombok.Data;\nimport lombok.EqualsAndHashCode;\nimport lombok.NoArgsConstructor;\n\n/**\n * @author Dharmesh Khandelwal\n * @author Sidhant Agarwal\n * @author Sagar Mahapatra\n * @author Neha Sinha\n * @since 1.0.0\n *\n */\n@NamedNativeQueries({\n\t\t@NamedNativeQuery(name = \"RegistrationCenter.findRegistrationCentersByLat\", query = \"SELECT id, name, cntrtyp_code, addr_line1, addr_line2, addr_line3,number_of_kiosks,per_kiosk_process_time,center_end_time,center_start_time,latitude, longitude, location_code,holiday_loc_code,contact_phone,working_hours, lang_code, is_active, cr_by, cr_dtimes, upd_by,upd_dtimes, is_deleted, del_dtimes,time_zone,contact_person,lunch_start_time,lunch_end_time,zone_code FROM (SELECT r.id, r.name, r.cntrtyp_code, r.addr_line1, r.addr_line2, r.addr_line3,r.number_of_kiosks,r.per_kiosk_process_time,r.center_end_time,r.center_start_time,r.latitude, r.longitude, r.location_code,r.holiday_loc_code,r.contact_phone, r.working_hours, r.lang_code,r.time_zone,r.contact_person,r.lunch_start_time,r.lunch_end_time,r.is_active, r.cr_by, r.cr_dtimes, r.upd_by,r.upd_dtimes, r.is_deleted, r.del_dtimes,r.zone_code,(2 * 3961 * asin(sqrt((sin(radians((:latitude - CAST(TRIM(r.latitude) AS FLOAT)) / 2))) ^ 2 + cos(radians(CAST(TRIM(r.latitude) AS FLOAT))) * cos(radians(:latitude)) * (sin(radians((:longitude - CAST(TRIM(r.longitude) AS FLOAT)) / 2))) ^ 2))) AS distance FROM master.registration_center r) ss where distance < :proximitydistance and lang_code = :langcode and (is_deleted=false or is_deleted is null) and is_active=true order by distance asc;\", resultClass = RegistrationCenter.class) })\n@EqualsAndHashCode(callSuper = true)\n@Data\n@NoArgsConstructor\n@AllArgsConstructor\n@Entity\n@Table(name = \"registration_center\", schema = \"master\")\n@IdClass(IdAndLanguageCodeID.class)\npublic class RegistrationCenter extends BaseEntity implements Serializable {\n\n\t/**\n\t * Serializable version ID.\n\t */\n\tprivate static final long serialVersionUID = -8541947587557590379L;\n\n\t@Id\n\t@AttributeOverrides({ @AttributeOverride(name = \"id\", column = @Column(name = \"id\", nullable = false, length = 10)),\n\t\t\t@AttributeOverride(name = \"langCode\", column = @Column(name = \"lang_code\", nullable = false, length = 3)) })\n\tprivate String id;\n\tprivate String langCode;\n\n\t/**\n\t * the name of the registration center.\n\t */\n\t@Column(name = \"name\", nullable = false, length = 128)\n\tprivate String name;\n\n\t/**\n\t * the center type code.\n\t */\n\t@Column(name = \"cntrtyp_code\", length = 36)\n\tprivate String centerTypeCode;\n\n\t/**\n\t * the first address line.\n\t */\n\t@Column(name = \"addr_line1\", length = 256)\n\tprivate String addressLine1;\n\n\t/**\n\t * the second address line.\n\t */\n\t@Column(name = \"addr_line2\", length = 256)\n\tprivate String addressLine2;\n\n\t/**\n\t * the third address line.\n\t */\n\t@Column(name = \"addr_line3\", length = 256)\n\tprivate String addressLine3;\n\n\t/**\n\t * the latitude of the registration center.\n\t */\n\t@Column(name = \"latitude\", length = 32)\n\tprivate String latitude;\n\n\t/**\n\t * the longitude of the registration center.\n\t */\n\t@Column(name = \"longitude\", length = 32)\n\tprivate String longitude;\n\n\t/**\n\t * the location code of the registration center.\n\t */\n\t@Column(name = \"location_code\", length = 36)\n\tprivate String locationCode;\n\n\t/**\n\t * the {@link Location} reference.\n\t */\n\t@ManyToOne(fetch = FetchType.LAZY)\n\t@JoinColumns({\n\t\t\t@JoinColumn(name = \"location_code\", referencedColumnName = \"code\", insertable = false, updatable = false),\n\t\t\t@JoinColumn(name = \"lang_code\", referencedColumnName = \"lang_code\", insertable = false, updatable = false), })\n\tprivate Location location;\n\n\t/**\n\t * the {@link RegistrationCenterType} reference.\n\t */\n\t@ManyToOne(fetch = FetchType.LAZY)\n\t@JoinColumns({\n\t\t\t@JoinColumn(name = \"cntrtyp_code\", referencedColumnName = \"code\", insertable = false, updatable = false),\n\t\t\t@JoinColumn(name = \"lang_code\", referencedColumnName = \"lang_code\", insertable = false, updatable = false), })\n\tprivate RegistrationCenterType registrationCenterType;\n\n\t/**\n\t * the contact phone of the registration center.\n\t */\n\t@Column(name = \"contact_phone\", length = 16)\n\tprivate String contactPhone;\n\n\t/**\n\t * the number of kiosks.\n\t */\n\t@Column(name = \"number_of_kiosks\")\n\tprivate Short numberOfKiosks;\n\n\t/**\n\t * the holiday location code.\n\t */\n\t@Column(name = \"holiday_loc_code\", nullable = false, length = 36)\n\tprivate String holidayLocationCode;\n\n\t/**\n\t * the number of working hours.\n\t */\n\t@Column(name = \"working_hours\", length = 32)\n\tprivate String workingHours;\n\n\t/**\n\t * the per kiosk process time.\n\t */\n\t@Column(name = \"per_kiosk_process_time\")\n\tprivate LocalTime perKioskProcessTime;\n\n\t/**\n\t * the start time of the registration center.\n\t */\n\t@Column(name = \"center_start_time\")\n\tprivate LocalTime centerStartTime;\n\n\t/**\n\t * the end time of the registration center.\n\t */\n\t@Column(name = \"center_end_time\")\n\tprivate LocalTime centerEndTime;\n\n\t/**\n\t * the timezone of the registration center.\n\t */\n\t@Column(name = \"time_zone\", length = 64)\n\tprivate String timeZone;\n\n\t/**\n\t * the contact person of the registration center.\n\t */\n\t@Column(name = \"contact_person\", length = 128)\n\tprivate String contactPerson;\n\n\t/**\n\t * the lunch start time of the registration center.\n\t */\n\t@Column(name = \"lunch_start_time\")\n\tprivate LocalTime lunchStartTime;\n\n\t/**\n\t * the lunch end time of the registration center.\n\t */\n\t@Column(name = \"lunch_end_time\")\n\tprivate LocalTime lunchEndTime;\n\n\t@Column(name = \"zone_code\", length = 36)\n\tprivate String zoneCode;\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/RegistrationCenterDevice.java", + "title": "RegistrationCenterDevice.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/RegistrationCenterDevice.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.entity;\r\n\r\nimport java.io.Serializable;\r\n\r\nimport jakarta.persistence.AttributeOverride;\r\nimport jakarta.persistence.AttributeOverrides;\r\nimport jakarta.persistence.Column;\r\nimport jakarta.persistence.EmbeddedId;\r\nimport jakarta.persistence.Entity;\r\nimport jakarta.persistence.FetchType;\r\nimport jakarta.persistence.JoinColumn;\r\nimport jakarta.persistence.JoinColumns;\r\nimport jakarta.persistence.ManyToOne;\r\nimport jakarta.persistence.Table;\r\n\r\nimport io.mosip.admin.bulkdataupload.entity.id.RegistrationCenterDeviceID;\r\nimport lombok.AllArgsConstructor;\r\nimport lombok.Data;\r\nimport lombok.EqualsAndHashCode;\r\nimport lombok.NoArgsConstructor;\r\n\r\n/**\r\n * \r\n * Entity class to map Registration center id and Device id.\r\n * \r\n * @author Bal Vikash Sharma\r\n * @since 1.0.0\r\n *\r\n */\r\n\r\n@EqualsAndHashCode(callSuper = true)\r\n@Data\r\n@NoArgsConstructor\r\n@AllArgsConstructor\r\n@Entity\r\n@Table(name = \"reg_center_device\", schema = \"master\")\r\npublic class RegistrationCenterDevice extends BaseEntity implements Serializable {\r\n\r\n\tprivate static final long serialVersionUID = -8541947587557590379L;\r\n\r\n\t@EmbeddedId\r\n\t@AttributeOverrides({ @AttributeOverride(name = \"regCenterId\", column = @Column(name = \"regcntr_id\")),\r\n\t\t\t@AttributeOverride(name = \"deviceId\", column = @Column(name = \"device_id\")) })\r\n\tprivate RegistrationCenterDeviceID registrationCenterDevicePk;\r\n\r\n\t@Column(name = \"lang_code\", nullable = false, length = 3)\r\n\tprivate String langCode;\r\n\r\n\t@ManyToOne(fetch = FetchType.LAZY)\r\n\t@JoinColumns({ @JoinColumn(name = \"device_id\", referencedColumnName = \"id\", insertable = false, updatable = false),\r\n\t\t\t@JoinColumn(name = \"lang_code\", referencedColumnName = \"lang_code\", insertable = false, updatable = false) })\r\n\tprivate Device device;\r\n\r\n\t@ManyToOne(fetch = FetchType.LAZY)\r\n\t@JoinColumns({ @JoinColumn(name = \"regcntr_id\", referencedColumnName = \"id\", insertable = false, updatable = false),\r\n\t\t\t@JoinColumn(name = \"lang_code\", referencedColumnName = \"lang_code\", insertable = false, updatable = false) })\r\n\tprivate RegistrationCenter registrationCenter;\r\n\r\n}\r\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/RegistrationCenterDeviceHistory.java", + "title": "RegistrationCenterDeviceHistory.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/RegistrationCenterDeviceHistory.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.entity;\r\n\r\nimport java.io.Serializable;\r\n\r\nimport jakarta.persistence.AttributeOverride;\r\nimport jakarta.persistence.AttributeOverrides;\r\nimport jakarta.persistence.Column;\r\nimport jakarta.persistence.EmbeddedId;\r\nimport jakarta.persistence.Entity;\r\nimport jakarta.persistence.Table;\r\n\r\nimport lombok.AllArgsConstructor;\r\nimport lombok.Data;\r\nimport lombok.EqualsAndHashCode;\r\nimport lombok.NoArgsConstructor;\r\n\r\n/**\r\n * \r\n * Entity class to track history of mapped Registration center id and Device id.\r\n * \r\n * @author Bal Vikash Sharma\r\n * @since 1.0.0\r\n *\r\n */\r\n\r\n@EqualsAndHashCode(callSuper = true)\r\n@Data\r\n@NoArgsConstructor\r\n@AllArgsConstructor\r\n@Entity\r\n@Table(name = \"reg_center_device_h\", schema = \"master\")\r\npublic class RegistrationCenterDeviceHistory extends BaseEntity implements Serializable {\r\n\r\n\tprivate static final long serialVersionUID = -8541947587557590379L;\r\n\r\n\t@EmbeddedId\r\n\t@AttributeOverrides({ @AttributeOverride(name = \"regCenterId\", column = @Column(name = \"regcntr_id\")),\r\n\t\t\t@AttributeOverride(name = \"effectivetimes\", column = @Column(name = \"eff_dtimes\")),\r\n\t\t\t@AttributeOverride(name = \"deviceId\", column = @Column(name = \"device_id\")) })\r\n\tprivate RegistrationCenterDeviceHistoryPk registrationCenterDeviceHistoryPk;\r\n\r\n\t@Column(name = \"lang_code\", nullable = false, length = 3)\r\n\tprivate String langCode;\r\n\r\n}\r\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/RegistrationCenterDeviceHistoryPk.java", + "title": "RegistrationCenterDeviceHistoryPk.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/RegistrationCenterDeviceHistoryPk.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.entity;\r\n\r\nimport java.io.Serializable;\r\nimport java.time.LocalDateTime;\r\n\r\nimport jakarta.persistence.Column;\r\nimport jakarta.persistence.Embeddable;\r\n\r\nimport lombok.AllArgsConstructor;\r\nimport lombok.Data;\r\nimport lombok.NoArgsConstructor;\r\n\r\n/**\r\n * \r\n * @author Bal Vikash Sharma\r\n * @since 1.0.0\r\n */\r\n@Data\r\n@NoArgsConstructor\r\n@AllArgsConstructor\r\n@Embeddable\r\npublic class RegistrationCenterDeviceHistoryPk implements Serializable {\r\n\r\n\tprivate static final long serialVersionUID = 1L;\r\n\r\n\t@Column(name = \"regcntr_id\", unique = true, nullable = false, length = 10)\r\n\tprivate String regCenterId;\r\n\r\n\t@Column(name = \"device_id\", unique = true, nullable = false, length = 36)\r\n\tprivate String deviceId;\r\n\r\n\t@Column(name = \"eff_dtimes\", nullable = false)\r\n\tprivate LocalDateTime effectivetimes;\r\n\r\n}\r\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/RegistrationCenterHistory.java", + "title": "RegistrationCenterHistory.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/RegistrationCenterHistory.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.entity;\r\n\r\nimport java.io.Serializable;\r\nimport java.time.LocalDateTime;\r\nimport java.time.LocalTime;\r\n\r\nimport jakarta.persistence.AttributeOverride;\r\nimport jakarta.persistence.AttributeOverrides;\r\nimport jakarta.persistence.CascadeType;\r\nimport jakarta.persistence.Column;\r\nimport jakarta.persistence.Entity;\r\nimport jakarta.persistence.Id;\r\nimport jakarta.persistence.IdClass;\r\nimport jakarta.persistence.JoinColumn;\r\nimport jakarta.persistence.JoinColumns;\r\nimport jakarta.persistence.ManyToOne;\r\nimport jakarta.persistence.Table;\r\n\r\nimport io.mosip.admin.bulkdataupload.entity.id.RegistrationCenterHistoryID;\r\nimport lombok.AllArgsConstructor;\r\nimport lombok.Data;\r\nimport lombok.EqualsAndHashCode;\r\nimport lombok.NoArgsConstructor;\r\n\r\n/**\r\n * @author Dharmesh Khandelwal\r\n * @since 1.0.0\r\n *\r\n */\r\n@EqualsAndHashCode(callSuper = true)\r\n@Data\r\n@NoArgsConstructor\r\n@AllArgsConstructor\r\n@Entity\r\n@Table(name = \"registration_center_h\", schema = \"master\")\r\n@IdClass(RegistrationCenterHistoryID.class)\r\npublic class RegistrationCenterHistory extends BaseEntity implements Serializable {\r\n\r\n\tprivate static final long serialVersionUID = -8541947587557590379L;\r\n\r\n\t@Id\r\n\t@AttributeOverrides({ @AttributeOverride(name = \"id\", column = @Column(name = \"id\", nullable = false, length = 36)),\r\n\t\t\t@AttributeOverride(name = \"effectivetimes\", column = @Column(name = \"eff_dtimes\", nullable = false)),\r\n\t\t\t@AttributeOverride(name = \"langCode\", column = @Column(name = \"lang_code\", nullable = false, length = 3)) })\r\n\r\n\tprivate String id;\r\n\tprivate String langCode;\r\n\tprivate LocalDateTime effectivetimes;\r\n\r\n\t@Column(name = \"name\", nullable = false, length = 128)\r\n\tprivate String name;\r\n\r\n\t@Column(name = \"cntrtyp_code\", length = 36)\r\n\tprivate String centerTypeCode;\r\n\r\n\t@Column(name = \"addr_line1\", length = 256)\r\n\tprivate String addressLine1;\r\n\r\n\t@Column(name = \"addr_line2\", length = 256)\r\n\tprivate String addressLine2;\r\n\r\n\t@Column(name = \"addr_line3\", length = 256)\r\n\tprivate String addressLine3;\r\n\r\n\t@Column(name = \"latitude\", length = 32)\r\n\tprivate String latitude;\r\n\r\n\t@Column(name = \"longitude\", length = 32)\r\n\tprivate String longitude;\r\n\r\n\t@Column(name = \"location_code\", nullable = false, length = 36)\r\n\tprivate String locationCode;\r\n\r\n\t@Column(name = \"contact_phone\", length = 16)\r\n\tprivate String contactPhone;\r\n\r\n\t@Column(name = \"number_of_kiosks\")\r\n\tprivate Short numberOfKiosks;\r\n\r\n\t@Column(name = \"holiday_loc_code\", nullable = false, length = 36)\r\n\tprivate String holidayLocationCode;\r\n\r\n\t@Column(name = \"working_hours\", length = 32)\r\n\tprivate String workingHours;\r\n\r\n\t@Column(name = \"per_kiosk_process_time\")\r\n\tprivate LocalTime perKioskProcessTime;\r\n\r\n\t@Column(name = \"center_start_time\")\r\n\tprivate LocalTime centerStartTime;\r\n\r\n\t@Column(name = \"center_end_time\")\r\n\tprivate LocalTime centerEndTime;\r\n\r\n\t@Column(name = \"time_zone\", length = 64)\r\n\tprivate String timeZone;\r\n\r\n\t@Column(name = \"contact_person\", length = 128)\r\n\tprivate String contactPerson;\r\n\r\n\t@Column(name = \"lunch_start_time\")\r\n\tprivate LocalTime lunchStartTime;\r\n\r\n\t@Column(name = \"lunch_end_time\")\r\n\tprivate LocalTime lunchEndTime;\r\n\r\n\t@ManyToOne(cascade = CascadeType.ALL)\r\n\t@JoinColumns({\r\n\t\t\t@JoinColumn(name = \"location_code\", referencedColumnName = \"code\", insertable = false, updatable = false),\r\n\t\t\t@JoinColumn(name = \"lang_code\", referencedColumnName = \"lang_code\", insertable = false, updatable = false), })\r\n\tprivate Location location;\r\n\r\n\t@Column(name = \"zone_code\", length = 36)\r\n\tprivate String zoneCode;\r\n\r\n}\r\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/RegistrationCenterMachine.java", + "title": "RegistrationCenterMachine.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/RegistrationCenterMachine.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.entity;\r\n\r\nimport java.io.Serializable;\r\n\r\nimport jakarta.persistence.AttributeOverride;\r\nimport jakarta.persistence.AttributeOverrides;\r\nimport jakarta.persistence.Column;\r\nimport jakarta.persistence.EmbeddedId;\r\nimport jakarta.persistence.Entity;\r\nimport jakarta.persistence.FetchType;\r\nimport jakarta.persistence.JoinColumn;\r\nimport jakarta.persistence.JoinColumns;\r\nimport jakarta.persistence.ManyToOne;\r\nimport jakarta.persistence.Table;\r\n\r\nimport io.mosip.admin.bulkdataupload.entity.id.RegistrationCenterMachineID;\r\nimport lombok.AllArgsConstructor;\r\nimport lombok.Data;\r\nimport lombok.EqualsAndHashCode;\r\nimport lombok.NoArgsConstructor;\r\n\r\n/**\r\n * \r\n * Entity class to map Registration center id and Machine id.\r\n * \r\n * @author Bal Vikash Sharma\r\n * @since 1.0.0\r\n *\r\n */\r\n\r\n@EqualsAndHashCode(callSuper = true)\r\n@Data\r\n@NoArgsConstructor\r\n@AllArgsConstructor\r\n@Entity\r\n@Table(name = \"reg_center_machine\", schema = \"master\")\r\npublic class RegistrationCenterMachine extends BaseEntity implements Serializable {\r\n\r\n\tprivate static final long serialVersionUID = -8541947587557590379L;\r\n\r\n\t@EmbeddedId\r\n\t@AttributeOverrides({ @AttributeOverride(name = \"regCenterId\", column = @Column(name = \"regcntr_id\")),\r\n\t\t\t@AttributeOverride(name = \"machineId\", column = @Column(name = \"machine_id\")) })\r\n\tprivate RegistrationCenterMachineID registrationCenterMachinePk;\r\n\r\n\t@Column(name = \"lang_code\", nullable = false, length = 3)\r\n\tprivate String langCode;\r\n\r\n\t@ManyToOne(fetch = FetchType.LAZY)\r\n\t@JoinColumns({ @JoinColumn(name = \"machine_id\", referencedColumnName = \"id\", insertable = false, updatable = false),\r\n\t\t\t@JoinColumn(name = \"lang_code\", referencedColumnName = \"lang_code\", insertable = false, updatable = false) })\r\n\tprivate Machine machine;\r\n\r\n\t@ManyToOne(fetch = FetchType.LAZY)\r\n\t@JoinColumns({ @JoinColumn(name = \"regcntr_id\", referencedColumnName = \"id\", insertable = false, updatable = false),\r\n\t\t\t@JoinColumn(name = \"lang_code\", referencedColumnName = \"lang_code\", insertable = false, updatable = false) })\r\n\tprivate RegistrationCenter registrationCenter;\r\n}\r\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/RegistrationCenterMachineDevice.java", + "title": "RegistrationCenterMachineDevice.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/RegistrationCenterMachineDevice.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.entity;\r\n\r\nimport java.io.Serializable;\r\n\r\nimport jakarta.persistence.AttributeOverride;\r\nimport jakarta.persistence.AttributeOverrides;\r\nimport jakarta.persistence.Column;\r\nimport jakarta.persistence.EmbeddedId;\r\nimport jakarta.persistence.Entity;\r\nimport jakarta.persistence.Table;\r\n\r\nimport io.mosip.admin.bulkdataupload.entity.id.RegistrationCenterMachineDeviceID;\r\nimport lombok.AllArgsConstructor;\r\nimport lombok.Data;\r\nimport lombok.EqualsAndHashCode;\r\nimport lombok.NoArgsConstructor;\r\n\r\n/**\r\n * \r\n * Entity class to map Registration center id, Machine id and Device id.\r\n * \r\n * @author Bal Vikash Sharma\r\n * @since 1.0.0\r\n *\r\n */\r\n\r\n@EqualsAndHashCode(callSuper = true)\r\n@Data\r\n@NoArgsConstructor\r\n@AllArgsConstructor\r\n@Entity\r\n@Table(name = \"reg_center_machine_device\", schema = \"master\")\r\npublic class RegistrationCenterMachineDevice extends BaseEntity implements Serializable {\r\n\r\n\tprivate static final long serialVersionUID = -8541947587557590379L;\r\n\r\n\t@EmbeddedId\r\n\t@AttributeOverrides({ @AttributeOverride(name = \"regCenterId\", column = @Column(name = \"regcntr_id\")),\r\n\t\t\t@AttributeOverride(name = \"machineId\", column = @Column(name = \"machine_id\")),\r\n\t\t\t@AttributeOverride(name = \"deviceId\", column = @Column(name = \"device_id\")) })\r\n\tprivate RegistrationCenterMachineDeviceID registrationCenterMachineDevicePk;\r\n\r\n\t@Column(name = \"lang_code\", nullable = false, length = 3)\r\n\tprivate String langCode;\r\n\r\n}\r\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/RegistrationCenterMachineDeviceHistory.java", + "title": "RegistrationCenterMachineDeviceHistory.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/RegistrationCenterMachineDeviceHistory.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.entity;\r\n\r\nimport java.io.Serializable;\r\n\r\nimport jakarta.persistence.AttributeOverride;\r\nimport jakarta.persistence.AttributeOverrides;\r\nimport jakarta.persistence.Column;\r\nimport jakarta.persistence.EmbeddedId;\r\nimport jakarta.persistence.Entity;\r\nimport jakarta.persistence.Table;\r\n\r\nimport io.mosip.admin.bulkdataupload.entity.id.RegistrationCenterMachineDeviceHistoryID;\r\nimport lombok.AllArgsConstructor;\r\nimport lombok.Data;\r\nimport lombok.EqualsAndHashCode;\r\nimport lombok.NoArgsConstructor;\r\n\r\n/**\r\n * \r\n * Entity class to track history of mapped Registration center id, Machine id\r\n * and Device id.\r\n * \r\n * @author Bal Vikash Sharma\r\n * @since 1.0.0\r\n *\r\n */\r\n\r\n@EqualsAndHashCode(callSuper = true)\r\n@Data\r\n@NoArgsConstructor\r\n@AllArgsConstructor\r\n@Entity\r\n@Table(name = \"reg_center_machine_device_h\", schema = \"master\")\r\npublic class RegistrationCenterMachineDeviceHistory extends BaseEntity implements Serializable {\r\n\r\n\tprivate static final long serialVersionUID = -8541947587557590379L;\r\n\r\n\t@EmbeddedId\r\n\t@AttributeOverrides({ @AttributeOverride(name = \"regCenterId\", column = @Column(name = \"regcntr_id\")),\r\n\t\t\t@AttributeOverride(name = \"machineId\", column = @Column(name = \"machine_id\")),\r\n\t\t\t@AttributeOverride(name = \"deviceId\", column = @Column(name = \"device_id\")),\r\n\t\t\t@AttributeOverride(name = \"effectivetimes\", column = @Column(name = \"eff_dtimes\")) })\r\n\tprivate RegistrationCenterMachineDeviceHistoryID registrationCenterMachineDeviceHistoryPk;\r\n\r\n\t@Column(name = \"lang_code\", nullable = false, length = 3)\r\n\tprivate String langCode;\r\n\r\n}\r\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/RegistrationCenterMachineHistory.java", + "title": "RegistrationCenterMachineHistory.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/RegistrationCenterMachineHistory.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.entity;\r\n\r\nimport java.io.Serializable;\r\n\r\nimport jakarta.persistence.AttributeOverride;\r\nimport jakarta.persistence.AttributeOverrides;\r\nimport jakarta.persistence.Column;\r\nimport jakarta.persistence.EmbeddedId;\r\nimport jakarta.persistence.Entity;\r\nimport jakarta.persistence.Table;\r\n\r\nimport io.mosip.admin.bulkdataupload.entity.id.RegistrationCenterMachineHistoryID;\r\nimport lombok.AllArgsConstructor;\r\nimport lombok.Data;\r\nimport lombok.EqualsAndHashCode;\r\nimport lombok.NoArgsConstructor;\r\n\r\n/**\r\n * \r\n * Entity class to track history of mapped Registration center id and Machine\r\n * id.\r\n * \r\n * @author Bal Vikash Sharma\r\n * @since 1.0.0\r\n *\r\n */\r\n\r\n@EqualsAndHashCode(callSuper = true)\r\n@Data\r\n@NoArgsConstructor\r\n@AllArgsConstructor\r\n@Entity\r\n@Table(name = \"reg_center_machine_h\", schema = \"master\")\r\npublic class RegistrationCenterMachineHistory extends BaseEntity implements Serializable {\r\n\r\n\tprivate static final long serialVersionUID = -8541947587557590379L;\r\n\r\n\t@EmbeddedId\r\n\t@AttributeOverrides({ @AttributeOverride(name = \"regCenterId\", column = @Column(name = \"regcntr_id\")),\r\n\t\t\t@AttributeOverride(name = \"effectivetimes\", column = @Column(name = \"eff_dtimes\")),\r\n\t\t\t@AttributeOverride(name = \"machineId\", column = @Column(name = \"machine_id\")) })\r\n\tprivate RegistrationCenterMachineHistoryID registrationCenterMachineHistoryPk;\r\n\r\n\t@Column(name = \"lang_code\", nullable = false, length = 3)\r\n\tprivate String langCode;\r\n\r\n}\r\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/RegistrationCenterType.java", + "title": "RegistrationCenterType.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/RegistrationCenterType.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.entity;\n\nimport java.io.Serializable;\nimport java.util.List;\n\nimport jakarta.persistence.AttributeOverride;\nimport jakarta.persistence.AttributeOverrides;\nimport jakarta.persistence.Column;\nimport jakarta.persistence.Entity;\nimport jakarta.persistence.FetchType;\nimport jakarta.persistence.Id;\nimport jakarta.persistence.IdClass;\nimport jakarta.persistence.OneToMany;\nimport jakarta.persistence.Table;\n\nimport io.mosip.admin.bulkdataupload.entity.id.CodeAndLanguageCodeID;\nimport lombok.AllArgsConstructor;\nimport lombok.Data;\nimport lombok.EqualsAndHashCode;\nimport lombok.NoArgsConstructor;\n\n/**\n * Entity class for RegistrationCenterType.\n * \n * @author Sagar Mahapatra\n * @since 1.0.0\n *\n */\n@Data\n@Entity\n@Table(name = \"reg_center_type\", schema = \"master\")\n@IdClass(CodeAndLanguageCodeID.class)\n@NoArgsConstructor\n@AllArgsConstructor\n@EqualsAndHashCode(callSuper = true)\npublic class RegistrationCenterType extends BaseEntity implements Serializable {\n\n\t/**\n\t * Serializable version ID.\n\t */\n\tprivate static final long serialVersionUID = 7869240207930949234L;\n\n\t@Id\n\t@AttributeOverrides({ @AttributeOverride(name = \"code\", column = @Column(name = \"code\", length = 36)),\n\t\t\t@AttributeOverride(name = \"langCode\", column = @Column(name = \"lang_code\", nullable = false, length = 3)) })\n\t/**\n\t * The code of the registration center type.\n\t */\n\tprivate String code;\n\n\t/**\n\t * The language code of the registration center type.\n\t */\n\tprivate String langCode;\n\n\t/**\n\t * The name of the registration center type.\n\t */\n\t@Column(name = \"name\", nullable = false, length = 64)\n\tprivate String name;\n\n\t/**\n\t * The description of the registration center type.\n\t */\n\t@Column(name = \"descr\", length = 128)\n\tprivate String descr;\n\n\t@OneToMany(mappedBy = \"registrationCenterType\", fetch = FetchType.LAZY)\n\tprivate List registrationCenters;\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/RegistrationCenterUser.java", + "title": "RegistrationCenterUser.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/RegistrationCenterUser.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.entity;\r\n\r\nimport jakarta.persistence.AttributeOverride;\r\nimport jakarta.persistence.Column;\r\nimport jakarta.persistence.EmbeddedId;\r\nimport jakarta.persistence.Entity;\r\nimport jakarta.persistence.Table;\r\n\r\nimport io.mosip.admin.bulkdataupload.entity.id.RegistrationCenterUserID;\r\nimport lombok.AllArgsConstructor;\r\nimport lombok.Data;\r\nimport lombok.EqualsAndHashCode;\r\nimport lombok.NoArgsConstructor;\r\n\r\n@EqualsAndHashCode(callSuper = true)\r\n@Data\r\n@NoArgsConstructor\r\n@AllArgsConstructor\r\n@Entity\r\n@Table(name = \"reg_center_user\", schema = \"master\")\r\npublic class RegistrationCenterUser extends BaseEntity {\r\n\r\n\t/**\r\n\t * Composite key for this table\r\n\t */\r\n\t@EmbeddedId\r\n\t@AttributeOverride(name = \"regCenterId\", column = @Column(name = \"regcntr_id\"))\r\n\t@AttributeOverride(name = \"userId\", column = @Column(name = \"usr_id\"))\r\n\tprivate RegistrationCenterUserID registrationCenterUserID;\r\n\r\n\t@Column(name = \"lang_code\", nullable = false, length = 3)\r\n\tprivate String langCode;\r\n}\r\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/RegistrationCenterUserHistory.java", + "title": "RegistrationCenterUserHistory.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/RegistrationCenterUserHistory.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.entity;\r\n\r\nimport java.io.Serializable;\r\n\r\nimport jakarta.persistence.AttributeOverride;\r\nimport jakarta.persistence.AttributeOverrides;\r\nimport jakarta.persistence.Column;\r\nimport jakarta.persistence.EmbeddedId;\r\nimport jakarta.persistence.Entity;\r\nimport jakarta.persistence.Table;\r\n\r\nimport lombok.AllArgsConstructor;\r\nimport lombok.Data;\r\nimport lombok.EqualsAndHashCode;\r\nimport lombok.NoArgsConstructor;\r\n\r\n/**\r\n * \r\n * Entity class to track history of mapped Registration center id and User id.\r\n * \r\n * @author Megha Tanga\r\n * @since 1.0.0\r\n *\r\n */\r\n@EqualsAndHashCode(callSuper = true)\r\n@Data\r\n@NoArgsConstructor\r\n@AllArgsConstructor\r\n@Entity\r\n@Table(name = \"reg_center_user_h\", schema = \"master\")\r\npublic class RegistrationCenterUserHistory extends BaseEntity implements Serializable {\r\n\r\n\tprivate static final long serialVersionUID = -8541947587557590379L;\r\n\r\n\t@EmbeddedId\r\n\t@AttributeOverrides({ @AttributeOverride(name = \"regCenterId\", column = @Column(name = \"regcntr_id\")),\r\n\t\t\t@AttributeOverride(name = \"effectivetimes\", column = @Column(name = \"eff_dtimes\")),\r\n\t\t\t@AttributeOverride(name = \"userid\", column = @Column(name = \"usr_id\")) })\r\n\tprivate RegistrationCenterUserHistoryPk registrationCenterUserHistoryPk;\r\n\r\n\t@Column(name = \"lang_code\", nullable = false, length = 3)\r\n\tprivate String langCode;\r\n\r\n}\r\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/RegistrationCenterUserHistoryPk.java", + "title": "RegistrationCenterUserHistoryPk.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/RegistrationCenterUserHistoryPk.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.entity;\r\n\r\nimport java.io.Serializable;\r\nimport java.time.LocalDateTime;\r\n\r\nimport jakarta.persistence.Column;\r\nimport jakarta.persistence.Embeddable;\r\n\r\nimport lombok.AllArgsConstructor;\r\nimport lombok.Data;\r\nimport lombok.NoArgsConstructor;\r\n\r\n/**\r\n * \r\n * @author Megha Tanga\r\n * @since 1.0.0\r\n */\r\n@Data\r\n@NoArgsConstructor\r\n@AllArgsConstructor\r\n@Embeddable\r\npublic class RegistrationCenterUserHistoryPk implements Serializable {\r\n\r\n\tprivate static final long serialVersionUID = 1L;\r\n\r\n\t@Column(name = \"regcntr_id\", unique = true, nullable = false, length = 10)\r\n\tprivate String regCenterId;\r\n\r\n\t@Column(name = \"usr_id\", unique = true, nullable = false, length = 256)\r\n\tprivate String userId;\r\n\r\n\t@Column(name = \"eff_dtimes\", nullable = false)\r\n\tprivate LocalDateTime effectivetimes;\r\n\r\n}\r\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/RegistrationCenterUserMachine.java", + "title": "RegistrationCenterUserMachine.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/RegistrationCenterUserMachine.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.entity;\r\n\r\nimport java.io.Serializable;\r\n\r\nimport jakarta.persistence.AttributeOverride;\r\nimport jakarta.persistence.AttributeOverrides;\r\nimport jakarta.persistence.Column;\r\nimport jakarta.persistence.EmbeddedId;\r\nimport jakarta.persistence.Entity;\r\nimport jakarta.persistence.Table;\r\n\r\nimport io.mosip.admin.bulkdataupload.entity.id.RegistrationCenterMachineUserID;\r\nimport lombok.AllArgsConstructor;\r\nimport lombok.Data;\r\nimport lombok.EqualsAndHashCode;\r\nimport lombok.NoArgsConstructor;\r\n\r\n/**\r\n * Entity class for User and Registration mappings\r\n * \r\n * @author Dharmesh Khandelwal\r\n * @author Sidhant Agarwal\r\n * @since 1.0.0\r\n *\r\n */\r\n@EqualsAndHashCode(callSuper = true)\r\n@Data\r\n@NoArgsConstructor\r\n@AllArgsConstructor\r\n@Entity\r\n@Table(name = \"reg_center_user_machine\", schema = \"master\")\r\npublic class RegistrationCenterUserMachine extends BaseEntity implements Serializable {\r\n\r\n\t/**\r\n\t * Generated Serial Id\r\n\t */\r\n\tprivate static final long serialVersionUID = -4167453471874926985L;\r\n\r\n\t/**\r\n\t * Composite key for this table\r\n\t */\r\n\t@EmbeddedId\r\n\t@AttributeOverrides({ @AttributeOverride(name = \"cntrId\", column = @Column(name = \"regcntr_id\")),\r\n\t\t\t@AttributeOverride(name = \"usrId\", column = @Column(name = \"usr_id\")),\r\n\t\t\t@AttributeOverride(name = \"machineId\", column = @Column(name = \"machine_id\")) })\r\n\tprivate RegistrationCenterMachineUserID registrationCenterMachineUserID;\r\n\r\n\t@Column(name = \"lang_code\", nullable = false, length = 3)\r\n\tprivate String langCode;\r\n\r\n}\r\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/RegistrationCenterUserMachineHistory.java", + "title": "RegistrationCenterUserMachineHistory.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/RegistrationCenterUserMachineHistory.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.entity;\r\nimport java.io.Serializable;\r\nimport java.time.LocalDateTime;\r\n\r\nimport jakarta.persistence.AttributeOverride;\r\nimport jakarta.persistence.AttributeOverrides;\r\nimport jakarta.persistence.Column;\r\nimport jakarta.persistence.Entity;\r\nimport jakarta.persistence.Id;\r\nimport jakarta.persistence.IdClass;\r\nimport jakarta.persistence.Table;\r\n\r\nimport io.mosip.admin.bulkdataupload.entity.id.RegistrationCenterMachineUserHistoryID;\r\nimport lombok.AllArgsConstructor;\r\nimport lombok.Data;\r\nimport lombok.EqualsAndHashCode;\r\nimport lombok.NoArgsConstructor;\r\n\r\n/**\r\n * Entity class for User and Registration mappings\r\n * \r\n * @author Dharmesh Khandelwal\r\n * @since 1.0.0\r\n *\r\n */\r\n@EqualsAndHashCode(callSuper = true)\r\n@IdClass(RegistrationCenterMachineUserHistoryID.class)\r\n@Data\r\n@NoArgsConstructor\r\n@AllArgsConstructor\r\n@Entity\r\n@Table(name = \"reg_center_user_machine_h\", schema = \"master\")\r\npublic class RegistrationCenterUserMachineHistory extends BaseEntity implements Serializable {\r\n\r\n\t/**\r\n\t * Generated Serial Id\r\n\t */\r\n\tprivate static final long serialVersionUID = -4167453471874926985L;\r\n\r\n\t/**\r\n\t * Composite key for this table\r\n\t */\r\n\t@Id\r\n\t@AttributeOverrides({\r\n\t\t\t@AttributeOverride(name = \"cntrId\", column = @Column(name = \"regcntr_id\", nullable = false, length = 36)),\r\n\t\t\t@AttributeOverride(name = \"usrId\", column = @Column(name = \"usr_id\", nullable = false, length = 36)),\r\n\t\t\t@AttributeOverride(name = \"machineId\", column = @Column(name = \"machine_id\", nullable = false, length = 36)),\r\n\t\t\t@AttributeOverride(name = \"effectivetimes\", column = @Column(name = \"eff_dtimes\", nullable = false)), })\r\n\r\n\t/**\r\n\t * Center Id\r\n\t */\r\n\tprivate String cntrId;\r\n\r\n\t/**\r\n\t * User Id\r\n\t */\r\n\tprivate String usrId;\r\n\r\n\t/**\r\n\t * Machine Id\r\n\t */\r\n\tprivate String machineId;\r\n\r\n\t/**\r\n\t * Effective TimeStamp\r\n\t */\r\n\tprivate LocalDateTime effectivetimes;\r\n\r\n\t@Column(name = \"lang_code\", nullable = false, length = 3)\r\n\tprivate String langCode;\r\n}\r\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/RegistrationDeviceSubType.java", + "title": "RegistrationDeviceSubType.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/RegistrationDeviceSubType.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.entity;\r\n\r\nimport jakarta.persistence.Column;\r\nimport jakarta.persistence.Entity;\r\nimport jakarta.persistence.Id;\r\nimport jakarta.persistence.Table;\r\n\r\nimport lombok.AllArgsConstructor;\r\nimport lombok.Data;\r\nimport lombok.EqualsAndHashCode;\r\nimport lombok.NoArgsConstructor;\r\n\r\n/**\r\n * \r\n * @author Megha Tanga\r\n *\r\n */\r\n\r\n@Entity\r\n@Table(name = \"reg_device_sub_type\", schema = \"master\")\r\n@Data\r\n@EqualsAndHashCode(callSuper = true)\r\n@NoArgsConstructor\r\n@AllArgsConstructor\r\npublic class RegistrationDeviceSubType extends BaseEntity {\r\n\r\n\t@Id\r\n\t@Column(name = \"code\", nullable = false, length = 36)\r\n\tString code;\r\n\r\n\t@Column(name = \"dtyp_code\", nullable = false, length = 36)\r\n\tString regDeviceTypeCode;\r\n\r\n\t@Column(name = \"name\", nullable = false, length = 64)\r\n\tString name;\r\n\r\n\t@Column(name = \"descr\", length = 512)\r\n\tString description;\r\n\r\n}\r\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/RegistrationDeviceType.java", + "title": "RegistrationDeviceType.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/RegistrationDeviceType.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.entity;\r\n\r\nimport jakarta.persistence.Column;\r\nimport jakarta.persistence.Entity;\r\nimport jakarta.persistence.Id;\r\nimport jakarta.persistence.Table;\r\n\r\nimport lombok.AllArgsConstructor;\r\nimport lombok.Data;\r\nimport lombok.EqualsAndHashCode;\r\nimport lombok.NoArgsConstructor;\r\n\r\n/**\r\n * \r\n * @author Megha Tanga\r\n *\r\n */\r\n\r\n@Entity\r\n@Table(name = \"reg_device_type\", schema = \"master\")\r\n@Data\r\n@EqualsAndHashCode(callSuper = true)\r\n@NoArgsConstructor\r\n@AllArgsConstructor\r\npublic class RegistrationDeviceType extends BaseEntity {\r\n\r\n\t@Id\r\n\t@Column(name = \"code\", nullable = false, length = 36)\r\n\tString code;\r\n\r\n\t@Column(name = \"name\", nullable = false, length = 64)\r\n\tString name;\r\n\r\n\t@Column(name = \"descr\", length = 512)\r\n\tString description;\r\n\r\n}\r\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/SchemaDefinition.java", + "title": "SchemaDefinition.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/SchemaDefinition.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.entity;\n\nimport jakarta.persistence.Column;\nimport jakarta.persistence.Entity;\nimport jakarta.persistence.Id;\nimport jakarta.persistence.Table;\n\nimport lombok.AllArgsConstructor;\nimport lombok.Data;\nimport lombok.EqualsAndHashCode;\nimport lombok.NoArgsConstructor;\n\n/**\n * \n * @author anusha\n *\n */\n\n\n@Data\n@NoArgsConstructor\n@AllArgsConstructor\n@EqualsAndHashCode(callSuper = true)\n@Entity\n@Table(name = \"schema_def\", schema = \"master\")\npublic class SchemaDefinition extends BaseEntity {\n\t\n\t@Id\n\t@Column(name = \"id\", nullable = false)\n\tprivate String id;\n\t\n\t@Column(name = \"def_name\", nullable = false)\n\tprivate String defName;\n\t\n\t@Column(name = \"def_type\", nullable = false)\n\tprivate String defType;\n\t\n\t@Column(name = \"add_props\", nullable = false)\n\tprivate boolean additionalProperties;\n\t\n\t@Column(name = \"def_json\", nullable = false, length=2000)\n\tprivate String definitionJson;\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/Template.java", + "title": "Template.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/Template.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.entity;\r\n\r\nimport java.io.Serializable;\r\n\r\nimport jakarta.persistence.AttributeOverride;\r\nimport jakarta.persistence.AttributeOverrides;\r\nimport jakarta.persistence.Column;\r\nimport jakarta.persistence.Entity;\r\nimport jakarta.persistence.FetchType;\r\nimport jakarta.persistence.Id;\r\nimport jakarta.persistence.IdClass;\r\nimport jakarta.persistence.JoinColumn;\r\nimport jakarta.persistence.JoinColumns;\r\nimport jakarta.persistence.ManyToOne;\r\nimport jakarta.persistence.Table;\r\n\r\nimport io.mosip.admin.bulkdataupload.entity.id.IdAndLanguageCodeID;\r\nimport lombok.AllArgsConstructor;\r\nimport lombok.Data;\r\nimport lombok.EqualsAndHashCode;\r\nimport lombok.NoArgsConstructor;\r\n\r\n/**\r\n * @author Neha\r\n * @author Uday Kumar\r\n * @since 1.0.0\r\n */\r\n@EqualsAndHashCode(callSuper = true)\r\n@Data\r\n@NoArgsConstructor\r\n@AllArgsConstructor\r\n@Entity\r\n@Table(name = \"template\", schema = \"master\")\r\n@IdClass(IdAndLanguageCodeID.class)\r\npublic class Template extends BaseEntity implements Serializable {\r\n\r\n\t/**\r\n\t * \r\n\t */\r\n\tprivate static final long serialVersionUID = 3582557516673178996L;\r\n\r\n\t@Id\r\n\t@AttributeOverrides({ @AttributeOverride(name = \"id\", column = @Column(name = \"id\", nullable = false, length = 36)),\r\n\t\t\t@AttributeOverride(name = \"langCode\", column = @Column(name = \"lang_code\", nullable = false, length = 3)) })\r\n\tprivate String id;\r\n\tprivate String langCode;\r\n\r\n\t@Column(name = \"name\", nullable = false, length = 128)\r\n\tprivate String name;\r\n\r\n\t@Column(name = \"descr\", length = 256)\r\n\tprivate String description;\r\n\r\n\t@Column(name = \"file_format_code\", length = 36)\r\n\tprivate String fileFormatCode;\r\n\r\n\t@Column(name = \"model\", length = 128)\r\n\tprivate String model;\r\n\r\n\t@Column(name = \"file_txt\", length = 4086)\r\n\tprivate String fileText;\r\n\r\n\t@Column(name = \"module_id\", length = 36)\r\n\tprivate String moduleId;\r\n\r\n\t@Column(name = \"module_name\", length = 128)\r\n\tprivate String moduleName;\r\n\r\n\t@Column(name = \"template_typ_code\", length = 36)\r\n\tprivate String templateTypeCode;\r\n\r\n\t@ManyToOne(fetch = FetchType.LAZY)\r\n\t@JoinColumns({\r\n\t\t\t@JoinColumn(name = \"module_id\", referencedColumnName = \"id\", insertable = false, updatable = false),\r\n\t\t\t@JoinColumn(name = \"lang_code\", referencedColumnName = \"lang_code\", insertable = false, updatable = false) })\r\n\tprivate ModuleDetail moduleDetail;\r\n\r\n\t@ManyToOne(fetch = FetchType.LAZY)\r\n\t@JoinColumns({\r\n\t\t\t@JoinColumn(name = \"file_format_code\", referencedColumnName = \"code\", insertable = false, updatable = false),\r\n\t\t\t@JoinColumn(name = \"lang_code\", referencedColumnName = \"lang_code\", insertable = false, updatable = false) })\r\n\tprivate TemplateFileFormat templateFileFormat;\r\n\r\n\t@ManyToOne(fetch = FetchType.LAZY)\r\n\t@JoinColumns({\r\n\t\t\t@JoinColumn(name = \"template_typ_code\", referencedColumnName = \"code\", insertable = false, updatable = false),\r\n\t\t\t@JoinColumn(name = \"lang_code\", referencedColumnName = \"lang_code\", insertable = false, updatable = false) })\r\n\tprivate TemplateType templateType;\r\n\r\n}\r\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/TemplateFileFormat.java", + "title": "TemplateFileFormat.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/TemplateFileFormat.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.entity;\n\nimport java.io.Serializable;\n\nimport jakarta.persistence.AttributeOverride;\nimport jakarta.persistence.AttributeOverrides;\nimport jakarta.persistence.Column;\nimport jakarta.persistence.Entity;\nimport jakarta.persistence.Id;\nimport jakarta.persistence.IdClass;\nimport jakarta.persistence.Table;\n\nimport io.mosip.admin.bulkdataupload.entity.id.CodeAndLanguageCodeID;\nimport lombok.AllArgsConstructor;\nimport lombok.Data;\nimport lombok.EqualsAndHashCode;\nimport lombok.NoArgsConstructor;\n\n/**\n * \n * @author Neha\n * @since 1.0.0\n *\n */\n@Data\n@NoArgsConstructor\n@AllArgsConstructor\n@Entity\n@Table(name = \"template_file_format\", schema = \"master\")\n@EqualsAndHashCode(callSuper = true)\n@IdClass(CodeAndLanguageCodeID.class)\npublic class TemplateFileFormat extends BaseEntity implements Serializable {\n\n\tprivate static final long serialVersionUID = 1051422672381211978L;\n\n\t@Id\n\t@AttributeOverrides({ @AttributeOverride(name = \"code\", column = @Column(name = \"code\", nullable = false)),\n\t\t\t@AttributeOverride(name = \"langCode\", column = @Column(name = \"lang_code\", nullable = false, length = 3)) })\n\tprivate String code;\n\tprivate String langCode;\n\n\t@Column(name = \"descr\")\n\tprivate String description;\n\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/TemplateType.java", + "title": "TemplateType.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/TemplateType.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.entity;\r\n\r\nimport java.io.Serializable;\r\n\r\nimport jakarta.persistence.AttributeOverride;\r\nimport jakarta.persistence.AttributeOverrides;\r\nimport jakarta.persistence.Column;\r\nimport jakarta.persistence.Entity;\r\nimport jakarta.persistence.Id;\r\nimport jakarta.persistence.IdClass;\r\nimport jakarta.persistence.Table;\r\n\r\nimport io.mosip.admin.bulkdataupload.entity.id.CodeAndLanguageCodeID;\r\nimport lombok.AllArgsConstructor;\r\nimport lombok.Data;\r\nimport lombok.EqualsAndHashCode;\r\nimport lombok.NoArgsConstructor;\r\n\r\n/**\r\n * @author Uday Kumar\r\n * @since 1.0.0\r\n *\r\n */\r\n@EqualsAndHashCode(callSuper = true)\r\n@Data\r\n@NoArgsConstructor\r\n@AllArgsConstructor\r\n@Entity\r\n@Table(name = \"template_type\", schema = \"master\")\r\n@IdClass(CodeAndLanguageCodeID.class)\r\npublic class TemplateType extends BaseEntity implements Serializable {\r\n\r\n\tprivate static final long serialVersionUID = -854194758755759037L;\r\n\r\n\t@Id\r\n\t@AttributeOverrides({\r\n\t\t\t@AttributeOverride(name = \"code\", column = @Column(name = \"code\", nullable = false, length = 36)),\r\n\t\t\t@AttributeOverride(name = \"langCode\", column = @Column(name = \"lang_code\", nullable = false, length = 3)) })\r\n\tprivate String code;\r\n\tprivate String langCode;\r\n\r\n\t@Column(name = \"descr\", length = 256)\r\n\tprivate String description;\r\n}\r\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/Title.java", + "title": "Title.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/Title.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.entity;\r\n\r\nimport java.io.Serializable;\r\n\r\nimport jakarta.persistence.Column;\r\nimport jakarta.persistence.Entity;\r\nimport jakarta.persistence.Id;\r\nimport jakarta.persistence.IdClass;\r\nimport jakarta.persistence.NamedNativeQueries;\r\nimport jakarta.persistence.NamedNativeQuery;\r\nimport jakarta.persistence.Table;\r\n\r\nimport io.mosip.admin.bulkdataupload.entity.id.CodeAndLanguageCodeID;\r\nimport lombok.AllArgsConstructor;\r\nimport lombok.Data;\r\nimport lombok.EqualsAndHashCode;\r\nimport lombok.NoArgsConstructor;\r\n\r\n/**\r\n * Entity class mapping title to master data\r\n * \r\n * @author Sidhant Agarwal\r\n * @since 1.0.0\r\n *\r\n */\r\n@NamedNativeQueries({\r\n\t\t@NamedNativeQuery(name = \"Title.getThroughLanguageCode\", query = \"select code, name, descr , lang_code , is_active , cr_by , cr_dtimes , upd_by , upd_dtimes ,is_deleted , del_dtimes from master.title where lang_code = ?1 and (is_deleted is null or is_deleted = false) and is_active = true \", resultClass = Title.class) })\r\n@EqualsAndHashCode(callSuper = true)\r\n@Data\r\n@NoArgsConstructor\r\n@AllArgsConstructor\r\n@Entity\r\n@Table(name = \"title\", schema = \"master\")\r\n@IdClass(CodeAndLanguageCodeID.class)\r\npublic class Title extends BaseEntity implements Serializable {\r\n\r\n\tprivate static final long serialVersionUID = 1323331283383315822L;\r\n\r\n\t/*\r\n\t * @EmbeddedId\r\n\t * \r\n\t * @AttributeOverrides({\r\n\t * \r\n\t * @AttributeOverride(name = \"code\", column = @Column(name = \"code\", nullable =\r\n\t * false, length = 16)),\r\n\t * \r\n\t * @AttributeOverride(name = \"langCode\", column = @Column(name = \"lang_code\",\r\n\t * nullable = false, length = 3)) })\r\n\t * \r\n\t * @Column(name = \"code\", unique = true, nullable = false, length = 16) private\r\n\t * CodeAndLanguageCodeID id;\r\n\t */\r\n\t@Id\r\n\t@Column(name = \"code\")\r\n\tprivate String code;\r\n\t@Id\r\n\t@Column(name = \"lang_code\", nullable = false)\r\n\tprivate String langCode;\r\n\r\n\t@Column(name = \"name\", unique = true, nullable = false, length = 64)\r\n\tprivate String titleName;\r\n\r\n\t@Column(name = \"descr\", unique = true, nullable = false, length = 128)\r\n\tprivate String titleDescription;\r\n\r\n}\r\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/UserDetailHistoryPk.java", + "title": "UserDetailHistoryPk.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/UserDetailHistoryPk.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.entity;\r\n\r\nimport java.io.Serializable;\r\nimport java.time.LocalDateTime;\r\n\r\nimport jakarta.persistence.Column;\r\nimport jakarta.persistence.Embeddable;\r\n\r\nimport lombok.AllArgsConstructor;\r\nimport lombok.Data;\r\nimport lombok.NoArgsConstructor;\r\n\r\n/**\r\n * @author Sidhant Agarwal\r\n * @since 1.0.0\r\n * \r\n */\r\n@Data\r\n@NoArgsConstructor\r\n@AllArgsConstructor\r\n@Embeddable\r\npublic class UserDetailHistoryPk implements Serializable {\r\n\r\n\tprivate static final long serialVersionUID = 4120860305322977568L;\r\n\r\n\t@Column(name = \"id\", unique = true, nullable = false, length = 36)\r\n\tprivate String id;\r\n\r\n\t@Column(name = \"eff_dtimes\", nullable = false)\r\n\tprivate LocalDateTime effDTimes;\r\n\r\n}\r\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/UserDetails.java", + "title": "UserDetails.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/UserDetails.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.entity;\r\n\r\nimport java.io.Serializable;\r\nimport java.time.LocalDateTime;\r\n\r\nimport jakarta.persistence.Column;\r\nimport jakarta.persistence.Entity;\r\nimport jakarta.persistence.Id;\r\nimport jakarta.persistence.Table;\r\n\r\nimport lombok.AllArgsConstructor;\r\nimport lombok.Data;\r\nimport lombok.EqualsAndHashCode;\r\nimport lombok.NoArgsConstructor;\r\n\r\n/**\r\n * @author Dharmesh Khandelwal\r\n * @since 1.0.0\r\n *\r\n */\r\n@EqualsAndHashCode(callSuper = true)\r\n@Data\r\n@NoArgsConstructor\r\n@AllArgsConstructor\r\n@Entity\r\n@Table(name = \"user_detail\", schema = \"master\")\r\npublic class UserDetails extends BaseEntity implements Serializable {\r\n\r\n\t/**\r\n\t * Serializable version ID.\r\n\t */\r\n\tprivate static final long serialVersionUID = -8541947587557590379L;\r\n\r\n\t@Id\r\n\t@Column(name = \"id\", unique = true, nullable = false, length = 36)\r\n\tprivate String id;\r\n\r\n\t@Column(name = \"lang_code\", nullable = false, length = 3)\r\n\tprivate String langCode;\r\n\r\n\t@Column(name = \"name\", nullable = false, length = 64)\r\n\tprivate String name;\r\n\r\n\t@Column(name = \"status_code\", nullable = false, length = 36)\r\n\tprivate String statusCode;\r\n\r\n\t@Column(name = \"last_login_dtimes\")\r\n\tprivate LocalDateTime lastLoginDateTime;\r\n\r\n\t@Column(name = \"last_login_method\", length = 64)\r\n\tprivate String lastLoginMethod;\r\n\r\n\t@Column(name = \"regcntr_id\", length = 10)\r\n\tprivate String regCenterId;\r\n}\r\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/UserDetailsHistory.java", + "title": "UserDetailsHistory.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/UserDetailsHistory.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.entity;\r\n\r\nimport java.io.Serializable;\r\nimport java.time.LocalDateTime;\r\n\r\nimport jakarta.persistence.AttributeOverride;\r\nimport jakarta.persistence.AttributeOverrides;\r\nimport jakarta.persistence.Column;\r\nimport jakarta.persistence.Entity;\r\nimport jakarta.persistence.Id;\r\nimport jakarta.persistence.IdClass;\r\nimport jakarta.persistence.Table;\r\n\r\nimport lombok.AllArgsConstructor;\r\nimport lombok.Data;\r\nimport lombok.EqualsAndHashCode;\r\nimport lombok.NoArgsConstructor;\r\n\r\n/**\r\n * @author Sidhant Agarwal\r\n * @since 1.0.0\r\n */\r\n@EqualsAndHashCode(callSuper = true)\r\n@Data\r\n@NoArgsConstructor\r\n@AllArgsConstructor\r\n@Entity\r\n@IdClass(UserDetailHistoryPk.class)\r\n@Table(name = \"user_detail_h\", schema = \"master\")\r\npublic class UserDetailsHistory extends BaseEntity implements Serializable {\r\n\r\n\tprivate static final long serialVersionUID = -8541941111557590379L;\r\n\r\n\t@Id\r\n\t@AttributeOverrides({ @AttributeOverride(name = \"id\", column = @Column(name = \"id\", nullable = false, length = 36)),\r\n\t\t\t@AttributeOverride(name = \"effDTimes\", column = @Column(name = \"eff_dtimes\", nullable = false)) })\r\n\tprivate String id;\r\n\tprivate LocalDateTime effDTimes;\r\n\r\n\t@Column(name = \"lang_code\", nullable = false, length = 3)\r\n\tprivate String langCode;\r\n\r\n\t@Column(name = \"name\", nullable = true, length = 64)\r\n\tprivate String name;\r\n\r\n\t@Column(name = \"status_code\", nullable = true, length = 36)\r\n\tprivate String statusCode;\r\n\r\n\t@Column(name = \"last_login_dtimes\", nullable = true)\r\n\tprivate LocalDateTime lastLoginDateTime;\r\n\r\n\t@Column(name = \"last_login_method\", nullable = true, length = 64)\r\n\tprivate String lastLoginMethod;\r\n\t\r\n\t@Column(name = \"regcntr_id\", length = 10)\r\n\tprivate String regCenterId;\r\n\r\n}\r\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/ValidDocument.java", + "title": "ValidDocument.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/ValidDocument.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.entity;\r\n\r\nimport java.io.Serializable;\r\n\r\nimport jakarta.persistence.AttributeOverride;\r\nimport jakarta.persistence.AttributeOverrides;\r\nimport jakarta.persistence.Column;\r\nimport jakarta.persistence.Entity;\r\nimport jakarta.persistence.FetchType;\r\nimport jakarta.persistence.Id;\r\nimport jakarta.persistence.IdClass;\r\nimport jakarta.persistence.JoinColumn;\r\nimport jakarta.persistence.JoinColumns;\r\nimport jakarta.persistence.ManyToOne;\r\nimport jakarta.persistence.Table;\r\n\r\nimport io.mosip.admin.bulkdataupload.entity.id.ValidDocumentID;\r\nimport lombok.AllArgsConstructor;\r\nimport lombok.Data;\r\nimport lombok.EqualsAndHashCode;\r\nimport lombok.NoArgsConstructor;\r\n\r\n/**\r\n * Entity class for valid document.\r\n * \r\n * @author Urvil Joshi\r\n * @author Ritesh Sinha\r\n * @since 1.0.0\r\n *\r\n */\r\n@Entity\r\n@Table(name = \"valid_document\", schema = \"master\")\r\n@EqualsAndHashCode(callSuper = true)\r\n@Data\r\n@NoArgsConstructor\r\n@AllArgsConstructor\r\n@IdClass(ValidDocumentID.class)\r\npublic class ValidDocument extends BaseEntity implements Serializable {\r\n\r\n\t/**\r\n\t * \r\n\t */\r\n\tprivate static final long serialVersionUID = -3111581667845281498L;\r\n\r\n\t@Id\r\n\t@AttributeOverrides({\r\n\t\t\t@AttributeOverride(name = \"docTypeCode\", column = @Column(name = \"doctyp_code\", nullable = false, length = 36)),\r\n\t\t\t@AttributeOverride(name = \"docCategoryCode\", column = @Column(name = \"doccat_code\", nullable = false, length = 36)) })\r\n\r\n\tprivate String docTypeCode;\r\n\r\n\tprivate String docCategoryCode;\r\n\r\n\t@ManyToOne(fetch = FetchType.LAZY)\r\n\t@JoinColumns({\r\n\t\t\t@JoinColumn(name = \"doccat_code\", referencedColumnName = \"code\", insertable = false, updatable = false),\r\n\t\t\t@JoinColumn(name = \"lang_code\", referencedColumnName = \"lang_code\", insertable = false, updatable = false), })\r\n\tDocumentCategory documentCategory;\r\n\r\n\t@ManyToOne(fetch = FetchType.LAZY)\r\n\t@JoinColumns({\r\n\t\t\t@JoinColumn(name = \"doctyp_code\", referencedColumnName = \"code\", insertable = false, updatable = false),\r\n\t\t\t@JoinColumn(name = \"lang_code\", referencedColumnName = \"lang_code\", insertable = false, updatable = false) })\r\n\tDocumentType documentType;\r\n\r\n\t@Column(name = \"lang_code\", length = 3)\r\n\tprivate String langCode;\r\n\r\n}\r\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/Zone.java", + "title": "Zone.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/Zone.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.entity;\n\nimport java.io.Serializable;\n\nimport jakarta.persistence.Column;\nimport jakarta.persistence.Entity;\nimport jakarta.persistence.Id;\nimport jakarta.persistence.IdClass;\nimport jakarta.persistence.Table;\n\nimport io.mosip.admin.bulkdataupload.entity.id.CodeAndLanguageCodeID;\nimport lombok.AllArgsConstructor;\nimport lombok.Data;\nimport lombok.EqualsAndHashCode;\nimport lombok.NoArgsConstructor;\n\n@EqualsAndHashCode(callSuper = true)\n@Data\n@NoArgsConstructor\n@AllArgsConstructor\n@Entity\n@Table(name = \"zone\", schema = \"master\")\n@IdClass(CodeAndLanguageCodeID.class)\npublic class Zone extends BaseEntity implements Serializable {\n\n\t/**\n\t * Generated serialVersionUID\n\t */\n\tprivate static final long serialVersionUID = 3690188968108639857L;\n\n\t@Id\n\t@Column(name = \"code\")\n\tprivate String code;\n\n\t@Id\n\t@Column(name = \"lang_code\", nullable = false, length = 3)\n\tprivate String langCode;\n\n\t@Column(name = \"name\", nullable = false, length = 128)\n\tprivate String name;\n\n\t@Column(name = \"hierarchy_level\", nullable = false)\n\tprivate short hierarchyLevel;\n\n\t@Column(name = \"hierarchy_level_name\", nullable = false, length = 64)\n\tprivate String hierarchyName;\n\n\t@Column(name = \"parent_zone_code\", nullable = false, length = 36)\n\tprivate String parentZoneCode;\n\n\t@Column(name = \"hierarchy_path\", nullable = false, length = 1024)\n\tprivate String hierarchyPath;\n\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/ZoneUser.java", + "title": "ZoneUser.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/ZoneUser.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.entity;\n\nimport java.io.Serializable;\n\nimport jakarta.persistence.Column;\nimport jakarta.persistence.Entity;\nimport jakarta.persistence.Id;\nimport jakarta.persistence.Table;\nimport lombok.AllArgsConstructor;\nimport lombok.Data;\nimport lombok.EqualsAndHashCode;\nimport lombok.NoArgsConstructor;\n\n\n@EqualsAndHashCode(callSuper = true)\n@Data\n@NoArgsConstructor\n@AllArgsConstructor\n@Entity\n@Table(name = \"zone_user\", schema = \"master\")\npublic class ZoneUser extends BaseEntity implements Serializable {\n\t/**\n\t * Generated serialVersionUID\n\t */\n\tprivate static final long serialVersionUID = -8194849518681293756L;\n\n\t@Column(name = \"zone_code\", nullable = false, length = 36)\n\tprivate String zoneCode;\n\n\t@Id\n\t@Column(name = \"usr_id\", nullable = false, length = 256)\n\tprivate String userId;\n\n\t@Column(name = \"lang_code\", nullable = false, length = 3)\n\tprivate String langCode;\n\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/ZoneUserHistory.java", + "title": "ZoneUserHistory.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/ZoneUserHistory.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.entity;\r\n\r\nimport java.io.Serializable;\r\nimport java.time.LocalDateTime;\r\n\r\nimport jakarta.persistence.Entity;\r\nimport jakarta.persistence.Id;\r\nimport jakarta.persistence.IdClass;\r\nimport jakarta.persistence.Column;\r\nimport jakarta.persistence.Table;\r\n\r\nimport io.mosip.admin.bulkdataupload.entity.id.ZoneUserHistoryId;\r\nimport lombok.AllArgsConstructor;\r\nimport lombok.Data;\r\nimport lombok.EqualsAndHashCode;\r\nimport lombok.NoArgsConstructor;\r\n@EqualsAndHashCode(callSuper = true)\r\n@Data\r\n@NoArgsConstructor\r\n@AllArgsConstructor\r\n@Entity\r\n@IdClass(ZoneUserHistoryId.class)\r\n@Table(name = \"zone_user_h\", schema = \"master\")\r\npublic class ZoneUserHistory extends BaseEntity implements Serializable {\r\n\t/**\r\n\t * Generated serialVersionUID\r\n\t */\r\n\tprivate static final long serialVersionUID = -8194849518681293756L;\r\n\r\n\t@Id\r\n\t@Column(name = \"zone_code\", nullable = false, length = 36)\r\n\tprivate String zoneCode;\r\n\r\n\t@Id\r\n\t@Column(name = \"usr_id\", nullable = false, length = 256)\r\n\tprivate String userId;\r\n\t\r\n\t@Id\r\n\t@Column(name = \"eff_dtimes\", nullable = false)\r\n\tprivate LocalDateTime effDTimes;\r\n\r\n\t@Column(name = \"lang_code\", nullable = false, length = 3)\r\n\tprivate String langCode;\r\n}\r\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/id/ApplicantValidDocumentId.java", + "title": "ApplicantValidDocumentId.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/id/ApplicantValidDocumentId.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.entity.id;\n\nimport java.io.Serializable;\n\nimport jakarta.persistence.Column;\nimport jakarta.persistence.Embeddable;\n\nimport lombok.AllArgsConstructor;\nimport lombok.Data;\nimport lombok.NoArgsConstructor;\n\n@Embeddable\n@Data\n@NoArgsConstructor\n@AllArgsConstructor\npublic class ApplicantValidDocumentId implements Serializable {\n\n\tprivate static final long serialVersionUID = -9083898959072007739L;\n\n\t@Column(name = \"apptyp_code \", nullable = false, length = 36)\n\tprivate String appTypeCode;\n\n\t@Column(name = \"doccat_code \", nullable = false, length = 36)\n\tprivate String docCategoryCode;\n\n\t@Column(name = \"doctyp_code \", nullable = false, length = 36)\n\tprivate String docTypeCode;\n\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/id/CodeAndLanguageCodeID.java", + "title": "CodeAndLanguageCodeID.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/id/CodeAndLanguageCodeID.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.entity.id;\n\nimport java.io.Serializable;\n\nimport jakarta.persistence.Column;\nimport jakarta.persistence.Embeddable;\n\nimport lombok.AllArgsConstructor;\nimport lombok.Data;\nimport lombok.NoArgsConstructor;\n\n@Embeddable\n@Data\n@NoArgsConstructor\n@AllArgsConstructor\npublic class CodeAndLanguageCodeID implements Serializable {\n\n\t/**\n\t * \n\t */\n\tprivate static final long serialVersionUID = -9083898959072007739L;\n\n\t@Column(name = \"code\", nullable = false)\n\tprivate String code;\n\n\t@Column(name = \"lang_code\", nullable = false, length = 3)\n\tprivate String langCode;\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/id/CodeLangCodeAndRsnCatCodeID.java", + "title": "CodeLangCodeAndRsnCatCodeID.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/id/CodeLangCodeAndRsnCatCodeID.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.entity.id;\n\nimport java.io.Serializable;\n\nimport jakarta.persistence.Column;\n\nimport lombok.AllArgsConstructor;\nimport lombok.Data;\nimport lombok.NoArgsConstructor;\n\n@Data\n@NoArgsConstructor\n@AllArgsConstructor\n\npublic class CodeLangCodeAndRsnCatCodeID implements Serializable {\n\n\t/**\n\t * \n\t */\n\tprivate static final long serialVersionUID = -3909028803659392056L;\n\n\t@Column(name = \"rsncat_code\", nullable = false, length = 36)\n\tprivate String rsnCatCode;\n\n\t@Column(name = \"code\", nullable = false, length = 36)\n\tprivate String code;\n\n\t@Column(name = \"lang_code\", nullable = false, length = 3)\n\tprivate String langCode;\n\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/id/DeviceRegisterHistoryId.java", + "title": "DeviceRegisterHistoryId.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/id/DeviceRegisterHistoryId.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.entity.id;\r\n\r\nimport java.io.Serializable;\r\nimport java.time.LocalDateTime;\r\n\r\nimport jakarta.persistence.Column;\r\n\r\nimport lombok.AllArgsConstructor;\r\nimport lombok.Data;\r\nimport lombok.NoArgsConstructor;\r\n\r\n@Data\r\n@NoArgsConstructor\r\n@AllArgsConstructor\r\npublic class DeviceRegisterHistoryId implements Serializable {\r\n\t/**\r\n\t * \r\n\t */\r\n\tprivate static final long serialVersionUID = 8986103890594107087L;\r\n\r\n\t@Column(name = \"code\")\r\n\tprivate String deviceCode;\r\n\r\n\t@Column(name = \"eff_dtimes\")\r\n\tprivate LocalDateTime effectivetimes;\r\n}\r\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/id/ExcptionalHolidayId.java", + "title": "ExcptionalHolidayId.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/id/ExcptionalHolidayId.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.entity.id;\n\nimport java.io.Serializable;\nimport java.time.LocalDate;\n\nimport jakarta.persistence.Column;\nimport jakarta.persistence.Embeddable;\n\nimport lombok.AllArgsConstructor;\nimport lombok.Data;\nimport lombok.NoArgsConstructor;\n\n/**\n * @author Kishan Rathore\n *\n */\n@Embeddable\n@Data\n@NoArgsConstructor\n@AllArgsConstructor\npublic class ExcptionalHolidayId implements Serializable {\n\t/**\n\t * \n\t */\n\tprivate static final long serialVersionUID = 9206683365413202093L;\n\n\t@Column(name = \"regcntr_id\", nullable = false, length = 10)\n\tprivate String registrationCenterId;\n\n\t@Column(name = \"hol_date\", nullable = false)\n\tprivate LocalDate holidayDate;\n\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/id/GenderID.java", + "title": "GenderID.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/id/GenderID.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.entity.id;\n\nimport java.io.Serializable;\n\nimport jakarta.persistence.Column;\nimport jakarta.persistence.Embeddable;\n\nimport lombok.AllArgsConstructor;\nimport lombok.Data;\nimport lombok.NoArgsConstructor;\n\n/**\n * Entity for composite primary key in gender table in DB\n * \n * @author Sidhant Agarwal\n * @since 1.0.0\n *\n */\n@Embeddable\n@Data\n@NoArgsConstructor\n@AllArgsConstructor\npublic class GenderID implements Serializable {\n\n\tprivate static final long serialVersionUID = -1169678225048676557L;\n\n\t@Column(name = \"code\", unique = true, nullable = false, length = 16)\n\tprivate String genderCode;\n\n\t@Column(name = \"name\", unique = true, nullable = false, length = 64)\n\tprivate String genderName;\n\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/id/HolidayID.java", + "title": "HolidayID.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/id/HolidayID.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.entity.id;\n\nimport java.io.Serializable;\nimport java.time.LocalDate;\n\nimport jakarta.persistence.Column;\nimport jakarta.persistence.Embeddable;\n\nimport lombok.AllArgsConstructor;\nimport lombok.Data;\nimport lombok.NoArgsConstructor;\n\n/**\n * @author Sidhant Agarwal\n * @author Abhishek Kumar\n * @since 1.0.0\n *\n */\n@Embeddable\n@Data\n@NoArgsConstructor\n@AllArgsConstructor\npublic class HolidayID implements Serializable {\n\n\tprivate static final long serialVersionUID = -1631873932622755759L;\n\n\t@Column(name = \"location_code\", nullable = false, length = 36)\n\tprivate String locationCode;\n\n\t@Column(name = \"holiday_date\", nullable = false)\n\tprivate LocalDate holidayDate;\n\n\t@Column(name = \"lang_code\", nullable = false, length = 3)\n\tprivate String langCode;\n\n\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/id/IdAndEffectDateTimeID.java", + "title": "IdAndEffectDateTimeID.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/id/IdAndEffectDateTimeID.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.entity.id;\r\n\r\nimport java.io.Serializable;\r\nimport java.time.LocalDateTime;\r\n\r\nimport jakarta.persistence.Column;\r\nimport jakarta.persistence.Embeddable;\r\n\r\nimport lombok.AllArgsConstructor;\r\nimport lombok.Data;\r\nimport lombok.NoArgsConstructor;\r\n\r\n@Embeddable\r\n@Data\r\n@NoArgsConstructor\r\n@AllArgsConstructor\r\npublic class IdAndEffectDateTimeID implements Serializable {\r\n\r\n\tprivate static final long serialVersionUID = 7001663925687776491L;\r\n\r\n\t@Column(name = \"id\", nullable = false)\r\n\tprivate String id;\r\n\r\n\t@Column(name = \"eff_dtimes\", nullable = false)\r\n\tprivate LocalDateTime effectDateTime;\r\n\r\n\t@Column(name = \"lang_code\", nullable = false, length = 3)\r\n\tprivate String langCode;\r\n}\r\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/id/IdAndLanguageCodeID.java", + "title": "IdAndLanguageCodeID.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/id/IdAndLanguageCodeID.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.entity.id;\r\n\r\nimport java.io.Serializable;\r\n\r\nimport jakarta.persistence.Column;\r\nimport jakarta.persistence.Embeddable;\r\n\r\nimport lombok.AllArgsConstructor;\r\nimport lombok.Data;\r\nimport lombok.NoArgsConstructor;\r\n\r\n@Embeddable\r\n@Data\r\n@NoArgsConstructor\r\n@AllArgsConstructor\r\npublic class IdAndLanguageCodeID implements Serializable {\r\n\t/**\r\n\t* \r\n\t*/\r\n\tprivate static final long serialVersionUID = 1L;\r\n\r\n\t@Column(name = \"id\", nullable = false)\r\n\tprivate String id;\r\n\r\n\t@Column(name = \"lang_code\", nullable = false, length = 3)\r\n\tprivate String langCode;\r\n\r\n}\r\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/id/LocationCodeAndLanguageCodeID.java", + "title": "LocationCodeAndLanguageCodeID.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/id/LocationCodeAndLanguageCodeID.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.entity.id;\n\nimport java.io.Serializable;\n\nimport jakarta.persistence.Column;\nimport jakarta.persistence.Embeddable;\n\nimport lombok.AllArgsConstructor;\nimport lombok.Data;\nimport lombok.NoArgsConstructor;\n\n@Embeddable\n@Data\n@NoArgsConstructor\n@AllArgsConstructor\npublic class LocationCodeAndLanguageCodeID implements Serializable {\n\n\t/**\n\t * \n\t */\n\tprivate static final long serialVersionUID = -8017807110754974896L;\n\n\t@Column(name = \"code\", nullable = false)\n\tprivate String code;\n\n\t@Column(name = \"lang_code\", nullable = false, length = 3)\n\tprivate String languageCode;\n\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/id/LocationHierarchyId.java", + "title": "LocationHierarchyId.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/id/LocationHierarchyId.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.entity.id;\r\n\r\nimport java.io.Serializable;\r\nimport java.time.LocalDate;\r\n\r\nimport jakarta.persistence.Column;\r\nimport jakarta.persistence.Embeddable;\r\n\r\nimport lombok.AllArgsConstructor;\r\nimport lombok.Data;\r\nimport lombok.NoArgsConstructor;\r\n\r\n/**\r\n * @author Megha Tanga\r\n * @since 1.0.0\r\n *\r\n */\r\n@Embeddable\r\n@Data\r\n@NoArgsConstructor\r\n@AllArgsConstructor\r\npublic class LocationHierarchyId implements Serializable {\r\n\r\n\tprivate static final long serialVersionUID = -6687447931850039408L;\r\n\r\n\t@Column(name = \"hierarchy_level\", nullable = false, length = 36)\r\n\tprivate short hierarchyLevel;\r\n\r\n\t@Column(name = \"hierarchy_level_name\", nullable = false, length = 64)\r\n\tprivate String hierarchyLevelName;\r\n\r\n\t@Column(name = \"lang_code\", nullable = false, length = 3)\r\n\tprivate String langCode;\r\n}\r\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/id/RegWorkingNonWorkingId.java", + "title": "RegWorkingNonWorkingId.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/id/RegWorkingNonWorkingId.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.entity.id;\n\nimport java.io.Serializable;\n\nimport jakarta.persistence.Column;\n\nimport lombok.AllArgsConstructor;\nimport lombok.Data;\nimport lombok.NoArgsConstructor;\n\n/**\n * @author Kishan rathore\n *\n */\n@Data\n@NoArgsConstructor\n@AllArgsConstructor\npublic class RegWorkingNonWorkingId implements Serializable {\n\n\t/**\n\t * \n\t */\n\tprivate static final long serialVersionUID = 7322512960633960954L;\n\n\t@Column(name = \"regcntr_id\", nullable = false, length = 10)\n\tprivate String registrationCenterId;\n\n\t@Column(name = \"day_code\", nullable = false, length = 3)\n\tprivate String dayCode;\n\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/id/RegistrationCenterDeviceID.java", + "title": "RegistrationCenterDeviceID.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/id/RegistrationCenterDeviceID.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.entity.id;\n\nimport java.io.Serializable;\n\nimport jakarta.persistence.Column;\nimport jakarta.persistence.Embeddable;\n\nimport lombok.AllArgsConstructor;\nimport lombok.Data;\nimport lombok.NoArgsConstructor;\n\n/**\n * \n * @author Bal Vikash Sharma\n * @since 1.0.0\n */\n@Data\n@NoArgsConstructor\n@AllArgsConstructor\n@Embeddable\npublic class RegistrationCenterDeviceID implements Serializable {\n\n\tprivate static final long serialVersionUID = 1L;\n\n\t@Column(name = \"regcntr_id\", unique = true, nullable = false, length = 10)\n\tprivate String regCenterId;\n\n\t@Column(name = \"device_id\", unique = true, nullable = false, length = 36)\n\tprivate String deviceId;\n\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/id/RegistrationCenterHistoryID.java", + "title": "RegistrationCenterHistoryID.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/id/RegistrationCenterHistoryID.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.entity.id;\r\n\r\nimport java.io.Serializable;\r\nimport java.time.LocalDateTime;\r\n\r\nimport jakarta.persistence.Column;\r\nimport jakarta.persistence.Embeddable;\r\n\r\nimport lombok.AllArgsConstructor;\r\nimport lombok.Data;\r\nimport lombok.NoArgsConstructor;\r\n\r\n/**\r\n * \r\n * @author Dharmesh Khandelwal\r\n * @since 1.0.0\r\n *\r\n */\r\n\r\n@Data\r\n@NoArgsConstructor\r\n@AllArgsConstructor\r\n@Embeddable\r\npublic class RegistrationCenterHistoryID implements Serializable {\r\n\r\n\tprivate static final long serialVersionUID = -8541947587557590379L;\r\n\r\n\t@Column(name = \"id\", nullable = false, length = 36)\r\n\tprivate String id;\r\n\r\n\t@Column(name = \"eff_dtimes\", nullable = false)\r\n\tprivate LocalDateTime effectivetimes;\r\n\r\n\t@Column(name = \"lang_code\", nullable = false, length = 3)\r\n\tprivate String langCode;\r\n}" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/id/RegistrationCenterMachineDeviceHistoryID.java", + "title": "RegistrationCenterMachineDeviceHistoryID.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/id/RegistrationCenterMachineDeviceHistoryID.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.entity.id;\n\nimport java.io.Serializable;\nimport java.time.LocalDateTime;\n\nimport jakarta.persistence.Column;\nimport jakarta.persistence.Embeddable;\n\nimport lombok.AllArgsConstructor;\nimport lombok.Data;\nimport lombok.NoArgsConstructor;\n\n@Data\n@NoArgsConstructor\n@AllArgsConstructor\n@Embeddable\npublic class RegistrationCenterMachineDeviceHistoryID implements Serializable {\n\n\t/**\n\t * \n\t */\n\tprivate static final long serialVersionUID = 8092065929310769990L;\n\n\t@Column(name = \"regcntr_id\", unique = true, nullable = false, length = 10)\n\tprivate String regCenterId;\n\n\t@Column(name = \"device_id\", unique = true, nullable = false, length = 36)\n\tprivate String deviceId;\n\n\t@Column(name = \"machine_id\", unique = true, nullable = false, length = 10)\n\tprivate String machineId;\n\n\t@Column(name = \"eff_dtimes\", nullable = false)\n\tprivate LocalDateTime effectivetimes;\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/id/RegistrationCenterMachineDeviceID.java", + "title": "RegistrationCenterMachineDeviceID.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/id/RegistrationCenterMachineDeviceID.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.entity.id;\n\nimport java.io.Serializable;\n\nimport jakarta.persistence.Column;\nimport jakarta.persistence.Embeddable;\n\nimport lombok.AllArgsConstructor;\nimport lombok.Data;\nimport lombok.NoArgsConstructor;\n\n/**\n * \n * \n * @author Bal Vikash Sharma\n * @since 1.0.0\n *\n */\n\n@Data\n@NoArgsConstructor\n@AllArgsConstructor\n@Embeddable\npublic class RegistrationCenterMachineDeviceID implements Serializable {\n\n\tprivate static final long serialVersionUID = -8541947587557590379L;\n\n\t@Column(name = \"regcntr_id\", unique = true, nullable = false, length = 10)\n\tprivate String regCenterId;\n\n\t@Column(name = \"device_id\", unique = true, nullable = false, length = 36)\n\tprivate String deviceId;\n\n\t@Column(name = \"machine_id\", unique = true, nullable = false, length = 10)\n\tprivate String machineId;\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/id/RegistrationCenterMachineHistoryID.java", + "title": "RegistrationCenterMachineHistoryID.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/id/RegistrationCenterMachineHistoryID.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.entity.id;\n\nimport java.io.Serializable;\nimport java.time.LocalDateTime;\n\nimport jakarta.persistence.Column;\nimport jakarta.persistence.Embeddable;\n\nimport lombok.AllArgsConstructor;\nimport lombok.Data;\nimport lombok.NoArgsConstructor;\n\n/**\n * \n * \n * \n * @author Bal Vikash Sharma\n * @since 1.0.0\n *\n */\n\n@Data\n@NoArgsConstructor\n@AllArgsConstructor\n@Embeddable\npublic class RegistrationCenterMachineHistoryID implements Serializable {\n\n\tprivate static final long serialVersionUID = -8541947587557590379L;\n\n\t@Column(name = \"regcntr_id\", unique = true, nullable = false, length = 10)\n\tprivate String regCenterId;\n\n\t@Column(name = \"machine_id\", unique = true, nullable = false, length = 10)\n\tprivate String machineId;\n\n\t@Column(name = \"eff_dtimes\", nullable = false)\n\tprivate LocalDateTime effectivetimes;\n}" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/id/RegistrationCenterMachineID.java", + "title": "RegistrationCenterMachineID.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/id/RegistrationCenterMachineID.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.entity.id;\n\nimport java.io.Serializable;\n\nimport jakarta.persistence.Column;\nimport jakarta.persistence.Embeddable;\n\nimport lombok.AllArgsConstructor;\nimport lombok.Data;\nimport lombok.NoArgsConstructor;\n\n/**\n * \n * \n * \n * @author Bal Vikash Sharma\n * @since 1.0.0\n *\n */\n\n@Data\n@NoArgsConstructor\n@AllArgsConstructor\n@Embeddable\npublic class RegistrationCenterMachineID implements Serializable {\n\n\tprivate static final long serialVersionUID = -8541947587557590379L;\n\n\t@Column(name = \"regcntr_id\", unique = true, nullable = false, length = 10)\n\tprivate String regCenterId;\n\n\t@Column(name = \"machine_id\", unique = true, nullable = false, length = 10)\n\tprivate String machineId;\n}" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/id/RegistrationCenterMachineUserHistoryID.java", + "title": "RegistrationCenterMachineUserHistoryID.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/id/RegistrationCenterMachineUserHistoryID.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.entity.id;\n\nimport java.io.Serializable;\nimport java.time.LocalDateTime;\n\nimport jakarta.persistence.Column;\nimport jakarta.persistence.Embeddable;\n\nimport lombok.AllArgsConstructor;\nimport lombok.Data;\nimport lombok.NoArgsConstructor;\n\n/**\n * ID class for Registration Center User Machine History\n * \n * @author Dharmesh Khandelwal\n * @since 1.0.0\n *\n */\n@Embeddable\n@Data\n@NoArgsConstructor\n@AllArgsConstructor\npublic class RegistrationCenterMachineUserHistoryID implements Serializable {\n\n\t/**\n\t * Generated serial version\n\t */\n\tprivate static final long serialVersionUID = -1169819225048676557L;\n\n\t/**\n\t * Center Id\n\t */\n\t@Column(name = \"regcntr_id\", nullable = false, length = 10)\n\tprivate String cntrId;\n\n\t/**\n\t * User Id\n\t */\n\t@Column(name = \"usr_id\", nullable = false, length = 36)\n\tprivate String usrId;\n\n\t/**\n\t * Machine Id\n\t */\n\t@Column(name = \"machine_id\", nullable = false, length = 36)\n\tprivate String machineId;\n\n\t/**\n\t * Effective TimeStamp\n\t */\n\t@Column(name = \"eff_dtimes\", nullable = false)\n\tprivate LocalDateTime effectivetimes;\n\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/id/RegistrationCenterMachineUserID.java", + "title": "RegistrationCenterMachineUserID.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/id/RegistrationCenterMachineUserID.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.entity.id;\r\n\r\nimport java.io.Serializable;\r\n\r\nimport jakarta.persistence.Column;\r\nimport jakarta.persistence.Embeddable;\r\n\r\nimport lombok.AllArgsConstructor;\r\nimport lombok.Data;\r\nimport lombok.NoArgsConstructor;\r\n\r\n/**\r\n * Entity class for Registration Center User Machine\r\n * \r\n * @author Dharmesh Khandelwal\r\n * @since 1.0.0\r\n *\r\n */\r\n@Embeddable\r\n@Data\r\n@NoArgsConstructor\r\n@AllArgsConstructor\r\npublic class RegistrationCenterMachineUserID implements Serializable {\r\n\r\n\t/**\r\n\t * Generated serial version\r\n\t */\r\n\tprivate static final long serialVersionUID = -1169819225048676557L;\r\n\r\n\t/**\r\n\t * Center Id\r\n\t */\r\n\t@Column(name = \"regcntr_id\", nullable = false, length = 10)\r\n\tprivate String cntrId;\r\n\r\n\t/**\r\n\t * User Id\r\n\t */\r\n\t@Column(name = \"usr_id\", nullable = false, length = 36)\r\n\tprivate String usrId;\r\n\r\n\t/**\r\n\t * Machine Id\r\n\t */\r\n\t@Column(name = \"machine_id\", nullable = false, length = 10)\r\n\tprivate String machineId;\r\n\r\n}\r\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/id/RegistrationCenterUserID.java", + "title": "RegistrationCenterUserID.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/id/RegistrationCenterUserID.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.entity.id;\n\nimport java.io.Serializable;\n\nimport jakarta.persistence.Column;\nimport jakarta.persistence.Embeddable;\n\nimport lombok.AllArgsConstructor;\nimport lombok.Data;\nimport lombok.NoArgsConstructor;\n\n@Data\n@NoArgsConstructor\n@AllArgsConstructor\n@Embeddable\npublic class RegistrationCenterUserID implements Serializable {\n\n\t/**\n\t * Generated SerialVersionUID\n\t */\n\tprivate static final long serialVersionUID = -403460847776525788L;\n\n\t@Column(name = \"regcntr_id\", unique = true, nullable = false, length = 10)\n\tprivate String regCenterId;\n\n\t@Column(name = \"usr_id\", unique = true, nullable = false, length = 10)\n\tprivate String userId;\n\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/id/ValidDocumentID.java", + "title": "ValidDocumentID.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/id/ValidDocumentID.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.entity.id;\n\nimport java.io.Serializable;\n\nimport jakarta.persistence.Column;\nimport jakarta.persistence.Embeddable;\n\nimport lombok.AllArgsConstructor;\nimport lombok.Data;\nimport lombok.NoArgsConstructor;\n\n@Embeddable\n@Data\n@NoArgsConstructor\n@AllArgsConstructor\npublic class ValidDocumentID implements Serializable {\n\n\t/**\n\t * \n\t */\n\tprivate static final long serialVersionUID = -6394443536056430885L;\n\n\t@Column(name = \"doctyp_code\", nullable = false, length = 36)\n\tprivate String docTypeCode;\n\n\t@Column(name = \"doccat_code\", nullable = false, length = 36)\n\tprivate String docCategoryCode;\n\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/id/WeekDayId.java", + "title": "WeekDayId.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/id/WeekDayId.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.entity.id;\n\nimport java.io.Serializable;\n\nimport jakarta.persistence.Column;\n\nimport lombok.AllArgsConstructor;\nimport lombok.Data;\nimport lombok.NoArgsConstructor;\n\n@Data\n@NoArgsConstructor\n@AllArgsConstructor\npublic class WeekDayId implements Serializable {\n\t/**\n\t* \n\t*/\n\tprivate static final long serialVersionUID = -7044883507018869066L;\n\n\t@Column(name = \"code\", nullable = false, length = 3, insertable = false, updatable = false)\n\tprivate String code;\n\n\t@Column(name = \"lang_code\", nullable = false, length = 3)\n\tprivate String langCode;\n\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/id/WordAndLanguageCodeID.java", + "title": "WordAndLanguageCodeID.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/id/WordAndLanguageCodeID.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.entity.id;\n\nimport java.io.Serializable;\n\nimport jakarta.persistence.Column;\nimport jakarta.persistence.Embeddable;\n\nimport lombok.AllArgsConstructor;\nimport lombok.Data;\nimport lombok.NoArgsConstructor;\n\n/**\n * ID class for the columns word and language code.\n * \n * @author Sagar Mahapatra\n * @since 1.0.0\n */\n@Embeddable\n@Data\n@NoArgsConstructor\n@AllArgsConstructor\npublic class WordAndLanguageCodeID implements Serializable {\n\n\t/**\n\t * Generated Serialized ID.\n\t */\n\tprivate static final long serialVersionUID = 2309013416400782373L;\n\n\t/**\n\t * The blocklisted word.\n\t */\n\t@Column(name = \"word\", nullable = false, length = 128)\n\tprivate String word;\n\n\t/**\n\t * The language code.\n\t */\n\t@Column(name = \"lang_code\", nullable = false, length = 3)\n\tprivate String langCode;\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/id/ZoneUserHistoryId.java", + "title": "ZoneUserHistoryId.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/id/ZoneUserHistoryId.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.entity.id;\r\n\r\nimport java.io.Serializable;\r\nimport java.time.LocalDateTime;\r\n\r\nimport jakarta.persistence.Column;\r\nimport jakarta.persistence.Embeddable;\r\nimport jakarta.persistence.Id;\r\n\r\nimport lombok.AllArgsConstructor;\r\nimport lombok.Data;\r\nimport lombok.NoArgsConstructor;\r\n\r\n@Embeddable\r\n@Data\r\n@NoArgsConstructor\r\n@AllArgsConstructor\r\npublic class ZoneUserHistoryId implements Serializable {\r\n\r\n\t/**\r\n\t * Generated serialVersionUID\r\n\t */\r\n\tprivate static final long serialVersionUID = -4334937137252000426L;\r\n\r\n\t@Column(name = \"zone_code\", unique = true, nullable = false, length = 36)\r\n\tprivate String zoneCode;\r\n\r\n\t@Column(name = \"usr_id\", unique = true, nullable = false, length = 256)\r\n\tprivate String userId;\r\n\t\r\n\t@Column(name = \"eff_dtimes\", nullable = false)\r\n\tprivate LocalDateTime effDTimes;\r\n}" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/id/ZoneUserId.java", + "title": "ZoneUserId.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/id/ZoneUserId.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.entity.id;\n\nimport java.io.Serializable;\n\nimport jakarta.persistence.Column;\nimport jakarta.persistence.Embeddable;\n\nimport lombok.AllArgsConstructor;\nimport lombok.Data;\nimport lombok.NoArgsConstructor;\n\n@Embeddable\n@Data\n@NoArgsConstructor\n@AllArgsConstructor\npublic class ZoneUserId implements Serializable {\n\n\t/**\n\t * Generated serialVersionUID\n\t */\n\tprivate static final long serialVersionUID = -4334937137252000426L;\n\n\t@Column(name = \"zone_code\", unique = true, nullable = false, length = 36)\n\tprivate String zoneCode;\n\n\t@Column(name = \"usr_id\", unique = true, nullable = false, length = 256)\n\tprivate String userId;\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/repositories/ApplicantValidDocumentRepository.java", + "title": "ApplicantValidDocumentRepository.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/repositories/ApplicantValidDocumentRepository.java", + "language": "java", + "content": "/**\r\n * \r\n */\r\npackage io.mosip.admin.bulkdataupload.repositories;\r\n\r\nimport java.util.List;\r\n\r\nimport org.springframework.data.jpa.repository.Query;\r\nimport org.springframework.data.repository.query.Param;\r\n\r\nimport io.mosip.kernel.core.dataaccess.spi.repository.BaseRepository;\r\nimport io.mosip.admin.bulkdataupload.entity.ApplicantValidDocument;\r\nimport io.mosip.admin.bulkdataupload.entity.id.ApplicantValidDocumentId;\r\n\r\n/**\r\n * @author Bal Vikash Sharma\r\n *\r\n */\r\npublic interface ApplicantValidDocumentRepository\r\n\t\textends BaseRepository {\r\n\r\n\t/*@Query(value = \"SELECT dt.lang_code as document_type_lang_code, dt.code as document_type_code, dt.name as document_type_name, dt.descr as document_type_descr, dc.lang_code as document_cat_lang_code, dc.code as document_cat_code, dc.name as document_cat_name, dc.descr as document_cat_descr, avd.lang_code FROM master.applicant_valid_document avd JOIN master.doc_category dc ON dc.code = avd.doccat_code AND avd.is_active = dc.is_active JOIN master.doc_type dt ON dt.code = avd.doctyp_code AND avd.is_active = dt.is_active AND dc.lang_code = dt.lang_code WHERE avd.apptyp_code = :applicantTypeCode AND dt.lang_code IN :languages AND dc.lang_code IN :languages AND avd.is_active = TRUE\", nativeQuery = true)\r\n\tList getDocumentCategoryAndTypesForApplicantCode(@Param(\"applicantTypeCode\") String applicantTypeCode,\r\n\t\t\t@Param(\"languages\") List languages);*/\r\n\r\n}\r\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/repositories/ApplicationRepository.java", + "title": "ApplicationRepository.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/repositories/ApplicationRepository.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.repositories;\r\n\r\nimport java.util.List;\r\n\r\nimport org.springframework.data.jpa.repository.Query;\r\nimport org.springframework.stereotype.Repository;\r\n\r\nimport io.mosip.kernel.core.dataaccess.spi.repository.BaseRepository;\r\nimport io.mosip.admin.bulkdataupload.entity.Application;\r\n\r\n/**\r\n * @author Neha\r\n * @since 1.0.0\r\n *\r\n */\r\n@Repository\r\npublic interface ApplicationRepository extends BaseRepository {\r\n\r\n\t/**\r\n\t * Get all Application types\r\n\t * \r\n\t * @param entityClass of type {@link Application}\r\n\t * @return list of {@link Application}\r\n\t */\r\n\t@Query(\"FROM Application where (isDeleted is null OR isDeleted = false) AND isActive = true\")\r\n\tList findAllByIsDeletedFalseOrIsDeletedNull(Class entityClass);\r\n\r\n\t/**\r\n\t * \r\n\t * Get all Application types of a specific language using language code\r\n\t * \r\n\t * @param languageCode of type {@link String}\r\n\t * @return list of {@link Application}\r\n\t */\r\n\t@Query(\"FROM Application WHERE langCode =?1 AND (isDeleted is null OR isDeleted = false)AND isActive = true\")\r\n\tList findAllByLangCodeAndIsDeletedFalseOrIsDeletedIsNull(String languageCode);\r\n\r\n\t/**\r\n\t * Get Application type by specific id and language code\r\n\t * \r\n\t * @param code -code\r\n\t * @param languageCode - language code\r\n\t * @return {@link Application}\r\n\t */\r\n\t@Query(\"FROM Application WHERE code =?1 AND langCode =?2 AND (isDeleted is null OR isDeleted = false) AND isActive = true\")\r\n\tApplication findByCodeAndLangCodeAndIsDeletedFalseOrIsDeletedIsNull(String code, String languageCode);\r\n\r\n}\r\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/repositories/BiometricAttributeRepository.java", + "title": "BiometricAttributeRepository.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/repositories/BiometricAttributeRepository.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.repositories;\r\n\r\nimport java.util.List;\r\n\r\nimport org.springframework.data.jpa.repository.Query;\r\nimport org.springframework.stereotype.Repository;\r\n\r\nimport io.mosip.kernel.core.dataaccess.spi.repository.BaseRepository;\r\nimport io.mosip.admin.bulkdataupload.entity.BiometricAttribute;\r\n\r\n/**\r\n * \r\n * @author Uday Kumar\r\n * @since 1.0.0\r\n *\r\n */\r\n@Repository\r\npublic interface BiometricAttributeRepository extends BaseRepository {\r\n\t@Query(\"select b from BiometricAttribute b where b.biometricTypeCode = ?1 and b.langCode = ?2 and (b.isDeleted is null or b.isDeleted = false) and b.isActive = true \")\r\n\tList findByBiometricTypeCodeAndLangCodeAndIsDeletedFalseOrIsDeletedIsNull(\r\n\t\t\tString biometricTypeCode, String langCode);\r\n\r\n}\r\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/repositories/BiometricTypeRepository.java", + "title": "BiometricTypeRepository.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/repositories/BiometricTypeRepository.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.repositories;\r\n\r\nimport java.util.List;\r\n\r\nimport org.springframework.data.jpa.repository.Query;\r\nimport org.springframework.stereotype.Repository;\r\n\r\nimport io.mosip.kernel.core.dataaccess.spi.repository.BaseRepository;\r\nimport io.mosip.admin.bulkdataupload.entity.BiometricType;\r\n\r\n/**\r\n * @author Neha\r\n * @since 1.0.0\r\n *\r\n */\r\n\r\n@Repository\r\npublic interface BiometricTypeRepository extends BaseRepository {\r\n\r\n\t/**\r\n\t * Get all Biometric types\r\n\t * \r\n\t * @param entityClass class of type {@link BiometricType}\r\n\t * @return list of {@link BiometricType}\r\n\t */\r\n\t@Query(\"FROM BiometricType where (isDeleted is null OR isDeleted = false) AND isActive = true\")\r\n\tList findAllByIsDeletedFalseOrIsDeletedIsNull(Class entityClass);\r\n\r\n\t/**\r\n\t * Get all Biometric types of a specific language using language code\r\n\t * \r\n\t * @param langCode is of type {@link String}\r\n\t * @return list of {@link BiometricType}\r\n\t */\r\n\t@Query(\"FROM BiometricType WHERE langCode =?1 AND (isDeleted is null OR isDeleted = false) AND isActive = true\")\r\n\tList findAllByLangCodeAndIsDeletedFalseOrIsDeletedIsNull(String langCode);\r\n\r\n\t/**\r\n\t * Get Biometric type by specific id and language code\r\n\t * \r\n\t * @param code biometric type code\r\n\t * @param langCode is of type {@link String}\r\n\t * @return object of {@link BiometricType}\r\n\t */\r\n\t@Query(\"FROM BiometricType WHERE code =?1 AND langCode =?2 AND (isDeleted is null OR isDeleted = false) AND isActive = true\")\r\n\tBiometricType findByCodeAndLangCodeAndIsDeletedFalseOrIsDeletedIsNull(String code, String langCode);\r\n\r\n}\r\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/repositories/BlocklistedWordsRepository.java", + "title": "BlocklistedWordsRepository.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/repositories/BlocklistedWordsRepository.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.repositories;\r\n\r\nimport java.time.LocalDateTime;\r\nimport java.util.List;\r\n\r\nimport org.springframework.data.jpa.repository.Modifying;\r\nimport org.springframework.data.jpa.repository.Query;\r\nimport org.springframework.transaction.annotation.Transactional;\r\n\r\nimport io.mosip.kernel.core.dataaccess.spi.repository.BaseRepository;\r\nimport io.mosip.admin.bulkdataupload.entity.BlocklistedWords;\r\n\r\n/**\r\n * Repository for Blocklisted words.\r\n * \r\n * @author Abhishek Kumar\r\n * @author Sagar Mahapatra\r\n * @since 1.0.0\r\n */\r\npublic interface BlocklistedWordsRepository extends BaseRepository {\r\n\t/**\r\n\t * Method to fetch list of blocklisted words by language code\r\n\t * \r\n\t * @param langCode language code\r\n\t * @return {@link List of BlocklistedWords }\r\n\t */\r\n\r\n\t@Query(\"FROM BlocklistedWords blw WHERE blw.langCode = ?1 AND (blw.isDeleted IS NULL OR blw.isDeleted = false) AND blw.isActive = true\")\r\n\tList findAllByLangCode(String langCode);\r\n\r\n\t/**\r\n\t * Method to fetch all the blocklisted words\r\n\t * \r\n\t * @return {@link List of BlocklistedWords }\r\n\t */\r\n\t@Query(\"FROM BlocklistedWords where (isDeleted is null OR isDeleted = false) AND isActive = true\")\r\n\tList findAllByIsDeletedFalseOrIsDeletedNull();\r\n\r\n\t/**\r\n\t * Method to fetch word by word and langCode\r\n\t * \r\n\t * @param word word to fetch\r\n\t * @param langCode language code of the word\r\n\t * @return word detail\r\n\t */\r\n\r\n\t@Query(\"FROM BlocklistedWords blw WHERE lower(blw.word) = lower(?1) AND blw.langCode = ?2 AND (blw.isDeleted IS NULL OR blw.isDeleted = false)\")\r\n\tBlocklistedWords findByWordAndLangCode(String word, String langCode);\r\n\r\n\t/**\r\n\t * Method to delete the blocklisted word\r\n\t * \r\n\t * @param word input word to be deleted\r\n\t * @param deletedDateTime input deleted timeStamp\r\n\t * @return no of rows deleted\r\n\t */\r\n\t@Modifying\r\n\t@Transactional\r\n\t@Query(\"UPDATE BlocklistedWords bw SET bw.isDeleted = true , bw.deletedDateTime = ?2 WHERE lower(bw.word) = lower(?1) AND (bw.isDeleted IS NULL OR bw.isDeleted = false)\")\r\n\tint deleteBlockListedWord(String word, LocalDateTime deletedDateTime);\r\n}\r\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/repositories/BulkUploadTranscationRepository.java", + "title": "BulkUploadTranscationRepository.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/repositories/BulkUploadTranscationRepository.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.repositories;\n\nimport java.sql.Timestamp;\nimport java.time.LocalDateTime;\nimport java.util.List;\nimport java.util.UUID;\n\nimport jakarta.transaction.Transactional;\nimport org.springframework.data.domain.Page;\nimport org.springframework.data.domain.PageRequest;\nimport org.springframework.data.domain.Pageable;\nimport org.springframework.data.jpa.repository.Modifying;\nimport org.springframework.data.jpa.repository.Query;\nimport org.springframework.stereotype.Repository;\n\nimport io.mosip.admin.bulkdataupload.entity.BulkUploadTranscation;\nimport io.mosip.kernel.core.dataaccess.spi.repository.BaseRepository;\n/**\n * this classs BulkUploadTranscationRepository\n * \n * @author dhanendra\n *\n */\n@Repository\npublic interface BulkUploadTranscationRepository extends BaseRepository {\n\n\t@Query(\"FROM BulkUploadTranscation WHERE id =?1 AND (isDeleted is null OR isDeleted = false) AND isActive = true\")\n\tBulkUploadTranscation findTransactionById(String id);\n\t\n\t//@Query(value = \"FROM BulkUploadTranscation WHERE category =?1 AND (isDeleted is null OR isDeleted = false) AND isActive = true\",nativeQuery = true)\n\tPage findByCategory(String category, Pageable pageRequest);\n\n\t@Modifying\n\t@Query(\"UPDATE BulkUploadTranscation SET statusCode=?2, recordCount=?3, uploadDescription=?4 , updatedDateTime=?5\"\n\t\t\t+ \" WHERE id=?1\")\n\tint updateBulkUploadTransaction(String id, String statusCode, int recordCount, String uploadDescription,\n\t\t\t\t\t\t\t\t\tLocalDateTime updatedDateTime);\n\n\t@Transactional\n\t@Modifying\n\t@Query(value=\"UPDATE bulkupload_transaction SET record_count=?2 , upd_dtimes=now() WHERE id=?1\",nativeQuery = true)\n\tint updateBulkUploadTransactionCount(String id, int recordCount);\n\n\t@Transactional\n\t@Modifying\n\t@Query( value=\"UPDATE bulkupload_transaction SET status_code=?2, upload_description=?3 , upd_dtimes=now() WHERE id=?1\",nativeQuery = true)\n\tint updateBulkUploadTransactionStatus(String id, String statusCode, String uploadDescription);\n\n\t@Transactional\n\t@Modifying\n\t@Query(value=\"UPDATE bulkupload_transaction SET status_code=?2, record_count=record_count+?3, upload_description=upload_description||?4 , upd_dtimes=now() WHERE id=?1\",nativeQuery = true)\n\tint updateBulkUploadTransactionPacket(String id, String statusCode, int recordCount ,String uploadDescription);\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/repositories/DaysOfWeekListRepo.java", + "title": "DaysOfWeekListRepo.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/repositories/DaysOfWeekListRepo.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.repositories;\n\nimport java.util.List;\n\nimport org.springframework.data.jpa.repository.Query;\nimport org.springframework.stereotype.Repository;\n\nimport io.mosip.kernel.core.dataaccess.spi.repository.BaseRepository;\nimport io.mosip.admin.bulkdataupload.entity.DaysOfWeek;\nimport io.mosip.admin.bulkdataupload.entity.id.WeekDayId;\n\n@Repository(\"daysOfWeekRepo\")\npublic interface DaysOfWeekListRepo extends BaseRepository {\n\n\t@Query(\"SELECT d.name from DaysOfWeek d where d.code=?1 and d.langCode=?2 and (d.isDeleted is null or d.isDeleted = false) and d.isActive = true\")\n\tList findBycodeAndlangCode(String dayCode, String langCode);\n\n\t@Query(\"FROM DaysOfWeek where langCode=?1 and (isDeleted is null or isDeleted = false) and isActive = true\")\n\tList findBylangCode(String langCode);\n\n\t@Query(\"SELECT d from DaysOfWeek d where d.langCode=?1 and d.isGlobalWorking=true and (d.isDeleted is null or d.isDeleted = false) and d.isActive = true\")\n\tList findByAllGlobalWorkingTrue(String langCode);\n\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/repositories/DeviceHistoryRepository.java", + "title": "DeviceHistoryRepository.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/repositories/DeviceHistoryRepository.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.repositories;\n\nimport java.time.LocalDateTime;\nimport java.util.List;\n\nimport org.springframework.data.jpa.repository.Query;\nimport org.springframework.stereotype.Repository;\n\nimport io.mosip.kernel.core.dataaccess.spi.repository.BaseRepository;\nimport io.mosip.admin.bulkdataupload.entity.DeviceHistory;\n\n/**\n * Repository function to fetching device History Details\n * \n * @author Megha Tanga\n * @since 1.0.0\n *\n */\n@Repository\npublic interface DeviceHistoryRepository extends BaseRepository {\n\n\t/**\n\t * This method trigger query to fetch Device History Details based on Device\n\t * History Id, language code and effective date time\n\t * \n\t * @param id Device History id provided by user\n\t * @param langCode language code provided by user\n\t * @param effectDtimes effective Date and time provided by user in the format\n\t * \"yyyy-MM-dd'T'HH:mm:ss.SSS'Z'\"\n\t * @return List Device History Details fetched from database\n\t */\n\n\t@Query(value = \"Select \td.eff_dtimes, d.id,d.cr_by, d.cr_dtimes, d.del_dtimes, d.is_active, d.is_deleted, d.upd_by, d.upd_dtimes, d.ip_address, d.lang_code, d.mac_address, d.dspec_id, d.name, d.serial_num, d.validity_end_dtimes, d.zone_code from master.device_master_h d where d.id = ?1 and d.lang_code = ?2 and d.eff_dtimes <= ?3 and ( d.is_deleted = false or d.is_deleted is null) order by d.eff_dtimes desc limit 1\", nativeQuery = true)\n\tList findByFirstByIdAndLangCodeAndEffectDtimesLessThanEqualAndIsDeletedFalseOrIsDeletedIsNull(\n\t\t\tString id, String langCode, LocalDateTime effectDtimes);\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/repositories/DeviceProviderHistoryRepository.java", + "title": "DeviceProviderHistoryRepository.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/repositories/DeviceProviderHistoryRepository.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.repositories;\r\n\r\nimport java.time.LocalDateTime;\r\n\r\nimport org.springframework.data.jpa.repository.Query;\r\nimport org.springframework.stereotype.Repository;\r\n\r\nimport io.mosip.kernel.core.dataaccess.spi.repository.BaseRepository;\r\nimport io.mosip.admin.bulkdataupload.entity.DeviceProviderHistory;\r\n\r\n/**\r\n * The Interface DeviceProviderHistoryRepository.\r\n * \r\n * @author Ramadurai Pandian\r\n * @since 1.0.0\r\n */\r\n@Repository\r\npublic interface DeviceProviderHistoryRepository extends BaseRepository {\r\n\r\n\t/**\r\n\t * Find by id and is active is true.\r\n\t *\r\n\t * @param id the id\r\n\t * @return the device provider\r\n\t */\r\n\t@Query(value = \"(select * from device_provider_h dph WHERE id = ?1 AND eff_dtimes<= ?2 and is_active=true and (is_deleted is null or is_deleted =false) ORDER BY eff_dtimes DESC) LIMIT 1 \", nativeQuery = true)\r\n\tDeviceProviderHistory findDeviceProviderHisByIdAndEffTimes(String id, LocalDateTime effTimes);\r\n\r\n}\r\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/repositories/DeviceProviderRepository.java", + "title": "DeviceProviderRepository.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/repositories/DeviceProviderRepository.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.repositories;\r\n\r\nimport org.springframework.data.jpa.repository.Query;\r\nimport org.springframework.stereotype.Repository;\r\n\r\nimport io.mosip.kernel.core.dataaccess.spi.repository.BaseRepository;\r\nimport io.mosip.admin.bulkdataupload.entity.DeviceProvider;\r\n\r\n/**\r\n * The Interface DeviceProviderRepository.\r\n * \r\n * @author Srinivasan\r\n * @author Megha Tanga\r\n * @since 1.0.0\r\n */\r\n@Repository\r\npublic interface DeviceProviderRepository extends BaseRepository {\r\n\r\n\t/**\r\n\t * Find by id and is active is true.\r\n\t *\r\n\t * @param id the id\r\n\t * @return the device provider\r\n\t */\r\n\tDeviceProvider findByIdAndIsActiveIsTrue(String id);\r\n\r\n\t@Query(\"FROM DeviceProvider where id=?1 AND (isDeleted is null OR isDeleted = false) AND isActive = true\")\r\n\tDeviceProvider findByIdAndIsDeletedFalseorIsDeletedIsNullAndIsActiveTrue(String id);\r\n\r\n\t@Query(\"FROM DeviceProvider where id=?1 AND vendorName=?2 AND (isDeleted is null OR isDeleted = false) AND isActive = true\")\r\n\tDeviceProvider findByIdAndNameAndIsDeletedFalseorIsDeletedIsNullAndIsActiveTrue(String id, String vendorName);\r\n\t\r\n\t@Query(\"FROM DeviceProvider where vendorName=?1 AND address=?2 AND (isDeleted is null OR isDeleted = false) AND isActive = true\")\r\n\tDeviceProvider findByNameAndAddressAndIsDeletedFalseorIsDeletedIsNullAndIsActiveTrue(String vendorName, String address);\r\n\r\n\t/*\r\n\t * @Query(\"FROM DeviceProvider d where d.id=?1 AND d.venderName AND (d.isDeleted is null OR d.isDeleted = false) AND d.isActive = true\"\r\n\t * ) DeviceProvider\r\n\t * findByIdAndNameIsDeletedFalseorIsDeletedIsNullAndIsActiveTrue(String id,\r\n\t * String vendorName);\r\n\t */\r\n}\r\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/repositories/DeviceRegisterHistoryRepository.java", + "title": "DeviceRegisterHistoryRepository.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/repositories/DeviceRegisterHistoryRepository.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.repositories;\r\n\r\nimport org.springframework.stereotype.Repository;\r\n\r\nimport io.mosip.kernel.core.dataaccess.spi.repository.BaseRepository;\r\nimport io.mosip.admin.bulkdataupload.entity.DeviceRegisterHistory;\r\nimport io.mosip.admin.bulkdataupload.entity.id.DeviceRegisterHistoryId;\r\n\r\n@Repository\r\npublic interface DeviceRegisterHistoryRepository\r\n\t\textends BaseRepository {\r\n\r\n}\r\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/repositories/DeviceRegisterRepository.java", + "title": "DeviceRegisterRepository.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/repositories/DeviceRegisterRepository.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.repositories;\r\n\r\nimport org.springframework.data.jpa.repository.Query;\r\nimport org.springframework.stereotype.Repository;\r\n\r\nimport io.mosip.kernel.core.dataaccess.spi.repository.BaseRepository;\r\nimport io.mosip.admin.bulkdataupload.entity.DeviceRegister;\r\n\r\n@Repository\r\npublic interface DeviceRegisterRepository extends BaseRepository {\r\n\r\n\t@Query(\"From DeviceRegister dr where dr.deviceCode=?1 And dr.statusCode is null\")\r\n\tDeviceRegister findDeviceRegisterByCodeAndStatusCode(String code);\r\n}\r\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/repositories/DeviceRepository.java", + "title": "DeviceRepository.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/repositories/DeviceRepository.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.repositories;\r\n\r\nimport java.time.LocalDateTime;\r\nimport java.util.List;\r\n\r\nimport org.springframework.data.domain.Page;\r\nimport org.springframework.data.domain.Pageable;\r\nimport org.springframework.data.jpa.repository.Modifying;\r\nimport org.springframework.data.jpa.repository.Query;\r\nimport org.springframework.stereotype.Repository;\r\nimport org.springframework.transaction.annotation.Transactional;\r\n\r\nimport io.mosip.kernel.core.dataaccess.spi.repository.BaseRepository;\r\nimport io.mosip.admin.bulkdataupload.entity.Device;\r\n\r\n/**\r\n * Repository function to fetching device details\r\n * \r\n * @author Megha Tanga\r\n * @author Sidhant Agarwal\r\n * @author Ravi Kant\r\n * @since 1.0.0\r\n *\r\n */\r\n\r\n@Repository\r\npublic interface DeviceRepository extends BaseRepository {\r\n\r\n\t/**\r\n\t * This method trigger query to fetch the Device detail for the given id.\r\n\t * \r\n\t * @param id the id of device\r\n\t * @return the device detail\r\n\t */\r\n\t@Query(\"FROM Device d where d.id = ?1 AND (d.isDeleted is null or d.isDeleted = false) AND d.isActive = true\")\r\n\tList findByIdAndIsDeletedFalseOrIsDeletedIsNull(String id);\r\n\r\n\t/**\r\n\t * This method trigger query to fetch the Device detail for the given language\r\n\t * code.\r\n\t * \r\n\t * \r\n\t * @param langCode language code provided by user\r\n\t * \r\n\t * @return List Device Details fetched from database\r\n\t */\r\n\r\n\t@Query(\"FROM Device d where d.langCode = ?1 and (d.isDeleted is null or d.isDeleted = false) AND d.isActive = true\")\r\n\tList findByLangCodeAndIsDeletedFalseOrIsDeletedIsNull(String langCode);\r\n\r\n\t/**\r\n\t * This method trigger query to fetch the Device detail for the given language\r\n\t * code and Device Type code.\r\n\t * \r\n\t * \r\n\t * @param langCode language code provided by user\r\n\t * @param deviceTypeCode device Type Code provided by user\r\n\t * @return List Device Details fetched from database\r\n\t * \r\n\t */\r\n\t@Query(value = \"select d.id, d.name, d.mac_address, d.serial_num, d.ip_address, d.dspec_id, d.lang_code, d.is_active, d.validity_end_dtimes, d.zone_code, s.dtyp_code from master.device_master d, master.device_spec s where d.dspec_id = s.id and d.lang_code = s.lang_code and d.lang_code = ?1 and s.dtyp_code = ?2 and (d.is_deleted is null or d.is_deleted = false) and d.is_active = true\", nativeQuery = true)\r\n\tList findByLangCodeAndDtypeCode(String langCode, String deviceTypeCode);\r\n\r\n\t/**\r\n\t * This method trigger query to fetch the Machine detail for the given id code.\r\n\t * \r\n\t * @param deviceSpecId machineSpecId provided by user\r\n\t * \r\n\t * @return MachineDetail fetched from database\r\n\t */\r\n\r\n\t@Query(\"FROM Device d where d.deviceSpecId = ?1 and (d.isDeleted is null or d.isDeleted = false) and d.isActive = true\")\r\n\tList findDeviceByDeviceSpecIdAndIsDeletedFalseorIsDeletedIsNull(String deviceSpecId);\r\n\r\n\t/**\r\n\t * This method trigger query to fetch the Device detail for the given id and\r\n\t * language code.\r\n\t * \r\n\t * @param id the id of device\r\n\t * @param langCode language code from user\r\n\t * @return the device detail\r\n\t */\r\n\t@Query(\"FROM Device d where d.id = ?1 and d.langCode = ?2 AND (d.isDeleted is null or d.isDeleted = false) and d.isActive = true\")\r\n\tDevice findByIdAndLangCodeAndIsDeletedFalseOrIsDeletedIsNull(String id, String langCode);\r\n\r\n\t/**\r\n\t * This method trigger query to fetch the Device detail those are mapped with\r\n\t * the given regCenterId\r\n\t * \r\n\t * @param regCenterId regCenterId provided by user\r\n\t * @return Device fetched all device those are mapped with the given\r\n\t * registration center from database\r\n\t */\r\n\t@Query(value = \"SELECT dm.id, dm.name, dm.mac_address, dm.serial_num, dm.ip_address, dm.dspec_id, dm.lang_code, dm.is_active, dm.validity_end_dtimes, dm.cr_by, dm.cr_dtimes, dm.upd_by, dm.upd_dtimes, dm.is_deleted, dm.del_dtimes, dm.zone_code FROM master.device_master dm inner join master.reg_center_device rcd on dm.id = rcd.device_id where rcd.regcntr_id=?1\", countQuery = \"SELECT count(*) FROM master.device_master dm inner join master.reg_center_device rcd on dm.id = rcd.device_id where rcd.regcntr_id=?1\", nativeQuery = true)\r\n\tPage findDeviceByRegCenterId(String regCenterId, Pageable pageable);\r\n\r\n\t@Query(\"FROM Device d where d.id = ?1 and d.langCode = ?2 AND (d.isDeleted is null or d.isDeleted = false)\")\r\n\tDevice findByIdAndLangCodeAndIsDeletedFalseOrIsDeletedIsNullNoIsActive(String id, String langCode);\r\n\r\n\t/**\r\n\t * This method trigger query to fetch the Device id's those are mapped with the\r\n\t * regCenterId\r\n\t * \r\n\t * @return Device id's fetched for all device those are mapped with the\r\n\t * registration center from database\r\n\t */\r\n\t@Query(value = \"select d.id from master.device_master d where d.id in(select distinct rdm.device_id from master.reg_center_device rdm ) and d.lang_code=?1\", nativeQuery = true)\r\n\tList findMappedDeviceId(String langCode);\r\n\r\n\t/**\r\n\t * This method trigger query to fetch the Device id's those are not mapped with\r\n\t * the regCenterId\r\n\t * \r\n\t * @return Device id's fetched for all device those are not mapped with the\r\n\t * registration center from database\r\n\t */\r\n\t@Query(value = \"select d.id from master.device_master d where d.id not in(select distinct rdm.device_id from master.reg_center_device rdm ) and d.lang_code=?1\", nativeQuery = true)\r\n\tList findNotMappedDeviceId(String langCode);\r\n\r\n\t@Query(value = \"Select * from master.device_spec ds where (ds.is_deleted is null or ds.is_deleted = false) and ds.is_active = true and ds.dtyp_code IN (select code from master.device_type dt where dt.name=?1) and ds.lang_code=?2\", nativeQuery = true)\r\n\tList findDeviceSpecByDeviceTypeNameAndLangCode(String typeName, String langCode);\r\n\r\n\t@Query(value = \"select d.name from master.reg_center_device rd,master.registration_center r,master.device_master d where r.id=rd.regcntr_id and rd.device_id=d.id and d.lang_code=rd.lang_code and r.lang_code=rd.lang_code and rd.device_id in(?1) and rd.lang_code=?2\", nativeQuery = true)\r\n\tList findDeviceNameByDevicesAndLangCode(List devices, String langCode);\r\n\r\n\t/**\r\n\t * This method trigger query to fetch the Device detail for the given id and\r\n\t * language code for both is_Deleted false or true or null and isActive true or\r\n\t * false\r\n\t * \r\n\t * @param id the id of device\r\n\t * @param langCode language code from user\r\n\t * @return the device detail\r\n\t */\r\n\t@Query(\"FROM Device d where d.id = ?1 and d.langCode = ?2\")\r\n\tDevice findByIdAndLangCode(String id, String langCode);\r\n\r\n\t/**\r\n\t * This method trigger query to fetch the Machine detail for the given id code.\r\n\t * \r\n\t * @param id machine Id provided by user\r\n\t * \r\n\t * @return MachineDetail fetched from database\r\n\t */\r\n\r\n\t@Query(\"FROM Device d where d.id = ?1 and (d.isDeleted is null or d.isDeleted = false)\")\r\n\tList findDeviceByIdAndIsDeletedFalseorIsDeletedIsNullNoIsActive(String id);\r\n\r\n\t/**\r\n\t * Method to decommission the Device\r\n\t * \r\n\t * @param deviceID the device id which needs to be decommissioned.\r\n\t * @param deCommissionedBy the user name retrieved from the context who\r\n\t * performs this operation.\r\n\t * @param deCommissionedDateTime date and time at which the center was\r\n\t * decommissioned.\r\n\t * @return the number of device decommissioned.\r\n\t */\r\n\t@Query(\"UPDATE Device d SET d.isDeleted = true, d.isActive = false, d.updatedBy = ?2, d.updatedDateTime = ?3, d.deletedDateTime=?3 WHERE d.id=?1 and (d.isDeleted is null or d.isDeleted =false)\")\r\n\t@Modifying\r\n\t@Transactional\r\n\tint decommissionDevice(String id, String deCommissionedBy, LocalDateTime deCommissionedDateTime);\r\n\r\n\t/**\r\n\t * This method trigger query to fetch the Machine detail for the given id code.\r\n\t * \r\n\t * @param id machine Id provided by user\r\n\t * \r\n\t * @return MachineDetail fetched from database\r\n\t */\r\n\r\n\t@Query(\"FROM Device d where d.serialNum = ?1 and (d.isDeleted is null or d.isDeleted = false)\")\r\n\tList findDeviceBySerialNumberAndIsDeletedFalseorIsDeletedIsNullNoIsActive(String serialNum);\r\n\r\n}\r\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/repositories/DeviceSpecificationRepository.java", + "title": "DeviceSpecificationRepository.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/repositories/DeviceSpecificationRepository.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.repositories;\r\n\r\nimport java.util.List;\r\n\r\nimport org.springframework.data.jpa.repository.Query;\r\nimport org.springframework.stereotype.Repository;\r\n\r\nimport io.mosip.kernel.core.dataaccess.spi.repository.BaseRepository;\r\nimport io.mosip.admin.bulkdataupload.entity.DeviceSpecification;\r\n\r\n/**\r\n * \r\n * Repository function to fetching and save device specification details\r\n * \r\n * @author Uday Kumar\r\n * @author Megha Tanga\r\n * @since 1.0.0\r\n *\r\n */\r\n@Repository\r\npublic interface DeviceSpecificationRepository extends BaseRepository {\r\n\t/**\r\n\t * This method trigger query to fetch the Device Specification detail for the\r\n\t * given language code.\r\n\t *\r\n\t * @param langCode languageCode provided by user\r\n\t * \r\n\t * @return List Device specific Details fetched from database\r\n\t */\r\n\t@Query(\"FROM DeviceSpecification d where d.langCode = ?1 and (d.isDeleted is null or d.isDeleted = false) and d.isActive = true\")\r\n\tList findByLangCodeAndIsDeletedFalseOrIsDeletedIsNull(String langCode);\r\n\r\n\t/**\r\n\t * This method trigger query to fetch the Device Specification detail for the\r\n\t * given language code and device Type Code.\r\n\t *\r\n\t * @param langCode LanguageCode provided by user\r\n\t * @param deviceTypeCode Device Type Code provided by user\r\n\t * @return List Device specific Details fetched from database\r\n\t */\r\n\t@Query(\"FROM DeviceSpecification d where d.langCode = ?1 and d.deviceTypeCode = ?2 and (d.isDeleted is null or d.isDeleted = false) and d.isActive = true\")\r\n\tList findByLangCodeAndDeviceTypeCodeAndIsDeletedFalseOrIsDeletedIsNull(String langCode,\r\n\t\t\tString deviceTypeCode);\r\n\r\n\t/**\r\n\t * This method trigger query to fetch the Device Specification detail for the\r\n\t * given device specification id.\r\n\t *\r\n\t * @param id id provided by user\r\n\t * \r\n\t * @return List Device specific Details fetched from database\r\n\t */\r\n\r\n\t@Query(\"FROM DeviceSpecification d where d.id = ?1 and (d.isDeleted is null or d.isDeleted = false) and d.isActive = true\")\r\n\tList findByIdAndIsDeletedFalseorIsDeletedIsNull(String id);\r\n\r\n\t/**\r\n\t * This method trigger query to fetch the Device Specification detail for the\r\n\t * given device specification id.\r\n\t *\r\n\t * @param id id provided by user\r\n\t * \r\n\t * @param langCode langCode provided by user\r\n\t * \r\n\t * @return List Device specific Details fetched from database\r\n\t */\r\n\r\n\t@Query(\"FROM DeviceSpecification d where d.id = ?1 and d.langCode =?2 and (d.isDeleted is null or d.isDeleted = false)\")\r\n\tDeviceSpecification findByIdAndLangCodeAndIsDeletedFalseorIsDeletedIsNull(String id, String langCode);\r\n\r\n\t@Query(\"FROM DeviceSpecification d where (d.isDeleted is null or d.isDeleted = false) and d.isActive = true\")\r\n\tList findAllDeviceSpecByIsActiveAndIsDeletedIsNullOrFalse();\r\n}\r\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/repositories/DeviceTypeRepository.java", + "title": "DeviceTypeRepository.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/repositories/DeviceTypeRepository.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.repositories;\n\nimport java.util.List;\n\nimport org.springframework.data.jpa.repository.Query;\nimport org.springframework.stereotype.Repository;\n\nimport io.mosip.kernel.core.dataaccess.spi.repository.BaseRepository;\nimport io.mosip.admin.bulkdataupload.entity.DeviceType;\n\n/**\n * Repository function to fetching Device Type details\n * \n * @author Megha Tanga\n * @since 1.0.0\n *\n */\n@Repository\npublic interface DeviceTypeRepository extends BaseRepository {\n\n\t@Query(\"FROM DeviceType d where (isDeleted is null OR isDeleted = false) AND isActive = true\")\n\tList findAllDeviceTypeByIsActiveAndIsDeletedFalseOrNull();\n\t\n\t@Query(value=\"FROM DeviceType d where d.code = ?1 and d.langCode =?2\")\n\tDeviceType findDeviceTypeByCodeAndByLangCode(String code, String langCode);\n\t\n}" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/repositories/DocumentCategoryRepository.java", + "title": "DocumentCategoryRepository.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/repositories/DocumentCategoryRepository.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.repositories;\r\n\r\nimport java.time.LocalDateTime;\r\nimport java.util.List;\r\n\r\nimport org.springframework.data.jpa.repository.Modifying;\r\nimport org.springframework.data.jpa.repository.Query;\r\nimport org.springframework.stereotype.Repository;\r\n\r\nimport io.mosip.kernel.core.dataaccess.spi.repository.BaseRepository;\r\nimport io.mosip.admin.bulkdataupload.entity.DocumentCategory;\r\nimport io.mosip.admin.bulkdataupload.entity.id.CodeAndLanguageCodeID;\r\n\r\n/**\r\n * @author Neha\r\n * @author Ritesh Sinha\r\n * @since 1.0.0\r\n *\r\n */\r\n@Repository\r\npublic interface DocumentCategoryRepository extends BaseRepository {\r\n\r\n\t/**\r\n\t * Get all DocumentCategory types\r\n\t *\r\n\t * @param entityClass is class of type DocumentCategory\r\n\t * @return list of {@link DocumentCategory}\r\n\t */\r\n\t@Query(\"FROM DocumentCategory where (isDeleted is null OR isDeleted = false) AND isActive = true\")\r\n\tList findAllByIsDeletedFalseOrIsDeletedIsNull(Class entityClass);\r\n\r\n\t/**\r\n\t * Get all Document category of a specific language using language code\r\n\t * \r\n\t * @param langCode is the language code present in database\r\n\t * @return list of {@link DocumentCategory}\r\n\t */\r\n\t@Query(\"FROM DocumentCategory WHERE langCode =?1 AND (isDeleted is null OR isDeleted = false) AND isActive = true\")\r\n\tList findAllByLangCodeAndIsDeletedFalseOrIsDeletedIsNull(String langCode);\r\n\r\n\t/**\r\n\t * Get Document Category by specific id and language code\r\n\t * \r\n\t * @param code for document category\r\n\t * @param langCode is the language code present in database\r\n\t * @return object of {@link DocumentCategory}\r\n\t */\r\n\t@Query(\"FROM DocumentCategory WHERE code =?1 AND langCode =?2 AND (isDeleted is null OR isDeleted = false) and isActive = true\")\r\n\tDocumentCategory findByCodeAndLangCodeAndIsDeletedFalseOrIsDeletedIsNull(String code, String langCode);\r\n\r\n\t/**\r\n\t * Delete Document Category based on code provided.\r\n\t * \r\n\t * @param deletedDateTime the Date and time of deletion.\r\n\t * @param code the document category code.\r\n\t * @param updatedBy the updatedby user name.\r\n\t * @return the integer.\r\n\t */\r\n\t@Modifying\r\n\t@Query(\"UPDATE DocumentCategory d SET d.updatedBy=?3,d.isDeleted =true , d.deletedDateTime = ?1 WHERE d.code =?2 and (d.isDeleted is null or d.isDeleted =false)\")\r\n\tint deleteDocumentCategory(LocalDateTime deletedDateTime, String code, String updatedBy);\r\n\t\r\n\t\r\n\t@Query(\"FROM DocumentCategory WHERE code =?1 AND langCode =?2 AND (isDeleted is null OR isDeleted = false)\")\r\n\tDocumentCategory findByCodeAndLangCode(String code, String langCode);\r\n}\r\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/repositories/DocumentTypeRepository.java", + "title": "DocumentTypeRepository.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/repositories/DocumentTypeRepository.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.repositories;\r\n\r\nimport java.time.LocalDateTime;\r\nimport java.util.List;\r\n\r\nimport org.springframework.data.jpa.repository.Modifying;\r\nimport org.springframework.data.jpa.repository.Query;\r\nimport org.springframework.stereotype.Repository;\r\n\r\nimport io.mosip.kernel.core.dataaccess.spi.repository.BaseRepository;\r\nimport io.mosip.admin.bulkdataupload.entity.DocumentType;\r\nimport io.mosip.admin.bulkdataupload.entity.id.CodeAndLanguageCodeID;\r\n\r\n/**\r\n * \r\n * @author Uday Kumar\r\n * @author Ritesh Sinha.\r\n * @since 1.0.0\r\n *\r\n */\r\n@Repository\r\npublic interface DocumentTypeRepository extends BaseRepository {\r\n\r\n\t/**\r\n\t * Get Document Type by specific code and language code\r\n\t * \r\n\t * @param code the document category code.\r\n\t * @param langCode the language code.\r\n\t * @return object of {@link DocumentType}.\r\n\t */\r\n\t@Query(value = \"select dt.code, dt.name, dt.descr , dt.lang_code , dt.is_active ,dt.cr_by ,dt.cr_dtimes ,dt.upd_by ,dt.upd_dtimes ,dt.is_deleted ,dt.del_dtimes from master.valid_document vd , master.doc_type dt where vd.doctyp_code = dt.code and dt.lang_code=?2 and vd.doccat_code =?1 and (dt.is_deleted = false or dt.is_deleted is null) AND dt.is_active = true\", nativeQuery = true)\r\n\tList findByCodeAndLangCodeAndIsDeletedFalse(String code, String langCode);\r\n\r\n\t/**\r\n\t * Get Document Type by specific code and language code\r\n\t * \r\n\t * @param code the document type code.\r\n\t * @param langCode the language code.\r\n\t * @return object of {@link DocumentType}.\r\n\t */\r\n\t@Query(\"FROM DocumentType WHERE code =?1 AND langCode =?2 AND (isDeleted is null OR isDeleted = false) and isActive = true\")\r\n\tDocumentType findByCodeAndLangCodeAndIsDeletedFalseOrIsDeletedIsNull(String code, String langCode);\r\n\r\n\t/**\r\n\t * Delete Document Type based on code provided.\r\n\t * \r\n\t * @param deletedDateTime the Date and time of deletion.\r\n\t * @param code the document type code.\r\n\t * @param updatedBy the updatedby user name.\r\n\t * @return the Integer.\r\n\t */\r\n\t@Modifying\r\n\t@Query(\"UPDATE DocumentType d SET d.updatedBy=?3,d.isDeleted =true , d.deletedDateTime = ?1 WHERE d.code =?2 and (d.isDeleted is null or d.isDeleted =false)\")\r\n\tint deleteDocumentType(LocalDateTime deletedDateTime, String code, String updatedBy);\r\n\r\n\t/**\r\n\t * Get all Document Type by specific code and language code\r\n\t * \r\n\t * @param code the document type code.\r\n\t * @param langCode the language code.\r\n\t * @return object of {@link DocumentType}.\r\n\t */\r\n\t@Query(\"FROM DocumentType WHERE code =?1 AND langCode =?2 AND (isDeleted is null OR isDeleted = false)\")\r\n\tDocumentType findByCodeAndLangCode(String code, String langCode);\r\n\r\n\t/**\r\n\t * Get all Document type of a specific language using language code\r\n\t * \r\n\t * @param langCode is the language code present in database\r\n\t * @return list of {@link DocumentType}\r\n\t */\r\n\t@Query(\"FROM DocumentType WHERE langCode =?1 AND (isDeleted is null OR isDeleted = false) AND isActive = true\")\r\n\tList findAllByLangCodeAndIsDeletedFalseOrIsDeletedIsNull(String langCode);\r\n}\r\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/repositories/DynamicFieldRepository.java", + "title": "DynamicFieldRepository.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/repositories/DynamicFieldRepository.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.repositories;\n\nimport java.time.LocalDateTime;\nimport java.util.List;\n\nimport org.springframework.data.domain.Page;\nimport org.springframework.data.domain.Pageable;\nimport org.springframework.data.jpa.repository.Modifying;\nimport org.springframework.data.jpa.repository.Query;\nimport org.springframework.stereotype.Repository;\n\nimport io.mosip.kernel.core.dataaccess.spi.repository.BaseRepository;\nimport io.mosip.admin.bulkdataupload.entity.DynamicField;\n\n\n/**\n * \n * @author anusha\n *\n */\n@Repository\npublic interface DynamicFieldRepository extends BaseRepository {\n\n\t/**\n\t * Get All dynamic fields based on pagination\n\t * \n\t * @param langCode\n\t * @param pageable\n\t * @return\n\t */\n\t@Query(value=\"SELECT * FROM master.dynamic_field WHERE (is_deleted is null OR is_deleted = false) and lang_code=?1\",\n\t\t\tcountQuery=\"SELECT COUNT(id) FROM master.dynamic_field WHERE (is_deleted is null OR is_deleted = false) and lang_code=?1\",\n\t\t\tnativeQuery = true)\n\tPage findAllDynamicFieldsByLangCode(String langCode, Pageable pageable);\n\t\n\t/**\n\t * Get All dynamic fields based on pagination\n\t * @param pageable\n\t * @return\n\t */\n\t@Query(value=\"SELECT * FROM master.dynamic_field WHERE (is_deleted is null OR is_deleted = false)\", \n\t\t\tcountQuery=\"SELECT COUNT(id) FROM master.dynamic_field WHERE (is_deleted is null OR is_deleted = false)\",\n\t\t\tnativeQuery= true)\n\tPage findAllDynamicFields(Pageable pageable);\n\t\n\t/**\n\t * Get dynamic field based on id\n\t * @param id\n\t * @return\n\t */\n\t@Query(\"FROM DynamicField WHERE (isDeleted is null OR isDeleted = false) and id=?1\")\n\tDynamicField findDynamicFieldById(String id);\n\t\n\t/**\n\t * Get dynamic field based on id and langCode\n\t * @param id\n\t * @param langCode\n\t * @return\n\t */\n\t@Query(\"FROM DynamicField WHERE (isDeleted is null OR isDeleted = false) and id=?1 and langCode=?2\")\n\tDynamicField findDynamicFieldByIdAndLangCode(String id, String langCode);\n\t\n\t/**\n\t * \n\t * @param fieldName\n\t * @return\n\t */\n\t@Query(\"FROM DynamicField WHERE lower(name)=lower(?1)\")\n\tList findAllDynamicFieldByName(String fieldName);\n\t\n\t/**\n\t * \n\t * @param fieldName\n\t * @param langCode\n\t * @return\n\t */\n\t@Query(\"FROM DynamicField WHERE lower(name)=lower(?1) and langCode=?2\")\n\tDynamicField findDynamicFieldByNameAndLangCode(String fieldName, String langCode);\n\t\n\t/**\n\t * Update all the fields of dynamic field except name\n\t * \n\t * @param id\n\t * @param description\n\t * @param langCode\n\t * @param dataType\n\t * @param isActive\n\t * @param updatedDateTime\n\t * @param updatedBy\n\t * @return\n\t */\n\t@Modifying\n\t@Query(\"UPDATE DynamicField SET description=?2, langCode=?3, dataType=?4, isActive=?5 , updatedDateTime=?6, updatedBy=?7\"\n\t\t\t+ \" WHERE (isDeleted is null OR isDeleted = false) and id=?1\")\n\tint updateDynamicField(String id, String description, String langCode, String dataType, boolean isActive, \n\t\t\tLocalDateTime updatedDateTime, String updatedBy);\n\t\n\t/**\n\t * Update dynamic field value specific to a language code\n\t * \n\t * @param id\n\t * @param valueJson\n\t * @param langCode\n\t * @param updatedDateTime\n\t * @param updatedBy\n\t * @return\n\t */\n\t@Modifying\n\t@Query(\"UPDATE DynamicField SET valueJson=?2, updatedDateTime=?4, updatedBy=?5\"\n\t\t\t+ \" WHERE (isDeleted is null OR isDeleted = false) and id=?1 and langCode=?3\")\n\tint updateDynamicFieldValue(String id, String valueJson, String langCode, LocalDateTime updatedDateTime, String updatedBy);\n\t\n\t/**\n\t * update isDeleted as true\n\t * @param id\n\t * @param updatedDateTime\n\t * @param updatedBy\n\t * @return\n\t */\n\t@Modifying\n\t@Query(\"UPDATE DynamicField SET isDeleted=true, updatedDateTime=?2, updatedBy=?3 WHERE (isDeleted is null OR isDeleted = false) and id=?1\")\n\tint deleteDynamicField(String id, LocalDateTime updatedDateTime, String updatedBy);\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/repositories/FoundationalTrustProviderRepository.java", + "title": "FoundationalTrustProviderRepository.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/repositories/FoundationalTrustProviderRepository.java", + "language": "java", + "content": "/**\r\n * \r\n */\r\npackage io.mosip.admin.bulkdataupload.repositories;\r\n\r\nimport org.springframework.data.jpa.repository.Query;\r\nimport org.springframework.stereotype.Repository;\r\n\r\nimport io.mosip.admin.bulkdataupload.entity.FoundationalTrustProvider;\r\nimport io.mosip.kernel.core.dataaccess.spi.repository.BaseRepository;\r\n\r\n/**\r\n * @author Ramadurai Pandian\r\n *\r\n */\r\n@Repository\r\npublic interface FoundationalTrustProviderRepository extends BaseRepository {\r\n\r\n\t@Query(\"from FoundationalTrustProvider WHERE name = ?1 and email=?2 and address=?3 and certAlias=?4 and (isDeleted is null or isDeleted =false) AND isActive = ?5\")\r\n\tFoundationalTrustProvider findByDetails(String name, String email, String address, String certAlias,\r\n\t\t\tboolean isActive);\r\n\r\n}\r\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/repositories/FoundationalTrustProviderRepositoryHistory.java", + "title": "FoundationalTrustProviderRepositoryHistory.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/repositories/FoundationalTrustProviderRepositoryHistory.java", + "language": "java", + "content": "/**\r\n * \r\n */\r\npackage io.mosip.admin.bulkdataupload.repositories;\r\n\r\nimport org.springframework.stereotype.Repository;\r\n\r\nimport io.mosip.admin.bulkdataupload.entity.FoundationalTrustProviderHistory;\r\nimport io.mosip.kernel.core.dataaccess.spi.repository.BaseRepository;\r\n\r\n/**\r\n * @author Ramadurai Pandian\r\n *\r\n */\r\n@Repository\r\npublic interface FoundationalTrustProviderRepositoryHistory\r\n\t\textends BaseRepository {\r\n\r\n}\r\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/repositories/GenderTypeRepository.java", + "title": "GenderTypeRepository.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/repositories/GenderTypeRepository.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.repositories;\n\nimport java.time.LocalDateTime;\nimport java.util.List;\n\nimport org.springframework.data.jpa.repository.Modifying;\nimport org.springframework.data.jpa.repository.Query;\nimport org.springframework.stereotype.Repository;\n\nimport io.mosip.admin.bulkdataupload.entity.Gender;\nimport io.mosip.admin.bulkdataupload.entity.id.CodeAndLanguageCodeID;\nimport io.mosip.kernel.core.dataaccess.spi.repository.BaseRepository;\n\n/**\n * Repository class for fetching gender data\n * \n * @author Urvil Joshi\n * @author Sidhant Agarwal\n * @since 1.0.0\n *\n */\n@Repository\npublic interface GenderTypeRepository extends BaseRepository {\n\n\t/**\n\t * Get all Gender based on isActive true and isDeleted as false or null\n\t * \n\t * @return list of gender\n\t */\n\t@Query(\"FROM Gender WHERE isActive=true AND (isDeleted=false OR isDeleted is null)\")\n\tList findAllByIsActiveAndIsDeleted();\n\n\t@Query(\"FROM Gender WHERE langCode =?1 and (isDeleted is null or isDeleted =false) and isActive = true\")\n\tList findGenderByLangCodeAndIsDeletedFalseOrIsDeletedIsNull(String langCode);\n\n\t/**\n\t * Delete Gender Type by code provided.\n\t * \n\t * @param code code the gender type code.\n\t * @param deletedDateTime metadata Deleted Date time\n\t * @param updatedBy updatedBy\n\t * @return rows modified\n\t */\n\t@Modifying\n\t@Query(\"UPDATE Gender g SET g.updatedBy=?3 , g.isDeleted =true , g.deletedDateTime = ?2 WHERE g.code =?1 and (g.isDeleted is null or g.isDeleted =false)\")\n\tint deleteGenderType(String code, LocalDateTime deletedDateTime, String updatedBy);\n\n\t/**\n\t * Update gender type by code and langcode\n\t * \n\t * @param code code to be updated\n\t * @param langCode lang code to be updated\n\t * @param genderName genderName to be updated\n\t * @param isActive mapping is active or not\n\t * @param updatedDateTime upated timestamp\n\t * @param updatedBy updating user\n\t * @return no of updated rows\n\t */\n\t@Modifying\n\t@Query(\"UPDATE Gender g SET g.genderName=?3, g.isActive=?4 ,g.updatedDateTime=?5, g.updatedBy=?6 WHERE g.code =?1 and g.langCode=?2 and (g.isDeleted is null or g.isDeleted =false)\")\n\tint updateGenderType(String code, String langCode, String genderName, Boolean isActive,\n\t\t\tLocalDateTime updatedDateTime, String updatedBy);\n\n\t/**\n\t * validate gender name\n\t * \n\t * @param genderName gender name eg: male or female\n\t * @return boolean\n\t */\n\t@Query(value = \"select EXISTS(select * from master.gender g where LOWER(g.name)=LOWER(?1) and (g.is_deleted is null or g.is_deleted =false) and g.is_active=true)\", nativeQuery = true)\n\tboolean isGenderNamePresent(String genderName);\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/repositories/HolidayRepository.java", + "title": "HolidayRepository.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/repositories/HolidayRepository.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.repositories;\r\n\r\nimport java.time.LocalDate;\r\nimport java.time.LocalDateTime;\r\nimport java.util.List;\r\n\r\nimport org.springframework.data.jpa.repository.Modifying;\r\nimport org.springframework.data.jpa.repository.Query;\r\nimport org.springframework.stereotype.Repository;\r\nimport org.springframework.transaction.annotation.Transactional;\r\n\r\nimport io.mosip.admin.bulkdataupload.entity.Holiday;\r\nimport io.mosip.kernel.core.dataaccess.spi.repository.BaseRepository;\r\n\r\n/**\r\n * Repository class for Holiday data\r\n * \r\n * @author Abhishek Kumar\r\n * @author Sidhant Agarwal\r\n * @since 1.0.0\r\n */\r\n@Repository\r\npublic interface HolidayRepository extends BaseRepository {\r\n\r\n\t/**\r\n\t * Get all the holidays for a specific id\r\n\t * \r\n\t * @param id holiday id input from user\r\n\t * @return list of holidays for a particular id\r\n\t */\r\n\t@Query(\"FROM Holiday where holidayId=?1 and (isDeleted = false or isDeleted is null) and isActive = true\")\r\n\tList findAllById(int id);\r\n\r\n\t/**\r\n\t * Fetch all the non deleted holidays\r\n\t * \r\n\t * @return list of {@link Holiday}\r\n\t */\r\n\t@Query(\"FROM Holiday WHERE (isDeleted = false or isDeleted is null) and isActive = true\")\r\n\tList findAllNonDeletedHoliday();\r\n\r\n\t/**\r\n\t * Get all the holidays for a specific location code\r\n\t * \r\n\t * @param locationCode - location code Eg: IND\r\n\t * @param langCode - language code Eg:ENG\r\n\t * @param year - Eg:1971\r\n\t * @return list of holidays\r\n\t */\r\n\r\n\t@Query(value = \"select id, location_code, holiday_date, holiday_name, holiday_desc, lang_code, is_active, cr_by, cr_dtimes, upd_by, upd_dtimes, is_deleted, del_dtimes from master.loc_holiday WHERE location_code = ?1 and lang_code = ?2 and extract(year from holiday_date) = ?3 and (is_deleted = false or is_deleted is null) and is_active = true\", nativeQuery = true)\r\n\tList findAllByLocationCodeYearAndLangCode(String locationCode, String langCode, int year);\r\n\r\n\t/**\r\n\t * Get specific holiday by holiday id and language code\r\n\t * \r\n\t * @param holidayId input from user\r\n\t * @param langCode input from user\r\n\t * @return list of holidays for the particular holiday id and language code\r\n\t */\r\n\t@Query(\"FROM Holiday where holidayId=?1 and langCode = ?2 and (isDeleted = false or isDeleted is null) and isActive = true\")\r\n\tList findHolidayByIdAndHolidayIdLangCode(int holidayId, String langCode);\r\n\r\n\t/**\r\n\t * Method to get the list of holiday by name,date and location code\r\n\t * \r\n\t * @param holidayName name of the holiday to be search\r\n\t * @param holidayDate date of the holiday to be search\r\n\t * @param locationCode location code of the holiday to be search\r\n\t * @return list of holidays\r\n\t */\r\n\t@Query(\"FROM Holiday WHERE holidayName = ?1 AND holidayDate = ?2 AND locationCode = ?3 AND (isDeleted is null or isDeleted=false) AND isActive = true\")\r\n\tList findHolidayByHolidayIdAndByIsDeletedFalseOrIsDeletedNull(String holidayName, LocalDate holidayDate,\r\n\t\t\tString locationCode);\r\n\r\n\t/**\r\n\t * Fetch the holiday by id and location code\r\n\t * \r\n\t * @param id id of the holiday\r\n\t * @param locationCode location code of the holiday\r\n\t * @return {@link Holiday}\r\n\t */\r\n\t@Query(\"FROM Holiday where holidayId=?1 and locationCode = ?2 and (isDeleted = false or isDeleted is null) and isActive = true\")\r\n\tHoliday findHolidayByIdAndHolidayIdLocationCode(int id, String locationCode);\r\n\r\n\t/**\r\n\t * Method to delete the holiday\r\n\t * \r\n\t * @param deletedTime input for deleted timeStamp\r\n\t * @param holidayName name of the holiday to be deleted\r\n\t * @param holidayDate date of the holiday to be deleted\r\n\t * @param locationCode location of the holiday to be deleted\r\n\t * @return no. of rows deleted\r\n\t */\r\n\t@Modifying\r\n\t@Transactional\r\n\t@Query(\"UPDATE Holiday SET isDeleted=true ,deletedDateTime =?1 WHERE holidayName = ?2 AND holidayDate = ?3 AND locationCode = ?4 AND (isDeleted = false OR isDeleted IS NULL)\")\r\n\tint deleteHolidays(LocalDateTime deletedTime, String holidayName, LocalDate holidayDate, String locationCode);\r\n\r\n\t/**\r\n\t * Fetch the holiday by id and location code\r\n\t * \r\n\t * @param id id of the holiday\r\n\t * @param locationCode location code of the holiday\r\n\t * @return {@link Holiday}\r\n\t */\r\n\t@Query(\"FROM Holiday where locationCode = ?1 and (isDeleted = false or isDeleted is null) and isActive = true\")\r\n\tList findHolidayByHolidayIdLocationCode(String locationCode);\r\n\r\n\t/**\r\n\t * Fetch the holiday by id and location code\r\n\t * \r\n\t * @param id id of the holiday\r\n\t * @param locationCode location code of the holiday\r\n\t * @return {@link Holiday}\r\n\t */\r\n\t@Query(\"FROM Holiday where locationCode = ?1 and langCode=?2 and (isDeleted = false or isDeleted is null) and isActive = true\")\r\n\tList findHolidayByLocationCode(String locationCode, String langCode);\r\n\r\n\t@Query(value = \"select holiday_date from master.loc_holiday WHERE location_code = ?1 and lang_code = ?2\", nativeQuery = true)\r\n\tList findHolidayByLocationCode1(String locationCode, String langCode);\r\n\r\n\t@Query(value = \"SELECT * FROM loc_holiday where lang_code=?2 and location_code IN (SELECT code FROM location where hierarchy_level <=?1 and lang_code=?2)\", nativeQuery = true)\r\n\tList findHoildayByLocationCodeAndLangCode(int level, String langCode);\r\n\t\r\n\t@Query(value = \"FROM Holiday where holidayDate = ?1 and (isDeleted = false or isDeleted is null) \")\r\n\tList findHolidayByHolidayDate(LocalDate holidayDate);\r\n\t\r\n\t@Query(value = \"FROM Holiday where holidayDate = ?1 and locationCode = ?2 and langCode=?3 and (isDeleted = false or isDeleted is null) \")\r\n\tHoliday findHolidayByHolidayDateLocationCodeLangCode(LocalDate holidayDate,String locationCode,String langCode);\r\n\r\n}\r\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/repositories/IdTypeRepository.java", + "title": "IdTypeRepository.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/repositories/IdTypeRepository.java", + "language": "java", + "content": "\r\npackage io.mosip.admin.bulkdataupload.repositories;\r\n\r\nimport java.util.List;\r\n\r\nimport org.springframework.data.jpa.repository.Query;\r\n\r\nimport io.mosip.admin.bulkdataupload.entity.IdType;\r\nimport io.mosip.kernel.core.dataaccess.spi.repository.BaseRepository;\r\n\r\n/**\r\n * Interface for idtype repository.\r\n * \r\n * @author Sagar Mahapatra\r\n * @since 1.0.0\r\n *\r\n */\r\npublic interface IdTypeRepository extends BaseRepository {\r\n\t/**\r\n\t * Method that returns the list of id types for the specific language code.\r\n\t * \r\n\t * @param languageCode the language code.\r\n\t * @return the list of id types.\r\n\t */\r\n\t@Query(\"FROM IdType WHERE langCode = ?1 and (isDeleted is null or isDeleted =false) AND isActive = true\")\r\n\tList findByLangCode(String languageCode);\r\n}\r\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/repositories/IdentitySchemaRepository.java", + "title": "IdentitySchemaRepository.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/repositories/IdentitySchemaRepository.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.repositories;\n\n\nimport org.springframework.stereotype.Repository;\n\nimport io.mosip.admin.bulkdataupload.entity.IdentitySchema;\nimport io.mosip.kernel.core.dataaccess.spi.repository.BaseRepository;\n\n@Repository\npublic interface IdentitySchemaRepository extends BaseRepository{\n\n\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/repositories/IndividualTypeRepository.java", + "title": "IndividualTypeRepository.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/repositories/IndividualTypeRepository.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.repositories;\r\n\r\nimport java.util.List;\r\n\r\nimport org.springframework.data.jpa.repository.Query;\r\n\r\nimport io.mosip.admin.bulkdataupload.entity.IndividualType;\r\nimport io.mosip.admin.bulkdataupload.entity.id.CodeAndLanguageCodeID;\r\nimport io.mosip.kernel.core.dataaccess.spi.repository.BaseRepository;\r\n\r\n/**\r\n * Interface to do CRUD operation on Individual type\r\n * \r\n * @author Bal Vikash Sharma\r\n *\r\n */\r\npublic interface IndividualTypeRepository extends BaseRepository {\r\n\r\n\t@Query(value = \"FROM IndividualType t where t.isActive = true and (t.isDeleted is null or t.isDeleted = false)\")\r\n\tpublic List findAll();\r\n\t\r\n\t@Query(value = \"FROM IndividualType t where t.code = ?1 and t.langCode=?2 and (t.isDeleted is null or t.isDeleted = false)\")\r\n\tpublic IndividualType findIndividualTypeByCodeAndLangCode(String code, String langCode);\r\n\r\n}\r\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/repositories/LanguageRepository.java", + "title": "LanguageRepository.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/repositories/LanguageRepository.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.repositories;\r\n\r\nimport java.util.List;\r\n\r\nimport org.springframework.data.jpa.repository.Query;\r\nimport org.springframework.stereotype.Repository;\r\n\r\nimport io.mosip.admin.bulkdataupload.entity.Language;\r\nimport io.mosip.kernel.core.dataaccess.spi.repository.BaseRepository;\r\n\r\n/**\r\n * Repository to perform CRUD operations on Language.\r\n * \r\n * @author Bal Vikash Sharma\r\n * @since 1.0.0\r\n * @see Language\r\n * @see BaseRepository\r\n *\r\n */\r\n@Repository\r\npublic interface LanguageRepository extends BaseRepository {\r\n\r\n\t/**\r\n\t * This method provides all the languages having isActive is true\r\n\t * and isDeleted is false present in MOSIP system.\r\n\t * \r\n\t * @see Language\r\n\t * @return list of language\r\n\t */\r\n\t@Query(\"FROM Language where (isDeleted is null OR isDeleted = false) AND isActive = true\")\r\n\tpublic List findAllByIsDeletedFalseOrIsDeletedIsNull();\r\n\r\n\t@Query(\"FROM Language l where l.code = ?1 and (l.isDeleted is null or l.isDeleted = false) AND isActive=true\")\r\n\tpublic Language findLanguageByCode(String code);\r\n\r\n}\r\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/repositories/LocationHierarchyRepository.java", + "title": "LocationHierarchyRepository.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/repositories/LocationHierarchyRepository.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.repositories;\r\n\r\nimport java.util.List;\r\n\r\nimport org.springframework.data.jpa.repository.Query;\r\nimport org.springframework.data.repository.query.Param;\r\nimport org.springframework.stereotype.Repository;\r\n\r\nimport io.mosip.admin.bulkdataupload.entity.LocationHierarchy;\r\nimport io.mosip.kernel.core.dataaccess.spi.repository.BaseRepository;\r\n\r\n/**\r\n * \r\n * @author Megha Tanga\r\n * @since 1.0.0\r\n *\r\n */\r\n@Repository\r\npublic interface LocationHierarchyRepository extends BaseRepository {\r\n\r\n\t/**\r\n\t * This method trigger query to fetch the Location Hierarchy for the given\r\n\t * Location-Hierarchy-level and language code.\r\n\t * \r\n\t * @param level\r\n\t * LocationHierarchy level provided by user\r\n\t * @param langCode\r\n\t * language code provided by user\r\n\t * @return List Location Hierarchy details fetched from database\r\n\t */\r\n\r\n\t@Query(\"FROM LocationHierarchy l where l.hierarchyLevel = ?1 and l.langCode = ?2 and (l.isDeleted is null or l.isDeleted = false) and l.isActive = true\")\r\n\tList findAllByLevelAndLangCodeAndIsDeletedFalseorIsDeletedIsNull(short hierarchyLevel,\r\n\t\t\tString langCode);\r\n\r\n\t/**\r\n\t * This method trigger query to fetch the Location Hierarchy detail for the\r\n\t * given language code.\r\n\t * \r\n\t * @param langCode\r\n\t * langCode provided by user\r\n\t * \r\n\t * @return List Location Hierarchy details fetched from database\r\n\t */\r\n\t@Query(\"FROM LocationHierarchy l where l.langCode = ?1 and (l.isDeleted is null or l.isDeleted = false) and l.isActive = true\")\r\n\tList findAllByLangCodeAndIsDeletedFalseOrIsDeletedIsNull(String langCode);\r\n\t\r\n\t@Query(\"FROM LocationHierarchy l where l.langCode = ?1 and hierarchyLevel = ?2 and hierarchyLevelName =?3 and (l.isDeleted is null or l.isDeleted = false) and l.isActive = true\")\r\n\tLocationHierarchy findByLangCodeAndLevelAndName(String langCode,short hierarchyLevel,String hierarchyLevelName);\r\n\r\n\t@Query(value = \"select hierarchy_level FROM loc_hierarchy_list where hierarchy_level_name = :heirarchyLevelName and lang_code=:languageCode and (is_deleted is null or is_deleted = false) and is_active = true\", nativeQuery = true)\r\n\tInteger findByheirarchyLevalNameAndLangCode(@Param(\"heirarchyLevelName\") String heirarchyLevelName,@Param(\"languageCode\") String languageCode);\r\n}\r\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/repositories/LocationRepository.java", + "title": "LocationRepository.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/repositories/LocationRepository.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.repositories;\r\n\r\nimport java.util.List;\r\nimport java.util.Set;\r\n\r\nimport org.springframework.data.jpa.repository.Query;\r\nimport org.springframework.stereotype.Repository;\r\n\r\nimport io.mosip.admin.bulkdataupload.entity.Location;\r\nimport io.mosip.admin.bulkdataupload.entity.id.CodeAndLanguageCodeID;\r\nimport io.mosip.kernel.core.dataaccess.spi.repository.BaseRepository;\r\n\r\n/**\r\n * This interface is JPA repository class which interacts with database and does\r\n * the CRUD function. It is extended from {@link BaseRepository}\r\n * \r\n * @author Srinivasan\r\n * @author uday kumar\r\n * @author Sidhant Agarwal\r\n *\r\n */\r\n@Repository\r\npublic interface LocationRepository extends BaseRepository {\r\n\r\n\t@Query(\"FROM Location WHERE (isDeleted is null OR isDeleted = false) AND isActive = true\")\r\n\tList findLocationHierarchyByIsDeletedIsNullOrIsDeletedFalse();\r\n\r\n\t@Query(value = \"FROM Location l where l.code=?1 and l.langCode=?2 and (l.isDeleted is null or l.isDeleted=false) and l.isActive = true\")\r\n\tList findLocationHierarchyByCodeAndLanguageCode(String locCode, String languagecode);\r\n\r\n\t@Query(value = \"FROM Location l where l.code=?1 and l.langCode=?2 and (l.isDeleted is null or l.isDeleted=false)\")\r\n\tLocation findLocationByCodeAndLanguageCode(String locCode, String languagecode);\r\n\r\n\t@Query(value = \"FROM Location l where parentLocCode=?1 and langCode=?2 and (l.isDeleted is null or l.isDeleted=false) and l.isActive=true\")\r\n\tList findLocationHierarchyByParentLocCodeAndLanguageCode(String parentLocCode, String languageCode);\r\n\r\n\t@Query(value = \"select distinct hierarchy_level, hierarchy_level_name, is_active from master.location where lang_code=?1 and (is_deleted='f' or is_deleted is null) and is_active='t' \", nativeQuery = true)\r\n\tList findDistinctLocationHierarchyByIsDeletedFalse(String langCode);\r\n\r\n\t@Query(value = \"FROM Location l where l.code=?1 and (l.isDeleted is null or l.isDeleted=false) and l.isActive = true\")\r\n\tList findByCode(String locationCode);\r\n\r\n\t/**\r\n\t *\r\n\t * @param hierarchyName - hierarchy name\r\n\t * @return List\r\n\t */\r\n\t@Query(value = \"FROM Location l where LOWER(l.hierarchyName)=LOWER(?1) AND (l.isDeleted is null OR l.isDeleted=false) AND l.isActive=true\")\r\n\tList findAllByHierarchyNameIgnoreCase(String hierarchyName);\r\n\r\n\t/**\r\n\t *\r\n\t * @param langCode language code\r\n\t * @param level hierarchy level\r\n\t * @return List of Locations\r\n\t * \r\n\t */\r\n\t@Query(value = \"FROM Location l where l.langCode=?1 and l.hierarchyLevel >=?2 and (l.isDeleted is null or l.isDeleted=false) and l.isActive = true\")\r\n\tList getAllLocationsByLangCodeAndLevel(String langCode, Short level);\r\n\r\n\t/**\r\n\t * checks whether the location name is valid location or not\r\n\t * \r\n\t * @param locationName location name\r\n\t * @return {@link Boolean} true or false\r\n\t */\r\n\t@Query(value = \"SELECT EXISTS(select name FROM master.location where (LOWER(name)=LOWER(?1)) and (is_active=true) and (is_deleted is null or is_deleted =false))\", nativeQuery = true)\r\n\tboolean isLocationNamePresent(String locationName);\r\n\r\n\t/**\r\n\t * give list of the immediate Locations for the given parent location code\r\n\t * \r\n\t * @param locationName location name\r\n\t * @return {@link Boolean} true or false\r\n\t */\r\n\t@Query(\"FROM Location l where l.parentLocCode=?1 and l.langCode=?2 and l.isActive=true and (l.isDeleted is null or l.isDeleted=false)\")\r\n\tList findDistinctByparentLocCode(String parentLocCode, String langCode);\r\n\r\n\t/**\r\n\t * give list of the immediate Locations for the given parent location code\r\n\t * \r\n\t * @param locationName location name\r\n\t * @return {@link Boolean} true or false\r\n\t */\r\n\t@Query(\"SELECT distinct l.code FROM Location l where l.parentLocCode=?1 GROUP BY l.code\")\r\n\tList findDistinctByparentLocCode(String parentLocCode);\r\n\r\n\t@Query(value = \"select distinct name from master.location where hierarchy_level = ?1 and lang_code = ?2\", nativeQuery = true)\r\n\tList filterByDistinctHierarchyLevel(int hierarchyLevel, String langCode);\r\n\r\n\t@Query(value = \"select name from master.location where hierarchy_level = ?1 and lang_code = ?2\", nativeQuery = true)\r\n\tList filterByHierarchyLevel(int hierarchyLevel, String langCode);\r\n\r\n\t@Query(value = \"FROM Location WHERE langCode=?1 AND (isDeleted is null or isDeleted=false)\")\r\n\tList findAllByLangCodeNonDeleted(String langCode);\r\n\r\n\t@Query(\"FROM Location l where l.hierarchyLevel=?1 and l.name =?2 and l.langCode=?3 and l.isActive=?4 and (l.isDeleted is null or l.isDeleted=false)\")\r\n\tLocation findLocationByHierarchyLevel(short hierachyLevel, String value, String langCode, boolean isActive);\r\n\r\n\t@Query(\"FROM Location l where l.langCode=?1 and l.isActive=true and (l.isDeleted is null or l.isDeleted=false)\")\r\n\tList findAllByLangCode(String langCode);\r\n\r\n\t@Query(\"FROM Location l where l.langCode=?1 and l.isActive=?2 and (l.isDeleted is null or l.isDeleted=false)\")\r\n\tList findAllByLangCode(String langCode, boolean isActive);\r\n\r\n\t@Query(\"FROM Location l where l.hierarchyLevel=?1 and lower(l.name) like ?2 and l.langCode=?3 and l.isActive=?4 and (l.isDeleted is null or l.isDeleted=false)\")\r\n\tList findLocationByHierarchyLevelContains(short hierarchyLevel, String value, String langCode,\r\n\t\t\tboolean isActive);\r\n\r\n\t@Query(\"FROM Location l where l.hierarchyLevel=?1 and lower(l.name) like ?2 and l.langCode=?3 and l.isActive=?4 and (l.isDeleted is null or l.isDeleted=false)\")\r\n\tList findLocationByHierarchyLevelStartsWith(Short hierarchyLevel, String value, String langCode,\r\n\t\t\tboolean isActive);\r\n\r\n\t@Query(\"SELECT l.hierarchyName FROM Location l where l.isActive=true and (l.isDeleted is null or l.isDeleted=false)\")\r\n\tList findLocationAllHierarchyNames();\r\n\r\n\t@Query(\"FROM Location l where l.hierarchyName=?1 and l.langCode=?2 and l.isActive=true and (l.isDeleted is null or l.isDeleted=false)\")\r\n\tList findAllHierarchyNameAndNameValueForEmptyTextFilter(String hierarchyName, String langCode);\r\n\r\n\t@Query(\"FROM Location l where l.hierarchyName=?1 and lower(l.name) like ?2 and l.langCode=?3 and l.isActive=true and (l.isDeleted is null or l.isDeleted=false)\")\r\n\tList findAllHierarchyNameAndNameValueForTextFilter(String hierarchyName, String text, String langCode);\r\n\r\n\t@Query(\"FROM Location l where l.hierarchyName=?1 and l.langCode=?2 and l.isActive=true and (l.isDeleted is null or l.isDeleted=false)\")\r\n\tList findDistinctHierarchyNameAndNameValueForEmptyTextFilter(String hierarchyName, String langCode);\r\n\r\n\t@Query(\"FROM Location l where l.hierarchyName=?1 and lower(l.name) like ?2 and l.langCode=?3 and l.isActive=true and (l.isDeleted is null or l.isDeleted=false)\")\r\n\tList findDistinctHierarchyNameAndNameValueForTextFilter(String hierarchyName, String text, String langCode);\r\n\r\n\t@Query(value = \"FROM Location l where (l.isDeleted is null or l.isDeleted=false)\")\r\n\tList findAllNonDeleted();\r\n\r\n\t@Query(\"FROM Location l WHERE l.langCode=?1 and (l.isDeleted is null OR l.isDeleted = false) AND l.isActive = true\")\r\n\tList findByLangCode(String langCode);\r\n\r\n\t@Query(\"FROM Location l WHERE l.name=?1 AND l.hierarchyLevel=?2 \")\r\n\tList findByNameAndLevel(String name, Short hierarchyLevel);\r\n\r\n\t@Query(\"FROM Location l WHERE l.name=?1 AND l.hierarchyLevel=?2 AND l.langCode=?3\")\r\n\tList findByNameAndLevelLangCode(String name, Short hierarchyLevel, String langCode);\r\n\t\r\n\t@Query(\"FROM Location l WHERE l.name=?1 AND l.hierarchyLevel=?2 AND l.langCode=?3 AND NOT code=?4\")\r\n\tList findByNameAndLevelLangCodeNotCode(String name, Short hierarchyLevel, String langCode, String code);\r\n\r\n\t/**\r\n\t * give list of the immediate Locations for the given parent location code\r\n\t * \r\n\t * @param locationCode location code\r\n\t * @param hierarchyLevel hierarchy level\r\n\t * @return Set\r\n\t */\r\n\t@Query(\"FROM Location l WHERE l.langCode=?1 AND l.hierarchyLevel=?2\")\r\n\tSet findLocationByLangCodeLevel(String langCode, Short hierarchyLevel);\r\n\r\n}\r\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/repositories/MOSIPDeviceServiceHistoryRepository.java", + "title": "MOSIPDeviceServiceHistoryRepository.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/repositories/MOSIPDeviceServiceHistoryRepository.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.repositories;\r\n\r\nimport java.time.LocalDateTime;\r\nimport java.util.List;\r\n\r\nimport org.springframework.data.jpa.repository.Query;\r\nimport org.springframework.stereotype.Repository;\r\n\r\nimport io.mosip.admin.bulkdataupload.entity.MOSIPDeviceServiceHistory;\r\nimport io.mosip.kernel.core.dataaccess.spi.repository.BaseRepository;\r\n\r\n/**\r\n * Repository for MOSIP Device Service.\r\n *\r\n * @author Megha Tanga\r\n * @author Srinivasan\r\n * @since 1.0.0\r\n */\r\n\r\n@Repository\r\npublic interface MOSIPDeviceServiceHistoryRepository extends BaseRepository {\r\n\r\n\t/**\r\n\t * Find by id and is active is true.\r\n\t *\r\n\t * @param swVersion the sw version\r\n\t * @param effiveTimes the effive times\r\n\t * @return {@link MOSIPDeviceServiceHistory}\r\n\t */\r\n\t@Query(value = \"(select * from mosip_device_service_h dsh where sw_version = ?1 and eff_dtimes<= ?2 and (is_deleted is null or is_deleted =false) and is_active=true ORDER BY eff_dtimes DESC) LIMIT 1\", nativeQuery = true)\r\n\tList findByIdAndIsActiveIsTrueAndByEffectiveTimes(String swVersion,\r\n\t\t\tLocalDateTime effiveTimes);\r\n\r\n\t/**\r\n\t * Find by id and D provider id.\r\n\t *\r\n\t * @param id the id\r\n\t * @param deviceProviderId the device provider id\r\n\t * @param effTimes the eff times\r\n\t * @return {@link MOSIPDeviceServiceHistory}\r\n\t */\r\n\t@Query(value = \"(select * from mosip_device_service_h dsh where id = ?1 and dprovider_id=?2 and eff_dtimes<= ?3 and (is_deleted is null or is_deleted =false) ORDER BY eff_dtimes DESC) LIMIT 1\", nativeQuery = true)\r\n\tMOSIPDeviceServiceHistory findByIdAndDProviderId(String id, String deviceProviderId, LocalDateTime effTimes);\r\n\r\n\t/**\r\n\t * Find by device detail history.\r\n\t *\r\n\t * @param version the version\r\n\t * @param deviceTypeCode the device type code\r\n\t * @param devicesTypeCode the devices type code\r\n\t * @param make the make\r\n\t * @param model the model\r\n\t * @param dp the dp\r\n\t * @param effTimes the eff times\r\n\t * @return {@link MOSIPDeviceServiceHistory}\r\n\t */\r\n\t@Query(value = \"(select * from mosip_device_service_h where sw_version=?1 and dtype_code=?2 and dstype_code=?3 and make=?4 and model=?5 and dprovider_id=?6 and eff_dtimes<=?7 and (is_deleted is null or is_deleted =false) and is_active=true ORDER BY eff_dtimes DESC) LIMIT 1\", nativeQuery = true)\r\n\tMOSIPDeviceServiceHistory findByDeviceDetailHistory(String version, String deviceTypeCode, String devicesTypeCode,\r\n\t\t\tString make, String model, String dp, LocalDateTime effTimes);\r\n}\r\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/repositories/MOSIPDeviceServiceRepository.java", + "title": "MOSIPDeviceServiceRepository.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/repositories/MOSIPDeviceServiceRepository.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.repositories;\r\n\r\nimport java.util.List;\r\n\r\nimport org.springframework.data.jpa.repository.Query;\r\nimport org.springframework.stereotype.Repository;\r\n\r\nimport io.mosip.admin.bulkdataupload.entity.MOSIPDeviceService;\r\nimport io.mosip.kernel.core.dataaccess.spi.repository.BaseRepository;\r\n\r\n/**\r\n * MDS repository class.\r\n *\r\n * @author Srinivasan\r\n * @author Megha Tanga\r\n */\r\n@Repository\r\npublic interface MOSIPDeviceServiceRepository extends BaseRepository {\r\n\r\n\t/**\r\n\t * Find by id and is active is true.\r\n\t *\r\n\t * @param id the id\r\n\t * @return the device service\r\n\t */\r\n\tList findBySwVersionAndIsActiveIsTrue(String id);\r\n\r\n\t/**\r\n\t * Find by provider id and service version.\r\n\t *\r\n\t * @param id the id\r\n\t * @param providerId the provider id\r\n\t * @return the device service\r\n\t */\r\n\tMOSIPDeviceService findByDeviceProviderIdAndSwVersion(String id, String deviceProviderId);\r\n\r\n\t/**\r\n\t * Find by provider id and service version.\r\n\t *\r\n\t * @param id the id\r\n\t * @param providerId the provider id\r\n\t * @return the device service\r\n\t */\r\n\tMOSIPDeviceService findByDeviceProviderIdAndSwVersionAndMakeAndModel(String deviceProviderId, String swVersion,\r\n\t\t\tString make, String model);\r\n\r\n\t/**\r\n\t * Find by device code.\r\n\t *\r\n\t * @param deviceCode the device code\r\n\t * @return {@link MOSIPDeviceService} the list\r\n\t */\r\n\t@Query(value = \"select * from master.mosip_device_service a,master.registered_device_master b where a.dtype_code=b.dtype_code and a.dstype_code=b.dstype_code and a.make=b.make and a.model=b.model and a.dprovider_id=b.provider_id and b.code=?1\", nativeQuery = true)\r\n\tList findByDeviceCode(String deviceCode);\r\n\r\n\t/**\r\n\t * Find by device detail.\r\n\t *\r\n\t * @param version the version\r\n\t * @param deviceTypeCode the device type code\r\n\t * @param devicesTypeCode the devices type code\r\n\t * @param make the make\r\n\t * @param model the model\r\n\t * @param dp the dp\r\n\t * @return the MOSIP device service\r\n\t */\r\n\t@Query(value = \"select * from mosip_device_service where sw_version=?1 and dtype_code=?2 and dstype_code=?3 and make=?4 and model=?5 and dprovider_id=?6 and (is_deleted is null or is_deleted =false) and is_active=true\", nativeQuery = true)\r\n\tMOSIPDeviceService findByDeviceDetail(String version, String deviceTypeCode, String devicesTypeCode, String make,\r\n\t\t\tString model, String dp);\r\n\r\n\t/**\r\n\t * This method trigger query to fetch the Device detail for the given id.\r\n\t * \r\n\t * @param id the id of device\r\n\t * @return the device detail\r\n\t */\r\n\t@Query(\"FROM MOSIPDeviceService where id = ?1 AND (isDeleted is null or isDeleted = false)\")\r\n\tMOSIPDeviceService findByIdAndIsDeletedFalseOrIsDeletedIsNull(String id);\r\n\r\n}\r\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/repositories/MachineHistoryRepository.java", + "title": "MachineHistoryRepository.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/repositories/MachineHistoryRepository.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.repositories;\r\n\r\nimport java.time.LocalDateTime;\r\nimport java.util.List;\r\n\r\nimport org.springframework.data.jpa.repository.Query;\r\nimport org.springframework.stereotype.Repository;\r\n\r\nimport io.mosip.admin.bulkdataupload.entity.MachineHistory;\r\nimport io.mosip.kernel.core.dataaccess.spi.repository.BaseRepository;\r\n\r\n/**\r\n * Repository function to fetching machine History Details\r\n * \r\n * @author Megha Tanga\r\n * @since 1.0.0\r\n *\r\n */\r\n@Repository\r\npublic interface MachineHistoryRepository extends BaseRepository {\r\n\r\n\t/**\r\n\t * This method trigger query to fetch Machine History Details based on Machine\r\n\t * History Id, language code and effective date time\r\n\t * \r\n\t * @param id Machine History id provided by user\r\n\t * @param langCode language code provided by user\r\n\t * @param effectDtimes effective Date and time provided by user in the format\r\n\t * \"yyyy-MM-dd'T'HH:mm:ss.SSS'Z'\"\r\n\t * @return List Machine History Details fetched from database\r\n\t */\r\n\r\n\t@Query(value = \"Select \tm.eff_dtimes, m.id,m.cr_by, m.cr_dtimes, m.del_dtimes, m.is_active, m.is_deleted, m.upd_by, m.upd_dtimes, m.ip_address, m.lang_code, m.mac_address, m.mspec_id, m.name, m.serial_num, m.validity_end_dtimes, m.zone_code, m.key_index, m.public_key from master.machine_master_h m where m.id = ?1 and m.lang_code = ?2 and m.eff_dtimes <= ?3 and ( m.is_deleted = false or m.is_deleted is null) order by m.eff_dtimes desc limit 1\", nativeQuery = true)\r\n\tList findByFirstByIdAndLangCodeAndEffectDtimesLessThanEqualAndIsDeletedFalseOrIsDeletedIsNull(\r\n\t\t\tString id, String langCode, LocalDateTime effectDtimes);\r\n\r\n}\r\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/repositories/MachineRepository.java", + "title": "MachineRepository.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/repositories/MachineRepository.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.repositories;\r\n\r\nimport java.time.LocalDateTime;\r\nimport java.util.List;\r\n\r\nimport org.springframework.data.domain.Page;\r\nimport org.springframework.data.domain.Pageable;\r\nimport org.springframework.data.jpa.repository.Modifying;\r\nimport org.springframework.data.jpa.repository.Query;\r\nimport org.springframework.stereotype.Repository;\r\nimport org.springframework.transaction.annotation.Transactional;\r\n\r\nimport io.mosip.admin.bulkdataupload.entity.Machine;\r\nimport io.mosip.kernel.core.dataaccess.spi.repository.BaseRepository;\r\n\r\n/**\r\n * Repository to perform CRUD operations on Machine.\r\n * \r\n * @author Megha Tanga\r\n * @author Sidhant Agarwal\r\n * @author Ravi Kant\r\n * @since 1.0.0\r\n *\r\n */\r\n\r\n@Repository\r\npublic interface MachineRepository extends BaseRepository {\r\n\t// PagingAndSortingRepository\r\n\t/**\r\n\t * This method trigger query to fetch the all Machine details.\r\n\t * \r\n\t * @return List MachineDetail fetched from database\r\n\t * \r\n\t */\r\n\t@Query(\"FROM Machine where (isDeleted is null OR isDeleted = false) AND isActive = true\")\r\n\tList findAllByIsDeletedFalseOrIsDeletedIsNull();\r\n\r\n\t/**\r\n\t * This method trigger query to fetch the Machine detail for the given machine\r\n\t * id and language code.\r\n\t * \r\n\t * \r\n\t * @param id Machine Id provided by user\r\n\t * @param langCode language code provided by user\r\n\t * @return List MachineDetail fetched from database\r\n\t */\r\n\r\n\t@Query(\"FROM Machine m where m.id = ?1 and m.langCode = ?2 and (m.isDeleted is null or m.isDeleted = false) and m.isActive = true\")\r\n\tList findAllByIdAndLangCodeAndIsDeletedFalseorIsDeletedIsNull(String id, String langCode);\r\n\r\n\t/**\r\n\t * This method trigger query to fetch the Machine detail for the given language\r\n\t * code.\r\n\t * \r\n\t * @param langCode langCode provided by user\r\n\t * \r\n\t * @return List MachineDetail fetched from database\r\n\t */\r\n\t@Query(\"FROM Machine m where m.langCode = ?1 and (m.isDeleted is null or m.isDeleted = false) and m.isActive = true\")\r\n\tList findAllByLangCodeAndIsDeletedFalseOrIsDeletedIsNull(String langCode);\r\n\r\n\t/**\r\n\t * This method trigger query to fetch the Machine detail for the given id code.\r\n\t * \r\n\t * @param id machine Id provided by user\r\n\t * \r\n\t * @return MachineDetail fetched from database\r\n\t */\r\n\r\n\t@Query(\"FROM Machine m where m.id = ?1 and (m.isDeleted is null or m.isDeleted = false) and m.isActive = true\")\r\n\tList findMachineByIdAndIsDeletedFalseorIsDeletedIsNull(String id);\r\n\r\n\t/**\r\n\t * This method trigger query to fetch the Machine detail for the given id code.\r\n\t * \r\n\t * @param machineSpecId machineSpecId provided by user\r\n\t * \r\n\t * @return MachineDetail fetched from database\r\n\t */\r\n\r\n\t@Query(\"FROM Machine m where m.machineSpecId = ?1 and (m.isDeleted is null or m.isDeleted = false) and m.isActive = true\")\r\n\tList findMachineBymachineSpecIdAndIsDeletedFalseorIsDeletedIsNull(String machineSpecId);\r\n\r\n\t/**\r\n\t * This method trigger query to fetch the Machine detail for the given id and\r\n\t * language code.\r\n\t * \r\n\t * @param id machine Id provided by user\r\n\t * @param langCode machine language code by user\r\n\t * \r\n\t * @return MachineDetail fetched from database\r\n\t */\r\n\r\n\t@Query(\"FROM Machine m where m.id = ?1 and m.langCode = ?2 and (m.isDeleted is null or m.isDeleted = false) AND m.isActive = true\")\r\n\tMachine findMachineByIdAndLangCodeAndIsDeletedFalseorIsDeletedIsNull(String id, String langCode);\r\n\r\n\t@Query(\"FROM Machine m where m.id = ?1 and m.langCode = ?2\")\r\n\tMachine findMachineByIdAndLangCode(String id, String langCode);\r\n\r\n\t/**\r\n\t * This method trigger query to fetch the Machine detail those are mapped with\r\n\t * the given regCenterId\r\n\t * \r\n\t * @param regCenterId regCenterId provided by user\r\n\t * @return Machine fetch the list of Machine details those are mapped with the\r\n\t * given regCenterId\r\n\t */\r\n\t@Query(value = \"SELECT mm.id, mm.name, mm.mac_address, mm.serial_num, mm.ip_address,mm.zone_code, mm.mspec_id, mm.lang_code, mm.is_active,mm.validity_end_dtimes, mm.cr_by, mm.cr_dtimes, mm.upd_by, mm.upd_dtimes, mm.is_deleted, mm.del_dtimes FROM master.machine_master mm inner join master.reg_center_machine rcm on mm.id = rcm.machine_id where rcm.regcntr_id =?1\", countQuery = \"SELECT count(*) FROM master.machine_master mm inner join master.reg_center_machine rcm on mm.id = rcm.machine_id where rcm.regcntr_id =?1\", nativeQuery = true)\r\n\tPage findMachineByRegCenterId(String regCenterId, Pageable pageable);\r\n\r\n\t@Query(\"FROM Machine m where m.id = ?1 and m.langCode = ?2 and (m.isDeleted is null or m.isDeleted = false)\")\r\n\tMachine findMachineByIdAndLangCodeAndIsDeletedFalseorIsDeletedIsNullWithoutActiveStatusCheck(String id,\r\n\t\t\tString langCode);\r\n\r\n\t@Query(value = \"select m.id from master.machine_master m where m.id in(select distinct rcm.machine_id from master.reg_center_machine rcm ) and m.lang_code=?1\", nativeQuery = true)\r\n\tList findMappedMachineId(String langCode);\r\n\r\n\t@Query(value = \"select m.id from master.machine_master m where m.id not in(select distinct rcm.machine_id from master.reg_center_machine rcm ) and m.lang_code=?1\", nativeQuery = true)\r\n\tList findNotMappedMachineId(String langCode);\r\n\r\n\t@Query(value = \"Select * from master.machine_spec ms where (ms.is_deleted is null or ms.is_deleted = false) and ms.is_active = true and ms.mtyp_code IN (select code from master.machine_type mt where mt.name=?1) and ms.lang_code=?2\", nativeQuery = true)\r\n\tList findMachineSpecByMachineTypeNameAndLangCode(String name, String langCode);\r\n\r\n\t/**\r\n\t * This method trigger query to fetch the Machine detail for the given id code.\r\n\t * \r\n\t * @param id machine Id provided by user\r\n\t * \r\n\t * @return MachineDetail fetched from database\r\n\t */\r\n\r\n\t@Query(\"FROM Machine m where m.id = ?1 and (m.isDeleted is null or m.isDeleted = false)\")\r\n\tList findMachineByIdAndIsDeletedFalseorIsDeletedIsNullNoIsActive(String id);\r\n\r\n\t/**\r\n\t * Method to decommission the Machine\r\n\t * \r\n\t * @param machineID the machine id which needs to be\r\n\t * decommissioned.\r\n\t * @param deCommissionedBy the user name retrieved from the context who\r\n\t * performs this operation.\r\n\t * @param deCommissionedDateTime date and time at which the center was\r\n\t * decommissioned.\r\n\t * @return the number of machine decommissioned.\r\n\t */\r\n\t@Query(\"UPDATE Machine m SET m.isDeleted = true, m.isActive = false, m.updatedBy = ?2, m.updatedDateTime=?3, m.deletedDateTime=?3 WHERE m.id=?1 and (m.isDeleted is null or m.isDeleted =false)\")\r\n\t@Modifying\r\n\t@Transactional\r\n\tint decommissionMachine(String id, String deCommissionedBy, LocalDateTime deCommissionedDateTime);\r\n}\r\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/repositories/MachineSpecificationRepository.java", + "title": "MachineSpecificationRepository.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/repositories/MachineSpecificationRepository.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.repositories;\r\n\r\nimport java.util.List;\r\n\r\nimport org.springframework.data.jpa.repository.Query;\r\nimport org.springframework.stereotype.Repository;\r\n\r\nimport io.mosip.admin.bulkdataupload.entity.MachineSpecification;\r\nimport io.mosip.kernel.core.dataaccess.spi.repository.BaseRepository;\r\n\r\n/**\r\n * Repository to perform CRUD operations on MachineSpecification.\r\n * \r\n * @author Megha Tanga\r\n * @since 1.0.0\r\n *\r\n */\r\n\r\n@Repository\r\npublic interface MachineSpecificationRepository extends BaseRepository {\r\n\r\n\t@Query(\"FROM MachineSpecification m where m.id = ?1 and m.langCode = ?2 and (m.isDeleted is null or m.isDeleted = false)\")\r\n\tMachineSpecification findByIdAndLangCodeIsDeletedFalseorIsDeletedIsNull(String id, String langCode);\r\n\r\n\t@Query(\"FROM MachineSpecification m where m.id = ?1 and (m.isDeleted is null or m.isDeleted = false) and m.isActive = true\")\r\n\tList findByIdAndIsDeletedFalseorIsDeletedIsNull(String id);\r\n\r\n\t@Query(\"FROM MachineSpecification m where (m.isDeleted is null or m.isDeleted = false) and m.isActive = true\")\r\n\tList findAllMachineSpecByIsActiveAndIsDeletedIsNullOrFalse();\r\n\r\n}\r\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/repositories/MachineTypeRepository.java", + "title": "MachineTypeRepository.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/repositories/MachineTypeRepository.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.repositories;\r\n\r\nimport java.util.List;\r\n\r\nimport org.springframework.data.jpa.repository.Query;\r\nimport org.springframework.stereotype.Repository;\r\n\r\nimport io.mosip.admin.bulkdataupload.entity.MachineType;\r\nimport io.mosip.kernel.core.dataaccess.spi.repository.BaseRepository;\r\n\r\n/**\r\n * Repository to perform CRUD operations on MachineType.\r\n * \r\n * @author Megha Tanga\r\n * @since 1.0.0\r\n *\r\n */\r\n@Repository\r\npublic interface MachineTypeRepository extends BaseRepository {\r\n\r\n\t@Query(\"FROM MachineType m where m.code = ?1 and m.langCode =?2 and (m.isDeleted = true) AND m.isActive = true\")\r\n\tMachineType findMachineTypeByIdAndByLangCodeIsDeletedtrue(String code, String langCode);\r\n\t\r\n\t@Query(\"FROM MachineType m where m.code = ?1 and m.langCode =?2 and (isDeleted is null OR isDeleted = false) AND m.isActive = true\")\r\n\tMachineType findMachineTypeByCodeAndByLangCode(String code, String langCode);\r\n\r\n\t@Query(\"FROM MachineType m where (isDeleted is null OR isDeleted = false) AND isActive = true\")\r\n\tList findAllMachineTypeByIsActiveAndIsDeletedFalseOrNull();\r\n\r\n}\r\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/repositories/ModuleRepository.java", + "title": "ModuleRepository.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/repositories/ModuleRepository.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.repositories;\r\n\r\nimport java.util.List;\r\n\r\nimport org.springframework.data.jpa.repository.Query;\r\nimport org.springframework.stereotype.Repository;\r\n\r\nimport io.mosip.admin.bulkdataupload.entity.ModuleDetail;\r\nimport io.mosip.kernel.core.dataaccess.spi.repository.BaseRepository;\r\n\r\n/**\r\n * \r\n * @author Megha Tanga\r\n * @since 1.0.0\r\n *\r\n */\r\n@Repository\r\npublic interface ModuleRepository extends BaseRepository {\r\n\r\n\t/**\r\n\t * This method trigger query to fetch the Module detail for the given Module id\r\n\t * and language code.\r\n\t * \r\n\t * @param id\r\n\t * Module id provided by user\r\n\t * @param langCode\r\n\t * language code provided by user\r\n\t * @return List Module fetched from database\r\n\t */\r\n\r\n\t@Query(\"FROM ModuleDetail t where t.id = ?1 and t.langCode = ?2 and (t.isDeleted is null or t.isDeleted = false) and t.isActive = true\")\r\n\tList findAllByIdAndLangCodeAndIsDeletedFalseorIsDeletedIsNull(String id, String langCode);\r\n\r\n\t/**\r\n\t * This method trigger query to fetch the Module detail for the given language\r\n\t * code.\r\n\t * \r\n\t * @param langCode\r\n\t * langCode provided by user\r\n\t * \r\n\t * @return List Module fetched from database\r\n\t */\r\n\t@Query(\"FROM ModuleDetail t where t.langCode = ?1 and (t.isDeleted is null or t.isDeleted = false) and t.isActive = true\")\r\n\tList findAllByLangCodeAndIsDeletedFalseOrIsDeletedIsNull(String langCode);\r\n\r\n}\r\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/repositories/ReasonCategoryRepository.java", + "title": "ReasonCategoryRepository.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/repositories/ReasonCategoryRepository.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.repositories;\r\n\r\nimport java.util.List;\r\n\r\nimport org.springframework.data.jpa.repository.Query;\r\nimport org.springframework.stereotype.Repository;\r\n\r\nimport io.mosip.admin.bulkdataupload.entity.ReasonCategory;\r\nimport io.mosip.kernel.core.dataaccess.spi.repository.BaseRepository;\r\n\r\n/**\r\n * \r\n * @author Srinivasan\r\n *\r\n */\r\n@Repository\r\npublic interface ReasonCategoryRepository extends BaseRepository {\r\n\r\n\t@Query(\"FROM ReasonCategory where (isDeleted is null OR isDeleted = false) AND isActive = true\")\r\n\tList findReasonCategoryByIsDeletedFalseOrIsDeletedIsNull();\r\n\r\n\t@Query(\"FROM ReasonCategory r where r.code=?1 and r.langCode=?2 and (r.isDeleted is null or r.isDeleted=false) and r.isActive = true\")\r\n\tList findReasonCategoryByCodeAndLangCode(String code, String languageCode);\r\n\r\n}\r\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/repositories/ReasonListRepository.java", + "title": "ReasonListRepository.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/repositories/ReasonListRepository.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.repositories;\n\nimport io.mosip.admin.bulkdataupload.entity.ReasonList;\nimport io.mosip.kernel.core.dataaccess.spi.repository.BaseRepository;\n\n/**\n * This class will handle the CRUD operation of reason list\n * \n * @author Srinivasan\n *\n */\npublic interface ReasonListRepository extends BaseRepository {\n\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/repositories/RegWorkingNonWorkingRepo.java", + "title": "RegWorkingNonWorkingRepo.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/repositories/RegWorkingNonWorkingRepo.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.repositories;\r\n\r\nimport java.util.List;\r\n\r\nimport org.springframework.data.jpa.repository.Query;\r\nimport org.springframework.stereotype.Repository;\r\n\r\nimport io.mosip.admin.bulkdataupload.entity.RegWorkingNonWorking;\r\nimport io.mosip.admin.bulkdataupload.entity.id.RegWorkingNonWorkingId;\r\nimport io.mosip.kernel.core.dataaccess.spi.repository.BaseRepository;\r\n\r\n@Repository(\"workingDaysRepo\")\r\npublic interface RegWorkingNonWorkingRepo extends BaseRepository {\r\n\r\n\t@Query(\"From RegWorkingNonWorking where registrationCenterId=?1 and languagecode=?2 and (isDeleted is null or isDeleted = false) and isActive = true\")\r\n\tList findByRegCenterIdAndlanguagecode(String registrationCenterId, String languagecode);\r\n\r\n\t@Query(\"From RegWorkingNonWorking where languagecode=?1 and (isDeleted is null or isDeleted = false) and isActive = true\")\r\n\tList findByLanguagecode(String languageCode);\r\n\r\n}\r\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/repositories/RegisteredDeviceHistoryRepository.java", + "title": "RegisteredDeviceHistoryRepository.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/repositories/RegisteredDeviceHistoryRepository.java", + "language": "java", + "content": "/**\n * \n */\npackage io.mosip.admin.bulkdataupload.repositories;\n\nimport java.time.LocalDateTime;\n\nimport org.springframework.data.jpa.repository.Query;\nimport org.springframework.stereotype.Repository;\n\nimport io.mosip.admin.bulkdataupload.entity.RegisteredDeviceHistory;\nimport io.mosip.kernel.core.dataaccess.spi.repository.BaseRepository;\n\n/**\n * @author Ramadurai Pandian\n *\n */\n@Repository\npublic interface RegisteredDeviceHistoryRepository extends BaseRepository {\n\n\t@Query(value = \"(select * from registered_device_master_h rdh WHERE code = ?1 AND eff_dtimes<= ?2 and is_active=true and(is_deleted is null or is_deleted =false) ORDER BY eff_dtimes DESC) LIMIT 1 \", nativeQuery = true)\n\tRegisteredDeviceHistory findRegisteredDeviceHistoryByIdAndEffTimes(String code, LocalDateTime effTimes);\n\n\t@Query(value = \"(select * from registered_device_master_h rdh WHERE code = ?1 AND provider_id=?2 AND eff_dtimes<= ?3 and (is_deleted is null or is_deleted =false) ORDER BY eff_dtimes DESC) LIMIT 1 \", nativeQuery = true)\n\tRegisteredDeviceHistory findRegisteredDeviceHistoryByIdDpIdAndEffTimes(String code, String dpId,\n\t\t\tLocalDateTime effTimes);\n\n\t@Query(value = \"(select * from registered_device_master_h rdh WHERE code = ?1 AND eff_dtimes<= ?2 AND upper(purpose)= ?3 and is_active=true and(is_deleted is null or is_deleted =false) ORDER BY eff_dtimes DESC) LIMIT 1 \", nativeQuery = true)\n\tRegisteredDeviceHistory findRegisteredDeviceHistoryByIdAndEffTimesAndPurpose(String code, LocalDateTime effTimes,\n\t\t\tString purpose);\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/repositories/RegisteredDeviceRepository.java", + "title": "RegisteredDeviceRepository.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/repositories/RegisteredDeviceRepository.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.repositories;\r\n\r\nimport org.springframework.stereotype.Repository;\r\n\r\nimport io.mosip.admin.bulkdataupload.entity.RegisteredDevice;\r\nimport io.mosip.kernel.core.dataaccess.spi.repository.BaseRepository;\r\n\r\n// TODO: Auto-generated Javadoc\r\n/**\r\n * The Interface RegisteredDeviceRepository.\r\n * \r\n * @author Srinivasan\r\n * @author Megha Tanga\r\n * @author Ramadurai Pandian\r\n */\r\n@Repository\r\npublic interface RegisteredDeviceRepository extends BaseRepository {\r\n\r\n\t/**\r\n\t * Find by code and is active is true.\r\n\t *\r\n\t * @param deviceCode the device code\r\n\t * @return the registered device\r\n\t */\r\n\tRegisteredDevice findByCodeAndIsActiveIsTrue(String deviceCode);\r\n\r\n\t/**\r\n\t * Find by code and dp id.\r\n\t *\r\n\t * @param deviceCode the device code\r\n\t * @param providerId the provider id\r\n\t * @return the registered device\r\n\t */\r\n\tRegisteredDevice findByCodeAndDpId(String deviceCode, String providerId);\r\n\t\r\n\t/**\r\n\t * Find by serial no and dp id.\r\n\t *\r\n\t *\r\n\t * @param providerId the provider id\r\n\t * @param serialno the serial no\r\n\t * @return the registered device\r\n\t */\t\r\n\tRegisteredDevice findByDpIdAndSerialNoAndIsActiveIsTrue(String providerId,String serialno);\r\n\r\n\t/**\r\n\t * Find by code and purpose and is active is true.\r\n\t *\r\n\t * @param deviceCode the device code\r\n\t * @param purpose the purpose\r\n\t * @return the registered device\r\n\t */\r\n\tRegisteredDevice findByCodeAndPurposeIgnoreCaseAndIsActiveIsTrue(String deviceCode, String purpose);\r\n\r\n}\r\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/repositories/RegistrationCenterDeviceHistoryRepository.java", + "title": "RegistrationCenterDeviceHistoryRepository.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/repositories/RegistrationCenterDeviceHistoryRepository.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.repositories;\r\n\r\nimport java.time.LocalDateTime;\r\n\r\nimport org.springframework.data.jpa.repository.Modifying;\r\nimport org.springframework.data.jpa.repository.Query;\r\nimport org.springframework.stereotype.Repository;\r\n\r\nimport io.mosip.admin.bulkdataupload.entity.RegistrationCenterDeviceHistory;\r\nimport io.mosip.admin.bulkdataupload.entity.RegistrationCenterDeviceHistoryPk;\r\nimport io.mosip.kernel.core.dataaccess.spi.repository.BaseRepository;\r\n\r\n/**\r\n * Repository to perform CRUD operations on RegistrationCenterDeviceHistory.\r\n * \r\n * @author Bal Vikash Sharma\r\n * @author Uday Kumar\r\n * @since 1.0.0\r\n * @see RegistrationCenterDeviceHistory\r\n * @see BaseRepository\r\n *\r\n */\r\n@Repository\r\npublic interface RegistrationCenterDeviceHistoryRepository\r\n\t\textends BaseRepository {\r\n\r\n\t/**\r\n\t * This method trigger query to fetch Registration center device History Details\r\n\t * based on registration center id, device id,and effective date time\r\n\t * \r\n\t * @param regCenterId input Registration Center Id from User\r\n\t * @param deviceId input Device Id from user\r\n\t * @param effectDtimes effective Date and time provided by user in the format\r\n\t * \"yyyy-MM-dd'T'HH:mm:ss.SSS'Z'\"\r\n\t * @return RegistrationCenterDeviceHistory fetched from database\r\n\t */\r\n\r\n\t@Query(value = \"Select rcdh.eff_dtimes, rcdh.lang_code, rcdh.regcntr_id,rcdh.cr_by, rcdh.cr_dtimes, rcdh.del_dtimes, rcdh.is_active, rcdh.is_deleted, rcdh.upd_by, rcdh.upd_dtimes, rcdh.device_id from master.reg_center_device_h rcdh where rcdh.regcntr_id = ?1 and rcdh.device_id = ?2 and rcdh.eff_dtimes <= ?3 and ( rcdh.is_deleted = false or rcdh.is_deleted is null) order by rcdh.eff_dtimes desc limit 1\", nativeQuery = true)\r\n\tRegistrationCenterDeviceHistory findByFirstByRegCenterIdAndDeviceIdAndEffectDtimesLessThanEqualAndIsDeletedFalseOrIsDeletedIsNull(\r\n\t\t\tString regCenterId, String deviceId, LocalDateTime effectDtimes);\r\n\r\n\t@Modifying\r\n\t@Query(value = \" update master.reg_center_device_h set is_active=?1, upd_by=?2, upd_dtimes=?3 where device_id=?4 and regcntr_id=?5 and (is_deleted is null or is_deleted =false);\", nativeQuery = true)\r\n\tint updateDeviceAndRegistrationCenterMapping(boolean isActive, String updatedBy, LocalDateTime updatedDateTime,\r\n\t\t\tString deviceId, String regCenterId);\r\n}\r\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/repositories/RegistrationCenterDeviceRepository.java", + "title": "RegistrationCenterDeviceRepository.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/repositories/RegistrationCenterDeviceRepository.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.repositories;\r\n\r\nimport java.util.List;\r\nimport java.util.Optional;\r\n\r\nimport org.springframework.data.jpa.repository.Query;\r\nimport org.springframework.stereotype.Repository;\r\n\r\nimport io.mosip.admin.bulkdataupload.entity.RegistrationCenterDevice;\r\nimport io.mosip.admin.bulkdataupload.entity.id.RegistrationCenterDeviceID;\r\nimport io.mosip.kernel.core.dataaccess.spi.repository.BaseRepository;\r\n\r\n/**\r\n * Repository to perform CRUD operations on RegistrationCenterDevice.\r\n * \r\n * @author Dharmesh Khandelwal\r\n * @author Bal Vikash Sharma\r\n * @since 1.0.0\r\n * @see RegistrationCenterDevice\r\n * @see BaseRepository\r\n *\r\n */\r\n@Repository\r\npublic interface RegistrationCenterDeviceRepository\r\n\t\textends BaseRepository {\r\n\r\n\t@Query(\"FROM RegistrationCenterDevice WHERE registrationCenterDevicePk =?1 and (isDeleted is null or isDeleted =false) and isActive = true\")\r\n\tOptional findAllNondeletedMappings(RegistrationCenterDeviceID registrationCenterDevicePk);\r\n\r\n\t@Query(\"FROM RegistrationCenterDevice rd where rd.registrationCenterDevicePk.deviceId = ?1 AND (rd.isDeleted is null or rd.isDeleted=false)\")\r\n\tList findByDeviceIdAndIsDeletedFalseOrIsDeletedIsNull(String deviceId);\r\n\r\n\t@Query(\"FROM RegistrationCenterDevice rd where rd.registrationCenterDevicePk.regCenterId = ?1 AND (rd.isDeleted is null or rd.isDeleted=false) and rd.isActive = true\")\r\n\tList findByRegCenterIdAndIsDeletedFalseOrIsDeletedIsNull(String regCenterId);\r\n\r\n\t@Query(value = \"select count(*) from master.reg_center_device where regcntr_id=?1 and (is_deleted is null or is_deleted=false);\", nativeQuery = true)\r\n\tLong countCenterDevices(String centerId);\r\n\r\n\t/**\r\n\t * Method that returns the list of registration centers mapped to devices.\r\n\t * \r\n\t * @param regCenterID the center ID of the reg-center which needs to be\r\n\t * decommissioned.\r\n\t * @return the list of registration centers mapped to devices.\r\n\t */\r\n\t@Query(value = \"FROM RegistrationCenterDevice rd WHERE rd.registrationCenterDevicePk.regCenterId =?1 and (rd.isDeleted is null or rd.isDeleted =false)\")\r\n\tpublic List registrationCenterDeviceMappings(String regCenterID);\r\n\r\n\t@Query(\"FROM RegistrationCenterDevice rd where (rd.isDeleted is null or rd.isDeleted =false) and rd.isActive = true\")\r\n\tList findAllCenterDevices();\r\n\r\n\t@Query(\"FROM RegistrationCenterDevice rd where rd.registrationCenterDevicePk.regCenterId = ?1 and rd.registrationCenterDevicePk.deviceId = ?2 and rd.langCode=?3 \")\r\n\tpublic RegistrationCenterDevice findByRegIdAndDeviceIdAndLangCode(String regCenterId, String deviceId,\r\n\t\t\tString langCode);\r\n\r\n\t@Query(\"FROM RegistrationCenterDevice rd where rd.registrationCenterDevicePk.deviceId = ?1 and rd.langCode=?2 and rd.isActive=true\")\r\n\tpublic RegistrationCenterDevice findByDeviceIdAndLangCode(String deviceId, String langCode);\r\n\r\n\t/**\r\n\t * Method to find valid document based on Document Category code and Document\r\n\t * Type code provided.\r\n\t * \r\n\t * @param docCategoryCode the document category code.\r\n\t * @param docTypeCode the document type code.\r\n\t * @return ValidDocument\r\n\t */\r\n\t@Query(\"FROM RegistrationCenterDevice rd WHERE rd.registrationCenterDevicePk.deviceId=?1 AND rd.registrationCenterDevicePk.regCenterId =?2 AND (rd.isDeleted is null OR rd.isDeleted = false)\")\r\n\tRegistrationCenterDevice findByDeviceIdAndRegCenterId(String deviceId, String regCenterId);\r\n\r\n}\r\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/repositories/RegistrationCenterHistoryRepository.java", + "title": "RegistrationCenterHistoryRepository.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/repositories/RegistrationCenterHistoryRepository.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.repositories;\n\nimport java.time.LocalDateTime;\nimport java.util.List;\n\nimport org.springframework.data.jpa.repository.Query;\nimport org.springframework.stereotype.Repository;\n\nimport io.mosip.admin.bulkdataupload.entity.RegistrationCenterHistory;\nimport io.mosip.kernel.core.dataaccess.spi.repository.BaseRepository;\n\n/**\n * Repository class to fetch registration center history details\n * \n * @author Dharmesh Khandelwal\n * @since 1.0.0\n *\n */\n@Repository\npublic interface RegistrationCenterHistoryRepository extends BaseRepository {\n\n\t/**\n\t * Function to fetch registration center by id language code and effective time\n\t * \n\t * @param id The registration center id\n\t * @param langCode The language code\n\t * @param effectivetimes The effective time\n\t * @return Registration center history\n\t */\n\t@Query(\"FROM RegistrationCenterHistory WHERE id =?1 and langCode =?2 and effectivetimes <=?3 and (isDeleted is null or isDeleted =false)\")\n\tList findByIdAndLangCodeAndEffectivetimesLessThanEqualAndIsDeletedFalseOrIsDeletedIsNull(\n\t\t\tString id, String langCode, LocalDateTime effectivetimes);\n\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/repositories/RegistrationCenterMachineDeviceHistoryRepository.java", + "title": "RegistrationCenterMachineDeviceHistoryRepository.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/repositories/RegistrationCenterMachineDeviceHistoryRepository.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.repositories;\n\nimport org.springframework.stereotype.Repository;\n\nimport io.mosip.admin.bulkdataupload.entity.RegistrationCenterMachineDeviceHistory;\nimport io.mosip.admin.bulkdataupload.entity.id.RegistrationCenterMachineDeviceID;\nimport io.mosip.kernel.core.dataaccess.spi.repository.BaseRepository;\n\n/**\n * Repository to perform CRUD operations on\n * RegistrationCenterMachineDeviceHistory.\n * \n * @author Bal Vikash Sharma\n * @since 1.0.0\n * @see RegistrationCenterMachineDeviceHistory\n * @see BaseRepository\n *\n */\n@Repository\npublic interface RegistrationCenterMachineDeviceHistoryRepository\n\t\textends BaseRepository {\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/repositories/RegistrationCenterMachineDeviceRepository.java", + "title": "RegistrationCenterMachineDeviceRepository.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/repositories/RegistrationCenterMachineDeviceRepository.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.repositories;\r\n\r\nimport java.time.LocalDateTime;\r\nimport java.util.List;\r\n\r\nimport org.springframework.data.jpa.repository.Modifying;\r\nimport org.springframework.data.jpa.repository.Query;\r\nimport org.springframework.stereotype.Repository;\r\nimport org.springframework.transaction.annotation.Transactional;\r\n\r\nimport io.mosip.admin.bulkdataupload.entity.RegistrationCenterMachineDevice;\r\nimport io.mosip.admin.bulkdataupload.entity.id.RegistrationCenterMachineDeviceID;\r\nimport io.mosip.kernel.core.dataaccess.spi.repository.BaseRepository;\r\n\r\n/**\r\n * Repository to perform CRUD operations on RegistrationCenterMachineDevice.\r\n * \r\n * @author Bal Vikash Sharma\r\n * @since 1.0.0\r\n * @see RegistrationCenterMachineDevice\r\n * @see BaseRepository\r\n *\r\n */\r\n@Repository\r\npublic interface RegistrationCenterMachineDeviceRepository\r\n\t\textends BaseRepository {\r\n\r\n\t@Modifying\r\n\t@Transactional\r\n\t@Query(\"UPDATE RegistrationCenterMachineDevice rcm SET rcm.isDeleted = true ,rcm.deletedDateTime = ?1 WHERE rcm.registrationCenterMachineDevicePk.regCenterId = ?2 AND rcm.registrationCenterMachineDevicePk.machineId = ?3 AND rcm.registrationCenterMachineDevicePk.deviceId = ?4\")\r\n\tint deleteRegCenterMachineDevice(LocalDateTime deletedDateTime, String regId, String machineId, String deviceId);\r\n\r\n\t@Query(\"FROM RegistrationCenterMachineDevice rcm where rcm.registrationCenterMachineDevicePk.regCenterId = ?1 AND rcm.registrationCenterMachineDevicePk.machineId = ?3 AND rcm.registrationCenterMachineDevicePk.deviceId = ?2 AND (rcm.isDeleted is null or rcm.isDeleted=false) AND rcm.isActive = true\")\r\n\tRegistrationCenterMachineDevice findByIdAndIsDeletedFalseOrIsDeletedIsNull(String regId, String deviceId,\r\n\t\t\tString machineId);\r\n\r\n\t@Query(\"FROM RegistrationCenterMachineDevice rcm where rcm.registrationCenterMachineDevicePk.machineId = ?1 AND (rcm.isDeleted is null or rcm.isDeleted=false) and rcm.isActive = true\")\r\n\tList findByMachineIdAndIsDeletedFalseOrIsDeletedIsNull(String machineId);\r\n\r\n\t@Query(\"FROM RegistrationCenterMachineDevice rcm where rcm.registrationCenterMachineDevicePk.deviceId = ?1 AND (rcm.isDeleted is null or rcm.isDeleted=false) and rcm.isActive = true\")\r\n\tList findByDeviceIdAndIsDeletedFalseOrIsDeletedIsNull(String deviceId);\r\n\r\n\t@Query(\"FROM RegistrationCenterMachineDevice rcm where rcm.registrationCenterMachineDevicePk.regCenterId = ?1 AND (rcm.isDeleted is null or rcm.isDeleted=false) and rcm.isActive = true\")\r\n\tList findByRegCenterIdAndIsDeletedFalseOrIsDeletedIsNull(String regCenterId);\r\n}\r\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/repositories/RegistrationCenterMachineHistoryRepository.java", + "title": "RegistrationCenterMachineHistoryRepository.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/repositories/RegistrationCenterMachineHistoryRepository.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.repositories;\n\nimport org.springframework.stereotype.Repository;\n\nimport io.mosip.admin.bulkdataupload.entity.RegistrationCenterMachineHistory;\nimport io.mosip.admin.bulkdataupload.entity.id.RegistrationCenterMachineID;\nimport io.mosip.kernel.core.dataaccess.spi.repository.BaseRepository;\n\n/**\n * Repository to perform CRUD operations on RegistrationCenterMachineHistory.\n * \n * @author Bal Vikash Sharma\n * @since 1.0.0\n * @see RegistrationCenterMachineHistory\n * @see BaseRepository\n *\n */\n@Repository\npublic interface RegistrationCenterMachineHistoryRepository\n\t\textends BaseRepository {\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/repositories/RegistrationCenterMachineRepository.java", + "title": "RegistrationCenterMachineRepository.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/repositories/RegistrationCenterMachineRepository.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.repositories;\r\n\r\nimport java.util.List;\r\nimport java.util.Optional;\r\n\r\nimport org.springframework.data.jpa.repository.Query;\r\nimport org.springframework.stereotype.Repository;\r\n\r\nimport io.mosip.admin.bulkdataupload.entity.RegistrationCenterMachine;\r\nimport io.mosip.admin.bulkdataupload.entity.id.RegistrationCenterMachineID;\r\nimport io.mosip.kernel.core.dataaccess.spi.repository.BaseRepository;\r\n\r\n/**\r\n * Repository to perform CRUD operations on RegistrationCenterMachine.\r\n * \r\n * @author Bal Vikash Sharma\r\n * @since 1.0.0\r\n * @see RegistrationCenterMachine\r\n * @see BaseRepository\r\n *\r\n */\r\n@Repository\r\npublic interface RegistrationCenterMachineRepository\r\n\t\textends BaseRepository {\r\n\r\n\t/*@Query(\"FROM RegistrationCenterMachine WHERE registrationCenterMachinePk =?1 and (isDeleted is null or isDeleted =false) and isActive = true\")\r\n\tOptional findAllNondeletedMappings(\r\n\t\t\tRegistrationCenterMachineID registrationCenterMachinePk);*/\r\n\r\n\t@Query(\"FROM RegistrationCenterMachine rm where rm.registrationCenterMachinePk.machineId = ?1 AND (rm.isDeleted is null or rm.isDeleted=false) \")\r\n\tList findByMachineIdAndIsDeletedFalseOrIsDeletedIsNull(String machineId);\r\n\r\n\t@Query(\"FROM RegistrationCenterMachine rm where rm.registrationCenterMachinePk.regCenterId = ?1 AND (rm.isDeleted is null or rm.isDeleted=false) and rm.isActive = true\")\r\n\tList findByRegCenterIdAndIsDeletedFalseOrIsDeletedIsNull(String regCenterId);\r\n\r\n\t@Query(value = \"SELECT rcm.regcntr_id, mm.id, mm.name, mm.mac_address, mm.serial_num, mm.ip_address, mm.mspec_id, mm.lang_code, mm.is_active,mm.validity_end_dtimes, mm.cr_by, mm.cr_dtimes, mm.upd_by, mm.upd_dtimes FROM master.machine_master mm inner join master.reg_center_machine rcm on mm.id = rcm.machine_id where (rcm.is_deleted is null or rcm.is_deleted=false) and (mm.is_deleted is null or mm.is_deleted=false) and rcm.regcntr_id=?1\", nativeQuery = true)\r\n\tList findByRegCenterIdAndIsDeletedFalseOrIsDeletedIsNullMachine(String regCenterId);\r\n\r\n\t@Query(value = \"select count(*) from master.reg_center_machine where regcntr_id=?1 and (is_deleted is null or is_deleted=false)\", nativeQuery = true)\r\n\tLong countCenterMachines(String centerId);\r\n\r\n\t/**\r\n\t * Method that returns the list of registration centers mapped to machines.\r\n\t * \r\n\t * @param regCenterID the center ID of the reg-center which needs to be\r\n\t * decommissioned.\r\n\t * @return the list of registration centers mapped to machines.\r\n\t */\r\n\t@Query(value = \"FROM RegistrationCenterMachine rm WHERE rm.registrationCenterMachinePk.regCenterId =?1 and (rm.isDeleted is null or rm.isDeleted =false) \")\r\n\tList findRegCenterMachineMappings(String regCenterID);\r\n\r\n\t@Query(\"FROM RegistrationCenterMachine rm where (rm.isDeleted is null or rm.isDeleted =false) and rm.isActive = true\")\r\n\tList findAllCenterMachines();\r\n\r\n\t@Query(\"FROM RegistrationCenterMachine rm where rm.registrationCenterMachinePk.regCenterId=?1 and rm.registrationCenterMachinePk.machineId=?2 and rm.langCode=?3\")\r\n\tRegistrationCenterMachine findByRegIdAndMachineId(String regId, String machineId, String langCode);\r\n\r\n\t@Query(\"FROM RegistrationCenterMachine rm where rm.registrationCenterMachinePk.machineId=?1 and rm.langCode=?2 and rm.isActive=true\")\r\n\tRegistrationCenterMachine findByMachineId(String machineId, String langCode);\r\n}\r\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/repositories/RegistrationCenterMachineUserRepository.java", + "title": "RegistrationCenterMachineUserRepository.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/repositories/RegistrationCenterMachineUserRepository.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.repositories;\r\n\r\nimport java.util.List;\r\nimport java.util.Optional;\r\n\r\nimport org.springframework.data.jpa.repository.Query;\r\nimport org.springframework.stereotype.Repository;\r\n\r\nimport io.mosip.admin.bulkdataupload.entity.RegistrationCenterUserMachine;\r\nimport io.mosip.admin.bulkdataupload.entity.id.RegistrationCenterMachineUserID;\r\nimport io.mosip.kernel.core.dataaccess.spi.repository.BaseRepository;\r\n\r\n/**\r\n * Repository class for user machine mapping\r\n * \r\n * @author Dharmesh Khandelwal\r\n * @author Sidhant Agarwal\r\n * @since 1.0.0\r\n *\r\n */\r\n@Repository\r\npublic interface RegistrationCenterMachineUserRepository\r\n\t\textends BaseRepository {\r\n\r\n\t/**\r\n\t * To find all data which are not previously deleted\r\n\t * \r\n\t * @param cntrId input from user\r\n\t * @param machineId input from user\r\n\t * @param usrId input from user\r\n\t * @return {@link RegistrationCenterUserMachine}\r\n\t */\r\n\t@Query(\"FROM RegistrationCenterUserMachine a WHERE a.registrationCenterMachineUserID.cntrId=?1 AND a.registrationCenterMachineUserID.machineId=?2 AND a.registrationCenterMachineUserID.usrId=?3 and (a.isDeleted is null or a.isDeleted =false) and a.isActive = true\")\r\n\tOptional findAllNondeletedMappings(String cntrId, String machineId, String usrId);\r\n\r\n\t@Query(\"FROM RegistrationCenterUserMachine rum where rum.registrationCenterMachineUserID.machineId = ?1 AND (rum.isDeleted is null or rum.isDeleted=false) and rum.isActive = true\")\r\n\tList findByMachineIdAndIsDeletedFalseOrIsDeletedIsNull(String machineId);\r\n\r\n\t@Query(\"FROM RegistrationCenterUserMachine rum where rum.registrationCenterMachineUserID.usrId = ?1 AND (rum.isDeleted is null or rum.isDeleted=false) and rum.isActive = true\")\r\n\tList findByUsrIdAndIsDeletedFalseOrIsDeletedIsNull(String usrId);\r\n\r\n\t@Query(\"FROM RegistrationCenterUserMachine rum where rum.registrationCenterMachineUserID.cntrId = ?1 AND (rum.isDeleted is null or rum.isDeleted=false) and rum.isActive = true\")\r\n\tList findByCntrIdAndIsDeletedFalseOrIsDeletedIsNull(String cntrId);\r\n\r\n}\r\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/repositories/RegistrationCenterRepository.java", + "title": "RegistrationCenterRepository.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/repositories/RegistrationCenterRepository.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.repositories;\r\n\r\nimport java.time.LocalDate;\r\nimport java.time.LocalDateTime;\r\nimport java.util.List;\r\nimport java.util.Set;\r\n\r\nimport org.springframework.data.jpa.repository.Modifying;\r\nimport org.springframework.data.jpa.repository.Query;\r\nimport org.springframework.data.repository.query.Param;\r\nimport org.springframework.stereotype.Repository;\r\n\r\nimport io.mosip.admin.bulkdataupload.entity.RegistrationCenter;\r\nimport io.mosip.kernel.core.dataaccess.spi.repository.BaseRepository;\r\n\r\n/**\r\n * Repository class for RegistrationCenter to trigger queries.\r\n * \r\n * @author Dharmesh Khandelwal\r\n * @author Abhishek Kumar\r\n * @author Sidhant Agarwal\r\n * @author Sagar Mahapatra\r\n * @author Uday Kumar\r\n * @author Ravi Kant\r\n * @since 1.0.0\r\n *\r\n */\r\n@Repository\r\npublic interface RegistrationCenterRepository extends BaseRepository {\r\n\r\n\t/**\r\n\t * This method trigger query to fetch registration centers based on\r\n\t * latitude,longitude,proximity distance and language code\r\n\t * \r\n\t * @param latitude latitude provided by user\r\n\t * @param longitude longitude provided by user\r\n\t * @param proximityDistance proximityDistance provided by user as a radius\r\n\t * @param langCode langCode provided by user\r\n\t * @return list of {@link RegistrationCenter} fetched from database\r\n\t */\r\n\t@Query\r\n\tList findRegistrationCentersByLat(@Param(\"latitude\") double latitude,\r\n\t\t\t@Param(\"longitude\") double longitude, @Param(\"proximitydistance\") double proximityDistance,\r\n\t\t\t@Param(\"langcode\") String langCode);\r\n\r\n\t/**\r\n\t * This method trigger query to fetch registration centers based on id and\r\n\t * language code.\r\n\t * \r\n\t * @param id the centerId\r\n\t * @param langCode the languageCode\r\n\t * @return the RegistrationCenter\r\n\t */\r\n\t@Query(\"FROM RegistrationCenter WHERE id= ?1 and langCode =?2 and (isDeleted is null or isDeleted =false) and isActive = true\")\r\n\tRegistrationCenter findByIdAndLangCode(String id, String langCode);\r\n\r\n\t/**\r\n\t * This method trigger query to fetch registration centers based on id and\r\n\t * language code.\r\n\t * \r\n\t * @param id the centerId\r\n\t * @param langCode the languageCode\r\n\t * @return the RegistrationCenter\r\n\t */\r\n\t@Query(\"FROM RegistrationCenter WHERE id= ?1 and langCode =?2 and (isDeleted is null or isDeleted =false)\")\r\n\tRegistrationCenter findByIdAndLangCodeAndIsDeletedTrue(String id, String langCode);\r\n\r\n\t/**\r\n\t * This method triggers query to find registration center holiday location code\r\n\t * based on id and language code.\r\n\t * \r\n\t * @param id the id against which the holiday location code needs to be\r\n\t * found.\r\n\t * @param langCode the language code against which the holiday location code\r\n\t * needs to be found.\r\n\t * @return the holiday location code fetched.\r\n\t */\r\n\tString findRegistrationCenterHolidayLocationCodeByIdAndLangCode(String id, String langCode);\r\n\r\n\t/**\r\n\t * This method trigger query to fetch registration centers based on locationCode\r\n\t * and language code.\r\n\t * \r\n\t * @param locationCode locationCode provided by user\r\n\t * @param langCode languageCode provided by user\r\n\t * @return list of {@link RegistrationCenter} fetched from database\r\n\t */\r\n\t@Query(\"FROM RegistrationCenter WHERE locationCode= ?1 and langCode =?2 and (isDeleted is null or isDeleted =false) and isActive = true\")\r\n\tList findByLocationCodeAndLangCode(String locationCode, String langCode);\r\n\r\n\t/**\r\n\t * This method trigger query to fetch all registration centers based on deletion\r\n\t * condition.\r\n\t * \r\n\t * @return the list of list of {@link RegistrationCenter}.\r\n\t */\r\n\t@Query(\"FROM RegistrationCenter WHERE (isDeleted is null or isDeleted =false) and isActive = true\")\r\n\tList findAllByIsDeletedFalseOrIsDeletedIsNull();\r\n\r\n\t/**\r\n\t * This method triggers query to find registration centers based on center type\r\n\t * code.\r\n\t * \r\n\t * @param code the code against which registration centers need to be found.\r\n\t * @return the list of registration centers.\r\n\t */\r\n\t@Query(\"FROM RegistrationCenter WHERE centerTypeCode= ?1 and (isDeleted is null or isDeleted =false) and isActive = true\")\r\n\tList findByCenterTypeCode(String code);\r\n\r\n\t@Query(value = \"select EXISTS(select * from master.loc_holiday hol where hol.is_active=true and (hol.is_deleted is null or hol.is_deleted=false) and hol.holiday_date=?1 and hol.location_code=?2)\", nativeQuery = true)\r\n\tboolean validateDateWithHoliday(LocalDate date, String holidayLocationCode);\r\n\r\n\t/**\r\n\t * This method triggers query to find registration centers based on id.\r\n\t * \r\n\t * @param id - id of the registration center.\r\n\t * @return - the fetched registration center entity.\r\n\t */\r\n\t@Query(\"FROM RegistrationCenter WHERE id= ?1 and (isDeleted is null or isDeleted =false) and isActive = true\")\r\n\tList findByIdAndIsDeletedFalseOrNull(String id);\r\n\r\n\t/**\r\n\t * This method triggers query to set the isDeleted to true for a registration\r\n\t * center based on id given.\r\n\t * \r\n\t * @param deletedDateTime the time at which the center is set to be deleted.\r\n\t * @param id the id of the registration center which is to be\r\n\t * deleted.\r\n\t * @param updatedBy updated by\r\n\t * @return the number of id deleted.\r\n\t */\r\n\t@Modifying\r\n\t@Query(\"UPDATE RegistrationCenter SET isDeleted =true , deletedDateTime = ?1, updatedBy = ?3 WHERE id =?2 and (isDeleted is null or isDeleted =false)\")\r\n\tint deleteRegistrationCenter(LocalDateTime deletedDateTime, String id, String updatedBy);\r\n\r\n\t/**\r\n\t * This method trigger query to fetch registration centers based on hierarchy\r\n\t * List of location_code\r\n\t * \r\n\t * @param codes provided by user\r\n\t * @param langCode language code\r\n\t * @return list of {@link RegistrationCenter} fetched from database\r\n\t */\r\n\r\n\t@Query(value = \"SELECT r.id, r.name, r.cntrtyp_code, r.addr_line1, r.addr_line2, r.addr_line3,r.number_of_kiosks,r.per_kiosk_process_time,r.center_end_time,r.center_start_time,r.time_zone,r.contact_person,r.lunch_start_time, r.lunch_end_time,r.latitude, r.longitude, r.location_code,r.holiday_loc_code,r.contact_phone, r.working_hours, r.lang_code,r.is_active, r.cr_by,r.cr_dtimes, r.upd_by,r.upd_dtimes, r.is_deleted, r.del_dtimes, r.zone_code FROM master.registration_center r WHERE r.lang_code=:langcode AND r.location_code in :codes AND (r.is_deleted is null or r.is_deleted = false) AND r.is_active = true\", nativeQuery = true)\r\n\tList findRegistrationCenterByListOfLocationCode(@Param(\"codes\") Set codes,\r\n\t\t\t@Param(\"langcode\") String langCode);\r\n\r\n\t/**\r\n\t * This method triggers query to find registration centers based on id.\r\n\t * \r\n\t * @param id - id of the registration center.\r\n\t * @return - the fetched registration center entity.\r\n\t */\r\n\t@Query(\"FROM RegistrationCenter WHERE id= ?1 and (isDeleted is null or isDeleted =false) \")\r\n\tList findByRegIdAndIsDeletedFalseOrNull(String id);\r\n\r\n\t/**\r\n\t * This method triggers query to find registration centers based on id.\r\n\t * \r\n\t * @param id - id of the registration center.\r\n\t * @return - the fetched registration center entity.\r\n\t */\r\n\t@Query(\"FROM RegistrationCenter WHERE id= ?1 and (isDeleted is null or isDeleted =false)\")\r\n\tList findByRegCenterIdAndIsDeletedFalseOrNull(String id);\r\n\r\n\t@Query(\"FROM RegistrationCenter WHERE id= ?1 and langCode=?2 \")\r\n\tList findByRegIdAndLangCode(String id, String langCode);\r\n\r\n\t/**\r\n\t * Method to decommission the reg-center.\r\n\t * \r\n\t * @param regCenterID the center ID of the reg-center which needs to\r\n\t * be decommissioned.\r\n\t * @param deCommissionedBy the user name retrieved from the context who\r\n\t * performs this operation.\r\n\t * @param deCommissionedDateTime date and time at which the center was\r\n\t * decommissioned.\r\n\t * @return the number of registration centers decommissioned.\r\n\t */\r\n\t@Query(\"UPDATE RegistrationCenter SET isDeleted = true, isActive = false, updatedBy = ?2, updatedDateTime = ?3, deletedDateTime = ?3 WHERE id = ?1 and (isDeleted is null or isDeleted =false)\")\r\n\t@Modifying\r\n\tint decommissionRegCenter(String regCenterID, String deCommissionedBy, LocalDateTime deCommissionedDateTime);\r\n\r\n\t/**\r\n\t * This method trigger query to fetch registration centers based on id and\r\n\t * language code with is_Deleted true or false or null and is_Active true or\r\n\t * false\r\n\t * \r\n\t * @param id the centerId\r\n\t * @param langCode the languageCode\r\n\t * @return the RegistrationCenter\r\n\t */\r\n\t@Query(\"FROM RegistrationCenter WHERE id= ?1 and langCode =?2 and (isDeleted is null or isDeleted = false)\")\r\n\tRegistrationCenter findByLangCodeAndId(String id, String langCode);\r\n\r\n}\r\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/repositories/RegistrationCenterTypeRepository.java", + "title": "RegistrationCenterTypeRepository.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/repositories/RegistrationCenterTypeRepository.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.repositories;\n\nimport java.time.LocalDateTime;\nimport java.util.List;\n\nimport org.springframework.data.domain.Page;\nimport org.springframework.data.domain.PageRequest;\nimport org.springframework.data.domain.Pageable;\nimport org.springframework.data.jpa.repository.Modifying;\nimport org.springframework.data.jpa.repository.Query;\nimport org.springframework.stereotype.Repository;\n\nimport io.mosip.admin.bulkdataupload.entity.RegistrationCenterType;\nimport io.mosip.admin.bulkdataupload.entity.id.CodeAndLanguageCodeID;\nimport io.mosip.kernel.core.dataaccess.spi.repository.BaseRepository;\n\n/**\n * Interface for RegistrationCenterType Repository.\n * \n * @author Sagar Mahapatra\n * @since 1.0.0\n *\n */\n@Repository\npublic interface RegistrationCenterTypeRepository\n\t\textends BaseRepository {\n\t/**\n\t * Set isDeleted to false of the registration center type based on code\n\t * provided.\n\t * \n\t * @param deletedDateTime the Date and time of deletion.\n\t * @param code the registration center type code.\n\t * @param updatedBy updatedBy\n\t * @return the number of rows whose isDeleted is set to true.\n\t */\n\t@Modifying\n\t@Query(\"UPDATE RegistrationCenterType r SET r.isDeleted =true , r.deletedDateTime = ?1, r.updatedBy = ?3 WHERE r.code =?2 and (r.isDeleted is null or r.isDeleted =false)\")\n\tint deleteRegistrationCenterType(LocalDateTime deletedDateTime, String code, String updatedBy);\n\n\t/**\n\t * This method triggers query to fetch the list of registration center types\n\t * based on code.\n\t * \n\t * @param code the code against the registration center types needs to be\n\t * fetched.\n\t * @return the list of registration center types.\n\t */\n\n\tList findByCode(String code);\n\n\t/**\n\t * This method triggers query to fetch the list of registration center types\n\t * based on code.\n\t * \n\t * @param code the code against which it needs to be fetched.\n\t * @return the list of registration center types.\n\t */\n\t@Query(\"FROM RegistrationCenterType WHERE code =?1 AND (isDeleted is null OR isDeleted = false) and isActive = true\")\n\tList findByCodeAndIsDeletedFalseOrIsDeletedIsNull(String code);\n\n\t/**\n\t * This method triggers query to fetch registration center type based on code\n\t * and language code.\n\t * \n\t * @param code the code against which the registration center types need to\n\t * be fetched.\n\t * @param langCode the language code against which registration center types\n\t * needs to be fetched.\n\t * @return the registration center types.\n\t */\n\t@Query(\"FROM RegistrationCenterType WHERE code =?1 AND langCode =?2 AND (isDeleted is null OR isDeleted = false) and isActive = true\")\n\tRegistrationCenterType findByCodeAndLangCodeAndIsDeletedFalseOrIsDeletedIsNull(String code, String langCode);\n\n\t/**\n\t * This method triggers query to fetch registration center type based on code\n\t * and language code.\n\t * \n\t * @param code the code against which the registration center types need to\n\t * be fetched.\n\t * @param langCode the language code against which registration center types\n\t * needs to be fetched.\n\t * @return the registration center types.\n\t */\n\t@Query(\"FROM RegistrationCenterType WHERE code =?1 AND langCode =?2 AND (isDeleted is null OR isDeleted = false)\")\n\tRegistrationCenterType findByCodeAndLangCode(String code, String langCode);\n\n\t/**\n\t * This method triggers query to fetch registration center type\n\t *\n\t * @return the registration center types.\n\t */\n\t@Query( \"select r from RegistrationCenterType r WHERE isActive=?1 AND (isDeleted is null OR isDeleted = false)\" )\n\tPage findAllByIsActive(boolean isActive, Pageable pageable);\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/repositories/RegistrationCenterUserHistoryRepository.java", + "title": "RegistrationCenterUserHistoryRepository.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/repositories/RegistrationCenterUserHistoryRepository.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.repositories;\r\n\r\nimport org.springframework.stereotype.Repository;\r\n\r\nimport io.mosip.admin.bulkdataupload.entity.RegistrationCenterUserHistory;\r\nimport io.mosip.admin.bulkdataupload.entity.RegistrationCenterUserHistoryPk;\r\nimport io.mosip.kernel.core.dataaccess.spi.repository.BaseRepository;\r\n\r\n/**\r\n * Repository to perform CRUD operations on RegistrationCenterUserHistory.\r\n * \r\n * @author Megha Tanga\r\n * @since 1.0.0\r\n * @see RegistrationCenterUserHistory\r\n * @see BaseRepository\r\n *\r\n */\r\n@Repository\r\npublic interface RegistrationCenterUserHistoryRepository\r\n\t\textends BaseRepository {\r\n\r\n}\r\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/repositories/RegistrationCenterUserMachineHistoryRepository.java", + "title": "RegistrationCenterUserMachineHistoryRepository.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/repositories/RegistrationCenterUserMachineHistoryRepository.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.repositories;\n\nimport java.time.LocalDateTime;\nimport java.util.List;\n\nimport org.springframework.data.jpa.repository.Query;\nimport org.springframework.stereotype.Repository;\n\nimport io.mosip.admin.bulkdataupload.entity.RegistrationCenterUserMachineHistory;\nimport io.mosip.admin.bulkdataupload.entity.id.RegistrationCenterMachineUserHistoryID;\nimport io.mosip.kernel.core.dataaccess.spi.repository.BaseRepository;\n\n/**\n * Repository class for user machine mapping\n * \n * @author Dharmesh Khandelwal\n * @since 1.0.0\n *\n */\n@Repository\npublic interface RegistrationCenterUserMachineHistoryRepository\n\t\textends BaseRepository {\n}\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/repositories/RegistrationCenterUserRepository.java", + "title": "RegistrationCenterUserRepository.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/repositories/RegistrationCenterUserRepository.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.repositories;\r\n\r\nimport java.util.List;\r\n\r\nimport org.springframework.data.jpa.repository.Query;\r\n\r\nimport io.mosip.admin.bulkdataupload.entity.RegistrationCenterUser;\r\nimport io.mosip.admin.bulkdataupload.entity.id.RegistrationCenterUserID;\r\nimport io.mosip.kernel.core.dataaccess.spi.repository.BaseRepository;\r\n\r\n/**\r\n * Registration Center User Repository\r\n * \r\n * @author Abhishek Kumar\r\n * @author Megha Tanga\r\n * @since 1.0.0\r\n */\r\npublic interface RegistrationCenterUserRepository\r\n\t\textends BaseRepository {\r\n\r\n\t@Query(value = \"select count(*) from master.reg_center_user where regcntr_id=?1 and (is_deleted is null or is_deleted=false);\", nativeQuery = true)\r\n\tpublic Long countCenterUsers(String centerId);\r\n\r\n\t/**\r\n\t * Method that returns the list of registration centers mapped to users.\r\n\t * \r\n\t * @param regCenterID the center ID of the reg-center which needs to be\r\n\t * decommissioned.\r\n\t * @return the list of registration centers mapped to users.\r\n\t */\r\n\t@Query(value = \"FROM RegistrationCenterUser ru WHERE ru.registrationCenterUserID.regCenterId =?1 and (ru.isDeleted is null or ru.isDeleted =false) \")\r\n\tpublic List registrationCenterUserMappings(String regCenterID);\r\n\r\n\t/**\r\n\t * Method to find valid RegistrationCenterUser based on User Id and Registration\r\n\t * Center Id Type code provided.\r\n\t * \r\n\t * @param userId the User Id.\r\n\t * @param regCenterId the registration center Id .\r\n\t * @return RegistrationCenterUser\r\n\t */\r\n\t@Query(value = \"FROM RegistrationCenterUser rc WHERE rc.registrationCenterUserID.userId = ?1 and rc.registrationCenterUserID.regCenterId = ?2 AND (rc.isDeleted is null OR rc.isDeleted = false)\")\r\n\tpublic RegistrationCenterUser findByUserIdAndRegCenterId(String userId, String regCenterId);\r\n\r\n\t/**\r\n\t * Method that returns the list of registration centers mapped to users.\r\n\t * \r\n\t * @param userID the user ID\r\n\t * @return the list of registration centers mapped to users.\r\n\t */\r\n\t@Query(value = \"FROM RegistrationCenterUser ru WHERE ru.registrationCenterUserID.userId =?1 and (ru.isDeleted is null or ru.isDeleted =false) and ru.isActive = true\")\r\n\tpublic List findByUserId(String userId);\r\n}\r\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/repositories/RegistrationDeviceSubTypeRepository.java", + "title": "RegistrationDeviceSubTypeRepository.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/repositories/RegistrationDeviceSubTypeRepository.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.repositories;\r\n\r\nimport org.springframework.data.jpa.repository.Query;\r\nimport org.springframework.stereotype.Repository;\r\n\r\nimport io.mosip.admin.bulkdataupload.entity.RegistrationDeviceSubType;\r\nimport io.mosip.kernel.core.dataaccess.spi.repository.BaseRepository;\r\n\r\n/**\r\n * interface for RegistrationDeviceSubType Repository\r\n * \r\n * @author Megha Tanga\r\n *\r\n */\r\n@Repository\r\npublic interface RegistrationDeviceSubTypeRepository extends BaseRepository {\r\n\r\n}\r\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/repositories/RegistrationDeviceTypeRepository.java", + "title": "RegistrationDeviceTypeRepository.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/repositories/RegistrationDeviceTypeRepository.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.repositories;\r\n\r\nimport org.springframework.data.jpa.repository.Query;\r\nimport org.springframework.stereotype.Repository;\r\n\r\nimport io.mosip.admin.bulkdataupload.entity.RegistrationDeviceType;\r\nimport io.mosip.kernel.core.dataaccess.spi.repository.BaseRepository;\r\n\r\n/**\r\n * Inerface for RegistrationDeviceType Repository\r\n * \r\n * @author Megha Tanga\r\n *\r\n */\r\n@Repository\r\npublic interface RegistrationDeviceTypeRepository extends BaseRepository {\r\n\r\n\t@Query(\"FROM RegistrationDeviceType d where d.code=?1 AND (d.isDeleted is null OR d.isDeleted = false) AND d.isActive = true\")\r\n\tRegistrationDeviceType findByCodeAndIsDeletedFalseorIsDeletedIsNullAndIsActiveTrue(String code);\r\n\r\n}\r\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/repositories/TemplateFileFormatRepository.java", + "title": "TemplateFileFormatRepository.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/repositories/TemplateFileFormatRepository.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.repositories;\r\n\r\nimport java.time.LocalDateTime;\r\nimport java.util.List;\r\n\r\nimport org.springframework.data.jpa.repository.Modifying;\r\nimport org.springframework.data.jpa.repository.Query;\r\nimport org.springframework.stereotype.Repository;\r\nimport org.springframework.transaction.annotation.Transactional;\r\n\r\nimport io.mosip.admin.bulkdataupload.entity.TemplateFileFormat;\r\nimport io.mosip.kernel.core.dataaccess.spi.repository.BaseRepository;\r\n\r\n/**\r\n * @author Neha Sinha\r\n * @author Megha Tanga\r\n * @since 1.0.0\r\n * \r\n */\r\n@Repository\r\npublic interface TemplateFileFormatRepository extends BaseRepository {\r\n\r\n\t/**\r\n\t * Get TemplateFileFormat by specific id and language code\r\n\t * \r\n\t * @param code for TemplateFileFormat\r\n\t * @param langCode is the language code present in database\r\n\t * @return object of {@link TemplateFileFormat}\r\n\t */\r\n\t@Query(\"FROM TemplateFileFormat WHERE code =?1 AND langCode =?2 AND (isDeleted is null OR isDeleted = false)\")\r\n\tTemplateFileFormat findByCodeAndLangCodeAndIsDeletedFalseOrIsDeletedIsNull(String code, String langCode);\r\n\r\n\t/**\r\n\t * Delete TemplateFileFormat based on code provided.\r\n\t * \r\n\t * @param updatedBy name of user\r\n\t * @param deletedDateTime the Date and time of deletion.\r\n\t * @param code the document category code.\r\n\t * @return the integer.\r\n\t */\r\n\t@Modifying\r\n\t@Transactional\r\n\t@Query(\"UPDATE TemplateFileFormat t SET t.updatedBy = ?1, t.isDeleted = true , t.deletedDateTime = ?2 WHERE t.code =?3 and (t.isDeleted is null or t.isDeleted = false)\")\r\n\tint deleteTemplateFileFormat(String updatedBy, LocalDateTime deletedDateTime, String code);\r\n\t\r\n\t\r\n\t\r\n\t@Query(\"FROM TemplateFileFormat t where t.code = ?1 and t.langCode = ?2 and (t.isDeleted is null or t.isDeleted = false) and t.isActive = true\")\r\n\tList findAllByCodeAndLangCodeAndIsDeletedFalseorIsDeletedIsNull(String code, String langCode);\r\n\t\r\n\t@Query(\"FROM TemplateFileFormat t where t.langCode = ?1 and (t.isDeleted is null or t.isDeleted = false) and t.isActive = true\")\r\n\tList findAllByLangCodeAndIsDeletedFalseorIsDeletedIsNull(String langCode);\r\n}\r\n" + }, + { + "source_type": "code", + "url": "https://github.com/mosip/admin-services/blob/master/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/repositories/TemplateRepository.java", + "title": "TemplateRepository.java", + "repo": "mosip/admin-services", + "file_path": "admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/repositories/TemplateRepository.java", + "language": "java", + "content": "package io.mosip.admin.bulkdataupload.repositories;\r\n\r\nimport java.time.LocalDateTime;\r\nimport java.util.List;\r\n\r\nimport org.springframework.data.jpa.repository.Modifying;\r\nimport org.springframework.data.jpa.repository.Query;\r\nimport org.springframework.stereotype.Repository;\r\n\r\nimport io.mosip.admin.bulkdataupload.entity.Template;\r\nimport io.mosip.kernel.core.dataaccess.spi.repository.BaseRepository;\r\n\r\n/**\r\n * @author Neha\r\n * @author Megha Tanga\r\n * @since 1.0.0\r\n * \r\n */\r\n@Repository\r\npublic interface TemplateRepository extends BaseRepository {\r\n\r\n\t/**\r\n\t * Get all Template types\r\n\t *\r\n\t * @param entityClass\r\n\t * the entity class type\r\n\t * @return All the {@link Template}\r\n\t */\r\n\t@Query(\"FROM Template WHERE (isDeleted is null or isDeleted =false) and isActive = true\")\r\n\tList