External systems
DigiFIR connects to outside systems through adapters in the backend's worker. Each adapter has a simulator that uses the real system's request and response shapes and error codes, and configuration switches it between simulator and live. The simulators can inject faults (latency, timeouts, 5xx and 429 responses) to test the failure paths.
Adapters run asynchronously with retry and back-off, so an outage of an outside system never blocks a ledger transaction. When an adapter learns an outside reference, such as a CCTNS FIR number, it records it on the ledger with external.anchor, signed by the adapter's own registered service key.
IMPORTANT
In the MVP, every outside system runs on its simulator in development and testing, and the live eSign client is not in this release. Live connections to CCTNS, ICJS and the court information system are government-to-government and need approval. Until then the pilot uses manual references reconciled daily.
Integrations
| System | Used for | Adapter or module | Ledger record |
|---|---|---|---|
| CCTNS | The legal FIR register in the pilot. Registrations are sent to it, and its FIR number and document hash are recorded. A daily reconciliation at 02:15 IST lists FIRs without a CCTNS number and mismatches. | adapter-cctns, every 15 minutes; cctns-reconciliation | external.anchor (CCTNS) |
| ICJS | Each chargesheet filed on the ledger is handed to the court through ICJS with its public facts (FIR number, court, charged sections, the report's hash) | adapter-icjs, every 15 minutes | external.anchor (ICJS) |
| eCourts CIS | CNR numbers for cases taken into cognizance, hearing dates, and disposals the court system shows (reported to the magistrate, who signs the disposal: the backend never records one itself) | adapter-ecourts, daily at 05:30 IST | external.anchor (ECOURTS) |
| e-Sakshya | The ID and hashes of seizure and statement media recorded in e-Sakshya where state rules require it | adapter-esakshya, every 15 minutes | external.anchor (ESAKSHYA) |
| FSL LIMS / e-Forensics | Laboratory case numbers and report numbers | adapter-fsl-lims, every 15 minutes | external.anchor (FSL_LIMS) |
| DigiLocker / Meri Pehchaan | Citizen identity proofing (OIDC with PKCE), the primary route in the pilot | Identity module | The DID's KYC method (DIGILOCKER) |
| Aadhaar (UIDAI) | Aadhaar app credential once the department is an offline verification seeking entity; State AUA/KUA OTP in production after notification | Identity module | AADHAAR_OVSE, AADHAAR_KUA |
| eSign (CCA-licensed provider) | The complainant's s.173(1)(ii) signature; BSA s.63 certificates | esp adapter, ESign module | complaint.sign (ESIGN) |
| SMS | Statutory notices (FIR copy link, 90-day progress update, closure intimation) through DLT-registered templates; contact verification codes; inbound SMS for the officials' SIM check | sms-gateway, sms-dlt simulator | None |
| Registry mail, weekly summaries, support, citizen notices | mail module: NIC relay in the pilot, Resend in development | None | |
| Push (FCM) | Waking the apps; payloads carry IDs only | notify module | None |
| Places | Address and PIN code lookups through an India-hosted geocoder, with OpenStreetMap credit | places adapter, /v1/geo | None |
| Call bridge | Masked calls from a station to a complainant | call-bridge adapter | None |
| Station general diary | Each day's diary closed at midnight and its digest anchored | gd-anchor job | external.anchor (GD) |
Citizen identity routes
| Route | Phase | Recorded method and level |
|---|---|---|
| DigiLocker / Meri Pehchaan | Pilot, primary | DIGILOCKER, level 2 when Aadhaar-backed, otherwise 1 |
| Verification at a police station desk | Pilot, universal fallback | DEMOGRAPHIC_DESK, level 1 |
| Aadhaar app credential | Once the department registers as an offline verification seeking entity | AADHAAR_OVSE, level 2 |
| State AUA/KUA OTP | Production, after SWIK approval and a gazette notification | AADHAAR_KUA, level 3 |
| Simulator | Development and CI only; refused in the pilot | SIMULATOR |
The earlier Sandbox.co.in offline e-KYC route used by the Firebase version of the citizen app is retired: Aadhaar regulation 16A(2) bars offline verification on behalf of another entity.
Approvals and fallbacks
The project's plan lists what each integration needs before the pilot. The lead times are the project team's assessment from published rules and comparable deployments.
| Item | Approver | Lead time | Fallback while waiting |
|---|---|---|---|
| State Government Order or MoU recognising DigiFIR as an electronic channel under BNSS s.173(1)(ii) | State Home Department, DGP | 2 to 4 months | Demonstrations on simulators |
| Onboarding terms for NBF ("Vishvasya") | C-DAC / NIC CoE | Not published | Self-hosted Fabric in an India region |
| India hosting, NTP to NIC/NPL, 180-day logs in India | State IT / NIC | 1 to 2 months | India region of an empanelled cloud |
| eSign ASP onboarding | CCA-licensed eSign provider | 2 to 6 weeks | Physical signature at the station within 3 days |
| TRAI DLT entity, header and templates; NIC SMS gateway | Telecom DLT, NIC | 1 to 6 weeks | In-app notices (not proof of service) |
| DigiLocker / Meri Pehchaan requester registration | NeGD / DigiLocker | 1 to 3 months | Verification at the station |
| GIGW 3.0 audit clearance, CERT-In controls, gov.in domain | CERT-In or STQC-empanelled auditor | 4 to 8 weeks with fixes | None; a go-live gate |
| CCTNS FIR number reference | SCRB / DGP and the CCTNS vendor | Manual now; API 3 to 9 months | Manual entry and daily reconciliation |
| e-Sakshya ID reference | IO practice; NCRB / NIC for an API | Manual now; API 3 to 6 months or more | Manual entry |
| e-Forensics case and custody events | State forensics directorate and NIC | 3 to 6 months | Laboratory case number typed in |
| DigiLocker issuer (Pull URI) for FIR copies | Police department and NeGD | 2 to 4 months | SMS link to the signed PDF |
| Aadhaar e-KYC through a State AUA/KUA | MeitY, UIDAI, State IT | 4 to 8 months | DigiLocker and station verification |
| Court information system read-only access for magistrates | High Court CPC and e-Committee | 6 to 12 months | The court app verifies uploaded PDFs by hash |
| ICJS | NCRB | More than 12 months | Out of the pilot |
Configuration
Each adapter is switched to live by setting its endpoint and credentials in the backend's environment, for example CCTNS_URL, ICJS_URL, ECOURTS_URL, ESAKSHYA_URL, EFORENSICS_URL, the DIGILOCKER_* and ESIGN_* settings, and SMS_PROVIDERS. With DIGIFIR_ENV=pilot, the backend refuses to start on simulators or development keys, and the container image sets that value by default.
Sources: digifir-backend docs/architecture/BACKEND.md sections 1.2, 8, 9.5, 10.1, 12 and 14, docs/architecture/DECISIONS.md ADR-08 and ADR-17, docs/PLAN.md section 6, docs/PROJECT-STATUS.md.