You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
User-Agent header with FRS identification per FaRDaP spec
🌍 Environment Support
Development and Production configurations
🔗 Azure DevOps Integration
Git-based source control and CI/CD
Architecture
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ FaRDaP API │────▶│ BRONZE LAYER │────▶│ SILVER LAYER │
│ (REST Service) │ │ (Raw JSON) │ │ (Normalized) │
└─────────────────┘ └─────────────────┘ └─────────────────┘
│ │
▼ ▼
┌─────────────┐ ┌─────────────┐
│ CDC Log │ │ Power BI │
│ Sync State │ │Direct Lake │
└─────────────┘ └─────────────┘
Layer Responsibilities
Layer
Purpose
Data Format
Update Frequency
Bronze
Raw data preservation
JSON documents
Every 5 minutes
Silver
Business-ready data
Flattened columns + normalized arrays
After Bronze sync
Semantic Model
Power BI reporting
Direct Lake connection
Real-time
Quick Start
Prerequisites
Microsoft Fabric workspace with Lakehouse
Azure Key Vault with API credentials
FaRDaP API access (username/password)
Your FRS ID (Fire & Rescue Service identifier)
Initial Setup
# 1. Configure Variable Library (dev or prod values)# 2. Add secrets to Azure Key Vault# - FARDAP-API-USERNAME# - FARDAP-API-PASSWORD# 3. Run Find_Your_FRS_ID notebook to verify your FRS ID# 4. Execute the full load pipeline# PL_FaRDaP_inc_full_load# 5. Enable the scheduled incremental pipeline# PL_FaRDaP_inc_incremental (runs every 5 minutes)# 6. Connect Power BI to the Semantic Model
Finding Your FRS ID
⚠️Important: Use the numeric FRS ID, NOT the two-character IRS code.
Service
FRS ID
London South
39
Greater Manchester
28
West Yorkshire
42
Run the Find_Your_FRS_ID.Notebook to discover your organisation's ID.
Records per API page (server caps at 1,000 per FaRDaP spec)
MAX_WORKERS
32
Parallel fetch threads
MAX_ATTEMPTS
5
Retry attempts
BASE_BACKOFF
0.5s
Initial retry delay
REFRESH_EVERY
25,000
Count-based token refresh interval
Authentication Features
FaRDaP access tokens have a short lifetime (~20 minutes per spec). The platform uses the dedicated refresh-token endpoint to keep sessions alive without re-sending credentials.
Feature
Implementation
Token Expiry Tracking
Captures expiresIn from API; conservative 600s default if absent
Refresh-Token Flow
Calls /api/v1/auth/access-token-refresh with stored refreshToken
Proactive Refresh
Refreshes when < 2 minutes remaining (suited to ~20-minute tokens)
Count-Based Refresh
Refreshes every 25,000 documents (belt-and-suspenders)
User-Agent Header
Fabric/FaRDaP-Analytical-Platform/FRS-{FRS_ID} on all API requests
Thread-Safe Updates
Token updates protected by lock for parallel processing
Fallback to Re-auth
If refresh fails, transparently re-authenticates via /auth/init
Security
All FaRDaP API calls use HTTPS with certificate verification enabled (no verify=False). If your environment uses a private/self-signed CA, set REQUESTS_CA_BUNDLE to the CA bundle path on the Spark workers rather than disabling verification.
Troubleshooting
Common Issues
Issue
Cause
Solution
Authentication Failed (401)
Invalid credentials
Check Key Vault secrets
Token Expired Mid-Process
Long-running job
Should auto-refresh; check logs for "Token expiring soon"