{"openapi":"3.0.0","info":{"title":"Cernion Energy Tools API","version":"0.99.19","description":"MicroService Agent System for Energy Markets - REST API with AI integration.\n\nCERNION_TOKEN: request at https://cernion.de/ or by email: dev@stromdao.com.\n\nFor the public instance at https://api.cernion.de/, create your token at https://cernion.de/cet-token/."},"servers":[{"url":"https://api.cernion.de","description":"API Server"}],"paths":{"/api/agent-manifest/capabilities":{"get":{"summary":"List capability-broker catalog entries","tags":["Agent Manifest"],"operationId":"agent_manifest_listCapabilities","parameters":[{"name":"domain","in":"query","required":false,"schema":{"type":"string","example":"redispatch"},"description":"Filter by canonical manifest domain (see llm.txt RESOLUTION PROTOCOL)."},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"Resolves capability ids referenced in the llm.txt cluster manifest to their full routing metadata."}},"/api/agent-manifest/capabilities/:name":{"get":{"summary":"Get a single capability-broker catalog entry","tags":["Agent Manifest"],"operationId":"agent_manifest_getCapability","parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string","example":"redispatch_asset_register"},"description":"Capability id (CURATED_CAPABILITIES[].capability)."},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"Returns one capability by id including preferredActions, requiredInputs, and risksAndNotes."}},"/api/agent-manifest/operations":{"get":{"summary":"List deduplicated OpenAPI operations, optionally filtered by manifest domain","tags":["Agent Manifest"],"operationId":"agent_manifest_listOperations","parameters":[{"name":"domain","in":"query","required":false,"schema":{"type":"string","example":"redispatch"},"description":"Canonical manifest domain (see llm.txt RESOLUTION PROTOCOL). Omit to list all domains."},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"Resolves a domain cluster from the llm.txt manifest to its operation slice. Operations sharing an operationId across multiple paths are merged into one canonical entry with an aliases list."}},"/api/agent-sidecar/tools":{"get":{"summary":"List curated OpenClaw-safe Cernion Sidecar tools","tags":["Agent Sidecar"],"operationId":"agent_sidecar_listTools","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/agent-sidecar/tools/:name/call":{"post":{"summary":"Call one curated Cernion Sidecar tool through the server-side policy gate","tags":["Agent Sidecar"],"operationId":"agent_sidecar_callTool","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"input":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}}},"/api/agent-sidecar/descriptor":{"get":{"summary":"Describe the Cernion provider as a generic Energy Sidecar descriptor","tags":["Agent Sidecar"],"operationId":"agent_sidecar_descriptor","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/agent-sidecar/mcp/tools":{"get":{"summary":"List Cernion Sidecar tools in an MCP-like host descriptor","tags":["Agent Sidecar"],"operationId":"agent_sidecar_mcpListTools","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/agent-sidecar/mcp/tools/:name/call":{"post":{"summary":"Call a Cernion Sidecar tool through the MCP-like bridge","tags":["Agent Sidecar"],"operationId":"agent_sidecar_mcpCallTool","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"arguments":{"type":"string"},"input":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}}},"/api/agent/analyze":{"post":{"summary":"Analyze a natural-language energy problem and return an execution plan","tags":["AI Agent"],"operationId":"agent_analyze","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Execution plan with required user parameters","content":{"application/json":{"schema":{"type":"object","properties":{"sessionId":{"type":"string"},"summary":{"type":"string"},"steps":{"type":"array","items":{"type":"object","properties":{"step":{"type":"number"},"service":{"type":"string"},"action":{"type":"string"},"description":{"type":"string"},"params":{"type":"object"}}}},"requiredInputs":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"label":{"type":"string"},"type":{"type":"string"},"description":{"type":"string"},"example":{"type":"string"},"required":{"type":"boolean"}}}}}}}}}},"description":"Uses Gemini to reason about the user problem and select which microservices to call, in which order, and which parameters are needed from the user.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["problem"],"properties":{"problem":{"type":"string","description":"Free-text energy research problem or question","example":"What is the current gas storage level in Germany and is it sufficient for winter?"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"storageSufficiency":{"summary":"Analyze a storage sufficiency question","value":{"problem":"What is the current gas storage level in Germany and is it sufficient for winter?"}}}}}}}},"/api/agent/execute":{"post":{"summary":"Execute the planned steps with user-provided parameter values","tags":["AI Agent"],"operationId":"agent_execute","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Execution results or re-plan if refinement provided"}},"description":"Runs the execution plan produced by /agent/analyze, substituting user inputs into step params and calling each microservice in sequence. Optionally accepts a free-text refinement which triggers a re-plan.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["sessionId"],"properties":{"sessionId":{"type":"string","description":"Session ID returned by /agent/analyze","example":"2a70e478-90ce-4fa5-b996-6f98efdba7cf"},"userInputs":{"type":"object","description":"Key-value map of required input values","example":{"country":"de","date":"2026-02-01"}},"refinement":{"type":"string","description":"Optional free-text refinement or follow-up question","example":"Focus on Bavaria and include the next 7 days"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"executePlan":{"summary":"Execute an analyzed plan","value":{"sessionId":"2a70e478-90ce-4fa5-b996-6f98efdba7cf","userInputs":{"country":"de","date":"2026-02-01"}}}}}}}}},"/api/agent/session/:id":{"get":{"summary":"Retrieve a persisted agent session by ID","tags":["AI Agent"],"operationId":"agent_getSession","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","example":"2a70e478-90ce-4fa5-b996-6f98efdba7cf"},"description":"Session UUID returned by /agent/analyze"},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"Load a previously executed session so the user can revisit results or re-run."}},"/api/agent/session/:id/csv":{"get":{"summary":"Re-run the session plan and export results as CSV","tags":["AI Agent"],"operationId":"agent_csvExport","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","example":"2a70e478-90ce-4fa5-b996-6f98efdba7cf"},"description":"Session UUID"},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"CSV file","content":{"text/csv":{"schema":{"type":"string"}}}}},"description":"Re-executes the full plan with the saved user inputs, injects format=csv into the last data step, and returns a fresh CSV file. The data is always fetched live from the source."}},"/api/agent/rerun":{"post":{"summary":"Re-run a completed session with the same plan and inputs","tags":["AI Agent"],"operationId":"agent_rerun","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"Useful for the shareable-URL feature: load a session and re-execute it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["sessionId"],"properties":{"sessionId":{"type":"string","example":"2a70e478-90ce-4fa5-b996-6f98efdba7cf"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"rerunSession":{"summary":"Re-run a previous session","value":{"sessionId":"2a70e478-90ce-4fa5-b996-6f98efdba7cf"}}}}}}}},"/api/backup-orchestrator/snapshot":{"post":{"summary":"Create a full backup snapshot (all data stores)","tags":["Backup & Restore"],"operationId":"backup_orchestrator_snapshot","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Snapshot created with provenance hash","content":{"application/json":{"example":{"success":true,"snapshotId":"snap-abc123","label":"pre-cutover-hoeheinoed","provenanceHash":"sha256:...","createdAt":"2026-06-30T12:00:00.000Z","summary":{"energySharingDocs":42,"allocationDocs":12,"datapointDocs":5,"jobFiles":8,"tokensFile":true}}}}}},"description":"Creates a full-state snapshot of energy-sharing, allocation, datapoints, jobs, and token data. Returns a snapshotId with provenance hash for audit trail (EU AI Act Art. 12). Sub-Track G v0.47.0 — Rollback-Plan mit Full-Restore-Orchestrierung.","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"label":{"type":"string","description":"Human-readable label for this snapshot","example":"pre-cutover-hoeheinoed-2026-06-30"},"tenantId":{"type":"string","description":"Optional: scope snapshot to a specific tenant (exports only tenant docs)","example":"hoeheinoed"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"summary":"Pre-cutover snapshot","value":{"label":"pre-cutover-hoeheinoed-2026-06-30","tenantId":"hoeheinoed"}}}}}}}},"/api/backup-orchestrator/restore":{"post":{"summary":"Restore all data stores from a backup snapshot","tags":["Backup & Restore"],"operationId":"backup_orchestrator_restore","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Restore completed with counts of restored/skipped docs"},"400":{"description":"confirm=false or snapshot not found"}},"description":"Restores energy-sharing, allocation, datapoints, jobs, and token data from a snapshot. DESTRUCTIVE — requires confirm=true. Missing docs are restored; existing docs are skipped (additive). Sub-Track G v0.47.0 — Rollback-Plan mit Full-Restore-Orchestrierung.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["snapshotId"],"properties":{"snapshotId":{"type":"string","example":"snap-abc123"},"confirm":{"type":"boolean","default":false,"description":"Must be true to execute restore (safety gate)"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"summary":"Restore from snapshot with confirmation","value":{"snapshotId":"snap-abc123","confirm":true}}}}}}}},"/api/backup-orchestrator/snapshots":{"get":{"summary":"List available backup snapshots","tags":["Backup & Restore"],"operationId":"backup_orchestrator_list","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"List of snapshot manifests","content":{"application/json":{"example":{"success":true,"snapshots":[{"snapshotId":"snap-abc123","label":"pre-cutover","createdAt":"2026-06-30T12:00:00.000Z","provenanceHash":"sha256:..."}],"count":1}}}}}}},"/api/backup-orchestrator/snapshots/:snapshotId":{"get":{"summary":"Get backup snapshot manifest by ID","tags":["Backup & Restore"],"operationId":"backup_orchestrator_get","parameters":[{"name":"snapshotId","in":"path","required":true,"schema":{"type":"string","example":"snap-abc123"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Snapshot manifest"},"404":{"description":"Snapshot not found"}}},"delete":{"summary":"Delete a backup snapshot","tags":["Backup & Restore"],"operationId":"backup_orchestrator_delete","parameters":[{"name":"snapshotId","in":"path","required":true,"schema":{"type":"string","example":"snap-abc123"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Snapshot deleted"},"404":{"description":"Snapshot not found"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}}}}}}},"/api/business-intelligence/sales-leads":{"post":{"summary":"Identify sales leads from MaStR (new PV/wallbox/heatpump/storage installations)","tags":["Business Intelligence"],"operationId":"business_intelligence_salesLeads","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"Identify high-quality B2C sales leads from new installations in MaStR registry. **Lead scoring system (0-100 points)**:\n\n**Scoring Components**:\n- **Commissioning date (40 points)**: Newer installations score higher - optimal contact window is 1-90 days after commissioning\n- **Installation size (30 points)**: Prosumer sweet spot (5-15 kWp for solar) - indicates purchasing power and potential for additional products\n- **Location (20 points)**: High-income areas, favorable demographics, low competition\n- **Type (10 points)**: Solar + storage combo = premium lead (higher ARPU potential)\n\n**Customer Segments**:\n- **Residential Solar** (5-10 kWp): ARPU 600€, LTV 3k€ - Offer prosumer tariffs, storage retrofit\n- **Prosumer Solar** (10-30 kWp): ARPU 1,450€, LTV 10k€ - **HIGH PRIORITY!** Premium tariffs, storage, wallbox\n- **Storage Systems**: Cross-sell EV tariff, dynamic tariff, wallbox\n- **Wallbox Owners**: Cross-sell dynamic tariff, solar retrofit\n- **Heat Pumps**: Offer time-of-use tariff, optimization service\n\n**Use Cases**:\n- B2C customer acquisition campaigns\n- Prosumer tariff marketing (highest ARPU segment)\n- Storage retrofit campaigns (upsell to existing solar customers)\n- Cross-sell opportunities (wallbox → dynamic tariff, solar → storage)\n- Territory planning for sales teams\n\n**Best Practices**:\n- Contact window: 30-90 days after commissioning (sweet spot for engagement)\n- Focus on prosumer segment (10-30 kWp) for maximum ROI\n- Batch campaigns by postal code for efficient field sales\n- Score threshold ≥70 for high-quality leads (30-40% conversion rate)\n- Score threshold ≥80 for premium leads (50%+ conversion rate)","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["region","installationType"],"properties":{"region":{"type":"string","description":"Region/city/postal code to search","example":"Bayern"},"installationType":{"type":"string","enum":["solar","storage","wallbox","heatpump"],"description":"Type of installation to find leads for","example":"solar"},"daysBack":{"type":"number","description":"How many days back to search for new installations","minimum":1,"maximum":365,"default":30},"limit":{"type":"number","description":"Maximum number of leads to return","minimum":1,"maximum":100,"default":10},"minScore":{"type":"number","description":"Minimum lead score (0-100)","minimum":0,"maximum":100,"default":60},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"recentSolarBavaria":{"summary":"Recent solar installations in Bavaria","value":{"region":"Bayern","installationType":"solar","daysBack":30,"limit":20,"minScore":70}},"storageLeadsMunich":{"summary":"Storage system leads in Munich area","value":{"region":"80331","installationType":"storage","daysBack":60,"limit":10,"minScore":60}},"heatPumpLeads":{"summary":"Heat pump installations (last 90 days)","value":{"region":"Baden-Württemberg","installationType":"heatpump","daysBack":90,"limit":50}}}}}}}},"/api/business-intelligence/dynamic-tariff-calculator":{"post":{"summary":"Calculate dynamic electricity tariffs based on market prices or CO₂ intensity","tags":["Business Intelligence"],"operationId":"business_intelligence_dynamicTariffCalculator","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"Dynamic tariff product design and customer savings calculation","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["region","tariffType","calculationPeriod"],"properties":{"region":{"type":"string","description":"Region for tariff calculation","example":"Germany"},"tariffType":{"type":"string","enum":["dynamic-spot","co2-optimized","time-of-use"],"description":"Type of dynamic tariff to calculate","example":"dynamic-spot"},"calculationPeriod":{"type":"string","description":"Period for calculation (e.g., \"2026-02\", \"Q1-2026\", \"2026-02-01 to 2026-02-28\")","example":"2026-02"},"customerProfile":{"type":"object","properties":{"annualConsumption":{"type":"number","description":"Annual consumption in kWh","example":3500},"flexibleLoad":{"type":"boolean","description":"Whether customer can shift load","default":false}},"example":{"annualConsumption":3500,"flexibleLoad":true}},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"spotPriceTariff":{"summary":"Dynamic spot price tariff","value":{"region":"Germany","tariffType":"dynamic-spot","calculationPeriod":"2026-02","customerProfile":{"annualConsumption":3500,"flexibleLoad":true}}},"co2Optimized":{"summary":"CO₂-optimized tariff","value":{"region":"Germany","tariffType":"co2-optimized","calculationPeriod":"Q1-2026","customerProfile":{"annualConsumption":5000,"flexibleLoad":false}}},"timeOfUse":{"summary":"Time-of-use tariff","value":{"region":"Bayern","tariffType":"time-of-use","calculationPeriod":"2026-02-01 to 2026-02-28"}}}}}}}},"/api/business-intelligence/churn-prediction":{"post":{"summary":"Predict customer churn risk for energy suppliers","tags":["Business Intelligence"],"operationId":"business_intelligence_churnPrediction","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"Predict and prevent customer churn with ML-powered risk scoring. **Churn scoring system (0-100 points)**:\n\n**Scoring Components**:\n- **Contract status (30 points)**: <3 months to contract end = **CRITICAL** (30 points)\n- **Price sensitivity (25 points)**: Price complaints, >10% above market, recent price increase, competitor comparison\n- **Service quality (20 points)**: >5 support contacts, unresolved tickets, NPS Detractor (<6), negative feedback\n- **Payment behavior (15 points)**: >2 late payments, payment method changes, manual vs. automatic payment\n- **Usage pattern (10 points)**: Consumption declining >20%, no app usage (3+ months), no login activity\n\n**Customer Segments & Business Value**:\n- **Residential**: ARPU 600€, LTV 3k€, churn 10-12%, retention budget max 600€\n- **Prosumer**: ARPU 1,450€, LTV 10k€, churn 5-8%, budget 2,000€ (**HIGH PRIORITY! Must protect**)\n- **Commercial**: ARPU 10k€, LTV 50k€, churn 3-5%, budget unlimited (**MUST WIN! Strategic accounts**)\n- **Premium**: ARPU >5k€, LTV >25k€, churn <3%, no budget limit (**VIP treatment required**)\n\n**Retention Strategies by Risk Level**:\n- **HIGH RISK (80-100)**: Immediate personal call + retention offer (max 200€ for residential, 2k€ for prosumer)\n- **MEDIUM RISK (60-80)**: Automated email campaign + targeted incentive (max 100€ for residential)\n- **LOW RISK (40-60)**: Proactive engagement (loyalty program, app activation, community features)\n\n**Use Cases**:\n- **Retention campaigns**: Target high-risk customers before contract ends\n- **Customer lifetime value protection**: Focus on prosumer and commercial segments\n- **Segmented marketing**: Different strategies for different risk/value segments\n- **Service quality improvement**: Identify systemic issues causing churn\n- **Budget optimization**: Allocate retention budget to highest ROI segments\n\n**ROI Metrics**:\n- Typical retention cost: 150-2,000€ depending on segment\n- Expected retention success rate: 40-60% with proactive intervention\n- Prosumer segment ROI: 19.3x (1,500€ cost saves 29k€ revenue)\n- Commercial segment ROI: 33x+ (unlimited ROI for strategic accounts)\n\n**Critical Success Factors**:\n- **Act early**: 3-6 months before contract end (not 1 month!)\n- **Segment ruthlessly**: Prosumer/Commercial = high touch, Residential = automated\n- **Personalize approach**: Different reason = different retention strategy\n- **Measure religiously**: Track retention rate by segment, reason, intervention type","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["customerSegment","region"],"properties":{"customerSegment":{"type":"string","enum":["residential","prosumer","commercial","premium","all"],"description":"Customer segment to analyze","example":"prosumer"},"region":{"type":"string","description":"Region/postal code","example":"Bayern"},"riskThreshold":{"type":"string","enum":["high","medium","low"],"description":"Minimum risk level to include","default":"medium"},"limit":{"type":"number","minimum":1,"maximum":500,"default":100},"predictionWindowMonths":{"type":"number","description":"Prediction timeframe in months","minimum":1,"maximum":12,"default":3},"includeRetentionStrategy":{"type":"boolean","default":true},"includeValueSegmentation":{"type":"boolean","default":true},"includeChurnReasons":{"type":"boolean","default":true},"includeCompetitiveAnalysis":{"type":"boolean","default":true},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"prosumerHighRisk":{"summary":"High-risk prosumers (3-month forecast)","value":{"customerSegment":"prosumer","region":"Bayern","riskThreshold":"high","limit":50,"predictionWindowMonths":3,"includeRetentionStrategy":true,"includeValueSegmentation":true}},"residentialAll":{"summary":"All residential customers (6-month forecast)","value":{"customerSegment":"residential","region":"80331","riskThreshold":"medium","limit":100,"predictionWindowMonths":6,"includeChurnReasons":true,"includeCompetitiveAnalysis":true}},"premiumSegment":{"summary":"Premium customers at risk","value":{"customerSegment":"premium","region":"Baden-Württemberg","riskThreshold":"low","limit":200}}}}}}}},"/api/business-intelligence/market-penetration":{"post":{"summary":"Analyze market penetration rates for energy suppliers in specific regions","tags":["Business Intelligence"],"operationId":"business_intelligence_marketPenetration","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"Identify growth opportunities, untapped segments, and competitive positioning","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["region"],"properties":{"region":{"type":"string","description":"Region to analyze (city, state, postal codes)","example":"München"},"currentCustomers":{"type":"number","description":"Current number of customers in the region","minimum":0,"example":15000},"installationType":{"type":"string","enum":["solar","wind","storage","wallbox","heat-pump","all"],"description":"Installation type to analyze","default":"all"},"postalCodes":{"type":"array","items":{"type":"string"},"description":"Specific postal codes to include","example":["80331","80333","80335"]},"includeSegmentation":{"type":"boolean","default":true},"includeWhiteSpots":{"type":"boolean","description":"Identify untapped market areas","default":true},"includeTrendAnalysis":{"type":"boolean","default":true},"includeCompetitorAnalysis":{"type":"boolean","default":true},"includeRecommendations":{"type":"boolean","default":true},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"municCityAnalysis":{"summary":"Munich city market penetration","value":{"region":"München","currentCustomers":15000,"installationType":"all","includeSegmentation":true,"includeWhiteSpots":true,"includeTrendAnalysis":true}},"solarSpecific":{"summary":"Solar market in Bavaria","value":{"region":"Bayern","currentCustomers":50000,"installationType":"solar","includeCompetitorAnalysis":true,"includeRecommendations":true}},"postalCodeAnalysis":{"summary":"Specific postal codes analysis","value":{"region":"München","postalCodes":["80331","80333","80335","80337"],"installationType":"storage","includeWhiteSpots":true}}}}}}}},"/api/chatgpt-sidecar/sessions":{"post":{"summary":"Create a ChatGPT Sidecar session ticket with scoped capabilities","tags":["ChatGPT Sidecar"],"operationId":"chatgpt_sidecar_createSession","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"Requires an authenticated Cernion tenant/user with the chatgpt-sidecar-creator role. Returns an opaque ticket URL and backend-generated prompt text; the response never echoes the session id/prompt back through the ticket endpoints.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"ttl":{"type":"string"},"capabilityProfile":{"type":"string"},"writeScope":{"type":"string"},"origin":{"type":"string"},"metadata":{"type":"string"},"baseUrl":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}}},"/api/chatgpt-sidecar/sessions/:sessionId":{"delete":{"summary":"Revoke a ChatGPT Sidecar session (authenticated Cernion side only)","tags":["ChatGPT Sidecar"],"operationId":"chatgpt_sidecar_revokeSession","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"sessionId":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}}},"/api/chatgpt-sidecar/s/:ticket/manifest":{"get":{"summary":"Read the session-scoped capability manifest (allowlist only)","tags":["ChatGPT Sidecar"],"operationId":"chatgpt_sidecar_manifest","parameters":[{"name":"ticket","in":"path","required":true,"schema":{"type":"string","example":"opaque-ticket"},"description":"Opaque ChatGPT Sidecar session ticket."},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/chatgpt-sidecar/s/:ticket/action-openapi.json":{"get":{"summary":"Read the session-scoped Custom GPT Action OpenAPI schema","tags":["ChatGPT Sidecar"],"operationId":"chatgpt_sidecar_actionOpenApi","parameters":[{"name":"ticket","in":"path","required":true,"schema":{"type":"string","example":"opaque-ticket"},"description":"Opaque ChatGPT Sidecar session ticket."},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"Returns a minimal ticket-scoped OpenAPI schema for Custom GPT Actions. The schema intentionally exposes only read-only ask/plan operations."}},"/api/chatgpt-sidecar/s/:ticket/ask":{"post":{"summary":"Ask Cernion through the session-scoped evidence/capability facade","tags":["ChatGPT Sidecar"],"operationId":"chatgpt_sidecar_ask","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"ticket":{"type":"string"},"question":{"type":"string"},"query":{"type":"string"},"context":{"type":"string"},"inputs":{"type":"string"},"capability":{"type":"string"},"parentTurnId":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}},"get":{"summary":"Ask Cernion through a browser-compatible read-only GET facade","tags":["ChatGPT Sidecar"],"operationId":"chatgpt_sidecar_browserAsk","parameters":[{"name":"ticket","in":"path","required":true,"schema":{"type":"string","example":"opaque-ticket"},"description":"Opaque ChatGPT Sidecar session ticket."},{"name":"question","in":"query","required":false,"schema":{"type":"string"}},{"name":"query","in":"query","required":false,"schema":{"type":"string"}},{"name":"q","in":"query","required":false,"schema":{"type":"string"}},{"name":"context","in":"query","required":false,"schema":{}},{"name":"inputs","in":"query","required":false,"schema":{}},{"name":"capability","in":"query","required":false,"schema":{"type":"string"}},{"name":"parentTurnId","in":"query","required":false,"schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"For prompt-only ChatGPT.com usage where only URL reads are available. This facade is read-only and delegates to the same session policy as POST ask."}},"/api/chatgpt-sidecar/s/:ticket/plan":{"post":{"summary":"Resolve a request to a Blueprint/Capability Broker route (no execution)","tags":["ChatGPT Sidecar"],"operationId":"chatgpt_sidecar_plan","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"ticket":{"type":"string"},"task":{"type":"string"},"context":{"type":"string"},"capability":{"type":"string"},"parentTurnId":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}},"get":{"summary":"Resolve a request through a browser-compatible read-only GET facade","tags":["ChatGPT Sidecar"],"operationId":"chatgpt_sidecar_browserPlan","parameters":[{"name":"ticket","in":"path","required":true,"schema":{"type":"string","example":"opaque-ticket"},"description":"Opaque ChatGPT Sidecar session ticket."},{"name":"task","in":"query","required":false,"schema":{"type":"string"}},{"name":"q","in":"query","required":false,"schema":{"type":"string"}},{"name":"context","in":"query","required":false,"schema":{}},{"name":"capability","in":"query","required":false,"schema":{"type":"string"}},{"name":"parentTurnId","in":"query","required":false,"schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"For prompt-only ChatGPT.com usage where only URL reads are available. This facade is read-only and delegates to the same session policy as POST plan."}},"/api/chatgpt-sidecar/s/:ticket/datapoints":{"post":{"summary":"Create a draft datapoint through the session (draft_write only)","tags":["ChatGPT Sidecar"],"operationId":"chatgpt_sidecar_datapoints","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"Only draft_write mutates in this slice. controlled_write, process_execute and requires_confirmation return a policy decision without creating anything.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"ticket":{"type":"string"},"capability":{"type":"string"},"writeClass":{"type":"string"},"value":{"type":"string"},"description":{"type":"string"},"message":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}}},"/api/chatgpt-sidecar/s/:ticket/metering":{"get":{"summary":"Read a redacted metering summary for the session","tags":["ChatGPT Sidecar"],"operationId":"chatgpt_sidecar_metering","parameters":[{"name":"ticket","in":"path","required":true,"schema":{"type":"string"},"description":"Opaque ChatGPT Sidecar session ticket."},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/community/consult":{"post":{"summary":"Consult the Corrently Community advisor on B2C/prosumer matters","tags":["Community"],"operationId":"community_consult","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"Primary entrypoint for consumer-oriented queries regarding PV, balcony solar, dynamic tariffs, and §14a EnWG.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"},"sessionId":{"type":"string"},"tenantId":{"type":"string"},"audience":{"type":"string"},"consentMetadata":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}}},"/api/copilot-process/vdmi/:matrixId/context":{"get":{"summary":"Load VDMI matrix context (read-only)","tags":["Copilot Process"],"operationId":"getVdmiContext","parameters":[{"name":"matrixId","in":"path","required":true,"description":"VDMI matrix instance ID","schema":{"type":"string","example":"vdmi-abc123"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"VDMI matrix context","content":{"application/json":{"schema":{"type":"object","required":["matrixId","name","status","openTaskCount","summary"],"properties":{"matrixId":{"type":"string"},"name":{"type":"string"},"status":{"type":"string","example":"active"},"processType":{"type":"string","nullable":true},"nominationStatus":{"type":"string","nullable":true},"openTaskCount":{"type":"integer","example":2},"totalTaskCount":{"type":"integer","example":5},"evidenceCount":{"type":"integer","example":1},"findingCount":{"type":"integer","example":0},"scope":{"type":"string","nullable":true},"regulatoryBasis":{"type":"array","items":{"type":"string"}},"createdAt":{"type":"string","nullable":true},"summary":{"type":"string","description":"Human-readable status summary"},"detailUrl":{"type":"string","example":"/api/vdmi/vdmi-abc123"}}}}}},"404":{"description":"Matrix not found"}},"description":"Returns full VDMI matrix context for Copilot: status, open tasks, nomination state, evidence count, and regulatory basis.\n\n**When to use**: Before proposing any VDMI process action, load context to understand current state.\n**Read-only**: No state is changed."}},"/api/copilot-process/vdmi/responsibilities":{"get":{"summary":"List open VDMI responsibilities (read-only)","tags":["Copilot Process"],"operationId":"listOpenResponsibilities","parameters":[{"name":"userId","in":"query","required":false,"description":"Actor ID to filter responsibilities for (defaults to authenticated caller)","schema":{"type":"string","example":"grid_operator"}},{"name":"processType","in":"query","required":false,"description":"Filter by process type","schema":{"type":"string","example":"adhoc"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":50,"default":20}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Open responsibilities","content":{"application/json":{"schema":{"type":"object","required":["count","responsibilities"],"properties":{"count":{"type":"integer"},"responsibilities":{"type":"array","items":{"type":"object","properties":{"matrixId":{"type":"string"},"name":{"type":"string"},"status":{"type":"string"},"openTaskCount":{"type":"integer"},"nominationStatus":{"type":"string","nullable":true},"detailUrl":{"type":"string"}}}}}}}}}},"description":"Returns VDMI matrices where the specified user (or authenticated caller) holds open Verantwortlich tasks.\n\nIf `userId` is not supplied, falls back to listing all active matrices with at least one open task.\n**Read-only**: No state is changed."}},"/api/copilot-process/znp/:projectId/status":{"get":{"summary":"Get ZNP project status and graph statistics (read-only)","tags":["Copilot Process"],"operationId":"getZnpProjectStatus","parameters":[{"name":"projectId","in":"path","required":true,"description":"ZNP project UUID","schema":{"type":"string","example":"a1b2c3d4-0000-0000-0000-000000000001"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"ZNP project status","content":{"application/json":{"schema":{"type":"object","required":["projectId","name","layers","graphStats"],"properties":{"projectId":{"type":"string"},"name":{"type":"string"},"layers":{"type":"array","items":{"type":"string"}},"graphStats":{"type":"object","properties":{"nodes":{"type":"integer"},"edges":{"type":"integer"}}},"createdAt":{"type":"string","nullable":true},"summary":{"type":"string"},"detailUrl":{"type":"string"}}}}}},"404":{"description":"Project not found"}},"description":"Returns ZNP project metadata: name, loaded layers, node/edge counts, bounding box, and creation timestamp.\n\n**Read-only**: No state is changed."}},"/api/copilot-process/grid-connection/:validationId":{"get":{"summary":"Get grid connection validation report (read-only)","tags":["Copilot Process"],"operationId":"getGridConnectionValidation","parameters":[{"name":"validationId","in":"path","required":true,"description":"Validation report UUID","schema":{"type":"string","example":"a1b2c3d4-1234-5678-90ab-cdef12345678"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Validation report summary","content":{"application/json":{"schema":{"type":"object","required":["validationId","decision","gridOperatorName","summary"],"properties":{"validationId":{"type":"string"},"decision":{"type":"string","nullable":true},"gridOperatorName":{"type":"string"},"gridOperatorId":{"type":"string","nullable":true},"findingsCount":{"type":"integer"},"createdAt":{"type":"string","nullable":true},"summary":{"type":"string"},"detailUrl":{"type":"string"}}}}}},"404":{"description":"Validation not found"}},"description":"Returns a specific grid connection validation report including decision, findings, and grid operator details.\n\n**Read-only**: No state is changed."}},"/api/copilot-process/vdmi/:matrixId/prepare-validation":{"post":{"summary":"Prepare VDMI matrix nomination — draft only, no write","tags":["Copilot Process"],"operationId":"prepareVdmiValidation","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Draft nomination proposal","content":{"application/json":{"schema":{"type":"object","required":["draftId","action","target","summary","requiredConfirmation","auditTrail"],"properties":{"draftId":{"type":"string","description":"Unique ID of this draft"},"action":{"type":"string","example":"nominate_vdmi_matrix"},"target":{"type":"object","properties":{"matrixId":{"type":"string"},"matrixName":{"type":"string"},"currentStatus":{"type":"string"}}},"proposedChange":{"type":"object","properties":{"from":{"type":"string"},"to":{"type":"string"},"nominationStatus":{"type":"string"}}},"warningIfAny":{"type":"string","nullable":true},"summary":{"type":"string"},"confirmationMessage":{"type":"string"},"requiredConfirmation":{"type":"boolean","example":true},"readyToExecute":{"type":"boolean"},"consequentialAction":{"type":"object","description":"The Phase 3 execute action that would perform this change","properties":{"operationId":{"type":"string","example":"executeVdmiNomination"},"note":{"type":"string"}}},"auditTrail":{"type":"object","properties":{"requestedAt":{"type":"string"},"requestedBy":{"type":"string"},"correlationId":{"type":"string"},"idempotencyKey":{"type":"string","nullable":true}}}}}}}},"404":{"description":"Matrix not found"},"422":{"description":"Matrix status does not allow nomination"}},"description":"Analyses the VDMI matrix and returns a draft nomination proposal.\n**No writes**: This action creates no persisted state. The returned draft must be explicitly confirmed by a consequential execute action (Phase 3).\n\nSet `requiredConfirmation: true` in the response means Copilot must ask the user to confirm before proceeding.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["matrixId","reason"],"properties":{"matrixId":{"type":"string","description":"VDMI matrix ID","example":"vdmi-abc123"},"reason":{"type":"string","description":"Business reason for the nomination","example":"Netzanschluss fristgerecht abgeschlossen","minLength":1,"maxLength":500},"correlationId":{"type":"string","description":"Caller-supplied trace ID for audit logging","example":"req-2026-001"},"idempotencyKey":{"type":"string","description":"Prevents duplicate submissions on retries","example":"idem-abc123-20260611"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}}}}}}},"/api/copilot-process/vdmi/:matrixId/draft-evidence":{"post":{"summary":"Draft evidence suggestions for VDMI matrix tasks — no write","tags":["Copilot Process"],"operationId":"draftVdmiEvidence","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Evidence draft with per-task suggestions","content":{"application/json":{"schema":{"type":"object","required":["draftId","action","target","evidenceSuggestions","summary","auditTrail"],"properties":{"draftId":{"type":"string"},"action":{"type":"string","example":"draft_evidence_for_vdmi"},"target":{"type":"object","properties":{"matrixId":{"type":"string"},"matrixName":{"type":"string"}}},"evidenceSuggestions":{"type":"array","items":{"type":"object","properties":{"taskIndex":{"type":"integer"},"taskLabel":{"type":"string"},"suggestedEvidenceType":{"type":"string"},"suggestion":{"type":"string"}}}},"openTaskCount":{"type":"integer"},"summary":{"type":"string"},"requiredConfirmation":{"type":"boolean","example":false},"auditTrail":{"type":"object"}}}}}},"404":{"description":"Matrix not found"}},"description":"Analyses open VDMI tasks and returns structured evidence suggestions for each.\n**No writes**: This returns suggestions only. No evidence is added to the matrix.\nUse `POST /api/vdmi/:id/evidence` (Phase 3) to actually inject evidence.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["matrixId"],"properties":{"matrixId":{"type":"string","example":"vdmi-abc123"},"correlationId":{"type":"string","example":"req-2026-001"},"idempotencyKey":{"type":"string","example":"idem-abc123-20260611"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}}}}}}},"/api/copilot-process/grid-connection/prepare-validation":{"post":{"summary":"Prepare grid connection validation config — draft only, no write","tags":["Copilot Process"],"operationId":"prepareGridConnectionValidation","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Grid connection validation draft proposal","content":{"application/json":{"schema":{"type":"object","required":["draftId","action","target","proposedValidation","summary","requiredConfirmation","auditTrail"],"properties":{"draftId":{"type":"string"},"action":{"type":"string","example":"run_grid_connection_validation"},"target":{"type":"object","properties":{"gridOperatorId":{"type":"string","nullable":true},"gridOperatorBdew":{"type":"string","nullable":true},"gridOperatorName":{"type":"string","nullable":true}}},"proposedValidation":{"type":"object","description":"Parameters that would be passed to the consequential execute action"},"summary":{"type":"string"},"confirmationMessage":{"type":"string"},"requiredConfirmation":{"type":"boolean","example":true},"consequentialAction":{"type":"object"},"auditTrail":{"type":"object"}}}}}},"400":{"description":"No grid operator identifier supplied"}},"description":"Validates the input parameters and returns a draft validation configuration.\n**No writes**: This action has no side effects. The returned proposal must be confirmed before the actual 6-step pipeline is started.\nAt least one of `gridOperatorId`, `gridOperatorBdew`, or `gridOperatorName` is required.\n\nThe consequential execute action (`POST /api/grid-connection/validate`) is Phase 3.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["reason"],"properties":{"gridOperatorId":{"type":"string","example":"SNB935578300972"},"gridOperatorBdew":{"type":"string","example":"9907473000008"},"gridOperatorName":{"type":"string","example":"STROMDAO Netze"},"reason":{"type":"string","minLength":1,"maxLength":500,"example":"Jahresprüfung Q2 2026"},"includeCapacityCheck":{"type":"boolean","default":false},"correlationId":{"type":"string","example":"req-2026-001"},"idempotencyKey":{"type":"string","example":"idem-stromdao-20260611"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}}}}}}},"/api/copilot-process/vdmi/:matrixId/intents/evidence":{"post":{"summary":"Prepare VDMI evidence injection intent — no write","tags":["Copilot Process"],"operationId":"prepareVdmiEvidence","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"VDMI evidence intent created","content":{"application/json":{"schema":{"type":"object","required":["intentId","operationFamily","proposedAction","status","requiresHumanConfirmation"],"properties":{"intentId":{"type":"string"},"operationFamily":{"type":"string","example":"vdmi"},"proposedAction":{"type":"string","example":"inject_evidence"},"target":{"type":"object"},"inputSummary":{"type":"string"},"status":{"type":"string","example":"pending_confirmation"},"expiresAt":{"type":"string"},"risk":{"type":"string","example":"medium"},"requiresHumanConfirmation":{"type":"boolean","example":true},"summary":{"type":"string"},"confirmationMessage":{"type":"string"},"executeVia":{"type":"object"},"auditTrail":{"type":"object"}}}}}},"404":{"description":"Matrix not found"}},"description":"Verifies the VDMI matrix exists and creates a persistent ProcessExecutionIntent for evidence injection. No evidence is written.\nReturns intentId, expiresAt, and confirmationMessage. Execute via executeProcessIntent outside Copilot.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["matrixId","evidenceType","reference","reason"],"properties":{"matrixId":{"type":"string","example":"vdmi-abc123"},"evidenceType":{"type":"string","minLength":2,"example":"aktenvermerk"},"reference":{"type":"string","minLength":2,"example":"REF-2026-001"},"reason":{"type":"string","minLength":1,"maxLength":500,"example":"Jahresprüfung abgeschlossen"},"content":{"type":"object","description":"Optional additional content payload"},"correlationId":{"type":"string","example":"req-2026-001"},"idempotencyKey":{"type":"string","example":"idem-vdmi-20260611"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}}}}}}},"/api/copilot-process/vdmi/findings/:findingId/prepare-mitigation":{"post":{"summary":"Prepare VDMI finding mitigation intent — no write","tags":["Copilot Process"],"operationId":"prepareVdmiFindingMitigation","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"VDMI finding mitigation intent created"},"404":{"description":"Finding not found"}},"description":"Verifies the VDMI finding exists and creates a persistent ProcessExecutionIntent for submitting a mitigation plan. No finding is modified.\nReturns intentId, expiresAt, and confirmationMessage. Execute via executeProcessIntent outside Copilot.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["findingId","owner","dueAt","plan","reason"],"properties":{"findingId":{"type":"string","example":"finding-abc123"},"owner":{"type":"string","minLength":2,"example":"grid-lead"},"dueAt":{"type":"string","format":"date-time","example":"2026-12-31T00:00:00.000Z"},"plan":{"type":"string","minLength":3,"example":"Ablösung des Schattenpfads durch API-Integration"},"reason":{"type":"string","minLength":1,"maxLength":500,"example":"Mitigation nach Governance-Review"},"correlationId":{"type":"string","example":"req-2026-001"},"idempotencyKey":{"type":"string","example":"idem-finding-20260611"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}}}}}}},"/api/copilot-process/vdmi/findings/:findingId/prepare-resolution":{"post":{"summary":"Prepare VDMI finding resolution intent — no write","tags":["Copilot Process"],"operationId":"prepareVdmiFindingResolution","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"VDMI finding resolution intent created"},"404":{"description":"Finding not found"}},"description":"Verifies the VDMI finding exists and creates a persistent ProcessExecutionIntent for resolving it. No finding is modified.\nReturns intentId, expiresAt, and confirmationMessage. Execute via executeProcessIntent outside Copilot.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["findingId","resolutionReason","reason"],"properties":{"findingId":{"type":"string","example":"finding-abc123"},"resolutionReason":{"type":"string","minLength":3,"example":"Integration abgeschlossen"},"evidenceRef":{"type":"string","example":"ticket-123"},"reason":{"type":"string","minLength":1,"maxLength":500,"example":"Abschluss nach Governance-Review"},"correlationId":{"type":"string","example":"req-2026-001"},"idempotencyKey":{"type":"string","example":"idem-finding-20260611"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}}}}}}},"/api/copilot-process/znp/:projectId/intents/assumption":{"post":{"summary":"Prepare ZNP planning assumption intent — no write","tags":["Copilot Process"],"operationId":"prepareZnpAssumption","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"ZNP assumption intent created","content":{"application/json":{"schema":{"type":"object","required":["intentId","operationFamily","proposedAction","status","requiresHumanConfirmation"],"properties":{"intentId":{"type":"string"},"operationFamily":{"type":"string","example":"znp"},"proposedAction":{"type":"string","example":"add_assumption"},"target":{"type":"object"},"inputSummary":{"type":"string"},"status":{"type":"string","example":"pending_confirmation"},"expiresAt":{"type":"string"},"risk":{"type":"string","example":"medium"},"requiresHumanConfirmation":{"type":"boolean","example":true},"summary":{"type":"string"},"confirmationMessage":{"type":"string"},"executeVia":{"type":"object"},"auditTrail":{"type":"object"}}}}}},"404":{"description":"Project not found"}},"description":"Verifies the ZNP project exists and creates a persistent ProcessExecutionIntent for adding a planning assumption. No write occurs.\nReturns intentId, expiresAt, and confirmationMessage. Execute via executeProcessIntent outside Copilot.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["projectId","text","reason"],"properties":{"projectId":{"type":"string","example":"znp-proj-001"},"text":{"type":"string","minLength":10,"maxLength":2000,"example":"Annahme: Netzkapazität ausreichend für Q3 2026"},"reason":{"type":"string","minLength":1,"maxLength":500,"example":"Planungsstand Q2 2026"},"correlationId":{"type":"string","example":"req-2026-001"},"idempotencyKey":{"type":"string","example":"idem-znp-20260611"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}}}}}}},"/api/copilot-process/connection-rejection-evidence/intents":{"post":{"summary":"Prepare connection rejection evidence package intent — no write","tags":["Copilot Process"],"operationId":"prepareConnectionRejectionEvidence","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Connection rejection evidence intent created","content":{"application/json":{"schema":{"type":"object","required":["intentId","operationFamily","proposedAction","status","requiresHumanConfirmation"],"properties":{"intentId":{"type":"string"},"operationFamily":{"type":"string","example":"connectionRejectionEvidence"},"proposedAction":{"type":"string","example":"create_package"},"target":{"type":"object"},"inputSummary":{"type":"string"},"status":{"type":"string","example":"pending_confirmation"},"expiresAt":{"type":"string"},"risk":{"type":"string","example":"medium"},"requiresHumanConfirmation":{"type":"boolean","example":true},"summary":{"type":"string"},"confirmationMessage":{"type":"string"},"executeVia":{"type":"object"},"auditTrail":{"type":"object"}}}}}}},"description":"Validates all required fields and creates a persistent ProcessExecutionIntent for creating a connection rejection evidence package. No write occurs.\nReturns intentId, expiresAt, and confirmationMessage. Execute via executeProcessIntent outside Copilot.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["gridOperatorId","applicantReference","loadAssumptionKw","netzverknuepfungspunktId","voltageLevel","bottleneckDescription","n1QualityStatus","decision","reason"],"properties":{"gridOperatorId":{"type":"string","example":"SNB935578300972"},"applicantReference":{"type":"string","example":"APP-2026-001"},"loadAssumptionKw":{"type":"number","example":150},"netzverknuepfungspunktId":{"type":"string","example":"NVP-001"},"voltageLevel":{"type":"string","example":"NS"},"bottleneckDescription":{"type":"string","example":"Trafoüberlastung bei Spitzenlast"},"n1QualityStatus":{"type":"string","enum":["COMPLIANT","NON_COMPLIANT","CONDITIONALLY_COMPLIANT","UNKNOWN"]},"decision":{"type":"string","example":"REJECTED"},"reason":{"type":"string","minLength":1,"maxLength":500,"example":"Netzkapazität nicht ausreichend"},"correlationId":{"type":"string","example":"req-2026-001"},"idempotencyKey":{"type":"string","example":"idem-cre-20260611"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}}}}}}},"/api/copilot-process/intents":{"post":{"summary":"Generic Process Intake — creates a pending_confirmation intent, no write, no auto-execution","tags":["Copilot Process"],"operationId":"prepareProcessIntent","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Process intake intent created (pending human confirmation)"},"409":{"description":"Rejected: reserved operationFamily (use the dedicated prepare* action) or read-only proposedAction (use the Evidence Router instead)"}},"description":"Separate contract from the read-only Evidence Router (POST /api/evidence-router/route). Accepts a generic, domain-agnostic process/write intent and creates a ProcessExecutionIntent in pending_confirmation status. Establishes the intake/classification/HITL boundary only — the created intent's operationFamily has no case in executeProcessIntent's dispatch table (_executeIntent), so it can never be auto-executed until a developer deliberately adds a reviewed, specific case. Rejects domain-reserved operationFamily values (use the dedicated prepare* action instead, e.g. prepareVdmiEvidence) and rejects proposedAction values that resolve to a registered read-only action (use the Evidence Router instead).","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["operationFamily","proposedAction"],"properties":{"operationFamily":{"type":"string","minLength":1,"maxLength":64,"example":"customer_master_data_correction"},"proposedAction":{"type":"string","minLength":1,"maxLength":200,"example":"correct_metering_point_address"},"targetType":{"type":"string","example":"meteringPoint"},"targetId":{"type":"string","example":"MP-12345"},"inputSummary":{"type":"string","maxLength":500},"payload":{"type":"object","description":"Arbitrary structured or semi-structured process data supplied by the user."},"risk":{"type":"string","enum":["low","medium","high"],"default":"medium"},"reason":{"type":"string","maxLength":500},"correlationId":{"type":"string"},"decisionFrameId":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}}}}}},"get":{"summary":"List process execution intents","tags":["Copilot Process"],"operationId":"listProcessIntents","parameters":[{"name":"operationFamily","in":"query","required":false,"schema":{"type":"string"}},{"name":"status","in":"query","required":false,"schema":{"type":"string"}},{"name":"decisionFrameId","in":"query","required":false,"description":"Filter by SCQA decision frame ID","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":20,"minimum":1,"maximum":100}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"List of process execution intents","content":{"application/json":{"schema":{"type":"object","required":["count","intents"],"properties":{"count":{"type":"integer"},"intents":{"type":"array","items":{"type":"object"}}}}}}}},"description":"Returns a paginated list of process execution intents. Filter by operationFamily, status, or decisionFrameId. Read-only."}},"/api/copilot-process/intents/:intentId":{"get":{"summary":"Get a process execution intent by ID","tags":["Copilot Process"],"operationId":"getProcessIntent","parameters":[{"name":"intentId","in":"path","required":true,"description":"Intent UUID","schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Process execution intent","content":{"application/json":{"schema":{"type":"object"}}}},"404":{"description":"Intent not found"}},"description":"Returns intent status, payload summary, and audit trail. Read-only."}},"/api/copilot-process/intents/:intentId/execute":{"post":{"summary":"Execute a confirmed process intent (consequential)","tags":["Copilot Process"],"operationId":"executeProcessIntent","parameters":[{"name":"intentId","in":"path","required":true,"description":"Intent UUID to execute","schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Intent executed successfully","content":{"application/json":{"schema":{"type":"object"}}}},"404":{"description":"Intent not found"},"409":{"description":"Intent not in executable status"},"410":{"description":"Intent has expired"}},"description":"Executes a process intent that is in pending_confirmation status. This is a consequential write action.\nNOT available via Copilot. Copilot prepares intents; humans execute outside Copilot using this endpoint.","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"executedBy":{"type":"string","description":"Actor performing the execution"},"correlationId":{"type":"string","description":"Trace ID for audit"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}}}}}}},"/api/copilot-process/intents/:intentId/reject":{"post":{"summary":"Reject a process intent (human rejection)","tags":["Copilot Process"],"operationId":"rejectProcessIntent","parameters":[{"name":"intentId","in":"path","required":true,"description":"Intent UUID to reject","schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Intent rejected","content":{"application/json":{"schema":{"type":"object"}}}},"404":{"description":"Intent not found"},"409":{"description":"Intent not in rejectable status"}},"description":"Rejects a pending_confirmation intent. Must be performed by a human operator.\nNOT available via Copilot — not for autonomous agent use.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["reason"],"properties":{"reason":{"type":"string","minLength":1,"description":"Reason for rejection"},"rejectedBy":{"type":"string","description":"Actor performing the rejection"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}}}}}}},"/api/customer-service/portal-widget":{"post":{"summary":"Generate embeddable self-service widgets for customer portals (reduces call center load by 30-40%)","tags":["Customer Service"],"operationId":"customer_service_portalWidget","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"Generate embeddable self-service widgets that dramatically reduce call center load and improve customer satisfaction. **Business Impact: 30-40% reduction in support calls** = 450-600 min/month saved = **4,800-6,600 €/year savings** per 100 monthly support requests.\n\n**8 Widget Types**:\n\n1. **installation_lookup**: Find installation by address or postal code\n   - Use case: \"Where is my solar system registered?\"\n   - Reduces: 25% of lookup calls\n\n2. **installation_overview**: Quick info dashboard for customer\n   - Shows: MaStR number, capacity, commissioning date, grid operator\n   - Reduces: 30% of \"What are my installation details?\" calls\n\n3. **operator_change_wizard**: Step-by-step operator change guide\n   - Use case: House purchase, inheritance, company restructuring\n   - Reduces: 40% of operator change calls (most complex process)\n   - Provides: Checklist, deadlines, required documents, forms\n\n4. **storage_calculator**: Storage worthiness check\n   - Inputs: PV capacity, consumption, electricity price\n   - Output: ROI calculation, payback period, optimal storage size\n   - Drives: Upsell opportunities (storage retrofit)\n\n5. **eeg_end_helper**: Post-EEG guidance (after 20 years)\n   - **CRITICAL for installations ≥18 years old!**\n   - Options: Full feed-in (market price), self-consumption, direct marketing\n   - Regulatory: EEG 2023 changes, market value calculation\n\n6. **faq_embedded**: Top 10 frequently asked questions\n   - Auto-answers: \"Can I increase capacity?\", \"How to change operator?\", \"What if my system breaks?\"\n   - Reduces: 15-20% of routine questions\n\n7. **contact_finder**: Find VNB, BNetzA, Finanzamt by postal code\n   - Shows: Contact details, opening hours, online portals, forms\n   - Reduces: \"Who is responsible for...?\" calls\n\n8. **document_templates**: Download forms (operator change, capacity increase, decommissioning)\n   - Self-service: No waiting for email/post\n   - Reduces: Document request calls\n\n**Display Modes**:\n- **compact** (300x400px): Sidebar widget\n- **full**: Full-page integration\n- **modal**: Popup overlay (triggered by button)\n- **embedded**: Inline integration in page flow\n\n**Integration**:\n- HTML/CSS/JavaScript snippet (copy-paste ready)\n- iframe or Web Component\n- REST API for custom implementations\n- Responsive design (mobile-friendly)\n- Light/dark theme support\n- Multi-language (de/en)\n\n**Business Benefits**:\n- 24/7 availability (no waiting for callback)\n- Instant answers (higher customer satisfaction)\n- Reduced peak-time call center load (mornings, Mondays)\n- Scalable (serves unlimited customers simultaneously)\n- Measurable impact (track widget usage vs. call reduction)\n\n**ROI Example**:\n- Before: 100 support calls/month @ 15 min/call = 1,500 min/month\n- After: 60-70 calls/month (30-40% self-service) = 900-1,050 min/month\n- **Savings: 450-600 min/month** = 7.5-10 hours/month\n- **Cost savings: 4,800-6,600 €/year** (assuming 40 €/hour loaded labor cost)\n- **Customer satisfaction: +15-25% (instant help vs. callback wait)**","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["widgetType"],"properties":{"widgetType":{"type":"string","enum":["installation_lookup","installation_overview","operator_change_wizard","storage_calculator","eeg_end_helper","faq_embedded","contact_finder","document_templates"],"description":"Type of widget to generate","example":"installation_lookup"},"mode":{"type":"string","enum":["compact","full","modal","embedded"],"description":"Display mode","default":"embedded"},"theme":{"type":"string","enum":["light","dark","auto"],"default":"light"},"language":{"type":"string","enum":["de","en"],"default":"de"},"outputFormat":{"type":"string","enum":["html","json","markdown"],"description":"Output format for the widget","default":"html"},"mastrNummer":{"type":"string","description":"Optional: MaStR number for personalized widgets","example":"SEE123456789012"},"postalCode":{"type":"string","description":"Optional: Customer postal code for location-based help","example":"80331"},"installationAge":{"type":"number","description":"Optional: Installation age in years","minimum":0,"example":18},"maxHeight":{"type":"number","description":"Maximum widget height in pixels","minimum":200,"default":600},"includeBranding":{"type":"boolean","default":true},"includeContactCTA":{"type":"boolean","default":true},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"installationLookup":{"summary":"Installation lookup widget","value":{"widgetType":"installation_lookup","mode":"embedded","theme":"light","language":"de","outputFormat":"html","maxHeight":400}},"storageCalculator":{"summary":"Storage calculator for customers","value":{"widgetType":"storage_calculator","mode":"full","theme":"light","postalCode":"80331","language":"de"}},"eegEndHelper":{"summary":"EEG end helper (20-year mark)","value":{"widgetType":"eeg_end_helper","mode":"modal","installationAge":18,"mastrNummer":"SEE123456789012","theme":"auto","includeContactCTA":true}},"compactFAQ":{"summary":"Compact FAQ widget","value":{"widgetType":"faq_embedded","mode":"compact","theme":"light","maxHeight":500,"outputFormat":"json"}}}}}}}},"/api/customer-service/installation-health-check":{"post":{"summary":"Compare actual vs. expected yield and diagnose performance issues","tags":["Customer Service"],"operationId":"customer_service_installationHealthCheck","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"Health status: EXCELLENT (>95%), GOOD (90-95%), ACCEPTABLE (85-90%), POOR (70-85%), CRITICAL (<70%)","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["capacityKWp","commissioningYear","postalCode","actualYieldKWh","yieldPeriod"],"properties":{"capacityKWp":{"type":"number","description":"Installation capacity in kWp","minimum":0,"example":9.8},"commissioningYear":{"type":"number","description":"Year of commissioning","minimum":1900,"maximum":2100,"example":2015},"postalCode":{"type":"string","description":"German postal code (5 digits)","minLength":5,"maxLength":5,"example":"80331"},"actualYieldKWh":{"type":"number","description":"Actual energy yield in kWh","minimum":0,"example":8500},"yieldPeriod":{"type":"string","enum":["month","year"],"description":"Period for the actualYieldKWh value","example":"year"},"yieldYear":{"type":"number","description":"Optional: Specific year for the yield measurement","minimum":1900,"maximum":2100,"example":2025},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"annualCheck":{"summary":"Annual health check (Munich PV system)","value":{"capacityKWp":9.8,"commissioningYear":2015,"postalCode":"80331","actualYieldKWh":8500,"yieldPeriod":"year","yieldYear":2025}},"monthlyCheck":{"summary":"Monthly health check (summer)","value":{"capacityKWp":12.5,"commissioningYear":2018,"postalCode":"10115","actualYieldKWh":1200,"yieldPeriod":"month"}},"largeSystem":{"summary":"Large commercial system check","value":{"capacityKWp":85,"commissioningYear":2012,"postalCode":"70173","actualYieldKWh":72000,"yieldPeriod":"year","yieldYear":2025}}}}}}}},"/api/customer-service/installation-change-wizard":{"post":{"summary":"Step-by-step guidance for installation changes","tags":["Customer Service"],"operationId":"customer_service_installationChangeWizard","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"6 change types: operator change, storage retrofit, capacity increase, decommissioning, tariff switch, direct marketing","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["changeType","currentSituation"],"properties":{"changeType":{"type":"string","enum":["operator_change","storage_retrofit","capacity_increase","decommissioning","tariff_switch","direct_marketing"],"description":"Type of change the customer wants to make","example":"operator_change"},"currentSituation":{"type":"string","description":"Description of current situation (minimum 10 characters)","minLength":10,"example":"I have a 10kWp PV system from 2012 and want to add battery storage"},"installationType":{"type":"string","description":"Optional: Type of installation (solar, wind, storage, etc.)","example":"solar"},"mastrNummer":{"type":"string","description":"Optional: MaStR registration number","example":"SEE123456789012"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"addBatteryStorage":{"summary":"Add battery storage to existing PV","value":{"changeType":"storage_retrofit","currentSituation":"I have a 10kWp PV system from 2012 and want to add a 10kWh battery storage. What are the steps and what do I need to consider?","installationType":"solar","mastrNummer":"SEE123456789012"}},"switchOperator":{"summary":"Change grid operator","value":{"changeType":"operator_change","currentSituation":"We are moving to a new location and need to transfer our PV system registration to the new grid operator.","installationType":"solar"}},"expandCapacity":{"summary":"Increase PV capacity","value":{"changeType":"capacity_increase","currentSituation":"Our existing 8kWp rooftop system is too small. We want to add another 5kWp on the garage roof.","installationType":"solar","mastrNummer":"SEE987654321098"}},"decommissionOld":{"summary":"Decommission old system","value":{"changeType":"decommissioning","currentSituation":"Our PV system from 2003 has reached end of life. We want to properly decommission it and install a new system.","installationType":"solar"}},"switchToDirectMarketing":{"summary":"Switch to direct marketing","value":{"changeType":"direct_marketing","currentSituation":"We have a 100kWp system and want to switch from feed-in tariff to direct marketing to maximize revenue.","mastrNummer":"SEW555444333222"}}}}}}}},"/api/cya/profile":{"post":{"summary":"Create or update a stakeholder profile","tags":["CYA Agent"],"operationId":"cya_createProfile","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Profile persisted successfully","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":true},"profile_id":{"type":"string","example":"stadtwerk_regulierung"},"createdAt":{"type":"string","format":"date-time"}}}}}}},"description":"Stores a stakeholder profile for the CYA Agent in the Object Store namespace `cya_profiles`.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["profile_id","actor","strategic_goals"],"properties":{"profile_id":{"type":"string","pattern":"^[a-z0-9_]+$","maxLength":64,"example":"stadtwerk_regulierung"},"actor":{"type":"object","required":["role"],"example":{"role":"grid_operator","organization":"Stadtwerke Beispiel","department":"Regulierung"},"properties":{"role":{"type":"string","enum":["grid_operator","supplier","project_developer","direct_marketer","metering_operator","regulator","municipality","journalist","citizen"]},"organization":{"type":"string","nullable":true},"department":{"type":"string","nullable":true}}},"strategic_goals":{"type":"array","minItems":1,"maxItems":10,"items":{"type":"string"},"example":["Rechtssicherheit stärken","Investitionsargumentation verbessern"]},"tone":{"type":"string","nullable":true,"example":"diplomatisch, rechtssicher"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"value":{"profile_id":"stadtwerk_regulierung","actor":{"role":"grid_operator","organization":"Stadtwerke Beispiel","department":"Regulierung"},"strategic_goals":["Rechtssicherheit stärken","Investitionsargumentation verbessern"],"tone":"diplomatisch, rechtssicher"}}}}}}}},"/api/cya/profile/:profile_id":{"get":{"summary":"Load a stakeholder profile","tags":["CYA Agent"],"operationId":"cya_getProfile","parameters":[{"name":"profile_id","in":"path","required":true,"schema":{"type":"string","example":"stadtwerk_regulierung"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Profile found","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":true},"profile_id":{"type":"string"},"profile":{"type":"object","properties":{"actor":{"type":"object"},"strategic_goals":{"type":"array","items":{"type":"string"}},"tone":{"type":"string"},"createdAt":{"type":"string","format":"date-time"}}}}},"examples":{"default":{"value":{"success":true,"profile_id":"stadtwerk_regulierung","profile":{"actor":{"role":"grid_operator","organization":"Stadtwerke Beispiel","department":"Regulierung"},"strategic_goals":["Rechtssicherheit stärken"],"tone":"diplomatisch, rechtssicher","createdAt":"2026-04-14T16:00:00.000Z"}}}}}}},"404":{"description":"Profile not found"}},"description":"Loads a single CYA profile from the Object Store namespace `cya_profiles`."}},"/api/cya/profiles":{"get":{"summary":"List stakeholder profiles","tags":["CYA Agent"],"operationId":"cya_listProfiles","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"number","default":50,"example":50}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string","example":"eyJvZmZzZXQiOjUwfQ=="}},{"name":"offset","in":"query","required":false,"schema":{"type":"number","minimum":0,"example":0}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Profile list","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":true},"count":{"type":"number","example":1},"items":{"type":"array","items":{"type":"object","properties":{"namespace":{"type":"string"},"key":{"type":"string"},"payload":{"type":"object"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}}}}},"examples":{"default":{"value":{"success":true,"count":1,"items":[{"namespace":"cya_profiles","key":"stadtwerk_regulierung","payload":{"actor":{"role":"grid_operator"},"strategic_goals":["Rechtssicherheit stärken"],"tone":"diplomatisch, rechtssicher"},"createdAt":"2026-04-14T16:00:00.000Z","updatedAt":"2026-04-14T16:00:00.000Z"}]}}}}}}},"description":"Lists stored CYA profiles from the Object Store namespace `cya_profiles`."}},"/api/cya/profile/:id":{"patch":{"summary":"Explicit profile update (inner Zwiebel layer)","tags":["CYA Agent"],"operationId":"cya_update","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","example":"stadtwerk_regulierung"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Profile updated","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"profile":{"type":"object"},"updated":{"type":"boolean","example":true}}}}}},"404":{"description":"Profile not found"}},"description":"Merges explicit user preferences into a CYA profile without touching implicitly derived stats. Part of the Progressive Profiling Zwiebelmodus (v0.34.0).","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"constraints":{"type":"array","items":{"type":"object","properties":{"topic":{"type":"string"},"rule":{"type":"string"}}},"nullable":true},"explicitPreferences":{"type":"object","nullable":true},"priorityFocusAreas":{"type":"array","items":{"type":"string"},"nullable":true},"tone":{"type":"string","nullable":true,"example":"sachlich, rechtssicher"},"strategic_goals":{"type":"array","items":{"type":"string"},"nullable":true},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"value":{"constraints":[{"topic":"Dunkelflaute","rule":"Keine spekulativen Szenarien ohne Quellenangabe"}],"priorityFocusAreas":["redispatch","capacity"],"tone":"sachlich, direkt"}}}}}}}},"/api/cya/templates":{"get":{"summary":"List prebuilt CYA profile templates","tags":["CYA Agent"],"operationId":"cya_listTemplates","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Template list","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":true},"templates":{"type":"array","items":{"type":"object","properties":{"templateId":{"type":"string","example":"vnb_defensiv"},"name":{"type":"string","example":"VNB Defensiv"},"description":{"type":"string"},"role":{"type":"string","enum":["grid_operator","supplier","project_developer","direct_marketer","metering_operator","regulator","municipality","journalist","citizen"]},"suggestedAudiences":{"type":"array","items":{"type":"string"}}}}}}}}}}},"description":"Returns read-only CYA profile templates for bootstrap and onboarding flows."}},"/api/cya/templates/:templateId":{"get":{"summary":"Load one prebuilt CYA profile template","tags":["CYA Agent"],"operationId":"cya_getTemplate","parameters":[{"name":"templateId","in":"path","required":true,"schema":{"type":"string","example":"vnb_defensiv"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Template found","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":true},"template":{"type":"object"}}}}}},"404":{"description":"Template not found"}}}},"/api/cya/profile/from-template":{"post":{"summary":"Create CYA profile from template","tags":["CYA Agent"],"operationId":"cya_createFromTemplate","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Profile created from template","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":true},"profile_id":{"type":"string","example":"vnb_heidelberg_reg"},"templateId":{"type":"string","example":"vnb_defensiv"},"createdAt":{"type":"string","format":"date-time"}}}}}},"404":{"description":"Template not found"}},"description":"Creates or updates a profile from a predefined template plus optional overrides.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["templateId","profile_id"],"properties":{"templateId":{"type":"string","example":"vnb_defensiv"},"profile_id":{"type":"string","pattern":"^[a-z0-9_]+$","maxLength":64,"example":"vnb_heidelberg_reg"},"overrideMode":{"type":"string","enum":["append","replace"],"default":"replace"},"overrides":{"type":"object","nullable":true,"example":{"organization":"Stadtwerke Heidelberg Netze GmbH","department":"Regulierung","strategic_goals":["Transparenz gegenüber Aufsichtsrat stärken"],"tone":"sachlich, rechtssicher"},"properties":{"organization":{"type":"string","nullable":true},"department":{"type":"string","nullable":true},"strategic_goals":{"type":"array","items":{"type":"string"}},"tone":{"type":"string"}}},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"value":{"templateId":"vnb_defensiv","profile_id":"vnb_heidelberg_reg","overrideMode":"append","overrides":{"organization":"Stadtwerke Heidelberg Netze GmbH","department":"Netzplanung","strategic_goals":["Transparenz gegenüber Aufsichtsrat stärken"],"tone":"sachlich, rechtssicher"}}}}}}}}},"/api/cya/sessions/:session_id/export/pdf":{"get":{"summary":"Export CYA session as PDF","tags":["CYA Agent"],"operationId":"cya_exportPdf","parameters":[{"in":"path","name":"session_id","required":true,"schema":{"type":"string","example":"cya_1713110400000"}},{"in":"query","name":"language","required":false,"schema":{"type":"string","enum":["de","en"],"default":"de"},"example":"de"},{"in":"query","name":"includeRegulatoryDetails","required":false,"schema":{"type":"boolean","default":true}},{"in":"query","name":"includeDataBasis","required":false,"schema":{"type":"boolean","default":true}},{"in":"query","name":"includeAITransparency","required":false,"schema":{"type":"boolean","default":true}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"PDF binary stream","content":{"application/pdf":{"schema":{"type":"string","format":"binary"}}}},"404":{"description":"Session not found"},"409":{"description":"Session not completed yet"}},"description":"Renders a completed CYA session (single or multi-perspective) as a PDF document. Returns a binary PDF buffer with Content-Disposition attachment header. Requires session status to be `completed`."}},"/api/cya/sessions/:session_id/export/json":{"get":{"summary":"Export CYA session as JSON","tags":["CYA Agent"],"operationId":"cya_exportJson","parameters":[{"in":"path","name":"session_id","required":true,"schema":{"type":"string","example":"cya_1713110400000"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Session JSON export","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":true},"session_id":{"type":"string"},"exportedAt":{"type":"string","format":"date-time"},"session":{"type":"object"}}},"examples":{"default":{"value":{"success":true,"session_id":"cya_1713110400000","exportedAt":"2026-04-18T10:00:00.000Z","session":{}}}}}}},"404":{"description":"Session not found"}},"description":"Returns the full CYA session object as structured JSON for downstream processing."}},"/api/cya/sessions/:id/a2a-log":{"get":{"summary":"Get A2A message log for a CYA session (v0.35.0)","tags":["CYA Agent"],"operationId":"cya_a2aLog","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string","example":"cya_1713110400000"}},{"in":"query","name":"limit","required":false,"schema":{"type":"integer","default":50,"minimum":1,"maximum":200,"example":50}},{"in":"query","name":"cursor","required":false,"schema":{"type":"string","example":"eyJvZmZzZXQiOjUwfQ=="}},{"in":"query","name":"offset","required":false,"schema":{"type":"integer","minimum":0,"example":0}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"A2A message log","content":{"application/json":{"schema":{"type":"object","properties":{"sessionId":{"type":"string"},"messageCount":{"type":"integer"},"messages":{"type":"array","items":{"type":"object","properties":{"messageId":{"type":"string","format":"uuid"},"eventName":{"type":"string"},"sessionId":{"type":"string"},"fromPersona":{"type":"string"},"toPersona":{"type":"string","nullable":true},"payload":{"type":"object"},"timestamp":{"type":"string","format":"date-time"},"protocolVersion":{"type":"string"}}}}}}}}}},"description":"Returns the full Agent-to-Agent communication log for a session, sorted by timestamp. Each entry is an A2AMessage envelope."}},"/api/cya/sessions/:id/a2a-analysis":{"get":{"summary":"Analyse des A2A-Logs für eine CYA-Session (v0.38.2)","tags":["CYA Agent"],"operationId":"cya_a2aAnalysis","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string","example":"cya_1713110400000"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"A2A-Log-Analyse","content":{"application/json":{"schema":{"type":"object","properties":{"sessionId":{"type":"string"},"analysis":{"type":"object","nullable":true,"properties":{"totalMessages":{"type":"integer"},"conflictsDetected":{"type":"integer"},"negotiationRounds":{"type":"integer"},"consensusReached":{"type":"boolean"},"consensusRound":{"type":"integer","nullable":true},"hitlEscalated":{"type":"boolean"},"durationMs":{"type":"number","nullable":true},"blockerPersonas":{"type":"array","items":{"type":"string"}},"signalsSeen":{"type":"array","items":{"type":"string"}}}},"summary":{"type":"string","nullable":true},"message":{"type":"string","nullable":true}}}}}}},"description":"Wertet den persistierten Agent-to-Agent Kommunikations-Log einer Session aus. Liefert strukturierte Insights über Persona-Verdicts, Konflikte, Negotiation-Runden und Consensus-Ergebnis."}},"/api/cya/a2a-stats":{"get":{"summary":"Globale A2A-Statistiken über alle Sessions (v0.38.2)","tags":["CYA Agent"],"operationId":"cya_a2aStats","parameters":[{"in":"query","name":"limit","required":false,"schema":{"type":"integer","default":100,"minimum":1,"maximum":1000,"example":100},"description":"Maximale Anzahl ausgewerteter Sessions (default: 100, max: 1000)"},{"in":"query","name":"cursor","required":false,"schema":{"type":"string","example":"eyJvZmZzZXQiOjEwMH0="}},{"in":"query","name":"offset","required":false,"schema":{"type":"integer","minimum":0,"example":0}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Aggregierte A2A-Statistiken","content":{"application/json":{"schema":{"type":"object","properties":{"sessionCount":{"type":"integer"},"stats":{"type":"object","properties":{"totalSessions":{"type":"integer"},"consensusRate":{"type":"number"},"avgNegotiationRounds":{"type":"number"},"hitlEscalationRate":{"type":"number"},"mostFrequentBlocker":{"type":"string","nullable":true},"mostFrequentSignal":{"type":"string","nullable":true},"avgDurationMs":{"type":"number","nullable":true}}}}}}}}},"description":"Aggregiert A2A-Logs aus allen gespeicherten Sessions und liefert Konsens-Rate, Eskalations-Rate, häufigste Blocker-Persona und häufigste Signals. Limit-Parameter verhindert Timeout bei vielen Sessions."}},"/api/cya/sessions/:id/context-state":{"get":{"summary":"Get persisted Zwiebelmodus context state for a CYA session (v0.37.0)","tags":["CYA Agent"],"operationId":"cya_contextState","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string","example":"cya_1713110400000"},"description":"CYA Session ID"},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Persisted context state","content":{"application/json":{"schema":{"type":"object","properties":{"sessionId":{"type":"string"},"outerContext":{"type":"object","nullable":true,"properties":{"goal":{"type":"string","nullable":true},"focusArea":{"type":"array","items":{"type":"string"}}}},"currentDepth":{"type":"integer","example":1},"breadcrumb":{"type":"array","items":{"type":"string"}},"iterationLog":{"type":"array","items":{"type":"object"}},"maxIterations":{"type":"integer","example":3},"zoomStack":{"type":"array","items":{"type":"string"},"description":"nodeId history for zoomIn operations"},"savedAt":{"type":"string","format":"date-time"}}}}}},"404":{"description":"No context state found for this session"}},"description":"Returns the serialized CyaContextManager zoom-state for session resumption. Enables refine calls to continue with identical onion context. Object Store namespace: cya_context_states."}},"/api/cya/graph/export/oeo":{"get":{"summary":"OEO graph export as JSON-LD","tags":["CYA Agent"],"operationId":"cya_oeo","parameters":[{"name":"operator","in":"query","required":false,"schema":{"type":"string","example":"Stadtwerke Beispiel"},"description":"Optional operator name for graph seed"},{"name":"location","in":"query","required":false,"schema":{"type":"string","example":"Ludwigshafen"},"description":"Optional location filter"},{"name":"baseIri","in":"query","required":false,"schema":{"type":"string","example":"https://cernion.example/graph/"},"description":"Base IRI for JSON-LD output"},{"name":"oeoVersion","in":"query","required":false,"schema":{"type":"string","example":"2.11.0","default":"2.11.0"},"description":"Pinned OEO version for this release. Only '2.11.0' is supported."},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"OEO JSON-LD export","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"oeo":{"type":"object","description":"Validated OEO JSON-LD document"},"graphology":{"type":"object","description":"Raw Graphology graph data"},"warnings":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string"},"severity":{"type":"string","example":"warning"},"message":{"type":"string"}}}},"validationSummary":{"type":"object","properties":{"status":{"type":"string","example":"ok"},"totalNodes":{"type":"number"},"totalEdges":{"type":"number"},"mappedNodes":{"type":"number"},"mappedEdges":{"type":"number"},"unknownNodeTypes":{"type":"number"},"unknownEdgeTypes":{"type":"number"},"warningCount":{"type":"number"},"hasWarnings":{"type":"boolean"}}},"oeoVersion":{"type":"string","example":"2.11.0"},"oeoVersionIri":{"type":"string","example":"https://github.com/OpenEnergyPlatform/ontology/releases/tag/v2.11.0"}}}}}},"400":{"description":"Unsupported OEO version requested"}},"description":"Exports the live Graphology ontology graph as OEO-aligned JSON-LD with fixed ontology pinning, warnings[] and validationSummary."}},"/api/cya/graph/export/oeo-stub":{"get":{"summary":"Deprecated alias for OEO graph export","tags":["CYA Agent"],"operationId":"cya_oeo_stub","parameters":[{"name":"operator","in":"query","required":false,"schema":{"type":"string","example":"Stadtwerke Beispiel"}},{"name":"location","in":"query","required":false,"schema":{"type":"string","example":"Ludwigshafen"}},{"name":"baseIri","in":"query","required":false,"schema":{"type":"string","example":"https://cernion.example/graph/"}},{"name":"oeoVersion","in":"query","required":false,"schema":{"type":"string","example":"2.11.0","default":"2.11.0"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Deprecated alias response with replacement metadata"}},"description":"Deprecated alias for /api/cya/graph/export/oeo. Will be removed after 2026-11-05."}},"/api/cya/graph/cache":{"get":{"summary":"Ontologie-Graph Cache Status","tags":["CYA Agent"],"operationId":"cya_cacheStatus","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Cache-Statistiken","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"cache":{"type":"object"}}}}}}},"description":"Gibt den aktuellen L1-Cache-Status des Ontologie-Graphen zurück. Für Ops-Monitoring und Debugging."}},"/api/cya/graph/cache/:operatorId":{"delete":{"summary":"Ontologie-Graph Cache invalidieren","tags":["CYA Agent"],"operationId":"cya_invalidate","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Invalidierungsbestätigung","content":{"application/json":{"schema":{"type":"object","properties":{"key":{"type":"string"},"invalidated":{"type":"boolean"}}}}}}},"description":"Invalidiert den Graphen für einen VNB. Wird automatisch ausgelöst bei mastr-monitor.delta.detected.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"operatorId":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}}},"/api/cya/compare-perspectives":{"post":{"summary":"Generate multi-perspective comparison from profiles/templates","tags":["CYA Agent"],"operationId":"cya_compareProfiles","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Comparison result","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":true},"session_id":{"type":"string"},"status":{"type":"string","enum":["completed","needs_clarification"]},"perspectiveCount":{"type":"number","example":2},"grounding":{"type":"object"},"regulatory_graph":{"type":"object"},"perspectives":{"type":"array","items":{"type":"object"}},"metadata":{"type":"object"}}}}}},"404":{"description":"Profile/template not found"}},"description":"Runs phases 1–3 once (retrieval/graph/grounding) and executes phase 4 synthesis in parallel for 2–5 profile IDs or template IDs.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["profile_ids","target_audience","context"],"properties":{"profile_ids":{"type":"array","minItems":2,"maxItems":5,"items":{"type":"string"},"example":["vnb_defensiv","projektierer_offensiv"]},"target_audience":{"type":"string","example":"Aufsichtsrat"},"context":{"type":"object","required":["trigger","focus_areas"],"example":{"location":"Heidelberg","trigger":"Presseanfrage zur Netzstabilität","focus_areas":["capacity","compliance"],"capacity_mw":10},"properties":{"location":{"type":"string","nullable":true,"example":"Heidelberg"},"trigger":{"type":"string","example":"Presseanfrage zur Netzstabilität"},"focus_areas":{"type":"array","minItems":1,"items":{"type":"string","enum":["capacity","renewables","grid_expansion","redispatch","energy_sharing","digitalization","compliance","customer","investment","section14a","nova"]},"example":["capacity","compliance"]},"capacity_mw":{"type":"number","nullable":true,"description":"Optional asset capacity in MW for topology-hop logic.","example":10}}},"session_id":{"type":"string","nullable":true,"example":"cya_mp_1713110400000"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"value":{"profile_ids":["vnb_defensiv","projektierer_offensiv"],"target_audience":"Aufsichtsrat","context":{"location":"Heidelberg","trigger":"Presseanfrage zur Netzstabilität","focus_areas":["capacity","compliance"],"capacity_mw":10}}}}}}}}},"/api/cya/generate":{"post":{"summary":"Generate profile-aware narrative","tags":["CYA Agent"],"operationId":"cya_generate","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Pipeline result (internal/direct calls only; external callers receive 202)","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":true},"session_id":{"type":"string"},"status":{"type":"string","enum":["completed","needs_clarification"]},"profile_id":{"type":"string"},"target_audience":{"type":"string"},"grounding":{"type":"object"},"regulatory_graph":{"type":"object"},"narrative":{"type":"object","nullable":true,"properties":{"headline":{"type":"string"},"executiveSummary":{"type":"string"},"keyPoints":{"type":"array","items":{"type":"string"}},"recommendedActions":{"type":"array","items":{"type":"string"}},"riskNotes":{"type":"array","items":{"type":"string"}}}},"clarification":{"type":"object","nullable":true},"metadata":{"type":"object"}}}}}},"202":{"description":"Job accepted and queued for async processing","headers":{"Location":{"schema":{"type":"string"},"description":"Relative URI to job status endpoint (/api/jobs/:jobId/status)"},"Retry-After":{"schema":{"type":"string"},"description":"Suggested polling interval in seconds"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":true},"jobId":{"type":"string","example":"6fd38b12-a3f4-41d5-8f49-e7f9c1b2d3e4"},"status":{"type":"string","enum":["queued"],"example":"queued"},"message":{"type":"string","example":"Job started. Poll /api/jobs/:jobId/status for progress."},"statusUrl":{"type":"string","example":"/api/jobs/6fd38b12-a3f4-41d5-8f49-e7f9c1b2d3e4/status"},"resultUrl":{"type":"string","example":"/api/jobs/6fd38b12-a3f4-41d5-8f49-e7f9c1b2d3e4/result"}}}}}}},"description":"Runs the full CYA pipeline: data retrieval, deterministic regulatory graph, grounding, and LLM synthesis. Returns Option-B response structure.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["profile_id","target_audience","context"],"properties":{"profile_id":{"type":"string","example":"stadtwerk_regulierung"},"target_audience":{"type":"string","example":"Aufsichtsrat"},"perspectives":{"type":"array","nullable":true,"items":{"type":"string","enum":["technical","commercial","compliance"]},"minItems":1,"maxItems":3,"description":"Enable multi-agent orchestration mode with stakeholder perspectives. If omitted, defaults to classic single-agent v0.26.8 behavior.","example":["technical","commercial"]},"context":{"capacity_mw":{"type":"number","optional":true},"required":["trigger","focus_areas"],"example":{"location":"Ludwigshafen","trigger":"Presseanfrage zur Netzstabilität","focus_areas":["capacity","compliance","nova"]},"properties":{"location":{"type":"string","nullable":true},"trigger":{"type":"string"},"focus_areas":{"type":"array","minItems":1,"items":{"type":"string","enum":["capacity","renewables","grid_expansion","redispatch","energy_sharing","digitalization","compliance","customer","investment","section14a","nova"]}},"capacity_mw":{"type":"number","nullable":true,"description":"Asset capacity in MW. If >= 10 MW, triggers 110-kV topology hop detection via OSM.","example":10}}},"session_id":{"type":"string","nullable":true,"example":"cya_1713110400000"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"value":{"profile_id":"stadtwerk_regulierung","target_audience":"Aufsichtsrat","perspectives":["technical","commercial"],"context":{"location":"Ludwigshafen","trigger":"Presseanfrage zur Netzstabilität","focus_areas":["capacity","compliance","nova"],"capacity_mw":10}}}}}}}}},"/api/cya/refine":{"post":{"summary":"Refine a generated narrative","tags":["CYA Agent"],"operationId":"cya_refine","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Refinement result","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":true},"session_id":{"type":"string"},"status":{"type":"string","enum":["completed","needs_clarification"]},"profile_id":{"type":"string"},"target_audience":{"type":"string"},"grounding":{"type":"object"},"regulatory_graph":{"type":"object"},"narrative":{"type":"object","nullable":true},"clarification":{"type":"object","nullable":true},"metadata":{"type":"object"}}}}}}},"description":"Refines an existing CYA session with user feedback or clarification input (Option-B response structure).","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["session_id"],"properties":{"session_id":{"type":"string","example":"cya_1713110400000"},"user_feedback":{"type":"string","nullable":true,"example":"Bitte stärker auf §14a fokussieren"},"agent_clarification_response":{"type":"string","nullable":true,"example":"Bitte Region auf Ludwigshafen eingrenzen"},"clarification_response":{"type":"object","nullable":true,"description":"Structured HITL data override. Supplies hard facts (capacity, redispatch, NOVA, etc.) to rebuild the deterministic Regulatory Graph. Bypasses failed MCP fetch-routines for the listed focus areas. Separate from agent_clarification_response (free-text LLM guidance).","example":null,"properties":{"provided_data":{"type":"object","description":"Map of focusArea -> user-supplied text. Each entry replaces a failed or missing retrieval item with trusted:true, dataProvenance:\"user_asserted\".","example":{"capacity":"Lokale PV-Durchdringung 8 MW, 10-MW-Speicher muss ans 110-kV-UW Meckesheim (Netze BW).","redispatch":"Netzregion leidet unter §13a-Abregelungen von Wind/PV.","nova":"Netze BW prüft Trafo-Ausbau, Flexibilität fehlt.","investment":"Kommune Mauer will Gewerbesteuer sichern."}}}},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"value":{"session_id":"cya_1713110400000","user_feedback":"Bitte stärker auf §14a fokussieren","agent_clarification_response":null,"clarification_response":null}},"hitl_override":{"summary":"HITL: supply missing focus-area data after needs_clarification","value":{"session_id":"cya_1776232540896","clarification_response":{"provided_data":{"capacity":"Lokale PV-Durchdringung 8 MW, 10-MW-Speicher muss ans 110-kV-UW Meckesheim (Netze BW).","redispatch":"Netzregion leidet unter §13a-Abregelungen von Wind/PV.","nova":"Netze BW prüft Trafo-Ausbau, Flexibilität fehlt.","investment":"Kommune Mauer will Gewerbesteuer sichern."}}}}}}}}}},"/api/dashboard-api/vnb-overview":{"get":{"summary":"VNB overview — aggregated dashboard data for one grid operator","tags":["Dashboard API"],"operationId":"dashboard_api_vnbOverview","parameters":[{"name":"bdewCode","in":"query","required":true,"schema":{"type":"string","example":"9907473000008"},"description":"BDEW code of the grid operator"},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Aggregated VNB overview","content":{"application/json":{"schema":{"type":"object","properties":{"identity":{"type":"object","nullable":true,"description":"VNB identity from grid-operations.vnbLookupCodes","properties":{"name":{"type":"string","example":"STROMDAO Netze GmbH"},"mastrId":{"type":"string","example":"SNB935578300972"},"bdew":{"type":"string","example":"9907473000008"},"bnr":{"type":"string","nullable":true}}},"kpis":{"type":"object","nullable":true,"description":"Key performance indicators aggregated from VNB Monitor and Datapoint health"},"latestAgentResults":{"type":"object","description":"Most recent report summary for each agent pipeline (null if no report exists)","properties":{"mastrQuality":{"type":"object","nullable":true},"gridConnection":{"type":"object","nullable":true},"energySharing":{"type":"object","nullable":true},"redispatch":{"type":"object","nullable":true}}},"alerts":{"type":"array","description":"Active alerts from VNB Monitor snapshot"},"timestamp":{"type":"string","format":"date-time"},"_errors":{"type":"array","items":{"type":"string"},"description":"Internal services that failed — corresponding fields are null"}}}}}}},"description":"Returns VNB identity, KPIs (installations, capacity, EWK scores, MaStR quality), latest agent results (MaStR Quality, Grid Connection, Energy Sharing, Redispatch), active VNB Monitor alerts, and datapoint health — all in a single call.\n\nTwo-phase execution: Phase 1 runs grid-operations.vnbLookupCodes and vnb-monitor.snapshot sequentially (MCP-intensive, ≤10 concurrent sessions). Phase 2 fires datapoint.health and four agent list calls in parallel (PouchDB-only). gridOperatorId from Phase 1 is forwarded to Phase 2 list calls.\n\nIf any upstream service is unavailable, the affected fields are set to `null` and the service name is appended to `_errors`.\n\nCache TTL: 5 minutes (key: bdewCode). Stampede-safe: concurrent requests for the same bdewCode share a single in-flight fetch promise."}},"/api/dashboard-api/redispatch-metering-cockpit":{"get":{"summary":"Redispatch Metering Cockpit — operator-level decision readiness","tags":["Dashboard API"],"operationId":"dashboard_api_redispatchMeteringCockpit","parameters":[{"name":"gridOperatorId","in":"query","required":false,"schema":{"type":"string","example":"SNB935578300972"},"description":"MaStR ID of the grid operator (SNB.../GNB...)"},{"name":"bdewCode","in":"query","required":false,"schema":{"type":"string","example":"9907473000008"},"description":"BDEW code as fallback operator context. Used to resolve gridOperatorId when not provided."},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Cockpit payload with readiness signal and explicit blockers","content":{"application/json":{"schema":{"type":"object","properties":{"operator":{"type":"object","properties":{"gridOperatorId":{"type":"string","nullable":true},"bdewCode":{"type":"string","nullable":true},"name":{"type":"string","nullable":true}}},"decisionReadiness":{"type":"object","properties":{"signal":{"type":"string","enum":["green","yellow","red"]},"score":{"type":"number","nullable":true},"blocked":{"type":"boolean"}}},"evidence":{"type":"object"},"blockingEvidenceGaps":{"type":"array"},"staleData":{"type":"array"},"sourceReports":{"type":"object"},"timestamp":{"type":"string","format":"date-time"},"_errors":{"type":"array","items":{"type":"string"}}}}}}}},"description":"Read-only cockpit for Redispatch, metering, masterdata and governance readiness. Builds a traffic-light readiness signal from existing deterministic pipelines (redispatch-expost, energy-sharing-allocation, mastr-quality, vdmi, datapoint.health). Evidence gaps and blockers are returned explicitly."}},"/api/dashboard-api/load-profile-stream-monitor":{"get":{"summary":"Load profile movement monitor — strict anomaly-class buckets","tags":["Dashboard API"],"operationId":"dashboard_api_loadProfileStreamMonitor","parameters":[{"name":"meloId","in":"query","required":true,"schema":{"type":"string","example":"DE0012345678901234567890123456789"},"description":"MeLo identifier (Marktlokation) for the monitored stream."},{"name":"from","in":"query","required":true,"schema":{"type":"string","example":"2026-05-01T00:00:00.000Z"},"description":"Start timestamp (inclusive)."},{"name":"to","in":"query","required":true,"schema":{"type":"string","example":"2026-05-02T00:00:00.000Z"},"description":"End timestamp (exclusive)."},{"name":"obis","in":"query","required":false,"schema":{"type":"string","default":"1-0:1.8.0"},"description":"OBIS channel to evaluate."},{"name":"gridOperatorId","in":"query","required":false,"schema":{"type":"string","example":"SNB935578300972"},"description":"Optional VNB scope for governance findings."},{"name":"profileId","in":"query","required":false,"schema":{"type":"string","default":"H0"},"description":"Optional load profile identifier for the monitor request."},{"name":"annualConsumptionKwh","in":"query","required":false,"schema":{"type":"number","example":3500},"description":"Optional annual consumption in kWh used for the stream monitor context."},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Composite stream monitor payload with strict anomaly buckets","content":{"application/json":{"schema":{"type":"object","properties":{"streamStatus":{"type":"object"},"qualityFindings":{"type":"object"},"anomalySignals":{"type":"object"},"restrictionRefs":{"type":"array"},"forecastQuality":{"type":"object","nullable":true},"decisionNotes":{"type":"array","items":{"type":"string"}},"sourceActions":{"type":"object"},"timestamp":{"type":"string","format":"date-time"},"_errors":{"type":"array","items":{"type":"string"}}}}}}}},"description":"Read-only monitor for Lastgangdaten/Bewegungsstrom diagnostics using existing deterministic services only (edm.getTimeseriesSummary, edm-validation.validate, forecast-engine.evaluateQuality, vdmi.findings). Returns strict anomaly buckets (`dataQualityGap`, `realAnomaly`, `forecastProblem`, `processGovernanceBreak`) and allows partial findings with explicit `_errors`."}},"/api/dashboard-api/redispatch-call-quality-gate":{"get":{"summary":"Redispatch call data-quality gate — read-only evidence aggregator","tags":["Dashboard API"],"operationId":"dashboard_api_redispatchCallQualityGate","parameters":[{"name":"gridOperatorId","in":"query","required":false,"schema":{"type":"string"}},{"name":"meloId","in":"query","required":false,"schema":{"type":"string"}},{"name":"maloId","in":"query","required":false,"schema":{"type":"string"}},{"name":"assetId","in":"query","required":false,"schema":{"type":"string"}},{"name":"from","in":"query","required":false,"schema":{"type":"string"}},{"name":"to","in":"query","required":false,"schema":{"type":"string"}},{"name":"auditId","in":"query","required":false,"schema":{"type":"string"}},{"in":"query","name":"obis","schema":{"type":"string"}},{"in":"query","name":"profileId","schema":{"type":"string"}},{"in":"query","name":"annualConsumptionKwh","schema":{"type":"number"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only Redispatch call data-quality gate status","content":{"application/json":{"schema":{"type":"object","properties":{"found":{"type":"boolean"},"gateStatus":{"type":"string"},"callContext":{"type":"object"},"masterDataReadiness":{"type":"object"},"meteringReadiness":{"type":"object"},"forecastReadiness":{"type":"object"},"controlEvidenceReadiness":{"type":"object"},"settlementReadiness":{"type":"object"},"leadingProcessSignal":{"type":"object"},"openEvidence":{"type":"array"},"monitoringTasks":{"type":"array"},"sourceActions":{"type":"object"},"nextActions":{"type":"array"},"missingDataPoints":{"type":"array"},"timestamp":{"type":"string","format":"date-time"},"_errors":{"type":"array","items":{"type":"string"}}}}}}}},"description":"Read-only Redispatch-Abrufprozess gate that summarizes existing Redispatch ex-post, EDM/datapoint, forecast, VDMI and settlement-readiness evidence into a dossier-safe status. The action does not create settlement artifacts, A96 exports, HITL tasks or operational mutations."}},"/api/dashboard-api/evidence-grounding-confidence-audit":{"get":{"summary":"Evidence grounding confidence audit — read-only dossier-safe evidence status","tags":["Dashboard API"],"operationId":"dashboard_api_evidenceGroundingConfidenceAudit","parameters":[{"name":"requestId","in":"query","required":false,"schema":{"type":"string"}},{"name":"sessionId","in":"query","required":false,"schema":{"type":"string"}},{"name":"domain","in":"query","required":false,"schema":{"type":"string"}},{"name":"capabilityId","in":"query","required":false,"schema":{"type":"string"}},{"name":"sourceAction","in":"query","required":false,"schema":{"type":"string"}},{"name":"scopeId","in":"query","required":false,"schema":{"type":"string"}},{"name":"gridOperatorId","in":"query","required":false,"schema":{"type":"string"}},{"name":"datasourceId","in":"query","required":false,"schema":{"type":"string"}},{"name":"datapointId","in":"query","required":false,"schema":{"type":"string"}},{"name":"query","in":"query","required":false,"schema":{"type":"string"}},{"name":"networkOperatorConfirmed","in":"query","required":false,"schema":{"type":"boolean","default":false}},{"name":"includeFederatedKnowledge","in":"query","required":false,"schema":{"type":"boolean","default":false},"description":"Opt-in only (default false). When true, additionally probes knowledge-rag.federatedSearch health/availability alongside knowledge-rag.query."},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only evidence-grounding confidence audit","content":{"application/json":{"schema":{"type":"object","properties":{"auditId":{"type":"string"},"requestContext":{"type":"object"},"routingConfidence":{"type":"object"},"evidenceConfidence":{"type":"object"},"answerStatus":{"type":"string"},"sourceClassBreakdown":{"type":"object"},"claims":{"type":"array"},"assumptions":{"type":"array"},"toolFailures":{"type":"array"},"scopeLimitations":{"type":"array"},"missingEvidence":{"type":"array"},"requiresNetworkOperatorConfirmation":{"type":"boolean"},"positiveFollowUps":{"type":"array"},"sourceActions":{"type":"object"},"dossierEvidence":{"type":"object"},"timestamp":{"type":"string","format":"date-time"},"_errors":{"type":"array","items":{"type":"string"}}}}}}}},"description":"Read-only confidence audit for grounded Cernion answers. It keeps Capability Broker routing confidence separate from evidence confidence, exposes source classes, scope limitations, tool failures, missing evidence and positive follow-ups. It does not create HITL items, interface placeholders, RAG ingests, Personal-Agent sessions or external calls."}},"/api/dashboard-api/receipt-grounded-presentation-contract":{"get":{"summary":"Receipt-grounded presentation contract — read-only renderer grounding check","tags":["Dashboard API"],"operationId":"dashboard_api_receiptGroundedPresentationContract","parameters":[{"name":"preferredFormat","in":"query","required":false,"schema":{"type":"string"}},{"name":"selectedType","in":"query","required":false,"schema":{"type":"string"}},{"name":"sourceAction","in":"query","required":false,"schema":{"type":"string"}},{"name":"domainShape","in":"query","required":false,"schema":{"type":"string","enum":["plain","vdmi_matrix","kpi_fact","evidence_gap","decision_brief"]}},{"name":"evidenceGapId","in":"query","required":false,"schema":{"type":"string"}},{"name":"query","in":"query","required":false,"schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Receipt-grounded presentation contract decision","content":{"application/json":{"schema":{"type":"object","properties":{"contractId":{"type":"string"},"requestedType":{"type":"string","nullable":true},"selectedType":{"type":"string","nullable":true},"allowedTypes":{"type":"array","items":{"type":"string"}},"blockedReason":{"type":"string","nullable":true},"sourceActions":{"type":"array","items":{"type":"string"}},"evidenceGapIds":{"type":"array","items":{"type":"string"}},"positiveFollowUps":{"type":"array","items":{"type":"object"}},"dossierEvidence":{"type":"object"},"timestamp":{"type":"string","format":"date-time"},"_errors":{"type":"array","items":{"type":"string"}}}}}}}},"description":"Evaluates whether a requested presentation renderer is grounded by the supplied domain shape, executed source action and evidence gaps. This is a deterministic inspect endpoint only; it does not run Personal-Agent chat, execute tools, create HITL/interface-placeholder items, mutate data, ingest RAG or call external services."}},"/api/dashboard-api/market-communication-evidence-chain":{"get":{"summary":"Market communication evidence chain — read-only dossier-safe status","tags":["Dashboard API"],"operationId":"dashboard_api_marketCommunicationEvidenceChainStatus","parameters":[{"name":"maloId","in":"query","required":false,"schema":{"type":"string"}},{"name":"meloId","in":"query","required":false,"schema":{"type":"string"}},{"name":"contractAccountId","in":"query","required":false,"schema":{"type":"string"}},{"name":"caseId","in":"query","required":false,"schema":{"type":"string"}},{"name":"includeHints","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"portalHint","in":"query","required":false,"schema":{"type":"string"}},{"name":"providerView","in":"query","required":false,"schema":{"type":"string"}},{"name":"customerStatement","in":"query","required":false,"schema":{"type":"string"}},{"name":"utilmdMasterdataPath","in":"query","required":false,"schema":{"type":"string"}},{"name":"meterValueBatchId","in":"query","required":false,"schema":{"type":"string"}},{"name":"consumptionRetrievalStatus","in":"query","required":false,"schema":{"type":"string"}},{"name":"dataQualityStatus","in":"query","required":false,"schema":{"type":"string"}},{"name":"nextBillingStep","in":"query","required":false,"schema":{"type":"string"}},{"name":"includeMakoKnowledge","in":"query","required":false,"schema":{"type":"boolean","default":false}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only market-communication evidence-chain status","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string"},"officialEvidence":{"type":"array"},"hintsOnly":{"type":"array"},"missingEvidence":{"type":"array"},"positiveFollowUps":{"type":"array"},"dossierFacts":{"type":"array"},"dossierEvidence":{"type":"object"},"safety":{"type":"string"},"makoKnowledgeContext":{"type":"object","description":"Optional, advisory Willi-Mako structure context; only present when includeMakoKnowledge=true. Never binding; degrades to available:false."},"timestamp":{"type":"string","format":"date-time"},"_errors":{"type":"array","items":{"type":"string"}}}}}}}},"description":"Classifies market-communication evidence for dynamic tariff, iMSys, consumption-data and billing-readiness cases. Portal screenshots, customer statements and provider views are hints only; official MaLo/MeLo, UTILMD/master-data path, meter values, consumption retrieval, data-quality status and next billing step remain separate required evidence. The endpoint is read-only and does not mutate MaKo, EDM, billing, settlement, VDMI or HITL state. When `includeMakoKnowledge=true`, an optional, advisory `makoKnowledgeContext` (Willi-Mako structural hints via `willi-mako.resolveStructure`) is attached; it never changes the default response shape, is never binding, and degrades to `available:false` if unavailable."}},"/api/dashboard-api/e2e-controllability-governance":{"get":{"summary":"E2E controllability governance — read-only dossier-safe matrix","tags":["Dashboard API"],"operationId":"dashboard_api_e2eControllabilityGovernanceStatus","parameters":[{"name":"caseId","in":"query","required":false,"schema":{"type":"string"}},{"name":"connectionIntake","in":"query","required":false,"schema":{"type":"string"}},{"name":"meteringConcept","in":"query","required":false,"schema":{"type":"string"}},{"name":"assetControlCapability","in":"query","required":false,"schema":{"type":"string"}},{"name":"gridOperationsDecision","in":"query","required":false,"schema":{"type":"string"}},{"name":"marketCommunicationHandover","in":"query","required":false,"schema":{"type":"string"}},{"name":"billingImpactCheck","in":"query","required":false,"schema":{"type":"string"}},{"name":"owner","in":"query","required":false,"schema":{"type":"string"}},{"name":"deadline","in":"query","required":false,"schema":{"type":"string"}},{"name":"openMeasure","in":"query","required":false,"schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only E2E controllability governance matrix","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string"},"processSteps":{"type":"array"},"evidenceMatrix":{"type":"array"},"decisionBoundaries":{"type":"array"},"owners":{"type":"array"},"deadlines":{"type":"array"},"openMeasures":{"type":"array"},"gaps":{"type":"array"},"positiveFollowUps":{"type":"array"},"dossierEvidence":{"type":"object"},"safety":{"type":"string"},"timestamp":{"type":"string","format":"date-time"},"_errors":{"type":"array","items":{"type":"string"}}}}}}}},"description":"Builds a deterministic governance/evidence matrix for E2E Steuerbarkeitscheck handover readiness across connection intake, metering, asset control, grid operations, market communication and billing-impact boundaries. The endpoint is read-only and does not mutate VDMI, HITL, MaKo, billing, settlement, tariff or device-control state."}},"/api/dashboard-api/controllability-asset-handover":{"get":{"summary":"Controllability asset handover — read-only dossier-safe status","tags":["Dashboard API"],"operationId":"dashboard_api_controllabilityAssetHandoverStatus","parameters":[{"name":"caseId","in":"query","required":false,"schema":{"type":"string"}},{"name":"assetId","in":"query","required":false,"schema":{"type":"string"}},{"name":"mastrId","in":"query","required":false,"schema":{"type":"string"}},{"name":"napId","in":"query","required":false,"schema":{"type":"string"}},{"name":"meloId","in":"query","required":false,"schema":{"type":"string"}},{"name":"technologyType","in":"query","required":false,"schema":{"type":"string"}},{"name":"capacityKW","in":"query","required":false,"schema":{"type":"number"}},{"name":"controllabilityScope","in":"query","required":false,"schema":{"type":"string"}},{"name":"technicalStatus","in":"query","required":false,"schema":{"type":"string"}},{"name":"feedbackCapability","in":"query","required":false,"schema":{"type":"string"}},{"name":"dataSourceRefs","in":"query","required":false,"schema":{"oneOf":[{"type":"array","items":{"type":"string"}},{"type":"string"}]}},{"name":"sourceSnapshotId","in":"query","required":false,"schema":{"type":"string"}},{"name":"checkStatus","in":"query","required":false,"schema":{"type":"string"}},{"name":"nonExecutionReason","in":"query","required":false,"schema":{"type":"string"}},{"name":"evidenceStatus","in":"query","required":false,"schema":{"type":"string"}},{"name":"lineOwnerRole","in":"query","required":false,"schema":{"type":"string"}},{"name":"handoverDecision","in":"query","required":false,"schema":{"type":"string"}},{"name":"nextReportingCycle","in":"query","required":false,"schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only controllability asset line handover status","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string"},"asset":{"type":"object"},"evidenceItems":{"type":"array"},"missingEvidence":{"type":"array"},"positiveFollowUps":{"type":"array"},"handoverDecision":{"type":"string"},"lineOwnerRole":{"type":"string"},"nextReportingCycle":{"type":"string"},"blockingFindings":{"type":"array"},"sourceActions":{"type":"object"},"dossierEvidence":{"type":"object"},"safety":{"type":"string"},"timestamp":{"type":"string","format":"date-time"},"_errors":{"type":"array","items":{"type":"string"}}}}}}}},"description":"Builds a deterministic asset line-handover evidence view for Steuerbarkeitscheck cases. It covers asset identity, NAP/MeLo mapping, technical status, feedback capability, source snapshot, check result, non-execution reason, line owner, next reporting cycle and handover decision. The endpoint is read-only and does not mutate Asset-MDM, VDMI, HITL, MaKo, billing, settlement, tariff or device-control state."}},"/api/dashboard-api/controllability-data-alignment":{"get":{"summary":"Controllability data alignment — read-only dossier-safe status","tags":["Dashboard API"],"operationId":"dashboard_api_controllabilityDataAlignmentStatus","parameters":[{"name":"checklistId","in":"query","required":false,"schema":{"type":"string"}},{"name":"assetId","in":"query","required":false,"schema":{"type":"string"}},{"name":"mastrId","in":"query","required":false,"schema":{"type":"string"}},{"name":"assetMatch","in":"query","required":false,"schema":{"type":"string"}},{"name":"mastrMatch","in":"query","required":false,"schema":{"type":"string"}},{"name":"internalAssetMatch","in":"query","required":false,"schema":{"type":"string"}},{"name":"controlTechStatus","in":"query","required":false,"schema":{"type":"string"}},{"name":"thresholdClass","in":"query","required":false,"schema":{"type":"string"}},{"name":"testability","in":"query","required":false,"schema":{"type":"string"}},{"name":"exceptionReason","in":"query","required":false,"schema":{"type":"string"}},{"name":"priorYearComparison","in":"query","required":false,"schema":{"type":"string"}},{"name":"owner","in":"query","required":false,"schema":{"type":"string"}},{"name":"dueDate","in":"query","required":false,"schema":{"type":"string"}},{"name":"exportReadiness","in":"query","required":false,"schema":{"type":"string"}},{"name":"evidenceStatus","in":"query","required":false,"schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only controllability data alignment status","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string"},"checklist":{"type":"object"},"alignmentRows":{"type":"array"},"missingEvidence":{"type":"array"},"positiveFollowUps":{"type":"array"},"safeNextGate":{"type":"string"},"sourceActions":{"type":"object"},"dossierEvidence":{"type":"object"},"safety":{"type":"string"},"timestamp":{"type":"string","format":"date-time"},"_errors":{"type":"array","items":{"type":"string"}}}}}}}},"description":"Builds a deterministic evidence/status view for recurring Steuerbarkeitscheck checklist reconciliation. It compares supplied checklist, asset/MaStR/internal, control-tech, threshold, testability, exception, prior-year, owner/deadline and export-readiness facts. The endpoint is read-only and does not import files, mutate Asset-MDM, call MaStR/CLS/SMGW, create HITL items, execute tests, or affect MaKo, billing, settlement, tariffs or device control."}},"/api/dashboard-api/coordination-meaning-preservation-profile":{"get":{"summary":"Coordination meaning preservation — read-only dossier-safe profile","tags":["Dashboard API"],"operationId":"dashboard_api_coordinationMeaningPreservationProfile","parameters":[{"name":"caseId","in":"query","required":false,"schema":{"type":"string"}},{"name":"sourceDomain","in":"query","required":false,"schema":{"type":"string"}},{"name":"targetDomain","in":"query","required":false,"schema":{"type":"string"}},{"name":"regulatoryReference","in":"query","required":false,"schema":{"type":"string"}},{"name":"commercialEffect","in":"query","required":false,"schema":{"type":"string"}},{"name":"networkConstraint","in":"query","required":false,"schema":{"type":"string"}},{"name":"evidenceProof","in":"query","required":false,"schema":{"type":"string"}},{"name":"owner","in":"query","required":false,"schema":{"type":"string"}},{"name":"deadline","in":"query","required":false,"schema":{"type":"string"}},{"name":"nextDecision","in":"query","required":false,"schema":{"type":"string"}},{"name":"operationalRisk","in":"query","required":false,"schema":{"type":"string"}},{"name":"handoverContext","in":"query","required":false,"schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only coordination meaning preservation profile","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string"},"coordinationLossClassification":{"type":"string"},"preservedDimensions":{"type":"array"},"missingDimensions":{"type":"array"},"weakDimensions":{"type":"array"},"positiveFollowUps":{"type":"array"},"sourceActions":{"type":"object"},"dossierEvidence":{"type":"object"},"safety":{"type":"string"},"timestamp":{"type":"string","format":"date-time"},"_errors":{"type":"array","items":{"type":"string"}}}}}}}},"description":"Builds a deterministic profile for preserving meaning at cross-domain handovers. It reports preserved and missing dimensions such as regulatory reference, commercial effect, network constraint, evidence proof, owner, deadline, next decision and operational risk. The endpoint is read-only and does not mutate Fachsysteme, HITL, billing, settlement, MaKo, tariff, device-control, Budibase or external connector state."}},"/api/dashboard-api/a2mdm-decision-object":{"get":{"summary":"A2MDM decision object - read-only meaning preservation projection","tags":["Dashboard API"],"operationId":"dashboard_api_a2mdmDecisionObjectStatus","parameters":[{"name":"caseId","in":"query","required":false,"schema":{"type":"string"}},{"name":"subject","in":"query","required":false,"schema":{"type":"string"}},{"name":"businessIntent","in":"query","required":false,"schema":{"type":"string"}},{"name":"technicalConstraint","in":"query","required":false,"schema":{"type":"string"}},{"name":"regulatoryReference","in":"query","required":false,"schema":{"type":"string"}},{"name":"evidenceSource","in":"query","required":false,"schema":{"type":"string"}},{"name":"ownerRole","in":"query","required":false,"schema":{"type":"string"}},{"name":"riskLevel","in":"query","required":false,"schema":{"type":"string"}},{"name":"decisionThreshold","in":"query","required":false,"schema":{"type":"string"}},{"name":"nextGate","in":"query","required":false,"schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only A2MDM decision-object context","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string"},"capabilityKey":{"type":"string"},"decisionObjectId":{"type":"string"},"decisionRows":{"type":"array"},"missingInputs":{"type":"array"},"positiveFollowUps":{"type":"array"},"noCallGuards":{"type":"array"},"sourceActions":{"type":"object"},"dossierEvidence":{"type":"object"},"safety":{"type":"string"},"timestamp":{"type":"string","format":"date-time"},"_errors":{"type":"array","items":{"type":"string"}}}}}}}},"description":"Builds a deterministic, dossier-safe A2MDM decision-object projection for a synthetic Stadtwerk Mauer handover case. The endpoint preserves scalar decision context across system boundaries and exposes missing-input follow-ups. It is read-only and does not create A2MDM persistence, workflow, HITL, Budibase, Landing Registry, MaKo, billing, settlement, tariff, device-control, SMGW/CLS or external connector actions."}},"/api/dashboard-api/gremiencoach-workbook-readiness":{"get":{"summary":"Gremiencoach workbook readiness - read-only private-prep status","tags":["Dashboard API"],"operationId":"dashboard_api_gremiencoachWorkbookReadinessStatus","parameters":[{"name":"tenantId","in":"query","required":false,"schema":{"type":"string"}},{"name":"workbookId","in":"query","required":false,"schema":{"type":"string"}},{"name":"committeeContext","in":"query","required":false,"schema":{"type":"string"}},{"name":"processHint","in":"query","required":false,"schema":{"type":"string"}},{"name":"evidenceProfile","in":"query","required":false,"schema":{"type":"string"}},{"name":"sourceRegister","in":"query","required":false,"schema":{"type":"string"}},{"name":"processRole","in":"query","required":false,"schema":{"type":"string"}},{"name":"regulatoryReference","in":"query","required":false,"schema":{"type":"string"}},{"name":"artifactClassification","in":"query","required":false,"schema":{"type":"string"}},{"name":"releaseBoundary","in":"query","required":false,"schema":{"type":"string"}},{"name":"includeSyntheticRows","in":"query","required":false,"schema":{"type":"boolean"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only Gremiencoach workbook readiness status","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string"},"capabilityKey":{"type":"string"},"safety":{"type":"string"},"claimRows":{"type":"array"},"evidenceGapRows":{"type":"array"},"processContextRows":{"type":"array"},"draftArtifactRows":{"type":"array"},"guardrailRows":{"type":"array"},"positiveFollowUpRows":{"type":"array"},"sourceActions":{"type":"object"},"dossierEvidence":{"type":"object"},"timestamp":{"type":"string","format":"date-time"},"_errors":{"type":"array","items":{"type":"string"}}}}}}}},"description":"Builds a deterministic, anonymized readiness contract for VNB committee workbook preparation. The endpoint returns scalar rows for evidence-backed candidate claims, evidence gaps, VDMI/process context, draft artifact intents, guardrails and positive follow-ups. It is read-only and does not upload, parse, retain, embed or train on private Office/PDF/Excel/protocol/mail content; does not create Office files; does not call M365/SharePoint/Graph, mail/calendar/tasks or external connectors; and does not publish, approve, settle, bill, control devices, create HITL/workflows or hardcode Personal Agent behavior."}},"/api/dashboard-api/decision-readiness-matrix":{"get":{"summary":"Decision-readiness matrix -- read-only VNB OPL/budget evidence","tags":["Dashboard API"],"operationId":"dashboard_api_decisionReadinessMatrixStatus","parameters":[{"name":"caseId","in":"query","required":false,"schema":{"type":"string"}},{"name":"measureId","in":"query","required":false,"schema":{"type":"string"}},{"name":"measureName","in":"query","required":false,"schema":{"type":"string"}},{"name":"category","in":"query","required":false,"schema":{"type":"string"}},{"name":"budgetStatus","in":"query","required":false,"schema":{"type":"string"}},{"name":"financingOption","in":"query","required":false,"schema":{"type":"string"}},{"name":"riskIfNotImplemented","in":"query","required":false,"schema":{"type":"string"}},{"name":"evidenceSource","in":"query","required":false,"schema":{"type":"string"}},{"name":"owner","in":"query","required":false,"schema":{"type":"string"}},{"name":"committeeWindow","in":"query","required":false,"schema":{"type":"string"}},{"name":"nextDecisionPoint","in":"query","required":false,"schema":{"type":"string"}},{"name":"blockers","in":"query","required":false,"schema":{"type":"string"}},{"name":"openEvidence","in":"query","required":false,"schema":{"type":"string"}},{"name":"includeSyntheticRows","in":"query","required":false,"schema":{"type":"boolean"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only decision-readiness matrix evidence view","content":{"application/json":{"schema":{"type":"object","properties":{"capabilityKey":{"type":"string"},"safety":{"type":"string"},"status":{"type":"string"},"rows":{"type":"array"},"readinessCounts":{"type":"object"},"missingEvidence":{"type":"array"},"positiveFollowUps":{"type":"array"},"decisionBoundaries":{"type":"array"},"sourceActions":{"type":"object"},"dossierEvidence":{"type":"object"},"timestamp":{"type":"string","format":"date-time"},"_errors":{"type":"array","items":{"type":"string"}}}}}}}},"description":"Classifies caller-supplied VNB OPL, budget and measure facts into a read-only decision-readiness matrix. The endpoint reports row readiness, budget/financing risk, evidence gaps, owner and committee-window context, positive follow-ups and explicit side-effect guards. It does not approve budgets, choose financing, create procurement/project records, write SAP/ERP, create HITL/workflow/webhooks, mutate billing/settlement/tariff/MaKo/device-control state, call external connectors or add Personal-Agent shortcuts."}},"/api/dashboard-api/cross-system-variance-matrix":{"get":{"summary":"Cross-system variance matrix -- read-only VNB evidence view","tags":["Dashboard API"],"operationId":"dashboard_api_crossSystemVarianceMatrixStatus","parameters":[{"name":"caseId","in":"query","required":false,"schema":{"type":"string"}},{"name":"varianceId","in":"query","required":false,"schema":{"type":"string"}},{"name":"sourceSystem","in":"query","required":false,"schema":{"type":"string"}},{"name":"targetSystem","in":"query","required":false,"schema":{"type":"string"}},{"name":"domain","in":"query","required":false,"schema":{"type":"string"}},{"name":"affectedObject","in":"query","required":false,"schema":{"type":"string"}},{"name":"amountEur","in":"query","required":false,"schema":{"type":"number"}},{"name":"revenueImpact","in":"query","required":false,"schema":{"type":"string"}},{"name":"assetScope","in":"query","required":false,"schema":{"type":"string"}},{"name":"owner","in":"query","required":false,"schema":{"type":"string"}},{"name":"deadline","in":"query","required":false,"schema":{"type":"string"}},{"name":"evidence","in":"query","required":false,"schema":{"type":"string"}},{"name":"threshold","in":"query","required":false,"schema":{"type":"string"}},{"name":"resolutionStatus","in":"query","required":false,"schema":{"type":"string"}},{"name":"openEvidence","in":"query","required":false,"schema":{"type":"string"}},{"name":"includeSyntheticRows","in":"query","required":false,"schema":{"type":"boolean"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only cross-system variance evidence matrix","content":{"application/json":{"schema":{"type":"object","properties":{"capabilityKey":{"type":"string"},"safety":{"type":"string"},"status":{"type":"string"},"rows":{"type":"array"},"varianceCounts":{"type":"object"},"missingEvidence":{"type":"array"},"positiveFollowUps":{"type":"array"},"decisionBoundaries":{"type":"array"},"sourceActions":{"type":"object"},"dossierEvidence":{"type":"object"},"timestamp":{"type":"string","format":"date-time"},"_errors":{"type":"array","items":{"type":"string"}}}}}}}},"description":"Classifies caller-supplied VNB revenue, budget and asset-data variances into a read-only evidence matrix. The endpoint reports row state, source-system lineage, missing evidence, owner/deadline/threshold hints, positive follow-ups and explicit no-call guards. It does not connect to ERP/SAP/GIS/MDM, reconcile systems, persist records, approve revenue, book finance, mutate master data, create HITL/workflow/webhooks, call external connectors or add Personal-Agent shortcuts."}},"/api/dashboard-api/regulatory-signal-process-translator":{"get":{"summary":"Regulatory signal process translator -- read-only governance evidence view","tags":["Dashboard API"],"operationId":"dashboard_api_regulatorySignalProcessTranslatorStatus","parameters":[{"name":"signalId","in":"query","required":false,"schema":{"type":"string"}},{"name":"sourceName","in":"query","required":false,"schema":{"type":"string"}},{"name":"publishedAt","in":"query","required":false,"schema":{"type":"string"}},{"name":"signalText","in":"query","required":false,"schema":{"type":"string"}},{"name":"summary","in":"query","required":false,"schema":{"type":"string"}},{"name":"affectedDomain","in":"query","required":false,"schema":{"type":"string"}},{"name":"processHint","in":"query","required":false,"schema":{"type":"string"}},{"name":"deadlineHint","in":"query","required":false,"schema":{"type":"string"}},{"name":"ownerHint","in":"query","required":false,"schema":{"type":"string"}},{"name":"evidenceHint","in":"query","required":false,"schema":{"type":"string"}},{"name":"testCaseHint","in":"query","required":false,"schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only operational translation of supplied regulatory signal facts","content":{"application/json":{"schema":{"type":"object","properties":{"capabilityKey":{"type":"string"},"safety":{"type":"string"},"status":{"type":"string"},"signalSummary":{"type":"object"},"affectedProcesses":{"type":"array"},"dataRequirements":{"type":"array"},"evidenceRequirements":{"type":"array"},"testCaseHints":{"type":"array"},"decisionGates":{"type":"array"},"missingEvidence":{"type":"array"},"positiveFollowUps":{"type":"array"},"decisionBoundaries":{"type":"array"},"sourceActions":{"type":"object"},"dossierEvidence":{"type":"object"},"timestamp":{"type":"string","format":"date-time"},"_errors":{"type":"array","items":{"type":"string"}}}}}}}},"description":"Translates caller-supplied regulatory signal facts into operational VNB/EVU process, data, evidence, test-case and decision-gate hints. The endpoint does not provide legal advice, determine compliance truth, crawl sources, create workflow/HITL tasks, write SAP/ERP/GIS/MDM/Budibase data, mutate MaKo/billing/settlement/tariff/device-control state, call external connectors or add Personal-Agent shortcuts."}},"/api/dashboard-api/cost-review-committee-status":{"get":{"summary":"Cost review committee status - read-only dossier-safe evidence board","tags":["Dashboard API"],"operationId":"dashboard_api_costReviewCommitteeStatus","parameters":[{"name":"reviewId","in":"query","required":false,"schema":{"type":"string"}},{"name":"caseId","in":"query","required":false,"schema":{"type":"string"}},{"name":"owner","in":"query","required":false,"schema":{"type":"string"}},{"name":"reviewStatus","in":"query","required":false,"schema":{"type":"string"}},{"name":"dataOrigin","in":"query","required":false,"schema":{"type":"string"}},{"name":"assetRelevance","in":"query","required":false,"schema":{"type":"string"}},{"name":"revenueRelevance","in":"query","required":false,"schema":{"type":"string"}},{"name":"decisionReadiness","in":"query","required":false,"schema":{"type":"string"}},{"name":"escalationThreshold","in":"query","required":false,"schema":{"type":"string"}},{"name":"nextCommitteeGate","in":"query","required":false,"schema":{"type":"string"}},{"name":"dueDate","in":"query","required":false,"schema":{"type":"string"}},{"name":"amountClass","in":"query","required":false,"schema":{"type":"string"}},{"name":"rationale","in":"query","required":false,"schema":{"type":"string"}},{"name":"evidenceRefs","in":"query","required":false,"schema":{"oneOf":[{"type":"array","items":{"type":"string"}},{"type":"string"}]}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only cost review evidence board","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string"},"safety":{"type":"string"},"evidenceItems":{"type":"array"},"missingEvidence":{"type":"array"},"positiveFollowUps":{"type":"array"},"owner":{"type":"string"},"reviewStatus":{"type":"string"},"dataOrigin":{"type":"string"},"assetRelevance":{"type":"string"},"revenueRelevance":{"type":"string"},"decisionReadiness":{"type":"string"},"escalationThreshold":{"type":"string"},"nextCommitteeGate":{"type":"string"},"sourceActions":{"type":"object"},"dossierEvidence":{"type":"object"},"timestamp":{"type":"string","format":"date-time"},"_errors":{"type":"array","items":{"type":"string"}}}}}}}},"description":"Builds a deterministic evidence and committee-readiness view for cost reviews. The endpoint is read-only and does not write ERP/SAP/PSP/accounting records, approve budgets, execute committee decisions, create HITL/workflow items, send messages or call external connectors."}},"/api/dashboard-api/redispatch-participation-readiness-status":{"get":{"summary":"Redispatch participation readiness status -- read-only Workbench projection","tags":["Dashboard API"],"operationId":"dashboard_api_redispatchParticipationReadinessStatus","parameters":[{"in":"query","name":"tenantId","schema":{"type":"string"}},{"in":"query","name":"syntheticRedispatchAssetPortfolio","schema":{"type":"string"}},{"in":"query","name":"installationGridLocationEvidence","schema":{"type":"string"}},{"in":"query","name":"remoteControlCommunicationTestEvidence","schema":{"type":"string"}},{"in":"query","name":"forecastDispatchTestProof","schema":{"type":"string"}},{"in":"query","name":"readinessReviewDecision","schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only Redispatch participation readiness status"}},"description":"Builds deterministic redispatch readiness evidence from supplied facts."}},"/api/dashboard-api/mastr-sync-gap-status":{"get":{"summary":"MaStR Sync-Gap alerting status -- read-only Workbench projection","tags":["Dashboard API"],"operationId":"dashboard_api_mastrSyncGapStatus","parameters":[{"in":"query","name":"tenantId","schema":{"type":"string"}},{"in":"query","name":"mastrFreshnessEvidence","schema":{"type":"string"}},{"in":"query","name":"redispatchStammdatenComparison","schema":{"type":"string"}},{"in":"query","name":"syncGapAlertFeed","schema":{"type":"string"}},{"in":"query","name":"reconciliationApprovalDecision","schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only MaStR Sync-Gap alerting status"}},"description":"Builds deterministic MaStR sync gap alerting evidence from supplied facts."}},"/api/dashboard-api/decommissioned-asset-reconciliation-status":{"get":{"summary":"Decommissioned Asset Reconciliation status -- read-only Workbench projection","tags":["Dashboard API"],"operationId":"dashboard_api_decommissionedAssetReconciliationStatus","parameters":[{"in":"query","name":"tenantId","schema":{"type":"string"}},{"in":"query","name":"gisDecommissionedAssetsEvidence","schema":{"type":"string"}},{"in":"query","name":"sapAnlagenspiegelEvidence","schema":{"type":"string"}},{"in":"query","name":"reconciliationDiscrepancyFeed","schema":{"type":"string"}},{"in":"query","name":"reconciliationApprovalDecision","schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only Decommissioned Asset Reconciliation status"}},"description":"Builds deterministic Decommissioned Asset Reconciliation evidence from supplied facts."}},"/api/dashboard-api/energy-sharing-collective-approval-status":{"get":{"summary":"Energy Sharing Collective Approval status -- read-only Workbench projection","tags":["Dashboard API"],"operationId":"dashboard_api_energySharingCollectiveApprovalStatus","parameters":[{"in":"query","name":"tenantId","schema":{"type":"string"}},{"in":"query","name":"syntheticCollectiveBoundaryEvidence","schema":{"type":"string"}},{"in":"query","name":"operatorParticipantBoundaryEvidence","schema":{"type":"string"}},{"in":"query","name":"meteringConceptEvidence","schema":{"type":"string"}},{"in":"query","name":"contractConsentMarketRoleEvidence","schema":{"type":"string"}},{"in":"query","name":"allocationBillingSettlementGapEvidence","schema":{"type":"string"}},{"in":"query","name":"approvalReadinessDecision","schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only Energy Sharing Collective Approval status"}},"description":"Builds deterministic Energy Sharing Collective Approval evidence from supplied facts."}},"/api/dashboard-api/steering-artifact-acceptance-gate":{"get":{"summary":"Steering artifact acceptance gate — read-only dossier-safe status","tags":["Dashboard API"],"operationId":"dashboard_api_steeringArtifactAcceptanceGateStatus","parameters":[{"name":"artifactType","in":"query","required":false,"schema":{"type":"string"}},{"name":"artifactName","in":"query","required":false,"schema":{"type":"string"}},{"name":"targetRole","in":"query","required":false,"schema":{"type":"string"}},{"name":"useCase","in":"query","required":false,"schema":{"type":"string"}},{"name":"itemCount","in":"query","required":false,"schema":{"type":"number"}},{"name":"maintenanceMinutesPerWeek","in":"query","required":false,"schema":{"type":"number"}},{"name":"updateCadence","in":"query","required":false,"schema":{"type":"string"}},{"name":"owner","in":"query","required":false,"schema":{"type":"string"}},{"name":"deputyOwner","in":"query","required":false,"schema":{"type":"string"}},{"name":"usageEvidence","in":"query","required":false,"schema":{"type":"string"}},{"name":"escalationCriterion","in":"query","required":false,"schema":{"type":"string"}},{"name":"rolloutDecision","in":"query","required":false,"schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only steering artifact acceptance and maintenance gate status","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string"},"artifact":{"type":"object"},"scalarRows":{"type":"array"},"missingEvidence":{"type":"array"},"operationalRisks":{"type":"array"},"positiveFollowUps":{"type":"array"},"sourceActions":{"type":"object"},"dossierEvidence":{"type":"object"},"safety":{"type":"string"},"timestamp":{"type":"string","format":"date-time"},"_errors":{"type":"array","items":{"type":"string"}}}}}}}},"description":"Builds a deterministic advisory acceptance and maintenance gate for proposed Cernion steering artifacts. It covers target role, use case, bounded item/card count, expected maintenance effort, update cadence, owner/deputy, usage evidence, escalation/retirement criterion and rollout decision. The endpoint is read-only and does not persist artifacts, write Budibase data, create workflows/HITL items, call external connectors or mutate billing, settlement, MaKo, tariff or device-control state."}},"/api/dashboard-api/communication-break-process-risk":{"get":{"summary":"Communication-break process-risk gate - read-only dossier-safe status","tags":["Dashboard API"],"operationId":"dashboard_api_communicationBreakProcessRiskStatus","parameters":[{"name":"processDomain","in":"query","required":false,"schema":{"type":"string"}},{"name":"affectedDecision","in":"query","required":false,"schema":{"type":"string"}},{"name":"presentationStatus","in":"query","required":false,"schema":{"type":"string"}},{"name":"protocolStatus","in":"query","required":false,"schema":{"type":"string"}},{"name":"questionResponseWindow","in":"query","required":false,"schema":{"type":"string"}},{"name":"informationDuty","in":"query","required":false,"schema":{"type":"string"}},{"name":"fachlicheBegleitung","in":"query","required":false,"schema":{"type":"string"}},{"name":"owner","in":"query","required":false,"schema":{"type":"string"}},{"name":"deputy","in":"query","required":false,"schema":{"type":"string"}},{"name":"blockedDecision","in":"query","required":false,"schema":{"type":"string"}},{"name":"nextEvidencePoint","in":"query","required":false,"schema":{"type":"string"}},{"name":"dueDate","in":"query","required":false,"schema":{"type":"string"}},{"name":"escalationCriterion","in":"query","required":false,"schema":{"type":"string"}},{"name":"proofLabel","in":"query","required":false,"schema":{"type":"string"}},{"name":"proofLink","in":"query","required":false,"schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only communication-break process-risk status","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string"},"riskLevel":{"type":"string"},"process":{"type":"object"},"scalarRows":{"type":"array"},"missingEvidence":{"type":"array"},"positiveFollowUps":{"type":"array"},"sourceActions":{"type":"object"},"dossierEvidence":{"type":"object"},"safety":{"type":"string"},"timestamp":{"type":"string","format":"date-time"},"_errors":{"type":"array","items":{"type":"string"}}}}}}}},"description":"Builds a deterministic advisory process-risk gate for communication breaks around handover or management decisions. It covers process/domain, affected or blocked decision, presentation and protocol evidence, question-response window, information duty, fachliche Begleitung, owner/deputy, next evidence point, due date and escalation criterion. The endpoint is read-only and does not score people, ingest email/calendar or chat data, create workflows/HITL items, write Budibase data, call external connectors or mutate MaKo, billing, settlement, tariff or device-control state."}},"/api/dashboard-api/no-regret-measure-proof-gate":{"get":{"summary":"No-Regret measure proof gate - read-only dossier-safe status","tags":["Dashboard API"],"operationId":"dashboard_api_noRegretMeasureProofGateStatus","parameters":[{"name":"measureName","in":"query","required":false,"schema":{"type":"string"}},{"name":"measureType","in":"query","required":false,"schema":{"type":"string"}},{"name":"targetDomain","in":"query","required":false,"schema":{"type":"string"}},{"name":"scenarioCoverage","in":"query","required":false,"schema":{"type":"string"}},{"name":"budgetAnchor","in":"query","required":false,"schema":{"type":"string"}},{"name":"costRange","in":"query","required":false,"schema":{"type":"string"}},{"name":"expectedBenefitRange","in":"query","required":false,"schema":{"type":"string"}},{"name":"regulatoryFit","in":"query","required":false,"schema":{"type":"string"}},{"name":"decisionOwner","in":"query","required":false,"schema":{"type":"string"}},{"name":"objectionWindow","in":"query","required":false,"schema":{"type":"string"}},{"name":"evidenceSource","in":"query","required":false,"schema":{"type":"string"}},{"name":"nextManagementGate","in":"query","required":false,"schema":{"type":"string"}},{"name":"dueDate","in":"query","required":false,"schema":{"type":"string"}},{"name":"proofLabel","in":"query","required":false,"schema":{"type":"string"}},{"name":"proofLink","in":"query","required":false,"schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only No-Regret measure proof-gate status","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string"},"riskLevel":{"type":"string"},"measure":{"type":"object"},"scalarRows":{"type":"array"},"missingEvidence":{"type":"array"},"positiveFollowUps":{"type":"array"},"sourceActions":{"type":"object"},"dossierEvidence":{"type":"object"},"safety":{"type":"string"},"timestamp":{"type":"string","format":"date-time"},"_errors":{"type":"array","items":{"type":"string"}}}}}}}},"description":"Builds a deterministic advisory proof gate for No-Regret measure claims. It covers measure identity, target domain, scenario coverage, budget anchor, cost and benefit ranges, regulatory fit, decision owner, objection window, evidence source, next management gate and due date. The endpoint is read-only and does not approve investment, reserve budget, book finance, create workflows/HITL items, call external connectors or mutate billing, settlement, tariff or device-control state."}},"/api/dashboard-api/anschlusskapazitaet-evidence-queue":{"get":{"summary":"Anschlusskapazitaet evidence queue - read-only dossier-safe status","tags":["Dashboard API"],"operationId":"dashboard_api_anschlusskapazitaetEvidenceQueueStatus","parameters":[{"name":"connectionRequestId","in":"query","required":false,"schema":{"type":"string"}},{"name":"netzverknuepfungspunktHint","in":"query","required":false,"schema":{"type":"string"}},{"name":"capacityAssumptionKw","in":"query","required":false,"schema":{"type":"number"}},{"name":"gridRestrictionHint","in":"query","required":false,"schema":{"type":"string"}},{"name":"futureDemandContext","in":"query","required":false,"schema":{"type":"string"}},{"name":"legalQuestionMarker","in":"query","required":false,"schema":{"type":"string"}},{"name":"fnavOptionMarker","in":"query","required":false,"schema":{"type":"string"}},{"name":"evidenceStatus","in":"query","required":false,"schema":{"type":"string"}},{"name":"owner","in":"query","required":false,"schema":{"type":"string"}},{"name":"dueDate","in":"query","required":false,"schema":{"type":"string"}},{"name":"nextGate","in":"query","required":false,"schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only connection-capacity evidence queue","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string"},"evidenceQueue":{"type":"object"},"evidenceItems":{"type":"array"},"missingEvidence":{"type":"array"},"positiveFollowUps":{"type":"array"},"nextGate":{"type":"string"},"sourceActions":{"type":"object"},"dossierEvidence":{"type":"object"},"safety":{"type":"string"},"timestamp":{"type":"string","format":"date-time"},"_errors":{"type":"array","items":{"type":"string"}}}}}}}},"description":"Builds a deterministic evidence queue for VNB connection-capacity cases. The endpoint is read-only and does not reserve capacity, approve or reject grid-connection requests, decide fNAV/legal questions, create HITL tasks, or mutate billing, tariff, MaKo, settlement or external connector state."}},"/api/dashboard-api/connection-deadline-evidence-queue":{"get":{"summary":"Connection deadline evidence queue - read-only dossier-safe status","tags":["Dashboard API"],"operationId":"dashboard_api_connectionDeadlineEvidenceQueueStatus","parameters":[{"name":"caseId","in":"query","required":false,"schema":{"type":"string"}},{"name":"connectionType","in":"query","required":false,"schema":{"type":"string"}},{"name":"deadlineDate","in":"query","required":false,"schema":{"type":"string"}},{"name":"responsibleVnb","in":"query","required":false,"schema":{"type":"string"}},{"name":"technicalPlausibility","in":"query","required":false,"schema":{"type":"string"}},{"name":"owner","in":"query","required":false,"schema":{"type":"string"}},{"name":"nextGate","in":"query","required":false,"schema":{"type":"string"}},{"name":"missingEvidence","in":"query","required":false,"schema":{"type":"array","items":{"type":"string"}}},{"name":"clarificationPoints","in":"query","required":false,"schema":{"type":"array","items":{"type":"string"}}},{"name":"communicationContext","in":"query","required":false,"schema":{"type":"string"}},{"name":"asOf","in":"query","required":false,"schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only connection-deadline evidence queue","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string"},"deadlineRisk":{"type":"string"},"evidenceItems":{"type":"array"},"missingEvidence":{"type":"array"},"clarificationPoints":{"type":"array"},"positiveFollowUps":{"type":"array"},"communicationNoteDraft":{"type":"object"},"sourceActions":{"type":"object"},"dossierEvidence":{"type":"object"},"safety":{"type":"string"}}}}}}},"description":"Builds a deterministic evidence queue for deadline-critical VNB connection cases. The endpoint is read-only and does not send communication, approve/reject/condition a connection, reserve capacity, create workflow/HITL tasks, calculate legally binding deadlines, or mutate CRM, customer portal, billing, settlement, MaKo, tariff or device-control state."}},"/api/dashboard-api/layer0-audit-drilldown":{"get":{"summary":"Layer-0 audit drilldown note - read-only dossier-safe validation note","tags":["Dashboard API"],"operationId":"dashboard_api_layer0AuditDrilldownNoteStatus","parameters":[{"name":"kpiId","in":"query","required":false,"schema":{"type":"string"}},{"name":"topic","in":"query","required":false,"schema":{"type":"string"}},{"name":"dataSource","in":"query","required":false,"schema":{"type":"string"}},{"name":"peerDeviation","in":"query","required":false,"schema":{"type":"string"}},{"name":"processHint","in":"query","required":false,"schema":{"type":"string"}},{"name":"periodHint","in":"query","required":false,"schema":{"type":"string"}},{"name":"owner","in":"query","required":false,"schema":{"type":"string"}},{"name":"next90DayFocus","in":"query","required":false,"schema":{"type":"string"}},{"name":"benchmarkPeerGroup","in":"query","required":false,"schema":{"type":"string"}},{"name":"observedValue","in":"query","required":false,"schema":{"type":"string"}},{"name":"expectedValue","in":"query","required":false,"schema":{"type":"string"}},{"name":"unit","in":"query","required":false,"schema":{"type":"string"}},{"name":"evidenceStatus","in":"query","required":false,"schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only Layer-0 audit drilldown validation note","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string"},"auditNote":{"type":"object"},"checkFields":{"type":"array"},"missingEvidence":{"type":"array"},"positiveFollowUps":{"type":"array"},"sourceActions":{"type":"object"},"dossierEvidence":{"type":"object"},"safety":{"type":"string"},"timestamp":{"type":"string","format":"date-time"},"_errors":{"type":"array","items":{"type":"string"}}}}}}}},"description":"Turns an anomalous Layer-0 KPI into a deterministic validation note with data source, peer deviation, hypothesis, misinterpretation risk, ten check fields, owner, next 90-day step, evidence gaps and positive follow-ups. The endpoint is read-only and does not create persistent audit queues, external benchmark calls, reports, HITL tasks, legal/regulatory final judgments or production mutations."}},"/api/dashboard-api/legal-clarification-operating-model":{"get":{"summary":"Legal clarification operating model - read-only dossier-safe status","tags":["Dashboard API"],"operationId":"dashboard_api_legalClarificationOperatingModelStatus","parameters":[{"name":"caseId","in":"query","required":false,"schema":{"type":"string"}},{"name":"clarificationPoint","in":"query","required":false,"schema":{"type":"string"}},{"name":"affectedDecision","in":"query","required":false,"schema":{"type":"string"}},{"name":"legalStatus","in":"query","required":false,"schema":{"type":"string"}},{"name":"contractStatus","in":"query","required":false,"schema":{"type":"string"}},{"name":"owner","in":"query","required":false,"schema":{"type":"string"}},{"name":"ownerContact","in":"query","required":false,"schema":{"type":"string"}},{"name":"noRegretDataNeeds","in":"query","required":false,"schema":{"oneOf":[{"type":"array","items":{"type":"string"}},{"type":"string"}]}},{"name":"availableEvidence","in":"query","required":false,"schema":{"oneOf":[{"type":"array","items":{"type":"string"}},{"type":"string"}]}},{"name":"scenarioOptions","in":"query","required":false,"schema":{"oneOf":[{"type":"array","items":{"type":"string"}},{"type":"string"}]}},{"name":"redLines","in":"query","required":false,"schema":{"oneOf":[{"type":"array","items":{"type":"string"}},{"type":"string"}]}},{"name":"implementationStatus","in":"query","required":false,"schema":{"type":"string"}},{"name":"decisionReadiness","in":"query","required":false,"schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only legal clarification operating-model status","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string"},"legalStatus":{"type":"string"},"decisionReadiness":{"type":"string"},"preparationModel":{"type":"object"},"missingEvidence":{"type":"array"},"positiveFollowUps":{"type":"array"},"sourceActions":{"type":"object"},"dossierEvidence":{"type":"object"},"safety":{"type":"string"},"timestamp":{"type":"string","format":"date-time"},"_errors":{"type":"array","items":{"type":"string"}}}}}}}},"description":"Builds a deterministic operating-model evidence view for VNB cases where a legal clarification is pending. The endpoint is read-only and does not approve, release, dispatch, bill, settle, mutate tariffs, trigger MaKo, create HITL work or interpret law."}},"/api/dashboard-api/dr-readiness-evidence":{"get":{"summary":"DR readiness evidence gate - read-only dossier-safe status","tags":["Dashboard API"],"operationId":"dashboard_api_drReadinessEvidenceStatus","parameters":[{"name":"tenantScope","in":"query","required":false,"schema":{"type":"string"}},{"name":"storeInventoryStatus","in":"query","required":false,"schema":{"type":"string"}},{"name":"snapshotManifestStatus","in":"query","required":false,"schema":{"type":"string"}},{"name":"restoreDrillStatus","in":"query","required":false,"schema":{"type":"string"}},{"name":"rtoTarget","in":"query","required":false,"schema":{"type":"string"}},{"name":"rpoTarget","in":"query","required":false,"schema":{"type":"string"}},{"name":"owner","in":"query","required":false,"schema":{"type":"string"}},{"name":"lastDrillDate","in":"query","required":false,"schema":{"type":"string"}},{"name":"nextDrillDue","in":"query","required":false,"schema":{"type":"string"}},{"name":"perTenantRestoreStatus","in":"query","required":false,"schema":{"type":"string"}},{"name":"notes","in":"query","required":false,"schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only DR readiness evidence status","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string"},"readinessLevel":{"type":"string"},"readinessScore":{"type":"number"},"evidenceItems":{"type":"array"},"missingEvidence":{"type":"array"},"riskFlags":{"type":"array"},"positiveFollowUps":{"type":"array"},"sourceActions":{"type":"object"},"dossierEvidence":{"type":"object"},"safety":{"type":"string"},"timestamp":{"type":"string","format":"date-time"},"_errors":{"type":"array","items":{"type":"string"}}}}}}}},"description":"Builds deterministic disaster-recovery readiness evidence for backup, restore-drill, RTO/RPO and tenant-scope cutover checks. The endpoint is read-only and does not execute backup, restore, scheduler, replication, external connector, webhook, key handling, tenant-data mutation or Personal Agent actions."}},"/api/dashboard-api/special-grid-usage-impact-map":{"get":{"summary":"Special-grid-usage impact map - read-only dossier-safe status","tags":["Dashboard API"],"operationId":"dashboard_api_specialGridUsageImpactMapStatus","parameters":[{"name":"caseId","in":"query","required":false,"schema":{"type":"string"}},{"name":"caseType","in":"query","required":false,"schema":{"type":"string"}},{"name":"customerId","in":"query","required":false,"schema":{"type":"string"}},{"name":"applicationStatus","in":"query","required":false,"schema":{"type":"string"}},{"name":"formStatus","in":"query","required":false,"schema":{"type":"string"}},{"name":"deadlineStatus","in":"query","required":false,"schema":{"type":"string"}},{"name":"quantityBasis","in":"query","required":false,"schema":{"type":"string"}},{"name":"calculationLogicRef","in":"query","required":false,"schema":{"type":"string"}},{"name":"billingImpact","in":"query","required":false,"schema":{"type":"string"}},{"name":"eogImpact","in":"query","required":false,"schema":{"type":"string"}},{"name":"tariffImpact","in":"query","required":false,"schema":{"type":"string"}},{"name":"communicationStatus","in":"query","required":false,"schema":{"type":"string"}},{"name":"ownerRole","in":"query","required":false,"schema":{"type":"string"}},{"name":"regulatoryUncertainty","in":"query","required":false,"schema":{"type":"string"}},{"name":"sourceDatapoints","in":"query","required":false,"schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only special-grid-usage impact map status","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string"},"readinessLevel":{"type":"string"},"readinessScore":{"type":"number"},"caseSummary":{"type":"object"},"missingEvidence":{"type":"array"},"positiveFollowUps":{"type":"array"},"sourceActions":{"type":"object"},"dossierEvidence":{"type":"object"},"safety":{"type":"string"},"timestamp":{"type":"string","format":"date-time"},"_errors":{"type":"array","items":{"type":"string"}}}}}}}},"description":"Builds a deterministic impact map for Par. 19 StromNEV, self-consumption and special-grid-usage cases. The endpoint is read-only and does not execute legal interpretation, calculation, billing, settlement, tariff, customer communication, HITL, external connector or Personal Agent actions."}},"/api/dashboard-api/liquidity-planning-governance":{"get":{"summary":"Liquidity planning governance - read-only dossier-safe status","tags":["Dashboard API"],"operationId":"dashboard_api_liquidityPlanningGovernanceStatus","parameters":[{"name":"planningRunId","in":"query","required":false,"schema":{"type":"string"}},{"name":"planningHorizon","in":"query","required":false,"schema":{"type":"string"}},{"name":"sourceRegister","in":"query","required":false,"schema":{"type":"string"}},{"name":"dictionaryVersion","in":"query","required":false,"schema":{"type":"string"}},{"name":"vatLogicRef","in":"query","required":false,"schema":{"type":"string"}},{"name":"cashPoolSettlementRef","in":"query","required":false,"schema":{"type":"string"}},{"name":"ownerRaci","in":"query","required":false,"schema":{"type":"string"}},{"name":"correctionWorkflow","in":"query","required":false,"schema":{"type":"string"}},{"name":"approvalStatus","in":"query","required":false,"schema":{"type":"string"}},{"in":"query","name":"sapAccountSources","schema":{"type":"string"}},{"in":"query","name":"controllingSourceIds","schema":{"type":"string"}},{"in":"query","name":"loanTmsSourceIds","schema":{"type":"string"}},{"in":"query","name":"scenarioAssumptions","schema":{"type":"string"}},{"in":"query","name":"validationRules","schema":{"type":"string"}},{"in":"query","name":"plausibilityChecks","schema":{"type":"string"}},{"in":"query","name":"sourceHealth","schema":{"type":"string"}},{"in":"query","name":"liquidityRiskFlags","schema":{"type":"string"}},{"in":"query","name":"interestRiskFlags","schema":{"type":"string"}},{"in":"query","name":"investmentLinkRefs","schema":{"type":"string"}},{"in":"query","name":"sourceDatapoints","schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only liquidity planning governance status","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string"},"readinessLevel":{"type":"string"},"readinessScore":{"type":"number"},"sourceCoverage":{"type":"object"},"evidenceItems":{"type":"array"},"missingEvidence":{"type":"array"},"riskFlags":{"type":"array"},"positiveFollowUps":{"type":"array"},"sourceActions":{"type":"object"},"dossierEvidence":{"type":"object"},"safety":{"type":"string"},"timestamp":{"type":"string","format":"date-time"},"_errors":{"type":"array","items":{"type":"string"}}}}}}}},"description":"Builds deterministic governance evidence for liquidity, interest, SAP account, TMS loan, VAT logic and cash-pool planning contexts. The endpoint is read-only and does not calculate Treasury/cashflow/VAT values, approve finance workflows, send payments, mutate billing/settlement/tariffs/contracts/EOG, call connectors, create HITL items or execute Personal Agent actions."}},"/api/dashboard-api/energy-sharing-simulation-gate":{"get":{"summary":"Energy-Sharing simulation gate - read-only dossier-safe status","tags":["Dashboard API"],"operationId":"dashboard_api_energySharingSimulationGateStatus","parameters":[{"name":"communityId","in":"query","required":false,"schema":{"type":"string"}},{"name":"gridOperatorId","in":"query","required":false,"schema":{"type":"string"}},{"name":"participantCount","in":"query","required":false,"schema":{"type":"string"}},{"name":"participantEvidenceRef","in":"query","required":false,"schema":{"type":"string"}},{"name":"maloStatus","in":"query","required":false,"schema":{"type":"string"}},{"name":"meteringReadiness","in":"query","required":false,"schema":{"type":"string"}},{"name":"marketRoleReadiness","in":"query","required":false,"schema":{"type":"string"}},{"name":"dataBasis","in":"query","required":false,"schema":{"type":"string"}},{"name":"a96EvidenceRef","in":"query","required":false,"schema":{"type":"string"}},{"name":"settlementEvidenceRef","in":"query","required":false,"schema":{"type":"string"}},{"name":"contractEvidenceRef","in":"query","required":false,"schema":{"type":"string"}},{"name":"economicsAssumptionRef","in":"query","required":false,"schema":{"type":"string"}},{"name":"generationMaloCount","in":"query","required":false,"schema":{"type":"string"}},{"name":"consumptionMaloCount","in":"query","required":false,"schema":{"type":"string"}},{"name":"maloInventoryEvidenceRef","in":"query","required":false,"schema":{"type":"string"}},{"name":"supplierOrDirectMarketerEvidenceRef","in":"query","required":false,"schema":{"type":"string"}},{"name":"meteringConceptEvidenceRef","in":"query","required":false,"schema":{"type":"string"}},{"name":"imsysStatus","in":"query","required":false,"schema":{"type":"string"}},{"name":"fifteenMinuteValuesReadiness","in":"query","required":false,"schema":{"type":"string"}},{"name":"dataBasisFreshnessRef","in":"query","required":false,"schema":{"type":"string"}},{"name":"residualSupplyContractEvidenceRef","in":"query","required":false,"schema":{"type":"string"}},{"name":"participationStartDate","in":"query","required":false,"schema":{"type":"string"}},{"name":"participationEndDate","in":"query","required":false,"schema":{"type":"string"}},{"name":"eligibilityEvidenceRef","in":"query","required":false,"schema":{"type":"string"}},{"name":"exceptionRateEvidenceRef","in":"query","required":false,"schema":{"type":"string"}},{"name":"economicsThresholdRef","in":"query","required":false,"schema":{"type":"string"}},{"name":"owner","in":"query","required":false,"schema":{"type":"string"}},{"name":"escalationContact","in":"query","required":false,"schema":{"type":"string"}},{"name":"sourceArtifacts","in":"query","required":false,"schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only Energy-Sharing simulation gate status","content":{"application/json":{"schema":{"type":"object","properties":{"gateStatus":{"type":"string"},"simulationStage":{"type":"string"},"readinessScore":{"type":"number"},"missingEvidence":{"type":"array"},"positiveFollowUps":{"type":"array"},"sourceActions":{"type":"object"},"dossierEvidence":{"type":"object"},"safety":{"type":"string"},"timestamp":{"type":"string","format":"date-time"},"_errors":{"type":"array","items":{"type":"string"}}}}}}}},"description":"Classifies Energy-Sharing candidates as learning pilot, simulation-ready, billing-near-ready or blocked by missing evidence. The endpoint is read-only and does not run allocation, settlement/A96 export, MaKo dispatch, billing, tariff mutation, HITL, external connector, customer communication or Personal Agent execution."}},"/api/dashboard-api/energy-sharing-42c-cutover-readiness":{"get":{"summary":"§42c cutover readiness - read-only dossier-safe status","tags":["Dashboard API"],"operationId":"dashboard_api_energySharing42cCutoverReadinessStatus","parameters":[{"name":"cutoverId","in":"query","required":false,"schema":{"type":"string"}},{"name":"pilotTenantId","in":"query","required":false,"schema":{"type":"string"}},{"name":"balanceGroupId","in":"query","required":false,"schema":{"type":"string"}},{"name":"a96DefaultsStatus","in":"query","required":false,"schema":{"type":"string"}},{"name":"specFreezeStatus","in":"query","required":false,"schema":{"type":"string"}},{"name":"pilotTenantStatus","in":"query","required":false,"schema":{"type":"string"}},{"name":"settlementHardeningStatus","in":"query","required":false,"schema":{"type":"string"}},{"name":"allocationLoadTestStatus","in":"query","required":false,"schema":{"type":"string"}},{"name":"runbookStatus","in":"query","required":false,"schema":{"type":"string"}},{"name":"complianceSignoffStatus","in":"query","required":false,"schema":{"type":"string"}},{"name":"rollbackPlanStatus","in":"query","required":false,"schema":{"type":"string"}},{"name":"owner","in":"query","required":false,"schema":{"type":"string"}},{"name":"targetDate","in":"query","required":false,"schema":{"type":"string"}},{"name":"evidenceRefs","in":"query","required":false,"schema":{"oneOf":[{"type":"array","items":{"type":"string"}},{"type":"string"}]}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only §42c cutover readiness status","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string"},"riskLevel":{"type":"string"},"readinessScore":{"type":"number"},"subTracks":{"type":"array"},"missingEvidence":{"type":"array"},"positiveFollowUps":{"type":"array"},"sourceActions":{"type":"object"},"dossierEvidence":{"type":"object"},"safety":{"type":"string"},"timestamp":{"type":"string","format":"date-time"},"_errors":{"type":"array","items":{"type":"string"}}}}}}}},"description":"Evaluates supplied §42c cutover evidence across sub-tracks A-G and returns a dossier-safe readiness gate. The endpoint is read-only and does not provision tenants, migrate data, release A96 exports, execute allocation/settlement, create HITL tasks, run rollback/restore, call external connectors, handle secrets or mutate Personal Agent behavior."}},"/api/dashboard-api/evu-api-migration-diagnostics":{"get":{"summary":"EVU API migration diagnostics - read-only dossier-safe status","tags":["Dashboard API"],"operationId":"dashboard_api_evuApiMigrationDiagnosticsStatus","parameters":[{"name":"businessProcess","in":"query","required":false,"schema":{"type":"string"}},{"name":"endpoint","in":"query","required":false,"schema":{"type":"string"}},{"name":"method","in":"query","required":false,"schema":{"type":"string"}},{"name":"authScope","in":"query","required":false,"schema":{"type":"string"}},{"name":"dataContext","in":"query","required":false,"schema":{"type":"string"}},{"name":"requestShape","in":"query","required":false,"schema":{"type":"string"}},{"name":"validationError","in":"query","required":false,"schema":{"type":"string"}},{"name":"responseCode","in":"query","required":false,"schema":{"type":"string"}},{"name":"completionCriterion","in":"query","required":false,"schema":{"type":"string"}},{"name":"owner","in":"query","required":false,"schema":{"type":"string"}},{"name":"nextStep","in":"query","required":false,"schema":{"type":"string"}},{"name":"ticketRef","in":"query","required":false,"schema":{"type":"string"}},{"name":"systemRef","in":"query","required":false,"schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only EVU API migration diagnostic status","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string"},"safety":{"type":"string"},"evidenceCompleteness":{"type":"number"},"missingEvidence":{"type":"array"},"diagnosticFindings":{"type":"array"},"riskHints":{"type":"array"},"next90DayStep":{"type":"string"},"positiveFollowUps":{"type":"array"},"sourceActions":{"type":"object"},"dossierEvidence":{"type":"object"},"timestamp":{"type":"string","format":"date-time"},"_errors":{"type":"array","items":{"type":"string"}}}}}}}},"description":"Evaluates supplied EVU/VNB API migration observations as a read-only diagnostic matrix. The endpoint does not call live endpoints, run OAuth flows, handle secrets, execute JSON Patch, close third-party processes, create HITL tasks, or trigger MaKo/Billing/Settlement/Tariff actions."}},"/api/dashboard-api/nova-decision-lifecycle-readiness":{"get":{"summary":"NOVA decision lifecycle readiness - read-only dossier-safe status","tags":["Dashboard API"],"operationId":"dashboard_api_novaDecisionLifecycleReadinessStatus","parameters":[{"name":"caseId","in":"query","required":false,"schema":{"type":"string"}},{"name":"decisionKind","in":"query","required":false,"schema":{"type":"string"}},{"name":"lifecycleModel","in":"query","required":false,"schema":{"type":"string"}},{"name":"sourceCatalogue","in":"query","required":false,"schema":{"type":"string"}},{"name":"auditTrail","in":"query","required":false,"schema":{"type":"string"}},{"name":"tenantIsolationEvidence","in":"query","required":false,"schema":{"type":"string"}},{"name":"hitlPolicyEvidence","in":"query","required":false,"schema":{"type":"string"}},{"name":"replayEvidence","in":"query","required":false,"schema":{"type":"string"}},{"name":"expiryEvidence","in":"query","required":false,"schema":{"type":"string"}},{"name":"owner","in":"query","required":false,"schema":{"type":"string"}},{"name":"deadline","in":"query","required":false,"schema":{"type":"string"}},{"name":"openMeasure","in":"query","required":false,"schema":{"type":"string"}},{"name":"evidenceRefs","in":"query","required":false,"schema":{"oneOf":[{"type":"array","items":{"type":"string"}},{"type":"string"}]}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only NOVA decision lifecycle readiness status","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string"},"riskLevel":{"type":"string"},"readinessScore":{"type":"number"},"missingEvidence":{"type":"array"},"positiveFollowUps":{"type":"array"},"sourceActions":{"type":"object"},"dossierEvidence":{"type":"object"},"safety":{"type":"string"},"timestamp":{"type":"string","format":"date-time"},"_errors":{"type":"array","items":{"type":"string"}}}}}}}},"description":"Evaluates supplied NOVA decision-lifecycle evidence and returns a dossier-safe readiness gate. The endpoint is read-only and does not create decisions, transition lifecycle state, create HITL items, emit webhooks/SSE events, replay triggers, apply asset overrides, mutate MaStR/Redispatch/thresholds, call external connectors, handle secrets or mutate Personal Agent behavior."}},"/api/dashboard-api/regulatory-change-readiness":{"get":{"summary":"Regulatory change readiness — read-only dossier-safe gate","tags":["Dashboard API"],"operationId":"dashboard_api_regulatoryChangeReadinessStatus","parameters":[{"name":"changeId","in":"query","required":false,"schema":{"type":"string"}},{"name":"effectiveDate","in":"query","required":false,"schema":{"type":"string"}},{"name":"mechanismType","in":"query","required":false,"schema":{"type":"string"}},{"name":"affectedSystems","in":"query","required":false,"schema":{"oneOf":[{"type":"array","items":{"type":"string"}},{"type":"string"}]}},{"name":"dictionaryVersion","in":"query","required":false,"schema":{"type":"string"}},{"name":"sourceDatapoints","in":"query","required":false,"schema":{"oneOf":[{"type":"array","items":{"type":"string"}},{"type":"string"}]}},{"name":"intervalCoverage","in":"query","required":false,"schema":{"type":"string"}},{"name":"masterDataStatus","in":"query","required":false,"schema":{"type":"string"}},{"name":"substituteValuePolicy","in":"query","required":false,"schema":{"type":"string"}},{"name":"makoCases","in":"query","required":false,"schema":{"oneOf":[{"type":"array","items":{"type":"string"}},{"type":"string"}]}},{"name":"operatorDeclarationStatus","in":"query","required":false,"schema":{"type":"string"}},{"name":"billingRuleReference","in":"query","required":false,"schema":{"type":"string"}},{"name":"auditTrailStatus","in":"query","required":false,"schema":{"type":"string"}},{"name":"testCasePackStatus","in":"query","required":false,"schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only regulatory change readiness status","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string"},"readinessScore":{"type":"number"},"evidenceItems":{"type":"array"},"missingEvidence":{"type":"array"},"generatedTestCaseRequirements":{"type":"array"},"positiveFollowUps":{"type":"array"},"blockingFindings":{"type":"array"},"sourceActions":{"type":"object"},"dossierEvidence":{"type":"object"},"safety":{"type":"string"},"timestamp":{"type":"string","format":"date-time"},"_errors":{"type":"array","items":{"type":"string"}}}}}}}},"description":"Builds a deterministic readiness/evidence contract for upcoming regulatory billing, EEG or refinancing mechanisms. The endpoint separates dictionary, datapoint, interval, master-data, substitute-value, MaKo, operator-declaration, billing-rule, audit and test-case evidence. It is read-only and does not run settlement, billing, MaKo dispatch, HITL, external connectors or legal interpretation."}},"/api/dashboard-api/investment-two-track-control":{"get":{"summary":"Investment two-track control — read-only dossier-safe status","tags":["Dashboard API"],"operationId":"dashboard_api_investmentTwoTrackControlStatus","parameters":[{"name":"submissionId","in":"query","required":false,"schema":{"type":"string"}},{"name":"gridOperatorId","in":"query","required":false,"schema":{"type":"string"}},{"name":"deadline","in":"query","required":false,"schema":{"type":"string"}},{"name":"submissionFormat","in":"query","required":false,"schema":{"type":"string"}},{"name":"tacticalOwner","in":"query","required":false,"schema":{"type":"string"}},{"name":"targetOwner","in":"query","required":false,"schema":{"type":"string"}},{"name":"financeReviewStatus","in":"query","required":false,"schema":{"type":"string"}},{"name":"boardReadiness","in":"query","required":false,"schema":{"type":"string"}},{"name":"dataQualityStatus","in":"query","required":false,"schema":{"type":"string"}},{"name":"approvalModel","in":"query","required":false,"schema":{"type":"string"}},{"name":"handoverStatus","in":"query","required":false,"schema":{"type":"string"}},{"name":"budgetEnvelopeEur","in":"query","required":false,"schema":{"type":"number"}},{"name":"measureCount","in":"query","required":false,"schema":{"type":"integer","minimum":0}},{"name":"sourceDatapoints","in":"query","required":false,"schema":{"oneOf":[{"type":"array","items":{"type":"string"}},{"type":"string"}]}},{"name":"blockedDecisions","in":"query","required":false,"schema":{"oneOf":[{"type":"array","items":{"type":"string"}},{"type":"string"}]}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only investment two-track control status","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string"},"readinessScore":{"type":"number"},"tacticalTrack":{"type":"object"},"targetTrack":{"type":"object"},"missingEvidence":{"type":"array"},"positiveFollowUps":{"type":"array"},"blockedDecisions":{"type":"array"},"sourceActions":{"type":"object"},"dossierEvidence":{"type":"object"},"safety":{"type":"string"},"timestamp":{"type":"string","format":"date-time"},"_errors":{"type":"array","items":{"type":"string"}}}}}}}},"description":"Builds a deterministic evidence/readiness view that separates tactical investment submission readiness from the target-process readiness track for Asset Management / ISO 55001 work. The endpoint is read-only and does not mutate Investment Planning, Finance, SAP/PSP, settlement, billing, MaKo, HITL, VDMI, external connector or Personal-Agent state."}},"/api/dashboard-api/sap-budget-psp-gate":{"get":{"summary":"SAP Budget PSP Gate — read-only dossier-safe status","tags":["Dashboard API"],"operationId":"dashboard_api_sapBudgetPspGateStatus","parameters":[{"name":"measureId","in":"query","required":false,"schema":{"type":"string"}},{"name":"measureName","in":"query","required":false,"schema":{"type":"string"}},{"name":"migrationWave","in":"query","required":false,"schema":{"type":"string"}},{"name":"sapSystemRef","in":"query","required":false,"schema":{"type":"string"}},{"name":"pspElementId","in":"query","required":false,"schema":{"type":"string"}},{"name":"legacyInternalOrderId","in":"query","required":false,"schema":{"type":"string"}},{"name":"assetBenefit","in":"query","required":false,"schema":{"type":"string"}},{"name":"ownerRole","in":"query","required":false,"schema":{"type":"string"}},{"name":"approvalStatus","in":"query","required":false,"schema":{"type":"string"}},{"name":"financeGate","in":"query","required":false,"schema":{"type":"string"}},{"name":"dataQualityStatus","in":"query","required":false,"schema":{"type":"string"}},{"name":"sourceSnapshotId","in":"query","required":false,"schema":{"type":"string"}},{"name":"availableBudgetEur","in":"query","required":false,"schema":{"type":"number"}},{"name":"plannedValueEur","in":"query","required":false,"schema":{"type":"number"}},{"name":"committedValueEur","in":"query","required":false,"schema":{"type":"number"}},{"name":"pspCarryOverEur","in":"query","required":false,"schema":{"type":"number"}},{"name":"budgetOverhangEur","in":"query","required":false,"schema":{"type":"number"}},{"name":"priorityScore","in":"query","required":false,"schema":{"type":"number"}},{"name":"blockedDecisions","in":"query","required":false,"schema":{"oneOf":[{"type":"array","items":{"type":"string"}},{"type":"string"}]}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only SAP/PSP budget-gate status","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string"},"readinessScore":{"type":"number"},"measureContext":{"type":"object"},"budgetEvidence":{"type":"object"},"gateEvidence":{"type":"object"},"missingEvidence":{"type":"array"},"positiveFollowUps":{"type":"array"},"blockedDecisions":{"type":"array"},"sourceActions":{"type":"object"},"dossierEvidence":{"type":"object"},"safety":{"type":"string"},"timestamp":{"type":"string","format":"date-time"},"_errors":{"type":"array","items":{"type":"string"}}}}}}}},"description":"Builds a deterministic SAP/PSP budget-gate evidence view for one investment measure. The endpoint is read-only and does not mutate SAP/PSP, Finance, investment workflow, billing, settlement, MaKo, HITL, VDMI, external connector or Personal-Agent state."}},"/api/dashboard-api/energy-tax-information-package":{"get":{"summary":"Energy Tax Information Package — read-only dossier-safe status","tags":["Dashboard API"],"operationId":"dashboard_api_energyTaxInformationPackageStatus","parameters":[{"name":"packageId","in":"query","required":false,"schema":{"type":"string"}},{"name":"dataSourceId","in":"query","required":false,"schema":{"type":"string"}},{"name":"dictionaryVersion","in":"query","required":false,"schema":{"type":"string"}},{"name":"period","in":"query","required":false,"schema":{"type":"string"}},{"name":"periodStart","in":"query","required":false,"schema":{"type":"string"}},{"name":"periodEnd","in":"query","required":false,"schema":{"type":"string"}},{"name":"aggregationLogic","in":"query","required":false,"schema":{"type":"string"}},{"name":"validationStatus","in":"query","required":false,"schema":{"type":"string"}},{"name":"responsibleOwner","in":"query","required":false,"schema":{"type":"string"}},{"name":"contactRole","in":"query","required":false,"schema":{"type":"string"}},{"name":"sla","in":"query","required":false,"schema":{"type":"string"}},{"name":"auditReference","in":"query","required":false,"schema":{"type":"string"}},{"name":"handoverDecision","in":"query","required":false,"schema":{"type":"string"}},{"name":"evidenceStatus","in":"query","required":false,"schema":{"type":"string"}},{"name":"dataQualityStatus","in":"query","required":false,"schema":{"type":"string"}},{"name":"sourceRefs","in":"query","required":false,"schema":{"oneOf":[{"type":"array","items":{"type":"string"}},{"type":"string"}]}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only energy-tax information-package status","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string"},"readinessScore":{"type":"number"},"packageContext":{"type":"object"},"missingEvidence":{"type":"array"},"positiveFollowUps":{"type":"array"},"sourceEvidence":{"type":"object"},"sourceActions":{"type":"object"},"dossierEvidence":{"type":"object"},"safety":{"type":"string"},"timestamp":{"type":"string","format":"date-time"},"_errors":{"type":"array","items":{"type":"string"}}}}}}}},"description":"Builds a deterministic evidence view for an Energiesteuer/Finance information package. The endpoint is read-only and does not calculate tax, approve packages, copy raw data, or mutate Finance, billing, settlement, MaKo, SAP, HITL, external connector or Personal-Agent state."}},"/api/dashboard-api/investment-risk-translation":{"get":{"summary":"Investment Risk Translation — read-only dossier-safe status","tags":["Dashboard API"],"operationId":"dashboard_api_investmentRiskTranslationStatus","parameters":[{"name":"sourceRef","in":"query","required":false,"schema":{"type":"string"}},{"name":"sourceType","in":"query","required":false,"schema":{"type":"string"}},{"name":"period","in":"query","required":false,"schema":{"type":"string"}},{"name":"division","in":"query","required":false,"schema":{"type":"string"}},{"name":"classification","in":"query","required":false,"schema":{"type":"string"}},{"name":"financialImpact","in":"query","required":false,"schema":{"oneOf":[{"type":"number"},{"type":"string"}]}},{"name":"assetImpact","in":"query","required":false,"schema":{"type":"string"}},{"name":"ownerRole","in":"query","required":false,"schema":{"type":"string"}},{"name":"decisionReadiness","in":"query","required":false,"schema":{"type":"string"}},{"name":"blockedDecisionId","in":"query","required":false,"schema":{"type":"string"}},{"name":"nextAction","in":"query","required":false,"schema":{"type":"string"}},{"name":"sourceSnapshot","in":"query","required":false,"schema":{"type":"string"}},{"name":"evidenceRefs","in":"query","required":false,"schema":{"oneOf":[{"type":"array","items":{"type":"string"}},{"type":"string"}]}},{"in":"query","name":"forbiddenAssumptions","schema":{"type":"string"}},{"in":"query","name":"budgetRef","schema":{"type":"string"}},{"in":"query","name":"riskRef","schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only investment-risk translation status","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string"},"readinessScore":{"type":"number"},"translationContext":{"type":"object"},"handoverContext":{"type":"object"},"missingEvidence":{"type":"array"},"positiveFollowUps":{"type":"array"},"sourceActions":{"type":"object"},"dossierEvidence":{"type":"object"},"safety":{"type":"string"},"timestamp":{"type":"string","format":"date-time"},"_errors":{"type":"array","items":{"type":"string"}}}}}}}},"description":"Builds a deterministic evidence view for investment/risk translation material. The endpoint is read-only and does not create VDMI, HITL, Finance, Investment Planning, SAP/PSP, external connector or Personal-Agent side effects."}},"/api/dashboard-api/budget-waterfall-governance":{"get":{"summary":"Budget Waterfall Governance — read-only dossier-safe gate","tags":["Dashboard API"],"operationId":"dashboard_api_budgetWaterfallGovernanceStatus","parameters":[{"name":"waterfallId","in":"query","required":false,"schema":{"type":"string"}},{"name":"sourceId","in":"query","required":false,"schema":{"type":"string"}},{"name":"period","in":"query","required":false,"schema":{"type":"string"}},{"name":"division","in":"query","required":false,"schema":{"type":"string"}},{"name":"baselineRef","in":"query","required":false,"schema":{"type":"string"}},{"name":"forecastCutoff","in":"query","required":false,"schema":{"type":"string"}},{"name":"carryoverLogic","in":"query","required":false,"schema":{"type":"string"}},{"name":"signConvention","in":"query","required":false,"schema":{"type":"string"}},{"name":"ownerRole","in":"query","required":false,"schema":{"type":"string"}},{"name":"approvalStatus","in":"query","required":false,"schema":{"type":"string"}},{"name":"followUpDecision","in":"query","required":false,"schema":{"type":"string"}},{"name":"sourceSnapshotRef","in":"query","required":false,"schema":{"type":"string"}},{"name":"evidenceRef","in":"query","required":false,"schema":{"oneOf":[{"type":"array","items":{"type":"string"}},{"type":"string"}]}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only budget-waterfall governance status","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string"},"readinessScore":{"type":"number"},"waterfallContext":{"type":"object"},"governanceEvidence":{"type":"object"},"missingEvidence":{"type":"array"},"positiveFollowUps":{"type":"array"},"sourceActions":{"type":"object"},"dossierEvidence":{"type":"object"},"safety":{"type":"string"},"timestamp":{"type":"string","format":"date-time"},"_errors":{"type":"array","items":{"type":"string"}}}}}}}},"description":"Builds a deterministic evidence view for budget-waterfall governance. The endpoint is read-only and does not create Finance, SAP/PSP, Investment Planning, settlement, billing, MaKo, HITL, external connector or Personal-Agent side effects."}},"/api/dashboard-api/gas-decommissioning-roadmap":{"get":{"summary":"Gas Decommissioning Roadmap — read-only dossier-safe status","tags":["Dashboard API"],"operationId":"dashboard_api_gasDecommissioningRoadmapStatus","parameters":[{"name":"roadmapId","in":"query","required":false,"schema":{"type":"string"}},{"name":"currentPhase","in":"query","required":false,"schema":{"type":"string"}},{"name":"owner","in":"query","required":false,"schema":{"type":"string"}},{"name":"assetRiskEvidence","in":"query","required":false,"schema":{"type":"string"}},{"name":"dependencyMap","in":"query","required":false,"schema":{"type":"string"}},{"name":"investmentImpactRef","in":"query","required":false,"schema":{"type":"string"}},{"name":"committeeGateDate","in":"query","required":false,"schema":{"type":"string"}},{"name":"executionHandoverOwner","in":"query","required":false,"schema":{"type":"string"}},{"name":"nextDecisionGate","in":"query","required":false,"schema":{"type":"string"}},{"name":"blocker","in":"query","required":false,"schema":{"oneOf":[{"type":"array","items":{"type":"string"}},{"type":"string"}]}},{"name":"sourceSnapshotRef","in":"query","required":false,"schema":{"type":"string"}},{"name":"evidenceRef","in":"query","required":false,"schema":{"oneOf":[{"type":"array","items":{"type":"string"}},{"type":"string"}]}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only gas decommissioning roadmap status","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string"},"readinessScore":{"type":"number"},"roadmapContext":{"type":"object"},"phaseEvidence":{"type":"object"},"dependencies":{"type":"object"},"blockers":{"type":"array"},"missingEvidence":{"type":"array"},"positiveFollowUps":{"type":"array"},"sourceActions":{"type":"object"},"dossierEvidence":{"type":"object"},"safety":{"type":"string"},"timestamp":{"type":"string","format":"date-time"},"_errors":{"type":"array","items":{"type":"string"}}}}}}}},"description":"Builds a deterministic evidence view for gas-network decommissioning roadmap readiness. The endpoint is read-only and does not create gas-transformation, finance, SAP, investment, HITL, external connector or Personal-Agent side effects."}},"/api/dashboard-api/jour-fixe-decision-closure":{"get":{"summary":"Jour-Fixe Decision Closure — read-only dossier-safe status","tags":["Dashboard API"],"operationId":"dashboard_api_jourFixeDecisionClosureStatus","parameters":[{"name":"topicId","in":"query","required":false,"schema":{"type":"string"}},{"name":"topicTitle","in":"query","required":false,"schema":{"type":"string"}},{"name":"jourFixeId","in":"query","required":false,"schema":{"type":"string"}},{"name":"owner","in":"query","required":false,"schema":{"type":"string"}},{"name":"kpi","in":"query","required":false,"schema":{"type":"string"}},{"name":"decisionCriterion","in":"query","required":false,"schema":{"type":"string"}},{"name":"nextGate","in":"query","required":false,"schema":{"type":"string"}},{"name":"closureStatus","in":"query","required":false,"schema":{"type":"string"}},{"name":"closureProof","in":"query","required":false,"schema":{"type":"string"}},{"name":"blockedFollowUpAction","in":"query","required":false,"schema":{"type":"string"}},{"name":"sourceSnapshotRef","in":"query","required":false,"schema":{"type":"string"}},{"name":"evidenceRef","in":"query","required":false,"schema":{"oneOf":[{"type":"array","items":{"type":"string"}},{"type":"string"}]}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only Jour-fixe decision closure status","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string"},"readinessScore":{"type":"number"},"topic":{"type":"object"},"closureEvidence":{"type":"object"},"missingEvidence":{"type":"array"},"positiveFollowUps":{"type":"array"},"sourceActions":{"type":"object"},"dossierEvidence":{"type":"object"},"safety":{"type":"string"},"timestamp":{"type":"string","format":"date-time"},"_errors":{"type":"array","items":{"type":"string"}}}}}}}},"description":"Builds a deterministic evidence view for Jour-fixe topic closure. The endpoint is read-only and does not create meeting, VDMI, NOVA, HITL, external connector or Personal-Agent side effects."}},"/api/dashboard-api/off-balancing-metering-pruefmatrix":{"get":{"summary":"Off-Balancing Metering Pruefmatrix — read-only dossier-safe gate","tags":["Dashboard API"],"operationId":"dashboard_api_offBalancingMeteringPruefmatrixStatus","parameters":[{"name":"matrixId","in":"query","required":false,"schema":{"type":"string"}},{"name":"meteringScope","in":"query","required":false,"schema":{"type":"string"}},{"name":"financingModel","in":"query","required":false,"schema":{"type":"string"}},{"name":"decisionOwner","in":"query","required":false,"schema":{"type":"string"}},{"name":"committeeGate","in":"query","required":false,"schema":{"type":"string"}},{"name":"capexOpexBaseline","in":"query","required":false,"schema":{"type":"string"}},{"name":"eogEffectEvidence","in":"query","required":false,"schema":{"type":"string"}},{"name":"regulatoryEffectEvidence","in":"query","required":false,"schema":{"type":"string"}},{"name":"costRecognitionAssumption","in":"query","required":false,"schema":{"type":"string"}},{"name":"financierConditions","in":"query","required":false,"schema":{"type":"string"}},{"name":"dataQualityStatus","in":"query","required":false,"schema":{"type":"string"}},{"name":"interfaceRiskStatus","in":"query","required":false,"schema":{"type":"string"}},{"name":"gridInvestmentSpaceProof","in":"query","required":false,"schema":{"type":"string"}},{"name":"sourceSnapshotRef","in":"query","required":false,"schema":{"type":"string"}},{"name":"evidenceRef","in":"query","required":false,"schema":{"oneOf":[{"type":"array","items":{"type":"string"}},{"type":"string"}]}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only off-balancing metering pruefmatrix status","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string"},"readinessScore":{"type":"number"},"matrixContext":{"type":"object"},"financingEvidence":{"type":"object"},"gridInvestmentVerdict":{"type":"object"},"missingEvidence":{"type":"array"},"positiveFollowUps":{"type":"array"},"sourceActions":{"type":"object"},"dossierEvidence":{"type":"object"},"safety":{"type":"string"},"timestamp":{"type":"string","format":"date-time"},"_errors":{"type":"array","items":{"type":"string"}}}}}}}},"description":"Builds a deterministic evidence view for off-balancing metering option readiness. The endpoint is read-only and does not create finance, SAP, investment, settlement, billing, MaKo, HITL, external connector or Personal-Agent side effects."}},"/api/dashboard-api/automation-requirements-decision-value":{"get":{"summary":"Automation Requirements Decision Value — read-only dossier-safe gate","tags":["Dashboard API"],"operationId":"dashboard_api_automationRequirementsDecisionValueStatus","parameters":[{"name":"requirementId","in":"query","required":false,"schema":{"type":"string"}},{"name":"requestTitle","in":"query","required":false,"schema":{"type":"string"}},{"name":"requestType","in":"query","required":false,"schema":{"type":"string"}},{"name":"processArea","in":"query","required":false,"schema":{"type":"string"}},{"name":"decisionOwner","in":"query","required":false,"schema":{"type":"string"}},{"name":"targetGate","in":"query","required":false,"schema":{"type":"string"}},{"name":"sourceSystem","in":"query","required":false,"schema":{"type":"string"}},{"name":"movingDataFlow","in":"query","required":false,"schema":{"type":"string"}},{"name":"manualEffort","in":"query","required":false,"schema":{"type":"string"}},{"name":"controlPoint","in":"query","required":false,"schema":{"type":"string"}},{"name":"decisionValue","in":"query","required":false,"schema":{"type":"string"}},{"name":"followUpProcess","in":"query","required":false,"schema":{"type":"string"}},{"name":"dataQuality","in":"query","required":false,"schema":{"type":"string"}},{"name":"rollbackOrStopCriterion","in":"query","required":false,"schema":{"type":"string"}},{"name":"sourceSnapshotRef","in":"query","required":false,"schema":{"type":"string"}},{"name":"evidenceRef","in":"query","required":false,"schema":{"oneOf":[{"type":"array","items":{"type":"string"}},{"type":"string"}]}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only automation requirements decision-value status","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string"},"readinessScore":{"type":"number"},"requirementContext":{"type":"object"},"decisionEvidence":{"type":"object"},"missingEvidence":{"type":"array"},"positiveFollowUps":{"type":"array"},"sourceActions":{"type":"object"},"dossierEvidence":{"type":"object"},"safety":{"type":"string"},"timestamp":{"type":"string","format":"date-time"},"_errors":{"type":"array","items":{"type":"string"}}}}}}}},"description":"Builds a deterministic evidence view for automation, dashboard, PowerBI or workflow wishes. The endpoint is read-only and does not create Office/BI workflows, tickets, HITL items, VDMI mutations, external connectors or production side effects."}},"/api/dashboard-api/smart-meter-off-balancing-purpose-lock":{"get":{"summary":"Smart Meter Off-Balancing Purpose Lock — read-only dossier-safe gate","tags":["Dashboard API"],"operationId":"dashboard_api_smartMeterOffBalancingPurposeLockStatus","parameters":[{"in":"query","name":"caseId","schema":{"type":"string"}},{"in":"query","name":"gridOperatorId","schema":{"type":"string"}},{"in":"query","name":"assetScope","schema":{"type":"string"}},{"in":"query","name":"financingModel","schema":{"type":"string"}},{"in":"query","name":"offBalanceVolumeEur","schema":{"type":"string"}},{"in":"query","name":"freedLiquidityEur","schema":{"type":"string"}},{"in":"query","name":"financierCostEur","schema":{"type":"string"}},{"in":"query","name":"capexOpexTotexEffect","schema":{"type":"string"}},{"in":"query","name":"regulatoryRecognitionStatus","schema":{"type":"string"}},{"in":"query","name":"purposeLockedMeasures","schema":{"type":"string"}},{"in":"query","name":"controlRoomInvestments","schema":{"type":"string"}},{"in":"query","name":"processInvestments","schema":{"type":"string"}},{"in":"query","name":"gridInfrastructureInvestments","schema":{"type":"string"}},{"in":"query","name":"budgetDilutionRisk","schema":{"type":"string"}},{"in":"query","name":"financeReviewStatus","schema":{"type":"string"}},{"in":"query","name":"sourceSnapshotRef","schema":{"type":"string"}},{"in":"query","name":"evidenceRef","schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only smart-meter off-balancing purpose-lock status"}},"description":"Builds a deterministic evidence view for smart-meter off-balancing purpose-lock readiness. The endpoint is read-only and does not create finance, SAP, investment, billing, settlement, MaKo, HITL, external connector or Personal-Agent side effects."}},"/api/dashboard-api/imsys-schedule-value-chain-readiness":{"get":{"summary":"iMSys schedule value-chain readiness — read-only dossier-safe gate","tags":["Dashboard API"],"operationId":"dashboard_api_imsysScheduleValueChainReadinessStatus","parameters":[{"in":"query","name":"caseId","schema":{"type":"string"}},{"in":"query","name":"gridOperatorId","schema":{"type":"string"}},{"in":"query","name":"meteringScope","schema":{"type":"string"}},{"in":"query","name":"sourceDatapoints","schema":{"type":"string"}},{"in":"query","name":"dataQualityStatus","schema":{"type":"string"}},{"in":"query","name":"forecastWindow","schema":{"type":"string"}},{"in":"query","name":"congestionSignal","schema":{"type":"string"}},{"in":"query","name":"assetScope","schema":{"type":"string"}},{"in":"query","name":"controllabilityStatus","schema":{"type":"string"}},{"in":"query","name":"flexibilityOptions","schema":{"type":"string"}},{"in":"query","name":"netzfahrplanAssessmentRef","schema":{"type":"string"}},{"in":"query","name":"operationalDecision","schema":{"type":"string"}},{"in":"query","name":"controlReadiness","schema":{"type":"string"}},{"in":"query","name":"lineOwnerRole","schema":{"type":"string"}},{"in":"query","name":"sourceSnapshotRef","schema":{"type":"string"}},{"in":"query","name":"evidenceRef","schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only iMSys schedule value-chain readiness status"}},"description":"Builds a deterministic evidence view for iMSys/CLS schedule value-chain readiness. The endpoint is read-only and does not execute device control, grid operations, HITL, MaKo, billing, settlement, external connector or Personal-Agent actions."}},"/api/dashboard-api/cls-digital-twin-compliance-gate":{"get":{"summary":"CLS Digital Twin Compliance Gate — read-only dossier-safe status","tags":["Dashboard API"],"operationId":"dashboard_api_clsDigitalTwinComplianceGateStatus","parameters":[{"in":"query","name":"procurementId","schema":{"type":"string"}},{"in":"query","name":"vendorId","schema":{"type":"string"}},{"in":"query","name":"systemPurpose","schema":{"type":"string"}},{"in":"query","name":"digitalTwinScope","schema":{"type":"string"}},{"in":"query","name":"clsInterfaceScope","schema":{"type":"string"}},{"in":"query","name":"dataFlowMap","schema":{"type":"string"}},{"in":"query","name":"personalDataCategories","schema":{"type":"string"}},{"in":"query","name":"rolesAccessRights","schema":{"type":"string"}},{"in":"query","name":"rbacRefs","schema":{"type":"string"}},{"in":"query","name":"avvStatus","schema":{"type":"string"}},{"in":"query","name":"ndaStatus","schema":{"type":"string"}},{"in":"query","name":"worksCouncilStatus","schema":{"type":"string"}},{"in":"query","name":"dsfaStatus","schema":{"type":"string"}},{"in":"query","name":"billingModuleImpact","schema":{"type":"string"}},{"in":"query","name":"regulatoryEvidenceStatus","schema":{"type":"string"}},{"in":"query","name":"securityEvidenceRefs","schema":{"type":"string"}},{"in":"query","name":"approvalStatus","schema":{"type":"string"}},{"in":"query","name":"sourceEvidenceRefs","schema":{"type":"string"}},{"in":"query","name":"sourceSnapshot","schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only CLS digital-twin compliance gate status"}},"description":"Builds a deterministic evidence view for CLS/digital-twin procurement readiness. The endpoint is read-only and does not create procurement, legal, DSFA, RBAC, HITL, billing, settlement, MaKo, CLS, SMGW, device-control, external connector or Personal-Agent side effects."}},"/api/dashboard-api/legacy-control-technology-transition":{"get":{"summary":"Legacy control technology transition — read-only dossier-safe gate","tags":["Dashboard API"],"operationId":"dashboard_api_legacyControlTechnologyTransitionStatus","parameters":[{"in":"query","name":"assetGroupId","schema":{"type":"string"}},{"in":"query","name":"assetId","schema":{"type":"string"}},{"in":"query","name":"gridOperatorId","schema":{"type":"string"}},{"in":"query","name":"powerClass","schema":{"type":"string"}},{"in":"query","name":"controlTechnology","schema":{"type":"string"}},{"in":"query","name":"feedbackCapability","schema":{"type":"string"}},{"in":"query","name":"switchingRisk","schema":{"type":"string"}},{"in":"query","name":"testFeasibility","schema":{"type":"string"}},{"in":"query","name":"testStatus","schema":{"type":"string"}},{"in":"query","name":"nonExecutionReason","schema":{"type":"string"}},{"in":"query","name":"targetTechnology","schema":{"type":"string"}},{"in":"query","name":"migrationRoadmap","schema":{"type":"string"}},{"in":"query","name":"owner","schema":{"type":"string"}},{"in":"query","name":"nextAction","schema":{"type":"string"}},{"in":"query","name":"sourceEvidenceRefs","schema":{"type":"string"}},{"in":"query","name":"sourceSnapshot","schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only legacy control technology transition status"}},"description":"Builds a deterministic evidence view for Rundsteuertechnik/Gruppensignal transition readiness. The endpoint is read-only and does not execute grid control, CLS, SMGW, device-control, HITL, settlement, MaKo, external connector or Personal-Agent side effects."}},"/api/dashboard-api/controllability-submission-cockpit":{"get":{"summary":"Controllability submission cockpit — read-only dossier-safe gate","tags":["Dashboard API"],"operationId":"dashboard_api_controllabilitySubmissionCockpitStatus","parameters":[{"in":"query","name":"submissionId","schema":{"type":"string"}},{"in":"query","name":"submissionDeadline","schema":{"type":"string"}},{"in":"query","name":"coordinator","schema":{"type":"string"}},{"in":"query","name":"sourceList","schema":{"type":"string"}},{"in":"query","name":"dataReconciliationStatus","schema":{"type":"string"}},{"in":"query","name":"reasonCatalog","schema":{"type":"string"}},{"in":"query","name":"assetGroupStatuses","schema":{"type":"string"}},{"in":"query","name":"openMeasures","schema":{"type":"string"}},{"in":"query","name":"handoverDecision","schema":{"type":"string"}},{"in":"query","name":"handoverOwner","schema":{"type":"string"}},{"in":"query","name":"nextCycleTasks","schema":{"type":"string"}},{"in":"query","name":"deadlineRisks","schema":{"type":"string"}},{"in":"query","name":"sourceEvidenceRefs","schema":{"type":"string"}},{"in":"query","name":"sourceSnapshot","schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only controllability submission cockpit status"}},"description":"Builds a deterministic evidence view for Steuerbarkeitscheck submission readiness and handover. The endpoint is read-only and does not create HITL items, submit filings, execute grid, CLS, SMGW or device control, mutate MaKo, billing, settlement or tariff processes, call external connectors, or use Personal-Agent shortcuts."}},"/api/dashboard-api/crisis-decision-routine":{"get":{"summary":"Crisis decision routine — read-only dossier-safe management gate","tags":["Dashboard API"],"operationId":"dashboard_api_crisisDecisionRoutineStatus","parameters":[{"in":"query","name":"caseId","schema":{"type":"string"}},{"in":"query","name":"topic","schema":{"type":"string"}},{"in":"query","name":"serviceImpact","schema":{"type":"string"}},{"in":"query","name":"populationImpact","schema":{"type":"string"}},{"in":"query","name":"requiredMeasures","schema":{"type":"string"}},{"in":"query","name":"financeImpact","schema":{"type":"string"}},{"in":"query","name":"knowledgeState","schema":{"type":"string"}},{"in":"query","name":"trainingNeed","schema":{"type":"string"}},{"in":"query","name":"operatingModelNeed","schema":{"type":"string"}},{"in":"query","name":"owner","schema":{"type":"string"}},{"in":"query","name":"nextGate","schema":{"type":"string"}},{"in":"query","name":"blockedFollowUp","schema":{"type":"string"}},{"in":"query","name":"decisionDeadline","schema":{"type":"string"}},{"in":"query","name":"sourceEvidenceRefs","schema":{"type":"string"}},{"in":"query","name":"sourceSnapshot","schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only crisis decision routine status"}},"description":"Builds deterministic management-readiness evidence for crisis/ad-hoc topics. The endpoint is read-only and does not create HITL, NOVA or VDMI items, mutate finance or operations data, call external connectors, close decisions, dispatch operational actions, or use Personal-Agent shortcuts."}},"/api/dashboard-api/investment-committee-steering-cards":{"get":{"summary":"Investment committee steering cards — read-only dossier-safe status","tags":["Dashboard API"],"operationId":"dashboard_api_investmentCommitteeSteeringCardsStatus","parameters":[{"in":"query","name":"investmentItemId","schema":{"type":"string"}},{"in":"query","name":"projectId","schema":{"type":"string"}},{"in":"query","name":"assetId","schema":{"type":"string"}},{"in":"query","name":"reviewStatus","schema":{"type":"string"}},{"in":"query","name":"evidenceStatus","schema":{"type":"string"}},{"in":"query","name":"committeeWindow","schema":{"type":"string"}},{"in":"query","name":"owner","schema":{"type":"string"}},{"in":"query","name":"blockedFollowUpAction","schema":{"type":"string"}},{"in":"query","name":"capexEur","schema":{"type":"string"}},{"in":"query","name":"riskFlag","schema":{"type":"string"}},{"in":"query","name":"sourceRef","schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only investment committee steering card status"}},"description":"Builds deterministic investment committee steering-card evidence. The endpoint is read-only and does not create HITL, VDMI or investment-plan records, mutate finance data, release budgets, call external connectors, trigger billing/settlement/tariff/payment effects, or use Personal-Agent shortcuts."}},"/api/dashboard-api/investment-data-review-queue":{"get":{"summary":"Investment data review queue — read-only dossier-safe status","tags":["Dashboard API"],"operationId":"dashboard_api_investmentDataReviewQueueStatus","parameters":[{"in":"query","name":"sourceId","schema":{"type":"string"}},{"in":"query","name":"dataPackageId","schema":{"type":"string"}},{"in":"query","name":"assetRef","schema":{"type":"string"}},{"in":"query","name":"projectRef","schema":{"type":"string"}},{"in":"query","name":"qualityStatus","schema":{"type":"string"}},{"in":"query","name":"division","schema":{"type":"string"}},{"in":"query","name":"bottleneckRef","schema":{"type":"string"}},{"in":"query","name":"owner","schema":{"type":"string"}},{"in":"query","name":"committeeWindow","schema":{"type":"string"}},{"in":"query","name":"blockedDecision","schema":{"type":"string"}},{"in":"query","name":"reviewStatus","schema":{"type":"string"}},{"in":"query","name":"sourceRef","schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only investment data review queue status"}},"description":"Builds deterministic Investdaten-Pruefqueue evidence. The endpoint is read-only and does not create HITL tickets, VDMI records, investment plans, finance records, budget releases, settlement/billing/tariff effects, external connector calls, or Personal-Agent shortcuts."}},"/api/dashboard-api/flex-strategic-demand-intake":{"get":{"summary":"Strategic Flex demand intake — read-only dossier-safe status","tags":["Dashboard API"],"operationId":"dashboard_api_flexStrategicDemandIntakeStatus","parameters":[{"in":"query","name":"demandId","schema":{"type":"string"}},{"in":"query","name":"caseId","schema":{"type":"string"}},{"in":"query","name":"topic","schema":{"type":"string"}},{"in":"query","name":"demandTopic","schema":{"type":"string"}},{"in":"query","name":"affectedProcess","schema":{"type":"string"}},{"in":"query","name":"riskOfInaction","schema":{"type":"string"}},{"in":"query","name":"commercialQuestion","schema":{"type":"string"}},{"in":"query","name":"resourceConflict","schema":{"type":"string"}},{"in":"query","name":"stopDoingOption","schema":{"type":"string"}},{"in":"query","name":"owner","schema":{"type":"string"}},{"in":"query","name":"nextDecisionGate","schema":{"type":"string"}},{"in":"query","name":"blockedFollowUp","schema":{"type":"string"}},{"in":"query","name":"sourceRef","schema":{"type":"string"}},{"in":"query","name":"flexContext","schema":{"type":"string"}},{"in":"query","name":"znpContext","schema":{"type":"string"}},{"in":"query","name":"novaContext","schema":{"type":"string"}},{"in":"query","name":"financeContext","schema":{"type":"string"}},{"in":"query","name":"vdmiContext","schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only strategic Flex demand intake status"}},"description":"Builds deterministic strategic Flex/Fahrplanmanagement demand-intake evidence. The endpoint is read-only and does not create VDMI cards, HITL tickets, NOVA decisions, finance records, tariff/billing/settlement/device-control effects, external connector calls, or Personal-Agent shortcuts."}},"/api/dashboard-api/gas-infrastructure-risk-governance":{"get":{"summary":"Gas infrastructure risk governance — read-only dossier-safe status","tags":["Dashboard API"],"operationId":"dashboard_api_gasInfrastructureRiskGovernanceStatus","parameters":[{"in":"query","name":"caseId","schema":{"type":"string"}},{"in":"query","name":"technicalFact","schema":{"type":"string"}},{"in":"query","name":"impactArea","schema":{"type":"string"}},{"in":"query","name":"probability","schema":{"type":"string"}},{"in":"query","name":"criticality","schema":{"type":"string"}},{"in":"query","name":"existingMitigation","schema":{"type":"string"}},{"in":"query","name":"threshold","schema":{"type":"string"}},{"in":"query","name":"riskRegisterDecision","schema":{"type":"string"}},{"in":"query","name":"owner","schema":{"type":"string"}},{"in":"query","name":"nextDecisionWindow","schema":{"type":"string"}},{"in":"query","name":"blockedFollowUp","schema":{"type":"string"}},{"in":"query","name":"sourceRef","schema":{"type":"string"}},{"in":"query","name":"vdmiContext","schema":{"type":"string"}},{"in":"query","name":"hitlContext","schema":{"type":"string"}},{"in":"query","name":"interfacePlaceholderContext","schema":{"type":"string"}},{"in":"query","name":"assetContext","schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only gas infrastructure risk governance status"}},"description":"Builds deterministic gas-infrastructure risk governance evidence. The endpoint is read-only and does not create risk-register entries, HITL tickets, VDMI records, Asset-MDM changes, monitoring/mitigation decisions, operations actions, external connector calls, or Personal-Agent shortcuts."}},"/api/dashboard-api/metering-rollout-process-indicator":{"get":{"summary":"Metering rollout process indicator — read-only dossier-safe status","tags":["Dashboard API"],"operationId":"dashboard_api_meteringRolloutProcessIndicatorStatus","parameters":[{"in":"query","name":"indicatorId","schema":{"type":"string"}},{"in":"query","name":"division","schema":{"type":"string"}},{"in":"query","name":"sourceType","schema":{"type":"string"}},{"in":"query","name":"targetCount","schema":{"type":"string"}},{"in":"query","name":"actualCount","schema":{"type":"string"}},{"in":"query","name":"backlogCount","schema":{"type":"string"}},{"in":"query","name":"dataQualityStatus","schema":{"type":"string"}},{"in":"query","name":"contractorLoad","schema":{"type":"string"}},{"in":"query","name":"capexImpactEur","schema":{"type":"string"}},{"in":"query","name":"opexImpactEur","schema":{"type":"string"}},{"in":"query","name":"owner","schema":{"type":"string"}},{"in":"query","name":"nextControlStep","schema":{"type":"string"}},{"in":"query","name":"blockedFollowUp","schema":{"type":"string"}},{"in":"query","name":"sourceRef","schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only metering rollout process-indicator status"}},"description":"Builds deterministic metering/rollout process evidence from supplied KPI facts. The endpoint is read-only and does not refresh datasources, import EDM data, create HITL tasks, mutate finance/CAPEX state, billing, tariff, settlement, device control, external connectors, or Personal-Agent shortcuts."}},"/api/dashboard-api/heat-transformation-line-asset-model":{"get":{"summary":"Heat transformation line-asset model — read-only dossier-safe status","tags":["Dashboard API"],"operationId":"dashboard_api_heatTransformationLineAssetModelStatus","parameters":[{"in":"query","name":"lineAssetId","schema":{"type":"string"}},{"in":"query","name":"geometryRef","schema":{"type":"string"}},{"in":"query","name":"connectedPointAssetIds","schema":{"type":"string"}},{"in":"query","name":"division","schema":{"type":"string"}},{"in":"query","name":"networkCalculationRef","schema":{"type":"string"}},{"in":"query","name":"dataQualityStatus","schema":{"type":"string"}},{"in":"query","name":"transformationStatus","schema":{"type":"string"}},{"in":"query","name":"futureOption","schema":{"type":"string"}},{"in":"query","name":"investmentNeed","schema":{"type":"string"}},{"in":"query","name":"owner","schema":{"type":"string"}},{"in":"query","name":"nextDecision","schema":{"type":"string"}},{"in":"query","name":"sourceRef","schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only heat transformation line-asset model status"}},"description":"Builds deterministic line-asset evidence from supplied facts. The endpoint is read-only and does not create ZNP projects, point/line assets, datapoints, VDMI dossiers, finance plans, HITL tasks, or trigger device control or external connectors."}},"/api/dashboard-api/ki-floorwalker-governance":{"get":{"summary":"KI Floorwalker governance — read-only dossier-safe status","tags":["Dashboard API"],"operationId":"dashboard_api_kiFloorwalkerGovernanceStatus","parameters":[{"in":"query","name":"useCaseId","schema":{"type":"string"}},{"in":"query","name":"processOwner","schema":{"type":"string"}},{"in":"query","name":"useCasePriority","schema":{"type":"string"}},{"in":"query","name":"allowedDataspaces","schema":{"type":"string"}},{"in":"query","name":"promptStandards","schema":{"type":"string"}},{"in":"query","name":"processBoundaries","schema":{"type":"string"}},{"in":"query","name":"rolesAndResponsibilities","schema":{"type":"string"}},{"in":"query","name":"guidedApplication","schema":{"type":"string"}},{"in":"query","name":"riskAndApprovalStatus","schema":{"type":"string"}},{"in":"query","name":"proofOfBenefit","schema":{"type":"string"}},{"in":"query","name":"sourceRef","schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only KI Floorwalker governance status"}},"description":"Builds deterministic AI governance evidence from supplied facts. The endpoint is read-only and does not run AI/LLM models, prompt databases, or write to HITL/VDMI."}},"/api/dashboard-api/investment-waterfall-governance":{"get":{"summary":"Investment waterfall governance — read-only dossier-safe status","tags":["Dashboard API"],"operationId":"dashboard_api_investmentWaterfallGovernanceStatus","parameters":[{"in":"query","name":"investmentItemId","schema":{"type":"string"}},{"in":"query","name":"targetProcess","schema":{"type":"string"}},{"in":"query","name":"budgetAmount","schema":{"type":"string"}},{"in":"query","name":"bottleneckRef","schema":{"type":"string"}},{"in":"query","name":"committeeWindow","schema":{"type":"string"}},{"in":"query","name":"evidenceReadiness","schema":{"type":"string"}},{"in":"query","name":"owner","schema":{"type":"string"}},{"in":"query","name":"nextAction","schema":{"type":"string"}},{"in":"query","name":"mandateStatus","schema":{"type":"string"}},{"in":"query","name":"riskIfDelayed","schema":{"type":"string"}},{"in":"query","name":"sourceRef","schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only investment waterfall governance status"}},"description":"Builds deterministic investment waterfall governance evidence from supplied facts. The endpoint is read-only and does not run budget writes or write to HITL/VDMI."}},"/api/dashboard-api/capacity-contract-risk-asset-cockpit":{"get":{"summary":"Capacity & Contract Risk Asset Cockpit — read-only dossier-safe status","tags":["Dashboard API"],"operationId":"dashboard_api_capacityContractRiskAssetCockpitStatus","parameters":[{"in":"query","name":"gridOperatorId","required":true,"schema":{"type":"string"}},{"in":"query","name":"utilization","schema":{"type":"number"}},{"in":"query","name":"bottleneck","schema":{"type":"string"}},{"in":"query","name":"firmCapacityKW","schema":{"type":"number"}},{"in":"query","name":"flexibleCapacityKW","schema":{"type":"number"}},{"in":"query","name":"contractStatus","schema":{"type":"string"}},{"in":"query","name":"legalStatus","schema":{"type":"string"}},{"in":"query","name":"altvereinbarung","schema":{"type":"boolean"}},{"in":"query","name":"capex","schema":{"type":"number"}},{"in":"query","name":"opex","schema":{"type":"number"}},{"in":"query","name":"priority","schema":{"type":"string"}},{"in":"query","name":"owner","schema":{"type":"string"}},{"in":"query","name":"nextAction","schema":{"type":"string"}},{"in":"query","name":"forecast","schema":{"type":"boolean"}},{"in":"query","name":"date","schema":{"type":"string"}},{"in":"query","name":"sourceRef","schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only capacity and contract risk status"}},"description":"Builds deterministic risk and decision status from supplied capacity and contract facts. The endpoint is read-only and does not run budget writes or write to ZNP, assets, HITL, or VDMI."}},"/api/dashboard-api/imsys-taf2-compliance":{"get":{"summary":"iMSys TAF2 compliance status — read-only dossier-safe status","tags":["Dashboard API"],"operationId":"dashboard_api_imsysTaf2ComplianceStatus","parameters":[{"in":"query","name":"meteringPointId","required":true,"schema":{"type":"string"}},{"in":"query","name":"taf2Obligation","schema":{"type":"boolean"}},{"in":"query","name":"targetDeadline","schema":{"type":"string"}},{"in":"query","name":"tariffModel","schema":{"type":"string"}},{"in":"query","name":"implementationStatus","schema":{"type":"string"}},{"in":"query","name":"measuredValueAccess","schema":{"type":"string"}},{"in":"query","name":"owner","schema":{"type":"string"}},{"in":"query","name":"nextAction","schema":{"type":"string"}},{"in":"query","name":"forecast","schema":{"type":"boolean"}},{"in":"query","name":"date","schema":{"type":"string"}},{"in":"query","name":"sourceRef","schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only iMSys TAF2 compliance status"}},"description":"Builds deterministic compliance evidence from supplied facts. The endpoint is read-only and does not run budget writes or write to HITL/VDMI."}},"/api/dashboard-api/schedule-management-governance-roadmap":{"get":{"summary":"Fahrplanmanagement Governance Roadmap — read-only dossier-safe status","tags":["Dashboard API"],"operationId":"dashboard_api_scheduleManagementGovernanceRoadmapStatus","parameters":[{"in":"query","name":"meteringPointId","schema":{"type":"string"}},{"in":"query","name":"targetState","schema":{"type":"string"}},{"in":"query","name":"capabilityMaturity","schema":{"type":"string"}},{"in":"query","name":"dataObjects","schema":{"type":"string"}},{"in":"query","name":"systemIntegrations","schema":{"type":"string"}},{"in":"query","name":"roleOwnership","schema":{"type":"string"}},{"in":"query","name":"redispatchBoundary","schema":{"type":"string"}},{"in":"query","name":"fnavReadiness","schema":{"type":"string"}},{"in":"query","name":"capacityManagementGaps","schema":{"type":"string"}},{"in":"query","name":"roadmapItems","schema":{"type":"string"}},{"in":"query","name":"decisionMeetings","schema":{"type":"string"}},{"in":"query","name":"owner","schema":{"type":"string"}},{"in":"query","name":"nextAction","schema":{"type":"string"}},{"in":"query","name":"forecast","schema":{"type":"boolean"}},{"in":"query","name":"date","schema":{"type":"string"}},{"in":"query","name":"sourceRef","schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only schedule management status and roadmap evidence"}},"description":"Builds deterministic roadmap and status from supplied facts. The endpoint is read-only and does not run dispatch/writes or write to ZNP, assets, HITL, or VDMI."}},"/api/dashboard-api/gas-transformation-dependency-map":{"get":{"summary":"Gas- und Waermetransformation Abhaengigkeitslandkarte — read-only dossier-safe status","tags":["Dashboard API"],"operationId":"dashboard_api_gasTransformationDependencyMapStatus","parameters":[{"in":"query","name":"projectId","schema":{"type":"string"}},{"in":"query","name":"division","schema":{"type":"string"}},{"in":"query","name":"nodes","schema":{"type":"string"}},{"in":"query","name":"dependencies","schema":{"type":"string"}},{"in":"query","name":"dataQualityGaps","schema":{"type":"string"}},{"in":"query","name":"investmentPaths","schema":{"type":"string"}},{"in":"query","name":"decommissionRepurposePaths","schema":{"type":"string"}},{"in":"query","name":"customerGroups","schema":{"type":"string"}},{"in":"query","name":"owner","schema":{"type":"string"}},{"in":"query","name":"nextAction","schema":{"type":"string"}},{"in":"query","name":"forecast","schema":{"type":"boolean"}},{"in":"query","name":"date","schema":{"type":"string"}},{"in":"query","name":"sourceRef","schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only gas and heat transformation status and dependency map evidence"}},"description":"Builds deterministic dependency map and status from supplied facts. The endpoint is read-only and does not run writes to ZNP, assets, HITL, or VDMI."}},"/api/dashboard-api/gas-transformation-dataroom":{"get":{"summary":"Gasnetz-Transformationsdatenraum -- read-only status snapshot","tags":["Dashboard API"],"operationId":"dashboard_api_gasTransformationDataroomStatus","parameters":[{"in":"query","name":"roomId","schema":{"type":"string"}},{"in":"query","name":"mandateId","schema":{"type":"string"}},{"in":"query","name":"profile","schema":{"type":"string"}},{"in":"query","name":"transformationPath","schema":{"type":"string"}},{"in":"query","name":"scenarioReference","schema":{"type":"string"}},{"in":"query","name":"evidenceStatus","schema":{"type":"string"}},{"in":"query","name":"decisionStatus","schema":{"type":"string"}},{"in":"query","name":"roadmapStatus","schema":{"type":"string"}},{"in":"query","name":"reviewDate","schema":{"type":"string"}},{"in":"query","name":"owner","schema":{"type":"string"}},{"in":"query","name":"reviewer","schema":{"type":"string"}},{"in":"query","name":"lifecycleStatus","schema":{"type":"string"}},{"in":"query","name":"sourceRefs","schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only Gasnetz-Transformationsdatenraum status evidence"}},"description":"Returns a deterministic dossier-safe status and evidence snapshot for a Gasnetz-Transformationsdatenraum. The endpoint is read-only and does not write Object-Store documents, ingest Knowledge-RAG sources, mutate ACL/export/archive state, create review snapshots, decide EOG/KANU/GasNEV matters, approve investments, create HITL/workflow items, call external connectors, or add Personal-Agent shortcuts."}},"/api/dashboard-api/grid-connection-transformation-gate":{"get":{"summary":"Netzanschlusspunkt Transformations Gate — read-only dossier-safe status","tags":["Dashboard API"],"operationId":"dashboard_api_gridConnectionTransformationGateStatus","parameters":[{"in":"query","name":"meteringPointId","schema":{"type":"string"}},{"in":"query","name":"division","schema":{"type":"string"}},{"in":"query","name":"transformationOption","schema":{"type":"string"}},{"in":"query","name":"dataQualityStatus","schema":{"type":"string"}},{"in":"query","name":"investmentPath","schema":{"type":"string"}},{"in":"query","name":"decommissionPath","schema":{"type":"string"}},{"in":"query","name":"owner","schema":{"type":"string"}},{"in":"query","name":"nextAction","schema":{"type":"string"}},{"in":"query","name":"sourceRef","schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only grid connection transformation status evidence"}},"description":"Builds deterministic gate status and evidence from supplied facts. The endpoint is read-only and does not run writes to ZNP, assets, HITL, or VDMI."}},"/api/dashboard-api/heat-asset-tariff-steering":{"get":{"summary":"District Heating Asset & Tariff Steering Gate — read-only dossier-safe status","tags":["Dashboard API"],"operationId":"dashboard_api_heatAssetTariffSteeringStatus","parameters":[{"in":"query","name":"heatPortfolioId","schema":{"type":"string"}},{"in":"query","name":"division","schema":{"type":"string"}},{"in":"query","name":"technicalMeasures","schema":{"type":"string"}},{"in":"query","name":"tariffImpactStatus","schema":{"type":"string"}},{"in":"query","name":"regulatoryUncertainty","schema":{"type":"string"}},{"in":"query","name":"fundingStatus","schema":{"type":"string"}},{"in":"query","name":"customerImpact","schema":{"type":"string"}},{"in":"query","name":"investmentPriority","schema":{"type":"string"}},{"in":"query","name":"owner","schema":{"type":"string"}},{"in":"query","name":"nextDecisionGate","schema":{"type":"string"}},{"in":"query","name":"blockedFollowUpAction","schema":{"type":"string"}},{"in":"query","name":"sourceRef","schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only district heating asset and tariff status evidence"}},"description":"Builds deterministic gate status and evidence from supplied facts. The endpoint is read-only and does not run writes to ZNP, assets, HITL, or VDMI."}},"/api/dashboard-api/tech-commercial-offer-cockpit":{"get":{"summary":"Technical & Commercial Offer Cockpit — read-only dossier-safe status","tags":["Dashboard API"],"operationId":"dashboard_api_techCommercialOfferCockpitStatus","parameters":[{"in":"query","name":"connectionRequestId","schema":{"type":"string"}},{"in":"query","name":"gridOperatorId","schema":{"type":"string"}},{"in":"query","name":"znpAlignment","schema":{"type":"string"}},{"in":"query","name":"gridNode","schema":{"type":"string"}},{"in":"query","name":"technicalRestriction","schema":{"type":"string"}},{"in":"query","name":"requestedCapacityKW","schema":{"type":"string"}},{"in":"query","name":"technicalStatus","schema":{"type":"string"}},{"in":"query","name":"capacityUtilization","schema":{"type":"string"}},{"in":"query","name":"fnavContractLogic","schema":{"type":"string"}},{"in":"query","name":"commercialAssumptions","schema":{"type":"string"}},{"in":"query","name":"legalAgreementStatus","schema":{"type":"string"}},{"in":"query","name":"legalBoundaries","schema":{"type":"string"}},{"in":"query","name":"sourceRef","schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only technical and commercial offer status evidence"}},"description":"Builds deterministic gate status and evidence from supplied facts. The endpoint is read-only and does not run writes or actual offer generation."}},"/api/dashboard-api/zaehlpark-finanzierung-szenario-cockpit":{"get":{"summary":"Zaehlpark Finanzierung Szenario Cockpit -- read-only dossier-safe status","tags":["Dashboard API"],"operationId":"dashboard_api_zaehlparkFinanzierungSzenarioCockpitStatus","parameters":[{"in":"query","name":"gridOperatorId","schema":{"type":"string"}},{"in":"query","name":"scenarioId","schema":{"type":"string"}},{"in":"query","name":"assetScope","schema":{"type":"string"}},{"in":"query","name":"meteringScope","schema":{"type":"string"}},{"in":"query","name":"period","schema":{"type":"string"}},{"in":"query","name":"investmentVolume","schema":{"type":"string"}},{"in":"query","name":"imsysCount","schema":{"type":"string"}},{"in":"query","name":"financingModel","schema":{"type":"string"}},{"in":"query","name":"opexAnnual","schema":{"type":"string"}},{"in":"query","name":"regulatoryRelevance","schema":{"type":"string"}},{"in":"query","name":"sourceRef","schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only metering rollout financing scenario evidence"}},"description":"Builds deterministic rollout and financing scenario status from supplied facts. The endpoint is read-only and does not run external financing, billing, settlement, or mutation paths."}},"/api/dashboard-api/process-sensitization-readiness-map":{"get":{"summary":"Process Sensitization Readiness Map -- read-only dossier-safe status","tags":["Dashboard API"],"operationId":"dashboard_api_processSensitizationReadinessMapStatus","parameters":[{"in":"query","name":"processType","schema":{"type":"string"}},{"in":"query","name":"topic","schema":{"type":"string"}},{"in":"query","name":"roleDecision","schema":{"type":"string"}},{"in":"query","name":"roleDecisionStatus","schema":{"type":"string"}},{"in":"query","name":"evidenceStatus","schema":{"type":"string"}},{"in":"query","name":"dataQualityStatus","schema":{"type":"string"}},{"in":"query","name":"systemBreakStatus","schema":{"type":"string"}},{"in":"query","name":"redLineStatus","schema":{"type":"string"}},{"in":"query","name":"missingEvidence","schema":{"type":"string"}},{"in":"query","name":"roleDecisionGaps","schema":{"type":"string"}},{"in":"query","name":"dataQualityGaps","schema":{"type":"string"}},{"in":"query","name":"systemBreaks","schema":{"type":"string"}},{"in":"query","name":"nonNegotiableConstraints","schema":{"type":"string"}},{"in":"query","name":"owner","schema":{"type":"string"}},{"in":"query","name":"dueDate","schema":{"type":"string"}},{"in":"query","name":"gridOperatorId","schema":{"type":"string"}},{"in":"query","name":"taskId","schema":{"type":"string"}},{"in":"query","name":"matrixId","schema":{"type":"string"}},{"in":"query","name":"assetId","schema":{"type":"string"}},{"in":"query","name":"sourceRef","schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only process sensitization readiness evidence"}},"description":"Builds deterministic readiness evidence from supplied process facts. The endpoint is read-only and does not create trainings, HITL tasks, VDMI changes, or external calls."}},"/api/dashboard-api/netzprozess-readiness-gate":{"get":{"summary":"Netzprozess Readiness Gate -- read-only dossier-safe status","tags":["Dashboard API"],"operationId":"dashboard_api_netzprozessReadinessGateStatus","parameters":[{"in":"query","name":"processType","schema":{"type":"string"}},{"in":"query","name":"processId","schema":{"type":"string"}},{"in":"query","name":"processRefType","schema":{"type":"string"}},{"in":"query","name":"processRefId","schema":{"type":"string"}},{"in":"query","name":"portalAccess","schema":{"type":"string"}},{"in":"query","name":"sftpRoute","schema":{"type":"string"}},{"in":"query","name":"rolePermission","schema":{"type":"string"}},{"in":"query","name":"itSecurityUpdate","schema":{"type":"string"}},{"in":"query","name":"training","schema":{"type":"string"}},{"in":"query","name":"dataPath","schema":{"type":"string"}},{"in":"query","name":"blockedDecision","schema":{"type":"string"}},{"in":"query","name":"owner","schema":{"type":"string"}},{"in":"query","name":"dueAt","schema":{"type":"string"}},{"in":"query","name":"nextDecision","schema":{"type":"string"}},{"in":"query","name":"missingEvidence","schema":{"type":"string"}},{"in":"query","name":"customSignals","schema":{"type":"string"}},{"in":"query","name":"sourceRef","schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only Netzprozess readiness evidence"}},"description":"Builds deterministic readiness evidence from supplied administrative process facts. The endpoint is read-only and does not create HITL tasks, mutate VDMI/workflow state, or call external systems."}},"/api/dashboard-api/grossspeicher-anschluss-readiness-gate":{"get":{"summary":"Grossspeicher Anschluss Readiness Gate -- read-only dossier-safe status","tags":["Dashboard API"],"operationId":"dashboard_api_grossspeicherAnschlussReadinessGateStatus","parameters":[{"in":"query","name":"gridOperatorId","schema":{"type":"string"}},{"in":"query","name":"projectId","schema":{"type":"string"}},{"in":"query","name":"storageAssetId","schema":{"type":"string"}},{"in":"query","name":"location","schema":{"type":"string"}},{"in":"query","name":"requestedCapacityKW","schema":{"type":"string"}},{"in":"query","name":"storageCapacityKWh","schema":{"type":"string"}},{"in":"query","name":"voltageLevel","schema":{"type":"string"}},{"in":"query","name":"assetContextStatus","schema":{"type":"string"}},{"in":"query","name":"napMastrNummer","schema":{"type":"string"}},{"in":"query","name":"napEvidenceStatus","schema":{"type":"string"}},{"in":"query","name":"connectionRequestStatus","schema":{"type":"string"}},{"in":"query","name":"formalRequestEvidence","schema":{"type":"string"}},{"in":"query","name":"networkSignalPriority","schema":{"type":"string"}},{"in":"query","name":"gridSignalStatus","schema":{"type":"string"}},{"in":"query","name":"fnavProfile","schema":{"type":"string"}},{"in":"query","name":"contractBoundaryStatus","schema":{"type":"string"}},{"in":"query","name":"scheduleRequirement","schema":{"type":"string"}},{"in":"query","name":"storageDispatchAssumption","schema":{"type":"string"}},{"in":"query","name":"scheduleEvidenceStatus","schema":{"type":"string"}},{"in":"query","name":"controllabilityStatus","schema":{"type":"string"}},{"in":"query","name":"controlRoomHandoverStatus","schema":{"type":"string"}},{"in":"query","name":"owner","schema":{"type":"string"}},{"in":"query","name":"nextDecision","schema":{"type":"string"}},{"in":"query","name":"source","schema":{"type":"string"}},{"in":"query","name":"missingEvidence","schema":{"type":"string"}},{"in":"query","name":"evidenceGaps","schema":{"type":"string"}},{"in":"query","name":"sourceRef","schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only Grossspeicher Anschluss readiness evidence"}},"description":"Builds deterministic Grossspeicher/Flex Anschluss readiness evidence from supplied facts. The endpoint is read-only and does not mutate Anschluss, fNAV, ZNP, VDMI/HITL, dispatch, or device-control state."}},"/api/dashboard-api/role-permission-access-readiness-gate":{"get":{"summary":"Role-Permission / AccessManager Readiness Gate -- read-only dossier-safe status","tags":["Dashboard API"],"operationId":"dashboard_api_rolePermissionAccessReadinessGateStatus","parameters":[{"in":"query","name":"roleId","schema":{"type":"string"}},{"in":"query","name":"roleName","schema":{"type":"string"}},{"in":"query","name":"processType","schema":{"type":"string"}},{"in":"query","name":"gridOperatorId","schema":{"type":"string"}},{"in":"query","name":"accessManagerRef","schema":{"type":"string"}},{"in":"query","name":"tenantScope","schema":{"type":"string"}},{"in":"query","name":"portalAccess","schema":{"type":"string"}},{"in":"query","name":"sftpRoute","schema":{"type":"string"}},{"in":"query","name":"rolePermission","schema":{"type":"string"}},{"in":"query","name":"securityClearance","schema":{"type":"string"}},{"in":"query","name":"trainingProof","schema":{"type":"string"}},{"in":"query","name":"reapprovalStatus","schema":{"type":"string"}},{"in":"query","name":"sourcePath","schema":{"type":"string"}},{"in":"query","name":"owner","schema":{"type":"string"}},{"in":"query","name":"dueDate","schema":{"type":"string"}},{"in":"query","name":"blockedAccess","schema":{"type":"string"}},{"in":"query","name":"caseId","schema":{"type":"string"}},{"in":"query","name":"source","schema":{"type":"string"}},{"in":"query","name":"missingEvidence","schema":{"type":"string"}},{"in":"query","name":"evidenceGaps","schema":{"type":"string"}},{"in":"query","name":"sourceRef","schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only Role-Permission / AccessManager readiness evidence"}},"description":"Builds deterministic role/access readiness evidence from supplied facts. The endpoint is read-only and does not call AccessManager, mutate IAM/RBAC state, store credentials, create workflows, or call external systems."}},"/api/dashboard-api/owner-deadline-evidence-gate":{"get":{"summary":"Owner-Frist-Evidenz Gate -- read-only dossier-safe status","tags":["Dashboard API"],"operationId":"dashboard_api_ownerDeadlineEvidenceGateStatus","parameters":[{"in":"query","name":"signalId","schema":{"type":"string"}},{"in":"query","name":"sourceType","schema":{"type":"string"}},{"in":"query","name":"sourceRef","schema":{"type":"string"}},{"in":"query","name":"processType","schema":{"type":"string"}},{"in":"query","name":"riskLevel","schema":{"type":"string"}},{"in":"query","name":"ownerRole","schema":{"type":"string"}},{"in":"query","name":"ownerContact","schema":{"type":"string"}},{"in":"query","name":"dueAt","schema":{"type":"string"}},{"in":"query","name":"evidenceRef","schema":{"type":"string"}},{"in":"query","name":"evidenceStatus","schema":{"type":"string"}},{"in":"query","name":"blockedDecision","schema":{"type":"string"}},{"in":"query","name":"linkedEntity","schema":{"type":"string"}},{"in":"query","name":"blockedByMissingEvidence","schema":{"type":"string"}},{"in":"query","name":"overdue","schema":{"type":"string"}},{"in":"query","name":"signalContextStatus","schema":{"type":"string"}},{"in":"query","name":"missingEvidence","schema":{"type":"string"}},{"in":"query","name":"evidenceGaps","schema":{"type":"string"}},{"in":"query","name":"caseId","schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only Owner-Frist-Evidenz readiness evidence"}},"description":"Builds deterministic owner/deadline/evidence readiness from supplied VNB signal facts. The endpoint is read-only and does not ingest mail/Teams/Loop, mutate workflows, send notifications, create tasks, or call external systems."}},"/api/dashboard-api/automation-risk-gate":{"get":{"summary":"Automation Risk Gate -- read-only dossier-safe status","tags":["Dashboard API"],"operationId":"dashboard_api_automationRiskGateStatus","parameters":[{"in":"query","name":"processId","schema":{"type":"string"}},{"in":"query","name":"processName","schema":{"type":"string"}},{"in":"query","name":"processClass","schema":{"type":"string"}},{"in":"query","name":"runFrequency","schema":{"type":"string"}},{"in":"query","name":"massRunVolume","schema":{"type":"string"}},{"in":"query","name":"affectedDomains","schema":{"type":"string"}},{"in":"query","name":"customerCommunicationImpact","schema":{"type":"string"}},{"in":"query","name":"billingImpact","schema":{"type":"string"}},{"in":"query","name":"marketCommunicationImpact","schema":{"type":"string"}},{"in":"query","name":"massDataImpact","schema":{"type":"string"}},{"in":"query","name":"testCaseCoverage","schema":{"type":"string"}},{"in":"query","name":"edgeCaseCatalog","schema":{"type":"string"}},{"in":"query","name":"acceptanceMethod","schema":{"type":"string"}},{"in":"query","name":"monitoringSignals","schema":{"type":"string"}},{"in":"query","name":"stopCriteria","schema":{"type":"string"}},{"in":"query","name":"rollbackPath","schema":{"type":"string"}},{"in":"query","name":"processOwner","schema":{"type":"string"}},{"in":"query","name":"operationsOwner","schema":{"type":"string"}},{"in":"query","name":"blockedDecision","schema":{"type":"string"}},{"in":"query","name":"missingEvidence","schema":{"type":"string"}},{"in":"query","name":"riskLevel","schema":{"type":"string"}},{"in":"query","name":"source","schema":{"type":"string"}},{"in":"query","name":"sourceRef","schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only automation-risk readiness evidence"}},"description":"Builds deterministic RPA / automation risk readiness from supplied process facts. The endpoint is read-only and does not run bots, trigger mass-runs, mutate workflows, create approvals, or call external systems."}},"/api/dashboard-api/redispatch-project-controlling-kpi-cockpit":{"get":{"summary":"Redispatch project-controlling KPI cockpit -- read-only evidence gate","tags":["Dashboard API"],"operationId":"dashboard_api_redispatchProjectControllingKpiCockpitStatus","parameters":[{"in":"query","name":"cockpitId","schema":{"type":"string"}},{"in":"query","name":"gridOperatorId","schema":{"type":"string"}},{"in":"query","name":"period","schema":{"type":"string"}},{"in":"query","name":"redispatchAuditId","schema":{"type":"string"}},{"in":"query","name":"settlementRef","schema":{"type":"string"}},{"in":"query","name":"vdmiProcessId","schema":{"type":"string"}},{"in":"query","name":"taskId","schema":{"type":"string"}},{"in":"query","name":"taskStatus","schema":{"type":"string"}},{"in":"query","name":"taskOwner","schema":{"type":"string"}},{"in":"query","name":"dueDate","schema":{"type":"string"}},{"in":"query","name":"blockedDecision","schema":{"type":"string"}},{"in":"query","name":"decisionBlocker","schema":{"type":"string"}},{"in":"query","name":"hasRedispatchAudit","schema":{"type":"string"}},{"in":"query","name":"hasAssetEvidence","schema":{"type":"string"}},{"in":"query","name":"hasMastrEvidence","schema":{"type":"string"}},{"in":"query","name":"hasLoadProfileEvidence","schema":{"type":"string"}},{"in":"query","name":"hasSettlementReadiness","schema":{"type":"string"}},{"in":"query","name":"hasKpiReference","schema":{"type":"string"}},{"in":"query","name":"datasourceHealth","schema":{"type":"string"}},{"in":"query","name":"sourceFreshness","schema":{"type":"string"}},{"in":"query","name":"qualityStatus","schema":{"type":"string"}},{"in":"query","name":"staleSources","schema":{"type":"string"}},{"in":"query","name":"tasks","schema":{"type":"string"}},{"in":"query","name":"kpiSignals","schema":{"type":"string"}},{"in":"query","name":"sourceHealth","schema":{"type":"string"}},{"in":"query","name":"affectedAssets","schema":{"type":"string"}},{"in":"query","name":"missingEvidence","schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only Redispatch project-controlling KPI evidence"}},"description":"Builds deterministic Redispatch project-controlling and KPI readiness from supplied facts and references. The endpoint is read-only and does not execute Redispatch orders, settlement, billing, task/workflow/HITL/VDMI mutation, datasource ingestion, asset mutation, or external calls."}},"/api/dashboard-api/stadtwerk-mauer-vdmi-profile":{"get":{"summary":"Stadtwerk Mauer VDMI profile -- read-only dossier-safe status","tags":["Dashboard API"],"operationId":"dashboard_api_stadtwerkMauerVdmiProfileStatus","parameters":[{"in":"query","name":"tenantId","schema":{"type":"string"}},{"in":"query","name":"includeRoles","schema":{"type":"string"}},{"in":"query","name":"includeEvidenceGaps","schema":{"type":"string"}},{"in":"query","name":"demoQuestion","schema":{"type":"string"}},{"in":"query","name":"focusSparte","schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only Stadtwerk Mauer VDMI/profile evidence"}},"description":"Returns the deterministic Stadtwerk Mauer MVP profile, sparten, VDMI roles, evidence gaps, and side-effect guards. The endpoint is read-only and does not create tenants, Eve agents, workflows, NOVA/VDMI/HITL objects, or external calls."}},"/api/dashboard-api/stadtwerk-mauer-capability-projection":{"get":{"summary":"Stadtwerk Mauer capability projection -- read-only role/VDMI view","tags":["Dashboard API"],"operationId":"dashboard_api_stadtwerkMauerCapabilityProjectionStatus","parameters":[{"in":"query","name":"tenantId","schema":{"type":"string"}},{"in":"query","name":"roles","schema":{"type":"string"}},{"in":"query","name":"includeConsequential","schema":{"type":"string"}},{"in":"query","name":"includeDescriptorSources","schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only Stadtwerk Mauer role/capability projection"}},"description":"Returns a deterministic role-scoped capability projection for Stadtwerk Mauer based on existing VDMI profile, catalog, hydration, and generated descriptor sources. The endpoint is read-only and does not create Eve agents, workflows, tasks, NOVA/VDMI/HITL objects, tenants, tokens, or external calls."}},"/api/dashboard-api/stadtwerk-mauer-event-replay-preview":{"get":{"summary":"Stadtwerk Mauer event replay preview -- read-only synthetic event catalog","tags":["Dashboard API"],"operationId":"dashboard_api_stadtwerkMauerEventReplayPreviewStatus","parameters":[{"in":"query","name":"tenantId","schema":{"type":"string"}},{"in":"query","name":"seed","schema":{"type":"string"}},{"in":"query","name":"count","schema":{"type":"string"}},{"in":"query","name":"eventType","schema":{"type":"string"}},{"in":"query","name":"sparte","schema":{"type":"string"}},{"in":"query","name":"marketRole","schema":{"type":"string"}},{"in":"query","name":"sourceActor","schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only deterministic Stadtwerk Mauer event replay preview"}},"description":"Returns deterministic synthetic Stadtwerk Mauer event templates and replay envelopes. The endpoint is read-only and does not schedule, persist, inject, publish, execute, or externally send events."}},"/api/dashboard-api/stadtwerk-mauer-sandbox-runtime":{"get":{"summary":"Stadtwerk Mauer sandbox runtime -- read-only dossier-safe status","tags":["Dashboard API"],"operationId":"dashboard_api_stadtwerkMauerSandboxRuntimeStatus","parameters":[{"name":"tenantId","in":"query","required":false,"schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only Stadtwerk Mauer sandbox runtime status","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string"},"tenantId":{"type":"string"},"eventCount":{"type":"number"},"artifactCount":{"type":"number"},"derivedStateInventory":{"type":"object"},"resetDeleteReadiness":{"type":"object"},"lastResetResult":{"type":"object","nullable":true},"missingLifecycleEvidence":{"type":"array"},"positiveFollowUps":{"type":"array"},"sourceActions":{"type":"object"},"dossierEvidence":{"type":"object"},"safety":{"type":"string"},"timestamp":{"type":"string","format":"date-time"},"_errors":{"type":"array","items":{"type":"string"}}}}}}}},"description":"Reports deterministic Stadtwerk Mauer sandbox runtime state, reset/delete readiness, derived artifact counts and source-action guards. The endpoint is read-only; sandbox ingest/reset mutation actions are separate and not used for dossier hydration."}},"/api/dashboard-api/stadtwerk-mauer-external-interface-stubs":{"get":{"summary":"Stadtwerk Mauer external-interface stubs -- read-only status","tags":["Dashboard API"],"operationId":"dashboard_api_stadtwerkMauerExternalInterfaceStubsStatus","parameters":[{"name":"tenantId","in":"query","required":false,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"number"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only Stadtwerk Mauer external-interface stub status","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string"},"tenantId":{"type":"string"},"transcriptCount":{"type":"number"},"artifactCount":{"type":"number"},"familyCounts":{"type":"object"},"variantCounts":{"type":"object"},"recentTranscripts":{"type":"array"},"missingEvidence":{"type":"array"},"positiveFollowUps":{"type":"array"},"resetBoundary":{"type":"object"},"sourceActions":{"type":"object"},"dossierEvidence":{"type":"object"},"safety":{"type":"string"},"timestamp":{"type":"string","format":"date-time"},"_errors":{"type":"array","items":{"type":"string"}}}}}}}},"description":"Reports deterministic sandbox stub transcripts, response variants, missing evidence, reset boundary and no-call guards. The endpoint is read-only; stub calls are separate sandbox-only non-consequential mutations."}},"/api/dashboard-api/stadtwerk-mauer-e2e-process-demo":{"get":{"summary":"Stadtwerk Mauer E2E process demo -- read-only status","tags":["Dashboard API"],"operationId":"dashboard_api_stadtwerkMauerE2eProcessDemoStatus","parameters":[{"name":"tenantId","in":"query","required":false,"schema":{"type":"string"}},{"name":"caseId","in":"query","required":false,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"number"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only Stadtwerk Mauer E2E process demo status","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string"},"tenantId":{"type":"string"},"demoPath":{"type":"string"},"caseId":{"type":"string","nullable":true},"traceCount":{"type":"number"},"artifactCount":{"type":"number"},"recentTraces":{"type":"array"},"rolesAndCapabilities":{"type":"array"},"evidenceQuality":{"type":"string"},"missingEvidence":{"type":"array"},"positiveFollowUps":{"type":"array"},"resetBoundary":{"type":"object"},"sourceActions":{"type":"object"},"dossierEvidence":{"type":"object"},"safety":{"type":"string"},"timestamp":{"type":"string","format":"date-time"},"_errors":{"type":"array","items":{"type":"string"}}}}}}}},"description":"Reports deterministic Stadtwerk Mauer E2E demo traces, VDMI role/capability routing, stub transcript evidence, missing evidence, reset boundary and no-call guards. The endpoint is read-only; demo runs are separate sandbox-only non-consequential mutations."}},"/api/dashboard-api/stadtwerk-mauer-mastr-data-overlay":{"get":{"summary":"Stadtwerk Mauer blended MaStR data overlay -- read-only status","tags":["Dashboard API"],"operationId":"dashboard_api_stadtwerkMauerMastrDataOverlayStatus","parameters":[{"name":"tenantId","in":"query","required":false,"schema":{"type":"string"}},{"name":"postalCode","in":"query","required":false,"schema":{"type":"string"}},{"name":"municipality","in":"query","required":false,"schema":{"type":"string"}},{"name":"caseId","in":"query","required":false,"schema":{"type":"string"}},{"name":"revalidationMode","in":"query","required":false,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only Stadtwerk Mauer blended MaStR data overlay status","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string"},"tenantId":{"type":"string"},"municipality":{"type":"string"},"postalCode":{"type":"string"},"assetCount":{"type":"number"},"totalCapacityKw":{"type":"number"},"originalGridOperators":{"type":"array"},"operatorOverlay":{"type":"object"},"sampleAssets":{"type":"array"},"publicContextRows":{"type":"array"},"overlayAssetRows":{"type":"array"},"revalidationRows":{"type":"array"},"affectedCaseRows":{"type":"array"},"nextGateRows":{"type":"array"},"safeActionRows":{"type":"array"},"boundaryRows":{"type":"array"},"evidenceQuality":{"type":"string"},"missingEvidence":{"type":"array"},"positiveFollowUps":{"type":"array"},"resetBoundary":{"type":"object"},"sourceActions":{"type":"object"},"dossierEvidence":{"type":"object"},"safety":{"type":"string"},"timestamp":{"type":"string","format":"date-time"},"_errors":{"type":"array","items":{"type":"string"}}}}}}}},"description":"Reports the real MaStR baseline for Mauer and the virtual Stadtwerk Mauer operator overlay. Original MaStR facts and real-world operator provenance remain visible; no MaStR records, MaKo, device-control or external connectors are mutated."}},"/api/dashboard-api/stadtwerk-mauer-case-detail":{"get":{"summary":"Stadtwerk Mauer case detail -- read-only Workbench projection","tags":["Dashboard API"],"operationId":"dashboard_api_stadtwerkMauerCaseDetailStatus","parameters":[{"name":"tenantId","in":"query","required":false,"schema":{"type":"string"}},{"name":"caseId","in":"query","required":false,"schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only Stadtwerk Mauer case detail projection"}},"description":"Returns a deterministic Budibase-renderable detail model for a selectable synthetic Stadtwerk Mauer PV missing-NAP demo case. The endpoint summarizes Blueprint seed, role-workbench hints, E2E trace/artifact status and operations-runbook links without executing Budibase, Rundeck, MaKo, billing, settlement, device-control or external actions."}},"/api/dashboard-api/stadtwerk-mauer-case-annotations":{"post":{"summary":"Stadtwerk Mauer case annotation -- sandbox command","tags":["Dashboard API"],"operationId":"dashboard_api_stadtwerkMauerCaseAnnotationCommand","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Structured sandbox annotation command result"}},"description":"Records a bounded audited sandbox annotation/status for the selected synthetic Stadtwerk Mauer case. This is not a generic editor and does not write Budibase tables, mutate public context, trigger runbooks, MaKo, billing, settlement or device-control.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"tenantId":{"type":"string"},"caseId":{"type":"string"},"commandType":{"type":"string"},"status":{"type":"string"},"note":{"type":"string"},"reason":{"type":"string"},"actorLabel":{"type":"string"},"sourceLabel":{"type":"string"},"idempotencyKey":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}}},"/api/dashboard-api/stadtwerk-mauer-workbench-hub":{"get":{"summary":"Stadtwerk Mauer Workbench Hub -- read-only launcher projection","tags":["Dashboard API"],"operationId":"dashboard_api_stadtwerkMauerWorkbenchHubStatus","parameters":[{"name":"tenantId","in":"query","required":false,"schema":{"type":"string"}},{"name":"caseId","in":"query","required":false,"schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only Stadtwerk Mauer Workbench Hub projection"}},"description":"Returns a deterministic Budibase-renderable hub model for the Stadtwerk Mauer Workbench. The endpoint exposes target readiness, route metadata, data-class separation, next gates and no-call guards without executing Budibase writes, Rundeck jobs, MaKo, billing, settlement, device-control or external actions."}},"/api/dashboard-api/stadtwerk-mauer-blueprint-pack-verify":{"get":{"summary":"Stadtwerk Mauer Blueprint Pack verify -- read-only Workbench projection","tags":["Dashboard API"],"operationId":"dashboard_api_stadtwerkMauerBlueprintPackVerifyStatus","parameters":[{"name":"tenantId","in":"query","required":false,"schema":{"type":"string"}},{"name":"seedId","in":"query","required":false,"schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only Stadtwerk Mauer Blueprint Pack verify projection"}},"description":"Returns scalar-friendly Blueprint-Pack verification evidence for the Stadtwerk Mauer Budibase Workbench. The endpoint reuses the static Blueprint seed validation contract and exposes no setup/reset/provisioning, direct Rundeck execution, Budibase writes, public-context mutation, MaKo, billing, settlement, tariff, device-control, external connector, secret/key or Personal-Agent action."}},"/api/dashboard-api/stadtwerk-mauer-transfer-readiness":{"get":{"summary":"Stadtwerk Mauer transfer readiness -- read-only Workbench projection","tags":["Dashboard API"],"operationId":"dashboard_api_stadtwerkMauerTransferReadinessStatus","parameters":[{"name":"tenantId","in":"query","required":false,"schema":{"type":"string"}},{"name":"seedId","in":"query","required":false,"schema":{"type":"string"}},{"name":"caseId","in":"query","required":false,"schema":{"type":"string"}},{"name":"includeBlockedBoundaries","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"includeSafeNextSteps","in":"query","required":false,"schema":{"type":"boolean"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only Stadtwerk Mauer transfer-readiness projection"}},"description":"Returns scalar Budibase-safe transfer-readiness rows for the Stadtwerk Mauer Blueprint Pack. The endpoint labels public context, synthetic seed data, sandbox runtime artifacts, tenant parameters, reusable Workbench elements and blocked production boundaries without setup/reset/provisioning, direct Rundeck execution, Budibase writes, public-context mutation, MaKo, billing, settlement, tariff, device-control, external connector, secret/key or Personal-Agent action."}},"/api/dashboard-api/stadtwerk-mauer-landing-registry-draft":{"get":{"summary":"Stadtwerk Mauer Landing-Registry draft -- read-only sync proof","tags":["Dashboard API"],"operationId":"dashboard_api_stadtwerkMauerLandingRegistryDraftStatus","parameters":[{"name":"tenantId","in":"query","required":false,"schema":{"type":"string"}},{"name":"seedId","in":"query","required":false,"schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only Landing-Registry draft sync proof"}},"description":"Returns a deterministic Landing-Registry draft projection for the Stadtwerk Mauer Blueprint-Pack demo seed. The draft is derived from the canonical Blueprint-Pack demoProcessMatrix and keeps productive cernion.de publication pending. The endpoint performs no Landing-Registry write, Budibase write, deploy, publication, external connector, MaKo, billing, settlement, tariff, device-control, HITL, secret/key or Personal-Agent action."}},"/api/dashboard-api/energy-sidecar-route-registry":{"get":{"summary":"Energy Sidecar Route Registry -- read-only advisory evidence","tags":["Dashboard API"],"operationId":"dashboard_api_energySidecarRouteRegistryStatus","parameters":[{"name":"intent","in":"query","required":false,"schema":{"type":"string"}},{"name":"domain","in":"query","required":false,"schema":{"type":"string"}},{"name":"requiredInput","in":"query","required":false,"schema":{"type":"string"}},{"name":"tenantId","in":"query","required":false,"schema":{"type":"string"}},{"name":"includeFallbacks","in":"query","required":false,"schema":{"type":"boolean"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only route-registry evidence"}},"description":"Returns deterministic dossier-safe route-registry rows for Fach-Sidecar routing/audit questions. The endpoint recommends existing read-only Cernion actions/endpoints, source registry boundaries, required inputs, fallback routes and no-call guards. It is advisory/read-only and never executes the recommended downstream endpoint, calls external connectors, creates HITL/workflows, sends webhooks/mail, mutates public context, or performs MaKo/billing/settlement/tariff/device-control actions."}},"/api/dashboard-api/interconnection-release-file":{"get":{"summary":"Koppelpunkt Freigabeakte -- read-only evidence/gate status","tags":["Dashboard API"],"operationId":"dashboard_api_interconnectionReleaseFileStatus","parameters":[{"name":"caseId","in":"query","required":false,"schema":{"type":"string"}},{"name":"koppelpunktId","in":"query","required":false,"schema":{"type":"string"}},{"name":"marketPartnerId","in":"query","required":false,"schema":{"type":"string"}},{"name":"timeseriesId","in":"query","required":false,"schema":{"type":"string"}},{"name":"mappingVersion","in":"query","required":false,"schema":{"type":"string"}},{"name":"sourceSystem","in":"query","required":false,"schema":{"type":"string"}},{"name":"evidenceStatus","in":"query","required":false,"schema":{"type":"string"}},{"name":"approvalStatus","in":"query","required":false,"schema":{"type":"string"}},{"name":"owner","in":"query","required":false,"schema":{"type":"string"}},{"name":"reviewerRole","in":"query","required":false,"schema":{"type":"string"}},{"name":"affectedProcess","in":"query","required":false,"schema":{"type":"string"}},{"name":"nextChangeGate","in":"query","required":false,"schema":{"type":"string"}},{"name":"tenantId","in":"query","required":false,"schema":{"type":"string"}},{"name":"includeFallbacks","in":"query","required":false,"schema":{"type":"boolean"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only interconnection release-file evidence"}},"description":"Returns deterministic dossier-safe Freigabeakte rows for Koppelpunkt, Marktpartner and Zeitreihen mapping decisions. The endpoint reports release status, evidence source/version, owner, downstream process impacts, missing evidence, positive follow-ups and no-call guards. It is advisory/read-only and never writes mappings, executes Freigabe workflows, creates HITL tickets, sends mail/webhooks, calls external connectors, mutates Budibase tables, or performs MaKo/billing/settlement/tariff/device-control actions."}},"/api/dashboard-api/stadtwerk-mauer-administrator-inventory":{"get":{"summary":"Stadtwerk Mauer Administrator inventory -- read-only catalog projection","tags":["Dashboard API"],"operationId":"dashboard_api_stadtwerkMauerAdministratorInventoryStatus","parameters":[{"name":"tenantId","in":"query","required":false,"schema":{"type":"string"}},{"name":"caseId","in":"query","required":false,"schema":{"type":"string"}},{"name":"includeRuntime","in":"query","required":false,"schema":{"type":"boolean"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only Stadtwerk Mauer Administrator inventory projection"}},"description":"Returns a deterministic Budibase-renderable Administrator inventory for the Stadtwerk Mauer Workbench. The endpoint separates public context, synthetic seed, sandbox runtime, generated Workbench items and runbook read/verify surfaces without provisioning, reset, Budibase writes, MaKo, billing, settlement, device-control or external actions."}},"/api/dashboard-api/stadtwerk-mauer-tenant-databrowser":{"get":{"summary":"Stadtwerk Mauer Tenant Databrowser -- read-only bounded inspection rows","tags":["Dashboard API"],"operationId":"dashboard_api_stadtwerkMauerTenantDatabrowserStatus","parameters":[{"name":"tenantId","in":"query","required":false,"schema":{"type":"string"}},{"name":"caseId","in":"query","required":false,"schema":{"type":"string"}},{"name":"categoryId","in":"query","required":false,"schema":{"type":"string"}},{"name":"itemId","in":"query","required":false,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":50}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only bounded Stadtwerk Mauer Tenant Databrowser projection"}},"description":"Returns bounded scalar category, item, trace and detail rows for the Stadtwerk Mauer Administrator Workbench. The endpoint is read-only, sandbox-scoped and does not export, replay traces, mutate public context, write Budibase tables or execute runbooks."}},"/api/dashboard-api/stadtwerk-mauer-case-actions":{"get":{"summary":"Stadtwerk Mauer case actions -- read-only/verify-only action contract","tags":["Dashboard API"],"operationId":"dashboard_api_stadtwerkMauerCaseActionsStatus","parameters":[{"name":"tenantId","in":"query","required":false,"schema":{"type":"string"}},{"name":"caseId","in":"query","required":false,"schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only Stadtwerk Mauer selected-case action contract"}},"description":"Returns deterministic Budibase-renderable selected-case action and process-panel metadata for the Stadtwerk Mauer Workbench. The endpoint exposes refresh, Blueprint verify, evidence validation, runbook boundary and last-result rows without executing Budibase writes, setup/reset/provisioning, Rundeck jobs, MaKo, billing, settlement, device-control, HITL or external connector actions."}},"/api/dashboard-api/stadtwerk-mauer-role-workbench-catalog":{"get":{"summary":"Stadtwerk Mauer role Workbench catalog -- read-only open-target contract","tags":["Dashboard API"],"operationId":"dashboard_api_stadtwerkMauerRoleWorkbenchCatalogStatus","parameters":[{"name":"tenantId","in":"query","required":false,"schema":{"type":"string"}},{"name":"caseId","in":"query","required":false,"schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only Stadtwerk Mauer role Workbench catalog projection"}},"description":"Returns deterministic Budibase-renderable role Workbench target metadata for the Stadtwerk Mauer Workbench Hub. The endpoint exposes scalar role/open-target rows for Administrator, Zielnetzplanung, Vertrieb, Key Account and VDMI governance views without implementing role calculations, Budibase writes, authorization changes, MaKo, billing, settlement, device-control, HITL or external connector actions."}},"/api/dashboard-api/stadtwerk-mauer-grid-planning-role-queue":{"get":{"summary":"Stadtwerk Mauer grid-planning role queue -- read-only evidence handover","tags":["Dashboard API"],"operationId":"dashboard_api_stadtwerkMauerGridPlanningRoleQueueStatus","parameters":[{"name":"tenantId","in":"query","required":false,"schema":{"type":"string"}},{"name":"caseId","in":"query","required":false,"schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only Stadtwerk Mauer grid-planning role queue projection"}},"description":"Returns deterministic Budibase-renderable Zielnetzplanung queue and evidence handover rows for the Stadtwerk Mauer Workbench. The endpoint exposes scalar generated role queue facts for the synthetic PV missing-NAP case without role assignment writes, Budibase writes, grid-capacity calculations, MaKo, billing, settlement, device-control, HITL or external connector actions."}},"/api/dashboard-api/stadtwerk-mauer-grid-planning-selected-item-detail":{"get":{"summary":"Stadtwerk Mauer grid-planning selected item detail -- read-only next-gate context","tags":["Dashboard API"],"operationId":"dashboard_api_stadtwerkMauerGridPlanningSelectedItemDetailStatus","parameters":[{"name":"tenantId","in":"query","required":false,"schema":{"type":"string"}},{"name":"caseId","in":"query","required":false,"schema":{"type":"string"}},{"name":"queueItemId","in":"query","required":false,"schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only Stadtwerk Mauer selected grid-planning item detail projection"}},"description":"Returns scalar Budibase-renderable detail, context, evidence gap, next-gate and safe follow-up rows for one generated Zielnetzplanung role-queue item. The endpoint is advisory/read-only and does not approve grid capacity, mutate public context, write Budibase tables, run planning engines, call external connectors or execute operational actions."}},"/api/dashboard-api/stadtwerk-mauer-sales-workbench-briefing":{"get":{"summary":"Stadtwerk Mauer sales Workbench briefing -- read-only evidence-backed claims","tags":["Dashboard API"],"operationId":"dashboard_api_stadtwerkMauerSalesWorkbenchBriefingStatus","parameters":[{"name":"tenantId","in":"query","required":false,"schema":{"type":"string"}},{"name":"caseId","in":"query","required":false,"schema":{"type":"string"}},{"name":"audience","in":"query","required":false,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":25}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only Stadtwerk Mauer sales Workbench briefing projection"}},"description":"Returns deterministic Budibase-renderable Vertrieb and Key Account briefing rows for the Stadtwerk Mauer Workbench. Claims are explicitly evidence-backed, assumption-backed or not-yet-claimable and the endpoint does not create CRM/customer data, Budibase writes, MaKo, billing, settlement, tariff, device-control, HITL or external connector actions."}},"/api/dashboard-api/stadtwerk-mauer-workbench-landing":{"get":{"summary":"Stadtwerk Mauer Workbench landing -- presenter readiness projection","tags":["Dashboard API"],"operationId":"dashboard_api_stadtwerkMauerWorkbenchLandingStatus","parameters":[{"name":"tenantId","in":"query","required":false,"schema":{"type":"string"}},{"name":"caseId","in":"query","required":false,"schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only Stadtwerk Mauer Workbench landing projection"}},"description":"Returns deterministic Budibase-renderable landing/status rows for the Stadtwerk Mauer Workbench first screen. The endpoint exposes demo readiness, available sections, safe presenter actions and guard gaps without Budibase writes, setup/reset, provisioning, MaKo, billing, settlement, device-control, HITL or external actions."}},"/api/dashboard-api/stadtwerk-mauer-workbench-selected-target":{"get":{"summary":"Stadtwerk Mauer Workbench selected target -- read-only focus projection","tags":["Dashboard API"],"operationId":"dashboard_api_stadtwerkMauerWorkbenchSelectedTargetStatus","parameters":[{"name":"tenantId","in":"query","required":false,"schema":{"type":"string"}},{"name":"caseId","in":"query","required":false,"schema":{"type":"string"}},{"name":"targetId","in":"query","required":false,"schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only Stadtwerk Mauer selected Workbench target projection"}},"description":"Returns deterministic Budibase-renderable selected/focused target rows for the Stadtwerk Mauer Workbench Hub. The endpoint maps Hub/role targets to scalar focus/helper rows without role-specific calculations, permission changes, Budibase writes, setup/reset, Rundeck execution, MaKo, billing, settlement, device-control, HITL or external connector actions."}},"/api/dashboard-api/fnav-fast-track-contract-gate":{"get":{"summary":"fNAV fast-track contract gate -- read-only decision readiness","tags":["Dashboard API"],"operationId":"dashboard_api_fnavFastTrackContractGateStatus","parameters":[{"name":"gateId","in":"query","required":false,"schema":{"type":"string"}},{"name":"gridOperatorId","in":"query","required":false,"schema":{"type":"string"}},{"name":"requestType","in":"query","required":false,"schema":{"type":"string"}},{"name":"assetOrLoadType","in":"query","required":false,"schema":{"type":"string"}},{"name":"netzsignalPriorityPolicy","in":"query","required":false,"schema":{"type":"string"}},{"name":"controlEvidenceRef","in":"query","required":false,"schema":{"type":"string"}},{"name":"contractStatus","in":"query","required":false,"schema":{"type":"string"}},{"name":"legalStatus","in":"query","required":false,"schema":{"type":"string"}},{"name":"ownerContact","in":"query","required":false,"schema":{"type":"string"}},{"in":"query","name":"requestedCapacityKW","schema":{"type":"number"}},{"in":"query","name":"firmCapacityKW","schema":{"type":"number"}},{"in":"query","name":"flexibleCapacityKW","schema":{"type":"number"}},{"in":"query","name":"curtailmentWindow","schema":{"type":"string"}},{"in":"query","name":"voltageLevel","schema":{"type":"string"}},{"in":"query","name":"scheduleObligation","schema":{"type":"string"}},{"in":"query","name":"meteringRequirements","schema":{"type":"string"}},{"in":"query","name":"marketingBoundaries","schema":{"type":"string"}},{"in":"query","name":"commercialImpact","schema":{"type":"string"}},{"in":"query","name":"breakCriteria","schema":{"type":"string"}},{"in":"query","name":"escalationOwner","schema":{"type":"string"}},{"in":"query","name":"vdmiProcessId","schema":{"type":"string"}},{"in":"query","name":"sourceRef","schema":{"type":"string"}},{"in":"query","name":"connectionRequestRef","schema":{"type":"string"}},{"in":"query","name":"gridConnectionPoint","schema":{"type":"string"}},{"in":"query","name":"capacityOfferRef","schema":{"type":"string"}},{"in":"query","name":"capacityOfferVersion","schema":{"type":"string"}},{"in":"query","name":"capacityOfferDate","schema":{"type":"string"}},{"in":"query","name":"restrictionProfileRef","schema":{"type":"string"}},{"in":"query","name":"restrictionProfileVersion","schema":{"type":"string"}},{"in":"query","name":"contractRef","schema":{"type":"string"}},{"in":"query","name":"contractVersion","schema":{"type":"string"}},{"in":"query","name":"contractReviewStatus","schema":{"type":"string"}},{"in":"query","name":"operatingEventRef","schema":{"type":"string"}},{"in":"query","name":"operatingEventType","schema":{"type":"string"}},{"in":"query","name":"operatingEventTimestamp","schema":{"type":"string"}},{"in":"query","name":"curtailmentMeasurementEvidenceRef","schema":{"type":"string"}},{"in":"query","name":"redispatchRelevanceRef","schema":{"type":"string"}},{"in":"query","name":"redispatchStatusRef","schema":{"type":"string"}},{"in":"query","name":"compensationStatusRef","schema":{"type":"string"}},{"in":"query","name":"evidenceOwner","schema":{"type":"string"}},{"in":"query","name":"nextReviewGate","schema":{"type":"string"}},{"in":"query","name":"evidenceSourceTimestamp","schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only fNAV fast-track contract-gate status","content":{"application/json":{"schema":{"type":"object","properties":{"capabilityKey":{"type":"string"},"gateId":{"type":"string"},"decisionReadiness":{"type":"string"},"status":{"type":"string"},"requestSummary":{"type":"object"},"technicalGate":{"type":"object"},"commercialGate":{"type":"object"},"contractGate":{"type":"object"},"evidenceStatus":{"type":"object"},"governanceBlockers":{"type":"array"},"missingEvidence":{"type":"array"},"positiveFollowUps":{"type":"array"},"sourceActions":{"type":"object"},"dossierEvidence":{"type":"object"},"lifecycleEvidence":{"type":"object"},"safety":{"type":"string"},"timestamp":{"type":"string","format":"date-time"}}}}}}},"description":"Projects fNAV fast-track request, network-signal, metering/control, commercial, contract, legal and owner evidence into a dossier-safe gate status. The endpoint is read-only and never creates contracts, HITL items, MaKo, billing, settlement, tariff, control, SMGW/CLS or external actions. It additionally projects caller-supplied FCA/fNAV lifecycle evidence (connection request, capacity offer, restriction profile, contract, at most one operating-event snapshot, curtailment/measurement evidence, and Redispatch/compensation evidence markers) as review-only, non-consequential display fields."}},"/api/dashboard-api/cross-channel-vnb-signal-queue":{"get":{"summary":"Cross-channel VNB signal queue -- read-only evidence projection","tags":["Dashboard API"],"operationId":"dashboard_api_crossChannelVnbSignalQueueStatus","parameters":[{"name":"signalId","in":"query","required":false,"schema":{"type":"string"}},{"name":"channel","in":"query","required":false,"schema":{"type":"string"}},{"name":"sourceSystem","in":"query","required":false,"schema":{"type":"string"}},{"name":"sourceRef","in":"query","required":false,"schema":{"type":"string"}},{"name":"affectedProcess","in":"query","required":false,"schema":{"type":"string"}},{"name":"riskType","in":"query","required":false,"schema":{"type":"string"}},{"name":"ownerRole","in":"query","required":false,"schema":{"type":"string"}},{"name":"dueAt","in":"query","required":false,"schema":{"type":"string"}},{"name":"evidenceStatus","in":"query","required":false,"schema":{"type":"string"}},{"name":"nextDatapoint","in":"query","required":false,"schema":{"type":"string"}},{"in":"query","name":"receivedAt","schema":{"type":"string"}},{"in":"query","name":"processType","schema":{"type":"string"}},{"in":"query","name":"riskSeverity","schema":{"type":"string"}},{"in":"query","name":"ownerPersonaId","schema":{"type":"string"}},{"in":"query","name":"evidenceRefs","schema":{"type":"string"}},{"in":"query","name":"dedupeKey","schema":{"type":"string"}},{"in":"query","name":"status","schema":{"type":"string"}},{"in":"query","name":"signals","schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only cross-channel VNB signal queue evidence","content":{"application/json":{"schema":{"type":"object","properties":{"capabilityKey":{"type":"string"},"queueStatus":{"type":"string"},"signalCount":{"type":"number"},"normalizedSignals":{"type":"array"},"byProcess":{"type":"object"},"byRiskType":{"type":"object"},"missingEvidence":{"type":"array"},"positiveFollowUps":{"type":"array"},"sourceActions":{"type":"object"},"dossierEvidence":{"type":"object"},"safety":{"type":"string"},"timestamp":{"type":"string","format":"date-time"}}}}}}},"description":"Normalizes caller-supplied signal references and summaries into a dossier-safe VNB queue evidence view. The endpoint is read-only and never ingests mail/chat/portal content, stores raw private content, persists a queue, creates HITL/inbox/notification/VDMI items, or dispatches operational actions."}},"/api/dashboard-api/cross-domain-special-topics-queue":{"get":{"summary":"Cross-domain special topics queue -- read-only management projection","tags":["Dashboard API"],"operationId":"dashboard_api_crossDomainSpecialTopicsQueueStatus","parameters":[{"name":"caseId","in":"query","required":false,"schema":{"type":"string"}},{"name":"topic","in":"query","required":false,"schema":{"type":"string"}},{"name":"topics","in":"query","required":false,"schema":{"type":"string"}},{"name":"domainLane","in":"query","required":false,"schema":{"type":"string"}},{"name":"ownerRole","in":"query","required":false,"schema":{"type":"string"}},{"name":"dueAt","in":"query","required":false,"schema":{"type":"string"}},{"name":"regulatoryReference","in":"query","required":false,"schema":{"type":"string"}},{"name":"dataGap","in":"query","required":false,"schema":{"type":"string"}},{"name":"assetRevenueImpact","in":"query","required":false,"schema":{"type":"string"}},{"name":"escalationThreshold","in":"query","required":false,"schema":{"type":"string"}},{"name":"nextGovernanceGate","in":"query","required":false,"schema":{"type":"string"}},{"name":"decisionStatus","in":"query","required":false,"schema":{"type":"string"}},{"name":"evidenceRefs","in":"query","required":false,"schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only cross-domain special topics queue"}},"description":"Normalizes supplied Anschluss-, Flexibilitaets-, Energy-Sharing-, Mess-/Steuerdaten-, Kapazitaets-, Asset- and revenue-impact topics into a dossier-safe management queue. The endpoint is read-only and never creates tasks, workflows, tickets, e-mails, connector calls, bookings, executions, billing/settlement/tariff/device-control effects, or Personal-Agent shortcuts."}},"/api/dashboard-api/asset-valuation-transformation-gate":{"get":{"summary":"Asset valuation transformation gate -- read-only evidence projection","tags":["Dashboard API"],"operationId":"dashboard_api_assetValuationTransformationGateStatus","parameters":[{"name":"assetId","in":"query","required":false,"schema":{"type":"string"}},{"name":"assetGroupId","in":"query","required":false,"schema":{"type":"string"}},{"name":"assetType","in":"query","required":false,"schema":{"type":"string"}},{"name":"gridOperatorId","in":"query","required":false,"schema":{"type":"string"}},{"name":"bookValueStatus","in":"query","required":false,"schema":{"type":"string"}},{"name":"assetConditionStatus","in":"query","required":false,"schema":{"type":"string"}},{"name":"transformationOption","in":"query","required":false,"schema":{"type":"string"}},{"name":"contractRisk","in":"query","required":false,"schema":{"type":"string"}},{"name":"regulatoryUncertainty","in":"query","required":false,"schema":{"type":"string"}},{"name":"dataQualityStatus","in":"query","required":false,"schema":{"type":"string"}},{"name":"decisionOwner","in":"query","required":false,"schema":{"type":"string"}},{"name":"nextDecision","in":"query","required":false,"schema":{"type":"string"}},{"in":"query","name":"gateId","schema":{"type":"string"}},{"in":"query","name":"bookValueSource","schema":{"type":"string"}},{"in":"query","name":"assetConditionSource","schema":{"type":"string"}},{"in":"query","name":"transformationOptionBasis","schema":{"type":"string"}},{"in":"query","name":"contractRiskBasis","schema":{"type":"string"}},{"in":"query","name":"regulatoryUncertaintyBasis","schema":{"type":"string"}},{"in":"query","name":"sourceDatapoints","schema":{"type":"string"}},{"in":"query","name":"sourceRefs","schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only asset valuation transformation gate evidence","content":{"application/json":{"schema":{"type":"object","properties":{"capabilityKey":{"type":"string"},"decisionReadiness":{"type":"string"},"assetScope":{"type":"object"},"bookValueStatus":{"type":"object"},"assetConditionStatus":{"type":"object"},"transformationOption":{"type":"object"},"contractRisk":{"type":"object"},"regulatoryUncertainty":{"type":"object"},"dataQualityStatus":{"type":"object"},"missingEvidence":{"type":"array"},"positiveFollowUps":{"type":"array"},"sourceActions":{"type":"object"},"dossierEvidence":{"type":"object"},"safety":{"type":"string"},"timestamp":{"type":"string","format":"date-time"}}}}}}},"description":"Returns a deterministic dossier-safe management gate view over book value, asset condition, transformation option, contract/regulatory risk and data quality. The endpoint is read-only and never mutates asset records, creates valuation/accounting records, approves investments, creates HITL items, or executes decommissioning/repurposing."}},"/api/dashboard-api/gas-capacity-booking-review-gate":{"get":{"summary":"Gas capacity booking review gate -- read-only evidence projection","tags":["Dashboard API"],"operationId":"dashboard_api_gasCapacityBookingReviewGateStatus","parameters":[{"name":"reviewId","in":"query","required":false,"schema":{"type":"string"}},{"name":"bookingYear","in":"query","required":false,"schema":{"type":"string"}},{"name":"networkArea","in":"query","required":false,"schema":{"type":"string"}},{"name":"capacityAssumption","in":"query","required":false,"schema":{"type":"string"}},{"name":"coldYearEvidence","in":"query","required":false,"schema":{"type":"string"}},{"name":"rlmReboundEvidence","in":"query","required":false,"schema":{"type":"string"}},{"name":"congestionHistoryEvidence","in":"query","required":false,"schema":{"type":"string"}},{"name":"vdmiOwner","in":"query","required":false,"schema":{"type":"string"}},{"name":"decisionFrameRef","in":"query","required":false,"schema":{"type":"string"}},{"name":"commercialSignoff","in":"query","required":false,"schema":{"type":"string"}},{"in":"query","name":"capacityAssumptionSource","schema":{"type":"string"}},{"in":"query","name":"riskScenarios","schema":{"type":"string"}},{"in":"query","name":"sourceRefs","schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only gas capacity booking review gate evidence","content":{"application/json":{"schema":{"type":"object","properties":{"capabilityKey":{"type":"string"},"status":{"type":"string"},"readinessScore":{"type":"number"},"reviewScope":{"type":"object"},"capacityAssumptionSummary":{"type":"object"},"scenarioEvidenceStatus":{"type":"object"},"vdmiReview":{"type":"object"},"commercialSignoff":{"type":"object"},"riskScenarios":{"type":"array"},"missingEvidence":{"type":"array"},"positiveFollowUps":{"type":"array"},"sourceActions":{"type":"object"},"dossierEvidence":{"type":"object"},"safety":{"type":"string"},"timestamp":{"type":"string","format":"date-time"}}}}}}},"description":"Returns a deterministic dossier-safe review gate over gas capacity assumptions, cold-year/RLM/congestion evidence, VDMI ownership and commercial sign-off. The endpoint is read-only and never submits bookings, mutates VDMI/HITL workflows, dispatches notifications, creates booking persistence, or calls external systems."}},"/api/dashboard-api/gas-network-decision-chain":{"get":{"summary":"Gas network decision chain -- read-only evidence projection","tags":["Dashboard API"],"operationId":"dashboard_api_gasNetworkDecisionChainStatus","parameters":[{"name":"chainId","in":"query","required":false,"schema":{"type":"string"}},{"name":"gridOperatorId","in":"query","required":false,"schema":{"type":"string"}},{"name":"reconciliationId","in":"query","required":false,"schema":{"type":"string"}},{"name":"segmentId","in":"query","required":false,"schema":{"type":"string"}},{"name":"capacityAssumption","in":"query","required":false,"schema":{"type":"string"}},{"name":"decommissioningPath","in":"query","required":false,"schema":{"type":"string"}},{"name":"regulatoryImpactRef","in":"query","required":false,"schema":{"type":"string"}},{"name":"assetRef","in":"query","required":false,"schema":{"type":"string"}},{"name":"bookValueRef","in":"query","required":false,"schema":{"type":"string"}},{"name":"photoYear","in":"query","required":false,"schema":{"type":"string"}},{"name":"decisionDeadline","in":"query","required":false,"schema":{"type":"string"}},{"name":"owner","in":"query","required":false,"schema":{"type":"string"}},{"name":"blockedFollowUpDecision","in":"query","required":false,"schema":{"type":"string"}},{"name":"nextEvidenceStep","in":"query","required":false,"schema":{"type":"string"}},{"in":"query","name":"capacityEvidenceRef","schema":{"type":"string"}},{"in":"query","name":"decommissioningEvidenceRef","schema":{"type":"string"}},{"in":"query","name":"eogRef","schema":{"type":"string"}},{"in":"query","name":"kanuRef","schema":{"type":"string"}},{"in":"query","name":"ownerRole","schema":{"type":"string"}},{"in":"query","name":"gateStatus","schema":{"type":"string"}},{"in":"query","name":"sourceRefs","schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only gas network decision-chain evidence","content":{"application/json":{"schema":{"type":"object","properties":{"capabilityKey":{"type":"string"},"status":{"type":"string"},"readinessScore":{"type":"number"},"chainScope":{"type":"object"},"capacityAssumptionStatus":{"type":"object"},"decommissioningPathStatus":{"type":"object"},"regulatoryImpactStatus":{"type":"object"},"assetBookValueStatus":{"type":"object"},"photoYearWindow":{"type":"object"},"owner":{"type":"object"},"blockedFollowUpDecision":{"type":"string"},"nextEvidenceStep":{"type":"string"},"missingEvidence":{"type":"array"},"positiveFollowUps":{"type":"array"},"sourceActions":{"type":"object"},"dossierEvidence":{"type":"object"},"safety":{"type":"string"},"timestamp":{"type":"string","format":"date-time"}}}}}}},"description":"Returns a deterministic dossier-safe decision-chain view over gas capacity assumptions, decommissioning path, KANU/EOG references, asset/book-value references, Fotojahr window and blocked follow-up decisions. The endpoint is read-only and never executes capacity booking, stilllegung, investment approval, Asset-MDM overrides, HITL, notifications, billing, settlement, tariff, MaKo, contract, device-control or external connector actions."}},"/api/dashboard-api/water-pricing-net-investment-alignment":{"get":{"summary":"Water pricing / net-investment alignment -- read-only evidence gate","tags":["Dashboard API"],"operationId":"dashboard_api_waterPricingNetInvestmentAlignmentStatus","parameters":[{"name":"caseId","in":"query","required":false,"schema":{"type":"string"}},{"name":"projectId","in":"query","required":false,"schema":{"type":"string"}},{"name":"waterPriceReference","in":"query","required":false,"schema":{"type":"string"}},{"name":"calculationReference","in":"query","required":false,"schema":{"type":"string"}},{"name":"netInvestmentReference","in":"query","required":false,"schema":{"type":"string"}},{"name":"assetAccountingReference","in":"query","required":false,"schema":{"type":"string"}},{"name":"pachtnetzReference","in":"query","required":false,"schema":{"type":"string"}},{"name":"regulatoryImpactReference","in":"query","required":false,"schema":{"type":"string"}},{"name":"governanceOwner","in":"query","required":false,"schema":{"type":"string"}},{"name":"reviewPeriod","in":"query","required":false,"schema":{"type":"string"}},{"name":"targetCommitteeDate","in":"query","required":false,"schema":{"type":"string"}},{"name":"alignmentDecision","in":"query","required":false,"schema":{"type":"string"}},{"in":"query","name":"tenantId","schema":{"type":"string"}},{"in":"query","name":"infrastructureMeasureReference","schema":{"type":"string"}},{"in":"query","name":"leaseOrConcessionReference","schema":{"type":"string"}},{"in":"query","name":"tariffLogicReference","schema":{"type":"string"}},{"in":"query","name":"committeeOwner","schema":{"type":"string"}},{"in":"query","name":"sourceRefs","schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only water pricing / net-investment alignment evidence","content":{"application/json":{"schema":{"type":"object","properties":{"capabilityKey":{"type":"string"},"status":{"type":"string"},"readinessScore":{"type":"number"},"alignmentScope":{"type":"object"},"pricingEvidence":{"type":"object"},"investmentEvidence":{"type":"object"},"assetAccountingEvidence":{"type":"object"},"leaseConditionEvidence":{"type":"object"},"regulatoryBoundaryEvidence":{"type":"object"},"owner":{"type":"object"},"reviewWindow":{"type":"object"},"alignmentDecision":{"type":"string"},"missingEvidence":{"type":"array"},"positiveFollowUps":{"type":"array"},"sourceActions":{"type":"object"},"dossierEvidence":{"type":"object"},"safety":{"type":"string"},"timestamp":{"type":"string","format":"date-time"}}}}}}},"description":"Returns a deterministic dossier-safe alignment view over water-price assumptions, net-investment references, asset-accounting evidence, Pachtnetz/concession references, regulatory-impact evidence, owner, review period and committee decision state. The endpoint is read-only and never calculates an official water price, claims regulatory approval, mutates accounting, billing, settlement, tariff, MaKo, contract or payment data, creates HITL/notifications, or calls external connectors."}},"/api/dashboard-api/areal-network-integration-offer-gate":{"get":{"summary":"Areal network-integration offer gate -- read-only evidence gate","tags":["Dashboard API"],"operationId":"dashboard_api_arealNetworkIntegrationOfferGateStatus","parameters":[{"name":"caseId","in":"query","required":false,"schema":{"type":"string"}},{"name":"projectId","in":"query","required":false,"schema":{"type":"string"}},{"name":"siteReference","in":"query","required":false,"schema":{"type":"string"}},{"name":"areaReference","in":"query","required":false,"schema":{"type":"string"}},{"name":"requestedConnectionCapacity","in":"query","required":false,"schema":{"type":"string"}},{"name":"requestedCapacityKw","in":"query","required":false,"schema":{"type":"number"}},{"name":"gridCapacityEvidence","in":"query","required":false,"schema":{"type":"string"}},{"name":"targetGridPath","in":"query","required":false,"schema":{"type":"string"}},{"name":"investmentReference","in":"query","required":false,"schema":{"type":"string"}},{"name":"regulatoryImpactBoundary","in":"query","required":false,"schema":{"type":"string"}},{"name":"commercialOfferAssumptions","in":"query","required":false,"schema":{"type":"string"}},{"name":"owner","in":"query","required":false,"schema":{"type":"string"}},{"name":"nextDecisionDate","in":"query","required":false,"schema":{"type":"string"}},{"name":"offerDecisionStatus","in":"query","required":false,"schema":{"type":"string"}},{"in":"query","name":"tenantId","schema":{"type":"string"}},{"in":"query","name":"capacityEvidenceReference","schema":{"type":"string"}},{"in":"query","name":"zielnetzPath","schema":{"type":"string"}},{"in":"query","name":"capexReference","schema":{"type":"string"}},{"in":"query","name":"regulatoryImpactReference","schema":{"type":"string"}},{"in":"query","name":"offerAssumptionReference","schema":{"type":"string"}},{"in":"query","name":"gateOwner","schema":{"type":"string"}},{"in":"query","name":"sourceRefs","schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only Areal network-integration offer evidence","content":{"application/json":{"schema":{"type":"object","properties":{"capabilityKey":{"type":"string"},"status":{"type":"string"},"readinessScore":{"type":"number"},"decisionScope":{"type":"object"},"capacityEvidence":{"type":"object"},"targetGridEvidence":{"type":"object"},"investmentEvidence":{"type":"object"},"regulatoryBoundaryEvidence":{"type":"object"},"commercialAssumptionEvidence":{"type":"object"},"owner":{"type":"object"},"decisionWindow":{"type":"object"},"missingEvidence":{"type":"array"},"positiveFollowUps":{"type":"array"},"sourceActions":{"type":"object"},"dossierEvidence":{"type":"object"},"safety":{"type":"string"},"timestamp":{"type":"string","format":"date-time"}}}}}}},"description":"Returns a deterministic dossier-safe decision card over site/area, requested connection capacity, grid-capacity evidence, target-grid path, investment/CAPEX evidence, regulatory boundary, commercial offer assumptions, owner, decision date and offer decision state. The endpoint is read-only and never calculates a binding offer, reserves grid capacity, approves investments, creates contracts, mutates Asset-MDM, billing, settlement, tariff, MaKo or device-control systems, creates HITL/notifications, or calls external connectors."}},"/api/dashboard-api/transformation-financing-scenario-view":{"get":{"summary":"Transformation financing scenario view -- read-only evidence gate","tags":["Dashboard API"],"operationId":"dashboard_api_transformationFinancingScenarioViewStatus","parameters":[{"name":"scenarioId","in":"query","required":false,"schema":{"type":"string"}},{"name":"gridOperatorId","in":"query","required":false,"schema":{"type":"string"}},{"name":"planningHorizon","in":"query","required":false,"schema":{"type":"string"}},{"name":"scenarioType","in":"query","required":false,"schema":{"type":"string"}},{"name":"cashflowSource","in":"query","required":false,"schema":{"type":"string"}},{"name":"rollbackCostBasis","in":"query","required":false,"schema":{"type":"string"}},{"name":"municipalBurdenAssumption","in":"query","required":false,"schema":{"type":"string"}},{"name":"eogImpact","in":"query","required":false,"schema":{"type":"string"}},{"name":"liquidityImpact","in":"query","required":false,"schema":{"type":"string"}},{"name":"stressThreshold","in":"query","required":false,"schema":{"type":"string"}},{"name":"committeeDecisionGate","in":"query","required":false,"schema":{"type":"string"}},{"name":"sourceDatapoints","in":"query","required":false,"schema":{"type":"string"}},{"in":"query","name":"cashflowSourceRef","schema":{"type":"string"}},{"in":"query","name":"marginCompensationAssumption","schema":{"type":"string"}},{"in":"query","name":"capitalReallocationOption","schema":{"type":"string"}},{"in":"query","name":"gasDecommissioningPath","schema":{"type":"string"}},{"in":"query","name":"heatInvestmentMeasure","schema":{"type":"string"}},{"in":"query","name":"h2OptionMeasure","schema":{"type":"string"}},{"in":"query","name":"publicTransportShareholderBurden","schema":{"type":"string"}},{"in":"query","name":"operationalInvestmentNeed","schema":{"type":"string"}},{"in":"query","name":"regulatoryImpactAssumption","schema":{"type":"string"}},{"in":"query","name":"vdmiProcessId","schema":{"type":"string"}},{"in":"query","name":"owner","schema":{"type":"string"}},{"in":"query","name":"sourceActions","schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only transformation financing scenario evidence view","content":{"application/json":{"schema":{"type":"object","properties":{"capabilityKey":{"type":"string"},"status":{"type":"string"},"readinessScore":{"type":"number"},"scenarioSummary":{"type":"object"},"evidenceGroups":{"type":"object"},"missingEvidence":{"type":"array"},"positiveFollowUps":{"type":"array"},"nextActions":{"type":"array"},"sourceDatapoints":{"type":"array"},"sourceActions":{"type":"object"},"dossierEvidence":{"type":"object"},"safety":{"type":"string"},"timestamp":{"type":"string","format":"date-time"}}}}}}},"description":"Returns a deterministic dossier-safe view over transformation financing scenario identity, cashflow, margin, capital reallocation, gas decommissioning, rollback/removal cost, heat/H2 investment, municipal burden, operational investment, EOG/regulatory, liquidity/stress and committee-gate evidence. The endpoint is read-only and never creates finance/accounting records, executes treasury transfers, mutates gas assets, prepares billing/settlement/tariff/MaKo output, creates HITL/VDMI tasks, or calls external connectors."}},"/api/dashboard-api/investment-budget-cap-exception-governance":{"get":{"summary":"Investment budget cap exception governance -- read-only evidence queue","tags":["Dashboard API"],"operationId":"dashboard_api_investmentBudgetCapExceptionGovernanceStatus","parameters":[{"in":"query","name":"measureId","schema":{"type":"string"}},{"in":"query","name":"measureName","schema":{"type":"string"}},{"in":"query","name":"scope","schema":{"type":"string"}},{"in":"query","name":"budgetCapEur","schema":{"type":"string"}},{"in":"query","name":"requiredBudgetEur","schema":{"type":"string"}},{"in":"query","name":"noRegretCriterion","schema":{"type":"string"}},{"in":"query","name":"technicalJustification","schema":{"type":"string"}},{"in":"query","name":"regulatoryContext","schema":{"type":"string"}},{"in":"query","name":"kpiReference","schema":{"type":"string"}},{"in":"query","name":"division","schema":{"type":"string"}},{"in":"query","name":"assetRef","schema":{"type":"string"}},{"in":"query","name":"dataQuality","schema":{"type":"string"}},{"in":"query","name":"evidenceRefs","schema":{"type":"string"}},{"in":"query","name":"riskIfDeferred","schema":{"type":"string"}},{"in":"query","name":"owner","schema":{"type":"string"}},{"in":"query","name":"deadline","schema":{"type":"string"}},{"in":"query","name":"nextDecisionGate","schema":{"type":"string"}},{"in":"query","name":"exceptionJustification","schema":{"type":"string"}},{"in":"query","name":"sourceDatapoints","schema":{"type":"string"}},{"in":"query","name":"sourceActions","schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only budget-cap exception governance evidence"}},"description":"Builds deterministic dossier-safe evidence for investment measures above a budget cap or missing an exception justification. The endpoint is read-only and never approves budgets, creates committee decisions, writes SAP/ERP/PSP records, creates HITL/workflow tasks, sends communications, calls external connectors, or mutates billing/settlement/MaKo/tariff/device-control data."}},"/api/dashboard-api/investment-owner-deadline-budget-gate":{"get":{"summary":"Investment Owner-Frist-Budget Gate -- read-only evidence gate","tags":["Dashboard API"],"operationId":"dashboard_api_investmentOwnerDeadlineBudgetGateStatus","parameters":[{"in":"query","name":"measureId","schema":{"type":"string"}},{"in":"query","name":"measureTitle","schema":{"type":"string"}},{"in":"query","name":"owner","schema":{"type":"string"}},{"in":"query","name":"deadline","schema":{"type":"string"}},{"in":"query","name":"budgetEffect","schema":{"type":"string"}},{"in":"query","name":"requiredEvidence","schema":{"type":"string"}},{"in":"query","name":"approvalStatus","schema":{"type":"string"}},{"in":"query","name":"blockedFollowUpDecision","schema":{"type":"string"}},{"in":"query","name":"nextEscalationStep","schema":{"type":"string"}},{"in":"query","name":"sourceDatapoints","schema":{"type":"string"}},{"in":"query","name":"sourceActions","schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only investment owner/deadline/budget gate evidence"}},"description":"Returns a deterministic dossier-safe view over investment measure owner, deadline, budget effect, required evidence, approval status, blocked follow-up decision and next escalation step. The endpoint is read-only and never approves budgets, creates finance/accounting records, mutates investment workflows, prepares billing/settlement/tariff/MaKo output, creates HITL tasks, or calls external connectors."}},"/api/dashboard-api/direct-marketer-risk-gate":{"get":{"summary":"Direktvermarkter Risk Gate -- read-only dossier-safe status","tags":["Dashboard API"],"operationId":"dashboard_api_directMarketerRiskGateStatus","parameters":[{"in":"query","name":"caseId","schema":{"type":"string"}},{"in":"query","name":"projectId","schema":{"type":"string"}},{"in":"query","name":"communityModel","schema":{"type":"string"}},{"in":"query","name":"directMarketer","schema":{"type":"string"}},{"in":"query","name":"forecastQuality","schema":{"type":"string"}},{"in":"query","name":"forecastDeviationPct","schema":{"type":"string"}},{"in":"query","name":"allocationRules","schema":{"type":"string"}},{"in":"query","name":"balancingGroupImpact","schema":{"type":"string"}},{"in":"query","name":"scheduleImpact","schema":{"type":"string"}},{"in":"query","name":"billingStatus","schema":{"type":"string"}},{"in":"query","name":"settlementStatus","schema":{"type":"string"}},{"in":"query","name":"roleOwner","schema":{"type":"string"}},{"in":"query","name":"deadline","schema":{"type":"string"}},{"in":"query","name":"evidenceStatus","schema":{"type":"string"}},{"in":"query","name":"sourceEvidence","schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only Direktvermarkter risk-gate evidence"}},"description":"Returns deterministic dossier-safe risk/readiness evidence for a Direktvermarkter handover package across forecast quality, allocation rules, balancing-group/schedule impact, billing/settlement status, roles, deadlines and open evidence. The endpoint is read-only and never submits schedules, approves offers/contracts, transfers balancing groups, mutates billing/settlement/tariff/customer data, creates HITL/workflow tasks, sends customer communication, calls webhooks, or contacts external Direktvermarkter systems."}},"/api/dashboard-api/no-regret-measure-definition-gate":{"get":{"summary":"No-Regret measure definition gate -- read-only evidence gate","tags":["Dashboard API"],"operationId":"dashboard_api_noRegretMeasureDefinitionGateStatus","parameters":[{"in":"query","name":"measureId","schema":{"type":"string"}},{"in":"query","name":"programmeId","schema":{"type":"string"}},{"in":"query","name":"measureName","schema":{"type":"string"}},{"in":"query","name":"scenarioAssumption","schema":{"type":"string"}},{"in":"query","name":"transformationEffect","schema":{"type":"string"}},{"in":"query","name":"budgetEffect","schema":{"type":"string"}},{"in":"query","name":"fundingOwner","schema":{"type":"string"}},{"in":"query","name":"regulatoryFit","schema":{"type":"string"}},{"in":"query","name":"constraintHint","schema":{"type":"string"}},{"in":"query","name":"prioritisationRule","schema":{"type":"string"}},{"in":"query","name":"nominationRight","schema":{"type":"string"}},{"in":"query","name":"dataQualityStatus","schema":{"type":"string"}},{"in":"query","name":"sourceSnapshot","schema":{"type":"string"}},{"in":"query","name":"communicationRule","schema":{"type":"string"}},{"in":"query","name":"stakeholderGroup","schema":{"type":"string"}},{"in":"query","name":"nextReviewGate","schema":{"type":"string"}},{"in":"query","name":"dueDate","schema":{"type":"string"}},{"in":"query","name":"owner","schema":{"type":"string"}},{"in":"query","name":"sourceDatapoints","schema":{"type":"string"}},{"in":"query","name":"sourceActions","schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only No-Regret measure definition evidence"}},"description":"Returns a deterministic dossier-safe view over No-Regret measure definition evidence: scenario/effect, budget/funding owner, regulatory fit, prioritisation/nomination rule, data quality, communication rule, and next review gate. The endpoint is read-only and never approves measures or budgets, mutates programmes, creates HITL tasks, runs MaKo/A96/billing/settlement/tariff/device-control effects, or calls external connectors."}},"/api/dashboard-api/gas-grid-transformation-asset-cockpit":{"get":{"summary":"Gas grid transformation asset cockpit -- read-only evidence gate","tags":["Dashboard API"],"operationId":"dashboard_api_gasGridTransformationAssetCockpitStatus","parameters":[{"name":"gridOperatorId","in":"query","required":false,"schema":{"type":"string"}},{"name":"transformationProgramId","in":"query","required":false,"schema":{"type":"string"}},{"name":"workPackageId","in":"query","required":false,"schema":{"type":"string"}},{"name":"assetSegmentRef","in":"query","required":false,"schema":{"type":"string"}},{"name":"targetOption","in":"query","required":false,"schema":{"type":"string"}},{"name":"technicalReuseStatus","in":"query","required":false,"schema":{"type":"string"}},{"name":"decommissioningCostEur","in":"query","required":false,"schema":{"type":"string"}},{"name":"rollbackOrRemovalRisk","in":"query","required":false,"schema":{"type":"string"}},{"name":"cashflowImpact","in":"query","required":false,"schema":{"type":"string"}},{"name":"totexImpact","in":"query","required":false,"schema":{"type":"string"}},{"name":"regulatoryRecognitionStatus","in":"query","required":false,"schema":{"type":"string"}},{"name":"heatNetworkDependency","in":"query","required":false,"schema":{"type":"string"}},{"name":"powerGridDependency","in":"query","required":false,"schema":{"type":"string"}},{"name":"customerTransitionDependency","in":"query","required":false,"schema":{"type":"string"}},{"name":"decisionGate","in":"query","required":false,"schema":{"type":"string"}},{"name":"ownerRole","in":"query","required":false,"schema":{"type":"string"}},{"name":"sourceDatapoints","in":"query","required":false,"schema":{"type":"string"}},{"in":"query","name":"vdmiProcessId","schema":{"type":"string"}},{"in":"query","name":"investmentPlanId","schema":{"type":"string"}},{"in":"query","name":"financeAnalysisId","schema":{"type":"string"}},{"in":"query","name":"sourceActions","schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only gas grid transformation asset evidence view","content":{"application/json":{"schema":{"type":"object","properties":{"capabilityKey":{"type":"string"},"status":{"type":"string"},"readinessScore":{"type":"number"},"programSummary":{"type":"object"},"evidenceGroups":{"type":"object"},"missingEvidence":{"type":"array"},"positiveFollowUps":{"type":"array"},"nextActions":{"type":"array"},"sourceDatapoints":{"type":"array"},"sourceActions":{"type":"object"},"dossierEvidence":{"type":"object"},"safety":{"type":"string"},"timestamp":{"type":"string","format":"date-time"}}}}}}},"description":"Returns a deterministic dossier-safe view over gas transformation program/work-package identity, asset segment, H2/decommissioning/repurpose option, technical reuse, rollback/removal cost, financial and dependency evidence, decision gate, owner role, missing evidence and explicit non-actions. The endpoint is read-only and never mutates gas assets, approves finance/investment decisions, creates HITL/VDMI tasks, runs MaKo/billing/settlement/tariff flows, or calls external connectors."}},"/api/dashboard-api/live-update-stream-contract":{"get":{"summary":"Live update stream contract -- read-only readiness evidence","tags":["Dashboard API"],"operationId":"dashboard_api_liveUpdateStreamContractStatus","parameters":[{"name":"domains","in":"query","required":false,"schema":{"type":"string"}},{"name":"channels","in":"query","required":false,"schema":{"type":"string"}},{"name":"sourceService","in":"query","required":false,"schema":{"type":"string"}},{"name":"sourceAction","in":"query","required":false,"schema":{"type":"string"}},{"name":"uiSurface","in":"query","required":false,"schema":{"type":"string"}},{"name":"authBoundary","in":"query","required":false,"schema":{"type":"string"}},{"name":"requiresResume","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"fallbackPollingPath","in":"query","required":false,"schema":{"type":"string"}},{"name":"heartbeatSeconds","in":"query","required":false,"schema":{"type":"number"}},{"name":"ownerRole","in":"query","required":false,"schema":{"type":"string"}},{"in":"query","name":"availability","schema":{"type":"string"}},{"in":"query","name":"includeUnsupportedSample","schema":{"type":"boolean"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only live-update contract readiness view","content":{"application/json":{"schema":{"type":"object","properties":{"capabilityKey":{"type":"string"},"safety":{"type":"string"},"status":{"type":"string"},"channelCount":{"type":"number"},"channels":{"type":"array"},"missingEvidence":{"type":"array"},"positiveFollowUps":{"type":"array"},"sourceActions":{"type":"object"},"dossierEvidence":{"type":"object"},"_errors":{"type":"array"},"timestamp":{"type":"string","format":"date-time"}}}}}}},"description":"Returns a deterministic read-only contract/readiness view for proposed UI live-update channels. The endpoint describes stream kind, tenant/auth boundary, source service/action, current availability, fallback polling path, heartbeat/resume expectation, owner, blockers, gaps and side-effect guards. It does not open SSE/WebSocket connections, subscribe to channels, emit events, create auth modes, call external connectors, mutate domain state or add Personal-Agent shortcuts."}},"/api/dashboard-api/smgw-connector-readiness":{"get":{"summary":"SMGW connector readiness -- read-only evidence/status gate","tags":["Dashboard API"],"operationId":"dashboard_api_smgwConnectorReadinessStatus","parameters":[{"name":"integrationScope","in":"query","required":false,"schema":{"type":"string"}},{"name":"gatewayClass","in":"query","required":false,"schema":{"type":"string"}},{"name":"adapterClass","in":"query","required":false,"schema":{"type":"string"}},{"name":"controlDomainIntent","in":"query","required":false,"schema":{"type":"string"}},{"name":"nes2ModuleEvidence","in":"query","required":false,"schema":{"type":"string"}},{"name":"eebusEvidence","in":"query","required":false,"schema":{"type":"string"}},{"name":"tafEvidence","in":"query","required":false,"schema":{"type":"string"}},{"name":"auditPrerequisites","in":"query","required":false,"schema":{"type":"string"}},{"name":"authBoundary","in":"query","required":false,"schema":{"type":"string"}},{"name":"tenantBoundary","in":"query","required":false,"schema":{"type":"string"}},{"name":"ownerRole","in":"query","required":false,"schema":{"type":"string"}},{"name":"fallbackReason","in":"query","required":false,"schema":{"type":"string"}},{"in":"query","name":"blocker","schema":{"type":"string"}},{"in":"query","name":"evidenceHints","schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only SMGW connector readiness evidence view","content":{"application/json":{"schema":{"type":"object","properties":{"capabilityKey":{"type":"string"},"safety":{"type":"string"},"status":{"type":"string"},"readinessScore":{"type":"number"},"connectorReadiness":{"type":"object"},"missingEvidence":{"type":"array"},"blockers":{"type":"array"},"positiveFollowUps":{"type":"array"},"sourceActions":{"type":"object"},"dossierEvidence":{"type":"object"},"_errors":{"type":"array"},"timestamp":{"type":"string","format":"date-time"}}}}}}},"description":"Returns a deterministic read-only readiness/evidence view for a planned §14a SMGW / NES2 / EEBUS connector path. The endpoint reports integration scope, tenant/auth boundary, adapter class, control-domain intent, NES2 and EEBUS/TAF evidence, compliance/audit prerequisites, blockers, missing evidence, positive follow-ups and explicit side-effect guards. It does not pair gateways, register devices, dispatch TAF-7, publish MQTT, bridge EEBUS, create HITL work, call external adapters, manage secrets, mutate tariffs/billing, or add Personal-Agent shortcuts."}},"/api/dashboard-api/vnb-special-topic-workstate":{"get":{"summary":"VNB special-topic leading work state -- read-only evidence card","tags":["Dashboard API"],"operationId":"dashboard_api_vnbSpecialTopicWorkstateStatus","parameters":[{"name":"topicId","in":"query","required":false,"schema":{"type":"string"}},{"name":"topicName","in":"query","required":false,"schema":{"type":"string"}},{"name":"domain","in":"query","required":false,"schema":{"type":"string"}},{"name":"leadingSource","in":"query","required":false,"schema":{"type":"string"}},{"name":"leadingSourceTimestamp","in":"query","required":false,"schema":{"type":"string"}},{"name":"leadingSourceVersion","in":"query","required":false,"schema":{"type":"string"}},{"name":"owner","in":"query","required":false,"schema":{"type":"string"}},{"name":"accountableRole","in":"query","required":false,"schema":{"type":"string"}},{"name":"allowedSideSources","in":"query","required":false,"schema":{"type":"string"}},{"name":"sideSourceFreshness","in":"query","required":false,"schema":{"type":"string"}},{"name":"allowSideSourceOverride","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"freshnessThresholdDays","in":"query","required":false,"schema":{"type":"number"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only VNB special-topic work-state evidence card","content":{"application/json":{"schema":{"type":"object","properties":{"capabilityKey":{"type":"string"},"safety":{"type":"string"},"status":{"type":"string"},"topic":{"type":"object"},"sourceFreshness":{"type":"object"},"allowedSideSources":{"type":"array"},"staleMarkers":{"type":"array"},"missingEvidence":{"type":"array"},"positiveFollowUps":{"type":"array"},"sourceActions":{"type":"object"},"dossierEvidence":{"type":"object"},"timestamp":{"type":"string","format":"date-time"},"_errors":{"type":"array"}}}}}}},"description":"Returns a deterministic dossier-safe evidence card for the leading work state of VNB special topics. It surfaces leading source, source timestamp/version, owner/accountable role, allowed side sources, stale markers, missing evidence, readiness status and positive follow-ups. The endpoint is read-only and does not call SharePoint/Teams/Outlook, create tasks, send mail, execute workflows, mutate Cernion data, run HITL, edit Budibase or use Personal-Agent shortcuts."}},"/api/dashboard-api/monitoring-non-escalation":{"get":{"summary":"Monitoring non-escalation evidence -- read-only status card","tags":["Dashboard API"],"operationId":"dashboard_api_monitoringNonEscalationStatus","parameters":[{"name":"signalId","in":"query","required":false,"schema":{"type":"string"}},{"name":"domain","in":"query","required":false,"schema":{"type":"string"}},{"name":"assetContext","in":"query","required":false,"schema":{"type":"string"}},{"name":"sourceName","in":"query","required":false,"schema":{"type":"string"}},{"name":"sourceCheckedAt","in":"query","required":false,"schema":{"type":"string"}},{"name":"novelty","in":"query","required":false,"schema":{"type":"string"}},{"name":"blockingFinding","in":"query","required":false,"schema":{"type":"string"}},{"name":"nextCheckAt","in":"query","required":false,"schema":{"type":"string"}},{"name":"owner","in":"query","required":false,"schema":{"type":"string"}},{"name":"rationale","in":"query","required":false,"schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only monitoring non-escalation evidence card","content":{"application/json":{"schema":{"type":"object","properties":{"capabilityKey":{"type":"string"},"safety":{"type":"string"},"status":{"type":"string"},"signal":{"type":"object"},"checkedSource":{"type":"object"},"absentBlocker":{"type":"object"},"missingEvidence":{"type":"array"},"positiveFollowUps":{"type":"array"},"sourceActions":{"type":"object"},"dossierEvidence":{"type":"object"},"timestamp":{"type":"string","format":"date-time"},"_errors":{"type":"array"}}}}}}},"description":"Returns deterministic dossier-safe evidence for a justified non-escalation in recurring VNB monitoring. The endpoint surfaces checked source, novelty, absent blocker, next check, owner, rationale, missing evidence and positive follow-ups. It is read-only and does not schedule monitoring, escalate, create HITL tickets, send mail/webhooks, call external connectors, mutate Cernion data, edit Budibase or use Personal-Agent shortcuts."}},"/api/dashboard-api/leadership-delta-cockpit":{"get":{"summary":"Leadership delta cockpit -- read-only management evidence aggregation","tags":["Dashboard API"],"operationId":"dashboard_api_leadershipDeltaCockpitStatus","parameters":[{"name":"gridOperatorId","in":"query","required":false,"schema":{"type":"string"}},{"name":"bdewCode","in":"query","required":false,"schema":{"type":"string"}},{"name":"topic","in":"query","required":false,"schema":{"type":"string"}},{"name":"domain","in":"query","required":false,"schema":{"type":"string"}},{"name":"ownerRole","in":"query","required":false,"schema":{"type":"string"}},{"name":"dueAt","in":"query","required":false,"schema":{"type":"string"}},{"name":"evidenceStatus","in":"query","required":false,"schema":{"type":"string"}},{"name":"blockedDecision","in":"query","required":false,"schema":{"type":"string"}},{"name":"escalationState","in":"query","required":false,"schema":{"type":"string"}},{"name":"nextLever","in":"query","required":false,"schema":{"type":"string"}},{"name":"newSignals","in":"query","required":false,"schema":{"type":"string"}},{"in":"query","name":"topicId","schema":{"type":"string"}},{"in":"query","name":"role","schema":{"type":"string"}},{"in":"query","name":"status","schema":{"type":"string"}},{"in":"query","name":"dueBefore","schema":{"type":"string"}},{"in":"query","name":"knownBaseline","schema":{"type":"string"}},{"in":"query","name":"linkedEntities","schema":{"type":"string"}},{"in":"query","name":"sourceSignals","schema":{"type":"string"}},{"in":"query","name":"includeDegradedSample","schema":{"type":"boolean"}},{"in":"query","name":"limit","schema":{"type":"number"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only leadership delta cockpit evidence view","content":{"application/json":{"schema":{"type":"object","properties":{"capabilityKey":{"type":"string"},"safety":{"type":"string"},"status":{"type":"string"},"topicCount":{"type":"number"},"statusDistribution":{"type":"object"},"topics":{"type":"array"},"missingEvidence":{"type":"array"},"positiveFollowUps":{"type":"array"},"sourceActions":{"type":"object"},"dossierEvidence":{"type":"object"},"_errors":{"type":"array"},"timestamp":{"type":"string","format":"date-time"}}}}}}},"description":"Returns a deterministic read-only status/evidence view for recurring leadership topics. The endpoint surfaces delta summary, owner/deadline, evidence status, blocked decisions, escalation state, next lever, linked entities, source signals, positive follow-ups and degraded-source errors. It does not create HITL/NOVA/VDMI tasks, approvals, escalations, MS365 syncs, external calls, billing/settlement/tariff/MaKo actions, or Personal-Agent shortcuts."}},"/api/dashboard-api/netzsignal-delta-gating":{"get":{"summary":"Netzsignal Delta-Gating — read-only evidence classification","tags":["Dashboard API"],"operationId":"dashboard_api_netzsignalDeltaGatingStatus","parameters":[{"name":"signalId","in":"query","required":false,"schema":{"type":"string"}},{"name":"caseId","in":"query","required":false,"schema":{"type":"string"}},{"name":"domain","in":"query","required":false,"schema":{"type":"string"}},{"name":"signalType","in":"query","required":false,"schema":{"type":"string"}},{"name":"knownContextRef","in":"query","required":false,"schema":{"type":"string"}},{"name":"freshnessProof","in":"query","required":false,"schema":{"type":"string"}},{"name":"decisionTopic","in":"query","required":false,"schema":{"type":"string"}},{"name":"owner","in":"query","required":false,"schema":{"type":"string"}},{"name":"dueDate","in":"query","required":false,"schema":{"type":"string"}},{"name":"materiality","in":"query","required":false,"schema":{"type":"string"}},{"name":"newFact","in":"query","required":false,"schema":{"type":"string"}},{"name":"blockedDecision","in":"query","required":false,"schema":{"type":"string"}},{"name":"nextEvidencePoint","in":"query","required":false,"schema":{"type":"string"}},{"name":"regulatoryReference","in":"query","required":false,"schema":{"type":"string"}},{"name":"assetReference","in":"query","required":false,"schema":{"type":"string"}},{"name":"revenueImpactHint","in":"query","required":false,"schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only Netzsignal delta-gating status","content":{"application/json":{"schema":{"type":"object","properties":{"capabilityKey":{"type":"string"},"classification":{"type":"string"},"escalationRecommendation":{"type":"string"},"missingEvidence":{"type":"array"},"positiveFollowUps":{"type":"array"},"sourceActions":{"type":"object"},"dossierEvidence":{"type":"object"},"timestamp":{"type":"string","format":"date-time"}}}}}}},"description":"Classifies caller-supplied operational signal metadata into known context, freshness-only, decision-delta, new-blocker or insufficient-evidence states. The endpoint is read-only and does not ingest Outlook, Teams, monitoring, ticket, HITL, MaKo, billing, settlement, tariff, device-control, Budibase or external connector data."}},"/api/dashboard-api/vnb-delta-signal-classifier/classify":{"post":{"summary":"VNB delta signal classifier -- read-only advisory evidence","tags":["Dashboard API"],"operationId":"dashboard_api_vnbDeltaSignalClassifierStatus","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only VNB delta signal classification","content":{"application/json":{"schema":{"type":"object","properties":{"capabilityKey":{"type":"string"},"safety":{"type":"string"},"status":{"type":"string"},"classifications":{"type":"array"},"missingEvidence":{"type":"array"},"positiveFollowUps":{"type":"array"},"sourceActions":{"type":"object"},"dossierEvidence":{"type":"object"},"timestamp":{"type":"string","format":"date-time"}}}}}}},"description":"Classifies caller-supplied synthetic or sanitized VNB/EVU leadership signals into deterministic dossier-safe rows for novelty, decision relevance, process, owner, deadline, blocked decision, next evidence point, confidence and missing evidence. It does not read mail, Teams, calendars, task systems or private inboxes; does not persist message bodies; and does not create tickets, notifications, HITL tasks, billing, settlement, MaKo, tariff or device-control side effects.","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}}}}}}},"/api/dashboard-api/evidence-freshness-guard":{"get":{"summary":"Evidence freshness guard -- read-only VNB signal metadata classification","tags":["Dashboard API"],"operationId":"dashboard_api_evidenceFreshnessGuardStatus","parameters":[{"name":"signalId","in":"query","required":false,"schema":{"type":"string"}},{"name":"sourceKind","in":"query","required":false,"schema":{"type":"string"}},{"name":"sourceTimestamp","in":"query","required":false,"schema":{"type":"string"}},{"name":"receivedTimestamp","in":"query","required":false,"schema":{"type":"string"}},{"name":"lastSeenTimestamp","in":"query","required":false,"schema":{"type":"string"}},{"name":"processArea","in":"query","required":false,"schema":{"type":"string"}},{"name":"owner","in":"query","required":false,"schema":{"type":"string"}},{"name":"dueDate","in":"query","required":false,"schema":{"type":"string"}},{"name":"knownSnapshotId","in":"query","required":false,"schema":{"type":"string"}},{"name":"knownSnapshotHash","in":"query","required":false,"schema":{"type":"string"}},{"name":"currentSnapshotId","in":"query","required":false,"schema":{"type":"string"}},{"name":"currentSnapshotHash","in":"query","required":false,"schema":{"type":"string"}},{"name":"severityHint","in":"query","required":false,"schema":{"type":"string"}},{"name":"blockedDecision","in":"query","required":false,"schema":{"type":"string"}},{"name":"escalationThresholdDays","in":"query","required":false,"schema":{"type":"number"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only evidence freshness classification","content":{"application/json":{"schema":{"type":"object","properties":{"capabilityKey":{"type":"string"},"safety":{"type":"string"},"freshnessState":{"type":"string"},"deltaState":{"type":"string"},"escalationRecommended":{"type":"boolean"},"evidenceGaps":{"type":"array"},"positiveFollowUps":{"type":"array"},"sourceActions":{"type":"object"},"dossierEvidence":{"type":"object"},"timestamp":{"type":"string","format":"date-time"}}}}}}},"description":"Classifies caller-supplied operational signal metadata into dossier-safe freshness and delta states. The endpoint returns staleness, known-anchor, new-delta, escalation recommendation, non-escalation reason, evidence gaps and positive follow-ups. It does not ingest email, Teams, calendar, monitoring or task data; does not create ACF cards, HITL tasks, tickets, workflow actions, billing/settlement/tariff/MaKo/device-control side effects; and does not add Personal-Agent shortcuts."}},"/api/dashboard-api/municipal-energy-value-analysis":{"get":{"summary":"Municipal energy value Lagebild -- read-only dashboard aggregation","tags":["Dashboard API"],"operationId":"dashboard_api_municipalEnergyValueAnalysisStatus","parameters":[{"name":"municipality","in":"query","required":false,"schema":{"type":"string"}},{"name":"ags","in":"query","required":false,"schema":{"type":"string"}},{"name":"year","in":"query","required":false,"schema":{"type":"integer"}},{"name":"scenario","in":"query","required":false,"schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only municipal energy value Lagebild","content":{"application/json":{"schema":{"type":"object","properties":{"capabilityKey":{"type":"string"},"status":{"type":"string"},"municipality":{"type":"string"},"ags":{"type":"string"},"year":{"type":"number"},"scenario":{"type":"string"},"analysisRunId":{"type":"string"},"valueRows":{"type":"array"},"riskRows":{"type":"array"},"budgetImpactRows":{"type":"array"},"assumptionRows":{"type":"array"},"sourceRows":{"type":"array"},"missingEvidence":{"type":"array"},"positiveFollowUps":{"type":"array"},"noCallGuards":{"type":"array"},"_errors":{"type":"array"},"timestamp":{"type":"string","format":"date-time"}}}}}}},"description":"Returns a deterministic, Budibase-renderable municipal electricity-economy Lagebild for a given German municipality (identified by municipality name or AGS). Includes scalar valueRows (generation/value by technology), riskRows (EWK/digitalization, iMSys/SMGW rollout readiness, capacity constraints), budgetImpactRows (Konzessionsabgabe layers as scenario assumptions), assumptionRows, and sourceRows. Missing data is surfaced in missingEvidence and sourceRows, not as errors. The endpoint is generic for German municipalities; Mauer serves as the first demonstrable fixture/regression case. It does not perform billing, settlement, tariff calculation, concession-fee settlement, device control, MaKo dispatch, tenant provisioning, reset, Budibase table writes, or unrestricted data exports."}},"/api/dashboard-api/market-snapshot":{"get":{"summary":"Market snapshot — current spot prices, CO₂ intensity, renewable forecast","tags":["Dashboard API"],"operationId":"dashboard_api_marketSnapshot","parameters":[{"name":"location","in":"query","required":false,"schema":{"type":"string","default":"Deutschland","example":"Heidelberg"},"description":"Location for CO₂ intensity lookup (default: Deutschland)"},{"name":"region","in":"query","required":false,"schema":{"type":"string","example":"Bayern"},"description":"Region for ENTSO-E wind/solar generation forecast. When omitted, renewableForecast24h is null and the ENTSO-E call is skipped."},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Current market snapshot","content":{"application/json":{"schema":{"type":"object","properties":{"spotPrice":{"type":"object","nullable":true,"properties":{"current":{"type":"number","description":"€/MWh","example":45.2},"avgToday":{"type":"number","description":"€/MWh"},"minToday":{"type":"number","description":"€/MWh"},"maxToday":{"type":"number","description":"€/MWh"},"trend":{"type":"string","enum":["rising","falling","stable"]},"source":{"type":"string","example":"netztransparenz"}}},"co2":{"type":"object","nullable":true,"properties":{"current":{"type":"number","description":"gCO2eq/kWh","example":380},"avgToday":{"type":"number"},"signal":{"type":"string","enum":["green","yellow","red"]},"location":{"type":"string","example":"Deutschland"}}},"renewableForecast24h":{"type":"object","nullable":true,"properties":{"solarPeakMW":{"type":"number","example":32500},"windPeakMW":{"type":"number","example":18200},"combinedPeakAt":{"type":"string","format":"date-time"}}},"timestamp":{"type":"string","format":"date-time"},"_errors":{"type":"array","items":{"type":"string"}}}}}}}},"description":"Aggregates current day-ahead spot prices, CO₂ intensity (with forecast), and wind/solar generation forecast for the next 24 hours into a single response.\n\nFixed upstream parameters: `market: day-ahead`, today's date, `forecastType: both`.\n\nOptional overrides:\n- `?location=Heidelberg` overrides the CO₂ intensity location (default: Deutschland)\n- `?region=Bayern` enables the ENTSO-E wind/solar forecast (region-specific); omit to skip — `renewableForecast24h` will be null when no region is given\n\nCache TTL: 15 minutes (key: location + region)."}},"/api/dashboard-api/quality-summary":{"get":{"summary":"Quality summary — recent reports from all agent pipelines","tags":["Dashboard API"],"operationId":"dashboard_api_qualitySummary","parameters":[{"name":"gridOperatorId","in":"query","required":false,"schema":{"type":"string","example":"SNB935578300972"},"description":"MaStR ID of the grid operator (SNB.../GNB...)"},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Quality summary across all agent pipelines","content":{"application/json":{"schema":{"type":"object","properties":{"agents":{"type":"array","description":"One entry per agent type","items":{"type":"object","properties":{"type":{"type":"string","example":"mastr-quality"},"label":{"type":"string","example":"MaStR Datenqualität"},"lastRun":{"type":"string","format":"date-time","nullable":true},"keyMetric":{"type":"object","nullable":true},"findingsCount":{"type":"object","nullable":true,"description":"Finding counts from latest report (null for agents without findings pattern)","properties":{"info":{"type":"integer","example":12},"warning":{"type":"integer","example":18},"error":{"type":"integer","example":5}}},"recentReports":{"type":"array"}}}},"businessKpis":{"type":"object","nullable":true,"description":"VDMI business KPIs for governance and process-standardisation impact","properties":{"vdmi_shadow_path_resolution_rate":{"type":"number","nullable":true,"description":"Resolved share (%) of VD_SHADOW_* and VD_SILO_* findings in the observed data"},"vdmi_n1_escalation_reduction_rate":{"type":"number","nullable":true,"description":"Reduction (%) of escalation-like VD_GOV_* findings comparing current vs previous 30-day window"},"vdmi_fnav_time_to_decision_gain_days":{"type":"number","nullable":true,"description":"Median decision-time gain in days for fNAV process matrices (previous window minus current window)"}}},"timestamp":{"type":"string","format":"date-time"},"_errors":{"type":"array","items":{"type":"string"}}}}}}}},"description":"Returns the five most recent reports from each of the five agent pipelines (MaStR Quality, Grid Connection, Energy Sharing, Redispatch Ex-Post, Energy Sharing Allocation), structured as an agent-type array with last-run timestamp, key metric, and report list.\n\nOptionally filtered by `gridOperatorId` (MaStR SNB/GNB ID). If omitted, returns the five most recent reports regardless of operator.\n\nCache TTL: 5 minutes (key: gridOperatorId)."}},"/api/dashboard-api/observability-mini":{"get":{"summary":"Observability mini dashboard — compact production feedback cards","tags":["Dashboard API"],"operationId":"dashboard_api_observabilityMini","parameters":[{"name":"sinceMinutes","in":"query","required":false,"schema":{"type":"integer","default":60,"minimum":1,"maximum":1440},"description":"Rolling observation window in minutes."},{"name":"slowActionThresholdMs","in":"query","required":false,"schema":{"type":"integer","default":1000,"minimum":1,"maximum":600000},"description":"Threshold used to classify actions as slow."},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Compact observability widget payload","content":{"application/json":{"schema":{"type":"object","properties":{"cards":{"type":"object"},"recentErrors":{"type":"array"},"slowestActions":{"type":"array"},"timestamp":{"type":"string","format":"date-time"},"_errors":{"type":"array","items":{"type":"string"}}}}}}}},"description":"Returns a compact operational payload from observability.summary with health, incidents, and performance cards plus recent errors and slowest actions. Optimized for dashboard widgets and agentic monitoring loops. Cache TTL: 60 seconds."}},"/api/dashboard-api/finding-codes":{"get":{"summary":"Finding codes reference — all 92 codes with metadata","tags":["Dashboard API"],"operationId":"dashboard_api_findingCodes","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Finding codes reference","content":{"application/json":{"schema":{"type":"object","properties":{"codes":{"type":"object","description":"Map of code → metadata","additionalProperties":{"type":"object","properties":{"severity":{"type":"string","enum":["info","warning","error"]},"agent":{"type":"string","example":"mastr-quality"},"step":{"type":"integer","example":4},"description":{"type":"string","description":"English description"},"descriptionDe":{"type":"string","description":"German description"}}}},"agents":{"type":"object","description":"Agent catalogue with version and step count"},"totalCodes":{"type":"integer","example":92}}}}}}},"description":"Returns the complete finding-code reference for all agent pipelines (Grid Connection v0.14, Energy Sharing v0.15, MaStR Quality v0.17, Redispatch Ex-Post v0.18). Each code entry contains: severity, agent, step, description (EN), descriptionDe (DE). Intended for UI tooltips, filter chips, and colour coding.\n\nCache TTL: 24 hours (static data — changes only on service restart)."}},"/api/dashboard-api/model-viability-evidence-gate":{"get":{"summary":"Model Viability Evidence Gate — read-only single-candidate evidence view","tags":["Dashboard API"],"operationId":"dashboard_api_modelViabilityEvidenceGateStatus","parameters":[{"name":"candidateId","in":"query","required":false,"schema":{"type":"string"}},{"name":"candidateName","in":"query","required":false,"schema":{"type":"string"}},{"name":"modelType","in":"query","required":false,"schema":{"type":"string"}},{"name":"scope","in":"query","required":false,"schema":{"type":"string"}},{"name":"evidenceSnapshotRef","in":"query","required":false,"schema":{"type":"string"}},{"name":"processCostBand","in":"query","required":false,"schema":{"type":"string"}},{"name":"processCostReference","in":"query","required":false,"schema":{"type":"string"}},{"name":"exceptionCaseRateBand","in":"query","required":false,"schema":{"type":"string"}},{"name":"exceptionCaseOwner","in":"query","required":false,"schema":{"type":"string"}},{"name":"liquidityImpactBand","in":"query","required":false,"schema":{"type":"string"}},{"name":"liquidityImpactReference","in":"query","required":false,"schema":{"type":"string"}},{"name":"dataMaturityMetering","in":"query","required":false,"schema":{"type":"string"}},{"name":"dataMaturityRoles","in":"query","required":false,"schema":{"type":"string"}},{"name":"dataMaturityTimeSeries","in":"query","required":false,"schema":{"type":"string"}},{"name":"dataMaturitySourceFreshness","in":"query","required":false,"schema":{"type":"string"}},{"name":"governanceEffortBand","in":"query","required":false,"schema":{"type":"string"}},{"name":"governanceDecisionOwner","in":"query","required":false,"schema":{"type":"string"}},{"name":"nextReviewGate","in":"query","required":false,"schema":{"type":"string"}},{"name":"assumptionOnlyDimensions","in":"query","required":false,"schema":{"oneOf":[{"type":"array","items":{"type":"string"}},{"type":"string"}]}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only single-candidate model viability evidence view","content":{"application/json":{"schema":{"type":"object","properties":{"capabilityKey":{"type":"string"},"safety":{"type":"string"},"status":{"type":"string"},"readinessScore":{"type":"number"},"candidateContext":{"type":"object"},"rows":{"type":"array"},"missingEvidence":{"type":"array"},"positiveFollowUps":{"type":"array"},"decisionBoundaries":{"type":"array"},"sourceActions":{"type":"object"},"dossierEvidence":{"type":"object"},"timestamp":{"type":"string","format":"date-time"},"_errors":{"type":"array","items":{"type":"string"}}}}}}}},"description":"Builds a deterministic, dossier-safe evidence view for one supplied operating-model candidate. Normalizes process-cost, exception-case, liquidity-impact, data-maturity and governance-effort evidence into comparable dimension rows with provided/assumption_only/missing status. Read-only: does not rank models, compute economics, or issue a legal, regulatory, tariff, contract, allocation, onboarding, billing, settlement, MaKo/A96, finance, procurement, workflow, HITL, connector, market-communication, device-control or Personal-Agent action."}},"/api/datasource-cache/:sourceId":{"get":{"summary":"Query cached datasource rows","tags":["DataSources"],"operationId":"datasource_cache_query","parameters":[{"name":"sourceId","in":"path","required":true,"schema":{"type":"string","example":"a1b2c3d4-0000-0000-0000-000000000000"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"example":50}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"example":0}},{"name":"includeCost","in":"query","required":false,"schema":{"type":"boolean","default":false,"example":true}},{"name":"priceCentPerKWh","in":"query","required":false,"schema":{"type":"number","default":40,"example":38.5}},{"name":"intervalMinutes","in":"query","required":false,"schema":{"type":"integer","default":15,"example":15}},{"name":"consumptionPowerField","in":"query","required":false,"schema":{"type":"string","default":"Leistung Bezug (W)","example":"Leistung Bezug (W)"}},{"name":"feedInPowerField","in":"query","required":false,"schema":{"type":"string","default":"Leistung Einspeisung (W)","example":"Leistung Einspeisung (W)"}},{"name":"privacyContext","in":"query","required":false,"schema":{"type":"string","enum":["internal","ai-agent","public"],"default":"ai-agent","example":"ai-agent"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}},"delete":{"summary":"Invalidate datasource cache","tags":["DataSources"],"operationId":"datasource_cache_invalidate","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"sourceId":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}}},"/api/datasource-cache/:sourceId/status":{"get":{"summary":"Get datasource cache status","tags":["DataSources"],"operationId":"datasource_cache_status","parameters":[{"name":"sourceId","in":"path","required":true,"schema":{"type":"string","example":"a1b2c3d4-0000-0000-0000-000000000000"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/datasource-cache/:sourceId/audit":{"get":{"summary":"Get datasource privacy substitution audit log","tags":["DataSources"],"operationId":"datasource_cache_audit","parameters":[{"name":"sourceId","in":"path","required":true,"schema":{"type":"string","example":"a1b2c3d4-0000-0000-0000-000000000000"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"example":50}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/datasource-cache/:sourceId/refresh":{"post":{"summary":"Refresh datasource cache entry","tags":["DataSources"],"operationId":"datasource_cache_refresh","parameters":[{"name":"sourceId","in":"path","required":true,"schema":{"type":"string","example":"a1b2c3d4-0000-0000-0000-000000000000"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","required":[],"properties":{"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"trigger":{"summary":"Trigger cache refresh (no body required)","value":{}}}}}}}},"/api/datasource-discovery":{"get":{"summary":"List discoverable inhouse datasource descriptors","tags":["DataSources"],"operationId":"datasource_discovery_list","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/datasource-discovery/search":{"get":{"summary":"Search discoverable inhouse datasource descriptors","tags":["DataSources"],"operationId":"datasource_discovery_search","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","example":"customer"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/datasource-discovery/:sourceId/descriptor":{"get":{"summary":"Get AI descriptor for one datasource","tags":["DataSources"],"operationId":"datasource_discovery_descriptor","parameters":[{"name":"sourceId","in":"path","required":true,"schema":{"type":"string","example":"a1b2c3d4-0000-0000-0000-000000000000"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/eeg-clawback-calculator/calculate":{"post":{"summary":"eeg-clawback-calculator.calculate","tags":["eeg-clawback-calculator"],"operationId":"eeg_clawback_calculator_calculate","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"asset":{"type":"string"},"prices":{"type":"string"},"injection":{"type":"string"},"options":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}}},"/api/eeg-clawback-calculator/assess-readiness":{"post":{"summary":"eeg-clawback-calculator.assessReadiness","tags":["eeg-clawback-calculator"],"operationId":"eeg_clawback_calculator_assessReadiness","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"assetId":{"type":"string"},"timeframe":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}}},"/api/eeg-clawback-calculator/simulate":{"post":{"summary":"eeg-clawback-calculator.simulate","tags":["eeg-clawback-calculator"],"operationId":"eeg_clawback_calculator_simulate","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"assetId":{"type":"string"},"timeframe":{"type":"string"},"options":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}}},"/api/eeg-clawback-calculator/portfolio/simulate":{"post":{"summary":"eeg-clawback-calculator.simulatePortfolio","tags":["eeg-clawback-calculator"],"operationId":"eeg_clawback_calculator_simulatePortfolio","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"assetIds":{"type":"string"},"timeframe":{"type":"string"},"options":{"type":"string"},"executionMode":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}}},"/api/eeg-clawback-calculator/portfolio/assess-readiness":{"post":{"summary":"eeg-clawback-calculator.assessPortfolioReadiness","tags":["eeg-clawback-calculator"],"operationId":"eeg_clawback_calculator_assessPortfolioReadiness","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"assetIds":{"type":"string"},"timeframe":{"type":"string"},"executionMode":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}}},"/api/eeg-clawback-calculator/runs/:runId/assets/:assetId/drilldown":{"post":{"summary":"eeg-clawback-calculator.drilldownAsset","tags":["eeg-clawback-calculator"],"operationId":"eeg_clawback_calculator_drilldownAsset","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"runId":{"type":"string"},"assetId":{"type":"string"},"persistTrace":{"type":"boolean"},"executionMode":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}}},"/api/eic-codes/search":{"post":{"summary":"Search EIC code database by code or company name","tags":["EIC Code Management"],"operationId":"eic_codes_search","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Search results with matching EIC codes","content":{"application/json":{"example":{"success":true,"data":{"results":[{"code":"21X000000001254A","name":"Netze BW GmbH","country":"DE","sector":"electricity","type":"Distribution System Operator"}],"count":1,"limit":10}}},"text/csv":{"description":"CSV download (when format=csv)","schema":{"type":"string"}},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":{"description":"Excel XLSX download (when format=xlsx or format=xls)","schema":{"type":"string","format":"binary"}}}},"400":{"description":"Validation error - at least code or name required"}},"description":"Search 72,580+ EIC codes from ENTSO-E and AGSI/GIE.\n\n**At least one of 'code' or 'name' is required.**\n\n**Parameter Details:**\n- **code**: Exact 16-character EIC code (e.g., \"21X000000001254A\")\n- **name**: Company name with fuzzy matching (e.g., \"Stadtwerke\", \"RWE\", \"Netze BW\")\n- **country**: ISO 3166-1 alpha-2 code - Common: DE (Germany), FR (France), NL (Netherlands), AT (Austria), CH (Switzerland), PL (Poland), CZ (Czech Republic)\n- **sector**: Filter by energy sector - \"electricity\" or \"gas\"\n- **limit**: Results limit (1-100, default: 10)\n\n**Use Cases:**\n- Find valid operator codes for AGSI gas storage queries\n- Research market partners and grid operators\n- Validate EIC codes before API calls","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string","description":"Exact EIC code (16 characters, starts with 2 digits + X)","example":"21X000000001254A","pattern":"^[0-9]{2}X[A-Z0-9]{13}$"},"name":{"type":"string","description":"Company/operator name (fuzzy search, minimum 3 characters recommended)","example":"Stadtwerke München","minLength":1},"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code","example":"DE","enum":["AT","BE","BG","CH","CZ","DE","DK","EE","ES","FI","FR","GB","GR","HR","HU","IE","IT","LT","LU","LV","NL","NO","PL","PT","RO","SE","SI","SK"],"minLength":2,"maxLength":2},"sector":{"type":"string","enum":["electricity","gas"],"description":"Energy sector filter","example":"electricity"},"limit":{"type":"integer","description":"Maximum number of results","minimum":1,"maximum":100,"default":10},"format":{"type":"string","enum":["json","csv","xlsx","xls"],"description":"Output format. \"csv\" and \"xls\"/\"xlsx\" trigger a file download.","default":"json"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"byExactCode":{"summary":"Find by exact EIC code","value":{"code":"21X000000001254A"}},"byCompanyName":{"summary":"Find by company name","value":{"name":"Stadtwerke München","country":"DE","sector":"electricity","limit":10}},"byPartialName":{"summary":"Fuzzy search by partial name","value":{"name":"Netze","country":"DE","limit":20}},"gasOperatorsDE":{"summary":"Find German gas operators","value":{"name":"Gas","country":"DE","sector":"gas","limit":15}},"csvExport":{"summary":"Export results as CSV","value":{"name":"Netze","country":"DE","limit":50,"format":"csv"}}}}}}}},"/api/eic-codes/validate":{"post":{"summary":"Validate EIC code format (IEC 62325 standard)","tags":["EIC Code Management"],"operationId":"eic_codes_validate","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"Validates EIC code format according to IEC 62325 standard. Checks: length (16 characters), LIO area (10-70), code type character, check digit algorithm. Use for pre-validation before API calls, form input validation.","requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["code"],"properties":{"code":{"type":"string","minLength":16,"maxLength":16,"description":"EIC code to validate","example":"21X000000001254A"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"validCode":{"summary":"Valid EIC code","value":{"code":"21X000000001254A"}},"invalidCode":{"summary":"Invalid EIC code","value":{"code":"INVALID123456789"}}}}}}}},"/api/eic-codes/gas-operators":{"get":{"summary":"List German gas storage operators with EIC codes","tags":["EIC Code Management"],"operationId":"eic_codes_gasOperators","parameters":[{"name":"country","in":"query","schema":{"type":"string","default":"DE"},"description":"ISO country code","example":"DE"},{"name":"includeMetadata","in":"query","schema":{"type":"boolean","default":false},"description":"Include additional operator details","example":false},{"name":"format","in":"query","schema":{"type":"string","enum":["json","csv","xlsx","xls"],"default":"json"},"description":"Output format. \"csv\" and \"xls\"/\"xlsx\" trigger a file download.","example":"json"},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"List of gas storage operators with EIC codes","content":{"application/json":{"schema":{"type":"object"}},"text/csv":{"description":"CSV download (when format=csv)","schema":{"type":"string"}},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":{"description":"Excel XLSX download (when format=xlsx or format=xls)","schema":{"type":"string","format":"binary"}}}}},"description":"Retrieve list of gas storage system operators in Germany with their EIC codes. Use cases: Find valid codes for AGSI operator queries, German gas storage market overview, operator portfolio analysis."}},"/api/eic-codes/gas-facilities":{"get":{"summary":"List German gas storage facilities (UGS) with EIC codes","tags":["EIC Code Management"],"operationId":"eic_codes_gasFacilities","parameters":[{"name":"operatorCode","in":"query","schema":{"type":"string","example":"21X000000001262B"},"description":"Filter by operator EIC code","example":"21X000000001262B"},{"name":"country","in":"query","schema":{"type":"string","default":"DE"},"description":"ISO country code","example":"DE"},{"name":"format","in":"query","schema":{"type":"string","enum":["json","csv","xlsx","xls"],"default":"json"},"description":"Output format. \"csv\" and \"xls\"/\"xlsx\" trigger a file download.","example":"json"},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"List of underground gas storage facilities with EIC codes","content":{"application/json":{"schema":{"type":"object"}},"text/csv":{"description":"CSV download (when format=csv)","schema":{"type":"string"}},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":{"description":"Excel XLSX download (when format=xlsx or format=xls)","schema":{"type":"string","format":"binary"}}}}},"description":"Retrieve underground gas storage facilities in Germany. Use cases: Find valid codes for AGSI facility queries, operator portfolio breakdown, facility-level monitoring."}},"/api/eic-codes/statistics":{"get":{"summary":"Statistics about EIC database (total count, breakdown by type/sector/country)","tags":["EIC Code Management"],"operationId":"eic_codes_statistics","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"Get comprehensive statistics about the EIC code database including 72,580+ total codes with breakdowns by type (party, resource, substation, area, operator, tie-line, location, facility), sector (electricity/gas), and country. Use for database health checks and coverage assessment."}},"/api/energy-market/prices":{"post":{"summary":"Electricity market prices (day-ahead, intraday, futures)","tags":["Energy Market Data"],"operationId":"energy_market_prices","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Price data retrieved successfully","content":{"application/json":{"example":{"success":true,"data":{"market":"day-ahead","region":"Deutschland","prices":[{"timestamp":"2026-02-07T00:00:00Z","priceEURMWh":45.23},{"timestamp":"2026-02-07T01:00:00Z","priceEURMWh":38.67}]}}},"text/csv":{"description":"CSV download (when format=csv)","schema":{"type":"string"}},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":{"description":"Excel XLSX download (when format=xlsx or format=xls)","schema":{"type":"string","format":"binary"}}}}},"description":"Query electricity prices from ENTSO-E Transparency Platform and SMARD.de.\n\n**All parameters are required.**\n\n**Parameter Details:**\n- **market**: Price type - \"day-ahead\" (next day auction), \"intraday\" (same-day trading), \"futures\" (forward contracts)\n- **region**: Market area - \"Deutschland\", \"Germany\", \"AT\" (Austria), \"FR\" (France), \"NL\" (Netherlands), \"BE\" (Belgium), \"CH\" (Switzerland)\n- **date**: Single date query (YYYY-MM-DD) - mutually exclusive with startDate/endDate\n- **startDate**: Range start (YYYY-MM-DD) - use with endDate\n- **endDate**: Range end (YYYY-MM-DD) - use with startDate\n\n**Use Cases:**\n- Dynamic tariff calculation\n- Trading strategy analysis\n- Price forecasting and arbitrage","requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["market","region"],"properties":{"market":{"type":"string","enum":["day-ahead","intraday","futures"],"description":"Market type","example":"day-ahead"},"region":{"type":"string","description":"Market region (country name or ISO code)","example":"Deutschland"},"date":{"type":"string","format":"date","description":"Single date (YYYY-MM-DD)","example":"2026-02-07"},"startDate":{"type":"string","format":"date","description":"Range start date (YYYY-MM-DD)","example":"2026-02-01"},"endDate":{"type":"string","format":"date","description":"Range end date (YYYY-MM-DD)","example":"2026-02-07"},"format":{"type":"string","enum":["json","csv","xlsx","xls"],"description":"Output format. \"csv\" and \"xls\"/\"xlsx\" trigger a file download.","default":"json"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"singleDay":{"summary":"Day-ahead prices for one day","value":{"market":"day-ahead","region":"Deutschland","date":"2026-02-07"}},"weekRange":{"summary":"Day-ahead prices for date range","value":{"market":"day-ahead","region":"Deutschland","startDate":"2026-02-01","endDate":"2026-02-07"}},"intraday":{"summary":"Intraday prices","value":{"market":"intraday","region":"Deutschland","date":"2026-02-07"}},"csvExport":{"summary":"Export prices as CSV","value":{"market":"day-ahead","region":"Deutschland","startDate":"2026-02-01","endDate":"2026-02-07","format":"csv"}}}}}}}},"/api/energy-market/production":{"post":{"summary":"Electricity generation data by energy source","tags":["Energy Market Data"],"operationId":"energy_market_production","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Production data retrieved successfully","content":{"application/json":{"example":{"success":true,"data":{"energySource":"Solar","region":"Deutschland","timeSeries":[{"timestamp":"2026-02-07T12:00:00Z","productionMW":12543.5}]}}},"text/csv":{"description":"CSV download (when format=csv)","schema":{"type":"string"}},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":{"description":"Excel XLSX download (when format=xlsx or format=xls)","schema":{"type":"string","format":"binary"}}}}},"description":"Query generation data from SMARD.de and ENTSO-E Transparency Platform.\n\n**All parameters are required except resolution.**\n\n**Parameter Details:**\n- **energySource**: Energy source type - \"Solar\", \"Wind\", \"Biomass\", \"Nuclear\", \"Gas\", \"Coal\", \"Hydro\", \"all\" (aggregated)\n- **region**: Region name - \"Deutschland\", \"Bayern\", \"Baden-Württemberg\", \"Nordrhein-Westfalen\", etc.\n- **startDate**: Start date (YYYY-MM-DD)\n- **endDate**: End date (YYYY-MM-DD)\n- **resolution**: Time granularity - \"quarterhour\" (15min), \"hour\", \"day\", \"week\", \"month\", \"year\" (default: \"hour\")\n\n**Use Cases:**\n- Renewable energy analysis\n- Generation forecasting\n- Grid planning and balancing","requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["energySource","region","startDate","endDate"],"properties":{"energySource":{"type":"string","enum":["Solar","Wind","Biomass","Nuclear","Gas","Coal","Hydro","all"],"description":"Energy source type","example":"Solar"},"region":{"type":"string","description":"Region name (country or state)","example":"Deutschland"},"startDate":{"type":"string","format":"date","description":"Start date (YYYY-MM-DD)","example":"2026-02-01"},"endDate":{"type":"string","format":"date","description":"End date (YYYY-MM-DD)","example":"2026-02-07"},"resolution":{"type":"string","enum":["quarterhour","hour","day","week","month","year"],"description":"Time resolution (default: hour)","default":"hour"},"format":{"type":"string","enum":["json","csv","xlsx","xls"],"description":"Output format. \"csv\" and \"xls\"/\"xlsx\" trigger a file download.","default":"json"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"solarWeek":{"summary":"Solar production for one week","value":{"energySource":"Solar","region":"Deutschland","startDate":"2026-02-01","endDate":"2026-02-07","resolution":"hour"}},"windDaily":{"summary":"Wind production aggregated by day","value":{"energySource":"Wind","region":"Bayern","startDate":"2026-01-01","endDate":"2026-01-31","resolution":"day"}},"allSources":{"summary":"All sources combined","value":{"energySource":"all","region":"Deutschland","startDate":"2026-02-07","endDate":"2026-02-07"}},"csvExport":{"summary":"Export production time-series as CSV","value":{"energySource":"Solar","region":"Deutschland","startDate":"2026-02-01","endDate":"2026-02-07","format":"csv"}}}}}}}},"/api/energy-market/co2-intensity":{"post":{"summary":"Regional CO₂ intensity forecasts (GrünstromIndex)","tags":["Energy Market Data"],"operationId":"energy_market_co2Intensity","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"CO2 intensity data retrieved","content":{"application/json":{"example":{"success":true,"co2_intensity_gco2eq_kwh":380,"average_today_gco2eq_kwh":364.5,"data":{"location":"Heidelberg","timestamp":"2026-02-07T14:00:00Z","forecast":[{"timestamp":"2026-02-07T14:00:00Z","gCO2eqPerKWh":380},{"timestamp":"2026-02-07T15:00:00Z","gCO2eqPerKWh":275}]}}},"text/csv":{"description":"CSV download (when format=csv)","schema":{"type":"string"}},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":{"description":"Excel XLSX download (when format=xlsx or format=xls)","schema":{"type":"string","format":"binary"}}}}},"description":"Query CO2 intensity for a specific location in Germany from GrünstromIndex.\n\n**'location' is required** — provide a German city name or 5-digit postal code.\n\n**Parameter Details:**\n- **location**: German city name or postal code (required, e.g. a city name or 5-digit postal code)\n- **timestamp**: Specific timestamp (ISO 8601 or natural language like \"now\", \"tomorrow 14:00\")\n- **forecast**: Get 36-hour forecast instead of current value (default: false)\n- **format**: Output format — \"json\" (default), \"csv\", \"xlsx\"/\"xls\". CSV includes `# Location`, `# Current CO2 Intensity`, `# Average Today` header comments followed by the hourly forecast rows.\n\n**Use Cases:**\n- CO₂-optimized dynamic tariffs\n- Smart EV charging (charge when grid is greenest)\n- Load shifting for industrial consumers\n- Green energy certificates\n- Power BI / Excel import with `format=csv`\n\n**Data Source:** GrünstromIndex provides regional green energy forecasts with 36-hour horizon, factoring in renewable generation, grid mix, and transmission constraints.","requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["location"],"properties":{"location":{"type":"string","description":"German city name or postal code","example":"Heidelberg"},"timestamp":{"type":"string","description":"Timestamp (ISO 8601 or natural language)","example":"2026-02-07T14:00:00Z"},"forecast":{"type":"boolean","description":"Get 36-hour forecast","default":false},"format":{"type":"string","enum":["json","csv","xlsx","xls"],"description":"Output format. \"csv\" and \"xls\"/\"xlsx\" trigger a file download.","default":"json"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"currentByCity":{"summary":"Current CO₂ intensity by city","value":{"location":"Heidelberg"}},"currentByPostal":{"summary":"Current CO₂ intensity by postal code","value":{"location":"69115"}},"forecast36h":{"summary":"36-hour forecast","value":{"location":"München","forecast":true}},"forecastCsv":{"summary":"36-hour forecast as CSV (for Power BI / Excel)","value":{"location":"Ludwigshafen","forecast":true,"format":"csv"}},"specificTime":{"summary":"CO₂ intensity at specific time","value":{"location":"Berlin","timestamp":"2026-02-07T14:00:00Z"}}}}}}}},"/api/energy-market/installations":{"post":{"summary":"Search energy installations in German registry (MaStR)","tags":["Energy Market Data"],"operationId":"energy_market_installations","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Installation data retrieved","content":{"application/json":{"example":{"success":true,"data":{"results":[{"mastrNumber":"SEE988149395570","name":"PV 2 Weiler","installationType":"solar","capacityKW":6.15,"commissioningDate":"2021-03-10","location":"Weiler","postalCode":"67063","latitude":49.4744,"longitude":8.4349,"netzbetreiberpruefungStatus":2954,"napData":{"napMastrNummer":"SAN914634531048","messlokation":"DE0003976706990000000000000073131","spannungsebene":354,"spannungsebeneLabel":"Niederspannung (LV)","nettoengpassleistung":6.15,"netzMastrNummer":"SNE985057905075","netzbetreiberMastrNummer":"SNB935578300972"}},{"mastrNumber":"SEE900000000002","name":"PV Altanlage 2003","installationType":"solar","capacityKW":3.8,"commissioningDate":"2003-06-01","location":"Heidelberg","postalCode":"69115","latitude":49.4093,"longitude":8.6942,"netzbetreiberpruefungStatus":null}],"count":2,"limit":20}}},"text/csv":{"description":"CSV download (when format=csv)","schema":{"type":"string"}},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":{"description":"Excel XLSX download (when format=xlsx or format=xls)","schema":{"type":"string","format":"binary"}}}}},"description":"Search Marktstammdatenregister (MaStR) for energy installations.\n\n**'installationType' is required.**\n\n**Parameter Details:**\n- **installationType**: Installation type - \"solar\" (PV), \"wind\", \"storage\" (batteries), \"biomass\", \"hydro\", \"combustion\" (CHP, gas turbines), or \"all\" (aggregated across all supported types)\n- **location**: City name, postal code, or region (deprecated; use bundesland/landkreis/gemeinde/postleitzahl in MCP tool)\n- **operationalStatus**: Operational status filter - Default: \"35\" (only active/in operation). Values: \"31\" (planned), \"35\" (in operation), \"37\" (temporarily decommissioned), \"38\" (permanently decommissioned), \"all\" (all statuses), or comma-separated list (e.g., \"35,37\")\n- **limit**: Max results (optional)\n- **minCapacityKW**: Minimum installed capacity in kW (e.g., 5 for small installations, 100 for commercial)\n- **maxCapacityKW**: Maximum installed capacity in kW\n- **commissioningYear**: Filter by year of grid connection (1900-2100)\n- **gridOperatorId**: MaStR Netzbetreiber-ID (SNB/GNB...), comma-separated (deprecated)\n- **gridOperatorMastrId**: MaStR Netzbetreiber-ID (SNB/GNB...), preferred\n- **gridOperatorName**: Netzbetreiber-Name (fuzzy matching)\n- **gridOperatorBdewCode**: BDEW code (resolved to MaStR Netzbetreiber)\n- **includeNapData**: Include NAP (Netzanschlusspunkt) data per installation (default: `true`). Uses a single `$in` query — no N+1; typically < 50 ms overhead for 1,000 results. ~48 % of older installations have no MeLo on record — `napData` is `undefined` for those. Set to `false` to skip enrichment for faster responses on large result sets.\n\n**NAP data fields (when present):**\n| Field | Description |\n|---|---|\n| `napMastrNummer` | NAP identifier (SAN...) |\n| `messlokation` | MeLo-ID (DE000...) for billing and metering systems |\n| `spannungsebene` | Voltage level code from MaStR |\n| `spannungsebeneLabel` | Human-readable: Niederspannung (LV) / Mittelspannung (MV) / Hochspannung (HV) / Höchstspannung (EHV) |\n| `nettoengpassleistung` | Net transfer capacity at NAP in kW |\n| `netzMastrNummer` | Grid MaStR-ID (SNE...) |\n| `netzbetreiberMastrNummer` | Grid operator MaStR-ID (SNB...) |\n\n**New fields on all installation objects:** `latitude`, `longitude` (GPS coordinates), `netzbetreiberpruefungStatus` (grid operator verification status)\n\n| `netzbetreiberpruefungStatus` code | Meaning |\n|---|---|\n| `2954` | Geprüft ✅ — confirmed by grid operator |\n| `2955` | In Prüfung ⏳ — review in progress |\n| `3075` | Nicht vorgesehen — no verification applicable |\n| `null` | Not available for this record (older data) |\n\n**Wind turbines:** additionally `typenbezeichnung` (turbine model, e.g. \"E-115\"), `hersteller` (manufacturer, e.g. \"Enercon\")\n**Storage systems:** additionally `batterietechnologie`, `acDcKoppelung`, `wechselrichterleistung`, `einsatzort`\n\n**Use Cases:**\n- Portfolio analysis and benchmarking\n- Site selection for new installations\n- Market research and competitor analysis\n- Grid planning (DSO/TSO)\n- Redispatch 2.0 eligible installations\n- Billing/metering system setup (MeLo lookup via napData)\n\n**MaStR Database:** Official registry of all power plants, solar systems, wind turbines, and storage facilities in Germany maintained by Bundesnetzagentur.","requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["installationType"],"properties":{"installationType":{"type":"string","enum":["solar","wind","storage","biomass","hydro","combustion","all"],"description":"Type of energy installation","example":"solar"},"location":{"type":"string","description":"Location (city, postal code, or region) - deprecated","example":"Heidelberg"},"limit":{"oneOf":[{"type":"integer","minimum":1},{"type":"string","enum":["all"]}],"description":"Maximum number of results. Default: **1,000**. Set a high number (e.g. `1000000`) or `\"all\"` to retrieve the complete result set — the server paginates internally across multiple MCP calls so no offset handling is required on the client side.","default":1000,"example":1000},"offset":{"type":"integer","description":"Pagination offset — number of records to skip. Use with `limit` to retrieve pages beyond the first 1,000. Example: `offset=1000&limit=1000` fetches records 1,001–2,000.","minimum":0,"default":0,"example":0},"minCapacityKW":{"type":"number","description":"Minimum capacity in kW","minimum":0,"example":5},"maxCapacityKW":{"type":"number","description":"Maximum capacity in kW","minimum":0,"example":100},"commissioningYear":{"type":"integer","description":"Year of grid connection","minimum":1900,"maximum":2100,"example":2023},"gridOperatorId":{"type":"string","description":"MaStR Netzbetreiber-ID (SNB/GNB...), comma-separated","example":"SNB935578300972"},"gridOperatorMastrId":{"type":"string","description":"MaStR Netzbetreiber-ID (SNB/GNB...), preferred","example":"SNB935578300972"},"gridOperatorName":{"type":"string","description":"Grid operator name (fuzzy matching)","example":"Netze BW"},"gridOperatorBdewCode":{"type":"string","description":"BDEW code (resolved to MaStR Netzbetreiber)","example":"9900992720003"},"netzbetreiberPruefungStatus":{"type":"string","description":"Filter by grid operator verification status code(s), comma-separated. Values: **2954**=Geprüft ✅, **2955**=In Prüfung ⏳, **3075**=Nicht vorgesehen. Example: `\"2955\"` or `\"2954,2955\"`.","example":"2955"},"includeNapData":{"type":"boolean","description":"Include NAP data per installation (MeLo-ID, voltage level, grid operator MaStR-IDs). Default: true. Set to false to skip enrichment for faster responses on large result sets.","default":true,"example":true},"format":{"type":"string","enum":["json","csv","xlsx","xls"],"description":"Output format. \"csv\" and \"xls\"/\"xlsx\" trigger a file download.","default":"json"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"rooftopSolar":{"summary":"Rooftop solar in Heidelberg","value":{"installationType":"solar","minCapacityKW":5,"maxCapacityKW":30,"limit":20}},"commercialSolar":{"summary":"Commercial solar installations","value":{"installationType":"solar","minCapacityKW":100,"commissioningYear":2023,"limit":50}},"gridOperatorFilter":{"summary":"Filter by grid operator (BDEW)","value":{"installationType":"solar","gridOperatorBdewCode":"9900992720003","limit":20}},"windTurbines":{"summary":"Wind turbines in region","value":{"installationType":"wind","minCapacityKW":1000,"limit":30}},"batteryStorage":{"summary":"Battery storage systems","value":{"installationType":"storage","limit":15}},"allTypes":{"summary":"Aggregate all supported installation types","value":{"installationType":"all","gridOperatorBdewCode":"9900992720003","limit":100}},"withNapData":{"summary":"Solar with NAP/MeLo data (default on)","value":{"installationType":"solar","gridOperatorBdewCode":"9900992720003","limit":10,"includeNapData":true}},"withoutNapData":{"summary":"Wind turbines — skip NAP enrichment for speed","value":{"installationType":"wind","minCapacityKW":1000,"limit":50,"includeNapData":false}},"csvExport":{"summary":"Export installations as CSV","value":{"installationType":"solar","gridOperatorBdewCode":"9900992720003","limit":100,"format":"csv"}}}}}}}},"/api/energy-market/portfolio-backtest":{"post":{"summary":"Historical portfolio market value backtest (Day-Ahead)","tags":["Energy Market Data"],"operationId":"energy_market_portfolioBacktest","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Backtest result (from `/api/jobs/{jobId}/result` once status is `completed`)","content":{"application/json":{"example":{"success":true,"period":{"dateFrom":"2025-07-01","dateTo":"2026-06-30","days":365,"resolution":"hourly"},"market":{"type":"day-ahead","region":"Deutschland","currency":"EUR","priceUnit":"EUR/MWh"},"portfolio":{"assetCount":1,"totalCapacityKw":742.5,"generationMwh":721.4,"marketValueEur":54321.1,"weightedMarketValueEurPerMwh":75.3,"averageSpotPriceEurPerMwh":82.1,"captureRate":0.917,"negativePriceHours":24,"generationDuringNegativePricesMwh":18.2,"valueDuringNegativePricesEur":-145.6,"curtailedMarketValueEur":54466.7,"negativePriceAvoidableLossEur":145.6},"monthly":[{"month":"2025-07","generationMwh":82.1,"marketValueEur":6234.5,"curtailedMarketValueEur":6280,"averageSpotPriceEurPerMwh":78.4,"weightedMarketValueEurPerMwh":75.9,"negativePriceHours":3}],"assets":[{"mastrNumber":"SEE123456789012","type":"solar","capacityKw":742.5,"dataQuality":"mastr_historical_reconstruction","generationMwh":721.4,"marketValueEur":54321.1,"weightedMarketValueEurPerMwh":75.3,"curtailedMarketValueEur":54466.7,"negativePriceAvoidableLossEur":145.6,"negativePriceHours":24,"warnings":[]}],"methodology":{"timezone":"UTC","priceAlignment":"hourly","fallbackPolicy":"assumption_if_no_forecast_or_uploaded_profile","captureRateDefinition":"weightedMarketValueEurPerMwh / timeWeightedAverageSpotPrice"}}}}},"202":{"description":"Job accepted — poll `/api/jobs/{jobId}/status`, fetch result from `/api/jobs/{jobId}/result`","content":{"application/json":{"example":{"success":true,"jobId":"a3f8b2c1-0000-0000-0000-000000000001","status":"queued","message":"Job started. Poll /api/jobs/:jobId/status for progress.","statusUrl":"/api/jobs/a3f8b2c1-0000-0000-0000-000000000001/status","resultUrl":"/api/jobs/a3f8b2c1-0000-0000-0000-000000000001/result"}}}}},"description":"Computes the historical spot market value for a portfolio of energy installations.\n\nCombines generation timeseries (inline upload, MaStR-based historical reconstruction, or technology assumption) with Day-Ahead prices over a selectable period (default: last 365 complete days).\n\n**Data quality priority per asset:**\n1. `uploaded_timeseries` — inline `timeseries` array in request\n2. `mastr_historical_reconstruction` — solar/wind with `mastrNumber`, weather-based historical model\n3. `assumption` — biomass (7 500 h/a), hydro (4 200 h/a), combustion (3 500 h/a): flat profile\n4. `missing_profile` — storage and unknown types: generation = 0, warning emitted\n\n**Negative price handling:** `marketValueEur` reflects physical generation including negative intervals; `curtailedMarketValueEur` shows the value under ideal curtailment; `negativePriceAvoidableLossEur` is the difference.\n\n**Limits:** max 50 assets per request, max 365 days, region `Deutschland` only in v1.","requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["assets"],"properties":{"assets":{"type":"array","maxItems":50,"description":"Portfolio of energy installations","items":{"type":"object","properties":{"mastrNumber":{"type":"string","description":"MaStR unit ID (SEE…=solar, SWE…=wind)"},"type":{"type":"string","enum":["solar","wind","biomass","hydro","combustion","storage","other"],"description":"Technology type"},"capacityKw":{"type":"number","description":"Installed capacity in kW"},"postleitzahl":{"type":"string","description":"Postal code (used as fallback location)"},"commissioningDate":{"type":"string","format":"date","description":"Grid connection date — intervals before this are zeroed"},"timeseries":{"type":"array","description":"Optional inline generation timeseries (highest priority)","items":{"type":"object","properties":{"timestamp":{"type":"string"},"generationMwh":{"type":"number"}}}}}}},"dateFrom":{"type":"string","format":"date","description":"Start date (YYYY-MM-DD). Default: today − 365 days","example":"2025-07-01"},"dateTo":{"type":"string","format":"date","description":"End date inclusive (YYYY-MM-DD). Default: yesterday","example":"2026-06-30"},"resolution":{"type":"string","enum":["hourly","daily"],"default":"hourly","description":"Response resolution"},"market":{"type":"string","default":"day-ahead","description":"Market type"},"region":{"type":"string","default":"Deutschland","description":"Market region (only \"Deutschland\" supported in v1)"},"includeTimeseries":{"type":"boolean","default":false,"description":"Include full hourly timeseries in response"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"minimal":{"summary":"Single solar asset, default 365-day period","value":{"assets":[{"mastrNumber":"SEE123456789012","type":"solar","capacityKw":742.5,"postleitzahl":"69115","commissioningDate":"2020-06-01"}]}},"mixedPortfolio":{"summary":"Mixed portfolio with inline biomass timeseries","value":{"assets":[{"mastrNumber":"SEE123456789012","type":"solar","capacityKw":500,"commissioningDate":"2021-01-01"},{"type":"biomass","capacityKw":500,"commissioningDate":"2019-03-15","timeseries":[{"timestamp":"2025-07-01T00:00:00Z","generationMwh":0.42}]}],"dateFrom":"2025-07-01","dateTo":"2026-06-30","includeTimeseries":false}}}}}}}},"/api/entsoe/day-ahead-prices":{"post":{"summary":"Direct ENTSO-E day-ahead price queries (faster, bypasses LLM)","tags":["ENTSO-E"],"operationId":"entsoe_dayAheadPrices","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response with day-ahead prices","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":true},"region":{"type":"string","example":"Germany"},"eicCode":{"type":"string","example":"10Y1001A1001A82H"},"periodStart":{"type":"string","example":"202602010000"},"periodEnd":{"type":"string","example":"202602032300"},"resolution":{"type":"string","example":"PT15M"},"currency":{"type":"string","example":"EUR"},"unit":{"type":"string","example":"MWh"},"prices":{"type":"array","items":{"type":"object","properties":{"timestamp":{"type":"string"},"price":{"type":"number"},"position":{"type":"integer"}}}},"statistics":{"type":"object","properties":{"minPrice":{"type":"number"},"maxPrice":{"type":"number"},"avgPrice":{"type":"number"},"medianPrice":{"type":"number"},"totalDataPoints":{"type":"integer"}}},"metadata":{"type":"object","properties":{"source":{"type":"string","example":"ENTSO-E Transparency Platform"},"documentType":{"type":"string","example":"A44"},"queryTime":{"type":"string","format":"date-time"},"toolName":{"type":"string"},"timestamp":{"type":"string","format":"date-time"}}}}}},"text/csv":{"description":"CSV download (when format=csv)","schema":{"type":"string"}},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":{"description":"Excel XLSX download (when format=xlsx or format=xls)","schema":{"type":"string","format":"binary"}}}}},"description":"✅ FULLY WORKING - Most reliable ENTSOE endpoint. Automatic EIC code selection, multi-format dates, 15-minute resolution. Use this as reference for working ENTSOE integration.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["region","dateFrom","dateTo"],"properties":{"region":{"type":"string","description":"Country/bidding zone name (fuzzy matching supported)","example":"Germany"},"dateFrom":{"type":"string","description":"Start date in ISO 8601 (2026-02-01), YYYYMMDD (20260201), or German format (01.02.2026)","example":"2026-02-01"},"dateTo":{"type":"string","description":"End date (same formats as dateFrom)","example":"2026-02-03"},"includeStatistics":{"type":"boolean","description":"Include price statistics (min/max/avg/median)","default":true},"format":{"type":"string","enum":["json","csv","xlsx","xls"],"description":"Output format. \"csv\" and \"xls\"/\"xlsx\" trigger a file download.","default":"json"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"singleDay":{"summary":"Single day query","value":{"region":"Germany","dateFrom":"2026-02-01","dateTo":"2026-02-01","includeStatistics":true}},"weekRange":{"summary":"Week range with statistics","value":{"region":"France","dateFrom":"2026-02-01","dateTo":"2026-02-07","includeStatistics":true}},"germanDateFormat":{"summary":"Using German date format","value":{"region":"Austria","dateFrom":"01.02.2026","dateTo":"05.02.2026","includeStatistics":false}},"csvExport":{"summary":"Export prices as CSV","value":{"region":"Germany","dateFrom":"2026-02-01","dateTo":"2026-02-07","format":"csv"}}}}}}}},"/api/entsoe/unavailability":{"post":{"summary":"Query unavailable generation units, transmission assets, and load","tags":["ENTSO-E"],"operationId":"entsoe_unavailability","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response with unavailability data","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"region":{"type":"string"},"eicCode":{"type":"string"},"period":{"type":"object","properties":{"from":{"type":"string"},"to":{"type":"string"}}},"unavailabilityTypes":{"type":"array","items":{"type":"string"}},"unavailabilities":{"type":"array","items":{"type":"object","properties":{"timestamp":{"type":"string"},"psrType":{"type":"string"},"unavailableMW":{"type":"number"},"businessType":{"type":"string"}}}},"statistics":{"type":"object"},"metadata":{"type":"object","properties":{"source":{"type":"string"},"documentTypes":{"type":"array","items":{"type":"string"}},"queryTime":{"type":"string"},"dataPoints":{"type":"integer"},"toolName":{"type":"string"},"timestamp":{"type":"string"}}}}}},"text/csv":{"description":"CSV download (when format=csv)","schema":{"type":"string"}},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":{"description":"Excel XLSX download (when format=xlsx or format=xls)","schema":{"type":"string","format":"binary"}}}}},"description":"✅ FULLY WORKING - Outage monitoring (planned and unplanned), capacity forecasting. Supports production, transmission, and load unavailability types with PSR type filtering.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["region","dateFrom","dateTo"],"properties":{"region":{"type":"string","description":"Country/bidding zone name","example":"Germany"},"dateFrom":{"type":"string","description":"Start date (ISO 8601, YYYYMMDD, or DD.MM.YYYY)","example":"2026-02-01"},"dateTo":{"type":"string","description":"End date","example":"2026-02-07"},"unavailabilityType":{"type":"string","enum":["production","transmission","load","all"],"description":"Type of unavailability to query","default":"production"},"psrType":{"type":"string","description":"Optional PSR type filter (e.g., B16 for Solar, B19 for Wind)","example":"B19"},"includeStatistics":{"type":"boolean","default":true},"format":{"type":"string","enum":["json","csv","xlsx","xls"],"description":"Output format. \"csv\" and \"xls\"/\"xlsx\" trigger a file download.","default":"json"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"productionOutages":{"summary":"Production unit outages","value":{"region":"Germany","dateFrom":"2026-02-01","dateTo":"2026-02-07","unavailabilityType":"production","includeStatistics":true}},"windOutagesOnly":{"summary":"Wind generation outages only","value":{"region":"Denmark","dateFrom":"2026-02-01","dateTo":"2026-02-14","unavailabilityType":"production","psrType":"B19","includeStatistics":true}},"transmissionOutages":{"summary":"Transmission asset outages","value":{"region":"France","dateFrom":"2026-02-01","dateTo":"2026-02-28","unavailabilityType":"transmission"}},"csvExport":{"summary":"Export unavailabilities as CSV","value":{"region":"Germany","dateFrom":"2026-02-01","dateTo":"2026-02-07","format":"csv"}}}}}}}},"/api/entsoe/physical-flows":{"post":{"summary":"Query physical cross-border electricity flows between countries/bidding zones","tags":["ENTSO-E"],"operationId":"entsoe_physicalFlows","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"✅ FULLY WORKING - Import/export dependency monitoring, grid stress assessment. Returns hourly or daily cross-border electricity flows with statistics.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["fromRegion","toRegion","dateFrom","dateTo"],"properties":{"fromRegion":{"type":"string","description":"Source country (export from)","example":"France"},"toRegion":{"type":"string","description":"Target country (import to)","example":"Germany"},"dateFrom":{"type":"string","description":"Start date","example":"2026-02-01"},"dateTo":{"type":"string","description":"End date","example":"2026-02-07"},"resolution":{"type":"string","enum":["hourly","daily"],"description":"Time resolution","default":"hourly"},"includeStatistics":{"type":"boolean","default":true},"format":{"type":"string","enum":["json","csv","xlsx","xls"],"description":"Output format. \"csv\" and \"xls\"/\"xlsx\" trigger a file download.","default":"json"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"franceToGermany":{"summary":"France → Germany hourly flows","value":{"fromRegion":"France","toRegion":"Germany","dateFrom":"2026-02-01","dateTo":"2026-02-03","resolution":"hourly","includeStatistics":true}},"norwayToGermany":{"summary":"Norway → Germany daily aggregation","value":{"fromRegion":"Norway","toRegion":"Germany","dateFrom":"2026-01-01","dateTo":"2026-01-31","resolution":"daily"}},"polandToGermany":{"summary":"Poland → Germany (import dependency)","value":{"fromRegion":"Poland","toRegion":"Germany","dateFrom":"2026-02-01","dateTo":"2026-02-07","resolution":"hourly"}}}}}}}},"/api/entsoe/actual-generation":{"post":{"summary":"Query actual electricity generation by production type","tags":["ENTSO-E"],"operationId":"entsoe_actualGeneration","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response with actual generation data by PSR type","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"region":{"type":"string"},"eicCode":{"type":"string"},"period":{"type":"object","properties":{"from":{"type":"string"},"to":{"type":"string"}}},"resolution":{"type":"string","example":"PT15M"},"generation":{"type":"array","items":{"type":"object","properties":{"timestamp":{"type":"string"},"psrType":{"type":"string"},"psrName":{"type":"string"},"generationMW":{"type":"number"}}}},"statistics":{"type":"object","properties":{"totalGenerationMWh":{"type":"number"},"byPSRType":{"type":"object"}}},"metadata":{"type":"object","properties":{"source":{"type":"string"},"documentType":{"type":"string"},"queryTime":{"type":"string"},"dataPoints":{"type":"integer"},"toolName":{"type":"string"},"timestamp":{"type":"string"}}}}}},"text/csv":{"description":"CSV download (when format=csv)","schema":{"type":"string"}},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":{"description":"Excel XLSX download (when format=xlsx or format=xls)","schema":{"type":"string","format":"binary"}}}}},"description":"✅ FULLY WORKING - Energy mix analysis, renewable share monitoring, forecast validation. Returns actual generation data by PSR type (solar, wind, gas, nuclear, etc.).","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["region","dateFrom","dateTo"],"properties":{"region":{"type":"string","description":"Country name","example":"Germany"},"dateFrom":{"type":"string","description":"Start date","example":"2026-02-01"},"dateTo":{"type":"string","description":"End date","example":"2026-02-03"},"psrType":{"type":"string","description":"Optional: Filter by PSR type (B16=Solar, B19=Wind Onshore, B18=Wind Offshore, B14=Nuclear, B04=Gas, B05=Coal)","example":"B16"},"resolution":{"type":"string","enum":["hourly","daily"],"default":"hourly"},"includeStatistics":{"type":"boolean","default":true},"format":{"type":"string","enum":["json","csv","xlsx","xls"],"description":"Output format. \"csv\" and \"xls\"/\"xlsx\" trigger a file download.","default":"json"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"allSources":{"summary":"All generation types","value":{"region":"Germany","dateFrom":"2026-02-01","dateTo":"2026-02-03","resolution":"hourly","includeStatistics":true}},"solarOnly":{"summary":"Solar generation only","value":{"region":"Spain","dateFrom":"2026-02-01","dateTo":"2026-02-07","psrType":"B16","resolution":"daily"}},"windDaily":{"summary":"Wind onshore daily aggregation","value":{"region":"Denmark","dateFrom":"2026-01-01","dateTo":"2026-01-31","psrType":"B19","resolution":"daily"}}}}}}}},"/api/entsoe/wind-solar-forecast":{"post":{"summary":"Day-ahead wind and solar generation forecasts","tags":["ENTSO-E"],"operationId":"entsoe_windSolarForecast","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response with wind and solar forecasts","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":true},"region":{"type":"string","example":"Germany/Luxembourg"},"eicCode":{"type":"string","example":"10Y1001A1001A83F"},"period":{"type":"object","properties":{"from":{"type":"string","example":"2026-02-08"},"to":{"type":"string","example":"2026-02-10"}}},"forecastType":{"type":"string","enum":["wind","solar","both"]},"forecasts":{"type":"array","items":{"type":"object","properties":{"timestamp":{"type":"string","format":"date-time"},"windOnshore":{"type":"number"},"windOffshore":{"type":"number"},"solar":{"type":"number"},"total":{"type":"number"}}}},"statistics":{"type":"object","properties":{"totalForecastMWh":{"type":"number"},"avgForecastMW":{"type":"number"},"maxForecastMW":{"type":"number"},"minForecastMW":{"type":"number"},"byType":{"type":"object"}}},"metadata":{"type":"object","properties":{"source":{"type":"string","example":"ENTSO-E Transparency Platform"},"documentType":{"type":"string","example":"A69"},"queryTime":{"type":"string","format":"date-time"},"dataPoints":{"type":"integer"},"toolName":{"type":"string"},"timestamp":{"type":"string","format":"date-time"}}}}}},"text/csv":{"description":"CSV download (when format=csv)","schema":{"type":"string"}},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":{"description":"Excel XLSX download (when format=xlsx or format=xls)","schema":{"type":"string","format":"binary"}}}}},"description":"✅ FULLY WORKING - Renewable energy planning, grid balancing, trading strategies. Returns day-ahead forecasts for wind and solar generation.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["region","dateFrom","dateTo"],"properties":{"region":{"type":"string","description":"Country name","example":"Germany"},"dateFrom":{"type":"string","description":"Start date (can be future dates for forecasts)","example":"2026-02-08"},"dateTo":{"type":"string","description":"End date","example":"2026-02-14"},"forecastType":{"type":"string","enum":["wind","solar","both"],"description":"Forecast type filter","default":"both"},"includeStatistics":{"type":"boolean","default":true},"format":{"type":"string","enum":["json","csv","xlsx","xls"],"description":"Output format. \"csv\" and \"xls\"/\"xlsx\" trigger a file download.","default":"json"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"bothWindSolar":{"summary":"Wind and solar forecasts","value":{"region":"Germany","dateFrom":"2026-02-08","dateTo":"2026-02-10","forecastType":"both","includeStatistics":true}},"windOnly":{"summary":"Wind forecast only","value":{"region":"Denmark","dateFrom":"2026-02-08","dateTo":"2026-02-14","forecastType":"wind"}},"solarOnly":{"summary":"Solar forecast only","value":{"region":"Spain","dateFrom":"2026-02-08","dateTo":"2026-02-14","forecastType":"solar"}},"csvExport":{"summary":"Export wind/solar forecast as CSV","value":{"region":"Germany","dateFrom":"2026-02-08","dateTo":"2026-02-14","format":"csv"}}}}}}}},"/api/entsoe/load-forecast":{"post":{"summary":"Day-ahead electricity load (demand) forecasts","tags":["ENTSO-E"],"operationId":"entsoe_loadForecast","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Load forecast data retrieved successfully","content":{"application/json":{"schema":{"type":"object"}},"text/csv":{"description":"CSV download (when format=csv)","schema":{"type":"string"}},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":{"description":"Excel XLSX download (when format=xlsx or format=xls)","schema":{"type":"string","format":"binary"}}}}},"description":"✅ FULLY WORKING - Grid planning, demand forecasting for trading, peak load management. Returns day-ahead load/demand forecasts.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["region","dateFrom","dateTo"],"properties":{"region":{"type":"string","description":"Country name","example":"Germany"},"dateFrom":{"type":"string","description":"Start date (can be future dates for forecasts)","example":"2026-02-08"},"dateTo":{"type":"string","description":"End date","example":"2026-02-14"},"resolution":{"type":"string","enum":["hourly","daily"],"default":"hourly"},"includeStatistics":{"type":"boolean","default":true},"format":{"type":"string","enum":["json","csv","xlsx","xls"],"description":"Output format. \"csv\" and \"xls\"/\"xlsx\" trigger a file download.","default":"json"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"weekHourly":{"summary":"Weekly load forecast (hourly)","value":{"region":"Germany","dateFrom":"2026-02-08","dateTo":"2026-02-14","resolution":"hourly","includeStatistics":true}},"monthDaily":{"summary":"Monthly load forecast (daily aggregation)","value":{"region":"France","dateFrom":"2026-02-08","dateTo":"2026-03-07","resolution":"daily"}},"csvExport":{"summary":"Export load forecast as CSV","value":{"region":"Germany","dateFrom":"2026-02-08","dateTo":"2026-02-14","format":"csv"}}}}}}}},"/api/entsoe/aggregated-generation":{"post":{"summary":"Total actual generation (aggregated across all production types)","tags":["ENTSO-E"],"operationId":"entsoe_aggregatedGeneration","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Aggregated generation data retrieved successfully","content":{"application/json":{"schema":{"type":"object"}},"text/csv":{"description":"CSV download (when format=csv)","schema":{"type":"string"}},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":{"description":"Excel XLSX download (when format=xlsx or format=xls)","schema":{"type":"string","format":"binary"}}}}},"description":"Actual electricity generation aggregated across all production types (no PSR breakdown). Use entsoe_actual_generation for per-type details.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["region","dateFrom","dateTo"],"properties":{"region":{"type":"string","description":"Country name","example":"Germany"},"dateFrom":{"type":"string","description":"Start date","example":"2026-02-01"},"dateTo":{"type":"string","description":"End date","example":"2026-02-03"},"resolution":{"type":"string","enum":["hourly","daily"],"default":"hourly"},"includeStatistics":{"type":"boolean","default":true},"format":{"type":"string","enum":["json","csv","xlsx","xls"],"description":"Output format. \"csv\" and \"xls\"/\"xlsx\" trigger a file download.","default":"json"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"aggregatedHourly":{"summary":"Aggregated generation (hourly)","value":{"region":"Germany","dateFrom":"2026-02-01","dateTo":"2026-02-03","resolution":"hourly","includeStatistics":true}},"aggregatedDaily":{"summary":"Aggregated generation (daily)","value":{"region":"France","dateFrom":"2026-02-01","dateTo":"2026-02-07","resolution":"daily"}},"csvExport":{"summary":"Export aggregated generation as CSV","value":{"region":"Germany","dateFrom":"2026-02-01","dateTo":"2026-02-07","format":"csv"}}}}}}}},"/api/entsoe/wind-solar-actual":{"post":{"summary":"Actual wind (offshore/onshore) and solar generation","tags":["ENTSO-E"],"operationId":"entsoe_windSolarActual","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Actual wind and solar generation data retrieved successfully","content":{"application/json":{"schema":{"type":"object"}},"text/csv":{"description":"CSV download (when format=csv)","schema":{"type":"string"}},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":{"description":"Excel XLSX download (when format=xlsx or format=xls)","schema":{"type":"string","format":"binary"}}}}},"description":"✅ FULLY WORKING - Renewable energy monitoring, forecast validation. Returns actual generation data for wind (onshore/offshore) and solar power.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["region","dateFrom","dateTo"],"properties":{"region":{"type":"string","description":"Country name (e.g., Germany, Denmark, Spain)","example":"Germany"},"dateFrom":{"type":"string","description":"Start date in ISO 8601, YYYYMMDD, or DD.MM.YYYY format","example":"2026-02-01"},"dateTo":{"type":"string","description":"End date (same format as dateFrom)","example":"2026-02-07"},"generationType":{"type":"string","enum":["wind","solar","both"],"description":"Filter by generation type","default":"both"},"includeStatistics":{"type":"boolean","description":"Include generation statistics (total, avg, max)","default":true},"format":{"type":"string","enum":["json","csv","xlsx","xls"],"description":"Output format. \"csv\" and \"xls\"/\"xlsx\" trigger a file download.","default":"json"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"germanySolarWind":{"summary":"Germany: Wind and solar (1 week)","value":{"region":"Germany","dateFrom":"2026-02-01","dateTo":"2026-02-07","generationType":"both","includeStatistics":true}},"denmarkWind":{"summary":"Denmark: Wind only (2 weeks)","value":{"region":"Denmark","dateFrom":"2026-02-01","dateTo":"2026-02-14","generationType":"wind","includeStatistics":true}},"spainSolar":{"summary":"Spain: Solar only (1 month)","value":{"region":"Spain","dateFrom":"01.01.2026","dateTo":"31.01.2026","generationType":"solar"}},"csvExport":{"summary":"Export wind/solar actual as CSV","value":{"region":"Germany","dateFrom":"2026-02-01","dateTo":"2026-02-07","format":"csv"}}}}}}}},"/api/entsoe/generation-forecast":{"post":{"summary":"Day-ahead electricity generation forecasts by production type","tags":["ENTSO-E"],"operationId":"entsoe_generationForecast","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Generation forecast data retrieved successfully","content":{"application/json":{"schema":{"type":"object"}},"text/csv":{"description":"CSV download (when format=csv)","schema":{"type":"string"}},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":{"description":"Excel XLSX download (when format=xlsx or format=xls)","schema":{"type":"string","format":"binary"}}}}},"description":"✅ FULLY WORKING - Comprehensive generation planning, all production types. Returns day-ahead generation forecasts by PSR type.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["region","dateFrom","dateTo"],"properties":{"region":{"type":"string","description":"Country name","example":"Germany"},"dateFrom":{"type":"string","description":"Start date (can be future dates for forecasts)","example":"2026-02-08"},"dateTo":{"type":"string","description":"End date","example":"2026-02-14"},"psrType":{"type":"string","description":"Optional: Filter by PSR type (B16=Solar, B19=Wind Onshore, B14=Nuclear, B04=Gas)","example":"B16"},"includeStatistics":{"type":"boolean","default":true},"format":{"type":"string","enum":["json","csv","xlsx","xls"],"description":"Output format. \"csv\" and \"xls\"/\"xlsx\" trigger a file download.","default":"json"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"allTypesWeek":{"summary":"All generation types (1 week forecast)","value":{"region":"Germany","dateFrom":"2026-02-08","dateTo":"2026-02-14","includeStatistics":true}},"solarForecast":{"summary":"Solar generation forecast only","value":{"region":"Spain","dateFrom":"2026-02-08","dateTo":"2026-02-21","psrType":"B16"}},"nuclearForecast":{"summary":"Nuclear generation forecast","value":{"region":"France","dateFrom":"2026-02-08","dateTo":"2026-03-07","psrType":"B14"}},"csvExport":{"summary":"Export generation forecast as CSV","value":{"region":"Germany","dateFrom":"2026-02-08","dateTo":"2026-02-14","format":"csv"}}}}}}}},"/api/entsoe/psr-types":{"get":{"summary":"Retrieve list of ENTSO-E Production Source Type (PSR) codes","tags":["ENTSO-E"],"operationId":"entsoe_psrTypes","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"List of PSR type codes with names and categories","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"types":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string","example":"B16"},"name":{"type":"string","example":"Solar"},"category":{"type":"string","enum":["renewable","fossil","nuclear","other"]}}}}}},"example":{"success":true,"types":[{"code":"B16","name":"Solar","category":"renewable"},{"code":"B19","name":"Wind Onshore","category":"renewable"},{"code":"B18","name":"Wind Offshore","category":"renewable"},{"code":"B14","name":"Nuclear","category":"nuclear"},{"code":"B04","name":"Fossil Gas","category":"fossil"}]}}}}},"description":"Static reference data for PSR type codes used in generation queries. Common codes: B01=Biomass, B02=Fossil Brown coal/Lignite, B03=Fossil Coal-derived gas, B04=Fossil Gas, B05=Fossil Hard coal, B06=Fossil Oil, B09=Geothermal, B10=Hydro Pumped Storage, B11=Hydro Run-of-river, B12=Hydro Water Reservoir, B13=Marine, B14=Nuclear, B15=Other renewable, B16=Solar, B17=Waste, B18=Wind Offshore, B19=Wind Onshore, B20=Other"}},"/api/evidence-router/route":{"post":{"summary":"Recommend read-only evidence endpoints for a request (never executes, never answers)","tags":["Evidence Router"],"operationId":"evidenceRouterRoute","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Evidence Router response — recommendation, never an executed result or final answer.","content":{"application/json":{"schema":{"type":"object","required":["success","resolved","requiredEvidenceTypes","recommendedEndpoints","coverage","nextStep"],"properties":{"success":{"type":"boolean"},"resolved":{"type":"object","properties":{"kind":{"type":"string","example":"evidence_plan"},"source":{"type":"string","example":"evidence_router"}}},"requiredEvidenceTypes":{"type":"array","items":{"type":"string"}},"recommendedEndpoints":{"type":"array","items":{"type":"object","properties":{"purpose":{"type":"string"},"method":{"type":"string"},"path":{"type":"string"},"query":{"type":"object","additionalProperties":true},"resultKind":{"type":"string"},"semanticFacts":{"type":"array","items":{"type":"string"}},"freshness":{"type":"string"},"granularity":{"type":"string"},"timeRangeSupport":{"type":"boolean"},"requiredInputs":{"type":"array","items":{"type":"string"}},"optionalInputs":{"type":"array","items":{"type":"string"}},"policy":{"type":"object","properties":{"readOnly":{"type":"boolean"},"sideEffects":{"type":"string"},"tenantScoped":{"type":"boolean"},"externalSideEffects":{"type":"boolean"}}}}}},"coverage":{"type":"object","properties":{"coveredEvidenceTypes":{"type":"array","items":{"type":"string"}},"missingEvidenceTypes":{"type":"array","items":{"type":"string"}},"noSubstitution":{"type":"boolean","example":true}}},"nextStep":{"type":"string"}}}}}}},"description":"Infers which evidence type(s) (resultKind, e.g. time_series, asset_table, market_signal) the request needs, then matches them against a curated read-only endpoint catalog. Recommends one or more approved read-only endpoints with fachliche result semantics, and reports coverage/missing evidence types. Never substitutes an unrelated endpoint when the required evidence type is unavailable (coverage.noSubstitution is always true). Never mutates state, never creates process side effects, never synthesizes the final user-facing answer — that remains the responsibility of the consuming agent/orchestrator. Distinct from the Process Intake / Write Boundary contract (POST /api/copilot-process/intents): this action only ever recommends GET/POST read-only lookups, never process/write intents.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["question"],"properties":{"question":{"type":"string","minLength":1,"maxLength":8000,"description":"Natural-language request describing the evidence needed.","example":"Wie hoch ist die CO2-Intensität in den nächsten 24 Stunden in 69168?"},"context":{"type":"object","additionalProperties":true,"description":"Optional canonical input values (location, dateFrom, dateTo, assetType, ...)."},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"timeSeries":{"summary":"Time-series / CO2 evidence request","value":{"question":"Wie hoch ist die CO2-Intensität in den nächsten 24 Stunden in 69168?","context":{"location":"69168"}}},"assetTable":{"summary":"Asset-table evidence request","value":{"question":"Liste aller Solaranlagen in 69168","context":{"assetType":"solar","location":"69168"}}}}}}}}},"/api/ewk-monitoring/anschlussdauer":{"post":{"summary":"Connection waiting times (Anschlussdauer) per VNB – median weeks per voltage level and installation type","tags":["EWK Monitoring (BNetzA)"],"operationId":"ewk_monitoring_anschlussdauer","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Connection duration data retrieved successfully","content":{"application/json":{"example":{"success":true,"data":{"results":[{"vnbName":"STROMDAO Netze GmbH","bnr":"10002345","anschlussdauer_ee_ns_phase1_weeks":14,"anschlussdauer_ee_ns_phase2_weeks":21,"anschlussdauer_ee_ns_total_weeks":35,"rank":"234 / 739"}],"statistics":{"median_weeks":28,"q25_weeks":18,"q75_weeks":42,"min_weeks":4,"max_weeks":104},"total":1}}},"text/csv":{"description":"CSV download (when format=csv)","schema":{"type":"string"}},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":{"description":"Excel XLSX download (when format=xlsx or format=xls)","schema":{"type":"string","format":"binary"}}}}},"description":"Query BNetzA EWK connection-duration data for German distribution grid operators (VNBs).\n\n**Data source:** [vnb-transparenz.de/EWK-Monitoring-BNetzA](https://www.vnb-transparenz.de/EWK-Monitoring-BNetzA) — self-reported annual data from ~820 VNBs.\n\n**BNetzA indicators covered:**\n| Indicator | Description |\n|---|---|\n| 4.3.1 / 4.3.2 | EE-Anlagen NS – Phase 1 (offer) / Phase 2 (commissioning) |\n| 4.3.3 / 4.3.4 | EE-Anlagen MS |\n| 4.3.5 / 4.3.6 | EE-Anlagen HS |\n| 5.3.1 / 5.3.2 | Verbrauchsanlagen NS (wallboxes, heat pumps, storage) |\n| 5.3.3 / 5.3.4 | Verbrauchsanlagen MS |\n| 5.3.5 / 5.3.6 | Verbrauchsanlagen HS |\n\n**Use cases:**\n- Identify slow-connecting VNBs as consulting/software-sales targets\n- §14a EnWG analysis: how quickly does a VNB connect controllable loads?\n- §11 EnWG NEST compliance: benchmark a VNB against the national median\n- Regulatory reporting: connection-time comparison for BNetzA submissions","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"vnbName":{"type":"string","description":"Partial VNB name search (case-insensitive, e.g. \"Netze BW\", \"STROMDAO Netze\")","example":"STROMDAO Netze"},"bnr":{"type":"string","description":"BNetzA operator number for exact lookup","example":"10002345"},"voltageLevel":{"type":"string","enum":["NS","MS","HS","all"],"description":"Voltage level filter: NS = low voltage, MS = medium voltage, HS = high voltage, all = no filter","default":"all","example":"NS"},"installationType":{"type":"string","enum":["EE","Verbrauch","all"],"description":"Installation type: EE = renewable generation, Verbrauch = consumption (wallboxes, heat pumps, storage), all = no filter","default":"all","example":"EE"},"sortBy":{"type":"string","enum":["name","anschlussdauer_asc","anschlussdauer_desc"],"description":"Sort order: anschlussdauer_asc = fastest first, anschlussdauer_desc = slowest first","default":"anschlussdauer_asc","example":"anschlussdauer_asc"},"limit":{"type":"integer","minimum":1,"maximum":820,"default":50,"description":"Maximum number of VNBs to return","example":10},"offset":{"type":"integer","minimum":0,"default":0,"description":"Pagination offset","example":0},"includeRanking":{"type":"boolean","default":true,"description":"Include national ranking (e.g. \"42 / 739\")","example":true},"format":{"type":"string","enum":["json","csv","xlsx","xls"],"description":"Output format. \"csv\" and \"xls\"/\"xlsx\" trigger a file download.","default":"json"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"top10FastestEE_NS":{"summary":"Top 10 fastest VNBs for PV grid connection (NS)","value":{"installationType":"EE","voltageLevel":"NS","sortBy":"anschlussdauer_asc","limit":10}},"stromdaoNetze":{"summary":"Anschlussdauer for a specific VNB","value":{"vnbName":"STROMDAO Netze"}},"wallboxWaiting":{"summary":"§14a-relevant: wallbox connection times NS","value":{"installationType":"Verbrauch","voltageLevel":"NS","sortBy":"anschlussdauer_asc"}},"csvExport":{"summary":"CSV export – all EE connection times","value":{"installationType":"EE","format":"csv"}}}}}}}},"/api/ewk-monitoring/digitalisierungsindex":{"post":{"summary":"Digitalisation index for German VNBs – 5 categories and up to 19 sub-indicators (0–100 %)","tags":["EWK Monitoring (BNetzA)"],"operationId":"ewk_monitoring_digitalisierungsindex","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Digitalisation index data retrieved successfully","content":{"application/json":{"example":{"success":true,"data":{"results":[{"vnbName":"Bayernwerk Netz GmbH","bnr":"10001796","gesamtscore_pct":72.4,"smart_grids_pct":85,"digitale_prozesse_pct":68,"datenmanagement_pct":61.5,"kundenmanagement_pct":74.8,"rank":"45 / 789"}],"statistics":{"median_gesamtscore_pct":52,"q25_pct":38,"q75_pct":67},"total":1}}},"text/csv":{"description":"CSV download (when format=csv)","schema":{"type":"string"}},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":{"description":"Excel XLSX download (when format=xlsx or format=xls)","schema":{"type":"string","format":"binary"}}}}},"description":"Query BNetzA EWK digitalisation scores for German distribution grid operators.\n\n**Categories:**\n| Category | Sub-indicators | Description |\n|---|---|---|\n| `gesamtscore` | c001 | Weighted overall score |\n| `smart_grids` | c002, c006–c008 | Smart grids (NS/MS/HS sensors, automation) |\n| `digitale_prozesse` | c003, c009–c012 | Digital processes & AI |\n| `datenmanagement` | c004, c013–c015 | Data management & analytics |\n| `kundenmanagement` | c005, c016–c019 | Customer portals & self-service |\n| `all` | all 19 | Full profile |\n\n**Scores:** 0–100 % (higher = more digital); raw BNetzA values are 0–1 and normalised to percent here.\n\n**Use cases:**\n- Identify VNBs with low digitalisation → software/consulting sales targets\n- Benchmark a VNB against the national median before a pitch\n- M&A screening: low score + high Anschlussdauer → restructuring candidate\n- ESG reporting: digitisation maturity of owned/regulated DSOs","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"vnbName":{"type":"string","description":"Partial VNB name search","example":"Bayernwerk Netz"},"bnr":{"type":"string","description":"BNetzA operator number for exact lookup","example":"10001796"},"category":{"type":"string","enum":["gesamtscore","smart_grids","digitale_prozesse","datenmanagement","kundenmanagement","all"],"description":"Digitalisation category to return","default":"all","example":"digitale_prozesse"},"sortBy":{"type":"string","enum":["name","score_asc","score_desc"],"description":"Sort order: score_desc = best first, score_asc = worst first","default":"score_desc","example":"score_desc"},"limit":{"type":"integer","minimum":1,"maximum":820,"default":50,"description":"Maximum number of VNBs to return","example":20},"offset":{"type":"integer","minimum":0,"default":0,"description":"Pagination offset","example":0},"includeRanking":{"type":"boolean","default":true,"description":"Include national ranking","example":true},"format":{"type":"string","enum":["json","csv","xlsx","xls"],"description":"Output format. \"csv\" and \"xls\"/\"xlsx\" trigger a file download.","default":"json"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"nationalRanking":{"summary":"National ranking by overall score (top 20)","value":{"sortBy":"score_desc","limit":20}},"aiScore":{"summary":"AI/digital processes score for all VNBs","value":{"category":"digitale_prozesse","sortBy":"score_desc"}},"vnbProfile":{"summary":"Full digitalisation profile for a specific VNB","value":{"vnbName":"Bayernwerk Netz","category":"all"}},"csvExport":{"summary":"CSV export – overall scores","value":{"category":"gesamtscore","format":"csv"}}}}}}}},"/api/ewk-monitoring/umsetzungsquote":{"post":{"summary":"Implementation rate (Umsetzungsquote) for connection requests – share of submitted applications that were realised","tags":["EWK Monitoring (BNetzA)"],"operationId":"ewk_monitoring_umsetzungsquote","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Implementation rate data retrieved successfully","content":{"application/json":{"example":{"success":true,"data":{"results":[{"vnbName":"STROMDAO Netze GmbH","bnr":"10002345","umsetzungsquote_ee_ns_pct":100,"antraege_ee_ns":37,"realisiert_ee_ns":37,"umsetzungsquote_verbrauch_ns_pct":92.9,"antraege_verbrauch_ns":28,"realisiert_verbrauch_ns":26,"rank":"145 / 745"}],"statistics":{"median_ee_ns_pct":97.5,"q25_pct":91,"q75_pct":100},"total":1}}},"text/csv":{"description":"CSV download (when format=csv)","schema":{"type":"string"}},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":{"description":"Excel XLSX download (when format=xlsx or format=xls)","schema":{"type":"string","format":"binary"}}}}},"description":"Query BNetzA EWK implementation rates for German VNBs.\n\n**BNetzA indicators covered:**\n| Field | Indicator | Description |\n|---|---|---|\n| `umsetzungsquote_ee_ns` | c010 | EE-Anlagen NS |\n| `umsetzungsquote_ee_ms` | c020 | EE-Anlagen MS |\n| `umsetzungsquote_ee_hs` | c030 | EE-Anlagen HS |\n| `umsetzungsquote_verbrauch_ns` | c041 | Consumption + storage NS |\n| `umsetzungsquote_verbrauch_ms` | c053 | Consumption + storage MS |\n| `umsetzungsquote_verbrauch_hs` | c064 | Consumption + storage HS |\n\n**Also returned:** Absolute numbers (applications submitted vs. realised).\n\n**Use cases:**\n- Identify VNBs with low realisation rates → potential regulatory pressure or backlog\n- §14a-relevant: how many wallbox/heat-pump applications are actually realised?\n- Compliance screening: low rates may indicate structural bottlenecks\n- Sales: VNBs with large backlogs need process digitalisation","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"vnbName":{"type":"string","description":"Partial VNB name search","example":"E.ON Energie Distribution"},"bnr":{"type":"string","description":"BNetzA operator number for exact lookup","example":"10001796"},"voltageLevel":{"type":"string","enum":["NS","MS","HS","all"],"description":"Voltage level filter","default":"all","example":"NS"},"installationType":{"type":"string","enum":["EE","Verbrauch","all"],"description":"Installation type filter","default":"all","example":"EE"},"sortBy":{"type":"string","enum":["name","rate_asc","rate_desc"],"description":"Sort order: rate_desc = highest rate first, rate_asc = lowest first (problem cases)","default":"rate_desc","example":"rate_asc"},"limit":{"type":"integer","minimum":1,"maximum":820,"default":50,"description":"Maximum number of VNBs to return","example":20},"offset":{"type":"integer","minimum":0,"default":0,"description":"Pagination offset","example":0},"includeRanking":{"type":"boolean","default":true,"description":"Include national ranking","example":true},"format":{"type":"string","enum":["json","csv","xlsx","xls"],"description":"Output format. \"csv\" and \"xls\"/\"xlsx\" trigger a file download.","default":"json"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"lowestEE_NS":{"summary":"VNBs with lowest EE-NS realisation rate (problem cases)","value":{"installationType":"EE","voltageLevel":"NS","sortBy":"rate_asc","limit":20}},"fullVnbProfile":{"summary":"Full realisation profile for a specific VNB","value":{"vnbName":"E.ON Energie Distribution","installationType":"all"}},"section14a":{"summary":"§14a-relevant: consumption/wallbox connections NS","value":{"installationType":"Verbrauch","voltageLevel":"NS"}},"csvExport":{"summary":"CSV export – EE realisation rates","value":{"installationType":"EE","format":"csv"}}}}}}}},"/api/ewk-monitoring/benchmark-vnb":{"post":{"summary":"Full EWK benchmark profile for a single VNB – combines Anschlussdauer, Digitalisierungsindex, and Umsetzungsquote","tags":["EWK Monitoring (BNetzA)"],"operationId":"ewk_monitoring_benchmarkVnb","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"EWK benchmark profile retrieved successfully","content":{"application/json":{"example":{"success":true,"data":{"vnbName":"STROMDAO Netze GmbH","bnr":"10002345","anschlussdauer":{"rank":"234 / 739","ee_ns_total_weeks":35,"verbrauch_ns_total_weeks":17},"digitalisierungsindex":{"rank":"156 / 789","gesamtscore_pct":58.2,"smart_grids_pct":71,"digitale_prozesse_pct":52,"datenmanagement_pct":48.5,"kundenmanagement_pct":61.3},"umsetzungsquote":{"rank":"145 / 745","ee_ns_pct":100,"verbrauch_ns_pct":92.9}}}},"text/csv":{"description":"CSV download (when format=csv)","schema":{"type":"string"}},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":{"description":"Excel XLSX download (when format=xlsx or format=xls)","schema":{"type":"string","format":"binary"}}}}},"description":"Retrieve a complete EWK performance profile for one VNB combining all three BNetzA monitoring dimensions.\n\n**Output sections:**\n1. **Anschlussdauer** – median waiting times (weeks) per voltage level / installation type with national rank\n2. **Digitalisierungsindex** – all 5 category scores (0–100 %) with national rank\n3. **Umsetzungsquote** – application / realisation counts and rates per voltage level / type with national rank\n\n**Output format:** Markdown tables (for LLM/agent readability) + structured JSON for programmatic use.\n\n**Use cases:**\n- Sales pitch preparation: \"Where does the customer stand vs. the national median?\"\n- §11 EnWG NEST: justify network expansion by demonstrating connection-time backlog\n- M&A due diligence: combined performance profile for a target DSO\n- BNetzA submission: self-contained EWK benchmark document","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["vnbName"],"properties":{"vnbName":{"type":"string","description":"VNB name – partial match accepted (e.g. \"STROMDAO Netze GmbH\" or \"STROMDAO Netze\")","example":"STROMDAO Netze"},"bnr":{"type":"string","description":"BNetzA operator number for exact lookup (overrides name match)","example":"10002345"},"format":{"type":"string","enum":["json","csv","xlsx","xls"],"description":"Output format. \"csv\" and \"xls\"/\"xlsx\" trigger a file download.","default":"json"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"stromdaoNetze":{"summary":"Full EWK profile for STROMDAO Netze","value":{"vnbName":"STROMDAO Netze"}},"byBnr":{"summary":"Exact lookup via BNetzA operator number","value":{"vnbName":"Netze BW","bnr":"10001796"}},"csvExport":{"summary":"CSV export of benchmark summary","value":{"vnbName":"Bayernwerk Netz","format":"csv"}}}}}}}},"/api/forecast/generation-forecast":{"post":{"summary":"Weather-based renewable energy generation forecast","tags":["Renewable Energy Forecasting"],"operationId":"forecast_generationForecast","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Forecast generated successfully","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":true},"summary":{"type":"object","properties":{"location":{"type":"string","example":"Netzgebiet SNB935578300972"},"type":{"type":"string","example":"all"},"totalCapacityMW":{"type":"number","example":25.77},"installationCount":{"type":"number","example":2756},"isHistorical":{"type":"boolean","description":"true when startDate is in the past (observed weather data used)","example":false},"dataMode":{"type":"string","enum":["weather_forecast","historical_observation"],"description":"\"weather_forecast\" for future dates, \"historical_observation\" for past dates","example":"weather_forecast"},"forecastPeriod":{"type":"object","properties":{"start":{"type":"string","format":"date-time"},"end":{"type":"string","format":"date-time"}}}}},"forecasts":{"type":"array","items":{"type":"object","properties":{"timestamp":{"type":"string","format":"date-time"},"generationMW":{"type":"number","description":"Forecasted generation in MW"},"capacityFactor":{"type":"number","nullable":true,"description":"Capacity factor (0-1)"},"weather":{"type":"object","properties":{"temperature":{"type":"number","description":"Temperature in °C"},"windSpeed":{"type":"number","description":"Wind speed in m/s"},"solarIrradiance":{"type":"number","description":"Solar irradiance in W/m²"},"cloudCover":{"type":"number","description":"Cloud cover in %"}}}}}},"metadata":{"type":"object","properties":{"toolName":{"type":"string","example":"mastr_generation_forecast"},"timestamp":{"type":"string","format":"date-time"},"weatherDataSource":{"type":"string","example":"Visual Crossing"},"iecStandardApplied":{"type":"string","example":"IEC 61853","description":"IEC 61853 for solar, IEC 61400 for wind"},"cachingEnabled":{"type":"boolean","example":true},"apiCallsUsed":{"type":"number","example":1},"orientationCorrectionApplied":{"type":"boolean","example":true},"portfolioOrientationFactor":{"type":"number","example":0.9712,"description":"Capacity-weighted azimuth+tilt factor from MaStR Hauptausrichtung"},"orientationDataCoverage":{"type":"number","example":0.8341,"description":"Fraction of installations with MaStR orientation data"}}}}},"examples":{"gridOperatorForecast":{"summary":"All EE generation for SNB935578300972","value":{"success":true,"summary":{"location":"Netzgebiet SNB935578300972","type":"all","totalCapacityMW":25.77,"installationCount":2756,"forecastPeriod":{"start":"2026-02-19T00:00:00.000Z","end":"2026-02-26T00:00:00.000Z"}},"forecasts":[{"timestamp":"2026-02-19T00:00:00.000Z","generationMW":0.01,"capacityFactor":null,"weather":{"temperature":4.3,"windSpeed":12.2,"solarIrradiance":30.8,"cloudCover":100}}],"metadata":{"toolName":"mastr_generation_forecast","timestamp":"2026-02-18T23:21:46.848Z"}}}}},"text/csv":{"description":"CSV format with metadata comments (when format=csv)","example":"# Renewable Energy Generation Forecast\n# Location: Netzgebiet SNB935578300972\n# Total Capacity: 25.77 MW\n# Installation Count: 2756\nTimestamp,Generation (MW),Capacity Factor,Temperature (°C),Wind Speed (m/s),Solar Irradiance (W/m²),Cloud Cover (%)\n2026-02-19T00:00:00.000Z,0.01,,4.3,12.2,30.8,100"},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":{"description":"Excel XLSX with Forecast sheet (daily data + weather) and Metadata sheet","schema":{"type":"string","format":"binary"}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"example":{"success":false,"error":{"code":"VALIDATION_ERROR","message":"Invalid forecastDays: must be between 1 and 14"}}}}},"500":{"description":"Server error during forecast generation","content":{"application/json":{"example":{"success":false,"error":{"code":"FORECAST_ERROR","message":"Weather API unavailable"}}}}}},"description":"Regional Solar/Wind generation forecast based on ACTUAL installed capacity from MaStR, combined with weather forecasts from Visual Crossing API.\n\n**How it works:**\n1. Queries MaStR database for ALL installed solar/wind capacity in the specified area\n2. Fetches weather forecast from Visual Crossing API (24h cache, IEC-compliant)\n3. Calculates expected generation using IEC 61853 (solar) / IEC 61400 (wind) standards\n4. Returns daily MW forecast + weather conditions for up to 14 days\n\n**Key Features:**\n- Real installation data from German MaStR registry (3.7M+ installations)\n- IEC standard compliance (IEC 61853 for solar, IEC 61400 for wind)\n- Daily forecasts up to 14 days\n- Filter by grid operator (MaStR ID), federal state, district, municipality, or postal code\n- Optional cross-validation with SMARD data\n\n**Use Cases:**\n- **Grid Operators (VNB/GNB)**: Anticipate feed-in volumes and plan redispatch measures\n- **Energy Suppliers (Stadtwerke)**: Optimize procurement by forecasting local renewable generation\n- **Virtual Power Plants (VPP)**: Aggregate forecasts for trading and balancing markets\n- **Energy Trading**: Intraday and day-ahead market positioning\n\n**Parameters:**\n- **installationType**: \"solar\" (default), \"wind\", or \"all\" (combined solar+wind)\n- **forecastDays**: Forecast period 1-14 days (default: 7)\n- **resolution**: Time resolution — `\"daily\"` (1 point/day, default), `\"hourly\"` (24 pts/day, intraday trading), `\"15min\"` (96 pts/day, §12 StromNZV balancing/scheduling)\n- **gridOperatorMastrId**: MaStR Netzbetreiber-ID (SNB/GNB...) — use cernion_vnb_lookup to resolve BDEW→MaStR\n- **bundesland**: German federal state (e.g., \"Bayern\", \"Baden-Württemberg\")\n- **landkreis**: District/Landkreis name\n- **gemeinde**: Municipality/Gemeinde name\n- **postleitzahl**: 5-digit postal code (e.g., \"69115\")\n- **latitude/longitude**: Coordinates for precise weather data\n- **startDate**: Optional start date (`YYYY-MM-DD`). Omit for default tomorrow behaviour (no breaking change). Past dates retrieve **observed weather data** (Visual Crossing historical observations) — identical IEC calculation, 30-day cache. Response gains `summary.isHistorical` and `summary.dataMode` fields.\n- **includeValidation**: Cross-validate with SMARD data (default: false)\n- **installationMastrNummer**: Single-installation forecast by MaStR unit ID (SEE…=solar, SWE…=wind). **Highest priority** — overrides all regional filters. installationType is auto-derived from prefix.\n- **messlokationId**: Single-installation forecast via Metering Location ID (MeLo, 33 chars, starts with DE). Resolved via NAP table. Priority: installationMastrNummer > messlokationId > gridOperatorMastrId > location.","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"installationType":{"type":"string","enum":["solar","wind","all"],"default":"solar","description":"Installation type to forecast","example":"all"},"forecastDays":{"type":"number","minimum":1,"maximum":14,"default":7,"description":"Number of days to forecast (1-14)","example":7},"resolution":{"type":"string","enum":["daily","hourly","15min"],"default":"daily","description":"Time resolution of forecast output. \"daily\" = 1 pt/day (default); \"hourly\" = 24 pts/day (intraday dispatch/trading); \"15min\" = 96 pts/day (§12 StromNZV balancing/scheduling, linear interpolation between hourly values)","example":"daily"},"gridOperatorMastrId":{"type":"string","description":"MaStR Netzbetreiber-ID (SNB/GNB...). Use cernion_vnb_lookup to resolve BDEW → MaStR ID.","example":"SNB935578300972"},"installationMastrNummer":{"type":"string","description":"MaStR unit ID for single-installation forecast (SEE…=solar, SWE…=wind). Highest priority — overrides all regional filters. installationType is auto-derived from prefix.","example":"SEE984033548619"},"messlokationId":{"type":"string","description":"Metering location ID (MeLo, 33 chars, starts with DE). Resolved via NAP table. Priority: installationMastrNummer > messlokationId > gridOperatorMastrId > location.","example":"DE0010107352900000000000000336372"},"bundesland":{"type":"string","description":"German federal state","example":"Bayern"},"landkreis":{"type":"string","description":"District/Landkreis name","example":"Rhein-Neckar-Kreis"},"gemeinde":{"type":"string","description":"Municipality/Gemeinde name","example":"Heidelberg"},"postleitzahl":{"type":"string","pattern":"^[0-9]{5}$","description":"5-digit postal code","example":"69115"},"latitude":{"type":"number","description":"Latitude for precise weather data","example":49.3988},"longitude":{"type":"number","description":"Longitude for precise weather data","example":8.6724},"startDate":{"type":"string","pattern":"^[0-9]{4}-[0-9]{2}-[0-9]{2}$","description":"Optional start date (YYYY-MM-DD). Omit for default tomorrow behaviour. Past dates switch to historical observation mode (30-day cache, observed weather instead of forecast).","example":"2026-01-15"},"includeValidation":{"type":"boolean","default":false,"description":"Cross-validate forecast with SMARD data","example":false},"format":{"type":"string","enum":["json","csv","xlsx"],"default":"json","description":"Output format","example":"json"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"gridOperatorForecast":{"summary":"Daily EE generation for a grid operator network","value":{"gridOperatorMastrId":"SNB935578300972","installationType":"all","forecastDays":7,"resolution":"daily"}},"hourlyIntraday":{"summary":"Hourly Solar+Wind forecast for Bavaria (intraday trading)","value":{"bundesland":"Bayern","installationType":"all","forecastDays":3,"resolution":"hourly"}},"quarterHourlyBalancing":{"summary":"15-min forecast for §12 StromNZV balancing/scheduling","value":{"postleitzahl":"67063","installationType":"solar","forecastDays":2,"resolution":"15min"}},"solarByPostalCode":{"summary":"Solar forecast for a specific postal code","value":{"postleitzahl":"69115","installationType":"solar","forecastDays":3}},"windBayern":{"summary":"Wind forecast for Bavaria (14 days)","value":{"bundesland":"Bayern","installationType":"wind","forecastDays":14}},"csvExport":{"summary":"Download hourly forecast as CSV","value":{"gridOperatorMastrId":"SNB935578300972","installationType":"all","forecastDays":3,"resolution":"hourly","format":"csv"}},"xlsxExport":{"summary":"Download 15-min forecast as Excel (XLSX)","value":{"bundesland":"Bayern","installationType":"solar","forecastDays":7,"resolution":"15min","format":"xlsx"}},"singleInstallationMastrNr":{"summary":"Single PV installation forecast via MaStR-ID","value":{"installationMastrNummer":"SEE984033548619","forecastDays":3,"resolution":"hourly"}},"singleInstallationMeLo":{"summary":"Single installation forecast via Messlokation (MeLo)","value":{"messlokationId":"DE0010107352900000000000000336372","forecastDays":1,"resolution":"15min"}},"historicalForecast":{"summary":"Historical generation analysis (past date, observed weather)","value":{"gridOperatorMastrId":"SNB935578300972","installationType":"all","startDate":"2026-01-15","forecastDays":7,"resolution":"daily"}}}}}}}},"/api/gas-storage/country-storage":{"post":{"summary":"Current gas storage data for European countries (fill level, injection/withdrawal)","tags":["Gas Storage (AGSI)"],"operationId":"gas_storage_countryStorage","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Gas storage data retrieved successfully","content":{"application/json":{"example":{"success":true,"data":{"country":"DE","gasInStorage":198.45,"gasInStoragePercentage":83.2,"fullCapacity":238.45,"trend":"falling","injection":0,"withdrawal":1234.5,"workingGasVolume":194.5,"consumption":24.3,"coverageDays":8}}}}}},"description":"Get comprehensive gas storage data for European countries from AGSI+ platform.\n\n**Data includes:**\n- Current fill level (% and TWh)\n- Daily injection/withdrawal rates\n- Working gas capacity vs. consumption\n- Days of coverage calculation\n- Operator breakdown (optional)\n\n**Use cases:**\n- Supply security monitoring\n- Winter preparation assessment\n- EU 90% storage mandate compliance tracking","requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["country"],"properties":{"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code (e.g., \"DE\", \"FR\", \"IT\")","example":"DE"},"includeOperators":{"type":"boolean","description":"Include operator breakdown","example":false},"includeFacilities":{"type":"boolean","description":"Include facility-level data","example":false},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"example":{"country":"DE","includeOperators":false,"includeFacilities":false},"examples":{"germanyStorage":{"summary":"Current German gas storage","value":{"country":"DE","includeOperators":false,"includeFacilities":false}},"franceStorage":{"summary":"French storage with operator breakdown","value":{"country":"FR","includeOperators":true,"includeFacilities":false}},"italyStorageFull":{"summary":"Italian storage with full details","value":{"country":"IT","includeOperators":true,"includeFacilities":true}}}}}}}},"/api/gas-storage/operator-storage":{"post":{"summary":"Detailed storage data for a specific storage system operator (SSO)","tags":["Gas Storage (AGSI)"],"operationId":"gas_storage_operatorStorage","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Operator storage data retrieved successfully","content":{"application/json":{"example":{"success":true,"data":{"operatorName":"RWE Gas Storage West","totalCapacity":15.2,"fillPercentage":87.5,"facilities":[{"name":"Epe H-Gas","capacity":6,"fill":5.3,"fillPercentage":88.3},{"name":"Nüttermoor","capacity":9.2,"fill":8,"fillPercentage":87}]}}}}}},"description":"Get detailed storage data for a specific storage system operator including all managed facilities.\n\n**Use EIC codes to identify operators** (e.g., \"21X000000001262B\" for RWE Gas Storage West).\n\n**Data includes:**\n- All managed facilities with individual fill levels\n- Operator-level aggregates\n- Current operations (injection/withdrawal)\n- Technical capacities\n\n**Use cases:**\n- Operator performance monitoring\n- Facility portfolio analysis\n- Commercial due diligence","requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["operatorCode"],"properties":{"operatorCode":{"type":"string","description":"Operator EIC code","example":"21X000000001262B"},"date":{"type":"string","description":"Optional date in YYYY-MM-DD format","example":"2024-01-15"},"includeFacilities":{"type":"boolean","description":"Include facility breakdown","example":true},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"example":{"operatorCode":"21X000000001262B","includeFacilities":true},"examples":{"rweGasStorage":{"summary":"RWE Gas Storage West (Germany)","value":{"operatorCode":"21X000000001262B","includeFacilities":true}},"rweWithDate":{"summary":"RWE Gas Storage on specific date","value":{"operatorCode":"21X000000001262B","date":"2024-01-15","includeFacilities":true}}}}}}}},"/api/gas-storage/historical-data":{"post":{"summary":"Historical time-series data (daily/weekly/monthly) for trend analysis","tags":["Gas Storage (AGSI)"],"operationId":"gas_storage_historicalData","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Historical data retrieved successfully","content":{"application/json":{"example":{"success":true,"data":{"country":"DE","aggregation":"daily","dataPoints":365,"timeSeries":[{"date":"2024-01-01","fillPercentage":95.2,"gasInStorage":226.8},{"date":"2024-01-02","fillPercentage":94.8,"gasInStorage":225.9}]}}},"text/csv":{"description":"CSV download (when format=csv)","schema":{"type":"string"}},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":{"description":"Excel XLSX download (when format=xlsx or format=xls)","schema":{"type":"string","format":"binary"}}}}},"description":"Retrieve historical gas storage time-series data with flexible aggregation.\n\n**Aggregation levels:**\n- daily: Day-by-day granularity\n- weekly: Weekly averages\n- monthly: Monthly aggregates\n\n**Use cases:**\n- Seasonal pattern analysis\n- Forecasting models\n- Year-over-year comparison\n- Anomaly detection","requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["country","from","to"],"properties":{"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code","example":"DE"},"from":{"type":"string","description":"Start date (YYYY-MM-DD)","example":"2024-01-01"},"to":{"type":"string","description":"End date (YYYY-MM-DD)","example":"2024-12-31"},"aggregation":{"type":"string","enum":["daily","weekly","monthly"],"description":"Data aggregation level","example":"daily"},"format":{"type":"string","enum":["json","csv","xlsx","xls"],"description":"Output format. \"csv\" and \"xls\"/\"xlsx\" trigger a file download.","default":"json"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"example":{"country":"DE","from":"2024-01-01","to":"2024-12-31","aggregation":"daily"},"examples":{"germanHistory2024":{"summary":"Full year 2024 daily data for Germany","value":{"country":"DE","from":"2024-01-01","to":"2024-12-31","aggregation":"daily"}},"winterSeasonMonthly":{"summary":"Winter season monthly aggregation","value":{"country":"DE","from":"2024-10-01","to":"2025-03-31","aggregation":"monthly"}},"quarterlyFrance":{"summary":"Q1 weekly data for France","value":{"country":"FR","from":"2024-01-01","to":"2024-03-31","aggregation":"weekly"}},"csvExport":{"summary":"Export historical time-series as CSV","value":{"country":"DE","from":"2024-01-01","to":"2024-12-31","aggregation":"daily","format":"csv"}}}}}}}},"/api/gas-storage/eu-statistics":{"post":{"summary":"EU-wide aggregate statistics (total capacity, fill level, days of coverage)","tags":["Gas Storage (AGSI)"],"operationId":"gas_storage_euStatistics","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"EU statistics retrieved successfully","content":{"application/json":{"example":{"success":true,"data":{"totalCapacity":1030.5,"currentFill":856.2,"fillPercentage":83.1,"averageCoverageDays":92.5,"mandateCompliant":true}}}}}},"description":"Get EU-wide aggregate gas storage statistics.\n\n**Metrics included:**\n- Total EU storage capacity\n- Current fill level (% and TWh)\n- EU average coverage days\n- Country breakdown (optional)\n\n**Use cases:**\n- EU-wide supply security monitoring\n- EU Storage Regulation (90% mandate) compliance\n- Policy impact assessment","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"includeCountryBreakdown":{"type":"boolean","description":"Include per-country breakdown","example":false},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"example":{"includeCountryBreakdown":false},"examples":{"euOverview":{"summary":"EU aggregate statistics (no country breakdown)","value":{"includeCountryBreakdown":false}},"euWithCountries":{"summary":"EU statistics with per-country breakdown","value":{"includeCountryBreakdown":true}}}}}}}},"/api/gas-storage/compare-countries":{"post":{"summary":"Multi-country comparison (fill levels, capacities, trends)","tags":["Gas Storage (AGSI)"],"operationId":"gas_storage_compareCountries","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Country comparison retrieved successfully","content":{"application/json":{"example":{"success":true,"data":{"metric":"fill_percentage","comparison":[{"country":"DE","value":83.2},{"country":"FR","value":91.5},{"country":"IT","value":88.7}]}}},"text/csv":{"description":"CSV download (when format=csv)","schema":{"type":"string"}},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":{"description":"Excel XLSX download (when format=xlsx or format=xls)","schema":{"type":"string","format":"binary"}}}}},"description":"Compare gas storage metrics across multiple European countries.\n\n**Available metrics:**\n- fill_percentage: Current storage fill level\n- capacity: Total storage capacity\n- withdrawal_rate: Current withdrawal rate\n- coverage_days: Days of supply coverage\n\n**Use cases:**\n- Cross-border supply security analysis\n- Policy effectiveness comparison\n- Regional risk assessment","requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["countries","metric"],"properties":{"countries":{"type":"array","items":{"type":"string"},"description":"Array of country codes (min 2)","example":["DE","FR","IT"]},"metric":{"type":"string","enum":["fill_percentage","capacity","withdrawal_rate","coverage_days"],"description":"Comparison metric","example":"fill_percentage"},"format":{"type":"string","enum":["json","csv","xlsx","xls"],"description":"Output format. \"csv\" and \"xls\"/\"xlsx\" trigger a file download.","default":"json"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"example":{"countries":["DE","FR","IT"],"metric":"fill_percentage"},"examples":{"deFrItFillLevel":{"summary":"Compare fill levels: DE, FR, IT","value":{"countries":["DE","FR","IT"],"metric":"fill_percentage"}},"euBigFiveCapacity":{"summary":"Compare capacity: 5 largest EU storage countries","value":{"countries":["DE","IT","FR","NL","AT"],"metric":"capacity"}},"withdrawalRates":{"summary":"Compare withdrawal rates","value":{"countries":["DE","FR"],"metric":"withdrawal_rate"}},"csvExport":{"summary":"Export country comparison as CSV","value":{"countries":["DE","FR","IT","NL","AT"],"metric":"fill_percentage","format":"csv"}}}}}}}},"/api/gas-storage/storage-trend":{"post":{"summary":"Trend analysis over defined periods (injection/withdrawal patterns, seasonality)","tags":["Gas Storage (AGSI)"],"operationId":"gas_storage_storageTrend","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Trend analysis retrieved successfully","content":{"application/json":{"example":{"success":true,"data":{"country":"DE","period":"month","trend":"decreasing","averageWithdrawal":1250.5,"fillLevelChange":-5.2}}}}}},"description":"Analyze gas storage trends over defined time periods.\n\n**Period options:**\n- week: Last 7 days\n- month: Last 30 days\n- quarter: Last 90 days\n- year: Last 365 days\n\n**Trend metrics:**\n- Injection/withdrawal rates\n- Fill level changes\n- Seasonal patterns\n\n**Use cases:**\n- Seasonal depletion rate calculation\n- Anomaly detection\n- Forecast validation","requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["country","period"],"properties":{"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code","example":"DE"},"period":{"type":"string","enum":["week","month","quarter","year"],"description":"Trend analysis period","example":"month"},"endDate":{"type":"string","description":"Optional end date (YYYY-MM-DD)","example":"2024-12-31"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"example":{"country":"DE","period":"month"},"examples":{"germanMonthlyTrend":{"summary":"German gas storage trend (last 30 days)","value":{"country":"DE","period":"month"}},"germanQuarterTrend":{"summary":"German quarterly trend with end date","value":{"country":"DE","period":"quarter","endDate":"2024-12-31"}},"francYearlyTrend":{"summary":"French full-year trend","value":{"country":"FR","period":"year"}}}}}}}},"/api/gas-storage/supply-security-check":{"post":{"summary":"Supply security assessment (fill level vs. consumption, EU 90% mandate)","tags":["Gas Storage (AGSI)"],"operationId":"gas_storage_supplySecurityCheck","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Supply security assessment completed","content":{"application/json":{"example":{"success":true,"data":{"country":"DE","status":"SECURE","fillPercentage":83.2,"coverageDays":92,"mandateCompliant":true,"recommendation":"No action required"}}}}}},"description":"Assess gas supply security status for a country.\n\n**Security status levels:**\n- SECURE: >70% fill level\n- ADEQUATE: 50-70% fill level\n- WARNING: 30-50% fill level\n- CRITICAL: <30% fill level\n\n**Checks include:**\n- Current fill level vs. historical average\n- EU 90% winter mandate compliance (Nov 1st target)\n- Days of coverage calculation\n- Withdrawal capacity adequacy\n\n**Use cases:**\n- Emergency preparedness planning\n- Policy compliance monitoring\n- Risk management","requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["country"],"properties":{"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code","example":"DE"},"winterMandateCheck":{"type":"boolean","description":"Check EU 90% winter mandate compliance","example":true},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"example":{"country":"DE","winterMandateCheck":true},"examples":{"germanyFull":{"summary":"Germany supply security with EU mandate check","value":{"country":"DE","winterMandateCheck":true}},"franceBasic":{"summary":"France basic security assessment","value":{"country":"FR","winterMandateCheck":false}},"italyWinter":{"summary":"Italy winter preparedness check","value":{"country":"IT","winterMandateCheck":true}}}}}}}},"/api/german-grid/spotprices":{"post":{"summary":"German spotmarket prices (EPEX/EEX) for dynamic tariffs","tags":["German Grid Data"],"operationId":"german_grid_spotprices","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Spot price data retrieved successfully","content":{"application/json":{"schema":{"type":"object"}},"text/csv":{"description":"CSV download (when format=csv)","schema":{"type":"string"}},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":{"description":"Excel XLSX download (when format=xlsx or format=xls)","schema":{"type":"string","format":"binary"}}}}},"description":"Official data from Netztransparenz.de, OAuth2 authenticated. **Automatic ENTSO-E fallback**: when Netztransparenz.de has no data or returns an API error (e.g. for recent/future dates), the endpoint transparently retries with ENTSO-E day-ahead prices (hourly, DE bidding zone). The response is annotated with `data.fallback: true` and `data.fallbackSource: \"entsoe_day_ahead_prices\"` when the fallback is used.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["dateFrom","dateTo"],"properties":{"dateFrom":{"type":"string","description":"Start date. ISO format (YYYY-MM-DD) or relative alias: `today`, `today+N`, `today-N`, `tomorrow`, `yesterday`.","example":"today"},"dateTo":{"type":"string","description":"End date. ISO format (YYYY-MM-DD) or relative alias: `today`, `today+N`, `today-N`, `tomorrow`, `yesterday`.","example":"today"},"includeStatistics":{"type":"boolean","description":"Include price statistics (min/max/avg)","default":true},"format":{"type":"string","enum":["json","csv","xlsx","xls"],"description":"Output format. \"csv\" and \"xls\"/\"xlsx\" trigger a file download.","default":"json"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"weekPrices":{"summary":"Week of spot prices","value":{"dateFrom":"2026-02-01","dateTo":"2026-02-07","includeStatistics":true}},"monthPrices":{"summary":"Full month analysis","value":{"dateFrom":"2026-01-01","dateTo":"2026-01-31","includeStatistics":true}},"singleDay":{"summary":"Single day prices","value":{"dateFrom":"2026-02-01","dateTo":"2026-02-01","includeStatistics":false}},"relativeAlias":{"summary":"Today's prices using relative date alias","value":{"dateFrom":"today","dateTo":"today","includeStatistics":true}},"recentWeek":{"summary":"Last 7 days using relative aliases","value":{"dateFrom":"today-6","dateTo":"today","includeStatistics":true,"format":"csv"}},"csvExport":{"summary":"Export spot prices as CSV","value":{"dateFrom":"2026-02-01","dateTo":"2026-02-07","format":"csv"}}}}}}}},"/api/german-grid/negative-prices":{"post":{"summary":"Negative price analysis for §51 EEG 2023 compliance","tags":["German Grid Data"],"operationId":"german_grid_negativePrices","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Negative price analysis retrieved successfully","content":{"application/json":{"schema":{"type":"object"}},"text/csv":{"description":"CSV download (when format=csv)","schema":{"type":"string"}},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":{"description":"Excel XLSX download (when format=xlsx or format=xls)","schema":{"type":"string","format":"binary"}}}}},"description":"Analyze negative price periods for EEG direct marketing compliance and prosumer advisory. **Critical for §51 EEG 2023 compliance.**\n\n**§51 EEG 2023 Regulation**:\n- **No compensation** during ≥6 consecutive hours of negative spot prices\n- Applies to: EEG direct marketing (Direktvermarktung)\n- Affects: Installations in direct marketing, prosumers considering switch\n- Penalty: Zero compensation for entire negative price period (can be €100-500+ loss per event)\n\n**Logic Parameter (consecutive hours)**:\n- **1 hour**: Any negative price (strictest - for sensitivity analysis)\n- **4 hours**: Pre-warning threshold (monitor market conditions)\n- **6 hours** (**DEFAULT**): §51 EEG 2023 legal threshold\n- **15 hours**: Extreme events only (rare, <5 events/year)\n\n**Use Cases**:\n\n1. **EEG Direct Marketing Compliance** (energy suppliers)\n   - Track zero-compensation periods\n   - Calculate financial impact (MWh affected × market value)\n   - Risk assessment for new direct marketing contracts\n   - Monthly compliance reporting to customers\n\n2. **Prosumer Advisory** (self-consumption vs. direct marketing)\n   - Risk evaluation: \"Is direct marketing worth it for my 30 kWp installation?\"\n   - Calculate: (EEG revenue gain) - (negative price penalties) - (direct marketing costs)\n   - Decision support: Stay in fixed feed-in vs. switch to direct marketing\n   - **Critical threshold: <10 events/year = safe, >20 events/year = risky**\n\n3. **Risk Management** (energy suppliers)\n   - Identify high-risk months (typically: Mar-Apr, Oct-Nov = high wind + low demand)\n   - Portfolio exposure: Total installed capacity × negative price hours\n   - Hedge strategies: Battery storage, demand response, curtailment agreements\n\n4. **Market Analysis**:\n   - Negative price frequency trends (increasing = more renewables, more risk)\n   - Seasonal patterns (spring/fall = highest risk due to wind + low demand)\n   - Geographic differences (northern Germany = more wind = more negative prices)\n\n**Typical Negative Price Events** (Germany):\n- **Frequency**: 10-30 events/year (≥6 consecutive hours)\n- **Seasons**: Spring (Mar-May) and Fall (Sep-Nov) highest risk\n- **Causes**: High renewable generation + low demand + limited export capacity\n- **Duration**: Typically 6-12 hours, occasionally up to 24 hours\n- **Price range**: -50 to -200 €/MWh (extreme: -500 €/MWh)\n\n**Financial Impact Example**:\n- 100 kWp installation in direct marketing\n- 15 negative price events/year × 8 hours avg × 100 kW × 100 €/MWh market price\n- **Potential loss: 12,000 €/year** if not managed\n- Mitigation: Self-consumption during negative prices (reduces loss to ~3,000 €/year)\n\n**Best Practices**:\n- Monitor monthly (identify trends early)\n- Advise prosumers: Direct marketing only if <15 events/year + >30 kWp capacity\n- Include negative price risk in direct marketing contracts\n- Combine with §14a EnWG controllable devices (reduce grid impact during negative prices)","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["dateFrom","dateTo"],"properties":{"dateFrom":{"type":"string","description":"Start date. ISO format (YYYY-MM-DD) or relative alias: `today`, `today+N`, `today-N`, `tomorrow`, `yesterday`.","example":"today-30"},"dateTo":{"type":"string","description":"End date. ISO format (YYYY-MM-DD) or relative alias: `today`, `today+N`, `today-N`, `tomorrow`, `yesterday`.","example":"today"},"logic":{"type":"number","enum":[1,2,3,4,6,15],"description":"Consecutive hours threshold (§51 EEG 2023 uses 6)","default":6},"includeEegCompliance":{"type":"boolean","description":"Include EEG compliance analysis","default":true},"format":{"type":"string","enum":["json","csv","xlsx","xls"],"description":"Output format. \"csv\" and \"xls\"/\"xlsx\" trigger a file download.","default":"json"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"eegCompliance":{"summary":"§51 EEG 2023 compliance check (6h threshold)","value":{"dateFrom":"2026-01-01","dateTo":"2026-01-31","logic":6,"includeEegCompliance":true}},"quarterAnalysis":{"summary":"Q1 negative price analysis","value":{"dateFrom":"2026-01-01","dateTo":"2026-03-31","logic":6,"includeEegCompliance":true}},"customThreshold":{"summary":"Custom 4-hour threshold","value":{"dateFrom":"2026-02-01","dateTo":"2026-02-28","logic":4}},"relativeAlias":{"summary":"Last 30 days using relative date alias","value":{"dateFrom":"today-30","dateTo":"today","logic":6,"includeEegCompliance":true}},"csvExport":{"summary":"Export negative price periods as CSV (Power Automate)","value":{"dateFrom":"today-30","dateTo":"today","logic":6,"includeEegCompliance":true,"format":"csv"}}}}}}}},"/api/german-grid/forecast":{"post":{"summary":"Solar/wind generation forecasts for grid planning and load forecasting","tags":["German Grid Data"],"operationId":"german_grid_forecast","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Generation forecast data retrieved successfully","content":{"application/json":{"schema":{"type":"object"}},"text/csv":{"description":"CSV download (when format=csv)","schema":{"type":"string"}},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":{"description":"Excel XLSX download (when format=xlsx or format=xls)","schema":{"type":"string","format":"binary"}}}}},"description":"Official forecasts from German transmission system operators","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["product","dateFrom","dateTo"],"properties":{"product":{"type":"string","enum":["Solar","Wind"],"description":"Renewable energy type to forecast","example":"Solar"},"dateFrom":{"type":"string","description":"Start date. ISO format (YYYY-MM-DD) or relative alias: `today`, `today+N`, `today-N`, `tomorrow`, `yesterday`.","example":"tomorrow"},"dateTo":{"type":"string","description":"End date. ISO format (YYYY-MM-DD) or relative alias: `today`, `today+N`, `today-N`, `tomorrow`, `yesterday`.","example":"today+6"},"includeActual":{"type":"boolean","description":"Include actual generation data for comparison","default":false},"includeOnline":{"type":"boolean","description":"Include online capacity data","default":false},"format":{"type":"string","enum":["json","csv","xlsx","xls"],"description":"Output format. \"csv\" and \"xls\"/\"xlsx\" trigger a file download.","default":"json"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"solarWeekForecast":{"summary":"Solar generation forecast (1 week)","value":{"product":"Solar","dateFrom":"2026-02-08","dateTo":"2026-02-14","includeActual":false,"includeOnline":true}},"windMonthWithActual":{"summary":"Wind forecast + actual comparison","value":{"product":"Wind","dateFrom":"2026-01-01","dateTo":"2026-01-31","includeActual":true,"includeOnline":true}},"solarDayAhead":{"summary":"Solar day-ahead forecast","value":{"product":"Solar","dateFrom":"2026-02-08","dateTo":"2026-02-08","includeOnline":false}},"relativeAlias":{"summary":"Solar forecast for next 7 days using relative aliases","value":{"product":"Solar","dateFrom":"tomorrow","dateTo":"today+7","includeOnline":true}},"csvExport":{"summary":"Export forecast as CSV","value":{"product":"Solar","dateFrom":"2026-02-08","dateTo":"2026-02-14","format":"csv"}}}}}}}},"/api/german-grid/redispatch":{"post":{"summary":"Redispatch measures and grid congestion analysis","tags":["German Grid Data"],"operationId":"german_grid_redispatch","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Redispatch data retrieved successfully","content":{"application/json":{"schema":{"type":"object"}},"text/csv":{"description":"CSV download (when format=csv)","schema":{"type":"string"}},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":{"description":"Excel XLSX download (when format=xlsx or format=xls)","schema":{"type":"string","format":"binary"}}}}},"description":"Grid congestion analysis, curtailment risk assessment, NEST project justification","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["dateFrom","dateTo"],"properties":{"dateFrom":{"type":"string","description":"Start date. ISO format (YYYY-MM-DD) or relative alias: `today`, `today+N`, `today-N`, `tomorrow`, `yesterday`.","example":"today-30"},"dateTo":{"type":"string","description":"End date. ISO format (YYYY-MM-DD) or relative alias: `today`, `today+N`, `today-N`, `tomorrow`, `yesterday`.","example":"today"},"includeAnalysis":{"type":"boolean","description":"Include congestion analysis","default":true},"includeCurtailment":{"type":"boolean","description":"Include curtailment data","default":false},"format":{"type":"string","enum":["json","csv","xlsx","xls"],"description":"Output format. \"csv\" and \"xls\"/\"xlsx\" trigger a file download.","default":"json"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"monthlyAnalysis":{"summary":"Monthly redispatch analysis","value":{"dateFrom":"2026-01-01","dateTo":"2026-01-31","includeAnalysis":true,"includeCurtailment":true}},"quarterOverview":{"summary":"Q1 congestion overview","value":{"dateFrom":"2026-01-01","dateTo":"2026-03-31","includeAnalysis":true,"includeCurtailment":false}},"weekCurtailment":{"summary":"Weekly curtailment analysis","value":{"dateFrom":"2026-02-01","dateTo":"2026-02-07","includeCurtailment":true}},"relativeAlias":{"summary":"Last 30 days using relative date alias","value":{"dateFrom":"today-30","dateTo":"today","includeAnalysis":true,"includeCurtailment":true}},"csvExport":{"summary":"Export redispatch data as CSV","value":{"dateFrom":"2026-01-01","dateTo":"2026-01-31","format":"csv"}}}}}}}},"/api/grid-operations/grid-data":{"post":{"summary":"Grid operation data (load, frequency, flows, redispatch)","tags":["Grid Operations"],"operationId":"grid_operations_gridData","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"Query real-time and historical grid operation data for network planning, congestion analysis, and frequency stability studies.\n\n**Data Types**:\n- **load**: Grid load profiles (consumption patterns, peak loads, valley periods)\n  - Use cases: Demand forecasting, procurement planning, capacity adequacy assessment\n  - Resolution: 15-minute intervals (96 data points/day)\n\n- **frequency**: Grid frequency measurements (50 Hz nominal, ±0.2 Hz operational range)\n  - Use cases: Frequency stability analysis, ROCOF studies, balancing energy optimization\n  - Critical: <49.8 Hz or >50.2 Hz indicates grid stress\n\n- **flows**: Power flows between grid areas (import/export, cross-border, internal)\n  - Use cases: Grid congestion analysis, redispatch forecasting, interconnector utilization\n  - Identifies: Bottlenecks, structural congestion, trading opportunities\n\n- **redispatch**: Redispatch measures and curtailment events\n  - Use cases: Cost monitoring (€300M+/year in Germany), investment justification, risk assessment for new installations\n  - Critical for: Redispatch 2.0 compliance (installations ≥100 kW), NEST project justification (§11 EnWG)\n\n**Key Applications**:\n- Grid congestion analysis and forecasting\n- Redispatch cost monitoring and optimization\n- Frequency stability studies (TSO coordination)\n- Cross-border capacity utilization\n- Investment planning (grid expansion vs. smart grid solutions)","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["dataType","region","date"],"properties":{"dataType":{"type":"string","enum":["load","frequency","flows","redispatch"],"description":"Type of grid data to retrieve","example":"load"},"region":{"type":"string","description":"Region/grid operator name","example":"Stadtwerke München"},"date":{"type":"string","description":"Date (YYYY-MM-DD)","example":"2026-02-01"},"gridOperator":{"type":"string","description":"Optional: Specific grid operator","example":"Netze BW"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"byBdewCode":{"summary":"Lookup via BDEW code","value":{"bdewCode":"9907473000008","includeAliases":true,"includeTrace":false,"limitCandidates":5}},"byName":{"summary":"Lookup via VNB name","value":{"vnbName":"STROMDAO Netze GmbH","includeAliases":true}}}}}}}},"/api/grid-operations/vnbdigital-search":{"post":{"summary":"Search VNBdigital for address, location, or VNB name","tags":["Grid Operations"],"operationId":"grid_operations_vnbdigitalSearch","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"VNBdigital search result with mixed entry types","content":{"application/json":{"schema":{"type":"object","properties":{"searchTerm":{"type":"string"},"total":{"type":"number"},"results":{"type":"array","items":{"type":"object","description":"Search result entry. profileUrl is additive and only present for VNB entries when available.","properties":{"_id":{"type":"string"},"title":{"type":"string"},"type":{"type":"string"},"profileUrl":{"type":"string","format":"uri","description":"Direct VNBDigital profile URL (optional, VNB entries only)"}},"additionalProperties":true}}},"additionalProperties":true}}}}},"description":"Search VNBdigital to resolve addresses, locations, or VNB names into IDs for follow-up lookups.\n\n**Use Cases:**\n- Identify addresses and locations for VNB lookup\n- Find postcode/community IDs for detailed VNB results\n- VNB search by name","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["searchTerm"],"properties":{"searchTerm":{"type":"string","description":"Address, place, or VNB name","example":"Gerhard-Weiser-Ring 29, 69256 Mauer"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"addressSearch":{"summary":"Address search","value":{"searchTerm":"Gerhard-Weiser-Ring 29, 69256 Mauer"}},"vnbNameSearch":{"summary":"VNB name search","value":{"searchTerm":"Netze BW"}}}}}}}},"/api/grid-operations/vnbdigital-lookup":{"post":{"summary":"Lookup VNBs and planning regions by coordinates/postcode/community","tags":["Grid Operations"],"operationId":"grid_operations_vnbdigitalLookup","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"VNBdigital lookup result with regions and VNB list","content":{"application/json":{"schema":{"type":"object","properties":{"searchType":{"type":"string"},"coordinates":{"type":"string"},"postcodeId":{"type":"string"},"communityId":{"type":"string"},"result":{"type":"object","properties":{"regions":{"type":"array","items":{"type":"object","additionalProperties":true}},"vnbs":{"type":"array","items":{"type":"object","description":"Responsible VNB entry. profileUrl is additive and optional.","properties":{"_id":{"type":"string"},"name":{"type":"string"},"profileUrl":{"type":"string","format":"uri","description":"Direct VNBDigital profile URL (optional, present when available)"},"voltageTypes":{"type":"array","items":{"type":"string"}}},"additionalProperties":true}}},"additionalProperties":true}},"additionalProperties":true}}}}},"description":"Lookup VNBs and planning regions using VNBdigital. Provide one of:\n- **coordinates** for geolocation lookup\n- **postcodeId** from vnbdigital_search\n- **communityId** from vnbdigital_search","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["searchType"],"properties":{"searchType":{"type":"string","enum":["coordinates","postcode","community"],"description":"Lookup type","example":"coordinates"},"coordinates":{"type":"string","description":"Latitude,Longitude (required for coordinates search)","example":"49.34206,8.80022"},"postcodeId":{"type":"string","description":"Postcode ID from vnbdigital_search (required for postcode search)","example":"DEBWhk01000gMZ1V"},"communityId":{"type":"string","description":"Community ID from vnbdigital_search (required for community search)","example":"DEBWhk01000gMZ2A"},"filter":{"type":"object","description":"Optional filter settings","properties":{"onlyNap":{"type":"boolean","description":"Only NAP entries","default":false},"voltageTypes":{"type":"array","items":{"type":"string"},"description":"Filter by voltage types","example":["Niederspannung","Mittelspannung"]},"withRegions":{"type":"boolean","description":"Include planning regions","default":true}},"example":{"onlyNap":false,"voltageTypes":["Niederspannung"],"withRegions":true}},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"coordinateLookup":{"summary":"Coordinates lookup","value":{"searchType":"coordinates","coordinates":"49.34206,8.80022","filter":{"onlyNap":false,"voltageTypes":["Niederspannung","Mittelspannung"],"withRegions":true}}},"postcodeLookup":{"summary":"Postcode lookup","value":{"searchType":"postcode","postcodeId":"DEBWhk01000gMZ1V"}}}}}}}},"/api/grid-operations/control-measures":{"post":{"summary":"Query §14a control measures for a postcode area or VNB","tags":["Grid Operations"],"operationId":"grid_operations_controlMeasures","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"§14a control measures result","content":{"application/json":{"schema":{"type":"object","description":"Raw VNBdigital control measures response"}}}}},"description":"Retrieve §14a Steuerungsmaßnahmen (control measures) data from VNBdigital.\n\nReturns active and planned grid control measures for controllable devices (wallboxes,\nheat pumps, storage systems) in a given postcode area or for a specific VNB.\n\n**Use Cases:**\n- Check §14a implementation status for a service area\n- Identify grid fee reduction eligibility for customers\n- Determine §14a rollout progress for a VNB","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["searchType"],"properties":{"searchType":{"type":"string","enum":["postcode","vnb"],"description":"Search by postcode area or by VNB identifier","example":"postcode"},"postcode":{"type":"string","description":"Postcode (required when searchType is \"postcode\")","example":"69256"},"vnbId":{"type":"string","description":"VNB identifier from vnbdigital_search (required when searchType is \"vnb\")","example":"DEBWhk01000gMZ1V"},"range":{"type":"array","items":{"type":"string"},"description":"Optional area range filter (postcode prefixes or region codes)","default":[],"example":[]},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"byPostcode":{"summary":"Query by postcode","value":{"searchType":"postcode","postcode":"69256"}},"byVnb":{"summary":"Query by VNB ID","value":{"searchType":"vnb","vnbId":"DEBWhk01000gMZ1V"}}}}}}}},"/api/grid-operations/vnb-lookup":{"post":{"summary":"Lookup MaStR ID for a VNB (grid operator) using BDEW code","tags":["Grid Operations"],"operationId":"grid_operations_vnbLookup","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"Resolve BDEW codes to MaStR Netzbetreiber IDs (SNB/GNB) for downstream grid-operator queries. If the primary lookup fails, an optional city param triggers a fallback that extracts the SNB from a sample installation in that city.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"bdew":{"type":"string","description":"BDEW code","example":"9900992720003"},"limit":{"type":"integer","description":"Max market partner matches to consider","default":5,"minimum":1,"maximum":50},"city":{"type":"string","description":"Optional operator city (e.g. from marketPartners contacts). Used as fallback when cernion_vnb_lookup returns no result — extracts SNB from a sample installation in that city.","example":"Hannover"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"defaultLookup":{"summary":"BDEW lookup","value":{"bdew":"9900992720003","limit":5}}}}}}}},"/api/grid-operations/direktvermarkter-lookup":{"post":{"summary":"Lookup Direktvermarkter (direct energy marketer) in MaStR","tags":["Grid Operations"],"operationId":"grid_operations_direktvermarkterLookup","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"Identifies a direct energy marketer (Direktvermarkter) in the MaStR registry and returns portfolio metadata.\n\n**Use Cases**:\n- Identify the MaStR ID of a direct marketer for downstream portfolio queries\n- Get portfolio size (number of installations) and total installed capacity\n- First step of the Direktvermarkter pipeline before fetching all installations\n\n**Direktvermarkter Pipeline**:\n1. `grid-operations.direktvermarkterLookup` (this step) → resolves name/ID → MaStR ID + portfolio stats\n2. `assets.byDirektvermarkter` → fetches all installations in the Direktvermarkter's portfolio\n\n**Known Direktvermarkter examples**: NextKraftwerke, Statkraft, BayWa r.e., EnBW Trading, Encavis\n\n⚠️ **Data Availability Limitation**: `DirektvermarkterMastrNummer` is deliberately excluded from all public MaStR bulk exports (BNetzA policy — commercially sensitive data). The portfolio stats returned by `cernion_direktvermarkter_lookup` are derived from `MarktakteureUndRollen.xml` (actor-level data) and may be incomplete or stale. Cross-referencing to individual installation units by DV company is **not possible** through any public source. The `assets.byDirektvermarkter` step will return 0 results in practice because the `direktvermarkterMastrNummer` field is not populated in the local MongoDB. Use `fernsteuerbarkeitDv: true` + `minCapacity: 100` via `energy-market.installations` as the best available public proxy (Wind/Biomass only).","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Direktvermarkter company name (fuzzy match)","example":"Next Kraftwerke"},"mastrId":{"type":"string","description":"Exact MaStR ID of the Direktvermarkter (ABR… format)","example":"ABR123456789"},"onlyActive":{"type":"boolean","description":"Restrict portfolio stats to active direct marketing contracts","default":false},"limit":{"type":"integer","description":"Maximum number of matches returned (default: 10, max: 100)","default":10,"minimum":1,"maximum":100},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"byName":{"summary":"Lookup by company name","value":{"name":"Next Kraftwerke","limit":5}},"byMastrId":{"summary":"Lookup by exact MaStR ID","value":{"mastrId":"ABR123456789"}}}}}}}},"/api/grid-operations/vnb-lookup-codes":{"post":{"summary":"Canonical VNB lookup with consolidated code aliases","tags":["Grid Operations"],"operationId":"grid_operations_vnbLookupCodes","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"Resolve one VNB identity from BDEW/BNR/name/MaStR and return canonical mapping + alias codes from MCP tool vnb_lookup_codes.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"bdewCode":{"type":"string","example":"9907473000008"},"bnr":{"type":"string","example":"99074730"},"vnbName":{"type":"string","example":"STROMDAO Netze GmbH"},"mastrId":{"type":"string","example":"SNB935578300972"},"includeAliases":{"type":"boolean","default":true},"includeTrace":{"type":"boolean","default":false},"limitCandidates":{"type":"integer","minimum":1,"maximum":20,"default":5},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"byBdewCode":{"summary":"Lookup via BDEW code","value":{"bdewCode":"9907473000008","includeAliases":true,"includeTrace":false,"limitCandidates":5}},"byName":{"summary":"Lookup via operator name","value":{"vnbName":"STROMDAO Netze GmbH","includeAliases":true}}}}}}}},"/api/grid-operations/operator-analysis":{"post":{"summary":"Comprehensive grid operator analysis (installations, feed-in, redispatch)","tags":["Grid Operations"],"operationId":"grid_operations_operatorAnalysis","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"Deep-dive analysis of grid operator network including all connected installations, redispatch potential, feed-in patterns, and grid stress points. **Essential for DSO/TSO network planning and investment prioritization.**\n\n**Analysis Components**:\n\n1. **Connected Installations** (from MaStR registry):\n   - Total count by technology type (PV, wind, storage, biomass, CHP)\n   - Installed capacity breakdown (MW by voltage level: NS/MS/HS)\n   - Geographic distribution (identify concentration hotspots)\n   - Commissioning trends (year-over-year growth)\n\n2. **Redispatch Potential** (Redispatch 2.0 eligible installations ≥100 kW):\n   - Eligible installations count and capacity\n   - By technology (wind=highest curtailment risk, solar=seasonal)\n   - By location (identify congestion-prone areas)\n   - Cost exposure estimation (€/MWh curtailment * at-risk capacity)\n\n3. **Feed-in Patterns** (hourly/seasonal analysis):\n   - Peak feed-in times (solar: 11-14h, wind: variable)\n   - Simultaneity factors (critical for grid dimensioning)\n   - Voltage rise risk assessment (high PV density areas)\n   - Reverse power flow analysis (substation overload risk)\n\n4. **Capacity Distribution Map**:\n   - Hotspot identification (streets/transformers with high concentration)\n   - Grid stress visualization (utilization >85% = investment priority)\n   - White spot analysis (areas with expansion potential)\n   - Transformer capacity vs. connected load\n\n**Use Cases**:\n- **Network Planning**: Identify investment needs (transformers, lines, substations)\n- **Risk Assessment**: Redispatch cost exposure, voltage stability, overload risk\n- **Investment Prioritization**: ROI-driven CAPEX allocation, NEST project justification\n- **Regulatory Compliance**: Redispatch 2.0, §14a EnWG controllable devices\n- **Strategic Planning**: Expansion areas, smart grid solutions, §11 EnWG grid optimization\n\n**Critical Success Factors**:\n- Update monthly (MaStR registry changes frequently)\n- Focus on MS/NS boundary (highest stress points)\n- Prioritize prosumer-dense areas (highest grid impact per km²)\n- Combine with dynamic tariffs (§14a EnWG) for CAPEX reduction","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"gridOperator":{"type":"string","description":"Grid operator name (fuzzy matching)","example":"Stadtwerke München"},"gridOperatorId":{"type":"string","description":"MaStR Netzbetreiber-ID (SNB/GNB...)","example":"SNB935578300972"},"gridOperatorBdewCode":{"type":"string","description":"BDEW code (resolved to MaStR Netzbetreiber)","example":"9900992720003"},"date":{"type":"string","description":"Optional: Specific date for analysis","example":"2026-02-01"},"includeRedispatch":{"type":"boolean","description":"Include redispatch potential analysis","default":true},"includeFeedInPatterns":{"type":"boolean","description":"Include feed-in pattern analysis","default":true},"includeCapacityMap":{"type":"boolean","description":"Include capacity distribution map","default":true},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"fullAnalysis":{"summary":"Full grid operator analysis","value":{"gridOperator":"Stadtwerke München","includeRedispatch":true,"includeFeedInPatterns":true,"includeCapacityMap":true}},"byMastrId":{"summary":"Analysis by MaStR ID","value":{"gridOperatorId":"SNB935578300972","includeRedispatch":true}},"byBdewCode":{"summary":"Analysis by BDEW code","value":{"gridOperatorBdewCode":"9900992720003","includeCapacityMap":true}},"redispatchFocus":{"summary":"Redispatch-focused analysis","value":{"gridOperator":"Netze BW","date":"2026-02-01","includeRedispatch":true,"includeFeedInPatterns":false,"includeCapacityMap":false}},"capacityMapping":{"summary":"Capacity distribution mapping","value":{"gridOperator":"STROMDAO Netze","includeCapacityMap":true,"includeFeedInPatterns":true}}}}}}}},"/api/grid-operations/capacity-utilization":{"post":{"summary":"Network capacity utilization analysis (transformers, lines, heatmaps)","tags":["Grid Operations"],"operationId":"grid_operations_capacityUtilization","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"Calculate equipment loading, temporal heatmaps, and investment prioritization","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["gridOperator"],"properties":{"gridOperator":{"type":"string","description":"Grid operator name","example":"Stadtwerke München"},"date":{"type":"string","description":"Specific date for analysis","example":"2026-02-01"},"startDate":{"type":"string","description":"Start date for time range analysis","example":"2026-01-01"},"endDate":{"type":"string","description":"End date for time range analysis","example":"2026-01-31"},"voltageLevel":{"type":"string","enum":["NS","MS","HS","HöS","all"],"description":"Voltage level filter (NS=low, MS=medium, HS/HöS=high)","default":"all"},"includeHeatmap":{"type":"boolean","description":"Include temporal utilization heatmap","default":true},"includeSimultaneityFactors":{"type":"boolean","description":"Include simultaneity factor analysis","default":true},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"singleDayAnalysis":{"summary":"Single day capacity analysis","value":{"gridOperator":"Stadtwerke München","date":"2026-02-01","voltageLevel":"all","includeHeatmap":true,"includeSimultaneityFactors":true}},"monthlyTrend":{"summary":"Monthly capacity trend","value":{"gridOperator":"Netze BW","startDate":"2026-01-01","endDate":"2026-01-31","voltageLevel":"MS","includeHeatmap":true}},"lowVoltageOnly":{"summary":"Low voltage network analysis","value":{"gridOperator":"STROMDAO Netze","startDate":"2026-02-01","endDate":"2026-02-07","voltageLevel":"NS","includeSimultaneityFactors":true}}}}}}}},"/api/grid-operations/redispatch-export":{"post":{"summary":"Export redispatch 2.0 installations (≥100 kW) per grid operator","tags":["Grid Operations"],"operationId":"grid_operations_redispatchExport","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Redispatch installations exported successfully","content":{"application/json":{"schema":{"type":"object"}},"text/csv":{"description":"CSV download (when format=csv)","schema":{"type":"string"}},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":{"description":"Excel XLSX download (when format=xlsx or format=xls)","schema":{"type":"string","format":"binary"}}}}},"description":"Returns installations that participate in redispatch (async job)","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"gridOperator":{"type":"string","description":"Grid operator name (fuzzy matching)","example":"Stadtwerke München"},"gridOperatorId":{"type":"string","description":"MaStR Netzbetreiber-ID (SNB/GNB...)","example":"SNB935578300972"},"gridOperatorBdewCode":{"type":"string","description":"BDEW code (resolved to MaStR Netzbetreiber)","example":"9900992720003"},"minCapacity":{"type":"number","description":"Minimum capacity in kW","minimum":0,"default":100,"example":100},"types":{"type":"array","items":{"type":"string","enum":["solar","wind","storage","combustion","biomass"]},"description":"Optional: Filter by installation types","example":["solar","wind"]},"autoConfirm":{"type":"boolean","description":"Skip confirmation prompt","default":true},"format":{"type":"string","enum":["json","csv","xlsx","xls"],"description":"Output format. \"csv\" and \"xls\"/\"xlsx\" trigger a file download.","default":"json"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"allTypes":{"summary":"All redispatch installations","value":{"gridOperator":"Stadtwerke München","minCapacity":100,"autoConfirm":true}},"solarWindOnly":{"summary":"Solar and wind only","value":{"gridOperator":"Netze BW","minCapacity":100,"types":["solar","wind"],"autoConfirm":true}},"byMastrId":{"summary":"Export by MaStR ID","value":{"gridOperatorId":"SNB935578300972","minCapacity":100,"autoConfirm":true}},"byMastrIdCsv":{"summary":"Export by MaStR ID — CSV download","value":{"gridOperatorId":"SNB935578300972","minCapacity":100,"autoConfirm":true,"format":"csv"}},"byBdewCode":{"summary":"Export by BDEW code","value":{"gridOperatorBdewCode":"9900992720003","minCapacity":100,"autoConfirm":true}},"largeInstallations":{"summary":"Large installations (>500kW)","value":{"gridOperator":"STROMDAO Netze","minCapacity":500,"autoConfirm":true}}}}}}}},"/api/grid-operations/connection-capacity-check":{"post":{"summary":"Automated grid connection feasibility check (customer self-service)","tags":["Grid Operations"],"operationId":"grid_operations_connectionCapacityCheck","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"6-step analysis: inventory, capacity, simultaneity, decision, alternatives, cost estimates","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["gridOperator","location","installationType","capacityKW"],"properties":{"gridOperator":{"type":"string","description":"Grid operator name","example":"Stadtwerke München"},"location":{"type":"string","description":"Address or postal code","example":"80331"},"installationType":{"type":"string","enum":["solar","wind","storage","wallbox","heat-pump","other"],"description":"Type of installation to connect","example":"solar"},"capacityKW":{"type":"number","description":"Installation capacity in kW","minimum":0,"example":10},"voltageLevel":{"type":"string","enum":["NS","MS","HS"],"description":"Optional: Preferred voltage level (auto-calculated if omitted)","example":"NS"},"simultaneityFactor":{"type":"number","description":"Optional: Simultaneity factor (0-1)","minimum":0,"maximum":1,"example":0.7},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"rooftopSolar":{"summary":"Rooftop solar system (10kW)","value":{"gridOperator":"Stadtwerke München","location":"80331","installationType":"solar","capacityKW":10}},"wallboxCluster":{"summary":"Wallbox cluster (22kW)","value":{"gridOperator":"Netze BW","location":"Hauptstraße 1, 70173 Stuttgart","installationType":"wallbox","capacityKW":22,"simultaneityFactor":0.3}},"heatPump":{"summary":"Heat pump (15kW)","value":{"gridOperator":"STROMDAO Netze","location":"67059","installationType":"heat-pump","capacityKW":15,"voltageLevel":"NS"}},"commercialSolar":{"summary":"Commercial solar (100kW)","value":{"gridOperator":"Stadtwerke Heidelberg","location":"69115","installationType":"solar","capacityKW":100,"voltageLevel":"MS"}}}}}}}},"/api/grid-operations/market-partners":{"get":{"summary":"Search German energy market partners by BDEW code, company name, or city","tags":["Grid Operations"],"operationId":"grid_operations_marketPartners","parameters":[{"name":"query","in":"query","required":true,"schema":{"type":"string","description":"Search term: BDEW code, company name, or city","example":"STROMDAO Netze"}},{"name":"limit","in":"query","required":false,"schema":{"type":"number","description":"Maximum number of results (1-20, default: 10)","default":10,"minimum":1,"maximum":20}},{"name":"format","in":"query","required":false,"schema":{"type":"string","enum":["json","csv","xlsx","xls"],"default":"json","description":"Output format. \"csv\" and \"xls\"/\"xlsx\" trigger a file download."}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"List of matching market partners","content":{"application/json":{"schema":{"type":"object","properties":{"results":{"type":"array","items":{"type":"object","properties":{"bdew":{"type":"string","description":"BDEW code (13 digits)"},"name":{"type":"string","description":"Company name"},"address":{"type":"string","description":"Full address"},"city":{"type":"string"},"postalCode":{"type":"string"},"roles":{"type":"array","items":{"type":"string"},"description":"Market roles (VNB, ÜNB, supplier, etc.)"},"mastrIds":{"type":"object","description":"MaStR operator IDs"}}}},"count":{"type":"number","description":"Number of results returned"}}},"examples":{"stromdaoNetze":{"summary":"Search for STROMDAO Netze","value":{"results":[{"bdew":"9900992720003","name":"STROMDAO Netz GmbH","address":"Industriestraße 7, 67063 Ludwigshafen","city":"Ludwigshafen","postalCode":"67063","roles":["VNB","Messstellenbetreiber"],"mastrIds":{"SNB":"SNB123456789"}}],"count":1}}}},"text/csv":{"description":"CSV download (when format=csv)","schema":{"type":"string"}},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":{"description":"Excel XLSX download (when format=xlsx or format=xls)","schema":{"type":"string","format":"binary"}}}}},"description":"Search for German energy market participants including grid operators, suppliers, and balancing responsible parties.\n\n**Search Types**:\n- **BDEW Code**: 13-digit code (e.g., \"9900992720003\")\n- **Company Name**: Full or partial name (e.g., \"STROMDAO\", \"Stadtwerke Heidelberg\")\n- **City**: Location-based search (e.g., \"Heidelberg\", \"München\")\n\n**Use Cases**:\n- Resolve VNB names to BDEW codes for installations queries\n- Find grid operator contact details\n- Identify market partner roles (VNB, ÜNB, supplier, BKV)\n- Data integration and mapping\n\n**Response Fields**:\n- BDEW code (13 digits)\n- Company name and address\n- Market partner roles\n- Software systems in use\n- Contact information\n- MaStR IDs (SNB, GNB, etc.)\n\n**Example Queries**:\n- \"STROMDAO Netze\" → STROMDAO Netz GmbH with BDEW code\n- \"9900992720003\" → Specific market partner details\n- \"Heidelberg\" → All market partners in Heidelberg"}},"/api/grid-operations/market-actor-directory":{"get":{"summary":"Bulk, paginated directory of German energy market actors (VNB/LIEFERANT/MSB)","tags":["Grid Operations"],"operationId":"grid_operations_marketActorDirectory","parameters":[{"name":"marketRoles","in":"query","required":false,"schema":{"type":"array","items":{"type":"string","enum":["VNB","LIEFERANT","MSB"]},"example":["VNB"]},"description":"Restrict to these market roles; omit for all roles."},{"name":"state","in":"query","required":false,"schema":{"type":"string","example":"Baden-Württemberg"},"description":"Bundesland filter — currently rarely populated in the source data."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"minimum":1,"maximum":500}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"minimum":0}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Paginated market actor list","content":{"application/json":{"example":{"success":true,"data":{"results":[{"entityId":"662063","companyName":"Stadtwerke Gronau GmbH","bdewCodes":["9900244000009"],"marketRoles":["VNB"],"address":{"city":"Gronau","postalCode":"48599","state":null},"website":"http://www.stadtwerke-gronau.de","mastrId":null,"lastUpdated":"2026-07-31T22:35:00.638935+00:00"}],"pagination":{"limit":100,"offset":0,"total":2123}}}}}}},"description":"Enumerates German energy market actors (grid operators, suppliers, metering point operators) with real offset-based pagination — a bulk discovery seed, distinct from marketPartners/vnbLookup which are built for single/few-result identity resolution.\n\n**Use case:** organisation discovery seed list (e.g. iterating public websites for customer-service/FAQ pages) without needing the full MaStR export (~3GB) or scraping the MaStR web UI.\n\n**Response fields per entry:** `entityId`, `companyName`, `bdewCodes[]`, `marketRoles[]`, `address.{city,postalCode,state}`, `website`, `mastrId`, `lastUpdated`.\n\n**Known data gaps (source data, not this endpoint):** `address.state` is null for almost all entries; `mastrId` is only meaningful for VNB and depends on environment data."}},"/api/grid-operations/netzfahrplan/generate":{"post":{"summary":"Generate Netzfahrplan / fNAV feasibility assessment","tags":["Netzfahrplan / fNAV"],"operationId":"grid_operations_netzfahrplanGenerate","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"fNAV feasibility assessment result","content":{"application/json":{"schema":{"type":"object","properties":{"capacityModel":{"type":"object","description":"Normalised capacity model"},"n1Check":{"type":"object","description":"N-1 compliance result"},"feasibility":{"type":"string","enum":["feasible","conditional","copper_needed"],"description":"Technical feasibility verdict"},"governanceStatus":{"type":"string","description":"Governance decision status"},"governanceBlockers":{"type":"array","items":{"type":"string"}},"contractGate":{"type":"object","description":"Explicit contract-gate assessment for grid-signal priority and control evidence"},"governanceArtifact":{"type":"object","nullable":true,"description":"Optional interface-placeholder / HITL artifact created for governance blockers"},"decisionChain":{"type":"array","items":{"type":"object"},"description":"Additive six-step A²MDM trace for the Phase-5 decision"},"proof":{"type":"object","description":"Compact proof/provenance payload for audit-friendly handoff"},"findings":{"type":"array","items":{"type":"object"}},"metadata":{"type":"object"}}}}}}},"description":"Deterministic fNAV feasibility assessment — evaluates whether a flexible Netzanschlussvertrag (§14a EnWG) is a viable alternative to conventional grid expansion.\n\n**Capacity model (Option B):**\n- firmCapacityKW: guaranteed, contractually fixed power\n- flexibleCapacityKW: legally curtailable portion under §14a\n- resultingEffectiveCapacityKW: firm + flexible × (1 − curtailmentFactor)\n\n**N-1 threshold (Option C — hybrid default + override):**\n- Domain defaults: HS=81 MVA, MS=20 MVA, NS=0.63 MVA (env-configurable)\n- tenant/project/scenario overrides are applied in priority order\n- Result always reports thresholdMVA, thresholdSource, and overrideApplied\n\n**Governance (Option B):**\n- Technical feasibility is reported deterministically\n- Final governanceStatus is `requires_governance_decision` until legalStatus=approved AND contractStatus=signed\n- Flexible profiles should explicitly document Netzsignal-Vorrang plus a control-evidence reference for the contract gate","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["requestedCapacityKW"],"properties":{"gridOperatorId":{"type":"string","description":"MaStR grid operator ID","example":"SNB935578300972"},"gridOperatorName":{"type":"string","description":"Grid operator name","example":"STROMDAO Netze"},"voltageLevel":{"type":"string","enum":["NS","MS","HS"],"default":"MS","description":"Voltage level of the connection point"},"requestedCapacityKW":{"type":"number","description":"Requested connection capacity in kW","example":5000},"firmCapacityKW":{"type":"number","description":"Guaranteed firm capacity in kW (defaults to requestedCapacityKW if omitted)","example":3000},"flexibleCapacityKW":{"type":"number","default":0,"description":"Curtailable flex capacity in kW under §14a","example":2000},"curtailmentWindow":{"type":"number","default":0,"description":"Max hours per day the VNB may curtail (0–24)","example":4},"operatingConstraint":{"type":"string","description":"Free-text operating constraint","example":"§14a max 2h/event, 30-min notice"},"signalPriorityPolicy":{"type":"string","description":"Optional contract-gate wording that explicitly documents grid-signal priority over schedule/market optimisation","example":"Netzsignal Vorrang vor Vermarktungs- und Fahrplanoptimierung"},"controlEvidenceRef":{"type":"string","description":"Optional reference to the control/remote-control evidence backing the contract gate","example":"SCADA-ATTACHMENT-42 / Fernwirknachweis 2026-05"},"contractStatus":{"type":"string","description":"Contract status","example":"negotiating"},"legalStatus":{"type":"string","description":"Legal/regulatory status","example":"pending"},"ownerContact":{"type":"string","description":"Responsible owner or contact (required for governance approval)","example":"netzplanung@stromdao.de"},"n1ThresholdOverride":{"type":"object","example":{"project":78},"description":"Override N-1 thresholds (MVA) at tenant/project/scenario level","properties":{"tenant":{"type":"number","example":85},"project":{"type":"number","example":78},"scenario":{"type":"number","example":70}}},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"fNAV hybrid MS":{"value":{"gridOperatorName":"STROMDAO Netze","voltageLevel":"MS","requestedCapacityKW":5000,"firmCapacityKW":3000,"flexibleCapacityKW":2000,"curtailmentWindow":4,"operatingConstraint":"§14a max 2h/event","signalPriorityPolicy":"Netzsignal Vorrang vor Vermarktungs- und Fahrplanoptimierung","controlEvidenceRef":"SCADA-ATTACHMENT-42 / Fernwirknachweis 2026-05","contractStatus":"negotiating","legalStatus":"pending","ownerContact":"netzplanung@stromdao.de"}},"static cap HS with override":{"value":{"gridOperatorId":"SNB935578300972","voltageLevel":"HS","requestedCapacityKW":75000,"firmCapacityKW":75000,"contractStatus":"signed","legalStatus":"approved","n1ThresholdOverride":{"project":78}}}}}}}}},"/api/in-memory-join/join":{"post":{"summary":"Generic in-memory join across datasource and action outputs","tags":["DataSources","Analytics"],"operationId":"in_memory_join_join","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["left","right","join"],"properties":{"left":{"type":"object","example":{"kind":"datasource","sourceId":"fe55ec97-ada3-4272-9e2e-3f494a74f33a"}},"right":{"type":"object","example":{"kind":"action","action":"energy-market.prices"}},"join":{"type":"object","example":{"leftField":"Zeit","rightField":"timestamp","matchMode":"hourly-time"}},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"basicJoin":{"summary":"Join datasource rows with day-ahead market prices by hour","value":{"left":{"kind":"datasource","sourceId":"fe55ec97-ada3-4272-9e2e-3f494a74f33a","privacyContext":"internal"},"right":{"kind":"action","action":"energy-market.prices","params":{"market":"day-ahead","region":"Deutschland","startDate":"2026-03-10","endDate":"2026-03-10"},"dataPath":"data.prices"},"join":{"leftField":"Zeit","rightField":"timestamp","matchMode":"hourly-time","joinType":"left"}}}}}}}}},"/api/in-memory-join/metering-spot-cost":{"post":{"summary":"Join metering datasource with market spot prices and calculate costs","tags":["DataSources","Analytics"],"operationId":"in_memory_join_meteringSpotCost","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["sourceId"],"properties":{"sourceId":{"type":"string","example":"fe55ec97-ada3-4272-9e2e-3f494a74f33a"},"date":{"type":"string","format":"date","example":"2026-03-10"},"startDate":{"type":"string","format":"date","example":"2026-03-10"},"endDate":{"type":"string","format":"date","example":"2026-03-10"},"aggregateBy":{"type":"string","enum":["interval","hourly","daily"],"default":"hourly","example":"hourly"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"hourlyCost":{"summary":"Calculate hourly electricity cost from metering profile","value":{"sourceId":"fe55ec97-ada3-4272-9e2e-3f494a74f33a","date":"2026-03-10","market":"day-ahead","region":"Deutschland","aggregateBy":"hourly"}}}}}}}},"/api/in-memory-join/procurement-vs-spot":{"post":{"summary":"Compare procurement portfolio periods against Day-Ahead spot prices","tags":["DataSources","Analytics"],"operationId":"in_memory_join_procurementVsSpot","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["sourceId"],"properties":{"sourceId":{"type":"string","example":"proc-source-1"},"periodField":{"type":"string","example":"Lieferperiode"},"volumeField":{"type":"string","example":"Menge_MWh"},"priceField":{"type":"string","example":"Preis_EUR_MWh"},"region":{"type":"string","example":"Deutschland"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"beschaffungsportfolio":{"summary":"Compare procurement portfolio against Day-Ahead spot prices","value":{"sourceId":"proc-source-1","periodField":"Lieferperiode","volumeField":"Menge_MWh","priceField":"Preis_EUR_MWh","region":"Deutschland","market":"day-ahead"}}}}}}}},"/api/in-memory-join/benchmark-compare":{"post":{"summary":"Compare inhouse aggregate with external benchmark values","tags":["DataSources","Analytics"],"operationId":"in_memory_join_benchmarkCompare","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["inhouseRows","benchmarkData","domain","aggregationField"],"properties":{"inhouseRows":{"type":"array","items":{"type":"object"},"example":[{"value":12},{"value":18},{"value":15}]},"benchmarkData":{"type":"object","example":{"data":[{"value":"{\"vnb\":\"Netzbetreiber A\",\"score\":14,\"median\":11}"}]}},"domain":{"type":"string","example":"ewk_connection_time"},"aggregationField":{"type":"string","example":"value"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"compareBenchmark":{"summary":"Compare inhouse values against benchmark median","value":{"inhouseRows":[{"value":12},{"value":18},{"value":15}],"benchmarkData":{"data":[{"value":"{\"vnb\":\"Netzbetreiber A\",\"score\":14,\"median\":11}"}]},"domain":"ewk_connection_time","aggregationField":"value"}}}}}}}},"/api/in-memory-join/compare-forecast-actual":{"post":{"summary":"Compare inhouse actual generation with forecasted generation","tags":["DataSources","Analytics"],"operationId":"in_memory_join_compareForecastActual","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["sourceId"],"properties":{"sourceId":{"type":"string","example":"fe55ec97-ada3-4272-9e2e-3f494a74f33a"},"date":{"type":"string","format":"date","example":"2026-03-10"},"startDate":{"type":"string","format":"date","example":"2026-03-10"},"endDate":{"type":"string","format":"date","example":"2026-03-10"},"aggregateBy":{"type":"string","enum":["interval","hourly","daily"],"default":"hourly","example":"hourly"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"compareHourly":{"summary":"Compare actual inhouse generation with forecast on hourly basis","value":{"sourceId":"fe55ec97-ada3-4272-9e2e-3f494a74f33a","date":"2026-03-10","installationMastrNummer":"SEE900000123456","aggregateBy":"hourly"}}}}}}}},"/api/interface-placeholder/mark-gap":{"post":{"summary":"Create an explicit interface placeholder gap","tags":["Interface Placeholder"],"operationId":"interface_placeholder_markGap","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["role","reason"],"properties":{"role":{"type":"string","example":"grid_connection_validator"},"reason":{"type":"string","example":"NEEDS_INTERFACE"},"blockingLevel":{"type":"string","example":"soft"},"replacementCriteria":{"type":"object","example":{"kind":"process","capabilityHint":"znp.assessPortfolio","deadline":"2026-06-01T00:00:00.000Z"},"properties":{"kind":{"type":"string","example":"process"},"capabilityHint":{"type":"string","example":"znp.assessPortfolio"},"deadline":{"type":"string","format":"date-time","example":"2026-06-01T00:00:00.000Z"}}},"signalCodes":{"type":"array","items":{"type":"string"},"example":["NEEDS_INTERFACE","REQUEST_INTERFACE_CONTRACT"]},"placeholderGapKey":{"type":"string","example":"kaufmaennische_freigabe_fnav"},"requiredResolverRoles":{"type":"array","items":{"type":"string"},"example":["ROLE_KAUFMAENNISCHE_LEITUNG","ROLE_NETZPLANUNG"]},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"value":{"role":"grid_connection_validator","reason":"NEEDS_INTERFACE","blockingLevel":"soft","replacementCriteria":{"kind":"process","capabilityHint":"znp.assessPortfolio","deadline":"2026-06-01T00:00:00.000Z"},"signalCodes":["NEEDS_INTERFACE","REQUEST_INTERFACE_CONTRACT"]}}}}}}}},"/api/interface-placeholder/request-evidence":{"post":{"summary":"Return evidence signals required to replace a placeholder","tags":["Interface Placeholder"],"operationId":"interface_placeholder_requestEvidence","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["placeholderId"],"properties":{"placeholderId":{"type":"string","example":"ph_1234567890abcdef"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"value":{"placeholderId":"ph_1234567890abcdef"}}}}}}}},"/api/interface-placeholder/gaps/:placeholderId/status":{"get":{"summary":"Return low-confidence minimal status for a placeholder","tags":["Interface Placeholder"],"operationId":"interface_placeholder_returnMinimalStatus","parameters":[{"name":"placeholderId","in":"path","required":true,"schema":{"type":"string","example":"ph_1234567890abcdef"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/interface-placeholder/gaps":{"get":{"summary":"List tenant-scoped interface placeholder gaps","tags":["Interface Placeholder"],"operationId":"interface_placeholder_listGaps","parameters":[{"name":"reason","in":"query","required":false,"schema":{"type":"string","example":"NEEDS_EVIDENCE"}},{"name":"blockingLevel","in":"query","required":false,"schema":{"type":"string","example":"hard"}},{"name":"role","in":"query","required":false,"schema":{"type":"string","example":"grid_connection_validator"}},{"name":"includeResolved","in":"query","required":false,"schema":{"type":"boolean","default":false}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"maximum":250}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/interface-placeholder/gaps/:placeholderId/resolve":{"post":{"summary":"Resolve an interface placeholder gap","tags":["Interface Placeholder"],"operationId":"interface_placeholder_resolveGap","parameters":[{"name":"placeholderId","in":"path","required":true,"schema":{"type":"string","example":"ph_1234567890abcdef"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["resolution"],"properties":{"resolution":{"example":{"summary":"Manual approval documented","approvedBy":"user-123"},"oneOf":[{"type":"string","example":"Manual approval documented"},{"type":"object","properties":{"summary":{"type":"string","example":"Manual approval documented"},"approvedBy":{"type":"string","example":"user-123"}}}]},"approvedRoles":{"type":"array","items":{"type":"string"},"example":["ROLE_KAUFMAENNISCHE_LEITUNG","ROLE_NETZPLANUNG"]},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"value":{"resolution":{"summary":"Manual approval documented","approvedBy":"user-123"},"approvedRoles":["ROLE_KAUFMAENNISCHE_LEITUNG","ROLE_NETZPLANUNG"]}}}}}}}},"/api/knowledge-rag/query":{"post":{"summary":"Knowledge RAG query (external MCP + local tenant index)","tags":["Knowledge RAG"],"operationId":"knowledge_rag_query","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"RAG query result (internal/direct calls only; external callers receive 202)","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":true},"data":{"type":"object","properties":{"queryType":{"type":"string","example":"semantic"},"collection":{"type":"string","example":"cernion_knowledge_v1"},"returned":{"type":"number","example":2},"results":{"type":"array","items":{"type":"object","properties":{"pointId":{"type":"string","example":"doc-123"},"score":{"type":"number","example":0.91},"referenceText_L0":{"type":"string","example":"Die Festlegung regelt ..."},"vectorText":{"type":"string","example":"Welche Regeln gelten für ..."},"metadata":{"type":"object","properties":{"title":{"type":"string","example":"BK6-24-xxx"},"docType":{"type":"string","example":"Festlegung"},"authority":{"type":"string","example":"BNetzA"},"status":{"type":"string","example":"gültig"}}},"oeoTags":{"type":"array","items":{"type":"string"}}}}}}}}}}}},"202":{"description":"Job accepted and queued for async processing","headers":{"Location":{"schema":{"type":"string"},"description":"Relative URI to job status endpoint (/api/jobs/:jobId/status)"},"Retry-After":{"schema":{"type":"string"},"description":"Suggested polling interval in seconds"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":true},"jobId":{"type":"string","example":"6fd38b12-a3f4-41d5-8f49-e7f9c1b2d3e4"},"status":{"type":"string","enum":["queued"],"example":"queued"},"message":{"type":"string","example":"Job started. Poll /api/jobs/:jobId/status for progress."},"statusUrl":{"type":"string","example":"/api/jobs/6fd38b12-a3f4-41d5-8f49-e7f9c1b2d3e4/status"},"resultUrl":{"type":"string","example":"/api/jobs/6fd38b12-a3f4-41d5-8f49-e7f9c1b2d3e4/result"}}}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":[],"properties":{"queryType":{"type":"string","enum":["semantic","scroll","fetch","collection_info"],"default":"semantic","example":"semantic"},"query":{"type":"string","example":"Welche Festlegungen der BNetzA gibt es zum Netzanschluss?"},"limit":{"type":"number","minimum":1,"maximum":100,"default":10,"example":5},"scoreThreshold":{"type":"number","example":0.4},"dedupe":{"type":"boolean","default":true,"example":true},"rerank":{"type":"boolean","default":true,"example":true},"diversityPerDocument":{"type":"number","minimum":1,"maximum":5,"default":2,"example":2},"rerankWindow":{"type":"number","minimum":1,"maximum":100,"description":"Default: max(30, min(limit * 4, 50))","example":30},"ids":{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"number"}]},"example":["doc-123"]},"offset":{"oneOf":[{"type":"string"},{"type":"number"},{"type":"object"}],"example":"next_offset_token"},"filter":{"type":"object","example":{"must":[{"key":"metadata.docType","match":{"value":"Festlegung"}},{"key":"metadata.authority","match":{"value":"BNetzA"}}]}},"withPayload":{"type":"boolean","default":false,"example":false},"withVectors":{"type":"boolean","default":false,"example":false},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"semantic":{"value":{"queryType":"semantic","query":"Welche BNetzA Festlegungen sind relevant?","collection":"tenant:stadtwerk-a:knowledge","limit":5,"dedupe":true,"rerank":true,"diversityPerDocument":2}}}}}}}},"/api/knowledge-rag/semantic":{"post":{"summary":"Convenience semantic endpoint","tags":["Knowledge RAG"],"operationId":"knowledge_rag_semantic","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"RAG query result (internal/direct calls only; external callers receive 202)","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":true},"data":{"type":"object","properties":{"queryType":{"type":"string","example":"semantic"},"collection":{"type":"string","example":"cernion_knowledge_v1"},"returned":{"type":"number","example":2},"results":{"type":"array","items":{"type":"object","properties":{"pointId":{"type":"string","example":"doc-123"},"score":{"type":"number","example":0.91},"referenceText_L0":{"type":"string","example":"Die Festlegung regelt ..."},"vectorText":{"type":"string","example":"Welche Regeln gelten für ..."},"metadata":{"type":"object","properties":{"title":{"type":"string","example":"BK6-24-xxx"},"docType":{"type":"string","example":"Festlegung"},"authority":{"type":"string","example":"BNetzA"},"status":{"type":"string","example":"gültig"}}},"oeoTags":{"type":"array","items":{"type":"string"}}}}}}}}}}}},"202":{"description":"Job accepted and queued for async processing","headers":{"Location":{"schema":{"type":"string"},"description":"Relative URI to job status endpoint (/api/jobs/:jobId/status)"},"Retry-After":{"schema":{"type":"string"},"description":"Suggested polling interval in seconds"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":true},"jobId":{"type":"string","example":"6fd38b12-a3f4-41d5-8f49-e7f9c1b2d3e4"},"status":{"type":"string","enum":["queued"],"example":"queued"},"message":{"type":"string","example":"Job started. Poll /api/jobs/:jobId/status for progress."},"statusUrl":{"type":"string","example":"/api/jobs/6fd38b12-a3f4-41d5-8f49-e7f9c1b2d3e4/status"},"resultUrl":{"type":"string","example":"/api/jobs/6fd38b12-a3f4-41d5-8f49-e7f9c1b2d3e4/result"}}}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["query"],"properties":{"query":{"type":"string","example":"Welche CAPEX-Regeln gelten?"},"collection":{"type":"string","example":"tenant:stadtwerk-a:knowledge"},"limit":{"type":"number","default":10,"example":5},"scoreThreshold":{"type":"number","example":0.3},"dedupe":{"type":"boolean","default":true,"example":true},"rerank":{"type":"boolean","default":true,"example":true},"diversityPerDocument":{"type":"number","minimum":1,"maximum":5,"default":2,"example":2},"rerankWindow":{"type":"number","minimum":1,"maximum":100,"example":30},"filter":{"type":"object","example":{"must":[]}},"withPayload":{"type":"boolean","default":false,"example":false},"withVectors":{"type":"boolean","default":false,"example":false},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"value":{"query":"Welche CAPEX-Regeln gelten?","collection":"tenant:stadtwerk-a:knowledge","limit":5,"dedupe":true,"rerank":true,"diversityPerDocument":2}}}}}}}},"/api/knowledge-rag/federated-search":{"post":{"summary":"Federated search across Marktkommunikation/regulatory collections","tags":["Knowledge RAG"],"operationId":"knowledge_rag_federatedSearch","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"RAG query result (internal/direct calls only; external callers receive 202)","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":true},"data":{"type":"object","properties":{"queryType":{"type":"string","example":"semantic"},"collection":{"type":"string","example":"cernion_knowledge_v1"},"returned":{"type":"number","example":2},"results":{"type":"array","items":{"type":"object","properties":{"pointId":{"type":"string","example":"doc-123"},"score":{"type":"number","example":0.91},"referenceText_L0":{"type":"string","example":"Die Festlegung regelt ..."},"vectorText":{"type":"string","example":"Welche Regeln gelten für ..."},"metadata":{"type":"object","properties":{"title":{"type":"string","example":"BK6-24-xxx"},"docType":{"type":"string","example":"Festlegung"},"authority":{"type":"string","example":"BNetzA"},"status":{"type":"string","example":"gültig"}}},"oeoTags":{"type":"array","items":{"type":"string"}}}}}}}}}}}},"202":{"description":"Job accepted and queued for async processing","headers":{"Location":{"schema":{"type":"string"},"description":"Relative URI to job status endpoint (/api/jobs/:jobId/status)"},"Retry-After":{"schema":{"type":"string"},"description":"Suggested polling interval in seconds"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":true},"jobId":{"type":"string","example":"6fd38b12-a3f4-41d5-8f49-e7f9c1b2d3e4"},"status":{"type":"string","enum":["queued"],"example":"queued"},"message":{"type":"string","example":"Job started. Poll /api/jobs/:jobId/status for progress."},"statusUrl":{"type":"string","example":"/api/jobs/6fd38b12-a3f4-41d5-8f49-e7f9c1b2d3e4/status"},"resultUrl":{"type":"string","example":"/api/jobs/6fd38b12-a3f4-41d5-8f49-e7f9c1b2d3e4/result"}}}}}}},"description":"Async wrapper for `cernion_willi_federated_search`, which searches in parallel across multiple collections optimized for Marktkommunikation (MaKo/EDIFACT) and regulatory (Festlegungen, BNetzA, etc.) content. Uses job pattern for REST calls (HTTP 202 + /api/jobs polling), same as `query`/`semantic`.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["query"],"properties":{"query":{"type":"string","example":"Welche Fristen gelten für den Lieferantenwechsel nach GPKE?"},"limit":{"type":"number","minimum":1,"maximum":100,"default":10,"example":10},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"summary":"Federated MaKo/Regulatorik query","value":{"query":"Welche Fristen gelten für den Lieferantenwechsel nach GPKE?","limit":10}}}}}}}},"/api/knowledge-rag/scroll":{"post":{"summary":"Convenience scroll endpoint","tags":["Knowledge RAG"],"operationId":"knowledge_rag_scroll","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"RAG query result (internal/direct calls only; external callers receive 202)","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":true},"data":{"type":"object","properties":{"queryType":{"type":"string","example":"semantic"},"collection":{"type":"string","example":"cernion_knowledge_v1"},"returned":{"type":"number","example":2},"results":{"type":"array","items":{"type":"object","properties":{"pointId":{"type":"string","example":"doc-123"},"score":{"type":"number","example":0.91},"referenceText_L0":{"type":"string","example":"Die Festlegung regelt ..."},"vectorText":{"type":"string","example":"Welche Regeln gelten für ..."},"metadata":{"type":"object","properties":{"title":{"type":"string","example":"BK6-24-xxx"},"docType":{"type":"string","example":"Festlegung"},"authority":{"type":"string","example":"BNetzA"},"status":{"type":"string","example":"gültig"}}},"oeoTags":{"type":"array","items":{"type":"string"}}}}}}}}}}}},"202":{"description":"Job accepted and queued for async processing","headers":{"Location":{"schema":{"type":"string"},"description":"Relative URI to job status endpoint (/api/jobs/:jobId/status)"},"Retry-After":{"schema":{"type":"string"},"description":"Suggested polling interval in seconds"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":true},"jobId":{"type":"string","example":"6fd38b12-a3f4-41d5-8f49-e7f9c1b2d3e4"},"status":{"type":"string","enum":["queued"],"example":"queued"},"message":{"type":"string","example":"Job started. Poll /api/jobs/:jobId/status for progress."},"statusUrl":{"type":"string","example":"/api/jobs/6fd38b12-a3f4-41d5-8f49-e7f9c1b2d3e4/status"},"resultUrl":{"type":"string","example":"/api/jobs/6fd38b12-a3f4-41d5-8f49-e7f9c1b2d3e4/result"}}}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"collection":{"type":"string","example":"tenant:stadtwerk-a:knowledge"},"limit":{"type":"number","default":10,"example":10},"offset":{"oneOf":[{"type":"number"},{"type":"string"}],"example":0},"filter":{"type":"object","example":{"must":[]}},"withPayload":{"type":"boolean","default":false,"example":false},"withVectors":{"type":"boolean","default":false,"example":false},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"value":{"collection":"tenant:stadtwerk-a:knowledge","limit":10,"offset":0}}}}}}}},"/api/knowledge-rag/fetch":{"post":{"summary":"Convenience fetch endpoint","tags":["Knowledge RAG"],"operationId":"knowledge_rag_fetch","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"RAG query result (internal/direct calls only; external callers receive 202)","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":true},"data":{"type":"object","properties":{"queryType":{"type":"string","example":"semantic"},"collection":{"type":"string","example":"cernion_knowledge_v1"},"returned":{"type":"number","example":2},"results":{"type":"array","items":{"type":"object","properties":{"pointId":{"type":"string","example":"doc-123"},"score":{"type":"number","example":0.91},"referenceText_L0":{"type":"string","example":"Die Festlegung regelt ..."},"vectorText":{"type":"string","example":"Welche Regeln gelten für ..."},"metadata":{"type":"object","properties":{"title":{"type":"string","example":"BK6-24-xxx"},"docType":{"type":"string","example":"Festlegung"},"authority":{"type":"string","example":"BNetzA"},"status":{"type":"string","example":"gültig"}}},"oeoTags":{"type":"array","items":{"type":"string"}}}}}}}}}}}},"202":{"description":"Job accepted and queued for async processing","headers":{"Location":{"schema":{"type":"string"},"description":"Relative URI to job status endpoint (/api/jobs/:jobId/status)"},"Retry-After":{"schema":{"type":"string"},"description":"Suggested polling interval in seconds"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":true},"jobId":{"type":"string","example":"6fd38b12-a3f4-41d5-8f49-e7f9c1b2d3e4"},"status":{"type":"string","enum":["queued"],"example":"queued"},"message":{"type":"string","example":"Job started. Poll /api/jobs/:jobId/status for progress."},"statusUrl":{"type":"string","example":"/api/jobs/6fd38b12-a3f4-41d5-8f49-e7f9c1b2d3e4/status"},"resultUrl":{"type":"string","example":"/api/jobs/6fd38b12-a3f4-41d5-8f49-e7f9c1b2d3e4/result"}}}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["ids"],"properties":{"ids":{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"number"}]},"example":["doc-1:1:abc123def0"]},"collection":{"type":"string","example":"tenant:stadtwerk-a:knowledge"},"withPayload":{"type":"boolean","default":false,"example":false},"withVectors":{"type":"boolean","default":false,"example":false},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"value":{"collection":"tenant:stadtwerk-a:knowledge","ids":["doc-1:1:abc123def0"]}}}}}}}},"/api/knowledge-rag/collection-info":{"post":{"summary":"Convenience collection info endpoint","tags":["Knowledge RAG"],"operationId":"knowledge_rag_collectionInfo","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"RAG query result (internal/direct calls only; external callers receive 202)","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":true},"data":{"type":"object","properties":{"queryType":{"type":"string","example":"semantic"},"collection":{"type":"string","example":"cernion_knowledge_v1"},"returned":{"type":"number","example":2},"results":{"type":"array","items":{"type":"object","properties":{"pointId":{"type":"string","example":"doc-123"},"score":{"type":"number","example":0.91},"referenceText_L0":{"type":"string","example":"Die Festlegung regelt ..."},"vectorText":{"type":"string","example":"Welche Regeln gelten für ..."},"metadata":{"type":"object","properties":{"title":{"type":"string","example":"BK6-24-xxx"},"docType":{"type":"string","example":"Festlegung"},"authority":{"type":"string","example":"BNetzA"},"status":{"type":"string","example":"gültig"}}},"oeoTags":{"type":"array","items":{"type":"string"}}}}}}}}}}}},"202":{"description":"Job accepted and queued for async processing","headers":{"Location":{"schema":{"type":"string"},"description":"Relative URI to job status endpoint (/api/jobs/:jobId/status)"},"Retry-After":{"schema":{"type":"string"},"description":"Suggested polling interval in seconds"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":true},"jobId":{"type":"string","example":"6fd38b12-a3f4-41d5-8f49-e7f9c1b2d3e4"},"status":{"type":"string","enum":["queued"],"example":"queued"},"message":{"type":"string","example":"Job started. Poll /api/jobs/:jobId/status for progress."},"statusUrl":{"type":"string","example":"/api/jobs/6fd38b12-a3f4-41d5-8f49-e7f9c1b2d3e4/status"},"resultUrl":{"type":"string","example":"/api/jobs/6fd38b12-a3f4-41d5-8f49-e7f9c1b2d3e4/result"}}}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"collection":{"type":"string","example":"tenant:stadtwerk-a:knowledge"},"withPayload":{"type":"boolean","default":false,"example":false},"withVectors":{"type":"boolean","default":false,"example":false},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"value":{"collection":"tenant:stadtwerk-a:knowledge"}}}}}}}},"/api/knowledge-rag/collections":{"post":{"summary":"Create tenant-isolated RAG collection","tags":["Knowledge RAG"],"operationId":"knowledge_rag_createCollection","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","example":"tenant:stadtwerk-a:knowledge"},"chunking":{"type":"object","example":{"mode":"markdown-section"}},"metadata":{"type":"object","example":{"domain":"regulatory"}},"embeddingModelVersion":{"type":"string","default":"default","example":"default"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"value":{"name":"tenant:stadtwerk-a:knowledge","chunking":{"mode":"markdown-section"}}}}}}}}},"/api/knowledge-rag/ingest":{"post":{"summary":"Ingest documents into local RAG index","tags":["Knowledge RAG"],"operationId":"knowledge_rag_ingest","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"202":{"description":"Job accepted and queued for async processing","headers":{"Location":{"schema":{"type":"string"},"description":"Relative URI to job status endpoint (/api/jobs/:jobId/status)"},"Retry-After":{"schema":{"type":"string"},"description":"Suggested polling interval in seconds"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":true},"jobId":{"type":"string","example":"6fd38b12-a3f4-41d5-8f49-e7f9c1b2d3e4"},"status":{"type":"string","enum":["queued"],"example":"queued"},"message":{"type":"string","example":"Job started. Poll /api/jobs/:jobId/status for progress."},"statusUrl":{"type":"string","example":"/api/jobs/6fd38b12-a3f4-41d5-8f49-e7f9c1b2d3e4/status"},"resultUrl":{"type":"string","example":"/api/jobs/6fd38b12-a3f4-41d5-8f49-e7f9c1b2d3e4/result"}}}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["documents"],"properties":{"collection":{"type":"string","example":"tenant:stadtwerk-a:knowledge"},"documents":{"type":"array","items":{"type":"object"},"example":[{"text":"§21a EnWG ..."}]},"chunking":{"type":"object","example":{"mode":"paragraph"}},"metadata":{"type":"object","example":{"source":"internal-policy"}},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"value":{"collection":"tenant:stadtwerk-a:knowledge","documents":[{"id":"doc-1","text":"§21a EnWG ..."}],"chunking":{"mode":"paragraph"}}}}}}}}},"/api/knowledge-rag/ingest/from-datasource":{"post":{"summary":"Ingest from datasource cache/registry","tags":["Knowledge RAG"],"operationId":"knowledge_rag_ingestFromDatasource","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"202":{"description":"Job accepted and queued for async processing","headers":{"Location":{"schema":{"type":"string"},"description":"Relative URI to job status endpoint (/api/jobs/:jobId/status)"},"Retry-After":{"schema":{"type":"string"},"description":"Suggested polling interval in seconds"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":true},"jobId":{"type":"string","example":"6fd38b12-a3f4-41d5-8f49-e7f9c1b2d3e4"},"status":{"type":"string","enum":["queued"],"example":"queued"},"message":{"type":"string","example":"Job started. Poll /api/jobs/:jobId/status for progress."},"statusUrl":{"type":"string","example":"/api/jobs/6fd38b12-a3f4-41d5-8f49-e7f9c1b2d3e4/status"},"resultUrl":{"type":"string","example":"/api/jobs/6fd38b12-a3f4-41d5-8f49-e7f9c1b2d3e4/result"}}}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["sourceId"],"properties":{"collection":{"type":"string","example":"tenant:stadtwerk-a:knowledge"},"sourceId":{"type":"string","example":"source-1"},"limit":{"type":"number","default":200,"example":200},"offset":{"type":"number","default":0,"example":0},"rowsPerDocument":{"type":"number","default":40,"example":40},"chunking":{"type":"object","example":{"mode":"fixed-window"}},"metadata":{"type":"object","example":{"sourceClass":"datasource"}},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"value":{"collection":"tenant:stadtwerk-a:knowledge","sourceId":"source-1","limit":200}}}}}}}},"/api/knowledge-rag/ingest/from-audit":{"post":{"summary":"Ingest self-knowledge from audit/report stores","tags":["Knowledge RAG"],"operationId":"knowledge_rag_ingestFromAudit","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"202":{"description":"Job accepted and queued for async processing","headers":{"Location":{"schema":{"type":"string"},"description":"Relative URI to job status endpoint (/api/jobs/:jobId/status)"},"Retry-After":{"schema":{"type":"string"},"description":"Suggested polling interval in seconds"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":true},"jobId":{"type":"string","example":"6fd38b12-a3f4-41d5-8f49-e7f9c1b2d3e4"},"status":{"type":"string","enum":["queued"],"example":"queued"},"message":{"type":"string","example":"Job started. Poll /api/jobs/:jobId/status for progress."},"statusUrl":{"type":"string","example":"/api/jobs/6fd38b12-a3f4-41d5-8f49-e7f9c1b2d3e4/status"},"resultUrl":{"type":"string","example":"/api/jobs/6fd38b12-a3f4-41d5-8f49-e7f9c1b2d3e4/result"}}}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"collection":{"type":"string","example":"tenant:stadtwerk-a:audit_history"},"auditTypes":{"type":"array","items":{"type":"string"},"example":["cya","redispatch"]},"limit":{"type":"number","default":10,"example":10},"metadata":{"type":"object","example":{"sourceClass":"audit"}},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"value":{"auditTypes":["cya","mastr-quality"],"limit":10}}}}}}}},"/api/knowledge-rag/collections/:name":{"delete":{"summary":"Delete collection + chunks","tags":["Knowledge RAG"],"operationId":"knowledge_rag_removeCollection","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}}},"/api/knowledge-rag/reindex/:collection":{"post":{"summary":"Re-embed collection with new embedding model version","tags":["Knowledge RAG"],"operationId":"knowledge_rag_reindex","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"202":{"description":"Job accepted and queued for async processing","headers":{"Location":{"schema":{"type":"string"},"description":"Relative URI to job status endpoint (/api/jobs/:jobId/status)"},"Retry-After":{"schema":{"type":"string"},"description":"Suggested polling interval in seconds"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":true},"jobId":{"type":"string","example":"6fd38b12-a3f4-41d5-8f49-e7f9c1b2d3e4"},"status":{"type":"string","enum":["queued"],"example":"queued"},"message":{"type":"string","example":"Job started. Poll /api/jobs/:jobId/status for progress."},"statusUrl":{"type":"string","example":"/api/jobs/6fd38b12-a3f4-41d5-8f49-e7f9c1b2d3e4/status"},"resultUrl":{"type":"string","example":"/api/jobs/6fd38b12-a3f4-41d5-8f49-e7f9c1b2d3e4/result"}}}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["collection","embeddingModelVersion"],"properties":{"collection":{"type":"string","example":"tenant:stadtwerk-a:knowledge"},"embeddingModelVersion":{"type":"string","default":"default","example":"embed-v2"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"value":{"collection":"tenant:stadtwerk-a:knowledge","embeddingModelVersion":"embed-v2"}}}}}}}},"/api/knowledge-rag/cutover/:collection":{"post":{"summary":"Cut over active model version in collection","tags":["Knowledge RAG"],"operationId":"knowledge_rag_cutover","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["collection","modelVersion"],"properties":{"collection":{"type":"string","example":"tenant:stadtwerk-a:knowledge"},"modelVersion":{"type":"string","default":"default","example":"embed-v2"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"value":{"collection":"tenant:stadtwerk-a:knowledge","modelVersion":"embed-v2"}}}}}}}},"/api/mcp-server/ask":{"post":{"summary":"MCP meta-tool: cernion_ask","tags":["MCP Server"],"operationId":"mcp_server_ask","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"question":{"type":"string"},"context":{"type":"string"},"sessionId":{"type":"string"},"domain":{"type":"string"},"mode":{"type":"string"},"format":{"type":"string"},"maxEvidence":{"type":"number"},"parentDossierId":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}}},"/api/mcp-server/search":{"post":{"summary":"MCP meta-tool: cernion_search","tags":["MCP Server"],"operationId":"mcp_server_search","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"query":{"type":"string"},"kind":{"type":"string"},"domain":{"type":"string"},"limit":{"type":"number"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}}},"/api/mcp-server/describe":{"post":{"summary":"MCP meta-tool: cernion_describe","tags":["MCP Server"],"operationId":"mcp_server_describe","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"ref":{"type":"string"},"kind":{"type":"string"},"id":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}}},"/api/mcp-server/execute-read":{"post":{"summary":"MCP meta-tool: cernion_execute_read","tags":["MCP Server"],"operationId":"mcp_server_executeRead","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"ref":{"type":"string"},"operationId":{"type":"string"},"method":{"type":"string"},"path":{"type":"string"},"pathParams":{"type":"string"},"query":{"type":"string"},"body":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}}},"/api/mcp-server/run-receipt":{"post":{"summary":"MCP meta-tool: cernion_run_receipt","tags":["MCP Server"],"operationId":"mcp_server_runReceipt","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"receipt":{"type":"string"},"context":{"type":"string"},"input":{"type":"string"},"mode":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}}},"/api/mcp-server/prepare-process":{"post":{"summary":"MCP meta-tool: cernion_prepare_process","tags":["MCP Server"],"operationId":"mcp_server_prepareProcess","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"operationFamily":{"type":"string"},"proposedAction":{"type":"string"},"targetType":{"type":"string"},"targetId":{"type":"string"},"inputSummary":{"type":"string"},"payload":{"type":"string"},"risk":{"type":"string"},"reason":{"type":"string"},"correlationId":{"type":"string"},"decisionFrameId":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}}},"/api/mcp-server/execute-process":{"post":{"summary":"MCP meta-tool: cernion_execute_process","tags":["MCP Server"],"operationId":"mcp_server_executeProcess","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"ref":{"type":"string"},"intentId":{"type":"string"},"action":{"type":"string"},"reason":{"type":"string"},"executedBy":{"type":"string"},"rejectedBy":{"type":"string"},"correlationId":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}}},"/api/mcp-server/process-status":{"post":{"summary":"MCP meta-tool: cernion_process_status","tags":["MCP Server"],"operationId":"mcp_server_processStatus","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"ref":{"type":"string"},"kind":{"type":"string"},"id":{"type":"string"},"list":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}}},"/api/mcp-server/get-context":{"post":{"summary":"MCP meta-tool: cernion_get_context","tags":["MCP Server"],"operationId":"mcp_server_getContext","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"tenantId":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}}},"/api/municipality/lookup":{"get":{"summary":"Look up a German municipality by name, PLZ, or AGS","tags":["Municipality"],"operationId":"municipality_lookup","parameters":[{"name":"municipality","in":"query","required":false,"schema":{"type":"string","example":"Hockenheim"},"description":"Municipality name or 5-digit PLZ."},{"name":"ags","in":"query","required":false,"schema":{"type":"string","example":"08226032"},"description":"Amtlicher Gemeindeschlüssel, takes priority over municipality."},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Municipality profile (found:false if unresolved)","content":{"application/json":{"schema":{"type":"object","properties":{"found":{"type":"boolean"},"name":{"type":"string","nullable":true},"ags":{"type":"string","nullable":true},"state":{"type":"string","nullable":true},"postalCode":{"type":"string","nullable":true},"population":{"type":"integer","nullable":true},"areaSqKm":{"type":"number","nullable":true},"sourceStatus":{"type":"string"}}}}}}},"description":"Resolves a municipality profile (AGS, name, Bundesland, population, PLZ) from a municipality name, a 5-digit PLZ, or an Amtlicher Gemeindeschlüssel (AGS). Offline lookup against Destatis Gemeindegrenzen 2022 (GV100, 10,990 municipalities) — no external API call. found:true with population:null means the name/PLZ resolved but there was no Destatis GV100 match (name+state known only)."}},"/api/municipality/reverse-geocode":{"get":{"summary":"Resolve a German municipality (AGS) from WGS84 coordinates","tags":["Municipality"],"operationId":"municipality_reverseGeocode","parameters":[{"name":"lat","in":"query","required":true,"schema":{"type":"number","example":49.3183}},{"name":"lon","in":"query","required":true,"schema":{"type":"number","example":8.5495}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Municipality profile resolved from coordinates (found:false if unresolved)","content":{"application/json":{"schema":{"type":"object","properties":{"found":{"type":"boolean"},"name":{"type":"string","nullable":true},"ags":{"type":"string","nullable":true},"state":{"type":"string","nullable":true},"postalCode":{"type":"string","nullable":true},"population":{"type":"integer","nullable":true},"areaSqKm":{"type":"number","nullable":true},"sourceStatus":{"type":"string"}}}}}}},"description":"Reverse-geocodes a lat/lon pair via OpenStreetMap Nominatim to a German Amtlicher Gemeindeschlüssel (AGS), then joins it against the same Destatis GV100 profile as GET /municipality/lookup. found:false means the coordinates do not fall inside a German municipality boundary known to Nominatim (e.g. outside Germany, or open water). Live external call — not cached; the public Nominatim instance is rate-limited to ~1 request/second, set NOMINATIM_ENDPOINT for a private mirror under sustained load."}},"/api/nbp-monitor/:bdewCode":{"get":{"summary":"Get Netzbetreiberprüfungs-Monitor snapshot for a VNB","tags":["VNBMonitor","NBPMonitor"],"operationId":"nbp_monitor_snapshot","parameters":[{"name":"bdewCode","in":"path","required":true,"schema":{"type":"string","example":"10002954"},"description":"BDEW registration number of the grid operator"},{"name":"refresh","in":"query","schema":{"type":"boolean","default":false},"description":"Force cache bypass and re-fetch from MaStR"},{"name":"lang","in":"query","schema":{"type":"string","enum":["de","en"],"default":"de"},"description":"Language for labels and disclaimers"},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"NBP Monitor snapshot with KPI 1/2/3","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"Aggregates MaStR installations in status 2955 (NetzbetreiberPrüfung) into three KPIs: Volume (kWp by age class), Risk (€ billing uncertainty), Process (VNB vs. external)."}},"/api/nbp-monitor/parameters":{"get":{"summary":"Get current NBP Monitor KPI 2 risk parameters","tags":["NBPMonitor"],"operationId":"nbp_monitor_getParameters","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Current KPI 2 parameters","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"Returns the active KPI 2 parameters (Volllaststunden and Einspeisevergütung per technology). Returns defaults when no custom parameters have been saved."},"put":{"summary":"Save custom KPI 2 parameters for NBP Monitor (full replace)","tags":["NBPMonitor"],"operationId":"nbp_monitor_setParameters","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Parameters saved","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"Persists custom Volllaststunden and Einspeisevergütung values for all four unit types. Clears all NBP Monitor cache entries so the next poll uses updated parameters.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["parameters"],"properties":{"parameters":{"type":"object","example":{"PV":{"volllaststunden":950,"einspeiseverguetung_ctKWh":8.2},"Wind":{"volllaststunden":1800,"einspeiseverguetung_ctKWh":6.5},"Speicher":{"volllaststunden":500,"einspeiseverguetung_ctKWh":8.2},"Sonstige":{"volllaststunden":800,"einspeiseverguetung_ctKWh":8}},"description":"KPI 2 parameters keyed by unit type (PV/Wind/Speicher/Sonstige)"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}}}}}},"delete":{"summary":"Reset NBP Monitor KPI 2 parameters to defaults","tags":["NBPMonitor"],"operationId":"nbp_monitor_resetParameters","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Parameters reset to defaults","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"Removes the persisted parameters file and reverts to built-in defaults. Clears all NBP Monitor cache entries.","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}}}}}}},"/api/oep/schemas":{"get":{"summary":"List OEP database schemas","tags":["OEP (Open Energy Platform)"],"operationId":"oep_listSchemas","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"Returns the list of available database schemas on the Open Energy Platform. Schemas group related research datasets (e.g. model_draft, scenario, supply). Results are cached for 24 hours."}},"/api/oep/schemas/:schema/tables":{"get":{"summary":"List tables within an OEP schema","tags":["OEP (Open Energy Platform)"],"operationId":"oep_listTables","parameters":[{"name":"schema","in":"path","required":true,"schema":{"type":"string","example":"model_draft"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"Returns all tables available in the given OEP schema. Includes table name and description where provided. Results are cached for 24 hours."}},"/api/oep/tables/:schema/:table/meta":{"get":{"summary":"Get OEP table metadata (columns, types, OEO annotations)","tags":["OEP (Open Energy Platform)"],"operationId":"oep_getTableMeta","parameters":[{"name":"schema","in":"path","required":true,"schema":{"type":"string","example":"model_draft"}},{"name":"table","in":"path","required":true,"schema":{"type":"string","example":"oed_scenario_bundle"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"Returns the column schema (name, data type, description) for an OEP table, including OEMetadata v2.0 annotations where available. Results are cached for 24 hours."}},"/api/oep/tables/:schema/:table/rows":{"get":{"summary":"Query rows from an OEP table","tags":["OEP (Open Energy Platform)"],"operationId":"oep_query","parameters":[{"name":"schema","in":"path","required":true,"schema":{"type":"string","example":"model_draft"}},{"name":"table","in":"path","required":true,"schema":{"type":"string","example":"oed_scenario_bundle"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"minimum":1,"maximum":1000}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"minimum":0}},{"name":"where","in":"query","required":false,"schema":{"type":"string","example":"year=2030"},"description":"OEP server-side filter expression (passed directly to the OEP API)."},{"name":"orderby","in":"query","required":false,"schema":{"type":"string","example":"year"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"Returns up to 1000 rows from the specified OEP table. Supports optional server-side filtering via the `where` parameter (OEP filter syntax, e.g. `year=2030`) and result ordering. Row data is NOT cached — each call fetches live from OEP."}},"/api/oep/energy-tables":{"get":{"summary":"List pre-configured Cernion-relevant OEP tables","tags":["OEP (Open Energy Platform)"],"operationId":"oep_energyTables","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"List of pre-configured OEP tables with Cernion use cases","content":{"application/json":{"schema":{"type":"object","properties":{"tables":{"type":"array","items":{"type":"object","properties":{"schema":{"type":"string","example":"supply"},"table":{"type":"string","example":"ego_dp_res_powerplant"},"description":{"type":"string"},"cernionUseCase":{"type":"string"},"oeoClass":{"type":"string","example":"oeo:PowerPlant"}}}},"count":{"type":"integer","example":5}}}}}}},"description":"Returns the curated list of OEP tables that are directly relevant for the Cernion/VNB context — EU AI Act Art. 12 data provenance, MaStR comparison, residual load validation, and energy scenario planning. No free-text search needed; tables are immediately usable. TRL5→6: demonstrated in relevant energy domain environment."}},"/api/oep/compare-mastr":{"post":{"summary":"Compare OEP research data with MaStR installations for a grid operator","tags":["OEP (Open Energy Platform)"],"operationId":"oep_compareWithMastr","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"OEP and MaStR counts with semantic delta output","content":{"application/json":{"schema":{"type":"object","properties":{"oep":{"type":"object","properties":{"available":{"type":"boolean"},"count":{"type":"integer"},"source":{"type":"string"}}},"mastr":{"type":"object","properties":{"available":{"type":"boolean"},"count":{"type":"integer"},"source":{"type":"string"}}},"delta":{"type":"object","nullable":true,"properties":{"matchedPairs":{"type":"integer"},"mastrOnly":{"type":"integer"},"oepOnly":{"type":"integer"},"totalUnmatched":{"type":"integer"},"capacityDeltaMW":{"type":"number"},"fieldDeltas":{"type":"object"},"topMismatches":{"type":"array","items":{"type":"object"}}}},"oeoMappingNote":{"type":"string"},"_evidence":{"type":"array","items":{"type":"object"}}}}}}},"202":{"description":"Job accepted for large comparison request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"jobId":{"type":"string"},"status":{"type":"string"},"message":{"type":"string"},"statusUrl":{"type":"string"},"resultUrl":{"type":"string"}}}}}}},"description":"Loads OEP table rows and MaStR installations in parallel (Promise.allSettled) and returns a side-by-side semantic delta comparison. Graceful when OEP is offline — oep.available will be false but the MaStR data is still returned. Large requested portfolios (>5000 rows or `limit: \"all\"`) use the standard async job pattern for REST callers.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["gridOperatorId"],"properties":{"gridOperatorId":{"type":"string","description":"MaStR grid operator ID (SNB…)","example":"SNB924510006275"},"oepSchema":{"type":"string","default":"supply","example":"supply"},"oepTable":{"type":"string","default":"ego_dp_res_powerplant","example":"ego_dp_res_powerplant"},"installationType":{"type":"string","default":"solar","enum":["solar","wind","storage","biomass","hydro","combustion","all"],"description":"Installation type for MaStR query. Use \"all\" for an aggregated portfolio comparison."},"limit":{"oneOf":[{"type":"integer","minimum":1},{"type":"string","enum":["all"]}],"default":100},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"stromdaoNetze":{"summary":"Compare OEP renewable plants with STROMDAO Netze MaStR data","value":{"gridOperatorId":"SNB924510006275","oepSchema":"supply","oepTable":"ego_dp_res_powerplant","installationType":"solar","limit":100}},"windComparison":{"summary":"Compare wind installations for a grid operator","value":{"gridOperatorId":"SNB900599182315","installationType":"wind","limit":200}},"allPortfolio":{"summary":"Compare all installation types asynchronously for large portfolios","value":{"gridOperatorId":"SNB924510006275","installationType":"all","limit":"all"}}}}}}}},"/api/oep/search":{"get":{"summary":"Search OEP tables by name or description","tags":["OEP (Open Energy Platform)"],"operationId":"oep_search","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","example":"NEP 2023"},"description":"Search term (minimum 2 characters, case-insensitive)."},{"name":"schema","in":"query","required":false,"schema":{"type":"string","example":"model_draft"},"description":"Restrict search to this OEP schema (optional)."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":20,"minimum":1,"maximum":100}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"Case-insensitive substring search over the curated, Cernion-relevant OEP table catalog (src/oep-tables.js) — not a live full-catalog search against OEP. OEP's own schema/table discovery REST endpoints were removed upstream and no longer respond with JSON, so free-text discovery across the entire platform is not available; use oep.query directly if you already know an exact schema/table pair that is not in the curated list. Optionally scoped to a specific schema."}},"/api/operations-runbook/manifest":{"get":{"summary":"List curated Cernion operations runbooks","tags":["Operations Runbook"],"operationId":"operations_runbook_manifest","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/operations-runbook/day-start-brief":{"post":{"summary":"Build a concise day-start operations brief","tags":["Operations Runbook"],"operationId":"operations_runbook_dayStartBrief","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"correlationId":{"type":"string"},"requestedBy":{"type":"string"},"sinceMinutes":{"type":"number"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}}},"/api/operations-runbook/blocked-work":{"get":{"summary":"List grouped operational blockers for human operators","tags":["Operations Runbook"],"operationId":"operations_runbook_listBlockedWork","parameters":[{"in":"query","name":"limit","schema":{"type":"number"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/operations-runbook/options/:name":{"get":{"summary":"Return simple option values for Rundeck job prompts","tags":["Operations Runbook"],"operationId":"operations_runbook_optionValues","parameters":[{"in":"path","name":"name","required":true,"schema":{"type":"string"}},{"in":"query","name":"tenantId","schema":{"type":"string"}},{"in":"query","name":"state","schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/operations-runbook/alarms/:alarmId/ack":{"post":{"summary":"Acknowledge an async watchdog alarm through the runbook facade","tags":["Operations Runbook"],"operationId":"operations_runbook_acknowledgeAlarm","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"alarmId":{"type":"string"},"correlationId":{"type":"string"},"requestedBy":{"type":"string"},"reason":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}}},"/api/operations-runbook/revalidation/:taskId/dry-run":{"post":{"summary":"Preview a curated DevServer revalidation action","tags":["Operations Runbook"],"operationId":"operations_runbook_revalidationDryRun","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"taskId":{"type":"string"},"correlationId":{"type":"string"},"requestedBy":{"type":"string"},"reason":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}}},"/api/operations-runbook/revalidation/:taskId/execute":{"post":{"summary":"Execute a guarded DevServer revalidation action","tags":["Operations Runbook"],"operationId":"operations_runbook_executeRevalidationDev","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"taskId":{"type":"string"},"dryRun":{"type":"boolean"},"executionMode":{"type":"string"},"idempotencyKey":{"type":"string"},"correlationId":{"type":"string"},"requestedBy":{"type":"string"},"reason":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}}},"/api/operations-runbook/stadtwerk-mauer/e2e-smoke":{"post":{"summary":"Run the Stadtwerk Mauer sandbox E2E demo smoke sequence","tags":["Operations Runbook"],"operationId":"operations_runbook_stadtwerkMauerE2eSmoke","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"tenantId":{"type":"string"},"caseId":{"type":"string"},"dryRun":{"type":"boolean"},"executionMode":{"type":"string"},"idempotencyKey":{"type":"string"},"correlationId":{"type":"string"},"requestedBy":{"type":"string"},"resetBeforeRun":{"type":"boolean"},"finalReset":{"type":"boolean"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}}},"/api/operations-runbook/vdmi-blueprint-packs/verify":{"get":{"summary":"Verify a read-only VDMI Blueprint Pack seed for Rundeck and Budibase","tags":["Operations Runbook"],"operationId":"operations_runbook_verifyVdmiBlueprintPackSeed","parameters":[{"in":"query","name":"tenantId","schema":{"type":"string"}},{"in":"query","name":"seedId","schema":{"type":"string"}},{"in":"query","name":"correlationId","schema":{"type":"string"}},{"in":"query","name":"requestedBy","schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/osm-geo/validate":{"post":{"summary":"Geo-plausibility check for MaStR VNB assignment (L1 authoritative + L2 OSM)","tags":["OSM Geo (OpenStreetMap)"],"operationId":"osm_geo_validate","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Validation result returned successfully","content":{"application/json":{"example":{"success":true,"data":{"mastrNummer":"SEE900012345678","installation":{"location":{"lat":49.481,"lon":8.432},"installationType":"solar","bruttoleistungKW":9.9,"registeredGridOperator":"STROMDAO Netze GmbH","registeredGridOperatorId":"SNB935578300972"},"validation":{"verdict":"CONSISTENT","confidenceScore":72,"flags":[],"layer1_vnbdigital":{"queried":true,"status":"QUERIED_SUCCESS","vnbFound":"STROMDAO Netze GmbH","match":true,"authoritative":true},"layer2_osm":{"queried":true,"osmObjectsFound":3,"nearestSubstation":{"osmId":"node/123456789","distanceMeters":184,"type":"distribution","operatorTag":"STROMDAO"},"dominantOperator":"STROMDAO","dominantOperatorShare":1,"radiusMeters":500}},"dataQuality":{"layer1Coverage":"FULL","layer2Coverage":"MEDIUM","osmDisclaimer":"© OpenStreetMap contributors (ODbL 1.0)"}}}}}}},"description":"Two-layer geographic plausibility check for the grid-operator assignment of a MaStR installation.\n\n**Layer 1 (authoritative):** Coordinate → VNBDigital → expected grid operator for this location.\n**Layer 2 (physical):** Coordinate → Overpass API → nearby substations / dominant operator tag.\n\nDetects both **DEFINITIVE_MISASSIGNMENT** (L1 mismatch, authoritative) and **LIKELY_MISASSIGNMENT** (L2 OSM hint only).\n\n**Input:** either `mastrNummer` (coordinates resolved automatically) **or** explicit `latitude` + `longitude`.\n\n**Verdict values:**\n- `CONSISTENT` — assignment plausible (L1 + L2 agree or no contradiction)\n- `DEFINITIVE_MISASSIGNMENT` — VNBDigital points to a different operator (authoritative correction required)\n- `LIKELY_MISASSIGNMENT` — OSM infrastructure tags suggest a different operator\n- `UNCERTAIN` — contradictory signals, no clear verdict\n- `INSUFFICIENT_DATA` — too few OSM objects for a reliable verdict\n\n**OSM coverage note:** Typically 40–60 % of MS/NS infrastructure is mapped in OSM for Germany. The `dataQuality.coverageLabel` field carries a per-response quality estimate.\n\n**Data:** © OpenStreetMap contributors, [ODbL 1.0](https://opendatacommons.org/licenses/odbl/)","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"mastrNummer":{"type":"string","description":"MaStR number (SEE…, SWE…, SBE…). Coordinates and VNB resolved automatically from the local DB.","example":"SEE900012345678"},"latitude":{"type":"number","description":"Latitude — required when mastrNummer is not provided.","example":49.481},"longitude":{"type":"number","description":"Longitude — required when mastrNummer is not provided.","example":8.432},"registeredGridOperatorName":{"type":"string","description":"Registered VNB name for the L1 comparison.","example":"STROMDAO Netze GmbH"},"gridOperatorId":{"type":"string","description":"MaStR ID of the VNB (SNB…).","example":"SNB935578300972"},"radiusMeters":{"type":"number","description":"OSM search radius in metres (max 5 000).","default":500,"example":500},"skipOsmLayer":{"type":"boolean","description":"Only run L1 (no Overpass call). Faster for batch runs.","default":false,"example":false},"includeInfrastructureDetails":{"type":"boolean","description":"Include the full list of found OSM objects in the response.","default":false,"example":false},"confidenceThreshold":{"type":"number","description":"Minimum score for CONSISTENT verdict.","default":40,"example":40},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"byMastrNummer":{"summary":"Minimal call — MaStR number only","value":{"mastrNummer":"SEE900012345678"}},"l1Only":{"summary":"L1-only check (no Overpass, fast for batch)","value":{"mastrNummer":"SEE900012345678","skipOsmLayer":true}},"byCoordinates":{"summary":"Explicit coordinates with infrastructure details","value":{"latitude":49.481,"longitude":8.432,"registeredGridOperatorName":"STROMDAO Netze GmbH","radiusMeters":800,"includeInfrastructureDetails":true}}}}}}}},"/api/osm-geo/infrastructure-nearby":{"post":{"summary":"Energy infrastructure near a location (sorted by distance)","tags":["OSM Geo (OpenStreetMap)"],"operationId":"osm_geo_infrastructureNearby","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Nearby infrastructure retrieved successfully","content":{"application/json":{"example":{"success":true,"data":{"queryCenter":{"lat":49.481,"lon":8.432},"radiusMeters":1000,"bboxConstrained":false,"totalFound":7,"summary":{"nearestSubstationMeters":184,"nearestNSConnectionMeters":184,"nearestMSConnectionMeters":430,"dominantOperator":"STROMDAO","substationsFound":4,"osmCoverageQuality":"MEDIUM"},"infrastructure":[{"osmId":"node/123456789","type":"substation","subtype":"distribution","distanceMeters":184,"location":{"lat":49.4826,"lon":8.4298},"voltageLevel":"NS","voltageIn":"20000","voltageOut":"400","operator":"STROMDAO","name":"UW Innenstadt","connectionSuitability":"SUITABLE_NS"}],"dataQuality":{"coverageLabel":"MEDIUM","disclaimer":"© OpenStreetMap contributors (ODbL 1.0)"}}}}}}},"description":"Returns all energy infrastructure (substations, transformers, lines, cables) within a defined radius, sorted by distance from the query centre.\n\nEach object carries voltage level, operator tag, and a **`connectionSuitability`** assessment:\n- `SUITABLE_NS` — low-voltage connection suitable (≤ 400 V)\n- `SUITABLE_MS` — medium-voltage connection suitable (1–20 kV)\n- `SUITABLE_HS` — high-voltage connection (> 20 kV)\n- `LINE_ONLY` — line/cable only, no node\n- `UNKNOWN` — voltage level not determinable\n\n**Input:** one of `location` (lat,lon string), `latitude`+`longitude`, or `mastrNummer`.\n\nUse `constrainToBbox` (directly from a `vnbdigital_lookup` bbox field) to restrict results to the relevant grid territory.\n\n**Data:** © OpenStreetMap contributors, [ODbL 1.0](https://opendatacommons.org/licenses/odbl/)","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"location":{"type":"string","description":"Coordinates as \"lat,lon\" string (e.g. \"49.481,8.432\").","example":"49.481,8.432"},"latitude":{"type":"number","description":"Latitude of the query centre.","example":49.481},"longitude":{"type":"number","description":"Longitude of the query centre.","example":8.432},"mastrNummer":{"type":"string","description":"MaStR number — coordinates resolved from local DB.","example":"SEE900012345678"},"radiusMeters":{"type":"number","description":"Search radius in metres (max 10 000).","default":1000,"example":1000},"infraTypes":{"type":"array","description":"Filter by infrastructure type. Allowed: substation, transformer, line, cable.","items":{"type":"string"},"example":["substation","transformer"]},"voltageLevel":{"type":"string","description":"Filter by voltage level: NS, MS, HS, EHS.","example":"NS"},"maxResults":{"type":"number","description":"Maximum number of results.","default":20,"example":20},"constrainToBbox":{"type":"object","description":"VNBDigital bounding box — objects outside are filtered out. Compatible with the bbox field from vnbdigital_lookup.","example":{"north":49.548,"south":49.427,"east":8.477,"west":8.298},"properties":{"north":{"type":"number"},"south":{"type":"number"},"east":{"type":"number"},"west":{"type":"number"}}},"include_geometry":{"type":"boolean","description":"Include GeoJSON geometry for lines/cables.","default":false,"example":false},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"nearestNS":{"summary":"Nearest NS infrastructure for a PV plant","value":{"latitude":49.481,"longitude":8.432,"radiusMeters":500,"infraTypes":["substation","transformer"],"voltageLevel":"NS"}},"withBbox":{"summary":"Infrastructure constrained to VNB territory","value":{"location":"49.481,8.432","radiusMeters":2000,"constrainToBbox":{"north":49.548,"south":49.427,"east":8.477,"west":8.298}}},"cablesByMastrNummer":{"summary":"Lines/cables within 3 km via MaStR number","value":{"mastrNummer":"SEE900012345678","radiusMeters":3000,"infraTypes":["line","cable"],"include_geometry":true}}}}}}}},"/api/osm-geo/substation-finder":{"post":{"summary":"Substation inventory for a grid territory or area","tags":["OSM Geo (OpenStreetMap)"],"operationId":"osm_geo_substationFinder","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Substation inventory retrieved successfully","content":{"application/json":{"example":{"success":true,"data":{"query":{"scopeSource":"boundingBox","gridOperator":"STROMDAO Netze GmbH","bbox":[8.298,49.427,8.477,49.548],"voltageLevel":"ALL","substationType":"ALL"},"summary":{"totalSubstations":312,"returnedSubstations":200,"byVoltageLevel":{"NS_MS":289,"MS_HS":21,"HS_EHS":2,"UNKNOWN":0},"byOperator":[{"operator":"STROMDAO","count":287,"share":0.92},{"operator":"Stadtwerke Ludwigshafen","count":14,"share":0.04}],"dominantOperator":"STROMDAO","dominantOperatorShare":0.92,"areaKm2":85.4,"densityAssessment":{"substationsPerKm2":3.65,"label":"URBAN"}},"substations":[{"osmId":"way/987654321","type":"substation","subtype":"distribution","location":{"lat":49.487,"lon":8.451},"voltageLevel":"NS","operator":"STROMDAO","name":"TUS Oggersheim"}],"dataQuality":{"coverageLabel":"MEDIUM","disclaimer":"© OpenStreetMap contributors (ODbL 1.0)"}}}}}}},"description":"Inventories substations and transformers within a defined area using OpenStreetMap data.\n\nReturns both a detail list and **aggregated statistics**:\n- Total count by voltage level (NS/MS/HS/EHS)\n- Operator split with dominant operator share\n- Area density assessment: `SPARSE` < 0.5/km², `RURAL` 0.5–2, `SUBURBAN` 2–5, `URBAN` > 5 substations/km²\n\n**Scope input:** at least one of `location` (place name), `boundingBox` (from vnbdigital_lookup), or `gridOperator` name.\n\n**Data:** © OpenStreetMap contributors, [ODbL 1.0](https://opendatacommons.org/licenses/odbl/)","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"location":{"type":"string","description":"Area name (Gemeinde, Stadt, Landkreis) for OSM area query.","example":"Ludwigshafen am Rhein"},"postalCode":{"type":"string","description":"German PLZ (postal code). Combined with location when both are provided (e.g. \"74909 Meckesheim\"). Can be used alone for PLZ-scoped queries.","example":"74909"},"boundingBox":{"type":"object","description":"Geographic bounding box — directly compatible with the bbox field from vnbdigital_lookup.","example":{"north":49.548,"south":49.427,"east":8.477,"west":8.298},"properties":{"north":{"type":"number"},"south":{"type":"number"},"east":{"type":"number"},"west":{"type":"number"}}},"gridOperator":{"type":"string","description":"VNB name — used as OSM area name fallback.","example":"STROMDAO Netze GmbH"},"gridOperatorId":{"type":"string","description":"MaStR VNB ID (SNB…).","example":"SNB935578300972"},"voltageLevel":{"type":"string","description":"Filter by voltage level: NS, MS, HS, EHS.","example":"MS"},"substationType":{"type":"string","description":"Filter by substation type: distribution, transmission, ALL.","default":"ALL","example":"ALL"},"maxResults":{"type":"number","description":"Maximum number of objects in the detail list.","default":200,"example":200},"include_geometry":{"type":"boolean","description":"Include polygon geometry for way/relation substations.","default":false,"example":false},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"byBbox":{"summary":"All substations in a VNB territory (via bbox)","value":{"boundingBox":{"north":49.548,"south":49.427,"east":8.477,"west":8.298},"gridOperator":"STROMDAO Netze GmbH"}},"hsMunich":{"summary":"HS substations in Munich only","value":{"location":"München","voltageLevel":"HS","substationType":"transmission"}},"countyWithGeometry":{"summary":"Full county inventory with polygon geometry","value":{"location":"Rhein-Pfalz-Kreis","include_geometry":true,"maxResults":500}},"narrowLocality":{"summary":"Narrow locality query with PLZ (Meckesheim)","value":{"location":"Meckesheim","postalCode":"74909"}}}}}}}},"/api/osm-geo/grid-topology":{"post":{"summary":"Grid topology analysis (nodes, edges, graph metrics, optional path analysis)","tags":["OSM Geo (OpenStreetMap)"],"operationId":"osm_geo_gridTopology","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Topology analysis returned successfully","content":{"application/json":{"example":{"success":true,"data":{"area":"Ludwigshafen am Rhein","scopeSource":"location_name","voltageFilter":null,"topologyMetrics":{"nodes":8,"edges":6,"avgNodeDegree":1.5,"topologyType":"RADIAL","topologyIndicator":0,"voltageBreakdown":{"NS":{"nodes":0,"edges":0,"lineLengthKmApprox":0},"MS":{"nodes":0,"edges":0,"lineLengthKmApprox":0},"HS":{"nodes":0,"edges":0,"lineLengthKmApprox":0},"EHS":{"nodes":0,"edges":0,"lineLengthKmApprox":0},"UNKNOWN":{"nodes":8,"edges":6,"lineLengthKmApprox":12.4}}},"pathAnalysis":{"requested":false},"dataQuality":{"source":"© OpenStreetMap contributors (ODbL 1.0)","coverageLabel":"DERIVED","disclaimer":"OSM-Daten sind freiwillig gepflegt und können unvollständig oder veraltet sein."}}}}}}},"description":"Analyses the visible grid topology within an area by extracting nodes (substations, transformers) and edges (lines, cables) directly from OpenStreetMap via Overpass (src/osm-grid-topology.js — computed locally, no external mcp.cernion.de dependency for this action).\n\n**Graph model:** nodes = OSM elements tagged `power=substation`/`power=transformer`; edges = derived by walking each `power=line|cable|minor_line` way's ordered node list and connecting consecutive pairs of those nodes found along it. Towers/poles are not modelled as graph nodes, so a line touching zero or one node of interest within the bbox contributes no edge from that way — a legitimate boundary effect, not missing data.\n\n**Graph metrics returned:**\n- Node and edge counts, average node degree\n- Topology type: `RADIAL` (indicator < 0.5), `MIXED` (0.5–0.7), `RING` (> 0.7 — higher redundancy). Indicator = cyclomatic number (E − V + components) normalised by edge count.\n- Voltage-level breakdown (NS/MS/HS/EHS, classified from the OSM `voltage` tag)\n\n**Optional path analysis** (`includePathAnalysis: true`): shortest path between `fromOsmId` → `toOsmId` (Dijkstra over derived edge lengths) with hop count, total length, and confidence rating.\n\n**Optional raw graph data** (`includeGraphData: true`): full node/edge list for downstream processing.\n\n**Scope input:** at least one of `location` (place name), `postalCode`, `boundingBox`, or `gridOperator` name. Named-place/postalCode/gridOperator scopes are forward-geocoded to a bounding box via Nominatim; `boundingBox` is used directly.\n\n**Data:** © OpenStreetMap contributors, [ODbL 1.0](https://opendatacommons.org/licenses/odbl/)","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"location":{"type":"string","description":"Area name (Gemeinde, Stadt, Landkreis).","example":"Ludwigshafen am Rhein"},"postalCode":{"type":"string","description":"German PLZ (postal code). Combined with location when both are provided (e.g. \"74909 Meckesheim\"). Can be used alone for PLZ-scoped queries.","example":"74909"},"boundingBox":{"type":"object","description":"Explicit geographic bounding box — directly compatible with vnbdigital_lookup bbox.","example":{"north":49.548,"south":49.427,"east":8.477,"west":8.298},"properties":{"north":{"type":"number"},"south":{"type":"number"},"east":{"type":"number"},"west":{"type":"number"}}},"gridOperator":{"type":"string","description":"VNB name — used as OSM area name.","example":"STROMDAO Netze GmbH"},"voltageLevel":{"type":"string","description":"Restrict analysis to one voltage level: NS, MS, HS, EHS.","example":"MS"},"fromOsmId":{"type":"string","description":"Start-node OSM ID for path analysis (e.g. \"node/1234567\").","example":"node/123456789"},"toOsmId":{"type":"string","description":"Target-node OSM ID for path analysis.","example":"node/987654321"},"includePathAnalysis":{"type":"boolean","description":"Compute shortest path between fromOsmId → toOsmId.","default":false,"example":false},"includeGraphData":{"type":"boolean","description":"Include raw node/edge list for downstream processing.","default":false,"example":false},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"ludwigshafenMS":{"summary":"MS topology for Ludwigshafen","value":{"location":"Ludwigshafen am Rhein","voltageLevel":"MS"}},"pathAnalysis":{"summary":"Path analysis between two OSM nodes","value":{"location":"Ludwigshafen am Rhein","voltageLevel":"MS","fromOsmId":"node/123456789","toOsmId":"node/987654321","includePathAnalysis":true}},"byBboxWithGraphData":{"summary":"Topology with raw graph data via bounding box","value":{"boundingBox":{"north":49.548,"south":49.427,"east":8.477,"west":8.298},"voltageLevel":"MS","includeGraphData":true}},"narrowLocality":{"summary":"Narrow locality topology (Meckesheim / 74909)","value":{"location":"Meckesheim","postalCode":"74909","includePathAnalysis":false,"includeGraphData":false}}}}}}}},"/api/osm-geo/landuse-areas":{"post":{"summary":"OSM landuse areas (residential/commercial/retail/industrial/institutional)","tags":["OSM Geo (OpenStreetMap)"],"operationId":"osm_geo_landuseAreas","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Landuse areas and per-type summary","content":{"application/json":{"example":{"success":true,"data":{"areas":[{"osmId":"way/28300155","landuseType":"industrial","name":"Hägebüch","areaM2Approx":123456,"centroid":{"lat":49.33,"lon":8.55}}],"summary":{"totalAreaM2ByType":{"industrial":850000,"commercial":210000,"retail":95000},"areaCount":59},"dataQuality":{"source":"© OpenStreetMap contributors (ODbL 1.0)","disclaimer":"OSM-Daten sind freiwillig gepflegt und können unvollständig oder veraltet sein."}}}}}}},"description":"Fetches OSM `landuse=*` way polygons within an area and computes their area (shoelace formula on a local planar projection) and centroid locally — no external MCP dependency, same Overpass data source as osm-geo.gridTopology. Intended as sector-split evidence for municipal load/consumption estimation (area share by landuse type instead of equal distribution across a municipality). **Scope limitation:** only simple closed way polygons are handled — multipolygon relations (areas with excluded inner holes) are not fetched in v1, which understates totals for whichever areas happen to be relation-mapped rather than miscalculating them. **Scope input:** at least one of `location`, `postalCode`, or `boundingBox`.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"location":{"type":"string","example":"Hockenheim"},"postalCode":{"type":"string","example":"68766"},"boundingBox":{"type":"object","example":{"south":49.273,"west":8.483,"north":49.363,"east":8.621},"properties":{"north":{"type":"number"},"south":{"type":"number"},"east":{"type":"number"},"west":{"type":"number"}}},"landuseTypes":{"type":"array","items":{"type":"string","enum":["residential","commercial","retail","industrial","institutional"]},"example":["industrial","commercial","retail"],"description":"Restrict to these landuse types (default: all 5 supported)."},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"hockenheimIndustrial":{"summary":"Industrial/commercial/retail areas for Hockenheim","value":{"boundingBox":{"south":49.273,"west":8.483,"north":49.363,"east":8.621},"landuseTypes":["industrial","commercial","retail"]}}}}}}}},"/api/personal-agent/chat":{"post":{"summary":"Run one Personal-Agent chat turn with deterministic L0-L4 context stacking","tags":["Personal Agent"],"operationId":"personal_agent_chat","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Chat turn completed (internal Moleculer calls only; REST gateway calls receive 202 Accepted)","content":{"application/json":{"examples":{"hitlPlanOnly":{"summary":"HITL Mode: Plan returned for manual review","value":{"success":true,"sessionId":"pa_a1b2c3d4-e5f6-4789-a012-b3c4d5e6f7a8","executionMode":"hitl","reply":"Ich habe einen 2-stufigen Plan entworfen. Sie können ihn überprüfen und dann manuell ausführen.","layer4Purged":true,"l3Compressed":false,"contextUsage":{"totalTokens":2850,"estimatedPromptTokens":1200,"estimatedCompletionTokens":1650,"maxTokens":128000,"percentUsed":2.2},"historyCount":5,"routing":{"source":"broker","routeKey":null,"routeLabel":null,"primaryIntent":"investment-analysis","secondaryIntents":["grid-planning","financial-modeling"],"requestedDomains":[],"unsupportedDomains":[],"warnings":[]},"plan":{"status":"complete","steps":[{"stepId":1,"action":"finance-agent.analyze","label":"Investitionsanalyse","params":{"gridOperator":"Stadtwerke München","investmentType":"cable","location":"Schwabing","plannedCapacityMW":15},"dependencies":[]},{"stepId":2,"action":"znp.assessPortfolio","label":"Portfolio-Assessment","params":{"projectId":"__step_1.financialProjectId","assumptions":{"growthRate":0.08,"discountRate":0.055}},"dependencies":[1]}]},"execution":{"status":"skipped","steps":[],"stopPoint":null}}},"awaitingOnboarding":{"summary":"AUTO Mode: Awaiting onboarding answer","value":{"success":true,"sessionId":"pa_a1b2c3d4-e5f6-4789-a012-b3c4d5e6f7a8","executionMode":"auto","reply":"Für welchen Netzbetreiber (z.B. Stadtwerke Troisdorf) soll ich die Prüfung durchführen?","layer4Purged":true,"l3Compressed":false,"contextUsage":{"totalTokens":2100,"estimatedPromptTokens":1200,"estimatedCompletionTokens":900,"maxTokens":128000,"percentUsed":1.6},"historyCount":3,"routing":{"source":"capability-broker","routeKey":null,"routeLabel":"grid_operator_identity_resolution","primaryIntent":"grid-connection.validate","secondaryIntents":[],"requestedDomains":["grid-connection"],"unsupportedDomains":[],"warnings":[]},"plan":{"status":"partial","steps":[{"stepId":1,"action":"grid-connection.validate","label":"Netzanschluss Validierung","params":{"gridOperatorName":null},"dependencies":[],"blocked":true}]},"execution":{"status":"awaiting-onboarding","completedSteps":0,"steps":[],"stopPoint":{"reasonCode":"MISSING_INPUTS","blockedStep":1,"blockedAction":"grid-connection.validate","missingParams":["gridOperatorName"],"message":"Für welchen Netzbetreiber (z.B. Stadtwerke Troisdorf) soll ich die Prüfung durchführen?","status":"awaiting-onboarding","onboardingQuestion":{"questionId":"oq_abc123","paramKey":"gridOperatorName","questionText":"Für welchen Netzbetreiber (z.B. Stadtwerke Troisdorf) soll ich die Prüfung durchführen?","ts":"2026-05-15T14:20:00Z","answeredAt":null,"answer":null,"status":"pending"}}}}},"autoFullSuccess":{"summary":"AUTO Mode: Full execution completed","value":{"success":true,"sessionId":"pa_x9y8z7w6-v5u4-t3s2-r1q0-p9o8n7m6l5k4","executionMode":"auto","reply":"Die Investitionsanalyse ist abgeschlossen. Die Kosten betragen ca. 45.000 EUR mit einer Amortisationszeit von 8,2 Jahren bei 7% Rendite.","layer4Purged":true,"l3Compressed":false,"contextUsage":{"totalTokens":5420,"estimatedPromptTokens":2100,"estimatedCompletionTokens":3320,"maxTokens":128000,"percentUsed":4.2},"historyCount":7,"routing":{"source":"matrix","routeKey":"investment-grid","routeLabel":"Investment-Grid Integration","primaryIntent":"investment-grid-check","secondaryIntents":[],"requestedDomains":["investment","grid"],"unsupportedDomains":[],"warnings":[]},"plan":{"status":"complete","steps":[{"stepId":1,"action":"finance-agent.analyze","label":"NPV Analysis","params":{"gridOperator":"STROMDAO Netze","investmentType":"transformer"},"dependencies":[]},{"stepId":2,"action":"znp.assessPortfolio","label":"Grid Impact Assessment","params":{"projectId":"__step_1.projectId"},"dependencies":[1]}]},"execution":{"status":"completed","completedSteps":[1,2],"steps":[{"stepId":1,"action":"finance-agent.analyze","result":{"npv":125000,"irr":0.092,"paybackYears":8.2,"projectId":"proj_invest_001"},"timestamp":"2026-05-15T14:23:45Z"},{"stepId":2,"action":"znp.assessPortfolio","result":{"gridStress":0.68,"requiresExpansion":false,"recommendation":"proceed"},"timestamp":"2026-05-15T14:23:52Z"}],"stopPoint":null}}},"autoPartialMissingInputs":{"summary":"AUTO Mode: Partial execution stopped at missing inputs","value":{"success":true,"sessionId":"pa_m5l4k3j2-i1h0-g9f8-e7d6-c5b4a3z2y1x0","executionMode":"auto","reply":"Ich habe die Energiefreigabe-Validierung gestartet, benötige aber noch die Projekt-ID. Können Sie bitte angeben, welches Projekt Sie prüfen möchten?","layer4Purged":true,"l3Compressed":false,"contextUsage":{"totalTokens":3100,"estimatedPromptTokens":1500,"estimatedCompletionTokens":1600,"maxTokens":128000,"percentUsed":2.4},"historyCount":6,"routing":{"source":"matrix","routeKey":"energy-sharing-znp","routeLabel":"Energy Sharing Validation + ZNP","primaryIntent":"energy-sharing-check","secondaryIntents":[],"requestedDomains":["energy-sharing","znp"],"unsupportedDomains":[],"warnings":[]},"plan":{"status":"partial","steps":[{"stepId":1,"action":"energy-sharing.validate","label":"Energiefreigabe Validierung","params":{"gridOperatorId":"GNB0000003456","generators":[{"capacity":50,"location":"München-Nord"}]},"dependencies":[]},{"stepId":2,"action":"znp.getProjectMeta","label":"ZNP Projekt Details","params":{"projectId":"__user_input.projectId"},"dependencies":[1],"blocked":true}]},"execution":{"status":"partial","completedSteps":[1],"steps":[{"stepId":1,"action":"energy-sharing.validate","result":{"status":"eligible","findings":[]},"timestamp":"2026-05-15T14:20:10Z"}],"stopPoint":{"reasonCode":"MISSING_INPUTS","blockedStep":2,"blockedAction":"znp.getProjectMeta","missingParams":["projectId"],"message":"Step 2 blocked: requires projectId. Available aliases: project, projectName, projectCode.","status":"user-input-required","placeholderId":"placeholder_user_input_v1"}}}},"autoPartialUnsupported":{"summary":"AUTO Mode: Partial execution, unsupported chain degraded gracefully","value":{"success":true,"sessionId":"pa_n0o1p2q3-r4s5-t6u7-v8w9-x0y1z2a3b4c5","executionMode":"auto","reply":"Die Redispatch-Analyse ist abgeschlossen. Die Erweiterung auf die Speicherplanung ist in dieser Version nicht freigeschaltet – ich stelle Ihnen dafür ein Manual-Interface zur Verfügung.","layer4Purged":true,"l3Compressed":false,"contextUsage":{"totalTokens":3850,"estimatedPromptTokens":1800,"estimatedCompletionTokens":2050,"maxTokens":128000,"percentUsed":3},"historyCount":6,"routing":{"source":"broker","routeKey":null,"routeLabel":null,"primaryIntent":"redispatch-analysis","secondaryIntents":["storage-planning"],"requestedDomains":["redispatch","storage"],"unsupportedDomains":["storage"],"warnings":["Requested domain \"storage\" is not in the routing matrix for redispatch. Stopping after redispatch completion."]},"plan":{"status":"partial","steps":[{"stepId":1,"action":"redispatch-expost.audit","label":"Redispatch Settlement Audit","params":{"gridOperatorId":"SNB0000001234","minCapacityKW":100},"dependencies":[]},{"stepId":2,"action":"storage.optimizer","label":"Storage Optimization (UNSUPPORTED)","params":{},"dependencies":[1],"blocked":true}]},"execution":{"status":"partial","completedSteps":[1],"steps":[{"stepId":1,"action":"redispatch-expost.audit","result":{"status":"ready","portfolioSize":247,"totalCapacity":3560,"findings":[]},"timestamp":"2026-05-15T14:18:30Z"}],"stopPoint":{"reasonCode":"UNSUPPORTED_CHAIN","blockedStep":2,"blockedAction":"storage.optimizer","message":"Domain \"storage\" is not routable in deterministic chains. Interface placeholder activated for manual continuation.","status":"interface-placeholder","placeholderId":"placeholder_storage_gap_v1","placeholderMetadata":{"title":"Speicheroptimierung","description":"Manuelle Speicheroptimierung auf Basis des Redispatch-Audits erforderlich.","suggestedNextSteps":["Laden Sie die Audit-Ergebnisse herunter","Nutzen Sie unser Storage-Analyse-Tool","Kontaktieren Sie unseren Speicher-Spezialisten"]}}}}}}}}},"202":{"description":"Accepted - Chat turn submitted as async job. Poll /api/jobs/:jobId/status for progress. (REST gateway only; internal Moleculer calls receive 200.)","headers":{"Location":{"description":"URL to poll job status","schema":{"type":"string"}},"Retry-After":{"description":"Recommended polling interval in seconds","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"jobId":{"type":"string"},"status":{"type":"string","enum":["queued"]},"message":{"type":"string"},"statusUrl":{"type":"string"},"resultUrl":{"type":"string"},"progressUrl":{"type":"string"},"reused":{"type":"boolean"}},"required":["success","jobId","status","statusUrl","resultUrl","progressUrl"]}}}},"400":{"description":"Bad request - invalid parameters or validation error"},"404":{"description":"Service or action not found"},"500":{"description":"Internal server error"}},"description":"Builds a deterministic context stack (L0-L4), binds the capability-broker routing layer, supports auto-execution or HITL plan return, and guarantees Layer 4 purge after synthesis. Layer-4 raw tool JSON is never persisted.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string","minLength":1,"maxLength":8000,"example":"Plane eine neue PV-Anlage in Troisdorf."},"sessionId":{"type":"string","example":"pa_a1b2c3d4-e5f6-4789-a012-b3c4d5e6f7a8"},"executionMode":{"type":"string","enum":["auto","hitl"],"default":"auto"},"chatMode":{"type":"string","enum":["execution","consultation"],"default":"consultation","example":"consultation","description":"Optional explicit chat mode. If set, it overrides auto detection for this turn."},"forceReceipt":{"type":"string","example":"vnb-lookup-v1","description":"Optional receipt id to force. Invalid or policy-forbidden ids fail with 422."},"preferredReceipts":{"type":"array","items":{"type":"string"},"default":[],"example":["vnb-lookup-v1","grid-ops-fallback-v1"],"description":"Optional ordered list of preferred runtime receipt ids."},"allowDraftReceipts":{"type":"boolean","default":false,"description":"When true, draft receipts can be selected in controlled testing."},"explainReceiptSelection":{"type":"boolean","default":false,"description":"When true, includes receipt-selection diagnostics in metadata.receiptSelection."},"disableReceiptSelection":{"type":"boolean","default":false,"description":"When true, bypasses runtime receipt selection and enforces legacy routing behavior."},"toolContext":{"type":"object","additionalProperties":true,"default":{}},"knownContext":{"type":"object","additionalProperties":true,"default":{}},"fileAttachments":{"type":"array","example":[{"attachmentId":"att_7f3c2e9b","fileName":"netzanschluss-anfrage.pdf","mimeType":"application/pdf","sizeBytes":248731,"tempPath":"/tmp/uploads/tenant-default/session-pa_a1b2c3/att_7f3c2e9b.pdf"}],"items":{"type":"object","properties":{"attachmentId":{"type":"string"},"fileName":{"type":"string"},"mimeType":{"type":"string"},"sizeBytes":{"type":"number"},"tempPath":{"type":"string"}}}},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"auto":{"summary":"AUTO execution with deterministic plan run","value":{"message":"Prüfe die Netzanschlusskapazität für Troisdorf.","executionMode":"auto","knownContext":{"location":"Troisdorf"}}}}},"multipart/form-data":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"sessionId":{"type":"string"},"executionMode":{"type":"string","enum":["auto","hitl"]},"chatMode":{"type":"string","enum":["execution","consultation"],"default":"consultation","example":"consultation"},"knownContext":{"type":"string","description":"JSON-stringified object"},"toolContext":{"type":"string","description":"JSON-stringified object"},"forceReceipt":{"type":"string"},"preferredReceipts":{"type":"string","description":"JSON array string, e.g. [\"receipt-a\",\"receipt-b\"]"},"allowDraftReceipts":{"type":"string","description":"true/false"},"explainReceiptSelection":{"type":"string","description":"true/false"},"disableReceiptSelection":{"type":"string","description":"true/false"},"fileAttachments":{"type":"array","items":{"type":"string","format":"binary"}}}}}}}}},"/api/personal-agent/session/:sessionId":{"get":{"summary":"Load persisted Personal-Agent session (L3 history)","tags":["Personal Agent"],"operationId":"personal_agent_getSession","parameters":[{"in":"path","name":"sessionId","required":true,"schema":{"type":"string","example":"pa_a1b2c3d4-e5f6-4789-a012-b3c4d5e6f7a8"},"description":"Personal-Agent session ID"},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"Returns persisted session state for UI reload. Includes Layer 3 history/summary and profile metadata. Layer 4 is never returned because it is transient."}},"/api/personal-agent/session/:sessionId/proactive-messages":{"get":{"summary":"Pull queued proactive persona messages for the current session","tags":["Personal Agent"],"operationId":"personal_agent_pullProactiveMessages","parameters":[{"in":"path","name":"sessionId","required":true,"schema":{"type":"string","example":"pa_a1b2c3d4-e5f6-4789-a012-b3c4d5e6f7a8"}},{"in":"query","name":"personaId","required":false,"schema":{"type":"string","example":"tenant-a/thorsten-human"}},{"in":"query","name":"limit","required":false,"schema":{"type":"integer","default":20,"minimum":1,"maximum":100}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/personal-agent/session/:sessionId/proactive-messages/:id/acknowledge":{"post":{"summary":"Acknowledge a proactive persona message","tags":["Personal Agent"],"operationId":"personal_agent_acknowledgeProactiveMessage","parameters":[{"in":"path","name":"sessionId","required":true,"schema":{"type":"string","example":"pa_a1b2c3d4-e5f6-4789-a012-b3c4d5e6f7a8"}},{"in":"path","name":"id","required":true,"schema":{"type":"string","example":"inbox-1"}},{"in":"query","name":"personaId","required":false,"schema":{"type":"string","example":"tenant-a/thorsten-human"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"value":{}}}}}}}},"/api/personal-agent/session/:sessionId/reset":{"post":{"summary":"Reset chat context stack for a session (keeps hard user profile L2)","tags":["Personal Agent"],"operationId":"personal_agent_resetSession","parameters":[{"in":"path","name":"sessionId","required":true,"schema":{"type":"string","example":"pa_a1b2c3d4-e5f6-4789-a012-b3c4d5e6f7a8"},"description":"Session ID to reset"},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"Flushes conversational Layer 3 for the given session while keeping the persisted Layer 2 profile.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"reason":{"type":"string","default":"manual-reset","example":"manual-reset"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"summary":"Reset request payload (optional metadata)","value":{"reason":"manual-reset"}}}}}}}},"/api/personal-agent/session/:sessionId/dream-status":{"get":{"summary":"Get Dream-pipeline status for a session","tags":["Personal Agent"],"operationId":"personal_agent_getDreamStatus","parameters":[{"in":"path","name":"sessionId","required":true,"schema":{"type":"string","example":"pa_a1b2c3d4-e5f6-4789-a012-b3c4d5e6f7a8"},"description":"Session ID to inspect dream timer state for"},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Dream status for the session","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"sessionId":{"type":"string"},"dreamPending":{"type":"boolean","description":"true if inactivity timer is active"}}}}}}},"description":"Returns whether the post-session Dream pipeline is currently pending (timer running) or idle for the given sessionId. The Dream runs after the inactivity timeout configured via DREAM_INACTIVITY_MS (default 5 min) and enriches L2 user profile and L1 tenant memory."}},"/api/personal-agent/dream-audit":{"get":{"summary":"List Dream-pipeline audit trail entries for the current tenant","tags":["Personal Agent"],"operationId":"personal_agent_getDreamAudit","parameters":[{"in":"query","name":"limit","schema":{"type":"integer","default":50},"description":"Maximum number of audit entries to return (1–200)"},{"in":"query","name":"offset","schema":{"type":"integer","default":0},"description":"Pagination offset"},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Dream audit trail entries","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"total":{"type":"integer"},"entries":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"sessionId":{"type":"string"},"startedAt":{"type":"string"},"finishedAt":{"type":"string"},"l1FactsAdded":{"type":"integer"},"l2Conflicts":{"type":"integer"},"integrityHash":{"type":"string"}}}}}}}}}},"description":"Returns the append-only Dream audit log for the authenticated tenant. Each entry records a Dream pipeline run with fact counts, conflict/retry stats, L1/L2 enrichment results, and a SHA-256 integrity hash. Entries are scoped to the tenant and sorted newest-first."}},"/api/presentation/render":{"post":{"summary":"Render domain result as structured human view","tags":["Presentation"],"operationId":"presentation_render","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Structured presentation result","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"presentation":{"type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"summary":{"type":"string"},"kpis":{"type":"array","items":{"type":"object"}},"tables":{"type":"array","items":{"type":"object"}},"sections":{"type":"array","items":{"type":"object"}},"warnings":{"type":"array","items":{"type":"string"}},"sources":{"type":"array","items":{"type":"string"}},"nextActions":{"type":"array","items":{"type":"object"}}}},"markdown":{"type":"string"}}}}}},"400":{"description":"Invalid input — domainResult missing"}},"description":"Deterministic system-to-human presentation layer. Translates domain results into management-grade artefacts (KPI cards, VDMI matrices, decision briefs, …). No LLM calls; all facts come from domainResult.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["domainResult"],"properties":{"intent":{"type":"string","example":"asset_count_query"},"audience":{"type":"string","default":"management","example":"management"},"preferredFormat":{"type":"string","enum":["auto","kpi_fact","comparison_table","vdmi_matrix_table","decision_brief","risk_table","evidence_gap_table","debug_summary"],"default":"auto"},"domainResult":{"type":"object","description":"Raw domain output to be rendered","example":{"label":"PV-Anlagen in Wiesloch","count":312,"unit":"Anlagen","area":"Wiesloch","source":"Marktstammdatenregister (MaStR)","asOf":"2026-05-17"}},"context":{"type":"object","example":{"tenantId":"demo","locale":"de-DE"}},"locale":{"type":"string","default":"de-DE","example":"de-DE"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"kpi_fact_pv_wiesloch":{"summary":"KPI-Abfrage PV-Anlagen Wiesloch","value":{"intent":"asset_count_query","domainResult":{"label":"PV-Anlagen in Wiesloch","count":312,"unit":"Anlagen","area":"Wiesloch","source":"Marktstammdatenregister (MaStR)","asOf":"2026-05-17"}}},"vdmi_matrix_stub":{"summary":"VDMI-Matrix-Anfrage (Stub)","value":{"intent":"vdmi_role_boundary_governance","domainResult":{"matrix":{"id":"matrix-001","name":"Netzanschluss §17 EnWG","tasks":[{"taskId":"network-operator-decision","taskName":"Formelle Netzbetreiberentscheidung","verantwortlich":["DSO_GATEKEEPER"],"durchfuehrend":["TECHNICAL_PLANNER"],"mitwirkend":["APPLICANT"],"information":["REGULATOR"]}]}}}}}}}}}},"/api/query/ask":{"post":{"summary":"Natural language query to energy data (MaStR, ENTSO-E, SMARD)","tags":["Query Tools"],"operationId":"query_ask","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful query execution with answer and metadata","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":true},"answer":{"type":"string","description":"Natural language answer","example":"Total PV capacity in Bavaria: 31,604,839.789 kW"},"data":{"type":"object","description":"Structured data result"},"sources":{"type":"array","items":{"type":"string"},"description":"Data sources used","example":["mastr_db"]},"reasoning":{"type":"array","description":"Query reasoning steps (if explain=true)"},"metadata":{"type":"object","description":"Execution metadata"}}},"example":{"success":true,"answer":"Total PV capacity in Bavaria: 31,604,839.789 kW","data":{"totalCapacityKW":31604839.789,"installationCount":582345,"region":"Bayern"},"sources":["mastr_db"],"metadata":{"toolUsed":"cernion_ask","executionTime":3.2}}}}}},"description":"Execute natural language queries against German energy data sources including MaStR (Marktstammdatenregister), ENTSO-E Transparency Platform, and SMARD.de. Supports multi-source data aggregation and complex queries without SQL knowledge.\n\n**Data Sources**:\n- **MaStR**: German registry of all energy installations (PV, wind, storage, etc.)\n- **ENTSO-E**: European electricity grid transparency data\n- **SMARD**: German electricity market data\n\n**Use Cases**:\n- Ad-hoc data exploration (\"How much PV capacity in Bavaria?\")\n- Quick questions without SQL knowledge\n- Multi-source data aggregation\n- Portfolio analysis and market research\n\n**Response Time**: Typically 2-8 seconds (includes LLM reasoning)","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["query"],"properties":{"query":{"type":"string","description":"Natural language question in German or English","minLength":1,"example":"Wie viele Solaranlagen gibt es in Heidelberg mit mehr als 10 kWp?"},"explain":{"type":"boolean","description":"Include detailed reasoning and data sources used","default":false},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"regionalCapacity":{"summary":"Regional PV capacity","value":{"query":"Wieviel PV-Leistung in Bayern?"}},"installationCount":{"summary":"Installation count by city","value":{"query":"How many solar installations in Heidelberg with more than 10 kWp?"}},"yearlyComparison":{"summary":"Yearly comparison","value":{"query":"Vergleiche die Anzahl neuer Windanlagen 2024 vs 2025 in Baden-Württemberg"}},"multiSource":{"summary":"Multi-source aggregation","value":{"query":"Alle Redispatch-Anlagen bei Stadtwerke München","explain":true}}}}}}}},"/api/query/ask-learned":{"post":{"summary":"Template-based queries using self-learning system (20x faster)","tags":["Query Tools"],"operationId":"query_askLearned","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful query execution with template information","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":true},"result":{"type":"object","description":"Query result data"},"templateUsed":{"type":"boolean","description":"Whether a template was used","example":true},"confidence":{"type":"number","description":"Template matching confidence (0.0-1.0)","example":0.85},"executionTimeMs":{"type":"number","description":"Execution time in milliseconds","example":45},"metadata":{"type":"object","description":"Execution metadata"}}},"example":{"success":true,"result":{"totalCapacityKW":5234567.89,"installationCount":234567,"region":"Hessen"},"templateUsed":true,"confidence":0.92,"executionTimeMs":45,"metadata":{"toolUsed":"cernion_ask_learned","templateId":"regional_capacity_pv_v3","executionTime":0.045}}}}}},"description":"Execute queries using learned templates from the Sprint 11 Self-Learning System. Reuses proven query patterns for 20x faster execution compared to cernion_ask. Falls back to LLM generation for new patterns.\n\n**Performance**:\n- **Template Match**: 50-200ms (20x faster than LLM)\n- **New Pattern**: 2-8 seconds (same as cernion_ask, but learns for future use)\n- **Confidence Threshold**: 0.6 (60%) default - higher = stricter matching\n\n**Use Cases**:\n- Recurring queries (regional capacity, installation counts)\n- Performance-critical applications\n- Batch processing (analyze multiple regions)\n- Real-time dashboards\n- API integrations requiring fast responses\n\n**When to Use**:\n- ✅ Recurring query patterns (\"PV capacity in {region}\")\n- ✅ Performance-critical applications\n- ✅ Batch processing\n- ❌ First-time complex queries → use cernion_ask first\n- ❌ Unstructured exploration → use cernion_ask","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["query"],"properties":{"query":{"type":"string","description":"Natural language query (same format as cernion_ask)","minLength":1,"example":"PV-Leistung in Hessen"},"confidence":{"type":"number","description":"Minimum confidence threshold for template matching (0.0-1.0)","minimum":0,"maximum":1,"default":0.6,"example":0.7},"forceGenerate":{"type":"boolean","description":"Force LLM generation even if template matches (for testing)","default":false},"verbose":{"type":"boolean","description":"Show detailed reasoning and statistics (template used, confidence score)","default":false},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"regionalCapacity":{"summary":"Fast regional capacity query","value":{"query":"PV-Leistung in Hessen"}},"strictMatching":{"summary":"Strict template matching","value":{"query":"Wie viele Windanlagen in Bayern?","confidence":0.8,"verbose":true}},"forceNewPattern":{"summary":"Force LLM generation","value":{"query":"Solaranlagen in Heidelberg über 10 kWp","forceGenerate":true}},"batchProcessing":{"summary":"Batch processing (fast)","value":{"query":"PV-Leistung in Baden-Württemberg"}}}}}}}},"/api/query/search":{"get":{"summary":"Search Cernion energy objects (companies, VDMI, ZNP, grid connections, EDM)","tags":["Query Tools","Copilot"],"operationId":"searchCernionData","parameters":[{"name":"q","in":"query","required":true,"description":"Search term. Company/VNB name, VDMI matrix name, ZNP project name, grid operator name, or exact MeLo ID (DE…). German or English.","schema":{"type":"string","minLength":1,"maxLength":200,"example":"Stadtwerke Heidelberg"}},{"name":"domain","in":"query","required":false,"description":"Restrict search to a specific data domain. Defaults to \"all\" which searches all domains in parallel.","schema":{"type":"string","enum":["companies","vnb","edm","vdmi","grid_connection","znp","all"],"default":"all","example":"vdmi"}},{"name":"limit","in":"query","required":false,"description":"Maximum number of results to return (1–25).","schema":{"type":"integer","minimum":1,"maximum":25,"default":10}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Search results from matched domains","content":{"application/json":{"schema":{"type":"object","properties":{"query":{"type":"string","description":"The original search term","example":"Stadtwerke Heidelberg"},"domain":{"type":"string","enum":["companies","vnb","edm","vdmi","grid_connection","znp","all"],"example":"all"},"totalResults":{"type":"integer","example":2},"results":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier within the domain","example":"550e8400-e29b-41d4-a716-446655440000"},"title":{"type":"string","description":"Primary display name","example":"Stadtwerke Heidelberg GmbH & Co. KG"},"excerpt":{"type":"string","description":"One-line context string with key attributes"},"domain":{"type":"string","description":"Source domain of this result","enum":["companies","edm","vdmi","grid_connection","znp"]},"type":{"type":"string","description":"Object type within the domain","example":"company"},"status":{"type":"string","nullable":true,"description":"Lifecycle or decision status of the object","example":"active"},"url":{"type":"string","description":"API path to retrieve the full record","example":"/api/companies/550e8400-e29b-41d4-a716-446655440000"},"metadata":{"type":"object","description":"Domain-specific structured attributes"}},"required":["id","title","excerpt","domain","type","status","url"]}}},"required":["query","domain","totalResults","results"]},"examples":{"companyHit":{"summary":"Company result","value":{"query":"Stadtwerke Heidelberg","domain":"all","totalResults":1,"results":[{"id":"550e8400-e29b-41d4-a716-446655440000","title":"Stadtwerke Heidelberg","excerpt":"Stadtwerke Heidelberg GmbH & Co. KG · VNB · BDEW 9900277000000 · 2 Marktpartner · Status: active","domain":"companies","type":"company","status":"active","url":"/api/companies/550e8400-e29b-41d4-a716-446655440000","metadata":{"memberCount":2,"hasVnb":true}}]}},"vdmiHit":{"summary":"VDMI matrix result","value":{"query":"Netzanschluss","domain":"vdmi","totalResults":1,"results":[{"id":"abc123","title":"Netzanschluss-Genehmigung PV","excerpt":"Prozesstyp: standard · Nominierung: pending","domain":"vdmi","type":"matrix","status":"active","url":"/api/vdmi/abc123","metadata":{"processType":"standard","nominationStatus":"pending","evidenceCount":2}}]}},"gridConnectionHit":{"summary":"Grid connection validation result","value":{"query":"STROMDAO Netze","domain":"grid_connection","totalResults":1,"results":[{"id":"a1b2c3d4-1234-5678-90ab-cdef12345678","title":"Netzanschluss-Validierung · STROMDAO Netze","excerpt":"Entscheidung: GO_CONDITIONAL · 2026-03-30","domain":"grid_connection","type":"validation","status":"GO_CONDITIONAL","url":"/api/grid-connection/validations/a1b2c3d4-1234-5678-90ab-cdef12345678","metadata":{"gridOperatorName":"STROMDAO Netze","findingsCount":3,"createdAt":"2026-03-30T10:00:00Z"}}]}},"noResults":{"summary":"No results","value":{"query":"nonexistent","domain":"all","totalResults":0,"results":[]}}}}}},"400":{"description":"Validation error — q is missing or too long, limit out of range","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","example":"ValidationError"},"message":{"type":"string"}}}}}}},"description":"Search across Cernion energy management data for use in Microsoft 365 Copilot, OpenAPI plugins, and connected integrations.\n\n**Supported domains**:\n- **companies** — Search company entities (Stadtwerke, Konzernverbund) by name. Returns BDEW codes, market roles, member count.\n- **vnb** — Narrow search to companies with a Verteilnetzbetreiber (VNB) market role.\n- **edm** — Look up a Messlokalisation (MeLo) by its exact DE-prefixed ID.\n- **vdmi** — Search VDMI responsibility matrix instances by name, scope, or process type.\n- **grid_connection** — Search past grid connection validation reports by operator name or decision.\n- **znp** — Search Zielnetzplanung projects by name.\n- **all** (default) — Searches all domains in parallel.\n\nEach result carries **domain**, **type**, **id**, **title**, **excerpt**, **status**, and **url** pointing to the detail endpoint for that object.\n\n**Performance**: Deterministic, < 300 ms. Does not invoke any external API or LLM.\n\n**For complex natural-language queries** (e.g. \"PV-Kapazität in Bayern\") use POST /ask instead."},"post":{"summary":"Search Cernion data with a JSON request body","tags":["Query Tools","Copilot"],"operationId":"searchCernionDataBody","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Search results from matched domains","content":{"application/json":{"schema":{"type":"object","properties":{"query":{"type":"string","description":"The original search term"},"domain":{"type":"string","enum":["companies","vnb","edm","vdmi","grid_connection","znp","all"]},"totalResults":{"type":"integer"},"results":{"type":"array","items":{"type":"object"}}},"required":["query","domain","totalResults","results"]}}}},"400":{"description":"Validation error"}},"description":"Search Cernion entities from Copilot Studio. Provide q as the search term, optionally domain and limit. Read-only.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"q":{"type":"string","minLength":1,"maxLength":200,"description":"Required search term, such as a city, company, VNB, VDMI matrix, ZNP project, grid operator, or MeLo ID.","example":"Wiesloch"},"domain":{"type":"string","enum":["companies","vnb","edm","vdmi","grid_connection","znp","all"],"default":"all","description":"Optional search domain. Use vnb to find distribution grid operators.","example":"vnb"},"limit":{"type":"integer","minimum":1,"maximum":25,"default":10,"description":"Optional maximum number of results.","example":5},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":["q"]}}}}}},"/api/query/discover":{"post":{"summary":"Schema discovery for databases, tables, columns, and available tools","tags":["Query Tools"],"operationId":"query_discover","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Discovery result with requested information","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":true},"scope":{"type":"string","example":"databases"},"data":{"type":"object","description":"Discovery results (structure depends on scope)"},"metadata":{"type":"object"}}},"examples":{"databases":{"summary":"Available databases","value":{"success":true,"scope":"databases","databases":["mastr_db","energy_charts_api","deutschlandatlas","ntp_api","corrently_gsi_api"],"metadata":{"count":5,"toolUsed":"cernion_discover"}}},"tools":{"summary":"Available MCP tools by category","value":{"success":true,"scope":"tools","tools":{"Query Tools":["cernion_ask","cernion_ask_learned","cernion_discover"],"Energy Market Data":["cernion_energy_prices","cernion_energy_production","cernion_co2_intensity"],"ENTSO-E":["entsoe_day_ahead_prices","entsoe_unavailability","entsoe_physical_flows"]},"metadata":{"totalTools":50,"categories":9}}}}}}}},"description":"Explore available data sources to prevent query errors and build dynamic UIs. Provides schema information about databases, tables, columns, operators, and available MCP tools.\n\n**Scopes**:\n- **tools**: List all available MCP tools by category\n- **databases**: Available databases (mastr_db, energy_charts_api, etc.)\n- **tables**: Tables in a specific database (requires database parameter)\n- **columns**: Columns in a table (requires database + table parameters)\n- **operators**: Available grid operators and energy suppliers\n- **locations**: Available regions, states, and postal codes (optional region filter)\n- **examples**: Sample queries for common use cases\n\n**Use Cases**:\n- Prevent query errors (validate parameters before execution)\n- Build dynamic UIs with available options\n- Explore data structure without documentation\n- Auto-complete functionality for query builders\n- Validate grid operator names before queries","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["scope"],"properties":{"scope":{"type":"string","enum":["tools","databases","tables","columns","operators","locations","examples"],"description":"Discovery scope - what to explore","example":"databases"},"database":{"type":"string","description":"Database name (required for tables/columns scope)","example":"mastr_db"},"table":{"type":"string","description":"Table name (required for columns scope)","example":"solar_extended"},"region":{"type":"string","description":"Optional filter for locations scope","example":"Baden-Württemberg"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"listDatabases":{"summary":"List available databases","value":{"scope":"databases"}},"listTables":{"summary":"List tables in MaStR database","value":{"scope":"tables","database":"mastr_db"}},"listColumns":{"summary":"List columns in solar table","value":{"scope":"columns","database":"mastr_db","table":"solar_extended"}},"listTools":{"summary":"List all available MCP tools","value":{"scope":"tools"}},"listOperators":{"summary":"List grid operators","value":{"scope":"operators"}},"listLocations":{"summary":"List locations in Baden-Württemberg","value":{"scope":"locations","region":"Baden-Württemberg"}},"getExamples":{"summary":"Get sample queries","value":{"scope":"examples"}}}}}}}},"/api/rcs-rule-catalog/rules":{"get":{"summary":"rcs-rule-catalog.listRuleSets","tags":["rcs-rule-catalog"],"operationId":"rcs_rule_catalog_listRuleSets","parameters":[{"$ref":"#/components/parameters/TokenQuery"},{"name":"status","in":"query","required":false,"schema":{"type":"string"}},{"name":"legalStatus","in":"query","required":false,"schema":{"type":"string"}},{"name":"calculationMode","in":"query","required":false,"schema":{"type":"string"}},{"name":"includeSuperseded","in":"query","required":false,"schema":{"type":"boolean"}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/rcs-rule-catalog/rules/:ruleSetId":{"get":{"summary":"rcs-rule-catalog.getRuleSet","tags":["rcs-rule-catalog"],"operationId":"rcs_rule_catalog_getRuleSet","parameters":[{"$ref":"#/components/parameters/TokenQuery"},{"name":"ruleSetId","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/rcs-simulation-run/runs":{"post":{"summary":"rcs-simulation-run.saveRun","tags":["rcs-simulation-run"],"operationId":"rcs_simulation_run_saveRun","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"assetId":{"type":"string"},"timeframe":{"type":"string"},"summary":{"type":"string"},"assetName":{"type":"string"},"assetIds":{"type":"string"},"scope":{"type":"string"},"ruleSetId":{"type":"string"},"ruleSetVersion":{"type":"string"},"legalStatus":{"type":"string"},"blueprintId":{"type":"string"},"options":{"type":"string"},"ruleSetSnapshot":{"type":"string"},"assetSnapshot":{"type":"string"},"readinessSnapshot":{"type":"string"},"inputHash":{"type":"string"},"priceSeriesHash":{"type":"string"},"injectionSeriesHash":{"type":"string"},"priceSeries":{"type":"string"},"injectionSeries":{"type":"string"},"warnings":{"type":"string"},"jobId":{"type":"string"},"executionMode":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}},"get":{"summary":"rcs-simulation-run.listRuns","tags":["rcs-simulation-run"],"operationId":"rcs_simulation_run_listRuns","parameters":[{"$ref":"#/components/parameters/TokenQuery"},{"name":"assetId","in":"query","required":false,"schema":{"type":"string"}},{"name":"ruleSetId","in":"query","required":false,"schema":{"type":"string"}},{"name":"jobId","in":"query","required":false,"schema":{"type":"string"}},{"name":"executionMode","in":"query","required":false,"schema":{"type":"string"}},{"name":"status","in":"query","required":false,"schema":{"type":"string"}},{"name":"from","in":"query","required":false,"schema":{"type":"string"}},{"name":"to","in":"query","required":false,"schema":{"type":"string"}},{"name":"includeDeleted","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"limit","in":"query","required":false,"schema":{"type":"number"}},{"name":"offset","in":"query","required":false,"schema":{"type":"number"}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/rcs-simulation-run/runs/:runId":{"get":{"summary":"rcs-simulation-run.getRun","tags":["rcs-simulation-run"],"operationId":"rcs_simulation_run_getRun","parameters":[{"$ref":"#/components/parameters/TokenQuery"},{"name":"runId","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}},"delete":{"summary":"rcs-simulation-run.deleteRun","tags":["rcs-simulation-run"],"operationId":"rcs_simulation_run_deleteRun","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"runId":{"type":"string"},"deletedBy":{"type":"string"},"deleteReason":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}}},"/api/rcs-simulation-run/runs/:runId/assets":{"get":{"summary":"rcs-simulation-run.listRunAssets","tags":["rcs-simulation-run"],"operationId":"rcs_simulation_run_listRunAssets","parameters":[{"$ref":"#/components/parameters/TokenQuery"},{"name":"runId","in":"query","required":false,"schema":{"type":"string"}},{"name":"status","in":"query","required":false,"schema":{"type":"string"}},{"name":"readinessStatus","in":"query","required":false,"schema":{"type":"string"}},{"name":"technology","in":"query","required":false,"schema":{"type":"string"}},{"name":"q","in":"query","required":false,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"number"}},{"name":"offset","in":"query","required":false,"schema":{"type":"number"}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/rcs-simulation-run/runs/:runId/assets/:assetId":{"get":{"summary":"rcs-simulation-run.getRunAsset","tags":["rcs-simulation-run"],"operationId":"rcs_simulation_run_getRunAsset","parameters":[{"$ref":"#/components/parameters/TokenQuery"},{"name":"runId","in":"query","required":false,"schema":{"type":"string"}},{"name":"assetId","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/rcs-simulation-run/runs/:runId/errors":{"get":{"summary":"rcs-simulation-run.listRunErrors","tags":["rcs-simulation-run"],"operationId":"rcs_simulation_run_listRunErrors","parameters":[{"$ref":"#/components/parameters/TokenQuery"},{"name":"runId","in":"query","required":false,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"number"}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/rcs-simulation-run/runs/:runId/assets/:assetId/trace":{"get":{"summary":"rcs-simulation-run.getTrace","tags":["rcs-simulation-run"],"operationId":"rcs_simulation_run_getTrace","parameters":[{"$ref":"#/components/parameters/TokenQuery"},{"name":"runId","in":"query","required":false,"schema":{"type":"string"}},{"name":"assetId","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/rcs-simulation-run/runs/:runId/readiness":{"get":{"summary":"rcs-simulation-run.getRunReadiness","tags":["rcs-simulation-run"],"operationId":"rcs_simulation_run_getRunReadiness","parameters":[{"$ref":"#/components/parameters/TokenQuery"},{"name":"runId","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/residual-load/net-residual-load":{"post":{"summary":"Net residual load forecast (SMARD load − MaStR EE generation)","tags":["Residual Load"],"operationId":"residual_load_netResidualLoad","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Residual load forecast generated successfully","content":{"application/json":{"schema":{"type":"object","properties":{"summary":{"type":"object","properties":{"region":{"type":"string","example":"Ludwigshafen"},"isHistorical":{"type":"boolean","description":"true when startDate is in the past (SMARD filter 410 + observed weather used)","example":false},"dataMode":{"type":"string","enum":["weather_forecast","historical_observation"],"description":"\"weather_forecast\" for future dates, \"historical_observation\" for past dates","example":"weather_forecast"},"forecastPeriod":{"type":"object","properties":{"start":{"type":"string","format":"date-time"},"end":{"type":"string","format":"date-time"}}},"resolution":{"type":"string","example":"hourly"},"dataPoints":{"type":"number","example":24},"installedCapacity":{"type":"object","properties":{"totalPV_MW":{"type":"number","example":42.7},"totalWind_MW":{"type":"number","example":8.1},"pvInstallations":{"type":"number","example":1203},"windInstallations":{"type":"number","example":12}}},"loadScaling":{"type":"object","properties":{"populationUsed":{"type":"string","example":"170.000"},"scalingFactorPct":{"type":"string","example":"0.202%"},"isActualData":{"type":"boolean","example":true},"dataSource":{"type":"string","example":"SMARD filter 410 (realized)"}}},"kpis":{"type":"object","properties":{"peakResidualLoadMW":{"type":"number","example":87.4},"peakResidualAt":{"type":"string","format":"date-time"},"minResidualLoadMW":{"type":"number","example":31.2},"avgResidualLoadMW":{"type":"number","example":58.9},"totalLoadMWh":{"type":"number","example":1413.6},"totalEEGenerationMWh":{"type":"number","example":38.2},"totalResidualLoadMWh":{"type":"number","example":1375.4},"avgEESharePct":{"type":"number","example":2.7}}}}},"forecast":{"type":"array","items":{"type":"object","properties":{"timestamp":{"type":"string","format":"date-time"},"loadMW":{"type":"number","description":"Regional load in MW"},"pvGenerationMW":{"type":"number","description":"PV generation in MW"},"windGenerationMW":{"type":"number","description":"Wind generation in MW"},"eeGenerationMW":{"type":"number","description":"Total EE generation in MW"},"residualLoadMW":{"type":"number","description":"Net residual load in MW (= loadMW − eeGenerationMW)"},"eeSharePct":{"type":"number","description":"EE share of total load in %"}}}},"methodology":{"type":"object","properties":{"loadModel":{"type":"string"},"eeModel":{"type":"string"},"residualFormula":{"type":"string","example":"Residuallast = RegionaleLast − PV − Wind"},"interpolation":{"type":"string"}}}}}},"text/csv":{"description":"CSV with metadata comments (when format=csv)","example":"# Net Residual Load Forecast\n# Region: Ludwigshafen\nTimestamp,Load (MW),PV Generation (MW),Wind Generation (MW),EE Generation (MW),Residual Load (MW),EE Share (%)"},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":{"description":"Excel XLSX with Forecast + Summary sheets (when format=xlsx)","schema":{"type":"string","format":"binary"}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"example":{"success":false,"error":{"code":"RESIDUAL_LOAD_ERROR","message":"region is required"}}}}}},"description":"Calculates **net residual load** for a grid area or region — the electricity volume a Stadtwerk or EVU must procure on the EPEX spot market:\n\n**Residual Load = Regional Load − PV Generation − Wind Generation**\n\n**Data sources (all real API data, no LLM estimates):**\n- **Regional load**: SMARD.de national load × population ratio (no API key required)\n- **PV generation**: MaStR installed capacity × IEC 61853 solar model + Visual Crossing weather\n- **Wind generation**: MaStR installed capacity × IEC 61400 wind model + Visual Crossing weather\n\n**Time resolutions:**\n- `\"hourly\"` (default): 24 data points/day — intraday dispatch planning, trading\n- `\"15min\"`: 96 data points/day — §12 StromNZV Fahrplanlieferung and Bilanzkreisabrechnung\n\n**SMARD data availability:**\n| Period | Source | isActualData |\n|--------|--------|--------------|\n| Past/today | Filter 410 (realised, ~1h delay) | true |\n| D+1 | Filter 411 (day-ahead TSO forecast) | true |\n| D+2–D+14 | Filter 410, reference week −7 days | false |\n\n**⚠️ Known limitations:**\n- Load is approximated via population ratio — good for residential/SME, not large industrial consumers\n- Use `populationOverride` for known population figures (improves scaling accuracy)\n- EE accuracy ±10–20 % depending on weather forecast quality (degrades D+3 and beyond)\n**Historical mode (`startDate` in the past):**\n- SMARD automatically switches to filter 410 (realised load, no extra parameter needed)\n- Visual Crossing returns observed weather instead of a forecast — identical IEC calculation\n- Response gains `summary.isHistorical: true` and `summary.dataMode: \"historical_observation\"`\n- Historical responses are cached for **30 days** (immutable data, no additional API quota)\n**Use cases:**\n- **Day-ahead procurement**: Determine how much to buy on EPEX (residual load = required purchase)\n- **Intraday management**: Hourly/15-min profile for dispatch optimisation\n- **Grid planning**: Identify peak residual load periods for capacity planning\n- **Billing groups (§12 StromNZV)**: 15-min Fahrplan delivery to TSO/DSO","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":[],"properties":{"region":{"type":"string","description":"City or region name for SMARD population scaling (e.g. \"Ludwigshafen\", \"Bayern\", \"Heidelberg\")","example":"Ludwigshafen"},"gridOperatorMastrId":{"type":"string","description":"MaStR Netzbetreiber-ID (SNB/GNB...) for EE capacity query. Resolve via cernion_vnb_lookup.","example":"SNB935578300972"},"bundesland":{"type":"string","description":"Federal state","example":"Rheinland-Pfalz"},"landkreis":{"type":"string","description":"Landkreis name","example":"Ludwigshafen am Rhein"},"gemeinde":{"type":"string","description":"Municipality name","example":"Ludwigshafen"},"postleitzahl":{"type":"string","pattern":"^[0-9]{5}$","description":"5-digit postal code","example":"67059"},"latitude":{"type":"number","description":"Latitude for weather data","example":49.4744},"longitude":{"type":"number","description":"Longitude for weather data","example":8.4349},"populationOverride":{"type":"number","description":"Known population of the grid area. Overrides internal lookup. Important for industrial locations (e.g. BASF/Ludwigshafen).","example":170000},"forecastDays":{"type":"number","minimum":1,"maximum":14,"default":1,"description":"Number of forecast days (1–14)","example":1},"resolution":{"type":"string","enum":["hourly","hour","15min"],"default":"hourly","description":"`\"hourly\"` / `\"hour\"` = 24 pts/day (trading); `\"15min\"` = 96 pts/day (§12 StromNZV Fahrplan). `\"hour\"` is accepted as an alias for `\"hourly\"`.","example":"hourly"},"installationType":{"type":"string","enum":["solar","wind","all"],"default":"all","description":"Which EE types to subtract from load","example":"all"},"startDate":{"type":"string","pattern":"^[0-9]{4}-[0-9]{2}-[0-9]{2}$","description":"Optional start date (YYYY-MM-DD). Omit for default tomorrow behaviour. Past dates switch to historical observation mode: SMARD filter 410 (realised) + observed weather, 30-day cache.","example":"2026-02-10"},"format":{"type":"string","enum":["json","csv","xlsx"],"default":"json","description":"Output format","example":"json"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"dayAheadProcurement":{"summary":"STROMDAO day-ahead procurement (15-min, tomorrow)","value":{"region":"Ludwigshafen","gridOperatorMastrId":"SNB935578300972","forecastDays":1,"resolution":"15min","installationType":"all"}},"weeklyBavaria":{"summary":"Weekly residual load for Bavaria (hourly)","value":{"region":"Bayern","bundesland":"Bayern","forecastDays":7,"resolution":"hourly"}},"industrialSite":{"summary":"Industrial site with known population override","value":{"region":"Mannheim","populationOverride":320000,"forecastDays":2,"resolution":"15min"}},"csvExport":{"summary":"Download residual load profile as CSV","value":{"region":"Heidelberg","postleitzahl":"69115","forecastDays":1,"resolution":"hourly","format":"csv"}},"xlsxExport":{"summary":"Download residual load profile as Excel","value":{"region":"Bayern","bundesland":"Bayern","forecastDays":3,"resolution":"15min","format":"xlsx"}},"historicalResidualLoad":{"summary":"Historical residual load analysis (past date, realised SMARD data)","value":{"region":"Ludwigshafen","gridOperatorMastrId":"SNB935578300972","startDate":"2026-02-10","forecastDays":7,"resolution":"hourly"}}}}}}}},"/api/residual-load/load-forecast-regional":{"post":{"summary":"Regional load forecast with LLM reasoning and real MaStR capacity anchors","tags":["Residual Load"],"operationId":"residual_load_loadForecastRegional","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Load forecast generated successfully","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":true},"data":{"type":"object","description":"LLM-generated load forecast analysis with real MaStR capacity anchors"}}}}}}},"description":"LLM-based regional load forecast enriched with **real MaStR installation data** injected into the reasoning prompt.\n\n**What is real vs. LLM-estimated:**\n| Component | Data source |\n|-----------|-------------|\n| Installed PV capacity (MW, installation count) | MaStR (real) |\n| Installed wind capacity (MW, installation count) | MaStR (real) |\n| SMARD population scaling factor | SMARD.de (real) |\n| Load profile shape, calendar effects, procurement recommendation | LLM reasoning |\n\n**Graceful degradation:** If MaStR queries time out, the tool falls back to placeholder values and the LLM call still completes.\n\n**Use cases:**\n- Stadtwerk procurement planning with natural-language recommendations\n- KPI summaries for management dashboards\n- When full hour-by-hour time-series (see `netResidualLoad`) is not needed","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":[],"properties":{"region":{"type":"string","description":"City or region name","example":"Mannheim"},"forecastDays":{"type":"number","minimum":1,"maximum":7,"default":1,"description":"Number of days to forecast (1–7)","example":1},"populationOverride":{"type":"number","description":"Known population of the grid area. Improves load scaling accuracy.","example":320000},"gridOperatorMastrId":{"type":"string","description":"MaStR Netzbetreiber-ID for EE capacity lookup","example":"SNB935578300972"},"bundesland":{"type":"string","description":"Federal state for MaStR capacity query","example":"Baden-Württemberg"},"postleitzahl":{"type":"string","description":"5-digit postal code for MaStR capacity query","example":"68159"},"additionalContext":{"type":"string","description":"Extra context for the LLM (e.g. \"large BASF industrial plant in area\")","example":"Large chemical plant (BASF) adds ~200 MW industrial base load"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"dayAheadMannheim":{"summary":"Day-ahead load forecast for Mannheim","value":{"region":"Mannheim","populationOverride":320000,"forecastDays":1}},"weeklyWithOperator":{"summary":"3-day forecast for a grid operator area","value":{"region":"Ludwigshafen","gridOperatorMastrId":"SNB935578300972","forecastDays":3}},"industrialContext":{"summary":"Industrial site with additional LLM context","value":{"region":"Ludwigshafen","populationOverride":170000,"additionalContext":"Large chemical plant (BASF) adds ~200 MW industrial base load","forecastDays":1}}}}}}}},"/api/stadtwerk-mauer-e2e-process-demo/run":{"post":{"summary":"stadtwerk-mauer-e2e-process-demo.runDemo","tags":["stadtwerk-mauer-e2e-process-demo"],"operationId":"stadtwerk_mauer_e2e_process_demo_runDemo","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"tenantId":{"type":"string"},"caseId":{"type":"string"},"demoPath":{"type":"string"},"electricianRegistrationRef":{"type":"string"},"customerConsentStatus":{"type":"string"},"contactRef":{"type":"string"},"messageTemplate":{"type":"string"},"pvPlantKw":{"type":"number"},"napReference":{"type":"string"},"maloId":{"type":"string"},"meloId":{"type":"string"},"meterId":{"type":"string"},"resetBeforeRun":{"type":"boolean"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}}},"/api/stadtwerk-mauer-e2e-process-demo/status":{"get":{"summary":"stadtwerk-mauer-e2e-process-demo.getStatus","tags":["stadtwerk-mauer-e2e-process-demo"],"operationId":"stadtwerk_mauer_e2e_process_demo_getStatus","parameters":[{"$ref":"#/components/parameters/TokenQuery"},{"name":"tenantId","in":"query","required":false,"schema":{"type":"string"}},{"name":"caseId","in":"query","required":false,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"number"}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/stadtwerk-mauer-external-interface-stubs/call":{"post":{"summary":"stadtwerk-mauer-external-interface-stubs.callStub","tags":["stadtwerk-mauer-external-interface-stubs"],"operationId":"stadtwerk_mauer_external_interface_stubs_callStub","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"tenantId":{"type":"string"},"stubFamily":{"type":"string"},"caseId":{"type":"string"},"responseVariant":{"type":"string"},"request":{"type":"string"},"deadlineAt":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}}},"/api/stadtwerk-mauer-external-interface-stubs/status":{"get":{"summary":"stadtwerk-mauer-external-interface-stubs.getStatus","tags":["stadtwerk-mauer-external-interface-stubs"],"operationId":"stadtwerk_mauer_external_interface_stubs_getStatus","parameters":[{"$ref":"#/components/parameters/TokenQuery"},{"name":"tenantId","in":"query","required":false,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"number"}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/stadtwerk-mauer-mastr-data-overlay/status":{"get":{"summary":"stadtwerk-mauer-mastr-data-overlay.getStatus","tags":["stadtwerk-mauer-mastr-data-overlay"],"operationId":"stadtwerk_mauer_mastr_data_overlay_getStatus","parameters":[{"$ref":"#/components/parameters/TokenQuery"},{"name":"tenantId","in":"query","required":false,"schema":{"type":"string"}},{"name":"postalCode","in":"query","required":false,"schema":{"type":"string"}},{"name":"municipality","in":"query","required":false,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/stadtwerk-mauer-sandbox-runtime/events":{"post":{"summary":"stadtwerk-mauer-sandbox-runtime.ingestEvent","tags":["stadtwerk-mauer-sandbox-runtime"],"operationId":"stadtwerk_mauer_sandbox_runtime_ingestEvent","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"tenantId":{"type":"string"},"eventType":{"type":"string"},"caseId":{"type":"string"},"sourceRef":{"type":"string"},"payload":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}}},"/api/stadtwerk-mauer-sandbox-runtime/reset":{"post":{"summary":"stadtwerk-mauer-sandbox-runtime.reset","tags":["stadtwerk-mauer-sandbox-runtime"],"operationId":"stadtwerk_mauer_sandbox_runtime_reset","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"tenantId":{"type":"string"},"reason":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}}},"/api/stadtwerk-mauer-sandbox-runtime/case-annotations":{"post":{"summary":"stadtwerk-mauer-sandbox-runtime.recordCaseAnnotation","tags":["stadtwerk-mauer-sandbox-runtime"],"operationId":"stadtwerk_mauer_sandbox_runtime_recordCaseAnnotation","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"tenantId":{"type":"string"},"caseId":{"type":"string"},"commandType":{"type":"string"},"status":{"type":"string"},"note":{"type":"string"},"reason":{"type":"string"},"actorLabel":{"type":"string"},"sourceLabel":{"type":"string"},"idempotencyKey":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}},"get":{"summary":"stadtwerk-mauer-sandbox-runtime.listCaseAnnotations","tags":["stadtwerk-mauer-sandbox-runtime"],"operationId":"stadtwerk_mauer_sandbox_runtime_listCaseAnnotations","parameters":[{"$ref":"#/components/parameters/TokenQuery"},{"name":"tenantId","in":"query","required":false,"schema":{"type":"string"}},{"name":"caseId","in":"query","required":false,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"number"}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/stadtwerk-mauer-sandbox-runtime/status":{"get":{"summary":"stadtwerk-mauer-sandbox-runtime.status","tags":["stadtwerk-mauer-sandbox-runtime"],"operationId":"stadtwerk_mauer_sandbox_runtime_status","parameters":[{"$ref":"#/components/parameters/TokenQuery"},{"name":"tenantId","in":"query","required":false,"schema":{"type":"string"}},{"name":"tenantId","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/system/status":{"get":{"summary":"System and provider status check","tags":["System Tools"],"operationId":"system_status","parameters":[{"name":"verbose","in":"query","schema":{"type":"boolean","default":false},"description":"Include detailed provider diagnostics and cache stats"},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"Check data provider connectivity (Powabase, ENTSO-E, SMARD, GrünstromIndex), cache statistics, and performance metrics"}},"/api/system/llm/health":{"get":{"summary":"LLM provider health check","tags":["System Tools"],"operationId":"system_llmHealth","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"Checks configured LLM provider capabilities and probe calls (generateText + embeddings) with degraded state reporting."}},"/api/system/validate-params":{"post":{"summary":"Validate tool parameters before execution","tags":["System Tools"],"operationId":"system_validateParams","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Validation result","content":{"application/json":{"schema":{"type":"object","properties":{"valid":{"type":"boolean","example":true},"errors":{"type":"array","items":{"type":"string"},"description":"List of validation errors (empty when valid)","example":[]},"suggestions":{"type":"array","items":{"type":"string"},"description":"Suggestions for fixing invalid parameters"}}}}}}},"description":"Pre-validation before expensive operations, error prevention. Validates parameters for any MCP tool before running it, returning detailed error messages and suggestions for corrections.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["tool","params"],"properties":{"tool":{"type":"string","description":"MCP tool name to validate parameters for","example":"mastr_generation_forecast"},"params":{"type":"object","description":"Parameters object to validate against the tool schema","example":{"region":"Bayern","forecastDays":7}},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"validateForecast":{"summary":"Validate generation forecast params","value":{"tool":"mastr_generation_forecast","params":{"bundesland":"Bayern","installationType":"solar","forecastDays":7}}},"validateResidualLoad":{"summary":"Validate residual load params","value":{"tool":"mastr_net_residual_load","params":{"region":"Ludwigshafen","resolution":"hourly","forecastDays":1}}}}}}}}},"/api/system/job-status/:jobId":{"get":{"summary":"Check status of async jobs","tags":["System Tools"],"operationId":"system_jobStatus","parameters":[{"name":"jobId","in":"path","required":true,"schema":{"type":"string","example":"job_abc123"},"description":"Async job ID returned by a long-running endpoint"},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"Job states: queued, running, succeeded, failed"}},"/api/system/job-result/:jobId":{"get":{"summary":"Retrieve result of async job","tags":["System Tools"],"operationId":"system_jobResult","parameters":[{"name":"jobId","in":"path","required":true,"schema":{"type":"string","example":"job_abc123"},"description":"Async job ID returned by a long-running endpoint"},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"Polling for long-running operations, retrieve results after completion"}},"/api/tabular/profile":{"post":{"summary":"Build a privacy-aware deterministic table profile","tags":["Tabular Intelligence"],"operationId":"tabular_profile","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["sourceId"],"properties":{"sourceId":{"type":"string","example":"metering-source-01"},"maxRows":{"type":"integer","default":5000,"example":5000},"privacyContext":{"type":"string","enum":["ai-agent","public"],"default":"ai-agent","example":"ai-agent"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"request":{"summary":"Tabular intelligence request","value":{"sourceId":"metering-source-01","maxRows":5000,"privacyContext":"ai-agent"}}}}}}}},"/api/tabular/llm-context":{"post":{"summary":"Build bounded LLM-safe context without raw table rows","tags":["Tabular Intelligence"],"operationId":"tabular_llmContext","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["sourceIds"],"properties":{"sourceIds":{"type":"array","items":{"type":"string"},"example":["metering-source-01"]},"maxTokens":{"type":"integer","default":2000,"example":2000},"privacyContext":{"type":"string","enum":["ai-agent","public"],"default":"ai-agent","example":"ai-agent"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"request":{"summary":"Tabular intelligence request","value":{"sourceIds":["metering-source-01"],"maxTokens":2000,"privacyContext":"ai-agent"}}}}}}}},"/api/tabular/query-plan":{"post":{"summary":"Create or validate an allow-listed tabular analysis plan","tags":["Tabular Intelligence"],"operationId":"tabular_queryPlan","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","required":[],"properties":{"sourceIds":{"type":"array","items":{"type":"string"},"example":["metering-source-01"]},"question":{"type":"string","example":"What is the total consumption?"},"plan":{"type":"object","default":null,"example":{}},"useLlm":{"type":"boolean","default":false,"example":false},"maxTokens":{"type":"integer","default":2000,"example":2000},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"request":{"summary":"Tabular intelligence request","value":{"sourceIds":["metering-source-01"],"question":"What is the total consumption?","useLlm":false}}}}}}}},"/api/tabular/execute-plan":{"post":{"summary":"Execute a validated tabular plan deterministically","tags":["Tabular Intelligence"],"operationId":"tabular_executePlan","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["plan"],"properties":{"plan":{"type":"object","example":{"schemaVersion":"1.0","sources":[],"operations":[]}},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"request":{"summary":"Tabular intelligence request","value":{"plan":{"schemaVersion":"1.0","sources":[{"alias":"table","sourceId":"metering-source-01"}],"operations":[{"op":"aggregate","groupBy":[],"metrics":[{"fn":"sum","field":"value","as":"totalValue"}]}]}}}}}}}}},"/api/tabular/ask":{"post":{"summary":"Answer a table question with deterministic results and evidence","tags":["Tabular Intelligence"],"operationId":"tabular_ask","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["question"],"properties":{"question":{"type":"string","example":"What is the total consumption?"},"sourceIds":{"type":"array","items":{"type":"string"},"example":["metering-source-01"]},"plan":{"type":"object","default":null,"example":{}},"useLlm":{"type":"boolean","default":false,"example":false},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"request":{"summary":"Tabular intelligence request","value":{"question":"What is the total consumption?","sourceIds":["metering-source-01"],"useLlm":false}}}}}}}},"/api/tabular/quality-report":{"post":{"summary":"Build an evidence-backed table quality report","tags":["Tabular Intelligence"],"operationId":"tabular_qualityReport","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["sourceId"],"properties":{"sourceId":{"type":"string","example":"metering-source-01"},"timestampField":{"type":"string","default":null,"example":"timestamp"},"intervalMinutes":{"type":"integer","default":15,"example":15},"duplicateFields":{"type":"array","items":{"type":"string"},"example":["timestamp"]},"outlierField":{"type":"string","default":null,"example":"value"},"outlierThreshold":{"type":"number","default":3,"example":3},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"request":{"summary":"Tabular intelligence request","value":{"sourceId":"metering-source-01","timestampField":"timestamp","intervalMinutes":15,"duplicateFields":["timestamp"],"outlierField":"value"}}}}}}}},"/api/tenant-quota/tenants/:id/quotas":{"get":{"summary":"Get current quota and usage snapshot for one tenant","tags":["Tenant Quotas"],"operationId":"tenant_quota_getQuotas","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","example":"stadtwerk-a"},"description":"Tenant identifier."},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Quota snapshot for the tenant."},"403":{"description":"Tenant scope violation or missing full-access authorization."}},"description":"Phase-1 read-only quota endpoint (v0.48.4). Returns configured rate-limit defaults, active quota windows, driver info, and recent quota events for the selected tenant."},"put":{"summary":"Update tenant quota and rate-limit configuration","tags":["Tenant Quotas"],"operationId":"tenant_quota_setQuotas","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","example":"stadtwerk-a"},"description":"Tenant identifier."},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Updated tenant quota snapshot."},"403":{"description":"Tenant scope violation or missing full-access authorization."},"422":{"description":"Invalid payload (unknown keys or non-numeric values)."}},"description":"Write/admin endpoint for tenant-specific quota and endpoint-class rate-limit overrides. Requires full-access token at gateway level and tenant-scope check in service.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"rateLimits":{"type":"object","properties":{"read":{"type":"integer","minimum":0,"example":600},"write":{"type":"integer","minimum":0,"example":60},"compute":{"type":"integer","minimum":0,"example":30}}},"quotas":{"type":"object","properties":{"llm_tokens_per_day":{"type":"integer","minimum":0,"example":250000},"llm_tokens_per_month":{"type":"integer","minimum":0,"example":5000000},"max_async_jobs_per_day":{"type":"integer","minimum":0,"example":250},"max_rag_chunks_per_month":{"type":"integer","minimum":0,"example":100000}}},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}}}}}}},"/api/tenant-quota/tenants/:id/rate-limit-events":{"get":{"summary":"List recent rate-limit and quota events for one tenant","tags":["Tenant Quotas"],"operationId":"tenant_quota_listEvents","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","example":"stadtwerk-a"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"minimum":1,"maximum":200}},{"name":"type","in":"query","required":false,"schema":{"type":"string","enum":["quota.threshold.reached","quota.exhausted","rate_limit.exceeded"],"example":"quota.threshold.reached"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Recent tenant events."}},"description":"Returns the most recent tenant-scoped quota/rate events recorded by the new rate-quota foundation layer. Phase 1 exposes read-only visibility for operational review."}},"/api/tokens":{"get":{"summary":"List known tenant IDs","tags":["IntegrationHub"],"operationId":"token_manager_list","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"List of tenant IDs","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":true},"tenants":{"type":"array","items":{"type":"string"},"example":["stadtwerk-a","stadtwerk-b"]},"count":{"type":"integer","example":2}}}}}}},"description":"Returns all unique tenantIds that appear in stored tokens. Requires full-access scope. Empty list when no tenant-scoped tokens exist."},"post":{"summary":"Create API token","tags":["IntegrationHub"],"operationId":"token_manager_create","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["name","tenantId","userId"],"properties":{"name":{"type":"string","example":"Power BI Connector"},"scope":{"type":"string","enum":["read-only","full-access"],"default":"read-only","example":"read-only"},"tenantId":{"type":"string","example":"stadtwerk-a"},"userId":{"type":"string","example":"svc:powerbi-connector"},"scopes":{"type":"array","items":{"type":"string"},"example":["rundeck-read","rundeck-dry-run"]},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"readOnly":{"summary":"Create a read-only token","value":{"name":"Power BI Connector","scope":"read-only","tenantId":"stadtwerk-a","userId":"svc:powerbi-connector"}},"fullAccess":{"summary":"Create a full-access token","value":{"name":"Admin Token","scope":"full-access","tenantId":"stadtwerk-a","userId":"admin"}}}}}}}},"/api/tokens/:id":{"delete":{"summary":"Revoke API token","tags":["IntegrationHub"],"operationId":"token_manager_revoke","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}}},"/api/tokens/verify":{"post":{"summary":"Verify API token","tags":["IntegrationHub"],"operationId":"token_manager_verify","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["token"],"properties":{"token":{"type":"string","example":"ck_abc123..."},"method":{"type":"string","example":"GET","default":null},"path":{"type":"string","example":"/api/tokens","default":null},"trackUsage":{"type":"boolean","default":false,"example":false}}},"examples":{"basic":{"summary":"Verify a token","value":{"token":"ck_abc123...","method":"GET","path":"/api/tokens"}}}}}}}},"/api/tokens/tenants":{"get":{"summary":"List known tenant IDs","tags":["IntegrationHub"],"operationId":"token_manager_list","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"List of tenant IDs","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":true},"tenants":{"type":"array","items":{"type":"string"},"example":["stadtwerk-a","stadtwerk-b"]},"count":{"type":"integer","example":2}}}}}}},"description":"Returns all unique tenantIds that appear in stored tokens. Requires full-access scope. Empty list when no tenant-scoped tokens exist."}},"/api/utility-report/get-bdew-options":{"post":{"summary":"Get available BDEW codes for a utility name","tags":["Utility Report"],"operationId":"utility_report_getBdewOptions","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Available BDEW code options","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"utilityName":{"type":"string"},"optionsCount":{"type":"number"},"options":{"type":"array","items":{"type":"object","properties":{"bdew":{"type":"string","description":"BDEW code (e.g., \"9907462000006\")"},"name":{"type":"string","description":"VNB name"},"city":{"type":"string","nullable":true},"roles":{"type":"array","items":{"type":"string"},"description":"Market roles (e.g., [\"Lieferant\", \"Bilanzgruppe\"])"}}}},"message":{"type":"string"}}}}}}},"description":"Returns all BDEW codes available for the given utility name, grouped by market role.\nThis is useful when a user wants to generate a report but doesn't know the BDEW code.\nA single Stadtwerk may have multiple BDEW codes for different roles (Lieferant, Bilanzgruppe, etc.).","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["utilityName"],"properties":{"utilityName":{"type":"string","description":"Name of the energy utility","example":"Stadtwerke Frankenthal"},"region":{"type":"string","description":"Optional region/city for context","example":"Frankenthal"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"frankenthalOptions":{"summary":"Find BDEW options for Stadtwerke Frankenthal","value":{"utilityName":"Stadtwerke Frankenthal","region":"Frankenthal"}}}}}}}},"/api/utility-report/generate":{"post":{"summary":"Generate a 360° Management Report for an energy utility (Stadtwerk)","tags":["Utility Report"],"operationId":"utility_report_generate","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Cached report (gateway/internal) or direct result (internal call)","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"reportId":{"type":"string"},"status":{"type":"string","enum":["generating","completed","cached"]},"message":{"type":"string"},"downloadUrl":{"type":"string"}}}}}},"202":{"description":"REST/Gateway call accepted as async job","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"jobId":{"type":"string"},"status":{"type":"string","enum":["queued"]},"message":{"type":"string"},"statusUrl":{"type":"string"},"resultUrl":{"type":"string"},"progressUrl":{"type":"string"},"reportId":{"type":"string"},"downloadUrl":{"type":"string"}}}}}}},"description":"Starts (or resumes) the generation of a comprehensive ~50-section HTML management report for German energy utilities.\n\n**Report sections:**\n1. Netzbetrieb & Netzplanung (capacity utilization, redispatch, residual load, CO₂)\n2. Erneuerbare Energien & Einspeiser (PV, Wind, Storage from MaStR)\n3. Energiemarkt & Preise (EPEX, ENTSO-E, SMARD)\n4. Gasinfrastruktur & Versorgungssicherheit (AGSI/GIE)\n5. Regulierung, Compliance & Marktprozesse (BNetzA EWK)\n6. Kundenmanagement, Vertrieb & Prosumer (churn, leads)\n7. Investitionsplanung & Business Cases\n8. Digitalisierung & Systemübersicht\n\n**Caching:** Reports are cached for 7 days (UUID filename). Identical requests return the cached report.\n**Resumability:** Generation progress is saved after each phase. If generation is interrupted, retry the same request to resume.\n**PDF:** Open the downloaded HTML in a browser and use Print → Save as PDF.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["utilityName"],"properties":{"utilityName":{"type":"string","description":"Name of the energy utility","example":"Stadtwerke Heidelberg GmbH"},"region":{"type":"string","description":"Region, city or postal code for context","example":"Heidelberg"},"bdew":{"type":"string","description":"BDEW code of the grid operator (optional, improves data quality)","example":"9907462000006"},"forceRefresh":{"type":"boolean","description":"Force regeneration even if a cached report exists","default":false},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"stadtwerkeHeidelberg":{"summary":"Stadtwerke Heidelberg","value":{"utilityName":"Stadtwerke Heidelberg GmbH","region":"Heidelberg","bdew":"9907462000006"}},"stromdaoNetze":{"summary":"STROMDAO Netze GmbH","value":{"utilityName":"STROMDAO Netze GmbH","region":"Ludwigshafen","bdew":"9907462000013"}}}}}}}},"/api/utility-report/status/:reportId":{"get":{"summary":"Poll generation status of a utility report","tags":["Utility Report"],"operationId":"utility_report_status","parameters":[{"name":"reportId","in":"path","required":true,"schema":{"type":"string","example":"2a70e478-90ce-4fa5-b996-6f98efdba7cf"},"description":"Report UUID returned by /utility-report/generate"},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Report status","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"reportId":{"type":"string"},"status":{"type":"string","enum":["generating","completed","error"]},"phase":{"type":"number"},"phaseName":{"type":"string"},"progress":{"type":"number","description":"0–100 completion percentage"},"error":{"type":"string","nullable":true},"downloadUrl":{"type":"string","nullable":true}}}}}}},"description":"Returns current phase, completion percentage and any errors."}},"/api/utility-report/health":{"get":{"summary":"Check MCP connection health and token validity","tags":["Utility Report"],"operationId":"utility_report_health","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Health check result","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"status":{"type":"string","enum":["ok","error"]},"tokenPresent":{"type":"boolean"},"mcpReachable":{"type":"boolean"},"toolCount":{"type":"number"},"phase3Tools":{"type":"object","nullable":true,"properties":{"available":{"type":"number"},"unavailable":{"type":"number"},"unavailableList":{"type":"array","items":{"type":"string"}}}},"latencyMs":{"type":"number"},"error":{"type":"string","nullable":true}}}}}}},"description":"Tests the Cernion MCP connection using the configured token. Returns `status: \"ok\"` only when the token is present and the MCP server responds successfully. Use this endpoint to diagnose why report generation fails with MCP_CONNECTION_ERROR."}},"/api/utility-report/rebuild/:reportId":{"post":{"summary":"Re-render an existing report from cached data","tags":["Utility Report"],"operationId":"utility_report_rebuild","parameters":[{"name":"reportId","in":"path","required":true,"schema":{"type":"string","example":"2a70e478-90ce-4fa5-b996-6f98efdba7cf"},"description":"Report UUID to rebuild"},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Report re-rendered successfully"},"404":{"description":"No progress data found for reportId"},"409":{"description":"Report pipeline has not completed yet"}},"description":"Reads the stored `.progress.json` for the given reportId and re-runs `buildHtmlReport()` to overwrite the `.html` file. Instant – no MCP calls needed. Useful after a report-builder bug fix to refresh already-generated reports.","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","description":"No request body required for this endpoint.","properties":{"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"noBody":{"summary":"No payload needed","value":{}}}}}}}},"/api/utility-report/rebuild-all":{"post":{"summary":"Re-render all completed reports from cached data","tags":["Utility Report"],"operationId":"utility_report_rebuildAll","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Batch rebuild summary"}},"description":"Iterates every `.progress.json` in the reports directory and re-renders the HTML for every completed report. Returns a summary with counts of rebuilt/skipped/failed entries.","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","description":"No request body required for this endpoint.","properties":{"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"noBody":{"summary":"No payload needed","value":{}}}}}}}},"/api/utility-report/download/:reportId":{"get":{"summary":"Download a completed HTML report","tags":["Utility Report"],"operationId":"utility_report_download","parameters":[{"name":"reportId","in":"path","required":true,"schema":{"type":"string","example":"2a70e478-90ce-4fa5-b996-6f98efdba7cf"},"description":"Report UUID to download"},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"HTML report document"},"404":{"description":"Report not found or not yet complete"}},"description":"Returns the raw HTML document. Open in a browser and use Print → Save as PDF."}},"/api/vnb-monitor/:bdewCode":{"get":{"summary":"Get full KPI snapshot for a single VNB","tags":["VNBMonitor"],"operationId":"vnb_monitor_snapshot","parameters":[{"name":"bdewCode","in":"path","required":true,"schema":{"type":"string","example":"10002954"},"description":"BDEW registration number"},{"name":"refresh","in":"query","schema":{"type":"boolean","default":false},"description":"Force cache bypass and re-fetch all KPIs"},{"name":"alerts","in":"query","schema":{"type":"boolean","default":true},"description":"Include alerts array in response"},{"name":"lang","in":"query","schema":{"type":"string","enum":["de","en"],"default":"de"},"description":"Language for alert messages"},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Full KPI snapshot","content":{"application/json":{"schema":{"type":"object","properties":{"schemaVersion":{"type":"string"},"bdewCode":{"type":"string"},"timestamp":{"type":"string","format":"date-time"},"identity":{"type":"object"},"ewk":{"type":"object"},"mastr":{"type":"object"},"market":{"type":"object"},"alerts":{"type":"array"},"alertSummary":{"type":"object"}}}}}},"404":{"description":"VNB not found"},"503":{"description":"All data sources unavailable"}},"description":"Returns aggregated KPIs from EWK, MaStR, and market data for a German grid operator (VNB). Results are cached with a configurable TTL."}},"/api/vnb-monitor":{"get":{"summary":"Get KPI snapshots for multiple VNBs","tags":["VNBMonitor"],"operationId":"vnb_monitor_snapshotMulti","parameters":[{"name":"bdewCodes","in":"query","required":true,"schema":{"type":"string","example":"10002954,9900386000008"},"description":"Comma-separated BDEW codes"},{"name":"refresh","in":"query","schema":{"type":"boolean","default":false},"description":"Force cache bypass"},{"name":"lang","in":"query","schema":{"type":"string","enum":["de","en"],"default":"de"},"description":"Language for alert messages"},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Array of KPI snapshots","content":{"application/json":{"schema":{"type":"array","items":{"type":"object"}}}}}},"description":"Returns aggregated KPIs for multiple grid operators in a single call."}},"/api/vnb-monitor/:bdewCode/alerts":{"get":{"summary":"Get only alerts for a VNB","tags":["VNBMonitor"],"operationId":"vnb_monitor_alerts","parameters":[{"name":"bdewCode","in":"path","required":true,"schema":{"type":"string","example":"10002954"},"description":"BDEW registration number"},{"name":"refresh","in":"query","schema":{"type":"boolean","default":false},"description":"Force cache bypass"},{"name":"lang","in":"query","schema":{"type":"string","enum":["de","en"],"default":"de"},"description":"Language for alert messages"},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Alerts array with summary","content":{"application/json":{"schema":{"type":"object","properties":{"bdewCode":{"type":"string"},"timestamp":{"type":"string","format":"date-time"},"alertCount":{"type":"number"},"criticalCount":{"type":"number"},"alerts":{"type":"array"}}}}}}},"description":"Returns only the alerts array — optimized for Power Automate polling."}},"/api/vnb-monitor/:bdewCode/cache/clear":{"post":{"summary":"Clear cache for a VNB","tags":["VNBMonitor"],"operationId":"vnb_monitor_clearCache","parameters":[{"name":"bdewCode","in":"path","required":true,"schema":{"type":"string","example":"10002954"},"description":"BDEW registration number"},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Cache cleared","content":{"application/json":{"schema":{"type":"object","properties":{"bdewCode":{"type":"string"},"cleared":{"type":"boolean"},"message":{"type":"string"}}}}}}},"description":"Removes the cached snapshot for a VNB, forcing a fresh fetch on next request.","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","description":"Empty object","properties":{"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"empty":{"summary":"Empty request body","value":{}}}}}}}},"/api/vnb-monitor/thresholds":{"get":{"summary":"Get active VNB monitor alert thresholds","tags":["VNBMonitor","IntegrationHub"],"operationId":"vnb_monitor_getThresholds","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Current thresholds","content":{"application/json":{"schema":{"type":"object","properties":{"source":{"type":"string"},"thresholds":{"type":"object"}}}}}}}},"put":{"summary":"Set VNB monitor alert thresholds (full replace)","tags":["VNBMonitor","IntegrationHub"],"operationId":"vnb_monitor_setThresholds","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"thresholds":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}},"delete":{"summary":"Reset VNB monitor alert thresholds to defaults","tags":["VNBMonitor","IntegrationHub"],"operationId":"vnb_monitor_resetThresholds","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}}}}}}},"/api/web-search/query":{"post":{"summary":"Web search via corrently.cloud (SearXNG)","tags":["Web Search"],"operationId":"web_search_query","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Search results","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"query":{"type":"string"},"language":{"type":"string"},"total":{"type":"number"},"results":{"type":"array","items":{"type":"object","properties":{"title":{"type":"string"},"url":{"type":"string"},"snippet":{"type":"string"}}}}}}}}}}}},"description":"Perform a web search using the corrently.cloud privacy-respecting search engine. Used internally to enrich utility reports with current news and context.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["query"],"properties":{"query":{"type":"string","description":"Search query string","example":"Stadtwerke Heidelberg Netzgebiet 2026"},"language":{"type":"string","description":"Language for results","default":"de","example":"de"},"numResults":{"type":"number","description":"Maximum number of results to return","default":5,"minimum":1,"maximum":20},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"utilityNews":{"summary":"News about a utility operator","value":{"query":"STROMDAO Netze GmbH Netzausbau 2026","language":"de","numResults":5}},"ewkBenchmark":{"summary":"EWK benchmark context","value":{"query":"BNetzA EWK Anschlussdauer Vergleich 2024","numResults":3}}}}}}}},"/api/willi-federated/search":{"post":{"summary":"Willi-Federated Marktkommunikation/regulatory knowledge search (read-only)","tags":["Willi-Federated"],"operationId":"willi_federated_search","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only Willi-Federated search result","content":{"application/json":{"example":{"success":true,"data":{"source":"willi-federated-service","returned":3,"results":[{"id":"wf-1","slug":"gpke-lieferantenwechsel-fristen","title":"GPKE: Fristen beim Lieferantenwechsel","score":32,"category":"edifact","tags":["GPKE","Frist"],"excerpt":"Kurzfassung des Artikels...","url":"https://stromhaltig.de/wissen/gpke-lieferantenwechsel-fristen"}]}}}}}},"description":"Read-only federated search in parallel across Marktkommunikation/EDIFACT and regulatory (BNetzA/EnWG/EEG) collections via the internal MCP tool `cernion_willi_federated_search`. Returns article/context evidence for validation logic, structural hints and explanation context; it does not send, validate or dispatch any MaKo message and does not file, submit or act on any regulatory process step.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["query"],"properties":{"query":{"type":"string","example":"Welche Fristen gelten für den Lieferantenwechsel nach GPKE?"},"limit":{"type":"number","minimum":1,"maximum":20,"default":5,"example":3},"tag":{"type":"string","example":"GPKE"},"category":{"type":"string","example":"edifact"},"includeContent":{"type":"boolean","default":false,"example":false},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"value":{"query":"Welche Fristen gelten für den Lieferantenwechsel nach GPKE?","limit":3}}}}}}}},"/api/willi-federated/resolve-structure":{"post":{"summary":"Willi-Federated structure-oriented validation-planning view (read-only, advisory)","tags":["Willi-Federated"],"operationId":"willi_federated_resolveStructure","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only structure-oriented validation-planning view"}},"description":"Calls `willi-federated.search` internally and returns a conservative, structure-oriented view (sources, structural hints, validation candidates, no-call boundaries, confidence) useful for MaKo/regulatory validation planning. Never autonomously executes, validates, or dispatches a MaKo message or regulatory filing.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["query"],"properties":{"query":{"type":"string","example":"Welche Fristen gelten für den Lieferantenwechsel nach GPKE?"},"limit":{"type":"number","minimum":1,"maximum":20,"default":5,"example":5},"tag":{"type":"string","example":"GPKE"},"category":{"type":"string","example":"edifact"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"value":{"query":"Welche Fristen gelten für den Lieferantenwechsel nach GPKE?"}}}}}}}},"/api/willi-mako/search":{"post":{"summary":"Willi-Mako Marktkommunikation knowledge search (read-only)","tags":["Willi-Mako Marktkommunikation"],"operationId":"willi_mako_search","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only Willi-Mako search result","content":{"application/json":{"example":{"success":true,"data":{"source":"willi-mako-service","returned":3,"results":[{"id":"wm-1","slug":"aperak-frist-effizienz","title":"APERAK-Frist: Effizienz in der Marktkommunikation steigern","score":32,"category":"edifact","tags":["APERAK","Frist"],"excerpt":"Kurzfassung des Artikels...","url":"https://stromhaltig.de/wissen/aperak-frist-effizienz"}]}}}}}},"description":"Read-only search over Willi-Mako / Marktkommunikation articles via the internal MCP tool `cernion_willi_mako_search`. Returns article/context evidence for validation logic, structural hints and explanation context; it does not send, validate or dispatch any MaKo message.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["query"],"properties":{"query":{"type":"string","example":"APERAK Fehlercode Frist Marktkommunikation"},"limit":{"type":"number","minimum":1,"maximum":20,"default":5,"example":3},"tag":{"type":"string","example":"APERAK"},"category":{"type":"string","example":"edifact"},"includeContent":{"type":"boolean","default":false,"example":false},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"value":{"query":"APERAK Fehlercode Frist Marktkommunikation","limit":3}}}}}}}},"/api/willi-mako/resolve-structure":{"post":{"summary":"Willi-Mako structure-oriented validation-planning view (read-only, advisory)","tags":["Willi-Mako Marktkommunikation"],"operationId":"willi_mako_resolveStructure","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only structure-oriented validation-planning view"}},"description":"Calls `willi-mako.search` internally and returns a conservative, structure-oriented view (sources, structural hints, validation candidates, no-call boundaries, confidence) useful for MaKo validation planning. Never autonomously executes, validates, or dispatches a MaKo message.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["query"],"properties":{"query":{"type":"string","example":"APERAK Fehlercode Frist Marktkommunikation"},"limit":{"type":"number","minimum":1,"maximum":20,"default":5,"example":5},"tag":{"type":"string","example":"APERAK"},"category":{"type":"string","example":"edifact"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"value":{"query":"APERAK Fehlercode Frist Marktkommunikation"}}}}}}}},"/api/willi-regulatorik/search":{"post":{"summary":"Willi-Regulatorik regulatory knowledge search (read-only)","tags":["Willi-Regulatorik"],"operationId":"willi_regulatorik_search","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only Willi-Regulatorik search result","content":{"application/json":{"example":{"success":true,"data":{"source":"willi-regulatorik-service","returned":3,"results":[{"id":"wr-1","slug":"bk6-festlegung-netzanschluss-fristen","title":"BK6-Festlegung: Fristen für Netzanschlussprüfung","score":32,"category":"regulatory","tags":["BNetzA","Festlegung"],"excerpt":"Kurzfassung des Artikels...","url":"https://stromhaltig.de/wissen/bk6-festlegung-netzanschluss-fristen"}]}}}}}},"description":"Read-only search over regulatory (BNetzA/EnWG/EEG) articles via the internal MCP tool `cernion_willi_regulatorik_search`. Returns article/context evidence for validation logic, structural hints and explanation context; it does not file, submit or act on any regulatory process step.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["query"],"properties":{"query":{"type":"string","example":"BNetzA Festlegung Netzanschluss Fristen"},"limit":{"type":"number","minimum":1,"maximum":20,"default":5,"example":3},"tag":{"type":"string","example":"Festlegung"},"category":{"type":"string","example":"regulatory"},"includeContent":{"type":"boolean","default":false,"example":false},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"value":{"query":"BNetzA Festlegung Netzanschluss Fristen","limit":3}}}}}}}},"/api/willi-regulatorik/resolve-structure":{"post":{"summary":"Willi-Regulatorik structure-oriented validation-planning view (read-only, advisory)","tags":["Willi-Regulatorik"],"operationId":"willi_regulatorik_resolveStructure","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only structure-oriented validation-planning view"}},"description":"Calls `willi-regulatorik.search` internally and returns a conservative, structure-oriented view (sources, structural hints, validation candidates, no-call boundaries, confidence) useful for regulatory validation planning. Never autonomously executes, validates, or dispatches any regulatory filing.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["query"],"properties":{"query":{"type":"string","example":"BNetzA Festlegung Netzanschluss Fristen"},"limit":{"type":"number","minimum":1,"maximum":20,"default":5,"example":5},"tag":{"type":"string","example":"Festlegung"},"category":{"type":"string","example":"regulatory"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"value":{"query":"BNetzA Festlegung Netzanschluss Fristen"}}}}}}}},"/api/datasource-connector/connector-types":{"get":{"summary":"List available connector plugin types","tags":["DataSources"],"operationId":"datasource_connector_listPlugins","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"List of available connector plugins","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":true},"count":{"type":"integer","example":6},"data":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","example":"csv"},"description":{"type":"string","example":"Read rows from a CSV or TSV file"},"configSchema":{"type":"object"},"source":{"type":"string","example":"built-in"}}}}}}}}}},"description":"Returns all loaded connector plugins with their type identifier, description, and JSON Schema for connectorConfig validation. Used by the UI to dynamically render the connector configuration form."}},"/api/edm/melos":{"post":{"summary":"Create a MeLo in EDM registry","tags":["EDM (Energiedatenmanagement)"],"operationId":"edm_createMelo","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Created"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["meloId","type"],"properties":{"meloId":{"type":"string","example":"DE0012345678901234567890123456789"},"type":{"type":"string","enum":["physical","virtual","dummy"],"example":"physical"},"name":{"type":"string","example":"Messlokation Musterstraße 1"},"napMastrNummer":{"type":"string","example":"SAN123456789012"},"installationMastrNummer":{"type":"string","example":"SEE123456789012"},"gridOperatorMastrId":{"type":"string","example":"SNB935578300972"},"spannungsebene":{"type":"string","example":"Niederspannung"},"obisRegisters":{"type":"array","items":{"type":"object"},"example":[{"obis":"1-0:2.8.0","direction":"feedin"}]},"sourceType":{"type":"string","enum":["manual","mscons","rest_poll","forecast","calc"],"default":"manual"},"sourceConfig":{"type":"object","example":{}},"metadata":{"type":"object","example":{"source":"manual"}},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"value":{"meloId":"DE0012345678901234567890123456789","type":"physical","gridOperatorMastrId":"SNB935578300972","obisRegisters":[{"obis":"1-0:2.8.0","direction":"feedin"}]}}}}}}},"get":{"summary":"List MeLos","tags":["EDM (Energiedatenmanagement)"],"operationId":"edm_listMelos","parameters":[{"name":"type","in":"query","required":false,"schema":{"type":"string","example":"virtual"}},{"name":"gridOperatorMastrId","in":"query","required":false,"schema":{"type":"string","example":"SNB935578300972"}},{"name":"sourceType","in":"query","required":false,"schema":{"type":"string","example":"mscons"}},{"name":"limit","in":"query","required":false,"schema":{"type":"number","default":100}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string","example":"eyJvZmZzZXQiOjEwMH0="}},{"name":"offset","in":"query","required":false,"schema":{"type":"number","default":0}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"List"}}}},"/api/edm/melos/:meloId":{"get":{"summary":"Get one MeLo","tags":["EDM (Energiedatenmanagement)"],"operationId":"edm_getMelo","parameters":[{"name":"meloId","in":"path","required":true,"schema":{"type":"string","example":"DE0012345678901234567890123456789"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Found"},"404":{"description":"Not found"}}},"put":{"summary":"Update one MeLo","tags":["EDM (Energiedatenmanagement)"],"operationId":"edm_updateMelo","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Updated"},"404":{"description":"Not found"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["meloId"],"properties":{"meloId":{"type":"string","example":"DE0012345678901234567890123456789"},"name":{"type":"string","example":"Neue Bezeichnung"},"napMastrNummer":{"type":"string","example":"SAN123456789012"},"installationMastrNummer":{"type":"string","example":"SEE123456789012"},"gridOperatorMastrId":{"type":"string","example":"SNB935578300972"},"spannungsebene":{"type":"string","example":"Niederspannung"},"obisRegisters":{"type":"array","items":{"type":"object"},"example":[{"obis":"1-0:1.8.0","direction":"consumption"}]},"sourceType":{"type":"string","enum":["manual","mscons","rest_poll","forecast","calc"],"example":"manual"},"sourceConfig":{"type":"object","example":{}},"metadata":{"type":"object","example":{"tag":"updated"}},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"value":{"meloId":"DE0012345678901234567890123456789","name":"Neue Bezeichnung"}}}}}}},"delete":{"summary":"Delete one MeLo","tags":["EDM (Energiedatenmanagement)"],"operationId":"edm_deleteMelo","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Deleted"},"404":{"description":"Not found"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["meloId"],"properties":{"meloId":{"type":"string","example":"DE0012345678901234567890123456789"},"cascade":{"type":"boolean","default":false},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"value":{"meloId":"DE0012345678901234567890123456789","cascade":false}}}}}}}},"/api/edm/melos/from-mastr":{"post":{"summary":"Create MeLos from MaStR installation lookup","tags":["EDM (Energiedatenmanagement)"],"operationId":"edm_createFromMastr","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Import result"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"gridOperatorMastrId":{"type":"string","example":"SNB935578300972"},"postleitzahl":{"type":"string","example":"66989"},"type":{"type":"string","default":"all"},"limit":{"type":"number","default":100},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"value":{"gridOperatorMastrId":"SNB935578300972","type":"all","limit":100}}}}}}}},"/api/edm/timeseries/import":{"post":{"summary":"Import timeseries data for a MeLo","tags":["EDM (Energiedatenmanagement)"],"operationId":"edm_importTimeseries","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Import result"}},"description":"Imports measurement data from CSV or JSON format into the SQLite timeseries store. CSV config supports German formats (semicolon delimiter, comma decimal, DD.MM.YYYY timestamps).","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["meloId","data"],"properties":{"meloId":{"type":"string","example":"DE0012345678901234567890123456789"},"obis":{"type":"string","default":"1-0:1.8.0","example":"1-0:2.8.0"},"format":{"type":"string","enum":["csv","json"],"default":"json"},"config":{"type":"object","example":{"delimiter":";","timestampColumn":"ts","valueColumn":"val"}},"data":{"oneOf":[{"type":"string"},{"type":"array"}],"example":[{"ts":"2026-04-01T00:00:00.000Z","value":12.4}]},"overwriteExisting":{"type":"boolean","default":false},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"json":{"value":{"meloId":"DE0012345678901234567890123456789","obis":"1-0:2.8.0","format":"json","data":[{"ts":"2026-04-01T00:00:00.000Z","value":12.4}]}}}}}}}},"/api/edm/timeseries/:meloId":{"get":{"summary":"Query timeseries data for a MeLo","tags":["EDM (Energiedatenmanagement)"],"operationId":"edm_getTimeseries","parameters":[{"name":"meloId","in":"path","required":true,"schema":{"type":"string","example":"DE0012345678901234567890123456789"}},{"name":"obis","in":"query","required":false,"schema":{"type":"string","default":"1-0:1.8.0"}},{"name":"from","in":"query","required":true,"schema":{"type":"string","example":"2026-04-01T00:00:00.000Z"}},{"name":"to","in":"query","required":true,"schema":{"type":"string","example":"2026-04-02T00:00:00.000Z"}},{"name":"resolution","in":"query","required":false,"schema":{"type":"string","enum":["15min","hourly","daily"],"default":"15min"}},{"name":"format","in":"query","required":false,"schema":{"type":"string","enum":["json","csv"],"default":"json"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Timeseries result"}},"description":"Retrieves timeseries data with optional resolution aggregation. Supports cross-quarter queries transparently."},"delete":{"summary":"Delete timeseries data for a MeLo","tags":["EDM (Energiedatenmanagement)"],"operationId":"edm_deleteTimeseries","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Delete result"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["meloId","from","to"],"properties":{"meloId":{"type":"string","example":"DE0012345678901234567890123456789"},"obis":{"type":"string","example":"1-0:2.8.0"},"from":{"type":"string","example":"2026-04-01T00:00:00.000Z"},"to":{"type":"string","example":"2026-04-02T00:00:00.000Z"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"value":{"meloId":"DE0012345678901234567890123456789","from":"2026-04-01T00:00:00.000Z","to":"2026-04-02T00:00:00.000Z"}}}}}}}},"/api/edm/timeseries/:meloId/summary":{"get":{"summary":"Get aggregated timeseries summary","tags":["EDM (Energiedatenmanagement)"],"operationId":"edm_getTimeseriesSummary","parameters":[{"name":"meloId","in":"path","required":true,"schema":{"type":"string","example":"DE0012345678901234567890123456789"}},{"name":"obis","in":"query","required":false,"schema":{"type":"string","default":"1-0:1.8.0"}},{"name":"from","in":"query","required":true,"schema":{"type":"string","example":"2026-04-01T00:00:00.000Z"}},{"name":"to","in":"query","required":true,"schema":{"type":"string","example":"2026-04-30T23:59:59.000Z"}},{"name":"groupBy","in":"query","required":false,"schema":{"type":"string","enum":["day","week","month","year"],"default":"day"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Grouped summary"}}}},"/api/edm/health":{"get":{"summary":"EDM service health","tags":["EDM (Energiedatenmanagement)"],"operationId":"edm_health","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"EDM backend healthy"},"503":{"description":"EDM backend unavailable"}},"description":"Returns EDM SQLite backend readiness and open partition metrics."}},"/api/governance/role-workbench":{"get":{"summary":"Role Workbench Projection — role-specific VDMI task overview","tags":["Governance"],"operationId":"governance_roleWorkbenchProjection","parameters":[{"name":"role","in":"query","required":true,"schema":{"type":"string","example":"ROLE_NETZPLANUNG"}},{"name":"includeResolved","in":"query","schema":{"type":"boolean","default":false},"description":"Include tasks from completed/resolved matrices"},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"Returns a read-only workbench projection for a role: all VDMI matrix tasks where the role appears as verantwortlich/durchfuehrend/mitwirkend/information, enriched with governance policy evaluation, HITL role derivation, evidence gaps, and curated next-action hints. No writes; suitable as a Budibase datasource."}},"/api/job-status/:jobId/status":{"get":{"summary":"Poll async job status","tags":["Jobs"],"operationId":"job_status_status","parameters":[{"name":"jobId","in":"path","required":true,"schema":{"type":"string","example":"a3f8b2c1-..."},"description":"Job UUID returned by the 202 response"},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Job status record","content":{"application/json":{"schema":{"type":"object","properties":{"jobId":{"type":"string"},"service":{"type":"string","description":"Originating service name"},"action":{"type":"string","description":"Originating action name"},"status":{"type":"string","enum":["queued","running","recovery_pending","completed","error"]},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"completedAt":{"type":"string","format":"date-time","nullable":true},"error":{"type":"string","nullable":true},"location":{"type":"string","description":"URL of this status endpoint (for polling)"},"resultUrl":{"type":"string","nullable":true,"description":"Result URL — only set when status is \"completed\""}}},"examples":{"queued":{"summary":"Job queued","value":{"jobId":"a3f8b2c1-0000-0000-0000-000000000001","service":"grid-operations","action":"gridData","status":"queued","createdAt":"2026-03-19T10:00:00.000Z","updatedAt":"2026-03-19T10:00:00.000Z","completedAt":null,"error":null,"location":"/api/jobs/a3f8b2c1-0000-0000-0000-000000000001/status","resultUrl":null}},"completed":{"summary":"Job completed","value":{"jobId":"a3f8b2c1-0000-0000-0000-000000000001","service":"grid-operations","action":"gridData","status":"completed","createdAt":"2026-03-19T10:00:00.000Z","updatedAt":"2026-03-19T10:08:00.000Z","completedAt":"2026-03-19T10:08:00.000Z","error":null,"location":"/api/jobs/a3f8b2c1-0000-0000-0000-000000000001/status","resultUrl":"/api/jobs/a3f8b2c1-0000-0000-0000-000000000001/result"}}}}}},"404":{"description":"Job not found (unknown ID or TTL expired)","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"message":{"type":"string"}}}}}}},"description":"Poll the status of a background job started by a long-running endpoint (v0.9.8+).\n\n**Status values**:\n- **queued** — job is registered, worker starting soon\n- **running** — worker is executing (MCP polling in progress)\n- **completed** — result is available at `resultUrl`\n- **error** — worker failed; see `error` field\n\n**Polling strategy**: start polling 5 s after submission, then every 10–30 s.\nMost jobs complete within 8–12 minutes."}},"/api/job-status/:jobId/progress":{"get":{"summary":"Get job progress (JSON polling or SSE)","tags":["Jobs"],"operationId":"job_status_progress","parameters":[{"name":"jobId","in":"path","required":true,"schema":{"type":"string","example":"a3f8b2c1-..."}},{"name":"stream","in":"query","required":false,"schema":{"type":"boolean","default":false},"description":"Set true to receive text/event-stream output."},{"name":"lastEventId","in":"query","required":false,"schema":{"type":"string","example":"3"},"description":"Optional replay cursor when headers cannot be set by the client."},{"name":"Last-Event-ID","in":"header","required":false,"schema":{"type":"string","example":"3"},"description":"SSE replay cursor. Events with greater IDs are returned."},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Progress payload (JSON) or SSE stream (text/event-stream)"},"404":{"description":"Job not found (unknown ID or TTL expired)"}},"description":"Returns normalized job progress. Use query `stream=true` for text/event-stream output. SSE supports `Last-Event-ID` replay (or `lastEventId` query fallback)."}},"/api/job-status/:jobId/result":{"get":{"summary":"Retrieve async job result","tags":["Jobs"],"operationId":"job_status_result","parameters":[{"name":"jobId","in":"path","required":true,"schema":{"type":"string","example":"a3f8b2c1-..."},"description":"Job UUID returned by the 202 response"},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Job result payload (original MCP tool response)","content":{"application/json":{"schema":{"type":"object"}}}},"202":{"description":"Job not yet completed — poll status endpoint","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"status":{"type":"string"},"message":{"type":"string"},"location":{"type":"string"}}}}}},"404":{"description":"Job not found or result expired","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"message":{"type":"string"}}}}}}},"description":"Retrieve the full result payload of a completed async job.\n\nReturns **202** if the job is still running — poll `/status` first.\nReturns **404** if the job ID is unknown or the result has expired (24 h TTL)."}},"/api/job-status/alarms":{"get":{"summary":"List persistent async watchdog alarms","tags":["Jobs"],"operationId":"job_status_listAlarms","parameters":[{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["open","acknowledged","resolved"],"default":"open","example":"open"}},{"name":"jobId","in":"query","required":false,"schema":{"type":"string","example":"a3f8b2c1-0000-0000-0000-000000000001"}},{"name":"limit","in":"query","required":false,"schema":{"type":"number","default":100,"minimum":1,"maximum":1000}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/job-status/alarms/:alarmId/ack":{"post":{"summary":"Acknowledge persistent async watchdog alarm","tags":["Jobs"],"operationId":"job_status_acknowledgeAlarm","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":false,"content":{"application/json":{"examples":{"default":{"value":{"alarmId":"alarm_abc123","actor":"hitl-user","note":"Investigating this alert."}}},"schema":{"type":"object","required":["alarmId"],"properties":{"alarmId":{"type":"string","example":"alarm_abc123"},"actor":{"type":"string","maxLength":120,"example":"hitl-user"},"note":{"type":"string","maxLength":1000,"example":"Investigating this alert."},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}}}}}}},"/api/job-status/alarms/:alarmId/resolve":{"post":{"summary":"Resolve persistent async watchdog alarm","tags":["Jobs"],"operationId":"job_status_resolveAlarm","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":false,"content":{"application/json":{"examples":{"default":{"value":{"alarmId":"alarm_abc123","actor":"problem-solver-agent","note":"Recovery completed successfully."}}},"schema":{"type":"object","required":["alarmId"],"properties":{"alarmId":{"type":"string","example":"alarm_abc123"},"actor":{"type":"string","maxLength":120,"example":"problem-solver-agent"},"note":{"type":"string","maxLength":1000,"example":"Recovery completed successfully."},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}}}}}}},"/api/job-status/:jobId/wake-up":{"post":{"summary":"Trigger idempotent wake-up for a recovery_pending async job","tags":["Jobs"],"operationId":"job_status_wakeUp","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":false,"content":{"application/json":{"examples":{"default":{"value":{"jobId":"a3f8b2c1-0000-0000-0000-000000000001","idempotencyKey":"ck:wakeup:tenant-1:monitor:123","reason":"manual"}}},"schema":{"type":"object","required":["jobId"],"properties":{"jobId":{"type":"string","example":"a3f8b2c1-0000-0000-0000-000000000001"},"idempotencyKey":{"type":"string","maxLength":256,"example":"ck:wakeup:tenant-1:monitor:123"},"reason":{"type":"string","maxLength":120,"example":"manual"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}}}}}}},"/api/mastr-monitor/watches":{"post":{"summary":"Create MaStR monitor watch","tags":["MaStR Monitor"],"operationId":"mastr_monitor_createWatch","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["name","query"],"properties":{"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"value":{"name":"STROMDAO Solar >100kW Monitoring","query":{"gridOperatorMastrId":"SNB935578300972","type":"solar","minCapacity":100}}}}}}}},"get":{"summary":"List MaStR monitor watches","tags":["MaStR Monitor"],"operationId":"mastr_monitor_listWatches","parameters":[{"name":"email","in":"query","required":false,"schema":{"type":"string","format":"email","example":"netzplanung@stromdao.de"}},{"name":"limit","in":"query","required":false,"schema":{"type":"number","default":50,"example":50}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string","example":"eyJvZmZzZXQiOjUwfQ=="}},{"name":"offset","in":"query","required":false,"schema":{"type":"number","minimum":0,"example":0}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/mastr-monitor/watches/:watchId":{"get":{"summary":"Get MaStR monitor watch","tags":["MaStR Monitor"],"operationId":"mastr_monitor_getWatch","parameters":[{"name":"watchId","in":"path","required":true,"schema":{"type":"string","example":"stromdao-solar-monitor_ab12cd34"}},{"name":"limit","in":"query","required":false,"schema":{"type":"number","default":50,"example":50}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string","example":"eyJvZmZzZXQiOjUwfQ=="}},{"name":"offset","in":"query","required":false,"schema":{"type":"number","minimum":0,"example":0}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}},"delete":{"summary":"Delete MaStR monitor watch and all linked objects","tags":["MaStR Monitor"],"operationId":"mastr_monitor_deleteWatch","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"watchId":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}}},"/api/mastr-monitor/watches/:watchId/run":{"post":{"summary":"Run watch now","tags":["MaStR Monitor"],"operationId":"mastr_monitor_runWatch","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","required":["watchId"],"properties":{"watchId":{"type":"string","example":"stromdao-solar-monitor_ab12cd34","nullable":true},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"value":{}}}}}}}},"/api/mastr-monitor/watches/:watchId/deltas":{"get":{"summary":"Get delta history for watch","tags":["MaStR Monitor"],"operationId":"mastr_monitor_getDeltas","parameters":[{"name":"watchId","in":"path","required":true,"schema":{"type":"string","example":"stromdao-solar-monitor_ab12cd34"}},{"name":"limit","in":"query","required":false,"schema":{"type":"number","default":50,"example":50}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string","example":"eyJvZmZzZXQiOjUwfQ=="}},{"name":"offset","in":"query","required":false,"schema":{"type":"number","minimum":0,"example":0}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/mastr-monitor/watches/:watchId/deltas/:deltaId":{"get":{"summary":"Get one delta by ID","tags":["MaStR Monitor"],"operationId":"mastr_monitor_getDelta","parameters":[{"name":"watchId","in":"path","required":true,"schema":{"type":"string","example":"stromdao-solar-monitor_ab12cd34"}},{"name":"deltaId","in":"path","required":true,"schema":{"type":"string","example":"2026-04-16"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/mastr-monitor/watches/:watchId/snapshot":{"get":{"summary":"Get latest snapshot in JSON or CSV","tags":["MaStR Monitor"],"operationId":"mastr_monitor_getSnapshot","parameters":[{"name":"watchId","in":"path","required":true,"schema":{"type":"string","example":"stromdao-solar-monitor_ab12cd34"}},{"name":"format","in":"query","required":false,"schema":{"type":"string","enum":["json","csv"],"default":"json","example":"json"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/mastr-monitor/watches/:watchId/subscribe":{"post":{"summary":"Create subscription for watch","tags":["MaStR Monitor"],"operationId":"mastr_monitor_subscribe","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["watchId","email"],"properties":{"watchId":{"type":"string","example":"stromdao-solar-monitor_ab12cd34","nullable":true},"email":{"type":"string","format":"email","example":"netzplanung@stromdao.de"},"onlyOnChanges":{"type":"boolean","default":true},"language":{"type":"string","enum":["de","en"],"default":"de"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"value":{"email":"netzplanung@stromdao.de","onlyOnChanges":true,"language":"de"}}}}}}}},"/api/mastr-monitor/watches/:watchId/subscribe/:token":{"delete":{"summary":"Unsubscribe token","tags":["MaStR Monitor"],"operationId":"mastr_monitor_unsubscribe","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"watchId":{"type":"string"},"token":{"type":"string"}},"required":[]}}}}}},"/api/mastr-monitor/confirm/:token":{"get":{"summary":"Confirm email subscription by token","tags":["MaStR Monitor"],"operationId":"mastr_monitor_confirmSubscription","parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","example":"d6f47d6d687adc8f8e5a17f6b63dd3f31fc14e8f67122e4a"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/mastr-monitor/from-session":{"post":{"summary":"Create watch from Live-CSV session (stub)","tags":["MaStR Monitor"],"operationId":"mastr_monitor_createFromSession","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"value":{"sessionId":"2a70e478-90ce-4fa5-b996-6f98efdba7cf","name":"Monitoring aus CSV-Session"}}}}}}}},"/api/observability/logs":{"get":{"summary":"Retrieve captured broker and service log output","tags":["Observability"],"operationId":"observability_logs","parameters":[{"name":"level","in":"query","schema":{"type":"string","enum":["fatal","error","warn","info","debug","trace"],"example":"error"}},{"name":"service","in":"query","schema":{"type":"string","example":"finance-agent"}},{"name":"action","in":"query","schema":{"type":"string","example":"finance-agent.analyze"}},{"name":"contains","in":"query","schema":{"type":"string","example":"timeout"}},{"name":"limit","in":"query","schema":{"type":"integer","default":50,"minimum":1,"maximum":200}},{"name":"sinceMinutes","in":"query","schema":{"type":"integer","default":60,"minimum":1}},{"name":"since","in":"query","schema":{"type":"string","format":"date-time","example":"2026-05-04T08:00:00.000Z"}},{"name":"until","in":"query","schema":{"type":"string","format":"date-time","example":"2026-05-04T12:00:00.000Z"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Captured log messages","content":{"application/json":{"schema":{"type":"object","properties":{"count":{"type":"integer","example":12},"generatedAt":{"type":"string","format":"date-time"},"logs":{"type":"array","items":{"type":"object","properties":{"timestamp":{"type":"string","format":"date-time"},"level":{"type":"string","example":"error"},"service":{"type":"string","example":"finance-agent"},"action":{"type":"string","nullable":true,"example":"finance-agent.analyze"},"source":{"type":"string","example":"service"},"nodeID":{"type":"string","nullable":true},"requestOrigin":{"type":"string","nullable":true,"example":"gateway"},"errorType":{"type":"string","nullable":true,"example":"VALIDATION_ERROR"},"message":{"type":"string"}}}}}}}}}},"description":"Returns recently captured logger output from the Moleculer broker and loaded services. Messages are persisted locally in PouchDB with token and PII redaction for production-safe debugging."}},"/api/observability/metrics":{"get":{"summary":"Retrieve aggregated action performance metrics","tags":["Observability"],"operationId":"observability_metrics","parameters":[{"name":"service","in":"query","schema":{"type":"string","example":"demo-ops"}},{"name":"action","in":"query","schema":{"type":"string","example":"demo-ops.success"}},{"name":"status","in":"query","schema":{"type":"string","enum":["success","error"],"example":"success"}},{"name":"limit","in":"query","schema":{"type":"integer","default":50,"minimum":1,"maximum":200}},{"name":"sinceMinutes","in":"query","schema":{"type":"integer","default":1440,"minimum":1}},{"name":"since","in":"query","schema":{"type":"string","format":"date-time","example":"2026-05-03T12:00:00.000Z"}},{"name":"until","in":"query","schema":{"type":"string","format":"date-time","example":"2026-05-04T12:00:00.000Z"}},{"name":"slowActionThresholdMs","in":"query","schema":{"type":"integer","default":1000,"minimum":1}},{"name":"includeRaw","in":"query","schema":{"type":"boolean","default":false}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Aggregated action metrics","content":{"application/json":{"schema":{"type":"object","properties":{"count":{"type":"integer"},"generatedAt":{"type":"string","format":"date-time"},"summary":{"type":"object"},"actions":{"type":"array","items":{"type":"object"}},"recent":{"type":"array","items":{"type":"object"}}}}}}}},"description":"Returns per-action performance statistics captured at broker level for local and gateway-triggered Moleculer actions. Metrics include durations, success/error counts, and slow-action detection."}},"/api/observability/summary":{"get":{"summary":"Retrieve an operational overview for recent logs and performance","tags":["Observability"],"operationId":"observability_summary","parameters":[{"name":"limit","in":"query","schema":{"type":"integer","default":50,"minimum":1,"maximum":50}},{"name":"sinceMinutes","in":"query","schema":{"type":"integer","default":60,"minimum":1}},{"name":"slowActionThresholdMs","in":"query","schema":{"type":"integer","default":1000,"minimum":1}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Operational overview","content":{"application/json":{"schema":{"type":"object","properties":{"generatedAt":{"type":"string","format":"date-time"},"window":{"type":"object"},"retention":{"type":"object"},"logs":{"type":"object"},"metrics":{"type":"object"}}}}}}},"description":"Returns a compact production-feedback overview containing recent log volume, latest errors, action throughput, and slowest actions over a configurable time window."}},"/api/observability/agent-prompt":{"get":{"summary":"Generate an agent-ready debugging prompt from recent production feedback","tags":["Observability"],"operationId":"observability_agentPrompt","parameters":[{"name":"sinceMinutes","in":"query","schema":{"type":"integer","default":60,"minimum":1,"example":120}},{"name":"slowActionThresholdMs","in":"query","schema":{"type":"integer","default":1000,"minimum":1,"example":1500}},{"name":"limit","in":"query","schema":{"type":"integer","default":5,"minimum":1,"maximum":20,"example":5}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Agent prompt template with structured production context","content":{"application/json":{"schema":{"type":"object","properties":{"generatedAt":{"type":"string","format":"date-time"},"window":{"type":"object"},"prompt":{"type":"string"},"context":{"type":"object"}}}}}}},"description":"Builds a compact prompt for agentic troubleshooting from observability summary signals: error volume, latency hotspots, recent redacted errors, and slowest actions in the selected time window."}},"/api/slp/profiles":{"get":{"summary":"List SLP profiles","tags":["SLP (Standardlastprofile)"],"operationId":"slp_listProfiles","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Profile list"}}},"post":{"summary":"Create custom SLP profile","tags":["SLP (Standardlastprofile)"],"operationId":"slp_createCustomProfile","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Created"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["profileId","name","season","dayType","values"],"properties":{"profileId":{"type":"string","example":"custom_muster_001"},"name":{"type":"string","example":"Nachtspeicher-Profil Muster"},"baseProfile":{"type":"string","example":"H0"},"season":{"type":"string","enum":["winter","summer","transition","all"],"example":"all"},"dayType":{"type":"string","enum":["weekday","saturday","sunday","all"],"example":"all"},"values":{"type":"array","items":{"type":"number"},"minItems":96,"maxItems":96,"example":[0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666]},"owner":{"type":"string","example":"Stadtwerke Beispiel"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"value":{"profileId":"custom_muster_001","name":"Nachtspeicher-Profil Muster","season":"all","dayType":"all","values":[0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666,0.010416666666666666],"owner":"Stadtwerke Beispiel"}}}}}}}},"/api/slp/profiles/:profileId":{"get":{"summary":"Get one SLP profile","tags":["SLP (Standardlastprofile)"],"operationId":"slp_getProfile","parameters":[{"name":"profileId","in":"path","required":true,"schema":{"type":"string","example":"H0"}},{"name":"date","in":"query","required":false,"schema":{"type":"string","example":"2026-01-15"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Profile"},"404":{"description":"Not found"}}},"delete":{"summary":"Delete custom SLP profile","tags":["SLP (Standardlastprofile)"],"operationId":"slp_deleteCustomProfile","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Deleted"},"400":{"description":"Standard profile cannot be deleted"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["profileId"],"properties":{"profileId":{"type":"string","example":"custom_muster_001"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"value":{"profileId":"custom_muster_001"}}}}}}}},"/api/slp/generate":{"post":{"summary":"Generate 96 quarter-hour SLP values","tags":["SLP (Standardlastprofile)"],"operationId":"slp_generateTimeseries","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Generated"},"404":{"description":"Profile not found"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["profileId","date","annualConsumptionKwh"],"properties":{"profileId":{"type":"string","example":"H0"},"date":{"type":"string","example":"2026-01-15"},"annualConsumptionKwh":{"type":"number","example":3500},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"value":{"profileId":"H0","date":"2026-01-15","annualConsumptionKwh":3500}}}}}}}},"/api/agent-persona/personas/:id/availability":{"put":{"summary":"Update persona availability status and windows","tags":["Actor Personas"],"operationId":"agent_persona_updateAvailability","parameters":[{"name":"X-Tenant-Id","in":"header","required":false,"description":"Tenant scope for the actor persona registry. The API gateway injects the resolved tenant into action params as tenantId.","schema":{"type":"string"}},{"name":"tenantId","in":"query","required":false,"description":"Optional tenant fallback when the X-Tenant-Id header is not provided.","schema":{"type":"string"}},{"name":"id","in":"path","required":true,"description":"Persona identifier within the tenant.","schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"available":{"type":"boolean","example":true},"availabilityWindow":{"type":"object","properties":{"startHour":{"type":"integer","example":9},"endHour":{"type":"integer","example":17},"timezone":{"type":"string","example":"Europe/Berlin"}}},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}}}}}}},"/api/agent-persona/personas/:id/record-activity":{"post":{"summary":"Record persona last-seen activity for availability tracking","tags":["Actor Personas"],"operationId":"agent_persona_recordPersonaActivity","parameters":[{"name":"X-Tenant-Id","in":"header","required":false,"description":"Tenant scope for the actor persona registry. The API gateway injects the resolved tenant into action params as tenantId.","schema":{"type":"string"}},{"name":"tenantId","in":"query","required":false,"description":"Optional tenant fallback when the X-Tenant-Id header is not provided.","schema":{"type":"string"}},{"name":"id","in":"path","required":true,"description":"Persona identifier within the tenant.","schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"activityType":{"type":"string","example":"interaction","enum":["interaction","approval","message"]},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}}}}}}},"/api/list-aliases":{"get":{"summary":"api.listAliases","tags":["api"],"operationId":"api_listAliases","parameters":[{"$ref":"#/components/parameters/TokenQuery"},{"name":"grouping","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"withActionSchema","in":"query","required":false,"schema":{"type":"boolean"}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/openapi.json":{"get":{"summary":"api.openapi","tags":["api"],"operationId":"api_openapi","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/openapi-copilot.json":{"get":{"summary":"api.openapiCopilot","tags":["api"],"operationId":"api_openapiCopilot","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/datasources":{"post":{"summary":"Register a new inhouse datasource","tags":["DataSources"],"operationId":"datasource_registry_create","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["name","connectorType"],"properties":{"name":{"type":"string","example":"Customer Master"},"description":{"type":"string","example":"Main customer data table","default":""},"connectorType":{"type":"string","example":"csv"},"connectorConfig":{"type":"object","example":{"filePath":"/data/customers.csv"},"default":{}},"cachePolicy":{"type":"object","example":{"mode":"ttl","ttlSeconds":3600},"default":{}},"dictionary":{"type":"object","example":{},"default":null},"tags":{"type":"array","items":{"type":"string"},"example":["crm"],"default":[]},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"csvSource":{"summary":"Register a CSV datasource","value":{"name":"Customer Master","connectorType":"csv","connectorConfig":{"filePath":"/data/customers.csv"},"tags":["crm"]}},"restSource":{"summary":"Register a REST API datasource","value":{"name":"Live Prices","connectorType":"rest","connectorConfig":{"url":"https://api.example.com/prices"},"cachePolicy":{"mode":"ttl","ttlSeconds":900}}}}}}}},"get":{"summary":"List registered inhouse datasources","tags":["DataSources"],"operationId":"datasource_registry_list","parameters":[{"name":"tag","in":"query","required":false,"schema":{"type":"string","example":"crm"}},{"name":"limit","in":"query","required":false,"schema":{"type":"number","default":50,"example":50}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string","example":"eyJvZmZzZXQiOjUwfQ=="}},{"name":"offset","in":"query","required":false,"schema":{"type":"number","minimum":0,"example":0}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/datasources/:id":{"get":{"summary":"Get datasource definition","tags":["DataSources"],"operationId":"datasource_registry_get","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","example":"a1b2c3d4-0000-0000-0000-000000000000"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}},"put":{"summary":"Update datasource definition","tags":["DataSources"],"operationId":"datasource_registry_update","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"connectorType":{"type":"string"},"connectorConfig":{"type":"string"},"cachePolicy":{"type":"string"},"tags":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}},"delete":{"summary":"Delete datasource","tags":["DataSources"],"operationId":"datasource_registry_remove","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}}},"/api/datasources/:id/dictionary":{"get":{"summary":"Get current Data Dictionary","tags":["DataSources"],"operationId":"datasource_registry_getDictionary","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","example":"a1b2c3d4-0000-0000-0000-000000000000"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}},"put":{"summary":"Replace Data Dictionary and increment version","tags":["DataSources"],"operationId":"datasource_registry_updateDictionary","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"fields":{"type":"string"},"updatedBy":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}}},"/api/datasources/:id/dictionary/history":{"get":{"summary":"List Data Dictionary history","tags":["DataSources"],"operationId":"datasource_registry_getDictionaryHistory","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","example":"a1b2c3d4-0000-0000-0000-000000000000"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/datasources/:id/dictionary/:version":{"get":{"summary":"Get a specific Data Dictionary version","tags":["DataSources"],"operationId":"datasource_registry_getDictionaryVersion","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","example":"a1b2c3d4-0000-0000-0000-000000000000"}},{"name":"version","in":"path","required":true,"schema":{"type":"integer","example":2}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/datasources/:id/dictionary/check":{"get":{"summary":"Check whether a referenced Data Dictionary version is current","tags":["DataSources"],"operationId":"datasource_registry_checkDictionaryVersion","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","example":"a1b2c3d4-0000-0000-0000-000000000000"}},{"name":"referencedVersion","in":"query","required":true,"schema":{"type":"integer","example":1}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/datasources/:id/classification":{"get":{"summary":"Get semantic datasource classification","tags":["DataSources"],"operationId":"datasource_registry_getClassification","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","example":"a1b2c3d4-0000-0000-0000-000000000000"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}},"patch":{"summary":"Confirm or correct semantic datasource classification","tags":["DataSources"],"operationId":"datasource_classifier_confirm","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"sourceId":{"type":"string"},"domainId":{"type":"string"},"fieldMappings":{"type":"string"},"confirmedByUser":{"type":"boolean"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}}},"/api/datasources/:id/infer":{"post":{"summary":"Trigger AI-assisted schema inference","tags":["DataSources"],"operationId":"datasource_registry_infer","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","example":"a1b2c3d4-0000-0000-0000-000000000000"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","required":[],"properties":{"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"trigger":{"summary":"Trigger inference (no body required)","value":{}}}}}}}},"/api/datasources/:id/refresh":{"post":{"summary":"Trigger datasource refresh","tags":["DataSources"],"operationId":"datasource_registry_refresh","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","example":"a1b2c3d4-0000-0000-0000-000000000000"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","required":[],"properties":{"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"trigger":{"summary":"Trigger refresh (no body required)","value":{}}}}}}}},"/api/vdmi-spectator/tenants/:tenantId/tasks/:taskId/negotiation-trace":{"get":{"summary":"vdmi-spectator.negotiationTrace","tags":["VDMI Governance"],"operationId":"vdmi_spectator_negotiationTrace","parameters":[{"name":"tenantId","in":"path","required":true},{"name":"taskId","in":"path","required":true},{"name":"phase","in":"query","schema":{"type":"string","enum":["all","proposal","consensus","conflict_resolution"]},"description":"Filter by negotiation phase"},{"name":"agentFilter","in":"query","schema":{"type":"string"},"description":"Comma-separated agent IDs"},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Complete negotiation trace","content":{"application/json":{"schema":{"type":"object","properties":{"taskId":{"type":"string"},"tenantId":{"type":"string"},"negotiationPhase":{"type":"string"},"totalRounds":{"type":"number"},"consensusReachedAt":{"type":"string","format":"date-time"},"trace":{"type":"array","items":{"type":"object"}},"consensusMatrix":{"type":"object"}}}}}},"403":{"description":"Access denied"}},"description":"View complete agent negotiation dialog with reasoning"}},"/api/vdmi-spectator/tenants/:tenantId/tasks/:taskId/dossier":{"get":{"summary":"vdmi-spectator.dossier","tags":["VDMI Governance"],"operationId":"vdmi_spectator_dossier","parameters":[{"name":"tenantId","in":"path","required":true},{"name":"taskId","in":"path","required":true},{"name":"format","in":"query","schema":{"type":"string","enum":["json","html","pdf"]},"description":"Output format"},{"name":"includeDelta","in":"query","schema":{"type":"boolean"},"description":"Include differences from previous version"},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Governance dossier document","content":{"application/json":{"schema":{"type":"object","properties":{"dossier":{"type":"object","properties":{"id":{"type":"string"},"taskId":{"type":"string"},"summary":{"type":"object"},"executive_summary":{"type":"string"},"governance_checks":{"type":"object"}}}}}}}}},"description":"Get formatted governance dossier for stakeholder review"}},"/api/clarification-policy/drafts":{"post":{"summary":"clarification-policy.createDraft","tags":["clarification-policy"],"operationId":"clarification_policy_createDraft","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"policy":{"type":"string"},"createdBy":{"type":"string"},"sourceConversationId":{"type":"string"},"sourceAgent":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}}},"/api/clarification-policy":{"get":{"summary":"clarification-policy.list","tags":["clarification-policy"],"operationId":"clarification_policy_list","parameters":[{"$ref":"#/components/parameters/TokenQuery"},{"name":"includeDrafts","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"includeActive","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"policyId","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/clarification-policy/:id":{"get":{"summary":"clarification-policy.get","tags":["clarification-policy"],"operationId":"clarification_policy_get","parameters":[{"$ref":"#/components/parameters/TokenQuery"},{"name":"id","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/clarification-policy/:id/validate":{"post":{"summary":"clarification-policy.validate","tags":["clarification-policy"],"operationId":"clarification_policy_validate","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}}},"/api/clarification-policy/:id/test":{"post":{"summary":"clarification-policy.test","tags":["clarification-policy"],"operationId":"clarification_policy_test","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}}},"/api/clarification-policy/:id/promote":{"post":{"summary":"clarification-policy.promote","tags":["clarification-policy"],"operationId":"clarification_policy_promote","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"promotedBy":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}}},"/api/datapoint":{"post":{"summary":"Create a metadata-only datapoint directly","tags":["Datapoints"],"operationId":"datapoint_create","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"Creates a managed datapoint without session promotion. Intended for derived calculations and agentic working-memory snapshots. Raw source data is not persisted.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["name","value"],"properties":{"name":{"type":"string","example":"fa-derived-20260504-a1b2c3d4"},"value":{"type":"object","description":"Arbitrary derived value payload to persist as metadata datapoint.","example":{"status":"ok","confidence":78,"summary":"CAPEX/OPEX Delta für RP5"}},"description":{"type":"string","default":""},"owner":{"type":"string","default":"finance-agent"},"tags":{"type":"array","items":{"type":"string"},"default":["finance","derived"]},"oeoTags":{"type":"array","items":{"type":"string"},"default":["ceo:CapitalExpenditure"]},"provenance":{"type":"string","default":"finance-agent"},"metadata":{"type":"object","default":{}},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"value":{"name":"fa-derived-20260504-a1b2c3d4","value":{"status":"hypothetical_scenario","confidence":63,"summary":"What-if Ergebnis für RP5"},"tags":["finance","a2mdm","derived"],"oeoTags":["ceo:CapitalExpenditure","ceo:RegulatoryPeriod"],"provenance":"finance-agent","metadata":{"mode":"rule_plus_hyde"}}}}}}}},"get":{"summary":"List all registered Datapoints","tags":["Datapoints"],"operationId":"datapoint_list","parameters":[{"name":"sourceType","in":"query","required":false,"schema":{"type":"string","example":"agent-session"}},{"name":"includeHealth","in":"query","required":false,"schema":{"type":"boolean","default":true}},{"name":"tags","in":"query","required":false,"schema":{"type":"string","example":"solar,stromdao-netze"},"description":"Comma-separated tag filter. Returns only datapoints that have ALL specified tags (case-insensitive AND match)."},{"name":"limit","in":"query","required":false,"schema":{"type":"number","default":50,"example":50}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string","example":"eyJvZmZzZXQiOjUwfQ=="}},{"name":"offset","in":"query","required":false,"schema":{"type":"number","minimum":0,"example":0}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/datapoint/promote":{"post":{"summary":"Promote an Agent Session to a named Datapoint","tags":["Datapoints"],"operationId":"datapoint_promote","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"Creates a managed, named datapoint from an existing agent session. The plan and parameters are extracted from the session and stored in PouchDB. Raw data is NOT stored.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["sessionId","name"],"properties":{"sessionId":{"type":"string","example":"9209aa45-93f7-471c-8883-76326c4083f1"},"name":{"type":"string","example":"pv-portfolio-stromdao-netze"},"description":{"type":"string","default":""},"owner":{"type":"string","default":""},"tags":{"type":"array","items":{"type":"string"},"default":[]},"fixedParams":{"type":"object","default":{}},"refresh":{"type":"object","default":{"strategy":"manual"},"example":{"strategy":"manual"}},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"promote":{"summary":"Promote a PV forecast session","value":{"sessionId":"9209aa45-93f7-471c-8883-76326c4083f1","name":"pv-portfolio-stromdao-netze","description":"PV generation forecast for STROMDAO Netze","tags":["solar","forecast","stromdao"],"fixedParams":{"query":"STROMDAO Netze","forecastDays":3},"refresh":{"strategy":"manual"}}}}}}}}},"/api/datapoint/oeo-context":{"get":{"summary":"JSON-LD @context mapping datapoint fields to OEO class IRIs","tags":["Datapoints"],"operationId":"datapoint_oeoContext","parameters":[{"name":"name","in":"query","schema":{"type":"string","example":"my-datapoint"},"description":"Optional datapoint name for field-level OEO mappings"},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"Returns a JSON-LD @context document that maps datapoint field names to Open Energy Ontology (OEO) class IRIs. Optionally scoped to a specific datapoint (by name) for field-level mappings."}},"/api/datapoint/:name/oemetadata":{"get":{"summary":"OEMetadata v2.0 — FAIR Data metadata for a Datapoint (EU AI Act Art. 12)","tags":["Datapoints"],"operationId":"datapoint_oemetadata","parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string","example":"pv-portfolio-stromdao-netze"}},{"name":"validate","in":"query","required":false,"schema":{"type":"boolean","default":false},"description":"Run ajv JSON-Schema validation against the OEMetadata v2.0 schema and append a `_validation` report to the response."},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"Returns a fully OEMetadata v2.0 conformant metadata document. Includes a SHA-256 cryptographic provenance hash (EU AI Act Art. 12), OEO semantic class mappings, spatial/temporal coverage, source licensing, and a Cernion-specific extension for agent interventions and scheduling state. Set ?validate=true to include a JSON-Schema validation report against the OEMetadata v2.0 schema (requires prior `npm run sync:oemetadata`)."}},"/api/datapoint/:name/interventions":{"get":{"summary":"Agent intervention log for a Datapoint (Issue #32)","tags":["Datapoints"],"operationId":"datapoint_interventions","parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string","example":"pv-portfolio-stromdao-netze"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"minimum":1,"maximum":500,"example":50},"description":"Maximum number of intervention entries to return (newest first)."},{"name":"since","in":"query","required":false,"schema":{"type":"string","format":"date-time","example":"2026-03-01T00:00:00Z"},"description":"ISO-8601 timestamp. Only interventions at or after this timestamp are returned."},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Agent intervention log","content":{"application/json":{"example":{"name":"pv-portfolio-stromdao-netze","total":2,"interventions":[{"timestamp":"2026-03-29T12:00:00.000Z","action":"param_repair","reason":"Corrected gridOperatorId alias from bnr to bdewCode","confidence_score":0.95,"agent_id":"executePlan"}]}}}}},"description":"Returns the `agent_interventions` array for a Datapoint — a structured log of every automated correction the agent made during plan execution. Each entry contains `timestamp`, `action`, `reason`, `confidence_score`, and `agent_id`. Use `?since=<ISO-8601>` to retrieve only recent entries. Use `?limit=N` to cap the number of returned entries (default: 50, max: 500). Satisfies the Explainable AI (XAI) auditability requirement of Issue #32."}},"/api/datapoint/health/overview":{"get":{"summary":"Health overview of all Datapoints","tags":["Datapoints"],"operationId":"datapoint_health","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/datapoint/:name":{"get":{"summary":"Get Datapoint details by name","tags":["Datapoints"],"operationId":"datapoint_get","parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string","example":"pv-portfolio-stromdao-netze"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}},"put":{"summary":"Update Datapoint definition","tags":["Datapoints"],"operationId":"datapoint_update","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"description":{"type":"string"},"owner":{"type":"string"},"tags":{"type":"string"},"fixedParams":{"type":"string"},"refresh":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}},"delete":{"summary":"Delete a Datapoint","tags":["Datapoints"],"operationId":"datapoint_remove","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}}},"/api/datapoint/:name/refresh":{"post":{"summary":"Refresh a Datapoint (re-execute plan, update health)","tags":["Datapoints"],"operationId":"datapoint_refresh","parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string","example":"pv-portfolio-stromdao-netze"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"Re-executes the stored plan with fixedParams via agent.executePlan. Only metadata (lastRun, health) is persisted — raw data flows through RAM.","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","required":[],"properties":{"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"refresh":{"summary":"Trigger a refresh (no body required)","value":{}}}}}}}},"/api/datapoint/:name/data":{"get":{"summary":"Get live data from a Datapoint (re-executes plan)","tags":["Datapoints"],"operationId":"datapoint_data","parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string","example":"pv-portfolio-stromdao-netze"}},{"name":"format","in":"query","required":false,"schema":{"type":"string","enum":["json","csv"],"default":"json"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"Re-executes the stored plan with fixedParams (and optional query-param overrides). Pass format=csv to receive the last step result as a CSV download."}},"/api/datapoint/snapshot":{"post":{"summary":"Create a Snapshot — seal a consistent set of Datapoints","tags":["Datapoints"],"operationId":"datapoint_createSnapshot","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"Refreshes all specified datapoints (sequentially) if their cached data is older than `maxAgeMinutes`, then seals the consistent state as a snapshot document in PouchDB. The snapshot records each datapoint`s `provenanceHash` and a combined `snapshotHash` (SHA-256 over sorted individual hashes). Accepts either `datapointNames` (array) or `tags` (comma-separated string). Raw data is NOT stored (KRITIS constraint).","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"datapointNames":{"type":"array","items":{"type":"string"},"example":["pv-portfolio-stromdao-netze","redispatch-anlagen-stromdao-netze"]},"tags":{"type":"string","example":"stromdao-netze,redispatch-pipeline","description":"Comma-separated tag filter. Mutually exclusive with datapointNames."},"maxAgeMinutes":{"type":"number","default":60,"description":"Maximum age of a datapoint before a refresh is triggered."},"name":{"type":"string","example":"stromdao-validierung-q1-2026"},"description":{"type":"string","default":""},"createdBy":{"type":"string","enum":["manual","agent","scheduler"],"default":"manual"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"byNames":{"summary":"Snapshot by datapoint names","value":{"datapointNames":["pv-portfolio-stromdao-netze","ewk-benchmark-stromdao"],"maxAgeMinutes":60,"name":"stromdao-validierung-q1-2026","description":"Consistency check STROMDAO Netze Q1 2026"}},"byTags":{"summary":"Snapshot by tag filter","value":{"tags":"stromdao-netze,redispatch-pipeline","maxAgeMinutes":30}}}}}}}},"/api/datapoint/snapshots":{"get":{"summary":"List all Snapshots","tags":["Datapoints"],"operationId":"datapoint_listSnapshots","parameters":[{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["complete","partial","failed"],"example":"complete"},"description":"Filter snapshots by status."},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"Returns all snapshot documents stored in PouchDB, optionally filtered by status. Snapshots are listed in PouchDB key order (by creation UUID)."}},"/api/datapoint/snapshot/:id":{"get":{"summary":"Get Snapshot details by ID","tags":["Datapoints"],"operationId":"datapoint_getSnapshot","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","example":"3f1a2b4c-8e9d-4c7a-b1f2-0a3e5d6c7b8a"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"Returns the full snapshot document including per-datapoint provenance hashes, refresh status, and the last validation result."},"delete":{"summary":"Delete a Snapshot","tags":["Datapoints"],"operationId":"datapoint_removeSnapshot","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","example":"3f1a2b4c-8e9d-4c7a-b1f2-0a3e5d6c7b8a"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}}}}}}},"/api/datapoint/snapshot/:id/validate":{"post":{"summary":"Validate a Snapshot — check provenance hash consistency","tags":["Datapoints"],"operationId":"datapoint_validateSnapshot","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","example":"3f1a2b4c-8e9d-4c7a-b1f2-0a3e5d6c7b8a"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"Compares each datapoint`s current `provenanceHash` against the hash recorded at snapshot creation. Returns `consistent: true` if all hashes match, or `consistent: false` with a `drift` array listing changed datapoints. The validation result is persisted back to the snapshot document.","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"validate":{"summary":"Trigger validation (no body required)","value":{}}}}}}}},"/api/energy-sharing-community/communities":{"post":{"summary":"Create a new Energy Sharing community (#285)","tags":["Energy Sharing Community"],"operationId":"energy_sharing_community_createCommunity","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Created community"}},"description":"Creates a persistent community record. Add members via POST /communities/:id/members.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["name"],"properties":{"name":{"type":"string","example":"PV-Gemeinschaft Musterstraße"},"communityId":{"type":"string","description":"External community ID from VNB","example":"ES-2026-001"},"validationReportId":{"type":"string","example":"a1b2c3d4-..."},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}}}}}},"get":{"summary":"List Energy Sharing communities (#285)","tags":["Energy Sharing Community"],"operationId":"energy_sharing_community_listCommunities","parameters":[{"name":"includeDeleted","in":"query","schema":{"type":"boolean","default":false},"description":"Include soft-deleted communities (for audit access)"},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"List of communities"}}}},"/api/energy-sharing-community/communities/:id":{"get":{"summary":"Get an Energy Sharing community by ID (#285)","tags":["Energy Sharing Community"],"operationId":"energy_sharing_community_getCommunity","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Community record"},"404":{"description":"Not found"}}},"delete":{"summary":"Soft-delete an Energy Sharing community (#285)","tags":["Energy Sharing Community"],"operationId":"energy_sharing_community_removeCommunity","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Soft-delete confirmed"},"404":{"description":"Not found"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}}}}}}},"/api/energy-sharing-community/communities/:id/members":{"post":{"summary":"Add a member to an Energy Sharing community (#285)","tags":["Energy Sharing Community"],"operationId":"energy_sharing_community_addMember","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Updated community with the new member"},"404":{"description":"Community not found"}},"description":"roles is combinable: [\"generator\"], [\"consumer\"], [\"storage\"], or e.g. [\"generator\",\"consumer\"] for a Prosumer. \"storage\" is modelable but not yet fed into allocation arithmetic. validTo is optional (omit for an open-ended membership).","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["roles","validFrom"],"properties":{"maloId":{"type":"string","example":"DE0001234567890123456789012345678"},"mastrNummer":{"type":"string","example":"SEE904837264953"},"name":{"type":"string","example":"Müller"},"roles":{"type":"array","items":{"type":"string","enum":["generator","consumer","storage"]}},"generatorSharePercent":{"type":"number","example":100},"consumerSharePercent":{"type":"number","example":30},"validFrom":{"type":"string","example":"2026-01-01"},"validTo":{"type":"string","example":"2026-12-31"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"consumer":{"value":{"maloId":"DE0001234567890123456789012345678","name":"Müller","roles":["consumer"],"consumerSharePercent":30,"validFrom":"2026-01-01"}},"prosumer":{"value":{"maloId":"DE0001234567890123456789012345678","mastrNummer":"SEE904837264953","name":"Schmidt","roles":["generator","consumer"],"generatorSharePercent":50,"consumerSharePercent":20,"validFrom":"2026-01-01"}}}}}}}},"/api/energy-sharing-community/communities/:id/members/:memberId":{"put":{"summary":"Update a community member, e.g. to end their membership via validTo (#285)","tags":["Energy Sharing Community"],"operationId":"energy_sharing_community_updateMember","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"memberId","in":"path","required":true,"schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Updated member"},"404":{"description":"Community or member not found"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}}}}}},"delete":{"summary":"Hard-remove a member from a community — data-entry correction only (#285)","tags":["Energy Sharing Community"],"operationId":"energy_sharing_community_removeMember","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"memberId","in":"path","required":true,"schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Member removed"},"404":{"description":"Community or member not found"}},"description":"Removes the member record entirely. To end an active membership normally, use PUT /communities/:id/members/:memberId with validTo instead, which preserves history.","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}}}}}}},"/api/energy-sharing-community/communities/:id/active-members":{"get":{"summary":"Resolve active generators/consumers for a date range (#285)","tags":["Energy Sharing Community"],"operationId":"energy_sharing_community_resolveActiveMembers","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"dateFrom","in":"query","required":true,"schema":{"type":"string","example":"2026-06-01"}},{"name":"dateTo","in":"query","required":true,"schema":{"type":"string","example":"2026-06-30"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Active generators/consumers for the period"},"404":{"description":"Community not found"}},"description":"A member is active for [dateFrom, dateTo] if their [validFrom, validTo] Teilnahmezeitraum overlaps it. Members whose validTo is before dateFrom are excluded — no manual filtering needed by the caller. No prorating of sharePercent for partial-period membership."}},"/api/finance-agent/analyze":{"post":{"summary":"Analyze finance/regulatory questions with evidence-bound synthesis","tags":["Finance Agent"],"operationId":"finance_agent_analyze","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Finance analysis with evidence list and guarded synthesis"}},"description":"Deterministic finance workflow for VNBs: query planning → knowledge-rag retrieval → L1/L2 evidence arbitration → guarded synthesis. Default mode is rule_plus_hyde. No claim is emitted without source evidence.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["query"],"properties":{"query":{"type":"string","example":"Wie verhalten sich CAPEX, OPEX und TOTEX je 1 EUR Investition in der 5. Regulierungsperiode?"},"mode":{"type":"string","enum":["rule_only","rule_plus_hyde"],"default":"rule_plus_hyde"},"profileId":{"type":"string","description":"Optional CYA profile id to inject target layer awareness into retrieval planning.","example":"stadtwerk_regulierung"},"topK":{"type":"integer","minimum":2,"maximum":20,"default":6},"minScore":{"type":"number","minimum":0,"maximum":1,"default":0.35},"includeTrace":{"type":"boolean","default":false},"sessionId":{"type":"string","description":"Optional session identifier for A2A/memory-aware finance analysis.","example":"finance-session-2026-05-04"},"datapointContext":{"type":"array","description":"Optional list of datapoint names to preload as L1 working memory facts.","items":{"type":"string"},"default":[],"example":["finance-capex-baseline-2025","finance-interest-rate-history"]},"includeMemoryContext":{"type":"boolean","default":true},"includeA2AContext":{"type":"boolean","default":true},"includeDatapointsContext":{"type":"boolean","default":true},"contextLimit":{"type":"integer","minimum":1,"maximum":20,"default":5},"persistMemory":{"type":"boolean","default":true},"persistDatapoints":{"type":"boolean","default":false,"description":"Persist derived finance scenario output as datapoint when calculations are performed."},"allowHypotheticals":{"type":"boolean","default":false,"description":"Allow hypothetical scenario synthesis if no L1 evidence is found after multi-hop retrieval."},"collection":{"type":"string","default":"cernion_knowledge_v1","description":"Optional knowledge collection name for RAG retrieval. Defaults to central Landside collection cernion_knowledge_v1. Tenant/custom collections are only used when explicitly provided."},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"value":{"query":"Wie verhalten sich CAPEX, OPEX und TOTEX je 1 EUR Investition in der 5. Regulierungsperiode?","mode":"rule_plus_hyde","profileId":"stadtwerk_regulierung","topK":6,"minScore":0.35,"includeTrace":false,"sessionId":"finance-session-2026-05-04","datapointContext":["finance-capex-baseline-2025"],"includeMemoryContext":true,"includeA2AContext":true,"includeDatapointsContext":true,"contextLimit":5,"persistMemory":true,"persistDatapoints":false,"allowHypotheticals":false,"collection":"cernion_knowledge_v1"}}}}}}}},"/api/finance-agent/memory":{"post":{"summary":"Store finance session memory","tags":["Finance Agent"],"operationId":"finance_agent_remember","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"Persists session memory in Object Store namespace finance_agent_memory for context-aware follow-up analyses.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["sessionId","memory"],"properties":{"sessionId":{"type":"string","example":"finance-session-2026-05-04"},"memory":{"type":"object","example":{"summary":"CAPEX/OPEX baseline aus letzter Sitzung","legalReferences":["§21a EnWG"]}},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"value":{"sessionId":"finance-session-2026-05-04","memory":{"summary":"CAPEX/OPEX baseline aus letzter Sitzung","legalReferences":["§21a EnWG"],"notes":"Hauptfokus auf RP5 und TOTEX-Wirkung."}}}}}}}}},"/api/finance-agent/memory/:sessionId":{"get":{"summary":"Get finance session memory","tags":["Finance Agent"],"operationId":"finance_agent_memory","parameters":[{"name":"sessionId","in":"path","required":true,"schema":{"type":"string","example":"finance-session-2026-05-04"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"Returns persisted session memory for the provided session id."}},"/api/finance-agent/analyses":{"get":{"summary":"List finance analyses","tags":["Finance Agent"],"operationId":"finance_agent_list","parameters":[{"name":"status","in":"query","required":false,"schema":{"type":"string","example":"ok"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":20}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string","example":"eyJvZmZzZXQiOjIwfQ=="}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"example":0}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"Returns persisted finance analyses (newest first)."}},"/api/finance-agent/analyses/:id":{"get":{"summary":"Get finance analysis by id","tags":["Finance Agent"],"operationId":"finance_agent_get","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","example":"f8cb0a6b-7f65-4b66-8bae-e8e89aa08877"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"Returns a full persisted finance analysis document."}},"/api/finance-agent/prompts":{"get":{"summary":"Get internal finance prompt templates","tags":["Finance Agent"],"operationId":"finance_agent_prompts","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"Returns internal system prompts used in query planning and synthesis."}},"/api/finance-agent/benchmark-comparison":{"post":{"summary":"Compare KPI metrics for two VNBs using Layer-0 data","tags":["Finance Agent"],"operationId":"finance_agent_benchmarkComparison","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"VNB benchmark comparison with hard KPI evidence"}},"description":"Multi-service orchestrator: resolves both VNBs via marketPartners, fetches EWK benchmark metrics (Anschlussdauer, Digitalisierungsindex, Umsetzungsquote), optionally loads asset portfolios (solar, wind, storage). Returns evidence-based comparison with hard KPI synthesis (no RAG hypotheticals).","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["vnb1Name","vnb2Name"],"properties":{"vnb1Name":{"type":"string","example":"Netze BW","description":"Name of first VNB (grid operator)"},"vnb2Name":{"type":"string","example":"STROMDAO Netze","description":"Name of second VNB (grid operator)"},"comparisonDimensions":{"type":"array","items":{"type":"string"},"default":["anschlussdauer","digitalisierungsindex","umsetzungsquote"],"description":"EWK dimensions to compare (anschlussdauer, digitalisierungsindex, umsetzungsquote)"},"includeAssetContext":{"type":"boolean","default":false,"description":"If true, includes asset portfolio (solar, wind, storage) for both VNBs"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"value":{"vnb1Name":"Netze BW","vnb2Name":"STROMDAO Netze","comparisonDimensions":["anschlussdauer","digitalisierungsindex","umsetzungsquote"],"includeAssetContext":true}}}}}}}},"/api/finance-agent/fnav/economics":{"post":{"summary":"Calculate fNAV economics: avoided CAPEX, annual fee, payback (Phase 5)","tags":["Netzfahrplan / fNAV"],"operationId":"finance_agent_fnavEconomics","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"fNAV economics result","content":{"application/json":{"schema":{"type":"object","properties":{"avoidedCopperCapexEur":{"type":"number"},"annualFeeEur":{"type":"number"},"paybackYears":{"type":"number"},"capexSource":{"type":"string","enum":["eog_calculator","parametric_fallback","override"]},"sensitivityFlags":{"type":"array","items":{"type":"string"}},"governanceStatus":{"type":"string"},"governanceBlockers":{"type":"array","items":{"type":"string"}},"contractGate":{"type":"object","description":"Explicit contract-gate assessment"},"governanceArtifact":{"type":"object","nullable":true},"decisionChain":{"type":"array","items":{"type":"object"}},"proof":{"type":"object"},"findings":{"type":"array","items":{"type":"object"}},"metadata":{"type":"object"}}}}}}},"description":"Deterministic fNAV economics assessment. Computes:\n- avoidedCopperCapexEur: cost of conventional grid expansion avoided by fNAV\n- annualFeeEur: recurring cost of the fNAV contract\n- paybackYears: avoidedCapex / annualFee\n- sensitivityFlags: qualitative flags for high uncertainty inputs\n\nOption B: calls eog-calculator.capexEstimate for TOTEX-based CAPEX reference; if unavailable, uses parametric fallback (FN_ECONOMICS_PARTIAL).\n\nGovernance Option B: governanceStatus is always requires_governance_decision until legalStatus=approved AND contractStatus=signed.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["fnavProfile"],"properties":{"fnavProfile":{"type":"object","example":{"requestedCapacity":5000,"firmCapacity":3000,"flexibleCapacity":2000,"curtailmentWindow":4,"signalPriorityPolicy":"Netzsignal Vorrang vor Vermarktungs- und Fahrplanoptimierung","controlEvidenceRef":"SCADA-ATTACHMENT-42 / Fernwirknachweis 2026-05","contractStatus":"negotiating","legalStatus":"pending"},"required":["requestedCapacity"],"properties":{"requestedCapacity":{"type":"number","example":5000,"description":"Requested capacity kW"},"firmCapacity":{"type":"number","example":3000},"flexibleCapacity":{"type":"number","example":2000},"curtailmentWindow":{"type":"number","example":4},"signalPriorityPolicy":{"type":"string","example":"Netzsignal Vorrang vor Vermarktungs- und Fahrplanoptimierung"},"controlEvidenceRef":{"type":"string","example":"SCADA-ATTACHMENT-42 / Fernwirknachweis 2026-05"},"contractStatus":{"type":"string","example":"negotiating"},"legalStatus":{"type":"string","example":"pending"}}},"voltageLevel":{"type":"string","enum":["NS","MS","HS"],"default":"MS"},"gridOperator":{"type":"string","example":"STROMDAO Netze","description":"Used for eog-calculator lookup"},"annualFeeEur":{"type":"number","example":12000,"description":"Annual fNAV contract fee (EUR/yr)"},"ownerContact":{"type":"string","example":"netzplanung@stromdao.de"},"avoidedCapexOverrideEur":{"type":"number","example":1500000,"description":"Override avoided CAPEX (EUR)"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"fNAV economics — STROMDAO Netze MS":{"value":{"fnavProfile":{"requestedCapacity":5000,"firmCapacity":3000,"flexibleCapacity":2000,"curtailmentWindow":4,"signalPriorityPolicy":"Netzsignal Vorrang vor Vermarktungs- und Fahrplanoptimierung","controlEvidenceRef":"SCADA-ATTACHMENT-42 / Fernwirknachweis 2026-05","contractStatus":"signed","legalStatus":"approved"},"voltageLevel":"MS","gridOperator":"STROMDAO Netze","annualFeeEur":15000,"ownerContact":"netzplanung@stromdao.de"}}}}}}}},"/api/grid-connection/validate":{"post":{"summary":"Run Netzanschluss validation pipeline (6-step, deterministic)","tags":["Grid Connection Validation"],"operationId":"grid_connection_validate","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"ValidationReport with findings from all 6 pipeline steps","content":{"application/json":{"example":{"success":true,"id":"a1b2c3d4-...","decision":"GO_CONDITIONAL","summary":{"totalInstallations":59,"totalCapacityMW":73.4,"findingsCount":{"info":4,"warning":7,"error":1},"durationMs":12450},"snapshot":{"id":"snap-uuid","consistent":true,"drift":null}}}}},"202":{"description":"REST/Gateway call accepted as async job. Poll /api/jobs/:jobId/status and /api/jobs/:jobId/result.","content":{"application/json":{"example":{"success":true,"jobId":"f8d2d8d4-4f22-4a0a-bec7-a9f05ad6b9e6","status":"queued","statusUrl":"/api/jobs/f8d2d8d4-4f22-4a0a-bec7-a9f05ad6b9e6/status","resultUrl":"/api/jobs/f8d2d8d4-4f22-4a0a-bec7-a9f05ad6b9e6/result"}}}}},"description":"Executes a deterministic 6-step grid connection validation pipeline: inventory → delta → capacity → EWK benchmark → Go/No-Go decision → audit trail. No LLM involvement — identical inputs always produce identical finding codes. Results are persisted to the validation database and retrievable via GET /validations/:id.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"gridOperatorId":{"type":"string","description":"MaStR grid operator ID (SNB...)","example":"SNB935578300972"},"gridOperatorBdew":{"type":"string","description":"13-digit BDEW market-partner code","example":"9907473000008"},"gridOperatorName":{"type":"string","description":"Grid operator name (fuzzy match via marketPartners)","example":"STROMDAO Netze"},"datapointTags":{"type":"array","items":{"type":"string"},"description":"Tags for datapoint snapshot creation (Weg B)","example":["stromdao-netze"]},"maxAgeMinutes":{"type":"integer","default":120,"description":"Datapoint freshness threshold in minutes"},"skipSteps":{"type":"array","items":{"type":"integer"},"description":"Pipeline step numbers to skip (e.g. [4] skips EWK benchmark)","example":[]},"includeCapacityCheck":{"type":"boolean","default":false,"description":"Call cernion_connection_capacity_check for headroom data"},"scenarioAdditions":{"type":"array","description":"Optional What-If installations added virtually for this validation run only.","example":[{"id":"whatif-pv-1","type":"solar","capacityMW":1.5,"voltageLevel":"MS"}],"items":{"type":"object","properties":{"id":{"type":"string","example":"whatif-1"},"type":{"type":"string","example":"solar"},"capacityKW":{"type":"number","example":1500},"capacityMW":{"type":"number","example":1.5},"energietraeger":{"type":"string","example":"solar"},"voltageLevel":{"type":"string","example":"MS"}}}},"scenarioCapacityMW":{"type":"number","description":"Optional extra capacity (MW) injected as a synthetic What-If installation.","example":2.5},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"By MaStR ID":{"value":{"gridOperatorId":"SNB935578300972","datapointTags":["stromdao-netze"],"maxAgeMinutes":120}},"By BDEW code":{"value":{"gridOperatorBdew":"9907473000008"}},"By name":{"value":{"gridOperatorName":"STROMDAO Netze","skipSteps":[4]}},"What-If scenario":{"value":{"gridOperatorId":"SNB935578300972","scenarioAdditions":[{"id":"whatif-pv-1","type":"solar","capacityMW":1.5,"voltageLevel":"MS"}],"scenarioCapacityMW":0.8}}}}}}}},"/api/grid-connection/validations":{"get":{"summary":"List past grid connection validation reports","tags":["Grid Connection Validation"],"operationId":"grid_connection_list","parameters":[{"name":"gridOperatorId","in":"query","schema":{"type":"string","example":"SNB935578300972"},"description":"Filter by MaStR grid operator ID"},{"name":"limit","in":"query","schema":{"type":"integer","default":20,"maximum":100},"description":"Maximum number of results"},{"name":"cursor","in":"query","required":false,"schema":{"type":"string","example":"eyJvZmZzZXQiOjIwfQ=="}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"example":0}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Paginated list of validation report summaries","content":{"application/json":{"example":{"count":3,"validations":[{"id":"...","gridOperator":{"name":"STROMDAO Netze"},"decision":"GO_CONDITIONAL","createdAt":"2026-03-30T..."}]}}}}},"description":"Returns validation reports stored in PouchDB, newest first. Filter by gridOperatorId."}},"/api/grid-connection/validations/:id":{"get":{"summary":"Get a specific validation report by ID","tags":["Grid Connection Validation"],"operationId":"grid_connection_get","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","example":"a1b2c3d4-1234-5678-90ab-cdef12345678"},"description":"Validation report UUID"},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Full ValidationReport document"},"404":{"description":"Validation not found"}},"description":"Returns the full ValidationReport document including all findings and snapshot reference."}},"/api/grid-connection/messkonzept/conflict/validate":{"post":{"summary":"Validate PV/storage/heat-pump metering-concept conflict","tags":["Grid Connection Validation"],"operationId":"grid_connection_validateMesskonzeptConflict","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"Deterministically evaluates the Cernion V1 REST reference case for a reported MK10 meter merge where the target state requires MK40 cascade metering, §14a registration, and explicit separation of a demounted legacy full-feed-in PV system.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"postalCode":{"type":"string"},"reportedMeteringConcept":{"type":"string"},"legacyPvStatus":{"type":"string"},"batteryChargeKW":{"type":"number"},"heatPumpKW":{"type":"number"},"newPvKWp":{"type":"number"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}}},"/api/grid-connection/fnav/validate":{"post":{"summary":"Validate fNAV profile against grid connection capacity (Phase 5)","tags":["Netzfahrplan / fNAV"],"operationId":"grid_connection_fnavValidate","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"fNAV validation result with capacity model, N-1 check, and governance status","content":{"application/json":{"schema":{"type":"object","properties":{"capacityModel":{"type":"object","description":"Normalised fNAV capacity model"},"n1Check":{"type":"object","description":"N-1 compliance result"},"feasibility":{"type":"string","enum":["feasible","conditional","copper_needed"]},"governanceStatus":{"type":"string"},"governanceBlockers":{"type":"array","items":{"type":"string"}},"contractGate":{"type":"object","description":"Explicit contract-gate assessment"},"governanceArtifact":{"type":"object","nullable":true},"decisionChain":{"type":"array","items":{"type":"object"}},"proof":{"type":"object"},"findings":{"type":"array","items":{"type":"object"}},"metadata":{"type":"object"},"source":{"type":"string"}}}}}}},"description":"Applies the fNAV capacity model (§14a EnWG) for a proposed grid connection. Runs N-1 compliance check with hybrid threshold (Option C: domain default + tenant/project/scenario override). Reports technical feasibility and enforces governance gate (Option B: final status is requires_governance_decision until legalStatus=approved AND contractStatus=signed). Delegates to grid-operations.netzfahrplanGenerate for the deterministic core.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["fnavProfile"],"properties":{"gridOperatorName":{"type":"string","example":"STROMDAO Netze"},"voltageLevel":{"type":"string","enum":["NS","MS","HS"],"default":"MS","description":"Voltage level of the connection point"},"fnavProfile":{"type":"object","example":{"requestedCapacity":5000,"firmCapacity":3000,"flexibleCapacity":2000,"curtailmentWindow":4,"signalPriorityPolicy":"Netzsignal Vorrang vor Vermarktungs- und Fahrplanoptimierung","controlEvidenceRef":"SCADA-ATTACHMENT-42 / Fernwirknachweis 2026-05","contractStatus":"negotiating","legalStatus":"pending"},"required":["requestedCapacity"],"properties":{"requestedCapacity":{"type":"number","example":5000,"description":"Requested capacity in kW"},"firmCapacity":{"type":"number","example":3000,"description":"Guaranteed firm capacity in kW"},"flexibleCapacity":{"type":"number","example":2000,"description":"Curtailable §14a flex capacity in kW"},"curtailmentWindow":{"type":"number","example":4,"description":"Max curtailment hours per day (0–24)"},"operatingConstraint":{"type":"string","example":"§14a max 2h/event"},"signalPriorityPolicy":{"type":"string","example":"Netzsignal Vorrang vor Vermarktungs- und Fahrplanoptimierung"},"controlEvidenceRef":{"type":"string","example":"SCADA-ATTACHMENT-42 / Fernwirknachweis 2026-05"},"contractStatus":{"type":"string","example":"negotiating"},"legalStatus":{"type":"string","example":"pending"}}},"n1ThresholdOverride":{"type":"object","example":{"project":78},"description":"Override N-1 threshold (MVA) at tenant/project/scenario level","properties":{"tenant":{"type":"number","example":85},"project":{"type":"number","example":78},"scenario":{"type":"number","example":70}}},"ownerContact":{"type":"string","example":"netzplanung@stromdao.de","description":"Responsible owner — required for governance approval"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"fNAV hybrid MS":{"value":{"gridOperatorName":"STROMDAO Netze","voltageLevel":"MS","fnavProfile":{"requestedCapacity":5000,"firmCapacity":3000,"flexibleCapacity":2000,"curtailmentWindow":4,"signalPriorityPolicy":"Netzsignal Vorrang vor Vermarktungs- und Fahrplanoptimierung","controlEvidenceRef":"SCADA-ATTACHMENT-42 / Fernwirknachweis 2026-05","contractStatus":"signed","legalStatus":"approved"},"ownerContact":"netzplanung@stromdao.de"}}}}}}}},"/api/eog-calculator/input-status":{"post":{"summary":"Check EOG input coverage for a tenant/VNB scope","tags":["EOG Calculator"],"operationId":"eog_calculator_inputStatus","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"Reports required fields, optional-but-relevant fields, and calibration anchors. optionalButRelevant includes quality_element, regulatory_account_balance, capex_adjustment_*, and volatile_costs which are needed for accurate detail reproduction.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["tenantId","vnbId"],"properties":{"tenantId":{"type":"string","example":"tenant-a"},"vnbId":{"type":"string","example":"SNB100"},"periodYear":{"type":"integer","example":2026},"sector":{"type":"string","enum":["strom","gas"],"example":"strom"},"regulatoryPeriod":{"type":"string","example":"RP3"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"value":{"tenantId":"tenant-a","vnbId":"SNB100","periodYear":2026,"sector":"strom"}}}}}}}},"/api/eog-calculator/datapoints/validate":{"post":{"summary":"Validate submitted EOG datapoints without persisting them","tags":["EOG Calculator"],"operationId":"eog_calculator_validateDatapoints","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["tenantId","vnbId","datapoints"],"properties":{"tenantId":{"type":"string","example":"tenant-a"},"vnbId":{"type":"string","example":"SNB100"},"datapoints":{"type":"array","items":{"type":"object"},"example":[{"key":"eog.base_cost_level","value":1000,"periodYear":2026,"sector":"strom","source":"tenant_uploaded","confidence":"confirmed"}]},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"value":{"tenantId":"tenant-a","vnbId":"SNB100","datapoints":[{"key":"eog.base_cost_level","value":1000,"periodYear":2026,"sector":"strom","source":"tenant_uploaded","confidence":"confirmed"}]}}}}}}}},"/api/eog-calculator/datapoints/commit":{"post":{"summary":"Commit EOG datapoints only after successful validation or explicit HITL confirmation","tags":["EOG Calculator"],"operationId":"eog_calculator_commitDatapoints","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["validationId"],"properties":{"validationId":{"type":"string","example":"validation-uuid"},"hitlConfirmation":{"type":"object","example":{"approved":true,"decision":"manual_confirm"}},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"value":{"validationId":"validation-uuid","hitlConfirmation":{"approved":true,"decision":"manual_confirm"}}}}}}}}},"/api/eog-calculator/calculate":{"post":{"summary":"Calculate EOG for actual data scope","tags":["EOG Calculator"],"operationId":"eog_calculator_calculate","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["tenantId","vnbId"],"properties":{"tenantId":{"type":"string","example":"tenant-a"},"vnbId":{"type":"string","example":"SNB100"},"periodYear":{"type":"integer","example":2026},"sector":{"type":"string","enum":["strom","gas"],"example":"strom"},"regulatoryPeriod":{"type":"string","example":"RP3"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"value":{"tenantId":"tenant-a","vnbId":"SNB100","periodYear":2026,"sector":"strom"}}}}}}}},"/api/eog-calculator/scenario":{"post":{"summary":"Run transient EOG scenario with overrides (no persistence)","tags":["EOG Calculator"],"operationId":"eog_calculator_scenario","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["tenantId","vnbId","overrides"],"properties":{"tenantId":{"type":"string","example":"tenant-a"},"vnbId":{"type":"string","example":"SNB100"},"periodYear":{"type":"integer","example":2026},"sector":{"type":"string","enum":["strom","gas"],"example":"strom"},"regulatoryPeriod":{"type":"string","example":"RP3"},"overrides":{"type":"array","items":{"type":"object"},"example":[{"key":"eog.quality_element","value":50}]},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"value":{"tenantId":"tenant-a","vnbId":"SNB100","overrides":[{"key":"eog.quality_element","value":50}]}}}}}}}},"/api/eog-calculator/request-input":{"post":{"summary":"Create HITL items for missing EOG inputs with blocker explanation","tags":["EOG Calculator"],"operationId":"eog_calculator_requestInput","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["tenantId","vnbId"],"properties":{"tenantId":{"type":"string","example":"tenant-a"},"vnbId":{"type":"string","example":"SNB100"},"periodYear":{"type":"integer","example":2026},"sector":{"type":"string","enum":["strom","gas"],"example":"strom"},"regulatoryPeriod":{"type":"string","example":"RP3"},"missingKeys":{"type":"array","items":{"type":"string"},"example":["eog.efficiency_value"]},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"value":{"tenantId":"tenant-a","vnbId":"SNB100","missingKeys":["eog.efficiency_value"]}}}}}}}},"/api/eog-calculator/:tenantId/:vnbId":{"get":{"summary":"Get persisted EOG model (datapoints + decision events + provenance)","tags":["EOG Calculator"],"operationId":"eog_calculator_getModel","parameters":[{"name":"tenantId","in":"path","required":true,"schema":{"type":"string","example":"tenant-a"}},{"name":"vnbId","in":"path","required":true,"schema":{"type":"string","example":"SNB100"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/mastr-quality/audit":{"post":{"summary":"Run MaStR portfolio quality audit (8-step, deterministic)","tags":["MaStR Data Quality"],"operationId":"mastr_quality_audit","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Internal (non-gateway) call: direct AuditReport with qualityScore, dimensions, and findings from all executed pipeline steps","content":{"application/json":{"example":{"success":true,"id":"a1b2c3d4-...","qualityScore":82,"qualityDimensions":{"status":{"score":90,"findings":2},"capacity":{"score":85,"findings":3},"connectionPoints":{"score":70,"findings":5},"duplicates":{"score":100,"findings":0},"geo":{"score":80,"findings":4}},"summary":{"totalInstallations":142,"findingsCount":{"info":5,"warning":8,"error":2},"missingNapFindings":6,"missingNapDistinctAssets":4,"missingNapRedispatchFindings":3,"missingNapRedispatchDistinctAssets":3,"napFindings":{"missingNapFindings":6,"missingNapDistinctAssets":4,"missingNapRedispatchFindings":3,"missingNapRedispatchDistinctAssets":3,"distinctAssetsAffected":4,"perAssetFindingCount":{"SEE900000001":2,"SEE900000002":1},"duplicateByAsset":{"SEE900000001":2}},"durationMs":45230}}}}},"202":{"description":"REST/Gateway call accepted as async job. Poll /api/jobs/:jobId/status and /api/jobs/:jobId/result.","content":{"application/json":{"example":{"success":true,"jobId":"f8d2d8d4-4f22-4a0a-bec7-a9f05ad6b9e6","status":"queued","statusUrl":"/api/jobs/f8d2d8d4-4f22-4a0a-bec7-a9f05ad6b9e6/status","resultUrl":"/api/jobs/f8d2d8d4-4f22-4a0a-bec7-a9f05ad6b9e6/result"}}}}},"description":"Executes a deterministic 8-step MaStR data quality audit for a VNB portfolio: VNB identity → full inventory → status anomalies → capacity anomalies → connection point integrity → duplicate detection → geo spot check → audit trail. Returns a qualityScore (0–100) across 5 weighted dimensions. No LLM involvement — identical inputs always produce identical finding codes. Steps 3–7 can be skipped via the skipSteps parameter; scores are re-normalised. Steps 1, 2, and 8 are mandatory.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"gridOperatorId":{"type":"string","description":"MaStR grid operator ID (SNB.../GNB...)","example":"SNB935578300972"},"gridOperatorBdew":{"type":"string","description":"13-digit BDEW market-partner code","example":"9907473000008"},"gridOperatorName":{"type":"string","description":"Grid operator name (fuzzy match)","example":"STROMDAO Netze"},"bdewCode":{"type":"string","description":"Alias for gridOperatorBdew","example":"9907473000008"},"gridOperatorBnr":{"type":"string","description":"Alias BNR input (7/8 digits; tolerant format accepted)","example":"10002977"},"bnr":{"type":"string","description":"Alias for gridOperatorBnr","example":"10002977"},"datapointTags":{"type":"array","items":{"type":"string"},"description":"Tags for datapoint snapshot (Weg B)","example":["stromdao-netze"]},"maxAgeMinutes":{"type":"integer","default":120,"description":"Datapoint freshness threshold in minutes"},"skipSteps":{"type":"array","items":{"type":"integer"},"description":"Steps to skip (valid: 3–7; steps 1, 2, 8 are mandatory)","example":[7]},"geoSampleSize":{"type":"integer","default":10,"maximum":50,"description":"Number of installations to geo-validate in step 7"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"By MaStR ID":{"value":{"gridOperatorId":"SNB935578300972","datapointTags":["stromdao-netze"]}},"By BDEW code, skip geo":{"value":{"gridOperatorBdew":"9907473000008","skipSteps":[7]}},"By name, full audit":{"value":{"gridOperatorName":"STROMDAO Netze","geoSampleSize":20}}}}}}}},"/api/mastr-quality/audits":{"get":{"summary":"List past MaStR quality audit reports","tags":["MaStR Data Quality"],"operationId":"mastr_quality_list","parameters":[{"name":"gridOperatorId","in":"query","schema":{"type":"string","example":"SNB935578300972"},"description":"Filter by MaStR grid operator ID"},{"name":"limit","in":"query","schema":{"type":"integer","default":20,"maximum":100},"description":"Maximum number of results"},{"name":"cursor","in":"query","required":false,"schema":{"type":"string","example":"eyJvZmZzZXQiOjIwfQ=="}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"example":0}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"List of audit report summaries","content":{"application/json":{"example":{"count":2,"audits":[{"id":"...","gridOperator":{"name":"STROMDAO Netze"},"qualityScore":82,"createdAt":"2026-03-31T..."}]}}}}},"description":"Returns audit reports stored in PouchDB, newest first. Filter by gridOperatorId."}},"/api/mastr-quality/audits/:id":{"get":{"summary":"Get a specific MaStR quality audit report by ID","tags":["MaStR Data Quality"],"operationId":"mastr_quality_get","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","example":"a1b2c3d4-1234-5678-90ab-cdef12345678"},"description":"Audit report UUID"},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Full AuditReport document"},"404":{"description":"Audit report not found"}},"description":"Returns the full AuditReport document including all findings and quality dimensions."}},"/api/mastr-quality/audits/:id/oemetadata":{"get":{"summary":"Get OEMetadata v2.0 FAIR metadata for an audit report by ID","tags":["MaStR Data Quality"],"operationId":"mastr_quality_oemetadata","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","example":"a1b2c3d4-1234-5678-90ab-cdef12345678"},"description":"Audit report UUID"},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"OEMetadata JSON-LD document"},"404":{"description":"Audit report not found"}},"description":"Returns a fully OEMetadata v2.0 conformant JSON-LD metadata document."}},"/api/mastr-quality/audits/:id/findings/:findingId/details":{"get":{"summary":"Get details for a specific finding in an audit","tags":["MaStR Data Quality"],"operationId":"mastr_quality_findingDetails","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","example":"a1b2c3d4-1234-5678-90ab-cdef12345678"},"description":"Audit report UUID"},{"name":"findingId","in":"path","required":true,"schema":{"type":"string","example":"F-5-002"},"description":"Finding row ID within the audit (findings[].id)"},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Finding detail object","content":{"application/json":{"example":{"success":true,"auditId":"a1b2c3d4-1234-5678-90ab-cdef12345678","findingId":"F-5-002","finding":{"id":"F-5-002","finding":"MQ_REDISPATCH_NO_NAP","step":5,"severity":"error","context":{"mastrNummer":"SEE900000001","details":{"installation":{"mastrNummer":"SEE900000001","einheitId":"EE123","technology":"solar","status":"35","commissioningDate":"2020-01-15","brutto":200,"operatorName":"Musterbetreiber GmbH"},"connection":{"napId":null,"napMastrNummer":null,"spannungsebene":null,"netzbetreiberName":null},"measurement":{"melo":null,"value":null,"rawValue":null,"resolvedValue":null,"valueSource":null}}}}}}}},"404":{"description":"Audit or finding not found"}},"description":"Returns the finding row with enriched standardized detail fields from finding.context.details (installation, connection, measurement)."}},"/api/vdmi-findings/tenants/:tenantId/findings":{"get":{"summary":"vdmi-findings.list","tags":["VDMI Governance"],"operationId":"vdmi_findings_list","parameters":[{"name":"tenantId","path":true,"required":true},{"name":"status","query":true,"description":"Comma-separated statuses"},{"name":"severity","query":true,"description":"Critical, high, medium, low"},{"name":"limit","query":true,"description":"Result limit"},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"List of findings","content":{"application/json":{"schema":{"type":"object","properties":{"tenantId":{"type":"string"},"totalFindings":{"type":"number"},"findings":{"type":"array","items":{"type":"object"}}}}}}}},"description":"List all governance findings for tenant"}},"/api/vdmi-findings/tenants/:tenantId/findings/:findingId/mitigate":{"post":{"summary":"vdmi-findings.mitigate","tags":["VDMI Governance"],"operationId":"vdmi_findings_mitigate","parameters":[{"name":"tenantId","in":"path","required":true},{"name":"findingId","in":"path","required":true},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"201":{"description":"Mitigation accepted"},"422":{"description":"Validation error"}},"description":"Submit mitigation plan for a finding","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"mitigationStrategy":{"type":"string","enum":["manual_evidence_injection","process_correction","policy_exception"]},"proposedActions":{"type":"array","items":{"type":"object"}},"riskAssessment":{"type":"object"},"approvalRequired":{"type":"boolean"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":["mitigationStrategy","proposedActions"]}}}}}},"/api/vdmi-findings/tenants/:tenantId/findings/:findingId/resolve":{"post":{"summary":"vdmi-findings.resolve","tags":["VDMI Governance"],"operationId":"vdmi_findings_resolve","parameters":[{"name":"tenantId","in":"path","required":true},{"name":"findingId","in":"path","required":true},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Finding resolved"},"403":{"description":"Insufficient permissions"}},"description":"Resolve a finding with proof","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"resolutionType":{"type":"string","enum":["mitigated_with_evidence","accepted_risk","policy_exception"]},"justification":{"type":"string"},"evidenceProof":{"type":"object"},"applyChanges":{"type":"boolean"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":["resolutionType","justification"]}}}}}},"/api/redispatch-expost/audit":{"post":{"summary":"Run Redispatch Ex-Post settlement audit (7-step, deterministic)","tags":["Redispatch Ex-Post"],"operationId":"redispatch_expost_audit","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"RedispatchAuditReport with settlementReadiness, riskAssessment, and findings","content":{"application/json":{"example":{"success":true,"id":"a1b2c3d4-...","settlementReadiness":{"totalInstallations":59,"readyForSettlement":52,"readinessPercent":88.1,"blockedInstallations":7},"riskAssessment":{"riskLevel":"medium","estimatedLostCompensationEur":28500,"curtailmentGWh":4.8,"blockedFractionPercent":11.9},"summary":{"findingsCount":{"info":5,"warning":9,"error":4},"durationMs":12800}}}}},"202":{"description":"REST/Gateway call accepted as async job. Poll /api/jobs/:jobId/status and /api/jobs/:jobId/result.","content":{"application/json":{"example":{"success":true,"jobId":"f8d2d8d4-4f22-4a0a-bec7-a9f05ad6b9e6","status":"queued","statusUrl":"/api/jobs/f8d2d8d4-4f22-4a0a-bec7-a9f05ad6b9e6/status","resultUrl":"/api/jobs/f8d2d8d4-4f22-4a0a-bec7-a9f05ad6b9e6/result"}}}}},"description":"Executes a deterministic 7-step Redispatch 2.0 Ex-Post settlement audit for a VNB: VNB identity → portfolio inventory (≥100 kW) → master data validation → Netztransparenz curtailment correlation → settlement readiness → financial risk assessment → audit trail. Returns settlementReadiness (% of installations ready for A96 settlement) and riskAssessment (estimated lost compensation in €). No LLM involvement — identical inputs always produce identical finding codes. Steps 3–6 can be skipped via the skipSteps parameter; steps 1, 2, and 7 are mandatory.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"gridOperatorId":{"type":"string","description":"MaStR grid operator ID (SNB.../GNB...)","example":"SNB935578300972"},"gridOperatorBdew":{"type":"string","description":"13-digit BDEW market-partner code","example":"9907473000008"},"gridOperatorName":{"type":"string","description":"Grid operator name (fuzzy match)","example":"STROMDAO Netze"},"dateFrom":{"type":"string","format":"date","description":"Start of audit period (ISO date) for Netztransparenz correlation","example":"2026-01-01"},"dateTo":{"type":"string","format":"date","description":"End of audit period (ISO date) for Netztransparenz correlation","example":"2026-03-31"},"datapointTags":{"type":"array","items":{"type":"string"},"description":"Tags for Weg B datapoint fallback (portfolio data)","example":["stromdao-netze","redispatch-portfolio"]},"maxAgeMinutes":{"type":"integer","default":120,"description":"Datapoint freshness threshold in minutes (Weg B)"},"skipSteps":{"type":"array","items":{"type":"integer"},"description":"Steps to skip (valid: 3–6; steps 1, 2, 7 are mandatory)","example":[4]},"avgCompensationEurPerMWh":{"type":"number","default":50,"description":"Average Redispatch compensation rate in €/MWh for risk calculation"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"By MaStR ID, full quarter":{"value":{"gridOperatorId":"SNB935578300972","dateFrom":"2026-01-01","dateTo":"2026-03-31"}},"By BDEW, skip curtailment":{"value":{"gridOperatorBdew":"9907473000008","skipSteps":[4]}},"Weg B — use tagged datapoint":{"value":{"gridOperatorId":"SNB935578300972","datapointTags":["stromdao-netze","redispatch-portfolio"],"maxAgeMinutes":60,"dateFrom":"2026-01-01","dateTo":"2026-03-31"}}}}}}}},"/api/redispatch-expost/audits":{"get":{"summary":"List past Redispatch Ex-Post audit reports","tags":["Redispatch Ex-Post"],"operationId":"redispatch_expost_list","parameters":[{"name":"gridOperatorId","in":"query","schema":{"type":"string","example":"SNB935578300972"},"description":"Filter by MaStR grid operator ID"},{"name":"limit","in":"query","schema":{"type":"integer","default":20,"maximum":100},"description":"Maximum number of results"},{"name":"cursor","in":"query","required":false,"schema":{"type":"string","example":"eyJvZmZzZXQiOjIwfQ=="}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"example":0}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"List of audit report summaries","content":{"application/json":{"example":{"count":2,"audits":[{"id":"...","gridOperator":{"name":"STROMDAO Netze"},"settlementReadiness":{"readinessPercent":88.1},"riskAssessment":{"riskLevel":"medium"},"createdAt":"2026-03-31T..."}]}}}}},"description":"Returns audit reports stored in PouchDB, newest first. Filter by gridOperatorId."}},"/api/redispatch-expost/audits/:id":{"get":{"summary":"Get a specific Redispatch Ex-Post audit report by ID","tags":["Redispatch Ex-Post"],"operationId":"redispatch_expost_get","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","example":"a1b2c3d4-1234-5678-90ab-cdef12345678"},"description":"Audit report UUID"},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Full RedispatchAuditReport document"},"404":{"description":"Audit report not found"}},"description":"Returns the full RedispatchAuditReport document including all findings."}},"/api/vdmi-evidence/tenants/:tenantId/tasks/:taskId/evidence":{"post":{"summary":"vdmi-evidence.inject","tags":["VDMI Governance"],"operationId":"vdmi_evidence_inject","parameters":[{"name":"tenantId","path":true,"required":true},{"name":"taskId","path":true,"required":true},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"201":{"description":"Evidence injected successfully"},"409":{"description":"Task already approved"},"422":{"description":"Invalid evidence category"}},"description":"Inject manual evidence for dual-evidence requirement","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"evidenceType":{"type":"string","enum":["manual_confirmation","attestation","document"]},"category":{"type":"string","enum":["hr_confirmation","manager_attestation","legal_exception","legacy_system_mapping"]},"data":{"type":"object"},"affectedMatrix":{"type":"object"},"sourceQuality":{"type":"string","enum":["low","medium","high"]},"signatureRequired":{"type":"boolean"},"rationale":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":["evidenceType","category","data","rationale"]}}}}}},"/api/vdmi-evidence/tenants/:tenantId/evidence/:evidenceId/sign":{"post":{"summary":"vdmi-evidence.sign","tags":["vdmi-evidence"],"operationId":"vdmi_evidence_sign","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}}}}}}},"/api/bilanzkreis":{"post":{"summary":"Create a Bilanzkreis (real or virtual)","tags":["Settlement (Abrechnung)"],"operationId":"bilanzkreis_create","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"Creates a balance group definition. Real BKs map to MaBiS interfaces. Virtual BKs aggregate multiple MeLos for internal settlement.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["id","name","type","participants"],"properties":{"id":{"type":"string","example":"bk_es_test"},"name":{"type":"string","example":"Energy Sharing Test-Quartier"},"type":{"type":"string","enum":["real","virtual_energy_sharing","virtual_mieterstrom","virtual_arealnetz","virtual_vpp"],"example":"virtual_energy_sharing"},"participants":{"type":"array","example":[{"meloId":"BK_TEST_PV","role":"producer","share":1},{"meloId":"BK_TEST_CONSUMER","role":"consumer","share":1}],"items":{"type":"object"}},"gridOperatorMastrId":{"type":"string","example":"SNB935578300972"},"validFrom":{"type":"string","example":"2026-01-01"},"validTo":{"type":"string","example":"2026-12-31"},"metadata":{"type":"object","example":{"source":"manual"}},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"value":{"id":"bk_es_test","name":"Energy Sharing Test-Quartier","type":"virtual_energy_sharing","participants":[{"meloId":"BK_TEST_PV","role":"producer","share":1},{"meloId":"BK_TEST_CONSUMER","role":"consumer","share":1}]}}}}}}},"get":{"summary":"List Bilanzkreise","tags":["Settlement (Abrechnung)"],"operationId":"bilanzkreis_list","parameters":[{"name":"type","in":"query","required":false,"schema":{"type":"string","example":"virtual_energy_sharing"}},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["active","archived"],"example":"active"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/bilanzkreis/:id":{"get":{"summary":"Get a Bilanzkreis","tags":["Settlement (Abrechnung)"],"operationId":"bilanzkreis_get","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","example":"bk_es_test"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}},"delete":{"summary":"Delete a Bilanzkreis","tags":["Settlement (Abrechnung)"],"operationId":"bilanzkreis_delete","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","example":"bk_es_test"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}}}}}}},"/api/bilanzkreis/:id/calculate":{"post":{"summary":"Calculate balance for a Bilanzkreis over a time period","tags":["Settlement (Abrechnung)"],"operationId":"bilanzkreis_calculate","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"Loads timeseries for all participants from EDM, calculates saldo per 15-min interval, and returns summary with self-consumption and autarky rates.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["id","from","to"],"properties":{"id":{"type":"string","example":"bk_es_test"},"from":{"type":"string","example":"2026-04-01T00:00:00Z"},"to":{"type":"string","example":"2026-04-01T01:00:00Z"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"value":{"id":"bk_es_test","from":"2026-04-01T00:00:00Z","to":"2026-04-01T01:00:00Z"}}}}}}}},"/api/bilanzkreis/:id/readiness":{"get":{"summary":"Check settlement readiness for a Bilanzkreis","tags":["Settlement (Abrechnung)"],"operationId":"bilanzkreis_checkReadiness","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","example":"bk_es_test"}},{"name":"from","in":"query","required":true,"schema":{"type":"string","example":"2026-04-01T00:00:00Z"}},{"name":"to","in":"query","required":true,"schema":{"type":"string","example":"2026-04-01T01:00:00Z"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"Verifies data completeness and quality for all participants before running settlement calculations."}},"/api/bilanzkreis/:id/feature-flags":{"get":{"summary":"Get feature flags for a Bilanzkreis","tags":["Settlement (Abrechnung)"],"operationId":"bilanzkreis_getFeatureFlags","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","example":"bk_hoeheinoed_es_001"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Feature flags for the Bilanzkreis","content":{"application/json":{"example":{"success":true,"id":"bk_hoeheinoed_es_001","flags":{"virtual_energy_sharing.enabled":true}}}}}},"description":"Returns per-Bilanzkreis feature flags. The flag `virtual_energy_sharing.enabled` controls whether A96 export and §42c Energieteilen is active for this BK. Sub-Track G (v0.47.0) — Rollback-Plan: set to false to block A96 export on rollback."},"patch":{"summary":"Update feature flags for a Bilanzkreis","tags":["Settlement (Abrechnung)"],"operationId":"bilanzkreis_updateFeatureFlags","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","example":"bk_hoeheinoed_es_001"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Feature flags updated"},"404":{"description":"Bilanzkreis not found"}},"description":"Updates per-Bilanzkreis feature flags. Set `virtual_energy_sharing.enabled: false` to block A96 export (rollback gate). Sub-Track G (v0.47.0) — Rollback-Plan.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["flags"],"properties":{"flags":{"type":"object","example":{"virtual_energy_sharing.enabled":false}},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}}}}}}},"/api/datasource-watcher/status":{"get":{"summary":"Get datasource watcher status","tags":["DataSources"],"operationId":"datasource_watcher_status","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/edm-messkonzept/messkonzepte":{"post":{"summary":"Create a measurement concept","tags":["EDM Messkonzept"],"operationId":"edm_messkonzept_create","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Created"},"409":{"description":"Exists"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["id","name","type"],"properties":{"id":{"type":"string","example":"mk-sum-001"},"name":{"type":"string","example":"Total Production"},"type":{"type":"string","example":"SUM"},"formula":{"type":"string","example":"v0 + v1"},"inputs":{"type":"array","items":{"type":"object"},"example":[{"ref":"v0","meloId":"melo-solar","obis":"1-0:1.8.0"}]},"outputMeloId":{"type":"string","example":"melo-sum-out"},"outputObis":{"type":"string","example":"1-0:1.8.0"},"schedule":{"type":"string","example":"on_input_change"},"validSince":{"type":"string","example":"2026-04-01T00:00:00.000Z"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"value":{"id":"mk-sum-001","name":"Total Production","type":"SUM","formula":"v0 + v1","inputs":[{"ref":"v0","meloId":"melo-solar","obis":"1-0:1.8.0"},{"ref":"v1","meloId":"melo-wind","obis":"1-0:1.8.0"}],"outputMeloId":"melo-sum-out","outputObis":"1-0:1.8.0","schedule":"on_input_change"}}}}}}},"get":{"summary":"List all measurement concepts","tags":["EDM Messkonzept"],"operationId":"edm_messkonzept_list","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"List"}}}},"/api/edm-messkonzept/messkonzepte/:id":{"get":{"summary":"Get a measurement concept","tags":["EDM Messkonzept"],"operationId":"edm_messkonzept_get","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","example":"mk-sum-001"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Found"},"404":{"description":"Not found"}}},"delete":{"summary":"Delete a measurement concept","tags":["EDM Messkonzept"],"operationId":"edm_messkonzept_delete","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Deleted"},"404":{"description":"Not found"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}}},"/api/edm-messkonzept/messkonzepte/:id/evaluate":{"post":{"summary":"Evaluate a measurement concept","tags":["EDM Messkonzept"],"operationId":"edm_messkonzept_evaluate","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Result"},"404":{"description":"Not found"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["id","from","to"],"properties":{"id":{"type":"string","example":"mk-sum-001"},"from":{"type":"string","example":"2026-04-20T00:00:00.000Z"},"to":{"type":"string","example":"2026-04-20T12:00:00.000Z"},"writeOutput":{"type":"boolean","default":true},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"value":{"id":"mk-sum-001","from":"2026-04-20T00:00:00.000Z","to":"2026-04-20T12:00:00.000Z","writeOutput":true}}}}}}}},"/api/edm-messkonzept/messkonzepte/evaluate-all":{"post":{"summary":"Evaluate all measurement concepts","tags":["EDM Messkonzept"],"operationId":"edm_messkonzept_evaluateAll","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Batch result"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["from","to"],"properties":{"from":{"type":"string","example":"2026-04-20T00:00:00.000Z"},"to":{"type":"string","example":"2026-04-20T12:00:00.000Z"},"schedule":{"type":"string","example":"hourly"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"value":{"from":"2026-04-20T00:00:00.000Z","to":"2026-04-20T12:00:00.000Z","schedule":"hourly"}}}}}}}},"/api/edm-validation/validate":{"post":{"summary":"Validate timeseries data and optionally auto-fix gaps","tags":["EDM (Energiedatenmanagement)"],"operationId":"edm_validation_validate","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"Runs validation rules against a timeseries range. Returns findings per rule with severity. If autoFix=true, generates replacement values for gaps and writes them to EDM.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["meloId","from","to"],"properties":{"meloId":{"type":"string","example":"DE0012345678901234567890123456789"},"obis":{"type":"string","default":"1-0:1.8.0"},"from":{"type":"string","example":"2026-04-01T00:00:00.000Z"},"to":{"type":"string","example":"2026-04-01T23:59:59.000Z"},"rules":{"type":"array","items":{"type":"string"},"example":["GAP_DETECTION"]},"capacityKw":{"type":"number","example":10},"autoFix":{"type":"boolean","default":false},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"value":{"meloId":"DE0012345678901234567890123456789","obis":"1-0:2.8.0","from":"2026-04-01T00:00:00.000Z","to":"2026-04-01T23:59:59.000Z","rules":["BANDWIDTH_CHECK","GAP_DETECTION"],"capacityKw":10,"autoFix":false}}}}}}}},"/api/edm-validation/validate/:meloId/report":{"get":{"summary":"Get validation report for a timeseries range","tags":["EDM (Energiedatenmanagement)"],"operationId":"edm_validation_getReport","parameters":[{"name":"meloId","in":"path","required":true,"schema":{"type":"string","example":"DE0012345678901234567890123456789"}},{"name":"obis","in":"query","required":false,"schema":{"type":"string","default":"1-0:1.8.0"}},{"name":"from","in":"query","required":true,"schema":{"type":"string","example":"2026-04-01T00:00:00.000Z"}},{"name":"to","in":"query","required":true,"schema":{"type":"string","example":"2026-04-01T23:59:59.000Z"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/edm-validation/validate/:meloId/fill-gaps":{"post":{"summary":"Fill gaps in timeseries with replacement values","tags":["EDM (Energiedatenmanagement)"],"operationId":"edm_validation_fillGaps","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["meloId","from","to"],"properties":{"meloId":{"type":"string","example":"DE0012345678901234567890123456789"},"obis":{"type":"string","default":"1-0:1.8.0"},"from":{"type":"string","example":"2026-04-01T00:00:00.000Z"},"to":{"type":"string","example":"2026-04-01T23:59:59.000Z"},"method":{"type":"string","enum":["interpolate","previous_day","slp","auto"],"default":"auto"},"slpProfileId":{"type":"string","default":"H0"},"annualConsumptionKwh":{"type":"number","example":3500},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"value":{"meloId":"DE0012345678901234567890123456789","obis":"1-0:2.8.0","from":"2026-04-01T00:00:00.000Z","to":"2026-04-01T23:59:59.000Z","method":"auto","slpProfileId":"H0","annualConsumptionKwh":3500}}}}}}}},"/api/edm-validation/validate/rules":{"get":{"summary":"List available EDM validation rules","tags":["EDM (Energiedatenmanagement)"],"operationId":"edm_validation_listRules","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/edm-virtual/virtual/populate-slp":{"post":{"summary":"Populate one virtual/dummy MeLo from SLP profile","tags":["EDM (Energiedatenmanagement)"],"operationId":"edm_virtual_populateBySlp","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Virtual timeseries imported"},"404":{"description":"MeLo not found"},"422":{"description":"MeLo type not supported"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["meloId","date"],"properties":{"meloId":{"type":"string","example":"VIRTUAL_1"},"date":{"type":"string","example":"2026-05-01"},"profileId":{"type":"string","example":"H0","default":"H0"},"annualConsumptionKwh":{"type":"number","example":3200,"default":3500},"obis":{"type":"string","example":"1-0:1.8.0","default":"1-0:1.8.0"},"overwriteExisting":{"type":"boolean","default":true},"quality":{"type":"string","example":"synthetic","default":"synthetic"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"value":{"meloId":"VIRTUAL_1","date":"2026-05-01","profileId":"H0","annualConsumptionKwh":3200,"overwriteExisting":true}}}}}}}},"/api/edm-virtual/virtual/auto-populate/day":{"post":{"summary":"Auto-populate virtual meter data for one day","tags":["EDM (Energiedatenmanagement)"],"operationId":"edm_virtual_autoPopulateDay","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Auto-population summary"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["date"],"properties":{"date":{"type":"string","example":"2026-05-01"},"profileId":{"type":"string","example":"H0","default":"H0"},"annualConsumptionKwh":{"type":"number","example":3200,"default":3500},"typeFilter":{"type":"string","enum":["virtual","dummy","all"],"default":"virtual"},"includeCalc":{"type":"boolean","default":true},"includeSlp":{"type":"boolean","default":true},"overwriteExisting":{"type":"boolean","default":false},"limit":{"type":"integer","default":100},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"value":{"date":"2026-05-01","profileId":"H0","annualConsumptionKwh":3200,"typeFilter":"virtual","includeCalc":true,"includeSlp":true,"overwriteExisting":false,"limit":100}}}}}}}},"/api/flex/devices":{"post":{"summary":"Register a controllable device (§14a EnWG)","tags":["Flex (§14a Flexibilitätsmanagement)"],"operationId":"flex_registerDevice","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"Registers a controllable consumption device (wallbox, heat pump, storage) for §14a grid management. Devices are eligible for reduced network tariffs in exchange for temporary dimming.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["deviceId","type","capacityKw"],"properties":{"deviceId":{"type":"string","example":"wb_test_001"},"type":{"type":"string","enum":["wallbox","heat_pump","storage","air_conditioning","other"],"example":"wallbox"},"capacityKw":{"type":"number","example":11},"minDimmingKw":{"type":"number","example":4.2},"meloId":{"type":"string","example":"DE0012345678901234567890123456789"},"customerName":{"type":"string","example":"Max Mustermann"},"postalCode":{"type":"string","example":"66989"},"steuerboxId":{"type":"string","example":"STB-001"},"registeredSince":{"type":"string","example":"2026-04-26T10:00:00.000Z"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"value":{"deviceId":"wb_test_001","type":"wallbox","capacityKw":11,"minDimmingKw":4.2,"customerName":"Max Mustermann","postalCode":"66989"}}}}}}},"get":{"summary":"List registered §14a devices","tags":["Flex (§14a Flexibilitätsmanagement)"],"operationId":"flex_listDevices","parameters":[{"name":"type","in":"query","required":false,"schema":{"type":"string","example":"wallbox"}},{"name":"postalCode","in":"query","required":false,"schema":{"type":"string","example":"66989"}},{"name":"status","in":"query","required":false,"schema":{"type":"string","example":"active"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/flex/devices/:deviceId":{"get":{"summary":"Get registered §14a device","tags":["Flex (§14a Flexibilitätsmanagement)"],"operationId":"flex_getDevice","parameters":[{"name":"deviceId","in":"path","required":true,"schema":{"type":"string","example":"wb_test_001"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/flex/devices/:deviceId/status":{"put":{"summary":"Update §14a device status","tags":["Flex (§14a Flexibilitätsmanagement)"],"operationId":"flex_updateDeviceStatus","parameters":[{"name":"deviceId","in":"path","required":true,"schema":{"type":"string","example":"wb_test_001"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["status"],"properties":{"status":{"type":"string","enum":["active","inactive","maintenance","deregistered"]},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}}}}}}},"/api/flex/events/plan":{"post":{"summary":"Plan dimming events based on load forecast","tags":["Flex (§14a Flexibilitätsmanagement)"],"operationId":"flex_planDimming","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"Analyzes load forecast against grid capacity and generates a dimming plan. Respects §14a constraints: min 4.2 kW, max 2h duration, min 2h cooldown between events.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["date","gridCapacityKw"],"properties":{"date":{"type":"string","example":"2026-04-20"},"gridCapacityKw":{"type":"number","example":100},"postalCode":{"type":"string","example":"66989"},"threshold":{"type":"number","example":0.85},"loadForecastOverride":{"type":"array","example":[{"ts":"2026-04-20T18:00:00.000Z","value":95},{"ts":"2026-04-20T18:15:00.000Z","value":92}],"items":{"type":"object","properties":{"ts":{"type":"string"},"value":{"type":"number"}}}},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"value":{"date":"2026-04-20","gridCapacityKw":100,"threshold":0.85,"postalCode":"66989"}}}}}}}},"/api/flex/events/execute":{"post":{"summary":"Execute dimming event (real or simulated)","tags":["Flex (§14a Flexibilitätsmanagement)"],"operationId":"flex_executeDimming","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"Executes a dimming plan or single device dimming. Publishes MQTT command to cernion/flex/{deviceId}/dimming topic and stores events for Entlastungsnachweis.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"planId":{"type":"string","example":"flexplan_1714123456789_ab12cd34"},"deviceId":{"type":"string","example":"wb_test_001"},"durationMinutes":{"type":"number","example":30},"dimmedPowerKw":{"type":"number","example":4.2},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"byPlan":{"value":{"planId":"flexplan_1714123456789_ab12cd34"}},"singleDevice":{"value":{"deviceId":"wb_test_001","durationMinutes":30,"dimmedPowerKw":4.2}}}}}}}},"/api/flex/relief-proof/:period":{"get":{"summary":"Generate Entlastungsnachweis for a period","tags":["Flex (§14a Flexibilitätsmanagement)"],"operationId":"flex_getReliefProof","parameters":[{"name":"period","in":"path","required":true,"schema":{"type":"string","example":"2026-04"}},{"name":"postalCode","in":"query","required":false,"schema":{"type":"string","example":"66989"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"Documents effectiveness of §14a dimming measures with event-level and aggregated relief indicators."}},"/api/flex/customer/:deviceId/reduction":{"get":{"summary":"Calculate §14a tariff reduction for a customer","tags":["Flex (§14a Flexibilitätsmanagement)"],"operationId":"flex_getTariffReduction","parameters":[{"name":"deviceId","in":"path","required":true,"schema":{"type":"string","example":"wb_test_001"}},{"name":"annualHours","in":"query","required":false,"schema":{"type":"number","example":8760}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"Calculates annual and monthly network tariff reduction for participating §14a SVE customers."}},"/api/forecast-engine/load":{"post":{"summary":"Generate load forecast for a day","tags":["Forecast (Prognostik)"],"operationId":"forecast_engine_forecastLoad","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"Generates a 96-point (15-min) load forecast based on SLP profiles with optional historical correction and temperature adjustment. KRITIS-compliant: no external dependencies.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["date"],"properties":{"meloId":{"type":"string","example":"DE0012345678901234567890123456789"},"profileId":{"type":"string","default":"H0"},"date":{"type":"string","example":"2026-04-20"},"annualConsumptionKwh":{"type":"number","default":3500},"temperatureCelsius":{"type":"number","example":12},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"value":{"profileId":"H0","date":"2026-04-20","annualConsumptionKwh":3500,"temperatureCelsius":12}}}}}}}},"/api/forecast-engine/generation":{"post":{"summary":"Generate generation forecast (solar/wind)","tags":["Forecast (Prognostik)"],"operationId":"forecast_engine_forecastGeneration","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"Wraps mastr_generation_forecast MCP tool with KRITIS-safe fallback. If MCP unavailable, uses installed capacity × typical capacity factor as estimate.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["date"],"properties":{"gridOperatorMastrId":{"type":"string","example":"SNB935578300972"},"postleitzahl":{"type":"string","example":"66989"},"installationType":{"type":"string","enum":["solar","wind","all"],"default":"solar"},"date":{"type":"string","example":"2026-04-20"},"forecastDays":{"type":"number","default":1},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"value":{"postleitzahl":"66989","installationType":"solar","date":"2026-04-20","forecastDays":1}}}}}}}},"/api/forecast-engine/residual":{"post":{"summary":"Calculate residual load (consumption minus generation)","tags":["Forecast (Prognostik)"],"operationId":"forecast_engine_forecastResidual","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["date"],"properties":{"loadForecast":{"type":"object","example":{}},"generationForecast":{"type":"object","example":{}},"meloId":{"type":"string","example":"DE0012345678901234567890123456789"},"profileId":{"type":"string","example":"H0"},"annualConsumptionKwh":{"type":"number","example":3500},"postleitzahl":{"type":"string","example":"66989"},"date":{"type":"string","example":"2026-04-20"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"value":{"profileId":"H0","annualConsumptionKwh":3500,"postleitzahl":"66989","date":"2026-04-20"}}}}}}}},"/api/forecast-engine/schedule/day-ahead":{"post":{"summary":"Create Day-Ahead schedule with optional storage optimization","tags":["Forecast (Prognostik)"],"operationId":"forecast_engine_createSchedule","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["date"],"properties":{"bilanzkreisId":{"type":"string","example":"bk_es_test"},"meloId":{"type":"string","example":"DE0012345678901234567890123456789"},"profileId":{"type":"string","example":"H0"},"annualConsumptionKwh":{"type":"number","example":3500},"postleitzahl":{"type":"string","example":"66989"},"date":{"type":"string","example":"2026-04-20"},"storageConfig":{"type":"object","example":{"capacityKwh":10,"maxChargePowerKw":5,"maxDischargePowerKw":5,"efficiency":0.92,"currentSocPercent":50}},"includeMarketPrices":{"type":"boolean","default":false},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"value":{"date":"2026-04-20","profileId":"H0","annualConsumptionKwh":3500,"postleitzahl":"66989"}}}}}}}},"/api/forecast-engine/schedule/:scheduleId":{"get":{"summary":"Get stored day-ahead schedule","tags":["Forecast (Prognostik)"],"operationId":"forecast_engine_getSchedule","parameters":[{"name":"scheduleId","in":"path","required":true,"schema":{"type":"string","example":"schedule_2026-04-20_ab12cd34"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/forecast-engine/quality":{"post":{"summary":"Evaluate forecast quality (RMSE/MAE/MAPE)","tags":["Forecast (Prognostik)"],"operationId":"forecast_engine_evaluateQuality","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"Compares SLP-based forecast against actual EDM timeseries data. Returns quality metrics and rating.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["meloId","from","to"],"properties":{"meloId":{"type":"string","example":"DE0012345678901234567890123456789"},"obis":{"type":"string","default":"1-0:1.8.0"},"from":{"type":"string","example":"2026-04-13T00:00:00Z"},"to":{"type":"string","example":"2026-04-14T00:00:00Z"},"profileId":{"type":"string","default":"H0"},"annualConsumptionKwh":{"type":"number","default":3500},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"value":{"meloId":"DE0012345678901234567890123456789","from":"2026-04-13T00:00:00Z","to":"2026-04-14T00:00:00Z","profileId":"H0","annualConsumptionKwh":3500}}}}}}}},"/api/forecast-engine/storage-dispatch":{"post":{"summary":"Optimize battery storage dispatch","tags":["Forecast (Prognostik)"],"operationId":"forecast_engine_storageDispatch","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["date","storageConfig"],"properties":{"residualLoad":{"type":"array","items":{"type":"object"},"example":[]},"meloId":{"type":"string","example":"DE0012345678901234567890123456789"},"profileId":{"type":"string","example":"H0"},"annualConsumptionKwh":{"type":"number","example":3500},"postleitzahl":{"type":"string","example":"66989"},"date":{"type":"string","example":"2026-04-20"},"storageConfig":{"type":"object","example":{"capacityKwh":10,"maxChargePowerKw":5,"maxDischargePowerKw":5,"efficiency":0.92,"currentSocPercent":50}},"marketPrices":{"type":"array","items":{"type":"object"},"example":[]},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"value":{"date":"2026-04-20","profileId":"H0","annualConsumptionKwh":3500,"postleitzahl":"66989","storageConfig":{"capacityKwh":10,"maxChargePowerKw":5,"maxDischargePowerKw":5,"efficiency":0.92,"currentSocPercent":50}}}}}}}}},"/api/forecast-engine/schedules":{"get":{"summary":"List stored schedules","tags":["Forecast (Prognostik)"],"operationId":"forecast_engine_listSchedules","parameters":[{"name":"bilanzkreisId","in":"query","required":false,"schema":{"type":"string","example":"bk_es_test"}},{"name":"date","in":"query","required":false,"schema":{"type":"string","example":"2026-04-20"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/mscons-import/parse":{"post":{"summary":"Parse MSCONS EDIFACT message (no import, read-only)","tags":["EDM (Energiedatenmanagement)"],"operationId":"mscons_import_parse","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Parsed MSCONS result"}},"description":"Parses a MSCONS EDIFACT message and returns structured data without importing into EDM. Use for preview/validation.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"type":"string","example":"UNH+1+MSCONS:D:04B:UN:2.3e'..."},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"value":{"data":"UNH+1+MSCONS:D:04B:UN:2.3e'BGM+7+DOC1+9'..."}}}}}}}},"/api/mscons-import/import":{"post":{"summary":"Import MSCONS EDIFACT message into EDM","tags":["EDM (Energiedatenmanagement)"],"operationId":"mscons_import_import","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"MSCONS import result"}},"description":"Parses MSCONS, creates MeLos if needed, imports timeseries into EDM SQLite. Fully offline — no external dependencies (KRITIS-compliant).","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"type":"string","example":"UNH+1+MSCONS:D:04B:UN:2.3e'..."},"autoCreateMelo":{"type":"boolean","default":true},"overwriteExisting":{"type":"boolean","default":false},"validateOnImport":{"type":"boolean","default":true},"gridOperatorMastrId":{"type":"string","example":"SNB961471621746"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"value":{"data":"UNH+1+MSCONS:D:04B:UN:2.3e'BGM+7+DOC1+9'...","autoCreateMelo":true,"overwriteExisting":false,"validateOnImport":true,"gridOperatorMastrId":"SNB961471621746"}}}}}}}},"/api/mscons-import/imports":{"get":{"summary":"List imported MSCONS MeLos","tags":["EDM (Energiedatenmanagement)"],"operationId":"mscons_import_listImports","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"List of imported MeLos"}}}},"/api/settlement/redispatch/calculate":{"post":{"summary":"Calculate Redispatch compensation (§13a/14 EnWG)","tags":["Settlement (Abrechnung)"],"operationId":"settlement_calculateRedispatch","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"Calculates compensation for curtailment events based on forecast vs. actual generation and market prices. Supports market_price, eeg_minimum and actual_loss (max of both).","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["installations","period"],"properties":{"installations":{"type":"array","example":[{"mastrNummer":"SEE999952467552","meloId":"DE0003966698900000000000052335107","curtailmentEvents":[{"start":"2026-04-01T10:00:00Z","end":"2026-04-01T12:00:00Z"}]}],"items":{"type":"object"}},"period":{"type":"object","example":{"from":"2026-04-01","to":"2026-04-30"},"properties":{"from":{"type":"string","example":"2026-04-01"},"to":{"type":"string","example":"2026-04-30"}}},"compensationMethod":{"type":"string","enum":["market_price","eeg_minimum","actual_loss"],"default":"actual_loss"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"value":{"installations":[{"mastrNummer":"SEE999952467552","meloId":"DE0003966698900000000000052335107","capacityKw":2103.7,"commissioningDate":"2009-12-16","type":"solar","curtailmentEvents":[{"start":"2026-04-01T10:00:00Z","end":"2026-04-01T12:00:00Z","reason":"grid_congestion"}]}],"period":{"from":"2026-04-01","to":"2026-04-30"},"compensationMethod":"actual_loss"}}}}}}}},"/api/settlement/redispatch/report/:settlementId":{"get":{"summary":"Get a stored Redispatch settlement report","tags":["Settlement (Abrechnung)"],"operationId":"settlement_getRedispatchReport","parameters":[{"name":"settlementId","in":"path","required":true,"schema":{"type":"string","example":"redispatch_2026q2_SEE999952467552"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/settlement/eeg/calculate":{"post":{"summary":"Calculate EEG revenue for an installation","tags":["Settlement (Abrechnung)"],"operationId":"settlement_calculateEeg","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["mastrNummer","period"],"properties":{"mastrNummer":{"type":"string","example":"SEE999952467552"},"meloId":{"type":"string","example":"DE0003966698900000000000052335107"},"period":{"type":"object","example":{"from":"2026-04-01","to":"2026-04-30"},"properties":{"from":{"type":"string","example":"2026-04-01"},"to":{"type":"string","example":"2026-04-30"}}},"commissioningDate":{"type":"string","example":"2010-05-12"},"capacityKwp":{"type":"number","example":9.8},"type":{"type":"string","enum":["solar","wind","biomass"],"example":"solar"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"value":{"mastrNummer":"SEE999952467552","meloId":"DE0003966698900000000000052335107","period":{"from":"2026-04-01","to":"2026-04-30"},"commissioningDate":"2009-12-16","capacityKwp":2103.7,"type":"solar"}}}}}}}},"/api/settlement/eeg/report/:settlementId":{"get":{"summary":"Get a stored EEG settlement report","tags":["Settlement (Abrechnung)"],"operationId":"settlement_getEegReport","parameters":[{"name":"settlementId","in":"path","required":true,"schema":{"type":"string","example":"eeg_2026q2_SEE999952467552"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/settlement/a96/prepare":{"post":{"summary":"Prepare A96 export rows from a Redispatch settlement","tags":["Settlement (Abrechnung)"],"operationId":"settlement_prepareA96","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["settlementId"],"properties":{"settlementId":{"type":"string","example":"redispatch_2026q2_SEE999952467552"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"value":{"settlementId":"redispatch_2026q2_SEE999952467552"}}}}}}}},"/api/settlement/a96/export/:settlementId":{"get":{"summary":"Export A96 rows as CSV or JSON","tags":["Settlement (Abrechnung)"],"operationId":"settlement_exportA96","parameters":[{"name":"settlementId","in":"path","required":true,"schema":{"type":"string","example":"redispatch_2026q2_SEE999952467552"}},{"name":"format","in":"query","required":false,"schema":{"type":"string","enum":["csv","json"],"default":"csv"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/settlement/a96/reconcile":{"post":{"summary":"Reconcile inbound A96 rows against internal settlement baseline","tags":["Settlement (Abrechnung)"],"operationId":"settlement_reconcileA96","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["settlementId","incomingRows"],"properties":{"settlementId":{"type":"string","example":"redispatch_2026q2_SEE999952467552"},"toleranceEur":{"type":"number","example":0.01,"default":0.01},"incomingRows":{"type":"array","items":{"type":"object","required":["anlageId","timeSlice"],"properties":{"anlageId":{"type":"string","example":"SEE999952467552"},"timeSlice":{"type":"string","example":"2026-04-01T10:00:00.000Z/2026-04-01T12:00:00.000Z"},"compensationEur":{"type":"number","example":132.42}}}},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}}}}}}},"/api/settlement/eeg-tariff":{"get":{"summary":"Read-only EEG tariff lookup","tags":["Settlement (Abrechnung)"],"operationId":"settlement_lookupEegTariff","parameters":[{"name":"commissioningDate","in":"query","required":true,"schema":{"type":"string","example":"2024-03-15"}},{"name":"capacityKwp","in":"query","required":true,"schema":{"type":"number","example":10}},{"name":"type","in":"query","required":true,"schema":{"type":"string","enum":["solar","wind","biomass"],"example":"solar"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/settlement":{"get":{"summary":"List stored settlements","tags":["Settlement (Abrechnung)"],"operationId":"settlement_listSettlements","parameters":[{"name":"type","in":"query","required":false,"schema":{"type":"string","enum":["redispatch","eeg","all"],"default":"all"}},{"name":"period","in":"query","required":false,"schema":{"type":"string","example":"2026q2"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/object-store/:namespace/:key":{"get":{"summary":"Get a document from the Object Store","tags":["Object Store"],"operationId":"object_store_get","parameters":[{"name":"namespace","in":"path","required":true,"schema":{"type":"string","example":"znp_projects"},"description":"Logical namespace (lowercase letter start, underscores allowed, 1–64 chars)."},{"name":"key","in":"path","required":true,"schema":{"type":"string","example":"a1b2c3d4"},"description":"Unique document key within the namespace (1–256 non-whitespace chars)."},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Document found","content":{"application/json":{"schema":{"type":"object","properties":{"namespace":{"type":"string","example":"znp_projects"},"key":{"type":"string","example":"a1b2c3d4"},"payload":{"type":"object","example":{"name":"My Project"}},"_rev":{"type":"string","example":"2-4f8a63d0f9c94d97a0b5b6f8cdef1234","description":"Current PouchDB document revision for CAS updates."},"createdAt":{"type":"string","example":"2026-04-06T12:00:00.000Z"},"updatedAt":{"type":"string","example":"2026-04-06T12:00:00.000Z"}}}}}}},"description":"Retrieves a single document by namespace and key. Returns the stored JSON payload together with namespace, key, createdAt, and updatedAt."},"put":{"summary":"Create or update a document in the Object Store (upsert)","tags":["Object Store"],"operationId":"object_store_put","parameters":[{"name":"namespace","in":"path","required":true,"schema":{"type":"string","example":"znp_projects"}},{"name":"key","in":"path","required":true,"schema":{"type":"string","example":"a1b2c3d4"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Document created or updated","content":{"application/json":{"schema":{"type":"object","properties":{"namespace":{"type":"string","example":"znp_projects"},"key":{"type":"string","example":"a1b2c3d4"},"payload":{"type":"object","example":{"name":"My Project"}},"_rev":{"type":"string","example":"2-4f8a63d0f9c94d97a0b5b6f8cdef1234","description":"Current PouchDB document revision after upsert."},"createdAt":{"type":"string","example":"2026-04-06T12:00:00.000Z"},"updatedAt":{"type":"string","example":"2026-04-06T12:00:00.000Z"}}}}}}},"description":"Upserts a document identified by namespace + key. On update the payload is fully replaced and updatedAt is refreshed; createdAt is preserved. Optional CAS: callers may pass _rev. On revision mismatch, the action returns HTTP 409 OBJECT_OCC_CONFLICT.","requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["payload"],"properties":{"payload":{"type":"object","description":"Arbitrary JSON payload to store.","example":{"name":"My Project","status":"active"}},"_rev":{"type":"string","nullable":true,"description":"Optional PouchDB revision for CAS updates. Use null for create-if-not-exists CAS semantics.","example":"2-4f8a63d0f9c94d97a0b5b6f8cdef1234"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"value":{"payload":{"name":"My Project","status":"active"}}}}}}}},"delete":{"summary":"Delete a document from the Object Store","tags":["Object Store"],"operationId":"object_store_delete","parameters":[{"name":"namespace","in":"path","required":true,"schema":{"type":"string","example":"znp_projects"}},{"name":"key","in":"path","required":true,"schema":{"type":"string","example":"a1b2c3d4"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Document deleted","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":true},"namespace":{"type":"string","example":"znp_projects"},"key":{"type":"string","example":"a1b2c3d4"}}}}}}},"description":"Permanently removes a document. Returns 404 OBJECT_NOT_FOUND if the document does not exist.","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}}}}}}},"/api/object-store/:namespace/query":{"post":{"summary":"Query documents in a namespace (Mango selector)","tags":["Object Store"],"operationId":"object_store_query","parameters":[{"name":"namespace","in":"path","required":true,"schema":{"type":"string","example":"znp_projects"},"description":"Namespace to search within."},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Query results","content":{"application/json":{"schema":{"type":"object","properties":{"docs":{"type":"array","items":{"type":"object","properties":{"namespace":{"type":"string","example":"znp_projects"},"key":{"type":"string","example":"a1b2c3d4"},"payload":{"type":"object"},"createdAt":{"type":"string","example":"2026-04-06T12:00:00.000Z"},"updatedAt":{"type":"string","example":"2026-04-06T12:00:00.000Z"}}}},"totalDocs":{"type":"integer","example":3}}}}}}},"description":"Searches for documents within a namespace using PouchDB Mango query syntax. The `ns` namespace guard is injected automatically into every selector — callers cannot escape their namespace. Use dotted paths to filter on payload fields: `{ \"payload.status\": \"active\" }`.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"selector":{"type":"object","example":{"payload.status":"active"},"description":"Mango selector for payload fields (namespace guard injected automatically)."},"limit":{"type":"integer","default":50,"maximum":1000,"example":50,"description":"Maximum results to return (1–1000)."},"skip":{"type":"integer","default":0,"example":0,"description":"Number of documents to skip (for pagination)."},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"value":{"selector":{"payload.status":"active"},"limit":10}}}}}}}},"/api/vdmi-human-override/tenants/:tenantId/matrices/:matrixId":{"patch":{"summary":"vdmi-human-override.override","tags":["VDMI Governance"],"operationId":"vdmi_human_override_override","parameters":[{"name":"tenantId","in":"path","required":true,"description":"Tenant ID"},{"name":"matrixId","in":"path","required":true,"description":"Matrix ID to override"},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Matrix override successful","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"tenantId":{"type":"string"},"status":{"type":"string"},"version":{"type":"number"},"auditEntry":{"type":"object"}}}}}},"403":{"description":"Insufficient permissions"},"422":{"description":"Validation error"}},"description":"Override LLM-inferred matrix roles with mandatory audit trail","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"overrides":{"type":"object","description":"Role assignments to override","properties":{"roles":{"type":"array","items":{"type":"object","properties":{"roleId":{"type":"string"},"assignments":{"type":"object"},"precedenceScore":{"type":"number"}}}}}},"rationale":{"type":"string","minLength":20,"description":"Mandatory justification (min 20 chars)"},"changeCategory":{"type":"string","enum":["organizational_change","data_correction","compliance","other"]},"urgency":{"type":"string","enum":["low","medium","high"]},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":["overrides","rationale","changeCategory"]}}}}}},"/api/vdmi-human-override/tenants/:tenantId/matrices/:matrixId/revert":{"post":{"summary":"vdmi-human-override.revert","tags":["VDMI Governance"],"operationId":"vdmi_human_override_revert","parameters":[{"name":"tenantId","in":"path","required":true},{"name":"matrixId","in":"path","required":true},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Matrix reverted successfully"},"409":{"description":"Concurrent modification conflict"}},"description":"Rollback matrix to previous version with audit trail","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"targetVersion":{"type":"number","description":"Target version to revert to"},"reason":{"type":"string","minLength":10,"description":"Reason for revert"},"notifyStakeholders":{"type":"boolean","description":"Send notifications"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":["targetVersion","reason"]}}}}}},"/api/decision-frame":{"post":{"summary":"Create a SCQA decision frame","tags":["Decision Frame"],"operationId":"decision_frame_create","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"situation":{"type":"string"},"complication":{"type":"string"},"question":{"type":"string"},"answer":{"type":"string"},"domain":{"type":"string"},"role":{"type":"string"},"createdBy":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}},"get":{"summary":"List SCQA decision frames","tags":["Decision Frame"],"operationId":"decision_frame_list","parameters":[{"name":"domain","in":"query","required":false,"schema":{"type":"string"}},{"name":"status","in":"query","required":false,"schema":{"type":"string"}},{"name":"createdBy","in":"query","required":false,"schema":{"type":"string"}},{"name":"linkedEntityId","in":"query","required":false,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":20,"minimum":1,"maximum":100}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/decision-frame/:frameId":{"get":{"summary":"Get a SCQA decision frame by ID","tags":["Decision Frame"],"operationId":"decision_frame_get","parameters":[{"name":"frameId","in":"path","required":true,"schema":{"type":"string","example":"df-aabbccddeeff"}},{"name":"includeMakoKnowledge","in":"query","required":false,"schema":{"type":"boolean","default":false}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"Returns the decision frame. When `includeMakoKnowledge=true`, an optional, advisory `makoKnowledgeContext` (Willi-Mako structural hints via `willi-mako.resolveStructure`, queried by the frame question) is attached; it never changes the default response shape, is never binding, and degrades to `available:false` if unavailable."},"put":{"summary":"Update a SCQA decision frame (patch answer, status, etc.)","tags":["Decision Frame"],"operationId":"decision_frame_update","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"frameId":{"type":"string"},"situation":{"type":"string"},"complication":{"type":"string"},"question":{"type":"string"},"answer":{"type":"string"},"status":{"type":"string"},"role":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}}},"/api/decision-frame/:frameId/links":{"post":{"summary":"Link a domain entity to a SCQA frame","tags":["Decision Frame"],"operationId":"decision_frame_linkEntity","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"frameId":{"type":"string"},"entityType":{"type":"string"},"entityId":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}}},"/api/decision-frame/generate-starter":{"post":{"summary":"AI-assisted SCQA starter from entity context","tags":["Decision Frame"],"operationId":"decision_frame_generateStarter","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"Gathers context from available downstream services (ZNP, VDMI) and uses an LLM to synthesise a SCQA starter frame. Returns Situation, Complication, Question — the caller decides whether to persist via create. Requires LLM configuration.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"contextHint":{"type":"string"},"znpProjectId":{"type":"string"},"vdmiMatrixId":{"type":"string"},"gridOperatorId":{"type":"string"},"domain":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}}},"/api/decision-frame/:frameId/export":{"get":{"summary":"Export a SCQA frame as Markdown or JSON document","tags":["Decision Frame"],"operationId":"decision_frame_exportSummary","parameters":[{"name":"frameId","in":"path","required":true,"schema":{"type":"string","example":"df-aabbccddeeff"}},{"name":"format","in":"query","required":false,"schema":{"type":"string","enum":["markdown","json"],"default":"markdown"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/energy-sharing-allocation/allocate":{"post":{"summary":"Calculate 15-min Energy Sharing allocation time-series (§ 42c EnWG)","tags":["Energy Sharing Allocation"],"operationId":"energy_sharing_allocation_allocate","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Allocation metadata with per-consumer summaries. Time-series available via /download endpoint.","content":{"application/json":{"example":{"success":true,"id":"b2c3d4e5-...","communityId":"ES-2026-001","dateFrom":"2026-06-01","dateTo":"2026-06-07","dataSource":"forecast","redispatchApplied":false,"warnings":[],"consumers":[{"maloId":"DE0001234567890123456789012345678","name":"Müller","sharePercent":30,"totalKWh":37.62,"peakKW":0.84,"zeroIntervals":288,"intervalCount":672},{"maloId":"DE0009876543210987654321098765432","name":"Schmidt","sharePercent":70,"totalKWh":87.78,"peakKW":1.96,"zeroIntervals":288,"intervalCount":672}],"summary":{"totalGenerationKWh":125.4,"totalRedispatchDeductionKWh":0,"totalNetGenerationKWh":125.4,"intervalCount":672,"durationMs":6500},"consumptionStatus":[{"maloId":"DE0001234567890123456789012345678","found":true,"intervalCount":672,"totalKWh":41.2},{"maloId":"DE0009876543210987654321098765432","found":false,"intervalCount":0,"totalKWh":null}]}}}},"202":{"description":"REST/Gateway call accepted as async job. Poll /api/jobs/:jobId/status and /api/jobs/:jobId/result.","content":{"application/json":{"example":{"success":true,"jobId":"f8d2d8d4-4f22-4a0a-bec7-a9f05ad6b9e6","status":"queued","statusUrl":"/api/jobs/f8d2d8d4-4f22-4a0a-bec7-a9f05ad6b9e6/status","resultUrl":"/api/jobs/f8d2d8d4-4f22-4a0a-bec7-a9f05ad6b9e6/result"}}}}},"description":"Executes a deterministic allocation pipeline: input validation → generation time-series fetch (Stufe A: forecast / Stufe B: inhouse metering) → optional EDM consumption-data availability check (#281, includeConsumptionData) → redispatch deduction → allocation arithmetic → summary assembly → PouchDB persist. Returns metadata and per-consumer summaries. Full 15-min time-series is available for download via GET /energy-sharing/allocations/:id/download. Regulatory basis: § 42c EnWG, § 12 StromNZV (Viertelstundenwerte), § 20b EnWG Interimsprozess (operative deadline 01.06.2026). KRITIS constraint: raw generation data is never persisted — only metadata.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["dateFrom","dateTo"],"properties":{"communityId":{"type":"string","description":"External community ID from VNB. Also used (#285) to resolve generators/consumers automatically from a persisted energy-sharing-community when neither array is provided inline — see generators/consumers below.","example":"ES-2026-001"},"validationReportId":{"type":"string","description":"Optional v0.15 validation report UUID — skips redundant generator/consumer validation when set","example":"a1b2c3d4-..."},"supersedesAllocationId":{"type":"string","description":"Korrekturlauf (#286): UUID of a prior allocation this run corrects/replaces (e.g. after measured data was corrected). The prior run is marked superseded (never deleted — full audit trail preserved) and linked to this run. Requires correctionReason. Omit for a normal, non-correction run (default behavior).","example":"b2c3d4e5-..."},"correctionReason":{"type":"string","description":"Required when supersedesAllocationId is set — never an unexplained correction.","example":"Korrigierte Verbrauchsdaten für Müller (DE000...) nachgemeldet"},"generators":{"type":"array","items":{"type":"object"},"description":"Generator list with mastrNummer and sharePercent (must sum to 100). Optional (#285) when communityId resolves to a persisted community with active generator members for the requested period — required otherwise.","example":[{"mastrNummer":"SEE904837264953","sharePercent":100}]},"consumers":{"type":"array","items":{"type":"object"},"description":"Consumer list with maloId, sharePercent (must sum to 100), optional name. Optional (#285) when communityId resolves to a persisted community with active consumer members for the requested period — required otherwise.","example":[{"maloId":"DE0001234567890123456789012345678","sharePercent":100,"name":"Whg. 1"}]},"dateFrom":{"type":"string","description":"Start date (inclusive), ISO-8601 date","example":"2026-06-01"},"dateTo":{"type":"string","description":"End date (inclusive), ISO-8601 date","example":"2026-06-30"},"dataSource":{"type":"string","enum":["forecast","inhouse"],"default":"forecast","description":"Stufe A: synthetic forecast (default); Stufe B: real metering data from inhouse CSV upload"},"inhouseSourceId":{"type":"string","description":"datasource-cache sourceId for Stufe B (required when dataSource=inhouse)","example":"pv-generation-es-2026-001"},"includeRedispatchDeduction":{"type":"boolean","default":true,"description":"Apply Redispatch 2.0 deductions (affected intervals → generation = 0)"},"includeConsumptionData":{"type":"boolean","default":false,"description":"Opt-in (#281): look up each consumer's EDM consumption timeseries (services/edm.service.js, OBIS 1-0:1.8.0) for the same date range. Does not change the allocation arithmetic — only reports per-consumer data availability via consumptionStatus[] and warnings[]. A consumer without a matching EDM timeseries is reported via ALLOC_CONSUMPTION_DATA_NOT_FOUND, never silently treated as zero."},"gridOperatorId":{"type":"string","description":"MaStR grid operator ID (SNB...) for redispatch context lookup","example":"SNB935578300972"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"Solar community — forecast, 7 days":{"value":{"communityId":"ES-2026-001","generators":[{"mastrNummer":"SEE904837264953","sharePercent":100}],"consumers":[{"maloId":"DE0001234567890123456789012345678","sharePercent":30,"name":"Müller"},{"maloId":"DE0009876543210987654321098765432","sharePercent":70,"name":"Schmidt"}],"dateFrom":"2026-06-01","dateTo":"2026-06-07","dataSource":"forecast","includeRedispatchDeduction":true,"gridOperatorId":"SNB935578300972"}},"Inhouse metering data (Stufe B)":{"value":{"communityId":"ES-2026-002","generators":[{"mastrNummer":"SEE904837264953","sharePercent":100}],"consumers":[{"maloId":"DE0001234567890123456789012345678","sharePercent":50,"name":"Haus A"},{"maloId":"DE0009876543210987654321098765432","sharePercent":50,"name":"Haus B"}],"dateFrom":"2026-06-01","dateTo":"2026-06-07","dataSource":"inhouse","inhouseSourceId":"pv-generation-es-2026-002","includeRedispatchDeduction":false}}}}}}}},"/api/energy-sharing-allocation/allocations":{"get":{"summary":"List past Energy Sharing allocation records","tags":["Energy Sharing Allocation"],"operationId":"energy_sharing_allocation_list","parameters":[{"name":"communityId","in":"query","schema":{"type":"string","example":"ES-2026-001"},"description":"Filter by external community ID"},{"name":"includeDeleted","in":"query","schema":{"type":"boolean","default":false},"description":"Include soft-deleted records (for audit access)"},{"name":"includeSuperseded","in":"query","schema":{"type":"boolean","default":false},"description":"Include records that were superseded by a later Korrekturlauf (#286, for audit access)"},{"name":"limit","in":"query","schema":{"type":"integer","default":20,"maximum":100},"description":"Maximum number of results"},{"name":"cursor","in":"query","required":false,"schema":{"type":"string","example":"eyJvZmZzZXQiOjIwfQ=="}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"example":0}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Paginated list of allocation metadata summaries","content":{"application/json":{"example":{"count":1,"allocations":[{"id":"...","communityId":"ES-2026-001","dateFrom":"2026-06-01","dateTo":"2026-06-07","dataSource":"forecast","redispatchApplied":false,"createdAt":"2026-06-01T..."}]}}}}},"description":"Returns allocation metadata records stored in PouchDB, newest first. Soft-deleted records are excluded unless includeDeleted=true. Superseded records (replaced by a later Korrekturlauf, #286) are excluded unless includeSuperseded=true."}},"/api/energy-sharing-allocation/allocations/:id":{"get":{"summary":"Get a specific Energy Sharing allocation record by ID","tags":["Energy Sharing Allocation"],"operationId":"energy_sharing_allocation_get","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","example":"b2c3d4e5-..."},"description":"Allocation UUID"},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Full allocation metadata document"},"404":{"description":"Allocation not found"}},"description":"Returns the full allocation metadata including per-consumer summaries, warnings, and pipeline metadata. Time-series must be re-fetched via /download."},"delete":{"summary":"Soft-delete an Energy Sharing allocation record","tags":["Energy Sharing Allocation"],"operationId":"energy_sharing_allocation_remove","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Allocation UUID to soft-delete"},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Soft-delete confirmed"},"404":{"description":"Allocation not found"}},"description":"Marks the allocation record as deleted (_deleted: true) without removing it from PouchDB. The record remains accessible for audit purposes via GET /allocations/:id?includeDeleted=true. EU AI Act Art. 12 compliance: deletion is non-destructive.","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}}}}}}},"/api/energy-sharing-allocation/allocations/:id/download":{"get":{"summary":"Download per-consumer allocation time-series as CSV (EDM-importable)","tags":["Energy Sharing Allocation"],"operationId":"energy_sharing_allocation_download","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","example":"b2c3d4e5-f6a7-b8c9-d0e1-f2a3b4c5d6e7"},"description":"Allocation UUID"},{"name":"maloId","in":"query","required":true,"schema":{"type":"string","example":"DE0001234567890123456789012345678"},"description":"Consumer MaLo-ID to export"},{"name":"format","in":"query","schema":{"type":"string","default":"csv"},"description":"Output format (currently only \"csv\" supported)"},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Semicolon-delimited CSV file, one row per 15-min interval","content":{"text/csv":{}}},"404":{"description":"Allocation not found or maloId not part of this allocation"}},"description":"Re-computes the 15-min allocation time-series on demand and returns a semicolon-delimited CSV. One row per 15-min interval. Columns: timestamp;generation_kwh;redispatch_deduction_kwh;net_generation_kwh;allocation_kwh. KRITIS: time-series is never persisted — this endpoint re-runs the computation from stored metadata."}},"/api/energy-sharing-allocation/allocations/:id/billing-report":{"post":{"summary":"Monthly billing report for an existing allocation (kWh → EUR, #284)","tags":["Energy Sharing Allocation"],"operationId":"energy_sharing_allocation_billingReport","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","example":"b2c3d4e5-f6a7-b8c9-d0e1-f2a3b4c5d6e7"},"description":"Allocation UUID"},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Billing report (JSON) or semicolon-delimited CSV export"},"404":{"description":"Allocation not found"}},"description":"Replays the allocation, fetches each consumer's EDM consumption timeseries, caps the quota-based allocation at actual consumption (#282), aggregates Restmenge/Überschuss per consumer (#283), and applies `tariffEurPerKWh` to produce a billing report. Only allocatedKWh (internal solar share actually used) is billed — remainderKWh (grid draw) is reported for transparency but never billed here. A consumer with no EDM consumption data for the period gets billingAmountEur: null, never a misleading €0.00.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["tariffEurPerKWh"],"properties":{"tariffEurPerKWh":{"type":"number","description":"Internal price per kWh of allocated solar — required input, never a hardcoded default.","example":0.25},"format":{"type":"string","enum":["json","csv"],"default":"json"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"value":{"tariffEurPerKWh":0.25}}}}}}}},"/api/energy-sharing-allocation/annual-billing-report":{"post":{"summary":"Annual billing report — sums N monthly allocations per consumer (#284)","tags":["Energy Sharing Allocation"],"operationId":"energy_sharing_allocation_annualBillingReport","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Annual billing report (JSON) or semicolon-delimited CSV export"},"404":{"description":"One of the referenced allocations was not found"}},"description":"Replays and bills each allocation in `allocationIds` (same logic as billingReport, one call per ID) using the same tariffEurPerKWh, then sums the results per consumer. A consumer missing data in some months is summed only over the months that have data — monthsWithData/monthsWithoutData/complete report the coverage transparently, never masking an incomplete year as a complete one.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["allocationIds","tariffEurPerKWh"],"properties":{"allocationIds":{"type":"array","items":{"type":"string"},"description":"Allocation UUIDs to sum, typically 12 monthly runs.","example":["alloc-jan","alloc-feb"]},"tariffEurPerKWh":{"type":"number","example":0.25},"format":{"type":"string","enum":["json","csv"],"default":"json"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"value":{"allocationIds":["alloc-jan","alloc-feb"],"tariffEurPerKWh":0.25}}}}}}}},"/api/blindflug-radar/scan":{"post":{"summary":"Scan disturbance patterns and generate Blindflug-Radar signals","tags":["Blindflug Radar"],"operationId":"blindflug_radar_scanBlindflug","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"Collects Redispatch Ex-Post audits, MaStR monitor deltas, and quality findings, then builds deterministic disturbance signals (`DISTURBANCE_PATTERN`, `REPEATING_FAULT`) for investment-oriented planning.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"gridOperatorId":{"type":"string","example":"SNB123456789000"},"projectId":{"type":"string","example":"a1b2c3d4-0000-0000-0000-000000000001"},"watchIds":{"type":"array","default":[],"items":{"type":"string","example":"stromdao-monitor-main"}},"timeWindowDays":{"type":"number","default":90},"minEvents":{"type":"number","default":3},"confidenceThreshold":{"type":"number","default":0.7},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"value":{"gridOperatorId":"SNB123456789000","projectId":"a1b2c3d4-0000-0000-0000-000000000001","watchIds":["stromdao-monitor-main"],"timeWindowDays":90,"minEvents":3,"confidenceThreshold":0.72}}}}}}}},"/api/blindflug-radar/recommendations":{"post":{"summary":"Get confidence-threshold auto-proposals from disturbance signals","tags":["Blindflug Radar"],"operationId":"blindflug_radar_recommendFromDisturbances","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"scanId":{"type":"string","example":"bfr-2026-04-18-001"},"confidenceThreshold":{"type":"number","default":0.7},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"value":{"scanId":"c73c2f77-5535-4ca4-a5cc-9038a6a75d9f","confidenceThreshold":0.75}}}}}}}},"/api/blindflug-radar/scans":{"get":{"summary":"List Blindflug-Radar scans","tags":["Blindflug Radar"],"operationId":"blindflug_radar_listScans","parameters":[{"name":"gridOperatorId","in":"query","schema":{"type":"string","example":"SNB123456789000"}},{"name":"limit","in":"query","schema":{"type":"integer","default":50,"maximum":200}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/blindflug-radar/scans/:id":{"get":{"summary":"Get one Blindflug-Radar scan","tags":["Blindflug Radar"],"operationId":"blindflug_radar_getScan","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","example":"c73c2f77-5535-4ca4-a5cc-9038a6a75d9f"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/energy-sharing/validate":{"post":{"summary":"Validate an Energy Sharing community application (§ 42c EnWG)","tags":["Energy Sharing Validation"],"operationId":"energy_sharing_validate","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"EnergyShareValidationReport with findings from all 6 pipeline steps","content":{"application/json":{"example":{"success":true,"id":"a1b2c3d4-...","communityName":"Solargemeinschaft Rheinallee","communityId":"ES-2026-001","decision":"APPROVED","summary":{"generatorsSubmitted":1,"generatorsValid":1,"generatorsInvalid":0,"consumersSubmitted":2,"dvStatus":"all_confirmed","totalGeneratorCapacityKW":350,"findingsCount":{"info":4,"warning":0,"error":0},"durationMs":5200}}}}},"202":{"description":"REST/Gateway call accepted as async job. Poll /api/jobs/:jobId/status and /api/jobs/:jobId/result.","content":{"application/json":{"example":{"success":true,"jobId":"f8d2d8d4-4f22-4a0a-bec7-a9f05ad6b9e6","status":"queued","statusUrl":"/api/jobs/f8d2d8d4-4f22-4a0a-bec7-a9f05ad6b9e6/status","resultUrl":"/api/jobs/f8d2d8d4-4f22-4a0a-bec7-a9f05ad6b9e6/result"}}}}},"description":"Executes a deterministic 6-step Energy Sharing validation pipeline: identity → generators → directMarketer → eligibility → decision → audit. Validates generator MaStR records, direct marketer status (§ 21 Abs. 2 EEG), share allocations, and § 42c EnWG eligibility criteria. Results are persisted to the validation database and retrievable via GET /validations/:id.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"gridOperatorId":{"type":"string","description":"MaStR grid operator ID (SNB...)","example":"SNB935578300972"},"gridOperatorBdew":{"type":"string","description":"13-digit BDEW market-partner code","example":"9907473000008"},"communityName":{"type":"string","description":"Name of the Energy Sharing community","example":"Solargemeinschaft Rheinallee"},"communityId":{"type":"string","description":"External community ID assigned by the VNB","example":"ES-2026-001"},"generators":{"type":"array","items":{"type":"object"},"description":"List of generator participants with mastrNummer, sharePercent, optional direktvermarkter","example":[{"mastrNummer":"SEE904837264953","sharePercent":100,"direktvermarkter":"Next Kraftwerke GmbH"}]},"consumers":{"type":"array","items":{"type":"object"},"description":"List of consumer participants with maloId, sharePercent, optional name","example":[{"maloId":"DE0001234567890123456789012345678","sharePercent":100,"name":"Whg. 1"}]},"maxAgeMinutes":{"type":"integer","default":120,"description":"Datapoint freshness threshold for Weg B (minutes)"},"datapointTags":{"type":"array","items":{"type":"string"},"description":"Tags for datapoint snapshot (Weg B fallback)","example":["stromdao-netze"]},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"Minimal valid application":{"value":{"gridOperatorId":"SNB935578300972","communityName":"Solargemeinschaft Rheinallee","communityId":"ES-2026-001","generators":[{"mastrNummer":"SEE904837264953","sharePercent":100,"direktvermarkter":"Next Kraftwerke GmbH"}],"consumers":[{"maloId":"DE00012345678901234567890123456789","sharePercent":60},{"maloId":"DE00098765432109876543210987654321","sharePercent":40}]}},"By BDEW code":{"value":{"gridOperatorBdew":"9907473000008","generators":[],"consumers":[]}}}}}}}},"/api/energy-sharing/validations":{"get":{"summary":"List past Energy Sharing validation reports","tags":["Energy Sharing Validation"],"operationId":"energy_sharing_list","parameters":[{"name":"communityId","in":"query","schema":{"type":"string","example":"ES-2026-001"},"description":"Filter by external community ID"},{"name":"limit","in":"query","schema":{"type":"integer","default":20,"maximum":100},"description":"Maximum number of results"},{"name":"cursor","in":"query","required":false,"schema":{"type":"string","example":"eyJvZmZzZXQiOjIwfQ=="}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"example":0}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Paginated list of Energy Sharing validation report summaries","content":{"application/json":{"example":{"count":1,"validations":[{"id":"...","communityName":"Solargemeinschaft Rheinallee","communityId":"ES-2026-001","decision":"APPROVED","createdAt":"2026-03-30T..."}]}}}}},"description":"Returns validation reports stored in PouchDB, newest first. Filter by communityId."}},"/api/energy-sharing/validations/:id":{"get":{"summary":"Get a specific Energy Sharing validation report by ID","tags":["Energy Sharing Validation"],"operationId":"energy_sharing_get","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","example":"a1b2c3d4-1234-5678-90ab-cdef12345678"},"description":"Validation report UUID"},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Full EnergyShareValidationReport document"},"404":{"description":"Validation not found"}},"description":"Returns the full EnergyShareValidationReport including all findings, per-generator status, and snapshot reference."}},"/api/file-ingest-monitor/schemas":{"post":{"summary":"Create a CSV/file schema definition","tags":["File Ingest Monitor"],"operationId":"file_ingest_monitor_createSchema","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"delimiter":{"type":"string"},"encoding":{"type":"string"},"requiredColumns":{"type":"string"},"optionalColumns":{"type":"string"},"headerRowIndex":{"type":"number"},"dateLocale":{"type":"string"},"decimalLocale":{"type":"string"},"version":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}},"get":{"summary":"List file ingest schemas","tags":["File Ingest Monitor"],"operationId":"file_ingest_monitor_listSchemas","parameters":[{"in":"query","name":"limit","schema":{"type":"number"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/file-ingest-monitor/schemas/:schemaId":{"get":{"summary":"Get schema by ID","tags":["File Ingest Monitor"],"operationId":"file_ingest_monitor_getSchema","parameters":[{"in":"path","name":"schemaId","required":true,"schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/file-ingest-monitor/monitors":{"post":{"summary":"Register a file ingest monitor","tags":["File Ingest Monitor"],"operationId":"file_ingest_monitor_createMonitor","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"watchPath":{"type":"string"},"schemaId":{"type":"string"},"schemaVersion":{"type":"string"},"stalenessWindowMinutes":{"type":"number"},"direction":{"type":"string"},"sourcePriority":{"type":"number"},"errorFolderPath":{"type":"string"},"flowId":{"type":"string"},"ownerRef":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}},"get":{"summary":"List file ingest monitors","tags":["File Ingest Monitor"],"operationId":"file_ingest_monitor_listMonitors","parameters":[{"in":"query","name":"limit","schema":{"type":"number"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/file-ingest-monitor/monitors/:id":{"get":{"summary":"Get monitor by ID","tags":["File Ingest Monitor"],"operationId":"file_ingest_monitor_getMonitor","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}},"delete":{"summary":"Delete monitor by ID","tags":["File Ingest Monitor"],"operationId":"file_ingest_monitor_deleteMonitor","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}}},"/api/file-ingest-monitor/monitors/:id/scan":{"post":{"summary":"Run a scan on the monitored path","tags":["File Ingest Monitor"],"operationId":"file_ingest_monitor_scan","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}}},"/api/file-ingest-monitor/monitors/:id/status":{"get":{"summary":"Get latest scan status for a monitor","tags":["File Ingest Monitor"],"operationId":"file_ingest_monitor_getStatus","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/file-ingest-monitor/monitors/:id/files":{"get":{"summary":"Get file list from last scan","tags":["File Ingest Monitor"],"operationId":"file_ingest_monitor_getFiles","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/file-ingest-monitor/monitors/:id/findings":{"get":{"summary":"Get findings from last scan","tags":["File Ingest Monitor"],"operationId":"file_ingest_monitor_getFindings","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/auth/oidc/login":{"get":{"summary":"Start OIDC login (foundation)","tags":["Authentication"],"operationId":"auth_oidcLogin","parameters":[{"name":"state","in":"query","schema":{"type":"string","example":"state-123"}},{"name":"nonce","in":"query","schema":{"type":"string","example":"nonce-123"}},{"name":"scope","in":"query","schema":{"type":"string","example":"openid profile email groups"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/auth/oidc/callback":{"get":{"summary":"OIDC callback (foundation mode — disabled by default)","tags":["Authentication"],"operationId":"auth_oidcCallback","parameters":[{"name":"code","in":"query","schema":{"type":"string","example":"oidc-code-abc"}},{"name":"state","in":"query","schema":{"type":"string","example":"state-123"}},{"name":"claims","in":"query","schema":{"type":"string","description":"Foundation mode claim payload as JSON string.","example":"{\"sub\":\"user-1\",\"groups\":[\"cernion-approver\"]}"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"⚠️ Builds a session directly from the caller-supplied `claims` payload — no authorization-code exchange, no ID-token signature validation. This is a full authentication bypass if reachable with a real OIDC provider configured, so it is disabled unless `AUTH_FOUNDATION_MODE=true` is explicitly set (local development/demos only). Returns 501 otherwise."}},"/api/auth/saml/acs":{"post":{"summary":"SAML ACS callback (foundation mode — disabled by default)","tags":["Authentication"],"operationId":"auth_samlAcs","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"⚠️ Builds a session directly from the caller-supplied `payload` — no SAML assertion signature validation against `settings.saml.cert`. This is a full authentication bypass if reachable with a real SAML IdP configured, so it is disabled unless `AUTH_FOUNDATION_MODE=true` is explicitly set (local development/demos only). Returns 501 otherwise.","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"payload":{"type":"object","example":{"nameID":"user@example.com"}},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"value":{"payload":{"nameID":"user@example.com","groups":["cernion-approver"]}}}}}}}}},"/api/auth/refresh":{"post":{"summary":"Refresh csess_ session","tags":["Authentication"],"operationId":"auth_refresh","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string","example":"csess_..."}}},"examples":{"default":{"value":{"token":"csess_demo_token"}}}}}}}},"/api/auth/logout":{"post":{"summary":"Logout csess_ session","tags":["Authentication"],"operationId":"auth_logout","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string","example":"csess_..."}}},"examples":{"default":{"value":{"token":"csess_demo_token"}}}}}}}},"/api/auth/verify":{"post":{"summary":"Verify csess_ session","tags":["Authentication"],"operationId":"auth_verify","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string","example":"csess_..."},"trackUsage":{"type":"boolean","default":false}}},"examples":{"default":{"value":{"token":"csess_demo_token","trackUsage":true}}}}}}}},"/api/investment-planning/plans":{"post":{"summary":"Create investment plan with Soll-Ist delta and mandate alignment","tags":["Investment Planning"],"operationId":"investment_planning_createPlan","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"Builds a deterministic investment planning report using hybrid Soll baselines (redispatch_target + finance_budget), compares against Redispatch Ex-Post Ist, evaluates mandate alignment, and creates HITL items for any measure with capex or avoided costs > 1,000,000 EUR.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"redispatchAuditId":{"type":"string","example":"rd-12345"},"gridOperatorId":{"type":"string","example":"SNB123456789000"},"redispatchTargetEur":{"type":"number","example":1250000},"financeBudgetEur":{"type":"number","example":900000},"triggerThresholdEur":{"type":"number","default":1000000},"measures":{"type":"array","default":[],"items":{"type":"object","properties":{"measureId":{"type":"string","example":"m-001"},"name":{"type":"string","example":"Trafo-Upgrade Süd"},"projectId":{"type":"string","example":"proj-77"},"capexEur":{"type":"number","example":1200000},"avoidedCostsEur":{"type":"number","example":150000}}}},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"triggerRequired":{"value":{"gridOperatorId":"SNB123456789000","redispatchTargetEur":1250000,"financeBudgetEur":900000,"measures":[{"measureId":"m-001","name":"Trafo-Upgrade Süd","projectId":"proj-77","capexEur":1200000,"avoidedCostsEur":150000}]}},"belowThreshold":{"value":{"gridOperatorId":"SNB123456789000","measures":[{"measureId":"m-002","name":"Leitungsmonitoring Ost","capexEur":800000,"avoidedCostsEur":120000}]}}}}}}},"get":{"summary":"List investment planning reports","tags":["Investment Planning"],"operationId":"investment_planning_listPlans","parameters":[{"name":"gridOperatorId","in":"query","schema":{"type":"string","example":"SNB123456789000"}},{"name":"limit","in":"query","schema":{"type":"integer","default":50,"maximum":200}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/investment-planning/plans/:id":{"get":{"summary":"Get one investment planning report","tags":["Investment Planning"],"operationId":"investment_planning_getPlan","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","example":"ip-123"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/hitl/items":{"post":{"summary":"Create HITL item","tags":["HITL"],"operationId":"hitl_create","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["kind"],"properties":{"kind":{"type":"string","example":"cya-consensus-failed"},"payload":{"type":"object","example":{"sessionId":"S-123"}},"responsibleRole":{"type":"string","example":"ROLE_NETZPLANUNG"},"requiredResolverRoles":{"type":"array","items":{"type":"string"},"example":["ROLE_KAUFMAENNISCHE_LEITUNG","ROLE_NETZPLANUNG"]},"personaId":{"type":"string","example":"tenant-a/thorsten-human"},"originService":{"type":"string","example":"cya"},"originAction":{"type":"string","example":"refine"},"severity":{"type":"string","example":"warning"},"requiredScope":{"type":"string","example":"full-access"},"dueAt":{"type":"string","format":"date-time","example":"2026-05-12T12:00:00.000Z"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"value":{"kind":"cya-consensus-failed","payload":{"sessionId":"S-123"},"responsibleRole":"ROLE_NETZPLANUNG","requiredResolverRoles":["ROLE_KAUFMAENNISCHE_LEITUNG","ROLE_NETZPLANUNG"],"personaId":"tenant-a/thorsten-human","originService":"cya","originAction":"refine","severity":"warning","requiredScope":"full-access"}}}}}}},"get":{"summary":"List HITL items","tags":["HITL"],"operationId":"hitl_list","parameters":[{"name":"status","in":"query","schema":{"type":"string","example":"pending"}},{"name":"kind","in":"query","schema":{"type":"string","example":"finance-hypothetical-review"}},{"name":"originService","in":"query","schema":{"type":"string","example":"finance-agent"}},{"name":"originAction","in":"query","schema":{"type":"string","example":"analyze"}},{"name":"severity","in":"query","schema":{"type":"string","example":"warning"}},{"name":"overdueOnly","in":"query","schema":{"type":"boolean","default":false}},{"name":"limit","in":"query","schema":{"type":"integer","default":50,"maximum":200}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/hitl/summary":{"get":{"summary":"Summarize HITL queue and workload","tags":["HITL"],"operationId":"hitl_summary","parameters":[{"name":"sinceDays","in":"query","schema":{"type":"integer","default":30,"maximum":365}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/hitl/sla-heatmap":{"get":{"summary":"Get HITL SLA heatmap buckets","tags":["HITL"],"operationId":"hitl_slaHeatmap","parameters":[{"name":"sinceDays","in":"query","schema":{"type":"integer","default":14,"maximum":90}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/hitl/items/:id":{"get":{"summary":"Get HITL item","tags":["HITL"],"operationId":"hitl_get","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","example":"00000000-0000-4000-8000-000000000001"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/hitl/items/:id/approve":{"post":{"summary":"Approve HITL item","tags":["HITL"],"operationId":"hitl_approve","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","example":"00000000-0000-4000-8000-000000000001"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"comment":{"type":"string","example":"Looks good"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"value":{"comment":"Looks good"}}}}}}}},"/api/hitl/items/:id/reject":{"post":{"summary":"Reject HITL item","tags":["HITL"],"operationId":"hitl_reject","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","example":"00000000-0000-4000-8000-000000000001"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"comment":{"type":"string","example":"Missing supporting evidence"},"feedbackToAgent":{"type":"string","example":"Please provide legal reference to §21a EnWG."},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"value":{"comment":"Missing supporting evidence","feedbackToAgent":"Please provide legal reference to §21a EnWG."}}}}}}}},"/api/hitl/items/:id/escalate":{"post":{"summary":"Escalate HITL item","tags":["HITL"],"operationId":"hitl_escalate","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","example":"00000000-0000-4000-8000-000000000001"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"comment":{"type":"string","example":"Escalate to legal review"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"value":{"comment":"Escalate to legal review"}}}}}}}},"/api/hitl/items/bulk-approve":{"post":{"summary":"Approve multiple HITL items","tags":["HITL"],"operationId":"hitl_bulkApprove","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["ids"],"properties":{"ids":{"type":"array","minItems":1,"maxItems":100,"example":["00000000-0000-4000-8000-000000000001"],"items":{"type":"string","example":"00000000-0000-4000-8000-000000000001"}},"comment":{"type":"string","example":"Bulk approval by shift lead"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"value":{"ids":["00000000-0000-4000-8000-000000000001"],"comment":"Bulk approval by shift lead"}}}}}}}},"/api/hitl/items/bulk-reject":{"post":{"summary":"Reject multiple HITL items","tags":["HITL"],"operationId":"hitl_bulkReject","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["ids"],"properties":{"ids":{"type":"array","minItems":1,"maxItems":100,"example":["00000000-0000-4000-8000-000000000001"],"items":{"type":"string","example":"00000000-0000-4000-8000-000000000001"}},"comment":{"type":"string","example":"Bulk rejection after policy review"},"feedbackToAgent":{"type":"string","example":"Evidence package missing legal references."},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"value":{"ids":["00000000-0000-4000-8000-000000000001"],"comment":"Bulk rejection after policy review","feedbackToAgent":"Evidence package missing legal references."}}}}}}}},"/api/hitl/items/bulk-escalate":{"post":{"summary":"Escalate multiple HITL items","tags":["HITL"],"operationId":"hitl_bulkEscalate","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["ids"],"properties":{"ids":{"type":"array","minItems":1,"maxItems":100,"example":["00000000-0000-4000-8000-000000000001"],"items":{"type":"string","example":"00000000-0000-4000-8000-000000000001"}},"comment":{"type":"string","example":"Escalate batch to legal queue"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"value":{"ids":["00000000-0000-4000-8000-000000000001"],"comment":"Escalate batch to legal queue"}}}}}}}},"/api/hitl/items/:id/workflow-state":{"get":{"summary":"Get workflow completion state for HITL item","tags":["HITL"],"operationId":"hitl_getWorkflowState","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","example":"00000000-0000-4000-8000-000000000001"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/hitl/items/:id/completion-plausibility":{"post":{"summary":"Preview pre-completion plausibility hints for a HITL item (read-only, advisory)","tags":["HITL"],"operationId":"hitl_completionPlausibility","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","example":"00000000-0000-4000-8000-000000000001"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"rules":{"type":"array","items":{"type":"object"},"example":[{"ruleId":"summary_required","type":"required","fieldKey":"summary"}]},"fields":{"type":"object","example":{"summary":"ok"}},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}}}}}}},"/api/hitl/items/:id/mark-completed":{"post":{"summary":"Mark HITL workflow as completed","tags":["HITL"],"operationId":"hitl_markWorkflowCompleted","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","example":"00000000-0000-4000-8000-000000000001"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"completionNotes":{"type":"string","example":"Workflow completed with approval"},"handoffPersonaId":{"type":"string","example":"tenant-a/persona-b"},"plausibilityRules":{"type":"array","items":{"type":"object"},"example":[{"ruleId":"summary_required","type":"required","fieldKey":"summary"}]},"completionFields":{"type":"object","example":{"summary":"ok"}},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"value":{"completionNotes":"Workflow completed with approval","handoffPersonaId":null}}}}}}}},"/api/webhooks":{"post":{"summary":"Create webhook subscription","tags":["Webhooks"],"operationId":"webhooks_create","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["url","events"],"properties":{"url":{"type":"string","example":"https://example.com/hooks/cernion"},"events":{"type":"array","items":{"type":"string"},"example":["cya.a2a.consensus.failed"]},"secret":{"type":"string","example":"my-shared-secret"},"headers":{"type":"object","example":{"X-Customer":"tenant-a"}},"isActive":{"type":"boolean","default":true},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"value":{"url":"https://example.com/hooks/cernion","events":["cya.a2a.consensus.failed","hitl.item.created"],"secret":"my-shared-secret","headers":{"X-Customer":"tenant-a"},"isActive":true}}}}}}},"get":{"summary":"List webhook subscriptions","tags":["Webhooks"],"operationId":"webhooks_list","parameters":[{"name":"event","in":"query","schema":{"type":"string","example":"cya.a2a.consensus.failed"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/webhooks/:id":{"delete":{"summary":"Delete webhook subscription","tags":["Webhooks"],"operationId":"webhooks_remove","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","example":"00000000-0000-4000-8000-000000000010"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}}}}}}},"/api/webhooks/:id/test":{"post":{"summary":"Send test webhook delivery","tags":["Webhooks"],"operationId":"webhooks_test","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","example":"00000000-0000-4000-8000-000000000010"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"value":{}}}}}}}},"/api/webhooks/:id/deliveries":{"get":{"summary":"List webhook deliveries","tags":["Webhooks"],"operationId":"webhooks_listDeliveries","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","example":"00000000-0000-4000-8000-000000000010"}},{"name":"status","in":"query","schema":{"type":"string","example":"failed"}},{"name":"limit","in":"query","schema":{"type":"integer","default":50,"maximum":200}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/webhooks/:id/deliveries/:deliveryId/replay":{"post":{"summary":"Replay webhook delivery","tags":["Webhooks"],"operationId":"webhooks_replay","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","example":"00000000-0000-4000-8000-000000000010"}},{"name":"deliveryId","in":"path","required":true,"schema":{"type":"string","example":"00000000-0000-4000-8000-000000000011"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"value":{}}}}}}}},"/api/company/companies":{"post":{"summary":"Create a company entity (Stadtwerk/Konzernverbund)","tags":["Companies"],"operationId":"company_create","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["displayName"],"properties":{"displayName":{"type":"string","example":"Stadtwerke Heidelberg"},"legalName":{"type":"string","example":"Stadtwerke Heidelberg GmbH"},"members":{"type":"array","example":[],"items":{"type":"object","properties":{"bdewCode":{"type":"string","example":"9900277000000"},"role":{"type":"string","enum":["VNB","ÜNB","MSB","Lieferant","BKV","Direktvermarkter","other"]},"legalEntity":{"type":"string"},"mastrId":{"type":"string"}}}},"autoDiscover":{"type":"boolean","default":false},"autoConfirm":{"type":"boolean","default":false},"query":{"type":"string","description":"Search term for autoDiscover (e.g. company name)","example":"Heidelberg"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"manualCreate":{"summary":"Create company with explicit members","value":{"displayName":"Stadtwerke Heidelberg","legalName":"Stadtwerke Heidelberg GmbH & Co. KG","members":[{"bdewCode":"9900277000000","role":"VNB","legalEntity":"SW HD Netze GmbH"},{"bdewCode":"9910277000001","role":"Lieferant"}]}},"autoDiscover":{"summary":"Auto-discover via MCP then confirm","value":{"displayName":"Stadtwerke Heidelberg","autoDiscover":true,"autoConfirm":false,"query":"Heidelberg"}}}}}}},"get":{"summary":"List / search company entities","tags":["Companies"],"operationId":"company_list","parameters":[{"name":"query","in":"query","required":false,"schema":{"type":"string","example":"Stadtwerke Heidelberg","description":"Search by company name (case-insensitive)"}},{"name":"limit","in":"query","required":false,"schema":{"type":"number","default":10}},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["draft","active","archived","all"],"default":"active"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/company/companies/:id/confirm":{"put":{"summary":"Confirm draft company (transition draft → active)","tags":["Companies"],"operationId":"company_confirm","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}}}}}}},"/api/company/companies/:id":{"get":{"summary":"Get company entity by ID","tags":["Companies"],"operationId":"company_get","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","example":"550e8400-e29b-41d4-a716-446655440000"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}},"put":{"summary":"Update company entity (name, members)","tags":["Companies"],"operationId":"company_update","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}}}}}},"delete":{"summary":"Archive (soft-delete) a company entity","tags":["Companies"],"operationId":"company_delete","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}}}}}}},"/api/blueprint-management/drafts":{"post":{"summary":"blueprint-management.createDraft","tags":["blueprint-management"],"operationId":"blueprint_management_createDraft","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"blueprint":{"type":"string"},"createdBy":{"type":"string"},"sourceConversationId":{"type":"string"},"sourceAgent":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}}},"/api/blueprint-management":{"get":{"summary":"blueprint-management.list","tags":["blueprint-management"],"operationId":"blueprint_management_list","parameters":[{"$ref":"#/components/parameters/TokenQuery"},{"name":"includeDrafts","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"includeActive","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"blueprintId","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/blueprint-management/:id":{"get":{"summary":"blueprint-management.get","tags":["blueprint-management"],"operationId":"blueprint_management_get","parameters":[{"$ref":"#/components/parameters/TokenQuery"},{"name":"id","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/blueprint-management/:id/validate":{"post":{"summary":"blueprint-management.validate","tags":["blueprint-management"],"operationId":"blueprint_management_validate","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}}},"/api/blueprint-management/:id/test":{"post":{"summary":"blueprint-management.test","tags":["blueprint-management"],"operationId":"blueprint_management_test","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}}},"/api/blueprint-management/:id/promote":{"post":{"summary":"blueprint-management.promote","tags":["blueprint-management"],"operationId":"blueprint_management_promote","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"promotedBy":{"type":"string"},"allowWarnings":{"type":"boolean"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}}},"/api/blueprint-management/:id/rollback":{"post":{"summary":"blueprint-management.rollback","tags":["blueprint-management"],"operationId":"blueprint_management_rollback","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"rolledBackBy":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}}},"/api/blueprint-management/active/:id":{"delete":{"summary":"blueprint-management.deactivate","tags":["blueprint-management"],"operationId":"blueprint_management_deactivate","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}}},"/api/automatisierungsradar/radars":{"post":{"summary":"automatisierungsradar.analyze","tags":["automatisierungsradar"],"operationId":"automatisierungsradar_analyze","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"gridOperatorId":{"type":"string"},"processChainName":{"type":"string"},"label":{"type":"string"},"steps":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}},"get":{"summary":"automatisierungsradar.list","tags":["automatisierungsradar"],"operationId":"automatisierungsradar_list","parameters":[{"$ref":"#/components/parameters/TokenQuery"},{"name":"gridOperatorId","in":"query","required":false,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"number"}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/automatisierungsradar/radars/:id":{"get":{"summary":"automatisierungsradar.get","tags":["automatisierungsradar"],"operationId":"automatisierungsradar_get","parameters":[{"$ref":"#/components/parameters/TokenQuery"},{"name":"id","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/battery-redispatch-special-gate/evaluate":{"post":{"summary":"Evaluate a battery storage Redispatch special gate","tags":["Battery Redispatch Special Gate"],"operationId":"battery_redispatch_special_gate_evaluate","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"assetId":{"type":"string"},"bessScreeningId":{"type":"string"},"maloDecision":{"type":"string"},"meloRefs":{"type":"string"},"meteringConceptId":{"type":"string"},"injectionDirection":{"type":"string"},"withdrawalDirection":{"type":"string"},"positiveRedispatchEligible":{"type":"boolean"},"negativeRedispatchEligible":{"type":"boolean"},"controllabilityDirection":{"type":"string"},"testCallLimitKw":{"type":"number"},"testCallProofRef":{"type":"string"},"productionProofConfirmed":{"type":"boolean"},"settlementReadiness":{"type":"string"},"clearingDecision":{"type":"string"},"billingDecision":{"type":"string"},"sourceActions":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}}},"/api/battery-redispatch-special-gate/gates":{"get":{"summary":"List battery Redispatch special gates","tags":["Battery Redispatch Special Gate"],"operationId":"battery_redispatch_special_gate_listGates","parameters":[{"in":"query","name":"assetId","schema":{"type":"string"}},{"in":"query","name":"limit","schema":{"type":"number"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/battery-redispatch-special-gate/gates/:gateId":{"get":{"summary":"Get a battery Redispatch special gate","tags":["Battery Redispatch Special Gate"],"operationId":"battery_redispatch_special_gate_getGate","parameters":[{"in":"path","name":"gateId","required":true,"schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/battery-redispatch-special-gate/:gateId/status":{"get":{"summary":"Get dossier-safe battery Redispatch special gate status","tags":["Battery Redispatch Special Gate"],"operationId":"battery_redispatch_special_gate_getStatus","parameters":[{"in":"path","name":"gateId","required":true,"schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/altdaten-assessment/assessments":{"post":{"summary":"altdaten-assessment.assess","tags":["altdaten-assessment"],"operationId":"altdaten_assessment_assess","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"gridOperatorId":{"type":"string"},"migrationProjectId":{"type":"string"},"templateName":{"type":"string"},"deviations":{"type":"string"},"label":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}},"get":{"summary":"altdaten-assessment.list","tags":["altdaten-assessment"],"operationId":"altdaten_assessment_list","parameters":[{"$ref":"#/components/parameters/TokenQuery"},{"name":"gridOperatorId","in":"query","required":false,"schema":{"type":"string"}},{"name":"migrationProjectId","in":"query","required":false,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"number"}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/altdaten-assessment/assessments/:id":{"get":{"summary":"altdaten-assessment.get","tags":["altdaten-assessment"],"operationId":"altdaten_assessment_get","parameters":[{"$ref":"#/components/parameters/TokenQuery"},{"name":"id","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/capex-prioritization/analyses":{"post":{"summary":"capex-prioritization.analyze","tags":["capex-prioritization"],"operationId":"capex_prioritization_analyze","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"gridOperatorId":{"type":"string"},"measures":{"type":"string"},"label":{"type":"string"},"urgencyDriver":{"type":"string"},"decisionFrameId":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}},"get":{"summary":"capex-prioritization.list","tags":["capex-prioritization"],"operationId":"capex_prioritization_list","parameters":[{"$ref":"#/components/parameters/TokenQuery"},{"name":"gridOperatorId","in":"query","required":false,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"number"}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/capex-prioritization/analyses/:id":{"get":{"summary":"capex-prioritization.get","tags":["capex-prioritization"],"operationId":"capex_prioritization_get","parameters":[{"$ref":"#/components/parameters/TokenQuery"},{"name":"id","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/flexibilitaetskosten-raster/grids":{"post":{"summary":"flexibilitaetskosten-raster.create","tags":["flexibilitaetskosten-raster"],"operationId":"flexibilitaetskosten_raster_create","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"gridOperatorId":{"type":"string"},"assetReference":{"type":"string"},"flexibilitySignals":{"type":"string"},"assetCapacityKw":{"type":"number"},"label":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}},"get":{"summary":"flexibilitaetskosten-raster.list","tags":["flexibilitaetskosten-raster"],"operationId":"flexibilitaetskosten_raster_list","parameters":[{"$ref":"#/components/parameters/TokenQuery"},{"name":"gridOperatorId","in":"query","required":false,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"number"}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/flexibilitaetskosten-raster/grids/:id":{"get":{"summary":"flexibilitaetskosten-raster.get","tags":["flexibilitaetskosten-raster"],"operationId":"flexibilitaetskosten_raster_get","parameters":[{"$ref":"#/components/parameters/TokenQuery"},{"name":"id","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/flexibility-conductor-role-model/evaluate":{"post":{"summary":"Evaluate flexibility orchestration role-model evidence","tags":["Flexibility Conductor Role Model"],"operationId":"flexibility_conductor_role_model_evaluate","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"processId":{"type":"string"},"flexAssetScope":{"type":"string"},"decisionRights":{"type":"string"},"operationalTasks":{"type":"string"},"dataSources":{"type":"string"},"controlCommandBoundary":{"type":"string"},"softwareMonitoringOwner":{"type":"string"},"commercialValueOwner":{"type":"string"},"escalationPath":{"type":"string"},"interfaces":{"type":"string"},"sourceActions":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}}},"/api/flexibility-conductor-role-model/models":{"get":{"summary":"List flexibility conductor role models","tags":["Flexibility Conductor Role Model"],"operationId":"flexibility_conductor_role_model_listModels","parameters":[{"in":"query","name":"processId","schema":{"type":"string"}},{"in":"query","name":"limit","schema":{"type":"number"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/flexibility-conductor-role-model/models/:roleModelId":{"get":{"summary":"Get a flexibility conductor role model","tags":["Flexibility Conductor Role Model"],"operationId":"flexibility_conductor_role_model_getModel","parameters":[{"in":"path","name":"roleModelId","required":true,"schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/flexibility-conductor-role-model/:processId/status":{"get":{"summary":"Get dossier-safe flexibility conductor role-model status","tags":["Flexibility Conductor Role Model"],"operationId":"flexibility_conductor_role_model_getStatus","parameters":[{"in":"path","name":"processId","required":true,"schema":{"type":"string"}},{"in":"query","name":"roleModelId","schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/gas-capacity-order-revision-gate/evaluate":{"post":{"summary":"Evaluate gas-capacity order revision evidence","tags":["Gas Capacity Order Revision Gate"],"operationId":"gas_capacity_order_revision_gate_evaluate","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"orderYear":{"type":"number"},"gridOperatorId":{"type":"string"},"nkpIds":{"type":"string"},"toolValueMwhPerDay":{"type":"number"},"securityMarkupPercent":{"type":"number"},"coldYearScenario":{"type":"string"},"industrialReboundScenario":{"type":"string"},"reversibleRlmLoads":{"type":"string"},"historicalBottleneckEvidence":{"type":"string"},"nkpDistribution":{"type":"string"},"tariffImpact":{"type":"string"},"pressureMaintenanceFlexibility":{"type":"string"},"maintenanceWindows":{"type":"string"},"decisionForum":{"type":"string"},"decisionStatus":{"type":"string"},"sourceActions":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}}},"/api/gas-capacity-order-revision-gate/revisions":{"get":{"summary":"List gas-capacity order revisions","tags":["Gas Capacity Order Revision Gate"],"operationId":"gas_capacity_order_revision_gate_listRevisions","parameters":[{"in":"query","name":"orderYear","schema":{"type":"number"}},{"in":"query","name":"gridOperatorId","schema":{"type":"string"}},{"in":"query","name":"limit","schema":{"type":"number"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/gas-capacity-order-revision-gate/revisions/:revisionId":{"get":{"summary":"Get a gas-capacity order revision","tags":["Gas Capacity Order Revision Gate"],"operationId":"gas_capacity_order_revision_gate_getRevision","parameters":[{"in":"path","name":"revisionId","required":true,"schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/gas-capacity-order-revision-gate/status":{"get":{"summary":"Get dossier-safe gas-capacity order revision status","tags":["Gas Capacity Order Revision Gate"],"operationId":"gas_capacity_order_revision_gate_getStatus","parameters":[{"in":"query","name":"revisionId","schema":{"type":"string"}},{"in":"query","name":"orderYear","schema":{"type":"number"}},{"in":"query","name":"gridOperatorId","schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/knowledge-continuity-governance-gate/evaluate":{"post":{"summary":"Evaluate knowledge-continuity governance evidence","tags":["Knowledge Continuity Governance Gate"],"operationId":"knowledge_continuity_governance_gate_evaluate","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"criticalProcessId":{"type":"string"},"processName":{"type":"string"},"mainFolderRef":{"type":"string"},"permissionOwner":{"type":"string"},"adminOwner":{"type":"string"},"guestAccessPolicy":{"type":"string"},"handoverDocumentRef":{"type":"string"},"chatMailBoundary":{"type":"string"},"retentionPolicy":{"type":"string"},"deletionDeadline":{"type":"string"},"itApprovalStatus":{"type":"string"},"roleChangeRisk":{"type":"string"},"blockedCapabilities":{"type":"string"},"evidenceRefs":{"type":"string"},"sourceActions":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}}},"/api/knowledge-continuity-governance-gate/gates":{"get":{"summary":"List knowledge-continuity governance gates","tags":["Knowledge Continuity Governance Gate"],"operationId":"knowledge_continuity_governance_gate_listGates","parameters":[{"in":"query","name":"criticalProcessId","schema":{"type":"string"}},{"in":"query","name":"limit","schema":{"type":"number"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/knowledge-continuity-governance-gate/gates/:governanceGateId":{"get":{"summary":"Get a knowledge-continuity governance gate","tags":["Knowledge Continuity Governance Gate"],"operationId":"knowledge_continuity_governance_gate_getGate","parameters":[{"in":"path","name":"governanceGateId","required":true,"schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/knowledge-continuity-governance-gate/:processId/status":{"get":{"summary":"Get dossier-safe knowledge-continuity governance status","tags":["Knowledge Continuity Governance Gate"],"operationId":"knowledge_continuity_governance_gate_getStatus","parameters":[{"in":"path","name":"processId","required":true,"schema":{"type":"string"}},{"in":"query","name":"criticalProcessId","schema":{"type":"string"}},{"in":"query","name":"governanceGateId","schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/redispatch-readiness-gate/evaluate":{"post":{"summary":"Evaluate Redispatch operational readiness","tags":["Redispatch Readiness Gate"],"operationId":"redispatch_readiness_gate_evaluate","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"processId":{"type":"string"},"accessMatrix":{"type":"string"},"testCallStatus":{"type":"string"},"productionProofConfirmed":{"type":"boolean"},"templateVersion":{"type":"string"},"requiredTemplateVersion":{"type":"string"},"openQuestions":{"type":"string"},"responsibleRole":{"type":"string"},"acceptanceDeadline":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}}},"/api/redispatch-readiness-gate/runs":{"get":{"summary":"List Redispatch readiness gate runs","tags":["Redispatch Readiness Gate"],"operationId":"redispatch_readiness_gate_listRuns","parameters":[{"in":"query","name":"processId","schema":{"type":"string"}},{"in":"query","name":"limit","schema":{"type":"number"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/redispatch-readiness-gate/runs/:id":{"get":{"summary":"Get Redispatch readiness gate run","tags":["Redispatch Readiness Gate"],"operationId":"redispatch_readiness_gate_getRun","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/redispatch-readiness-gate/status":{"get":{"summary":"Get latest Redispatch readiness status","tags":["Redispatch Readiness Gate"],"operationId":"redispatch_readiness_gate_getStatus","parameters":[{"in":"query","name":"processId","schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/investment-maturity-off-balance-gate/evaluate":{"post":{"summary":"Evaluate investment maturity off-balance evidence","tags":["Investment Maturity Off-Balance Gate"],"operationId":"investment_maturity_off_balance_gate_evaluate","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"investmentCaseId":{"type":"string"},"assetScope":{"type":"string"},"maturityLevel":{"type":"string"},"processQualityScore":{"type":"number"},"offBalanceStructure":{"type":"string"},"additionalFinancingCostEur":{"type":"number"},"regulatoryReturnHypothesis":{"type":"string"},"assetRiskReference":{"type":"string"},"isoRiskReference":{"type":"string"},"decisionForum":{"type":"string"},"decisionFrameId":{"type":"string"},"financeAnalysisId":{"type":"string"},"investmentPlanId":{"type":"string"},"sourceActions":{"type":"string"},"evidence":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}}},"/api/investment-maturity-off-balance-gate/gates":{"get":{"summary":"List investment maturity off-balance gates","tags":["Investment Maturity Off-Balance Gate"],"operationId":"investment_maturity_off_balance_gate_listGates","parameters":[{"in":"query","name":"investmentCaseId","schema":{"type":"string"}},{"in":"query","name":"limit","schema":{"type":"number"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/investment-maturity-off-balance-gate/gates/:gateId":{"get":{"summary":"Get an investment maturity off-balance gate","tags":["Investment Maturity Off-Balance Gate"],"operationId":"investment_maturity_off_balance_gate_getGate","parameters":[{"in":"path","name":"gateId","required":true,"schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/investment-maturity-off-balance-gate/status":{"get":{"summary":"Get dossier-safe investment maturity off-balance status","tags":["Investment Maturity Off-Balance Gate"],"operationId":"investment_maturity_off_balance_gate_getStatus","parameters":[{"in":"query","name":"gateId","schema":{"type":"string"}},{"in":"query","name":"investmentCaseId","schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/redispatch-data-governance/policies":{"post":{"summary":"Create a governance policy","tags":["Redispatch Data Governance"],"operationId":"redispatch_data_governance_createPolicy","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"dataClass":{"type":"string"},"processId":{"type":"string"},"deadlineClass":{"type":"string"},"calendarRule":{"type":"string"},"ownerType":{"type":"string"},"ownerRef":{"type":"string"},"assignmentMode":{"type":"string"},"severityOnMiss":{"type":"string"},"sourceOfRecordPriority":{"type":"string"},"policyVersion":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}},"get":{"summary":"List governance policies","tags":["Redispatch Data Governance"],"operationId":"redispatch_data_governance_listPolicies","parameters":[{"in":"query","name":"dataClass","schema":{"type":"string"}},{"in":"query","name":"processId","schema":{"type":"string"}},{"in":"query","name":"limit","schema":{"type":"number"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/redispatch-data-governance/policies/:id":{"get":{"summary":"Get policy by ID","tags":["Redispatch Data Governance"],"operationId":"redispatch_data_governance_getPolicy","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}},"put":{"summary":"Update policy by ID","tags":["Redispatch Data Governance"],"operationId":"redispatch_data_governance_updatePolicy","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"dataClass":{"type":"string"},"processId":{"type":"string"},"deadlineClass":{"type":"string"},"calendarRule":{"type":"string"},"ownerType":{"type":"string"},"ownerRef":{"type":"string"},"assignmentMode":{"type":"string"},"severityOnMiss":{"type":"string"},"sourceOfRecordPriority":{"type":"string"},"policyVersion":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}},"delete":{"summary":"Delete policy by ID","tags":["Redispatch Data Governance"],"operationId":"redispatch_data_governance_deletePolicy","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}}},"/api/redispatch-data-governance/evaluate":{"post":{"summary":"Evaluate governance status for a data class and process","tags":["Redispatch Data Governance"],"operationId":"redispatch_data_governance_evaluate","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"dataClass":{"type":"string"},"processId":{"type":"string"},"periodStart":{"type":"string"},"periodEnd":{"type":"string"},"fileMonitorStatus":{"type":"string"},"availableSources":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}}},"/api/redispatch-data-governance/evaluations":{"get":{"summary":"List governance evaluations","tags":["Redispatch Data Governance"],"operationId":"redispatch_data_governance_listEvaluations","parameters":[{"in":"query","name":"dataClass","schema":{"type":"string"}},{"in":"query","name":"processId","schema":{"type":"string"}},{"in":"query","name":"status","schema":{"type":"string"}},{"in":"query","name":"limit","schema":{"type":"number"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/re4de-variable-grid-fee/calculate":{"post":{"summary":"Calculate a Re4DE-aligned variable grid fee","tags":["Re4DE Variable Grid Fee"],"operationId":"re4de_variable_grid_fee_calculate","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"tariffSheet":{"type":"string"},"meteringInput":{"type":"string"},"section14aConfig":{"type":"string"},"sourceActions":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}}},"/api/re4de-variable-grid-fee/calculations/:calculationId":{"get":{"summary":"Get a variable grid-fee calculation","tags":["Re4DE Variable Grid Fee"],"operationId":"re4de_variable_grid_fee_getCalculation","parameters":[{"in":"path","name":"calculationId","required":true,"schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/re4de-variable-grid-fee/calculations/:calculationId/evidence":{"get":{"summary":"Get dossier-safe evidence for a variable grid-fee calculation","tags":["Re4DE Variable Grid Fee"],"operationId":"re4de_variable_grid_fee_getEvidence","parameters":[{"in":"path","name":"calculationId","required":true,"schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/reporting-governance/checks":{"post":{"summary":"reporting-governance.check","tags":["reporting-governance"],"operationId":"reporting_governance_check","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"gridOperatorId":{"type":"string"},"dataSources":{"type":"string"},"reportPermissionMatrix":{"type":"string"},"label":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}},"get":{"summary":"reporting-governance.list","tags":["reporting-governance"],"operationId":"reporting_governance_list","parameters":[{"$ref":"#/components/parameters/TokenQuery"},{"name":"gridOperatorId","in":"query","required":false,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"number"}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/reporting-governance/checks/:id":{"get":{"summary":"reporting-governance.get","tags":["reporting-governance"],"operationId":"reporting_governance_get","parameters":[{"$ref":"#/components/parameters/TokenQuery"},{"name":"id","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/vdmi-governance-templates/templates":{"get":{"summary":"vdmi-governance-templates.listBaseTemplates","tags":["vdmi-governance-templates"],"operationId":"vdmi_governance_templates_listBaseTemplates","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/vdmi-governance-templates/instances":{"post":{"summary":"vdmi-governance-templates.instantiate","tags":["vdmi-governance-templates"],"operationId":"vdmi_governance_templates_instantiate","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"gridOperatorId":{"type":"string"},"templateType":{"type":"string"},"projectId":{"type":"string"},"label":{"type":"string"},"roleAssignments":{"type":"string"},"evidenceStatus":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}},"get":{"summary":"vdmi-governance-templates.listInstances","tags":["vdmi-governance-templates"],"operationId":"vdmi_governance_templates_listInstances","parameters":[{"$ref":"#/components/parameters/TokenQuery"},{"name":"gridOperatorId","in":"query","required":false,"schema":{"type":"string"}},{"name":"templateType","in":"query","required":false,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"number"}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/vdmi-governance-templates/instances/:id":{"get":{"summary":"vdmi-governance-templates.getInstance","tags":["vdmi-governance-templates"],"operationId":"vdmi_governance_templates_getInstance","parameters":[{"$ref":"#/components/parameters/TokenQuery"},{"name":"id","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/reinvest-signal/analyses":{"post":{"summary":"reinvest-signal.analyze","tags":["reinvest-signal"],"operationId":"reinvest_signal_analyze","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"gridOperatorId":{"type":"string"},"logEntries":{"type":"string"},"label":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}},"get":{"summary":"reinvest-signal.list","tags":["reinvest-signal"],"operationId":"reinvest_signal_list","parameters":[{"$ref":"#/components/parameters/TokenQuery"},{"name":"gridOperatorId","in":"query","required":false,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"number"}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/reinvest-signal/analyses/:id":{"get":{"summary":"reinvest-signal.get","tags":["reinvest-signal"],"operationId":"reinvest_signal_get","parameters":[{"$ref":"#/components/parameters/TokenQuery"},{"name":"id","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/domain-routes":{"get":{"summary":"domain-routes.list","tags":["domain-routes"],"operationId":"domain_routes_list","parameters":[{"$ref":"#/components/parameters/TokenQuery"},{"name":"includeStatic","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"includeDrafts","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"includeActive","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"includeStatic","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"includeDrafts","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"includeActive","in":"query","required":false,"schema":{"type":"boolean"}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/domain-routes/:id":{"get":{"summary":"domain-routes.get","tags":["domain-routes"],"operationId":"domain_routes_get","parameters":[{"$ref":"#/components/parameters/TokenQuery"},{"name":"id","in":"query","required":false,"schema":{"type":"string"}},{"name":"id","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/domain-routes/drafts":{"post":{"summary":"domain-routes.createDraft","tags":["domain-routes"],"operationId":"domain_routes_createDraft","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"route":{"type":"string"},"testCases":{"type":"string"},"version":{"type":"string"},"createdBy":{"type":"string"},"notes":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}}},"/api/domain-routes/:id/validate":{"post":{"summary":"domain-routes.validate","tags":["domain-routes"],"operationId":"domain_routes_validate","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}}},"/api/domain-routes/:id/test":{"post":{"summary":"domain-routes.test","tags":["domain-routes"],"operationId":"domain_routes_test","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}}},"/api/domain-routes/:id/promote":{"post":{"summary":"domain-routes.promote","tags":["domain-routes"],"operationId":"domain_routes_promote","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"promotedBy":{"type":"string"},"allowWarnings":{"type":"boolean"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}}},"/api/domain-routes/:id/rollback":{"post":{"summary":"domain-routes.rollback","tags":["domain-routes"],"operationId":"domain_routes_rollback","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"rolledBackBy":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}}},"/api/domain-routes/:id/deactivate":{"post":{"summary":"domain-routes.deactivate","tags":["domain-routes"],"operationId":"domain_routes_deactivate","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}}},"/api/domain-routes/reload":{"post":{"summary":"domain-routes.reload","tags":["domain-routes"],"operationId":"domain_routes_reload","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}}},"/api/agent-receipts":{"post":{"summary":"Create an agent receipt","tags":["Agent Receipts"],"operationId":"agent_receipts_create","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"Creates a runtime-managed receipt with validated schema and auditable lifecycle metadata.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["receiptId","title","description","domain","matching","toolPlan"],"properties":{"receiptId":{"type":"string","example":"bess-screening-v1"},"title":{"type":"string","example":"BESS Screening Baseline"},"description":{"type":"string"},"domain":{"type":"string","example":"grid-operations"},"tags":{"type":"array","items":{"type":"string"}},"matching":{"type":"object"},"requiredInputs":{"type":"array","items":{"type":"string"}},"toolPlan":{"type":"object"},"knowledgeQueries":{"type":"array","items":{"type":"object"}},"knowledgeEvidencePolicy":{"type":"object"},"knowledgePlan":{"type":"object"},"evidencePolicy":{"type":"object"},"forbiddenInferences":{"type":"array","items":{"type":"string"}},"responsePolicy":{"type":"object"},"defaults":{"type":"object"},"metadata":{"type":"object"},"status":{"type":"string","enum":["draft","active","deprecated","archived"]},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}}}}}},"get":{"summary":"List agent receipts","tags":["Agent Receipts"],"operationId":"agent_receipts_list","parameters":[{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["draft","active","deprecated","archived"]}},{"name":"domain","in":"query","required":false,"schema":{"type":"string"}},{"name":"tag","in":"query","required":false,"schema":{"type":"string"}},{"name":"includeArchived","in":"query","required":false,"schema":{"type":"boolean","default":false}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":200,"default":50}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/agent-receipts/select":{"post":{"summary":"Select a runtime receipt for Personal Agent orchestration","tags":["Agent Receipts"],"operationId":"agent_receipts_select","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","example":"Wer ist der zuständige VNB in Trier?"},"question":{"type":"string","example":"Wer ist der zuständige Netzbetreiber?"},"knownContext":{"type":"object","default":{},"example":{"city":"Wiesloch"}},"context":{"type":"object","default":{},"example":{}},"input":{"type":"object","default":{},"example":{}},"city":{"type":"string","example":"Wiesloch"},"bdewCode":{"type":"string","example":"9900992720003"},"vnbName":{"type":"string","example":"STROMDAO Netze GmbH"},"forceReceipt":{"type":"string","example":"vnb-lookup-v1"},"preferredReceipts":{"type":"array","items":{"type":"string"},"example":["vnb-lookup-v1","grid-ops-fallback-v1"]},"allowDraftReceipts":{"type":"boolean","default":false},"explainReceiptSelection":{"type":"boolean","default":false},"disableReceiptSelection":{"type":"boolean","default":false},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"preferredMatching":{"summary":"Prefer a list of receipts with diagnostics enabled","value":{"message":"Bitte finde den zuständigen VNB in Trier.","preferredReceipts":["vnb-lookup-v1","grid-ops-fallback-v1"],"explainReceiptSelection":true}}}}}}}},"/api/agent-receipts/:id":{"get":{"summary":"Get an agent receipt by id","tags":["Agent Receipts"],"operationId":"agent_receipts_get","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","example":"bess-screening-v1"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}},"put":{"summary":"Update an agent receipt","tags":["Agent Receipts"],"operationId":"agent_receipts_update","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"patch":{"type":"string"},"_rev":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}},"delete":{"summary":"Archive an agent receipt (soft delete)","tags":["Agent Receipts"],"operationId":"agent_receipts_archive","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"reason":{"type":"string"},"_rev":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}}},"/api/agent-receipts/:id/status":{"post":{"summary":"Set receipt lifecycle status","tags":["Agent Receipts"],"operationId":"agent_receipts_setStatus","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","example":"bess-screening-v1"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"Transitions a receipt between lifecycle statuses. Transitioning to active requires full-access scope or ROLE_RECEIPT_PROMOTER (#289), same as promote.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["status"],"properties":{"status":{"type":"string","enum":["draft","active","deprecated","archived"]},"reason":{"type":"string"},"_rev":{"type":"string","nullable":true},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}}}}}}},"/api/agent-receipts/propose":{"post":{"summary":"Propose a new draft receipt (governed learning loop)","tags":["Agent Receipts"],"operationId":"agent_receipts_proposeDraft","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"Creates a receipt in draft status only. Chat and automated flows must use this path instead of create. The receipt is pending review and must be explicitly promoted before becoming active.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["receiptId","title","description","domain","matching","toolPlan"],"properties":{"receiptId":{"type":"string","example":"vnb-lookup-v2"},"title":{"type":"string"},"description":{"type":"string"},"domain":{"type":"string"},"tags":{"type":"array","items":{"type":"string"}},"matching":{"type":"object"},"requiredInputs":{"type":"array","items":{"type":"string"}},"toolPlan":{"type":"object"},"creatorId":{"type":"string","nullable":true,"description":"Identity of the creator (user id, agent name, etc)."},"creatorSource":{"type":"string","enum":["chat","admin","api","seed"],"default":"api","description":"Origin of the proposal. Chat-originated proposals must use chat."},"changeReason":{"type":"string","description":"Optional human-readable reason for this proposal."},"supersedes":{"type":"string","description":"Optional receiptId of an active receipt this draft intends to supersede upon promotion."},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}}}}}}},"/api/agent-receipts/:id/promote":{"post":{"summary":"Promote a draft receipt to active (explicit review gate)","tags":["Agent Receipts"],"operationId":"agent_receipts_promote","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","example":"vnb-lookup-v2"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"Transitions a draft receipt to active. Requires promotedBy identity. Validates the receipt fully before promotion. Optionally auto-deprecates a superseded active receipt. Requires _rev for CAS conflict protection. Caller must have full-access scope or ROLE_RECEIPT_PROMOTER (#289).","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["promotedBy"],"properties":{"promotedBy":{"type":"string","description":"Identity of the reviewer who approved promotion.","example":"admin@example.com"},"changeReason":{"type":"string"},"supersedes":{"type":"string","description":"Optional receiptId of an active receipt to auto-deprecate on promotion. Falls back to supersedes field stored on the draft."},"_rev":{"type":"string","nullable":true,"description":"CAS revision token. Prevents concurrent promotion race conditions."},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}}}}}}},"/api/agent-receipts/validate":{"post":{"summary":"Validate receipt payload or persisted receipt","tags":["Agent Receipts"],"operationId":"agent_receipts_validate","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"bess-screening-v1"},"receipt":{"type":"object"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}}}}}}},"/api/agent-receipts/:id/validate":{"post":{"summary":"Validate a persisted receipt with optional live registry checks","tags":["Agent Receipts"],"operationId":"agent_receipts_validateStored","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","example":"mastr-asset-inventory-by-location"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}}}}}}},"/api/agent-receipts/evaluate":{"post":{"summary":"Evaluate receipt match and execution plan without running tools","tags":["Agent Receipts"],"operationId":"agent_receipts_evaluate","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"receipt":{"type":"string"},"context":{"type":"string"},"input":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}}},"/api/agent-receipts/:id/evaluate":{"post":{"summary":"Evaluate persisted receipt by id","tags":["Agent Receipts"],"operationId":"agent_receipts_evaluateStored","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","example":"mastr-asset-inventory-by-location"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}}}}}}},"/api/agent-receipts/test":{"post":{"summary":"Test receipt planning and return runnable execution details","tags":["Agent Receipts"],"operationId":"agent_receipts_test","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"receipt":{"type":"string"},"context":{"type":"string"},"input":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}}},"/api/agent-receipts/:id/test":{"post":{"summary":"Test persisted receipt by id","tags":["Agent Receipts"],"operationId":"agent_receipts_testStored","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","example":"mastr-asset-inventory-by-location"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}}}}}}},"/api/agent-receipts/explain":{"post":{"summary":"Explain why a receipt matched or failed and what would run","tags":["Agent Receipts"],"operationId":"agent_receipts_explain","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"receipt":{"type":"string"},"context":{"type":"string"},"input":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}}},"/api/agent-receipts/:id/explain":{"post":{"summary":"Explain persisted receipt by id","tags":["Agent Receipts"],"operationId":"agent_receipts_explainStored","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","example":"mastr-asset-inventory-by-location"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}}}}}}},"/api/redispatch-special-case-gate/evaluate":{"post":{"summary":"Evaluate special case gate for an asset","tags":["Redispatch Special Case Gate"],"operationId":"redispatch_special_case_gate_evaluate","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"mastrId":{"type":"string"},"periodStart":{"type":"string"},"periodEnd":{"type":"string"},"coLocationCheck":{"type":"boolean"},"controllabilityCheck":{"type":"boolean"},"nonAvailabilityCheck":{"type":"boolean"},"deviationTolerancePct":{"type":"number"},"nonAvailabilityEvidenceRefs":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}}},"/api/redispatch-special-case-gate/runs":{"get":{"summary":"List gate evaluation runs","tags":["Redispatch Special Case Gate"],"operationId":"redispatch_special_case_gate_listRuns","parameters":[{"in":"query","name":"mastrId","schema":{"type":"string"}},{"in":"query","name":"status","schema":{"type":"string"}},{"in":"query","name":"limit","schema":{"type":"number"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/redispatch-special-case-gate/runs/:id":{"get":{"summary":"Get gate run by ID","tags":["Redispatch Special Case Gate"],"operationId":"redispatch_special_case_gate_getRun","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/vnb-100-tage-assessment/assessments":{"post":{"summary":"vnb-100-tage-assessment.assess","tags":["vnb-100-tage-assessment"],"operationId":"vnb_100_tage_assessment_assess","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"gridOperatorId":{"type":"string"},"kpiValues":{"type":"string"},"roiMeasures":{"type":"string"},"forbiddenAssumptions":{"type":"string"},"assessorRole":{"type":"string"},"label":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}},"get":{"summary":"vnb-100-tage-assessment.list","tags":["vnb-100-tage-assessment"],"operationId":"vnb_100_tage_assessment_list","parameters":[{"$ref":"#/components/parameters/TokenQuery"},{"name":"gridOperatorId","in":"query","required":false,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"number"}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/vnb-100-tage-assessment/assessments/:id":{"get":{"summary":"vnb-100-tage-assessment.get","tags":["vnb-100-tage-assessment"],"operationId":"vnb_100_tage_assessment_get","parameters":[{"$ref":"#/components/parameters/TokenQuery"},{"name":"id","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/dossier-hydration":{"get":{"summary":"dossier-hydration.list","tags":["dossier-hydration"],"operationId":"dossier_hydration_list","parameters":[{"$ref":"#/components/parameters/TokenQuery"},{"name":"includeStatic","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"includeDrafts","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"includeActive","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"includeStatic","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"includeDrafts","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"includeActive","in":"query","required":false,"schema":{"type":"boolean"}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/dossier-hydration/:id":{"get":{"summary":"dossier-hydration.get","tags":["dossier-hydration"],"operationId":"dossier_hydration_get","parameters":[{"$ref":"#/components/parameters/TokenQuery"},{"name":"id","in":"query","required":false,"schema":{"type":"string"}},{"name":"id","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/dossier-hydration/drafts":{"post":{"summary":"dossier-hydration.createDraft","tags":["dossier-hydration"],"operationId":"dossier_hydration_createDraft","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"rule":{"type":"string"},"testCases":{"type":"string"},"version":{"type":"string"},"createdBy":{"type":"string"},"notes":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}}},"/api/dossier-hydration/:id/validate":{"post":{"summary":"dossier-hydration.validate","tags":["dossier-hydration"],"operationId":"dossier_hydration_validate","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}}},"/api/dossier-hydration/:id/test":{"post":{"summary":"dossier-hydration.test","tags":["dossier-hydration"],"operationId":"dossier_hydration_test","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}}},"/api/dossier-hydration/:id/promote":{"post":{"summary":"dossier-hydration.promote","tags":["dossier-hydration"],"operationId":"dossier_hydration_promote","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"promotedBy":{"type":"string"},"allowWarnings":{"type":"boolean"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}}},"/api/dossier-hydration/:id/rollback":{"post":{"summary":"dossier-hydration.rollback","tags":["dossier-hydration"],"operationId":"dossier_hydration_rollback","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"rolledBackBy":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}}},"/api/dossier-hydration/:id/deactivate":{"post":{"summary":"dossier-hydration.deactivate","tags":["dossier-hydration"],"operationId":"dossier_hydration_deactivate","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}}},"/api/dossier-hydration/reload":{"post":{"summary":"dossier-hydration.reload","tags":["dossier-hydration"],"operationId":"dossier_hydration_reload","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}}},"/api/bess-screening/screenings":{"post":{"summary":"bess-screening.screen","tags":["bess-screening"],"operationId":"bess_screening_screen","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"gridOperatorId":{"type":"string"},"powerKw":{"type":"number"},"energyKwh":{"type":"number"},"location":{"type":"string"},"vnbMastrId":{"type":"string"},"vnbMastrIdVerified":{"type":"boolean"},"networkTerritory":{"type":"string"},"networkTerritoryVerified":{"type":"boolean"},"voltageLevel":{"type":"string"},"voltageLevelVerified":{"type":"boolean"},"netzverknuepfungspunkt":{"type":"string"},"netzverknuepfungspunktVerified":{"type":"boolean"},"bottleneckContext":{"type":"string"},"bottleneckContextVerified":{"type":"boolean"},"projectDescription":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}},"get":{"summary":"bess-screening.list","tags":["bess-screening"],"operationId":"bess_screening_list","parameters":[{"$ref":"#/components/parameters/TokenQuery"},{"name":"gridOperatorId","in":"query","required":false,"schema":{"type":"string"}},{"name":"evidenceReadiness","in":"query","required":false,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"number"}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/bess-screening/screenings/:id":{"get":{"summary":"bess-screening.get","tags":["bess-screening"],"operationId":"bess_screening_get","parameters":[{"$ref":"#/components/parameters/TokenQuery"},{"name":"id","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/agnes-bottleneck/assessments":{"post":{"summary":"agnes-bottleneck.assess","tags":["agnes-bottleneck"],"operationId":"agnes_bottleneck_assess","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"gridOperatorId":{"type":"string"},"networkElements":{"type":"string"},"fnavContracts":{"type":"string"},"agnesConfig":{"type":"string"},"label":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}},"get":{"summary":"agnes-bottleneck.list","tags":["agnes-bottleneck"],"operationId":"agnes_bottleneck_list","parameters":[{"$ref":"#/components/parameters/TokenQuery"},{"name":"gridOperatorId","in":"query","required":false,"schema":{"type":"string"}},{"name":"overallSeverity","in":"query","required":false,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"number"}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/agnes-bottleneck/assessments/:id":{"get":{"summary":"agnes-bottleneck.get","tags":["agnes-bottleneck"],"operationId":"agnes_bottleneck_get","parameters":[{"$ref":"#/components/parameters/TokenQuery"},{"name":"id","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/connection-rejection-evidence/packages":{"post":{"summary":"connection-rejection-evidence.create","tags":["connection-rejection-evidence"],"operationId":"connection_rejection_evidence_create","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"gridOperatorId":{"type":"string"},"applicantReference":{"type":"string"},"loadAssumptionKw":{"type":"number"},"netzverknuepfungspunktId":{"type":"string"},"voltageLevel":{"type":"string"},"bottleneckDescription":{"type":"string"},"n1QualityStatus":{"type":"string"},"decision":{"type":"string"},"expansionPathDescription":{"type":"string"},"fnavOption":{"type":"string"},"redispatchOption":{"type":"string"},"decisionRationale":{"type":"string"},"conditions":{"type":"string"},"internalReference":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}},"get":{"summary":"connection-rejection-evidence.list","tags":["connection-rejection-evidence"],"operationId":"connection_rejection_evidence_list","parameters":[{"$ref":"#/components/parameters/TokenQuery"},{"name":"gridOperatorId","in":"query","required":false,"schema":{"type":"string"}},{"name":"decision","in":"query","required":false,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"number"}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/connection-rejection-evidence/packages/:id":{"get":{"summary":"connection-rejection-evidence.get","tags":["connection-rejection-evidence"],"operationId":"connection_rejection_evidence_get","parameters":[{"$ref":"#/components/parameters/TokenQuery"},{"name":"id","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/e2e-connection-check/checks":{"post":{"summary":"e2e-connection-check.create","tags":["e2e-connection-check"],"operationId":"e2e_connection_check_create","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"gridOperatorId":{"type":"string"},"projectName":{"type":"string"},"powerKw":{"type":"number"},"applicantReference":{"type":"string"},"location":{"type":"string"},"threads":{"type":"string"},"includeGasInterface":{"type":"boolean"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}},"get":{"summary":"e2e-connection-check.list","tags":["e2e-connection-check"],"operationId":"e2e_connection_check_list","parameters":[{"$ref":"#/components/parameters/TokenQuery"},{"name":"gridOperatorId","in":"query","required":false,"schema":{"type":"string"}},{"name":"overallStatus","in":"query","required":false,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"number"}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/e2e-connection-check/checks/:id/threads/:threadId":{"patch":{"summary":"e2e-connection-check.updateThread","tags":["e2e-connection-check"],"operationId":"e2e_connection_check_updateThread","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"threadId":{"type":"string"},"status":{"type":"string"},"nextDataPoint":{"type":"string"},"dueDate":{"type":"string"},"note":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}}},"/api/e2e-connection-check/checks/:id":{"get":{"summary":"e2e-connection-check.get","tags":["e2e-connection-check"],"operationId":"e2e_connection_check_get","parameters":[{"$ref":"#/components/parameters/TokenQuery"},{"name":"id","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/redispatch-asset-register/projections":{"post":{"summary":"Create an asset projection with deterministic finding checks","tags":["Redispatch Asset Register"],"operationId":"redispatch_asset_register_createProjection","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"mastrId":{"type":"string"},"technicalResourceId":{"type":"string"},"controllableResourceId":{"type":"string"},"maloId":{"type":"string"},"meloId":{"type":"string"},"operatorEvidenceRef":{"type":"string"},"energyCarrier":{"type":"string"},"capacityKw":{"type":"number"},"sourceArtifactRefs":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}},"get":{"summary":"List asset projections","tags":["Redispatch Asset Register"],"operationId":"redispatch_asset_register_listProjections","parameters":[{"in":"query","name":"mastrId","schema":{"type":"string"}},{"in":"query","name":"hasConflict","schema":{"type":"boolean"}},{"in":"query","name":"limit","schema":{"type":"number"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/redispatch-asset-register/projections/:id":{"get":{"summary":"Get asset projection by ID","tags":["Redispatch Asset Register"],"operationId":"redispatch_asset_register_getProjection","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/redispatch-asset-register/relationships":{"post":{"summary":"Create an asset relationship","tags":["Redispatch Asset Register"],"operationId":"redispatch_asset_register_createRelationship","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"assetIdA":{"type":"string"},"assetIdB":{"type":"string"},"relationshipType":{"type":"string"},"evidenceRefs":{"type":"string"},"notes":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}},"get":{"summary":"List asset relationships","tags":["Redispatch Asset Register"],"operationId":"redispatch_asset_register_listRelationships","parameters":[{"in":"query","name":"assetId","schema":{"type":"string"}},{"in":"query","name":"relationshipType","schema":{"type":"string"}},{"in":"query","name":"limit","schema":{"type":"number"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/redispatch-asset-register/relationships/:id":{"get":{"summary":"Get relationship by ID","tags":["Redispatch Asset Register"],"operationId":"redispatch_asset_register_getRelationship","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}},"delete":{"summary":"Delete relationship by ID","tags":["Redispatch Asset Register"],"operationId":"redispatch_asset_register_deleteRelationship","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}}},"/api/fnav-commercial-hedging/contracts":{"post":{"summary":"fnav-commercial-hedging.createContract","tags":["fnav-commercial-hedging"],"operationId":"fnav_commercial_hedging_createContract","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"gridOperatorId":{"type":"string"},"mastrNummer":{"type":"string"},"installedCapacityKw":{"type":"number"},"minimumGuaranteedPowerKw":{"type":"number"},"compensationRateEurPerMwh":{"type":"number"},"annualCompensationCapEur":{"type":"number"},"netzverknuepfungspunktId":{"type":"string"},"voltageLevel":{"type":"string"},"contractStartDate":{"type":"string"},"contractEndDate":{"type":"string"},"status":{"type":"string"},"label":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}},"get":{"summary":"fnav-commercial-hedging.listContracts","tags":["fnav-commercial-hedging"],"operationId":"fnav_commercial_hedging_listContracts","parameters":[{"$ref":"#/components/parameters/TokenQuery"},{"name":"gridOperatorId","in":"query","required":false,"schema":{"type":"string"}},{"name":"status","in":"query","required":false,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"number"}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/fnav-commercial-hedging/scenarios":{"post":{"summary":"fnav-commercial-hedging.createScenario","tags":["fnav-commercial-hedging"],"operationId":"fnav_commercial_hedging_createScenario","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"gridOperatorId":{"type":"string"},"contractId":{"type":"string"},"scenarioName":{"type":"string"},"expectedAnnualCurtailmentHours":{"type":"number"},"expectedCurtailmentDepthPct":{"type":"number"},"electricityMarketPriceEurPerMwh":{"type":"number"},"scenarioDescription":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}},"get":{"summary":"fnav-commercial-hedging.listScenarios","tags":["fnav-commercial-hedging"],"operationId":"fnav_commercial_hedging_listScenarios","parameters":[{"$ref":"#/components/parameters/TokenQuery"},{"name":"gridOperatorId","in":"query","required":false,"schema":{"type":"string"}},{"name":"contractId","in":"query","required":false,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"number"}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/gasnetz-waermeplanung/reconciliations":{"post":{"summary":"gasnetz-waermeplanung.reconcile","tags":["gasnetz-waermeplanung"],"operationId":"gasnetz_waermeplanung_reconcile","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"gridOperatorId":{"type":"string"},"municipalityKey":{"type":"string"},"planningYear":{"type":"number"},"label":{"type":"string"},"segments":{"type":"string"},"heatZones":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}},"get":{"summary":"gasnetz-waermeplanung.list","tags":["gasnetz-waermeplanung"],"operationId":"gasnetz_waermeplanung_list","parameters":[{"$ref":"#/components/parameters/TokenQuery"},{"name":"gridOperatorId","in":"query","required":false,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"number"}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/gasnetz-waermeplanung/reconciliations/:id":{"get":{"summary":"gasnetz-waermeplanung.get","tags":["gasnetz-waermeplanung"],"operationId":"gasnetz_waermeplanung_get","parameters":[{"$ref":"#/components/parameters/TokenQuery"},{"name":"id","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/ghost-asset-alert/scans":{"post":{"summary":"ghost-asset-alert.scan","tags":["ghost-asset-alert"],"operationId":"ghost_asset_alert_scan","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"gridOperatorId":{"type":"string"},"installations":{"type":"string"},"networkPolygons":{"type":"string"},"distanceThresholdKm":{"type":"number"},"minGeoConfidence":{"type":"number"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}},"get":{"summary":"ghost-asset-alert.list","tags":["ghost-asset-alert"],"operationId":"ghost_asset_alert_list","parameters":[{"$ref":"#/components/parameters/TokenQuery"},{"name":"gridOperatorId","in":"query","required":false,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"number"}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/ghost-asset-alert/scans/:id":{"get":{"summary":"ghost-asset-alert.get","tags":["ghost-asset-alert"],"operationId":"ghost_asset_alert_get","parameters":[{"$ref":"#/components/parameters/TokenQuery"},{"name":"id","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/ghost-asset-alert/scans/:id/edm-actions":{"post":{"summary":"ghost-asset-alert.forwardToEdm","tags":["ghost-asset-alert"],"operationId":"ghost_asset_alert_forwardToEdm","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}}},"/api/nova/pending-decisions":{"get":{"summary":"List pending NOVA decisions (dynamic)","tags":["NOVA"],"operationId":"nova_pendingDecisions","parameters":[{"in":"query","name":"projectId","required":true,"schema":{"type":"string","example":"a1b2c3d4-0000-0000-0000-000000000001"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"Analyses the project graph and returns dynamic NOVA decisions using O/V heuristics (Q(U) optimization and rONT reinforcement)."}},"/api/nova/apply/:id":{"post":{"summary":"Apply NOVA decision","tags":["NOVA"],"operationId":"nova_apply","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"Applies a dynamic NOVA decision to the in-memory ZNP graph, persists the update, and emits znp.project.updated for SSE consumers.","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","required":["projectId","id"],"properties":{"projectId":{"type":"string","example":"a1b2c3d4-0000-0000-0000-000000000001"},"id":{"type":"string","example":"dec_a1b2c3d4_SUB_1_QU"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"value":{"projectId":"a1b2c3d4-0000-0000-0000-000000000001","id":"dec_a1b2c3d4_SUB_1_QU"}}}}}}}},"/api/nova/decisions":{"get":{"summary":"List NOVA decisions","tags":["NOVA"],"operationId":"nova_listDecisions","parameters":[{"in":"query","name":"projectId","required":true,"schema":{"type":"string","example":"a1b2c3d4-0000-0000-0000-000000000001"}},{"in":"query","name":"status","required":false,"schema":{"type":"string","example":"pending_approval"}},{"in":"query","name":"kind","required":false,"schema":{"type":"string","example":"threshold_update"}},{"in":"query","name":"limit","required":false,"schema":{"type":"integer","default":50}},{"in":"query","name":"cursor","required":false,"schema":{"type":"string","example":"eyJwaXZvdCI6Ii4uLiJ9"}},{"in":"query","name":"offset","required":false,"schema":{"type":"integer","default":0}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/nova/decisions/:id":{"get":{"summary":"Get NOVA decision by id","tags":["NOVA"],"operationId":"nova_getDecision","parameters":[{"in":"query","name":"projectId","required":true,"schema":{"type":"string","example":"a1b2c3d4-0000-0000-0000-000000000001"}},{"in":"path","name":"id","required":true,"schema":{"type":"string","example":"dec_a1b2c3d4_SUB_1_QU"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/nova/decisions/:id/approve":{"post":{"summary":"Approve NOVA decision","tags":["NOVA"],"operationId":"nova_approveDecision","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","required":["projectId","id"],"properties":{"projectId":{"type":"string","example":"a1b2c3d4-0000-0000-0000-000000000001"},"id":{"type":"string","example":"dec_a1b2c3d4_SUB_1_QU"},"comment":{"type":"string","example":"Approved via HITL"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"value":{"projectId":"a1b2c3d4-0000-0000-0000-000000000001","id":"dec_a1b2c3d4_SUB_1_QU","comment":"Approved via HITL"}}}}}}}},"/api/nova/decisions/:id/reject":{"post":{"summary":"Reject NOVA decision","tags":["NOVA"],"operationId":"nova_rejectDecision","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","required":["projectId","id"],"properties":{"projectId":{"type":"string","example":"a1b2c3d4-0000-0000-0000-000000000001"},"id":{"type":"string","example":"dec_a1b2c3d4_SUB_1_QU"},"reason":{"type":"string","example":"Insufficient evidence"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"value":{"projectId":"a1b2c3d4-0000-0000-0000-000000000001","id":"dec_a1b2c3d4_SUB_1_QU","reason":"Insufficient evidence"}}}}}}}},"/api/nova/decisions/stats":{"get":{"summary":"NOVA decision status counts","tags":["NOVA"],"operationId":"nova_decisionStats","parameters":[{"in":"query","name":"projectId","required":true,"schema":{"type":"string","example":"a1b2c3d4-0000-0000-0000-000000000001"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/nova/decisions/:id/replay-trigger":{"post":{"summary":"Replay NOVA decision trigger source (async)","tags":["NOVA"],"operationId":"nova_replayTrigger","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"202":{"description":"Replay accepted as async job"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","required":["projectId","id"],"properties":{"projectId":{"type":"string","example":"a1b2c3d4-0000-0000-0000-000000000001"},"id":{"type":"string","example":"dec_a1b2c3d4_SUB_1_QU"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"value":{"projectId":"a1b2c3d4-0000-0000-0000-000000000001","id":"dec_a1b2c3d4_SUB_1_QU"}}}}}}}},"/api/nova/stream":{"get":{"summary":"NOVA realtime stream (SSE)","tags":["NOVA"],"operationId":"nova_stream","parameters":[{"in":"query","name":"projectId","required":false,"schema":{"type":"string","example":"a1b2c3d4-0000-0000-0000-000000000001"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"Server-Sent Events endpoint with tenant isolation and optional project-scoped filtering."}},"/api/netzkoppelvertrag-workflow/contracts":{"post":{"summary":"netzkoppelvertrag-workflow.create","tags":["netzkoppelvertrag-workflow"],"operationId":"netzkoppelvertrag_workflow_create","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"gridOperatorId":{"type":"string"},"counterpartyId":{"type":"string"},"interconnectionPointId":{"type":"string"},"label":{"type":"string"},"technicalData":{"type":"string"},"deadlines":{"type":"string"},"openItems":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}},"get":{"summary":"netzkoppelvertrag-workflow.list","tags":["netzkoppelvertrag-workflow"],"operationId":"netzkoppelvertrag_workflow_list","parameters":[{"$ref":"#/components/parameters/TokenQuery"},{"name":"gridOperatorId","in":"query","required":false,"schema":{"type":"string"}},{"name":"status","in":"query","required":false,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"number"}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/netzkoppelvertrag-workflow/contracts/:id/status":{"patch":{"summary":"netzkoppelvertrag-workflow.updateStatus","tags":["netzkoppelvertrag-workflow"],"operationId":"netzkoppelvertrag_workflow_updateStatus","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string"},"note":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}}},"/api/netzkoppelvertrag-workflow/contracts/:id":{"get":{"summary":"netzkoppelvertrag-workflow.get","tags":["netzkoppelvertrag-workflow"],"operationId":"netzkoppelvertrag_workflow_get","parameters":[{"$ref":"#/components/parameters/TokenQuery"},{"name":"id","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/nkp-reporting/imports":{"post":{"summary":"nkp-reporting.importReport","tags":["nkp-reporting"],"operationId":"nkp_reporting_importReport","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"gridOperatorId":{"type":"string"},"nkpId":{"type":"string"},"nkpLabel":{"type":"string"},"reportRows":{"type":"string"},"reportPeriodStart":{"type":"string"},"reportPeriodEnd":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}},"get":{"summary":"nkp-reporting.list","tags":["nkp-reporting"],"operationId":"nkp_reporting_list","parameters":[{"$ref":"#/components/parameters/TokenQuery"},{"name":"gridOperatorId","in":"query","required":false,"schema":{"type":"string"}},{"name":"nkpId","in":"query","required":false,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"number"}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/nkp-reporting/imports/:id":{"get":{"summary":"nkp-reporting.get","tags":["nkp-reporting"],"operationId":"nkp_reporting_get","parameters":[{"$ref":"#/components/parameters/TokenQuery"},{"name":"id","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/redispatch-settlement-sandbox/scenarios":{"post":{"summary":"Create a settlement scenario","tags":["Redispatch Settlement Sandbox"],"operationId":"redispatch_settlement_sandbox_createScenario","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"gridOperatorId":{"type":"string"},"periodStart":{"type":"string"},"periodEnd":{"type":"string"},"settlementMethod":{"type":"string"},"inputArtifactRefs":{"type":"string"},"datapointRefs":{"type":"string"},"policyVersion":{"type":"string"},"parentScenarioId":{"type":"string"},"notes":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}},"get":{"summary":"List settlement scenarios","tags":["Redispatch Settlement Sandbox"],"operationId":"redispatch_settlement_sandbox_listScenarios","parameters":[{"in":"query","name":"gridOperatorId","schema":{"type":"string"}},{"in":"query","name":"periodStart","schema":{"type":"string"}},{"in":"query","name":"status","schema":{"type":"string"}},{"in":"query","name":"limit","schema":{"type":"number"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/redispatch-settlement-sandbox/scenarios/:id":{"get":{"summary":"Get scenario by ID","tags":["Redispatch Settlement Sandbox"],"operationId":"redispatch_settlement_sandbox_getScenario","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/redispatch-settlement-sandbox/scenarios/:id/reconcile":{"post":{"summary":"Reconcile a settlement scenario","tags":["Redispatch Settlement Sandbox"],"operationId":"redispatch_settlement_sandbox_reconcile","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}}},"/api/redispatch-settlement-sandbox/scenarios/:id/download":{"get":{"summary":"Download scenario as JSON or text summary","tags":["Redispatch Settlement Sandbox"],"operationId":"redispatch_settlement_sandbox_downloadScenario","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"query","name":"format","schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/vdmi-portfolio-gatekeeping/gate":{"post":{"summary":"vdmi-portfolio-gatekeeping.gate","tags":["vdmi-portfolio-gatekeeping"],"operationId":"vdmi_portfolio_gatekeeping_gate","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"gridOperatorId":{"type":"string"},"proposalTitle":{"type":"string"},"assetIds":{"type":"string"},"estimatedCostEur":{"type":"number"},"budgetCeilingEur":{"type":"number"},"technicalFeasibilityConfirmed":{"type":"boolean"},"regulatoryAlignmentConfirmed":{"type":"boolean"},"forbiddenAssumptions":{"type":"string"},"notes":{"type":"string"},"decisionFrameId":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}}},"/api/vdmi-portfolio-gatekeeping/proposals":{"get":{"summary":"vdmi-portfolio-gatekeeping.list","tags":["vdmi-portfolio-gatekeeping"],"operationId":"vdmi_portfolio_gatekeeping_list","parameters":[{"$ref":"#/components/parameters/TokenQuery"},{"name":"gridOperatorId","in":"query","required":false,"schema":{"type":"string"}},{"name":"decision","in":"query","required":false,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"number"}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/vdmi-portfolio-gatekeeping/proposals/:id":{"get":{"summary":"vdmi-portfolio-gatekeeping.get","tags":["vdmi-portfolio-gatekeeping"],"operationId":"vdmi_portfolio_gatekeeping_get","parameters":[{"$ref":"#/components/parameters/TokenQuery"},{"name":"id","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/regulatorische-entgeltlogik/rule-sets":{"post":{"summary":"regulatorische-entgeltlogik.registerRuleSet","tags":["regulatorische-entgeltlogik"],"operationId":"regulatorische_entgeltlogik_registerRuleSet","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"gridOperatorId":{"type":"string"},"ruleType":{"type":"string"},"effectiveFrom":{"type":"string"},"effectiveTo":{"type":"string"},"label":{"type":"string"},"legalBasis":{"type":"string"},"formulaDefinition":{"type":"string"},"testCases":{"type":"string"},"changeJustification":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}},"get":{"summary":"regulatorische-entgeltlogik.list","tags":["regulatorische-entgeltlogik"],"operationId":"regulatorische_entgeltlogik_list","parameters":[{"$ref":"#/components/parameters/TokenQuery"},{"name":"gridOperatorId","in":"query","required":false,"schema":{"type":"string"}},{"name":"ruleType","in":"query","required":false,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"number"}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/regulatorische-entgeltlogik/active":{"get":{"summary":"regulatorische-entgeltlogik.getActive","tags":["regulatorische-entgeltlogik"],"operationId":"regulatorische_entgeltlogik_getActive","parameters":[{"$ref":"#/components/parameters/TokenQuery"},{"name":"gridOperatorId","in":"query","required":false,"schema":{"type":"string"}},{"name":"ruleType","in":"query","required":false,"schema":{"type":"string"}},{"name":"referenceDate","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/regulatorische-entgeltlogik/rule-sets/:id":{"get":{"summary":"regulatorische-entgeltlogik.get","tags":["regulatorische-entgeltlogik"],"operationId":"regulatorische_entgeltlogik_get","parameters":[{"$ref":"#/components/parameters/TokenQuery"},{"name":"id","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/vdmi":{"get":{"summary":"List VDMI matrix instances","tags":["VDMI"],"operationId":"vdmi_list","parameters":[{"name":"status","in":"query","schema":{"type":"string","example":"active"}},{"name":"processType","in":"query","schema":{"type":"string","example":"adhoc"}},{"name":"nominationStatus","in":"query","schema":{"type":"string","example":"pending"}},{"name":"limit","in":"query","schema":{"type":"integer","default":50,"maximum":200}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}},"post":{"summary":"Create an ad-hoc VDMI matrix","tags":["VDMI"],"operationId":"vdmi_create","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["name"],"properties":{"processId":{"type":"string","example":"job-123"},"processType":{"type":"string","default":"adhoc","example":"adhoc"},"name":{"type":"string","example":"Netzanschluss-Genehmigung PV"},"scope":{"type":"string","example":"§8 NAV Anschlussprozess"},"tasks":{"type":"array","items":{"type":"object"},"example":[]},"regulatoryBasis":{"type":"array","items":{"type":"string"},"example":["§8 NAV"]},"promotionThreshold":{"type":"integer","example":10},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"value":{"processId":"job-123","processType":"adhoc","name":"Netzanschluss-Genehmigung PV","scope":"§8 NAV Anschlussprozess","tasks":[],"regulatoryBasis":["§8 NAV"],"promotionThreshold":10}}}}}}}},"/api/vdmi/:id":{"get":{"summary":"Get one VDMI matrix instance","tags":["VDMI"],"operationId":"vdmi_get","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","example":"abc123"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}},"patch":{"summary":"Human override of matrix fields","tags":["VDMI"],"operationId":"vdmi_update","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","example":"abc123"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["reason"],"properties":{"reason":{"type":"string"},"patch":{"type":"object"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}}}}}}},"/api/vdmi/detect":{"post":{"summary":"Infer VDMI roles from event sequence","tags":["VDMI"],"operationId":"vdmi_detect","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["events"],"properties":{"processId":{"type":"string","example":"job-123"},"processType":{"type":"string","example":"grid-connection-approval"},"name":{"type":"string","example":"Auto Netzanschluss"},"events":{"type":"array","example":[{"eventName":"agent.plan.step.executed","payload":{"serviceId":"grid-connection"}}],"items":{"type":"object","properties":{"eventName":{"type":"string","example":"hitl.item.created"},"timestamp":{"type":"string","format":"date-time"},"payload":{"type":"object"}}}},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"value":{"processId":"job-123","processType":"grid-connection-approval","name":"Auto Netzanschluss","events":[{"eventName":"agent.plan.step.executed","payload":{"serviceId":"grid-connection"}},{"eventName":"hitl.item.created","payload":{"approver":"grid_operator"}}]}}}}}}}},"/api/vdmi/templates":{"get":{"summary":"List standard VDMI templates","tags":["VDMI"],"operationId":"vdmi_templates","parameters":[{"name":"limit","in":"query","schema":{"type":"integer","default":50}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/vdmi/audit":{"get":{"summary":"Get VDMI audit events","tags":["VDMI"],"operationId":"vdmi_audit","parameters":[{"name":"limit","in":"query","schema":{"type":"integer","default":100}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/vdmi/nominations":{"get":{"summary":"List nomination requests","tags":["VDMI"],"operationId":"vdmi_nominations","parameters":[{"name":"status","in":"query","schema":{"type":"string","example":"pending"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/vdmi/:id/nominate":{"post":{"summary":"Nominate ad-hoc matrix as standard template candidate","tags":["VDMI"],"operationId":"vdmi_nominate","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","example":"abc123"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["reason"],"properties":{"reason":{"type":"string","example":"Muster stabil über 10 Fälle"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"value":{"reason":"Muster stabil über 10 Fälle"}}}}}}}},"/api/vdmi/:id/confirm-nomination":{"post":{"summary":"Confirm or reject nomination and optionally create standard template","tags":["VDMI"],"operationId":"vdmi_confirmNomination","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","example":"abc123"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["reason"],"properties":{"approved":{"type":"boolean","default":true},"reason":{"type":"string","example":"HITL bestätigt Standardprozess"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"value":{"approved":true,"reason":"HITL bestätigt Standardprozess"}}}}}}}},"/api/vdmi/my-responsibilities":{"get":{"summary":"List matrices where caller has V role","tags":["VDMI"],"operationId":"vdmi_myResponsibilities","parameters":[{"name":"userId","in":"query","schema":{"type":"string","example":"grid_operator"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/vdmi/my-informed":{"get":{"summary":"List matrices where caller has I role","tags":["VDMI"],"operationId":"vdmi_myInformed","parameters":[{"name":"userId","in":"query","schema":{"type":"string","example":"applicant"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/vdmi/agent/:agentId/role":{"get":{"summary":"Return guardrail role for an agent","tags":["VDMI"],"operationId":"vdmi_agentRole","parameters":[{"name":"agentId","in":"path","required":true,"schema":{"type":"string","example":"technical"}},{"name":"processType","in":"query","schema":{"type":"string","example":"adhoc"}},{"name":"taskId","in":"query","schema":{"type":"string","example":"network-operator-decision"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/vdmi/context":{"get":{"summary":"Get active matrix context for a running job","tags":["VDMI"],"operationId":"vdmi_context","parameters":[{"name":"jobId","in":"query","required":true,"schema":{"type":"string","example":"job-123"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/vdmi/:id/revert":{"post":{"summary":"Revert matrix to previous version snapshot","tags":["VDMI"],"operationId":"vdmi_revert","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","example":"abc123"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["reason"],"properties":{"reason":{"type":"string","example":"Rollback nach Governance-Review"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"value":{"reason":"Rollback nach Governance-Review"}}}}}}}},"/api/vdmi/:id/evidence":{"post":{"summary":"Inject manual evidence for offline process reality","tags":["VDMI"],"operationId":"vdmi_evidence","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","example":"abc123"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["reason","type","reference"],"properties":{"reason":{"type":"string","example":"Telefonischer Freigabenachweis"},"type":{"type":"string","example":"aktenvermerk"},"reference":{"type":"string","example":"AZ-2026-0042"},"content":{"type":"object","example":{"note":"Entscheid am Telefon bestätigt"}},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"value":{"reason":"Telefonischer Freigabenachweis","type":"aktenvermerk","reference":"AZ-2026-0042","content":{"note":"Entscheid am Telefon bestätigt"}}}}}}}}},"/api/vdmi/tasks/:taskId/negotiation-trace":{"get":{"summary":"Get full A2A negotiation trace for one task","tags":["VDMI"],"operationId":"vdmi_negotiationTrace","parameters":[{"name":"taskId","in":"path","required":true,"schema":{"type":"string","example":"task-01"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/vdmi/tasks/:taskId/dossier":{"get":{"summary":"Get condensed decision dossier for V role","tags":["VDMI"],"operationId":"vdmi_dossier","parameters":[{"name":"taskId","in":"path","required":true,"schema":{"type":"string","example":"task-01"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/vdmi/findings":{"get":{"summary":"List VDMI governance findings","tags":["VDMI"],"operationId":"vdmi_findings","parameters":[{"name":"severity","in":"query","schema":{"type":"string","example":"H"}},{"name":"status","in":"query","schema":{"type":"string","example":"open"}},{"name":"code","in":"query","schema":{"type":"string","example":"VD_GOV_RECURRENCE_K"}},{"name":"limit","in":"query","schema":{"type":"integer","default":100}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/vdmi/findings/:findingId/mitigate":{"post":{"summary":"Submit mitigation plan for a VDMI finding","tags":["VDMI"],"operationId":"vdmi_mitigateFinding","parameters":[{"name":"findingId","in":"path","required":true,"schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["owner","dueAt","plan"],"properties":{"owner":{"type":"string","example":"grid-lead"},"dueAt":{"type":"string","format":"date-time","example":"2026-12-31T00:00:00.000Z"},"plan":{"type":"string","example":"Ablösung des Schattenpfads durch API-Integration"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"value":{"owner":"grid-lead","dueAt":"2026-12-31T00:00:00.000Z","plan":"Ablösung des Schattenpfads durch API-Integration"}}}}}}}},"/api/vdmi/findings/:findingId/resolve":{"post":{"summary":"Resolve a VDMI finding","tags":["VDMI"],"operationId":"vdmi_resolveFinding","parameters":[{"name":"findingId","in":"path","required":true,"schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["reason"],"properties":{"reason":{"type":"string","example":"Integration abgeschlossen"},"evidenceRef":{"type":"string","example":"ticket-123"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"value":{"reason":"Integration abgeschlossen","evidenceRef":"ticket-123"}}}}}}}},"/api/assets/:assetId/override":{"post":{"summary":"Create persistent asset override","tags":["Assets"],"operationId":"assets_override","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"Creates a tenant-scoped asset override with provenance hash. Critical fields are persisted with `pendingApproval` and linked HITL item.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["assetId","field","value","reason"],"properties":{"assetId":{"type":"string","example":"SEE900123456789"},"mastrNummer":{"type":"string","example":"SEE900123456789"},"field":{"type":"string","example":"capacityKW"},"value":{"example":1250},"reason":{"type":"string","example":"Manual correction from operator"},"approvedBy":{"type":"string","enum":["user","agent"],"example":"user"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"value":{"assetId":"SEE900123456789","field":"capacityKW","value":1250,"reason":"Manual correction from operator","approvedBy":"user"}}}}}}}},"/api/assets/:assetId/overrides":{"get":{"summary":"List all overrides for an asset","tags":["Assets"],"operationId":"assets_overrides","parameters":[{"name":"assetId","in":"path","required":true,"schema":{"type":"string","example":"SEE900123456789"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/assets/:assetId/effective":{"get":{"summary":"Get effective asset view (MaStR + applied overrides)","tags":["Assets"],"operationId":"assets_effective","parameters":[{"name":"assetId","in":"path","required":true,"schema":{"type":"string","example":"SEE900123456789"}},{"name":"vnbName","in":"query","schema":{"type":"string","example":"STROMDAO Netze"}},{"name":"bdewCode","in":"query","schema":{"type":"string","example":"9907473000008"}},{"name":"gridOperatorId","in":"query","schema":{"type":"string","example":"SNB935578300972"}},{"name":"location","in":"query","schema":{"type":"string","example":"Ludwigshafen"}},{"name":"assetType","in":"query","schema":{"type":"string","enum":["solar","wind","storage","biomass","hydro","combustion","all"],"default":"all"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/assets/:assetId/overrides/:id/apply":{"post":{"summary":"Apply a persisted override after approval","tags":["Assets"],"operationId":"assets_applyOverride","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","required":["assetId","id"],"properties":{"assetId":{"type":"string","example":"SEE900123456789"},"id":{"type":"string","example":"ovr_SEE900123456789_1a2b3c4d"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"value":{"assetId":"SEE900123456789","id":"ovr_SEE900123456789_1a2b3c4d"}}}}}}}},"/api/assets/:assetId/overrides/:id":{"delete":{"summary":"Soft-revert an override","tags":["Assets"],"operationId":"assets_removeOverride","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"assetId":{"type":"string"},"id":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}}},"/api/assets/list":{"get":{"summary":"List assets of a distribution network operator (DNO/DSO)","tags":["Assets"],"operationId":"assets_list","parameters":[{"name":"vnbName","in":"query","schema":{"type":"string","example":"Netze BW"},"description":"Name of the distribution network operator (fuzzy matching supported)"},{"name":"bdewCode","in":"query","schema":{"type":"string","example":"4041407000008"},"description":"BDEW code (13 digits) - more precise than name"},{"name":"gridOperatorId","in":"query","schema":{"type":"string","example":"SNB948311994307"},"description":"MaStR grid operator ID (SNB/GNB format) - direct ID without resolution"},{"name":"assetType","in":"query","required":true,"schema":{"type":"string","enum":["solar","wind","storage","biomass","hydro","combustion"],"example":"solar"},"description":"Asset type: solar (PV), wind, storage (battery), biomass (biogas), hydro (hydropower), combustion"},{"name":"location","in":"query","schema":{"type":"string","example":"Heidelberg"},"description":"City/region/postal code for geographic filtering (optional)"},{"name":"commissioningYear","in":"query","schema":{"type":"number","example":2020},"description":"Filter by commissioning year (optional)"},{"name":"minCapacityKW","in":"query","schema":{"type":"number","example":100},"description":"Minimum capacity in kW (optional)"},{"name":"maxCapacityKW","in":"query","schema":{"type":"number","example":10000},"description":"Maximum capacity in kW (optional)"},{"name":"limit","in":"query","schema":{"type":"number","default":1000,"example":1000},"description":"Max. number of results. Default: **1,000**. Use a high value (e.g. `1000000`) or `all` for the complete result set — the server paginates internally."},{"name":"offset","in":"query","schema":{"type":"number","default":0,"minimum":0,"example":0},"description":"Pagination offset — number of records to skip. Use with `limit` to page through large result sets (e.g. `offset=1000&limit=1000` fetches records 1,001–2,000)."},{"name":"redispatch","in":"query","schema":{"type":"boolean","example":true},"description":"Redispatch 2.0 filter: Only installations ≥100kW (automatically sets minCapacityKW=100)"},{"name":"operationalStatus","in":"query","schema":{"type":"string","default":"35","example":"35"},"description":"Operational status: 31=Planned, 35=In operation (default), 37=Temporarily decommissioned, 38=Permanently decommissioned, all=All statuses"},{"name":"netzbetreiberPruefungStatus","in":"query","schema":{"type":"string","example":"2955"},"description":"Filter by grid operator verification status code(s), comma-separated. Values: 2954=Geprüft ✅, 2955=In Prüfung ⏳, 3075=Nicht vorgesehen."},{"name":"includeNapData","in":"query","schema":{"type":"boolean","default":true,"example":true},"description":"Include NAP data (Netzanschlusspunkt): MeLo, voltage level, grid bottleneck capacity. Default: true. Set to false to speed up large queries."},{"name":"updatedAfter","in":"query","schema":{"type":"string","format":"date","example":"2026-03-24"},"description":"ISO date (YYYY-MM-DD or full ISO 8601). Returns only installations where DatumLetzteMeldung (MaStR last-notification date) is after this date. Useful for incremental sync."},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"List of installations with complete MaStR data","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"SEE Nummer":{"type":"string","description":"MaStR unit ID (SEE/SBE/SWE format)","example":"SEE913735587817"},"Einheit Systemstatus":{"type":"string","nullable":true,"description":"System status of the unit"},"Betreiber":{"type":"string","description":"Name of the installation operator","example":"PVA Langenenslingen"},"Marktaktuer MaStR":{"type":"string","nullable":true,"description":"MaStR ID of direct marketer"},"Marktakteuer Name":{"type":"string","nullable":true,"description":"Name of direct marketer"},"Marktakteur Adresse":{"type":"string","nullable":true,"description":"Address of direct marketer"},"Netzbetreiber MaStR":{"type":"string","nullable":true,"description":"MaStR ID of grid operator"},"Netzbetreiber Name":{"type":"string","nullable":true,"description":"Name of grid operator"},"Anlagentyp":{"type":"string","description":"Type of installation","enum":["solar","wind","storage","biomass","hydro","combustion"]},"Leistung MW":{"type":"number","description":"Gross capacity in megawatts (MW)","example":80.3088},"Leistung kW":{"type":"number","description":"Gross capacity in kilowatts (kW)","example":80308.8},"Wechselrichterleistung":{"type":"number","nullable":true,"description":"Inverter capacity in kW (PV/storage only)"},"Technologie":{"type":"string","description":"Technology type (e.g., solar, wind)","example":"solar"},"Speicherkapazität":{"type":"number","nullable":true,"description":"Usable storage capacity in kWh (storage only)"},"C_Rate":{"type":"number","nullable":true,"description":"C-Rate for storage (power/capacity)"},"AC Nennleistung":{"type":"number","nullable":true,"description":"AC nominal power in kW (storage only)"},"DC Nennleistung":{"type":"number","nullable":true,"description":"DC nominal power in kW (storage only)"},"Batterietechnologie":{"type":"string","nullable":true,"description":"Battery technology type (storage only)"},"Hersteller Batteriemodule":{"type":"string","nullable":true,"description":"Battery module manufacturer (storage only)"},"Hauptausrichtung":{"type":"string","nullable":true,"description":"Main orientation (solar only, e.g., Süd, Ost-West)"},"Neigungswinkel":{"type":"number","nullable":true,"description":"Tilt angle in degrees (solar only)"},"Leistungsbegrenzung":{"type":"string","nullable":true,"description":"Power limitation (solar only)"},"Nabenhöhe":{"type":"number","nullable":true,"description":"Hub height in meters (wind only)"},"Rotordurchmesser":{"type":"number","nullable":true,"description":"Rotor diameter in meters (wind only)"},"Hersteller":{"type":"string","nullable":true,"description":"Manufacturer (wind only)"},"Typenbezeichnung":{"type":"string","nullable":true,"description":"Type designation (wind only)"},"Betriebsstatus":{"type":"string","description":"Operational status code: 31=Planned, 35=In operation, 37=Temporarily decommissioned, 38=Permanently decommissioned","example":"35","nullable":true},"Betriebsstatus Name":{"type":"string","description":"Operational status name in German","example":"In Betrieb","nullable":true},"Datum Netzzugang":{"type":"string","format":"date","description":"Commissioning date (ISO 8601)","example":"2025-05-27"},"Registrierungsdatum":{"type":"string","format":"date","nullable":true,"description":"Registration date"},"Genehmigungsdatum":{"type":"string","format":"date","nullable":true,"description":"Approval date"},"Kopplung":{"type":"string","nullable":true,"description":"AC/DC coupling (storage only)"},"Einspeiseart":{"type":"string","nullable":true,"description":"Feed-in type (e.g., full feed-in, surplus feed-in)","example":"Überschusseinspeisung"},"Spannungsebene":{"type":"string","nullable":true,"description":"Voltage level (NS/MS/HS)"},"Fernsteuerbarkeit":{"type":"string","nullable":true,"description":"Remote controllability"},"Einsatzverantwortlicher":{"type":"string","nullable":true,"description":"Deployment responsible party"},"Postleitzahl":{"type":"string","nullable":true,"description":"Postal code of installation location","example":"88515"},"Ort":{"type":"string","nullable":true,"description":"City of installation location","example":"Langenenslingen"},"Gemeinde":{"type":"string","nullable":true,"description":"Municipality of installation location","example":"Langenenslingen"},"Landkreis":{"type":"string","nullable":true,"description":"District of installation location","example":"Biberach"},"Bundesland":{"type":"string","nullable":true,"description":"Federal state code","example":"1402"},"Längengrad":{"type":"number","nullable":true,"description":"Longitude coordinate"},"Breitengrad":{"type":"number","nullable":true,"description":"Latitude coordinate"},"Fläche":{"type":"number","nullable":true,"description":"Used area in m²"},"Anzahl Module":{"type":"number","nullable":true,"description":"Number of modules (solar only)"},"Leistung je Modul":{"type":"number","nullable":true,"description":"Power per module in W (solar only)"},"Netzbetreiberpruefung Status":{"type":"number","nullable":true,"description":"Grid operator review status code: 2954=Geprüft, 2955=In Prüfung, 3075=Nicht vorgesehen, null=older record","example":2954},"Netzbetreiberpruefung Status Name":{"type":"string","nullable":true,"description":"Grid operator review status label: Geprüft / In Prüfung / Nicht vorgesehen","example":"Geprüft"},"NAP MaStR Nummer":{"type":"string","nullable":true,"description":"MaStR ID of the grid connection point (SAN format)","example":"SAN914634531048"},"Messlokation (MeLo)":{"type":"string","nullable":true,"description":"Metering location ID (DE..., 33 chars)","example":"DE0003976706990000000000000073131"},"Spannungsebene NAP":{"type":"string","nullable":true,"description":"Voltage level at grid connection: Niederspannung / Mittelspannung / Hochspannung / Höchstspannung","example":"Niederspannung (LV)"},"Nettoengpassleistung kW":{"type":"number","nullable":true,"description":"Net bottleneck capacity in kW at grid connection point","example":6.15},"Netz MaStR Nummer":{"type":"string","nullable":true,"description":"MaStR ID of the connected grid (SNE format)","example":"SNE985057905075"},"Netzbetreiber NAP MaStR":{"type":"string","nullable":true,"description":"MaStR ID of the grid operator at the connection point (SNB format)","example":"SNB935578300972"}},"required":["SEE Nummer","Betreiber","Anlagentyp","Leistung MW","Technologie"]}},"examples":{"netze_bw_solar":{"summary":"Netze BW - Solar installations >100kW","value":[{"SEE Nummer":"SEE913735587817","Betreiber":"PVA Langenenslingen","Anlagentyp":"solar","Leistung MW":80.3088,"Datum Netzzugang":"2025-05-27","Technologie":"solar","Einspeiseart":"Überschusseinspeisung","Postleitzahl":"88515","Ort":"Langenenslingen","Gemeinde":"Langenenslingen","Landkreis":"Biberach","Bundesland":"1402"}]}}}}},"400":{"description":"Invalid parameters (missing grid operator details or invalid assetType)"},"500":{"description":"Internal server error during MaStR query"}},"description":"Retrieves complete installation data from the German Marktstammdatenregister (MaStR). Supports filtering by grid operator (BDEW code or name), asset type, capacity, commissioning year, and operational status. **Default behavior: Only active installations (status 35 - In operation) are returned.** No pagination required - can retrieve millions of installations."}},"/api/assets/solar":{"get":{"summary":"List solar PV installations by grid operator or location","tags":["Assets"],"operationId":"assets_solar","parameters":[{"name":"vnbName","in":"query","schema":{"type":"string","example":"Netze BW"},"description":"Name of grid operator"},{"name":"bdewCode","in":"query","schema":{"type":"string","example":"4041407000008"},"description":"BDEW code (13 digits)"},{"name":"gridOperatorId","in":"query","schema":{"type":"string","example":"SNB948311994307"},"description":"MaStR grid operator ID"},{"name":"location","in":"query","schema":{"type":"string","example":"Heidelberg"},"description":"City/region/postal code for location-based search (e.g. \"Mainz\", \"69115\", \"Baden-Württemberg\"). Live MaStR filtering only supports an exact 5-digit postal code; a free-text city/region name that cannot be resolved to one does NOT return a bare empty array — the response includes a `locationResolutionWarning` instead (see response schema). Pass the postal code directly when known.. Supports city-style queries like \"Wie viele PV Anlagen gibt es in <Ort>?\"."},{"name":"commissioningYear","in":"query","schema":{"type":"number","example":2020},"description":"Commissioning year"},{"name":"minCapacityKW","in":"query","schema":{"type":"number","example":100},"description":"Min. capacity in kW"},{"name":"maxCapacityKW","in":"query","schema":{"type":"number","example":10000},"description":"Max. capacity in kW"},{"name":"limit","in":"query","schema":{"type":"number","default":1000,"example":1000},"description":"Max. number of results. Default: **1,000**. Use a high value (e.g. `1000000`) or `all` for the complete result set — the server paginates internally."},{"name":"offset","in":"query","schema":{"type":"number","default":0,"minimum":0,"example":0},"description":"Pagination offset — skip this many records. Use `offset=1000` to fetch the next page."},{"name":"redispatch","in":"query","schema":{"type":"boolean","example":true},"description":"Redispatch 2.0 filter (≥100kW)"},{"name":"operationalStatus","in":"query","schema":{"type":"string","default":"35","example":"35"},"description":"Operational status: 31=Planned, 35=In operation (default), 37=Temporarily decommissioned, 38=Permanently decommissioned, all=All statuses"},{"name":"netzbetreiberPruefungStatus","in":"query","schema":{"type":"string","example":"2955"},"description":"Filter by grid operator verification status code(s), comma-separated. Values: 2954=Geprüft ✅, 2955=In Prüfung ⏳, 3075=Nicht vorgesehen."},{"name":"includeNapData","in":"query","schema":{"type":"boolean","default":true},"description":"Include NAP data (MeLo, voltage level, bottleneck capacity). Default: true"},{"name":"updatedAfter","in":"query","schema":{"type":"string","format":"date","example":"2026-03-24"},"description":"ISO date — only installations with lastUpdatedAt (DatumLetzteMeldung) after this date."},{"name":"format","in":"query","schema":{"type":"string","enum":["json","csv","xlsx"],"default":"json"},"description":"Output format (default: json)"},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Array of matching installations, OR — when `location` was a free-text city/region that could not be resolved to a postal code (#274) — an object reporting that resolution failure instead of a bare empty array. A bare `[]` always means a genuinely empty, location-resolved result set; count/aggregation for the array case can be derived via response length (`array.length`).","content":{"application/json":{"schema":{"oneOf":[{"type":"array","items":{"type":"object","additionalProperties":true,"properties":{"Asset-ID":{"type":"string"},"SEE Nummer":{"type":"string"},"Anlagentyp":{"type":"string"},"Leistung kW":{"type":"number"},"Ort":{"type":"string","nullable":true},"Postleitzahl":{"type":"string","nullable":true},"Bundesland":{"type":"string","nullable":true}}}},{"type":"object","description":"Returned instead of a bare array when `location` could not be resolved to an exact postal code. Never confuse this with \"0 assets found\" — re-issue the request with a 5-digit postal code.","required":["success","data","locationResolutionWarning"],"properties":{"success":{"type":"boolean","example":true},"data":{"type":"array","items":{"type":"object","additionalProperties":true,"properties":{"Asset-ID":{"type":"string"},"SEE Nummer":{"type":"string"},"Anlagentyp":{"type":"string"},"Leistung kW":{"type":"number"},"Ort":{"type":"string","nullable":true},"Postleitzahl":{"type":"string","nullable":true},"Bundesland":{"type":"string","nullable":true}}}},"locationResolutionWarning":{"type":"string","example":"Location \"Meckesheim\" could not be resolved to a postal code. The live MaStR backend only supports exact 5-digit postleitzahl filtering, not free-text city/region search. Pass \"postleitzahl\" directly, or resolve the postal code first (e.g. via grid-operations.marketPartners or OSM Geo)."}}}]}}}},"400":{"description":"Invalid parameters (at least one of vnbName, bdewCode, gridOperatorId or location is required)."},"500":{"description":"Internal server error during MaStR query."}},"description":"Retrieves photovoltaic installations from MaStR by grid operator context (`vnbName`, `bdewCode`, `gridOperatorId`) or directly by `location` (city/region/postal code). **Default: Only active installations (status 35).** Count semantics: this endpoint returns an array. For questions like \"How many ...\", use the number of returned items (`array.length`). Example: /api/assets/solar?location=Mainz"}},"/api/assets/wind":{"get":{"summary":"List wind installations by grid operator or location","tags":["Assets"],"operationId":"assets_wind","parameters":[{"name":"vnbName","in":"query","schema":{"type":"string","example":"Netze BW"},"description":"Name of grid operator"},{"name":"bdewCode","in":"query","schema":{"type":"string","example":"4041407000008"},"description":"BDEW code (13 digits)"},{"name":"gridOperatorId","in":"query","schema":{"type":"string","example":"SNB948311994307"},"description":"MaStR grid operator ID"},{"name":"location","in":"query","schema":{"type":"string","example":"Heidelberg"},"description":"City/region/postal code for location-based search (e.g. \"Mainz\", \"69115\", \"Baden-Württemberg\"). Live MaStR filtering only supports an exact 5-digit postal code; a free-text city/region name that cannot be resolved to one does NOT return a bare empty array — the response includes a `locationResolutionWarning` instead (see response schema). Pass the postal code directly when known.. Supports city-style queries like \"Wie viele Windanlagen gibt es in <Ort>?\"."},{"name":"commissioningYear","in":"query","schema":{"type":"number","example":2020},"description":"Commissioning year"},{"name":"minCapacityKW","in":"query","schema":{"type":"number","example":100},"description":"Min. capacity in kW"},{"name":"maxCapacityKW","in":"query","schema":{"type":"number","example":10000},"description":"Max. capacity in kW"},{"name":"limit","in":"query","schema":{"type":"number","default":1000,"example":1000},"description":"Max. number of results. Default: **1,000**. Use a high value (e.g. `1000000`) or `all` for the complete result set — the server paginates internally."},{"name":"offset","in":"query","schema":{"type":"number","default":0,"minimum":0,"example":0},"description":"Pagination offset — skip N records to fetch the next page."},{"name":"redispatch","in":"query","schema":{"type":"boolean","example":true},"description":"Redispatch 2.0 (≥100kW)"},{"name":"operationalStatus","in":"query","schema":{"type":"string","default":"35","example":"35"},"description":"Operational status: 31=Planned, 35=In operation (default), 37=Temporarily decommissioned, 38=Permanently decommissioned, all=All"},{"name":"netzbetreiberPruefungStatus","in":"query","schema":{"type":"string","example":"2955"},"description":"Filter by grid operator verification status code(s), comma-separated. Values: 2954=Geprüft ✅, 2955=In Prüfung ⏳, 3075=Nicht vorgesehen."},{"name":"includeNapData","in":"query","schema":{"type":"boolean","default":true},"description":"Include NAP data (MeLo, voltage level, bottleneck capacity). Default: true"},{"name":"updatedAfter","in":"query","schema":{"type":"string","format":"date","example":"2026-03-24"},"description":"ISO date — only installations with lastUpdatedAt (DatumLetzteMeldung) after this date."},{"name":"format","in":"query","schema":{"type":"string","enum":["json","csv","xlsx"],"default":"json"},"description":"Output format (default: json)"},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Array of matching installations, OR — when `location` was a free-text city/region that could not be resolved to a postal code (#274) — an object reporting that resolution failure instead of a bare empty array. A bare `[]` always means a genuinely empty, location-resolved result set; count/aggregation for the array case can be derived via response length (`array.length`).","content":{"application/json":{"schema":{"oneOf":[{"type":"array","items":{"type":"object","additionalProperties":true,"properties":{"Asset-ID":{"type":"string"},"SEE Nummer":{"type":"string"},"Anlagentyp":{"type":"string"},"Leistung kW":{"type":"number"},"Ort":{"type":"string","nullable":true},"Postleitzahl":{"type":"string","nullable":true},"Bundesland":{"type":"string","nullable":true}}}},{"type":"object","description":"Returned instead of a bare array when `location` could not be resolved to an exact postal code. Never confuse this with \"0 assets found\" — re-issue the request with a 5-digit postal code.","required":["success","data","locationResolutionWarning"],"properties":{"success":{"type":"boolean","example":true},"data":{"type":"array","items":{"type":"object","additionalProperties":true,"properties":{"Asset-ID":{"type":"string"},"SEE Nummer":{"type":"string"},"Anlagentyp":{"type":"string"},"Leistung kW":{"type":"number"},"Ort":{"type":"string","nullable":true},"Postleitzahl":{"type":"string","nullable":true},"Bundesland":{"type":"string","nullable":true}}}},"locationResolutionWarning":{"type":"string","example":"Location \"Meckesheim\" could not be resolved to a postal code. The live MaStR backend only supports exact 5-digit postleitzahl filtering, not free-text city/region search. Pass \"postleitzahl\" directly, or resolve the postal code first (e.g. via grid-operations.marketPartners or OSM Geo)."}}}]}}}},"400":{"description":"Invalid parameters (at least one of vnbName, bdewCode, gridOperatorId or location is required)."},"500":{"description":"Internal server error during MaStR query."}},"description":"Retrieves wind installations from MaStR by grid operator context (`vnbName`, `bdewCode`, `gridOperatorId`) or directly by `location` (city/region/postal code). **Default: Only active installations (status 35).** Count semantics: this endpoint returns an array. For questions like \"How many ...\", use the number of returned items (`array.length`)."}},"/api/assets/storage":{"get":{"summary":"List battery storage installations by grid operator or location","tags":["Assets"],"operationId":"assets_storage","parameters":[{"name":"vnbName","in":"query","schema":{"type":"string","example":"Netze BW"},"description":"Name of grid operator"},{"name":"bdewCode","in":"query","schema":{"type":"string","example":"4041407000008"},"description":"BDEW code (13 digits)"},{"name":"gridOperatorId","in":"query","schema":{"type":"string","example":"SNB948311994307"},"description":"MaStR grid operator ID"},{"name":"location","in":"query","schema":{"type":"string","example":"Heidelberg"},"description":"City/region/postal code for location-based search (e.g. \"Mainz\", \"69115\", \"Baden-Württemberg\"). Live MaStR filtering only supports an exact 5-digit postal code; a free-text city/region name that cannot be resolved to one does NOT return a bare empty array — the response includes a `locationResolutionWarning` instead (see response schema). Pass the postal code directly when known.. Supports city-style queries like \"Welche Speicheranlagen gibt es in <Ort>?\"."},{"name":"commissioningYear","in":"query","schema":{"type":"number","example":2020},"description":"Commissioning year"},{"name":"minCapacityKW","in":"query","schema":{"type":"number","example":100},"description":"Min. capacity in kW"},{"name":"maxCapacityKW","in":"query","schema":{"type":"number","example":10000},"description":"Max. capacity in kW"},{"name":"limit","in":"query","schema":{"type":"number","default":1000,"example":1000},"description":"Max. number of results. Default: **1,000**. Use a high value (e.g. `1000000`) or `all` for the complete result set — the server paginates internally."},{"name":"offset","in":"query","schema":{"type":"number","default":0,"minimum":0,"example":0},"description":"Pagination offset — skip N records to fetch the next page."},{"name":"redispatch","in":"query","schema":{"type":"boolean","example":true},"description":"Redispatch 2.0 (≥100kW)"},{"name":"operationalStatus","in":"query","schema":{"type":"string","default":"35","example":"35"},"description":"Operational status: 31=Planned, 35=In operation (default), 37=Temporarily decommissioned, 38=Permanently decommissioned, all=All"},{"name":"netzbetreiberPruefungStatus","in":"query","schema":{"type":"string","example":"2955"},"description":"Filter by grid operator verification status code(s), comma-separated. Values: 2954=Geprüft ✅, 2955=In Prüfung ⏳, 3075=Nicht vorgesehen."},{"name":"includeNapData","in":"query","schema":{"type":"boolean","default":true},"description":"Include NAP data (MeLo, voltage level, bottleneck capacity). Default: true"},{"name":"updatedAfter","in":"query","schema":{"type":"string","format":"date","example":"2026-03-24"},"description":"ISO date — only installations with lastUpdatedAt (DatumLetzteMeldung) after this date."},{"name":"format","in":"query","schema":{"type":"string","enum":["json","csv","xlsx"],"default":"json"},"description":"Output format (default: json)"},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Array of matching installations, OR — when `location` was a free-text city/region that could not be resolved to a postal code (#274) — an object reporting that resolution failure instead of a bare empty array. A bare `[]` always means a genuinely empty, location-resolved result set; count/aggregation for the array case can be derived via response length (`array.length`).","content":{"application/json":{"schema":{"oneOf":[{"type":"array","items":{"type":"object","additionalProperties":true,"properties":{"Asset-ID":{"type":"string"},"SEE Nummer":{"type":"string"},"Anlagentyp":{"type":"string"},"Leistung kW":{"type":"number"},"Ort":{"type":"string","nullable":true},"Postleitzahl":{"type":"string","nullable":true},"Bundesland":{"type":"string","nullable":true}}}},{"type":"object","description":"Returned instead of a bare array when `location` could not be resolved to an exact postal code. Never confuse this with \"0 assets found\" — re-issue the request with a 5-digit postal code.","required":["success","data","locationResolutionWarning"],"properties":{"success":{"type":"boolean","example":true},"data":{"type":"array","items":{"type":"object","additionalProperties":true,"properties":{"Asset-ID":{"type":"string"},"SEE Nummer":{"type":"string"},"Anlagentyp":{"type":"string"},"Leistung kW":{"type":"number"},"Ort":{"type":"string","nullable":true},"Postleitzahl":{"type":"string","nullable":true},"Bundesland":{"type":"string","nullable":true}}}},"locationResolutionWarning":{"type":"string","example":"Location \"Meckesheim\" could not be resolved to a postal code. The live MaStR backend only supports exact 5-digit postleitzahl filtering, not free-text city/region search. Pass \"postleitzahl\" directly, or resolve the postal code first (e.g. via grid-operations.marketPartners or OSM Geo)."}}}]}}}},"400":{"description":"Invalid parameters (at least one of vnbName, bdewCode, gridOperatorId or location is required)."},"500":{"description":"Internal server error during MaStR query."}},"description":"Retrieves battery storage installations from MaStR by grid operator context (`vnbName`, `bdewCode`, `gridOperatorId`) or directly by `location` (city/region/postal code). **Default: Only active installations (status 35).** Count semantics: this endpoint returns an array. For questions like \"How many ...\", use the number of returned items (`array.length`)."}},"/api/assets/biomass":{"get":{"summary":"List all biomass installations of a grid operator","tags":["Assets"],"operationId":"assets_biomass","parameters":[{"name":"vnbName","in":"query","schema":{"type":"string","example":"Netze BW"},"description":"Name of grid operator"},{"name":"bdewCode","in":"query","schema":{"type":"string","example":"4041407000008"},"description":"BDEW code (13 digits)"},{"name":"gridOperatorId","in":"query","schema":{"type":"string","example":"SNB948311994307"},"description":"MaStR grid operator ID"},{"name":"location","in":"query","schema":{"type":"string","example":"Heidelberg"},"description":"City/region/postal code for location-based search (e.g. \"Mainz\", \"69115\", \"Baden-Württemberg\"). Live MaStR filtering only supports an exact 5-digit postal code; a free-text city/region name that cannot be resolved to one does NOT return a bare empty array — the response includes a `locationResolutionWarning` instead (see response schema). Pass the postal code directly when known."},{"name":"commissioningYear","in":"query","schema":{"type":"number","example":2020},"description":"Commissioning year"},{"name":"minCapacityKW","in":"query","schema":{"type":"number","example":100},"description":"Min. capacity in kW"},{"name":"maxCapacityKW","in":"query","schema":{"type":"number","example":10000},"description":"Max. capacity in kW"},{"name":"limit","in":"query","schema":{"type":"number","default":1000,"example":1000},"description":"Max. number of results. Default: **1,000**. Use a high value (e.g. `1000000`) or `all` for the complete result set — the server paginates internally."},{"name":"offset","in":"query","schema":{"type":"number","default":0,"minimum":0,"example":0},"description":"Pagination offset — skip N records to fetch the next page."},{"name":"redispatch","in":"query","schema":{"type":"boolean","example":true},"description":"Redispatch 2.0 (≥100kW)"},{"name":"operationalStatus","in":"query","schema":{"type":"string","default":"35","example":"35"},"description":"Operational status: 31=Planned, 35=In operation (default), 37=Temporarily decommissioned, 38=Permanently decommissioned, all=All"},{"name":"netzbetreiberPruefungStatus","in":"query","schema":{"type":"string","example":"2955"},"description":"Filter by grid operator verification status code(s), comma-separated. Values: 2954=Geprüft ✅, 2955=In Prüfung ⏳, 3075=Nicht vorgesehen."},{"name":"includeNapData","in":"query","schema":{"type":"boolean","default":true},"description":"Include NAP data (MeLo, voltage level, bottleneck capacity). Default: true"},{"name":"updatedAfter","in":"query","schema":{"type":"string","format":"date","example":"2026-03-24"},"description":"ISO date — only installations with lastUpdatedAt (DatumLetzteMeldung) after this date."},{"name":"format","in":"query","schema":{"type":"string","enum":["json","csv","xlsx"],"default":"json"},"description":"Output format (default: json)"},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Array of matching installations, OR — when `location` was a free-text city/region that could not be resolved to a postal code (#274) — an object reporting that resolution failure instead of a bare empty array. A bare `[]` always means a genuinely empty, location-resolved result set; count/aggregation for the array case can be derived via response length (`array.length`).","content":{"application/json":{"schema":{"oneOf":[{"type":"array","items":{"type":"object","additionalProperties":true,"properties":{"Asset-ID":{"type":"string"},"SEE Nummer":{"type":"string"},"Anlagentyp":{"type":"string"},"Leistung kW":{"type":"number"},"Ort":{"type":"string","nullable":true},"Postleitzahl":{"type":"string","nullable":true},"Bundesland":{"type":"string","nullable":true}}}},{"type":"object","description":"Returned instead of a bare array when `location` could not be resolved to an exact postal code. Never confuse this with \"0 assets found\" — re-issue the request with a 5-digit postal code.","required":["success","data","locationResolutionWarning"],"properties":{"success":{"type":"boolean","example":true},"data":{"type":"array","items":{"type":"object","additionalProperties":true,"properties":{"Asset-ID":{"type":"string"},"SEE Nummer":{"type":"string"},"Anlagentyp":{"type":"string"},"Leistung kW":{"type":"number"},"Ort":{"type":"string","nullable":true},"Postleitzahl":{"type":"string","nullable":true},"Bundesland":{"type":"string","nullable":true}}}},"locationResolutionWarning":{"type":"string","example":"Location \"Meckesheim\" could not be resolved to a postal code. The live MaStR backend only supports exact 5-digit postleitzahl filtering, not free-text city/region search. Pass \"postleitzahl\" directly, or resolve the postal code first (e.g. via grid-operations.marketPartners or OSM Geo)."}}}]}}}},"400":{"description":"Invalid parameters (at least one of vnbName, bdewCode, gridOperatorId or location is required)."},"500":{"description":"Internal server error during MaStR query."}},"description":"**Default: Only active installations (status 35).**"}},"/api/assets/hydro":{"get":{"summary":"List all hydropower installations of a grid operator","tags":["Assets"],"operationId":"assets_hydro","parameters":[{"name":"vnbName","in":"query","schema":{"type":"string","example":"Netze BW"},"description":"Name of grid operator"},{"name":"bdewCode","in":"query","schema":{"type":"string","example":"4041407000008"},"description":"BDEW code (13 digits)"},{"name":"gridOperatorId","in":"query","schema":{"type":"string","example":"SNB948311994307"},"description":"MaStR grid operator ID"},{"name":"location","in":"query","schema":{"type":"string","example":"Heidelberg"},"description":"City/region/postal code for location-based search (e.g. \"Mainz\", \"69115\", \"Baden-Württemberg\"). Live MaStR filtering only supports an exact 5-digit postal code; a free-text city/region name that cannot be resolved to one does NOT return a bare empty array — the response includes a `locationResolutionWarning` instead (see response schema). Pass the postal code directly when known."},{"name":"commissioningYear","in":"query","schema":{"type":"number","example":2020},"description":"Commissioning year"},{"name":"minCapacityKW","in":"query","schema":{"type":"number","example":100},"description":"Min. capacity in kW"},{"name":"maxCapacityKW","in":"query","schema":{"type":"number","example":10000},"description":"Max. capacity in kW"},{"name":"limit","in":"query","schema":{"type":"number","default":1000,"example":1000},"description":"Max. number of results. Default: **1,000**. Use a high value (e.g. `1000000`) or `all` for the complete result set — the server paginates internally."},{"name":"offset","in":"query","schema":{"type":"number","default":0,"minimum":0,"example":0},"description":"Pagination offset — skip N records to fetch the next page."},{"name":"redispatch","in":"query","schema":{"type":"boolean","example":true},"description":"Redispatch 2.0 (≥100kW)"},{"name":"operationalStatus","in":"query","schema":{"type":"string","default":"35","example":"35"},"description":"Operational status: 31=Planned, 35=In operation (default), 37=Temporarily decommissioned, 38=Permanently decommissioned, all=All"},{"name":"netzbetreiberPruefungStatus","in":"query","schema":{"type":"string","example":"2955"},"description":"Filter by grid operator verification status code(s), comma-separated. Values: 2954=Geprüft ✅, 2955=In Prüfung ⏳, 3075=Nicht vorgesehen."},{"name":"includeNapData","in":"query","schema":{"type":"boolean","default":true},"description":"Include NAP data (MeLo, voltage level, bottleneck capacity). Default: true"},{"name":"updatedAfter","in":"query","schema":{"type":"string","format":"date","example":"2026-03-24"},"description":"ISO date — only installations with lastUpdatedAt (DatumLetzteMeldung) after this date."},{"name":"format","in":"query","schema":{"type":"string","enum":["json","csv","xlsx"],"default":"json"},"description":"Output format (default: json)"},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Array of matching installations, OR — when `location` was a free-text city/region that could not be resolved to a postal code (#274) — an object reporting that resolution failure instead of a bare empty array. A bare `[]` always means a genuinely empty, location-resolved result set; count/aggregation for the array case can be derived via response length (`array.length`).","content":{"application/json":{"schema":{"oneOf":[{"type":"array","items":{"type":"object","additionalProperties":true,"properties":{"Asset-ID":{"type":"string"},"SEE Nummer":{"type":"string"},"Anlagentyp":{"type":"string"},"Leistung kW":{"type":"number"},"Ort":{"type":"string","nullable":true},"Postleitzahl":{"type":"string","nullable":true},"Bundesland":{"type":"string","nullable":true}}}},{"type":"object","description":"Returned instead of a bare array when `location` could not be resolved to an exact postal code. Never confuse this with \"0 assets found\" — re-issue the request with a 5-digit postal code.","required":["success","data","locationResolutionWarning"],"properties":{"success":{"type":"boolean","example":true},"data":{"type":"array","items":{"type":"object","additionalProperties":true,"properties":{"Asset-ID":{"type":"string"},"SEE Nummer":{"type":"string"},"Anlagentyp":{"type":"string"},"Leistung kW":{"type":"number"},"Ort":{"type":"string","nullable":true},"Postleitzahl":{"type":"string","nullable":true},"Bundesland":{"type":"string","nullable":true}}}},"locationResolutionWarning":{"type":"string","example":"Location \"Meckesheim\" could not be resolved to a postal code. The live MaStR backend only supports exact 5-digit postleitzahl filtering, not free-text city/region search. Pass \"postleitzahl\" directly, or resolve the postal code first (e.g. via grid-operations.marketPartners or OSM Geo)."}}}]}}}},"400":{"description":"Invalid parameters (at least one of vnbName, bdewCode, gridOperatorId or location is required)."},"500":{"description":"Internal server error during MaStR query."}},"description":"**Default: Only active installations (status 35).**"}},"/api/assets/combustion":{"get":{"summary":"List all combustion installations of a grid operator","tags":["Assets"],"operationId":"assets_combustion","parameters":[{"name":"vnbName","in":"query","schema":{"type":"string","example":"Netze BW"},"description":"Name of grid operator"},{"name":"bdewCode","in":"query","schema":{"type":"string","example":"4041407000008"},"description":"BDEW code (13 digits)"},{"name":"gridOperatorId","in":"query","schema":{"type":"string","example":"SNB948311994307"},"description":"MaStR grid operator ID"},{"name":"location","in":"query","schema":{"type":"string","example":"Heidelberg"},"description":"City/region/postal code for location-based search (e.g. \"Mainz\", \"69115\", \"Baden-Württemberg\"). Live MaStR filtering only supports an exact 5-digit postal code; a free-text city/region name that cannot be resolved to one does NOT return a bare empty array — the response includes a `locationResolutionWarning` instead (see response schema). Pass the postal code directly when known."},{"name":"commissioningYear","in":"query","schema":{"type":"number","example":2020},"description":"Commissioning year"},{"name":"minCapacityKW","in":"query","schema":{"type":"number","example":100},"description":"Min. capacity in kW"},{"name":"maxCapacityKW","in":"query","schema":{"type":"number","example":10000},"description":"Max. capacity in kW"},{"name":"limit","in":"query","schema":{"type":"number","default":1000,"example":1000},"description":"Max. number of results. Default: **1,000**. Use a high value (e.g. `1000000`) or `all` for the complete result set — the server paginates internally."},{"name":"offset","in":"query","schema":{"type":"number","default":0,"minimum":0,"example":0},"description":"Pagination offset — skip N records to fetch the next page."},{"name":"redispatch","in":"query","schema":{"type":"boolean","example":true},"description":"Redispatch 2.0 (≥100kW)"},{"name":"operationalStatus","in":"query","schema":{"type":"string","default":"35","example":"35"},"description":"Operational status: 31=Planned, 35=In operation (default), 37=Temporarily decommissioned, 38=Permanently decommissioned, all=All"},{"name":"netzbetreiberPruefungStatus","in":"query","schema":{"type":"string","example":"2955"},"description":"Filter by grid operator verification status code(s), comma-separated. Values: 2954=Geprüft ✅, 2955=In Prüfung ⏳, 3075=Nicht vorgesehen."},{"name":"includeNapData","in":"query","schema":{"type":"boolean","default":true},"description":"Include NAP data (MeLo, voltage level, bottleneck capacity). Default: true"},{"name":"updatedAfter","in":"query","schema":{"type":"string","format":"date","example":"2026-03-24"},"description":"ISO date — only installations with lastUpdatedAt (DatumLetzteMeldung) after this date."},{"name":"format","in":"query","schema":{"type":"string","enum":["json","csv","xlsx"],"default":"json"},"description":"Output format (default: json)"},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Array of matching installations, OR — when `location` was a free-text city/region that could not be resolved to a postal code (#274) — an object reporting that resolution failure instead of a bare empty array. A bare `[]` always means a genuinely empty, location-resolved result set; count/aggregation for the array case can be derived via response length (`array.length`).","content":{"application/json":{"schema":{"oneOf":[{"type":"array","items":{"type":"object","additionalProperties":true,"properties":{"Asset-ID":{"type":"string"},"SEE Nummer":{"type":"string"},"Anlagentyp":{"type":"string"},"Leistung kW":{"type":"number"},"Ort":{"type":"string","nullable":true},"Postleitzahl":{"type":"string","nullable":true},"Bundesland":{"type":"string","nullable":true}}}},{"type":"object","description":"Returned instead of a bare array when `location` could not be resolved to an exact postal code. Never confuse this with \"0 assets found\" — re-issue the request with a 5-digit postal code.","required":["success","data","locationResolutionWarning"],"properties":{"success":{"type":"boolean","example":true},"data":{"type":"array","items":{"type":"object","additionalProperties":true,"properties":{"Asset-ID":{"type":"string"},"SEE Nummer":{"type":"string"},"Anlagentyp":{"type":"string"},"Leistung kW":{"type":"number"},"Ort":{"type":"string","nullable":true},"Postleitzahl":{"type":"string","nullable":true},"Bundesland":{"type":"string","nullable":true}}}},"locationResolutionWarning":{"type":"string","example":"Location \"Meckesheim\" could not be resolved to a postal code. The live MaStR backend only supports exact 5-digit postleitzahl filtering, not free-text city/region search. Pass \"postleitzahl\" directly, or resolve the postal code first (e.g. via grid-operations.marketPartners or OSM Geo)."}}}]}}}},"400":{"description":"Invalid parameters (at least one of vnbName, bdewCode, gridOperatorId or location is required)."},"500":{"description":"Internal server error during MaStR query."}},"description":"**Default: Only active installations (status 35).**"}},"/api/assets/all":{"get":{"summary":"List all installations by grid operator or location (all or selected types)","tags":["Assets"],"operationId":"assets_all","parameters":[{"name":"vnbName","in":"query","schema":{"type":"string","example":"Netze BW"},"description":"Name of grid operator"},{"name":"bdewCode","in":"query","schema":{"type":"string","example":"4041407000008"},"description":"BDEW code (13 digits)"},{"name":"gridOperatorId","in":"query","schema":{"type":"string","example":"SNB948311994307"},"description":"MaStR grid operator ID"},{"name":"location","in":"query","schema":{"type":"string","example":"Baden-Württemberg"},"description":"City/region/postal code for location-based search (e.g. \"Mainz\", \"69115\", \"Baden-Württemberg\"). Live MaStR filtering only supports an exact 5-digit postal code; a free-text city/region name that cannot be resolved to one does NOT return a bare empty array — the response includes a `locationResolutionWarning` instead (see response schema). Pass the postal code directly when known.. Useful for cross-type location queries like \"Wie viele Anlagen gibt es in <Ort>?\"."},{"name":"commissioningYear","in":"query","schema":{"type":"number","example":2020},"description":"Commissioning year"},{"name":"minCapacityKW","in":"query","schema":{"type":"number","example":100},"description":"Min. capacity in kW"},{"name":"maxCapacityKW","in":"query","schema":{"type":"number","example":10000},"description":"Max. capacity in kW"},{"name":"limit","in":"query","schema":{"type":"number","default":1000,"example":1000},"description":"Max. number of results per type. Default: **1,000**. Use a high value (e.g. `1000000`) or `all` for the complete result set — the server paginates internally."},{"name":"offset","in":"query","schema":{"type":"number","default":0,"minimum":0,"example":0},"description":"Pagination offset — skip N records to fetch the next page (applied per type)."},{"name":"redispatch","in":"query","schema":{"type":"boolean","example":true},"description":"Redispatch 2.0 filter (≥100kW)"},{"name":"types","in":"query","schema":{"type":"string","example":"solar,wind,storage"},"description":"Comma-separated list of installation types. Default: all types (solar,wind,storage,biomass,hydro,combustion)"},{"name":"operationalStatus","in":"query","schema":{"type":"string","default":"35","example":"35"},"description":"Operational status: 31=Planned, 35=In operation (default), 37=Temporarily decommissioned, 38=Permanently decommissioned, all=All statuses"},{"name":"netzbetreiberPruefungStatus","in":"query","schema":{"type":"string","example":"2955"},"description":"Filter by grid operator verification status code(s), comma-separated. Values: 2954=Geprüft ✅, 2955=In Prüfung ⏳, 3075=Nicht vorgesehen."},{"name":"format","in":"query","schema":{"type":"string","enum":["json","csv","xlsx"],"default":"json"},"description":"Output format (default: json)"},{"name":"includeNapData","in":"query","schema":{"type":"boolean","default":true},"description":"Include NAP data (MeLo, voltage level, bottleneck capacity). Default: true"},{"name":"updatedAfter","in":"query","schema":{"type":"string","format":"date","example":"2026-03-24"},"description":"ISO date — only installations with lastUpdatedAt (DatumLetzteMeldung) after this date."},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Array of matching installations, OR — when `location` was a free-text city/region that could not be resolved to a postal code (#274) — an object reporting that resolution failure instead of a bare empty array. A bare `[]` always means a genuinely empty, location-resolved result set; count/aggregation for the array case can be derived via response length (`array.length`).","content":{"application/json":{"schema":{"oneOf":[{"type":"array","items":{"type":"object","additionalProperties":true,"properties":{"Asset-ID":{"type":"string"},"SEE Nummer":{"type":"string"},"Anlagentyp":{"type":"string"},"Leistung kW":{"type":"number"},"Ort":{"type":"string","nullable":true},"Postleitzahl":{"type":"string","nullable":true},"Bundesland":{"type":"string","nullable":true}}}},{"type":"object","description":"Returned instead of a bare array when `location` could not be resolved to an exact postal code. Never confuse this with \"0 assets found\" — re-issue the request with a 5-digit postal code.","required":["success","data","locationResolutionWarning"],"properties":{"success":{"type":"boolean","example":true},"data":{"type":"array","items":{"type":"object","additionalProperties":true,"properties":{"Asset-ID":{"type":"string"},"SEE Nummer":{"type":"string"},"Anlagentyp":{"type":"string"},"Leistung kW":{"type":"number"},"Ort":{"type":"string","nullable":true},"Postleitzahl":{"type":"string","nullable":true},"Bundesland":{"type":"string","nullable":true}}}},"locationResolutionWarning":{"type":"string","example":"Location \"Meckesheim\" could not be resolved to a postal code. The live MaStR backend only supports exact 5-digit postleitzahl filtering, not free-text city/region search. Pass \"postleitzahl\" directly, or resolve the postal code first (e.g. via grid-operations.marketPartners or OSM Geo)."}}}]}}}},"400":{"description":"Invalid parameters (at least one of vnbName, bdewCode, gridOperatorId or location is required)."},"500":{"description":"Internal server error during MaStR query."}},"description":"Retrieves installations of all or selected types from MaStR by grid operator context (`vnbName`, `bdewCode`, `gridOperatorId`) or directly by `location` (city/region/postal code). **Default: Only active installations (status 35).** Ideal for portfolio overview and location-based queries across asset types. Count semantics: this endpoint returns an array. For questions like \"How many ...\", use the number of returned items (`array.length`). Example: /api/assets/all?location=Heidelberg&types=solar,wind,storage"}},"/api/assets/redispatch-count":{"get":{"summary":"Count of redispatch-eligible installations (≥100 kW) for a grid operator","tags":["Assets"],"operationId":"assets_redispatchCount","parameters":[{"name":"gridOperatorId","in":"query","required":false,"schema":{"type":"string","example":"SNB935578300972"},"description":"MaStR grid operator ID (SNB/GNB format)"},{"name":"bdewCode","in":"query","required":false,"schema":{"type":"string","example":"9907473000008"},"description":"BDEW code — resolved by local cache inside cernion_installations_local"},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Redispatch-eligible installation count and capacity","content":{"application/json":{"example":{"count":59,"totalCapacityMW":73.4,"byType":{"solar":{"count":12,"capacityKW":8200},"wind":{"count":15,"capacityKW":42000},"combustion":{"count":25,"capacityKW":18500},"biomass":{"count":7,"capacityKW":4700}}}}}}},"description":"Aggregation of installations ≥100 kW (InBetrieb) for a grid operator. Returns count + total capacity in MW + breakdown by type (solar, wind, etc.). Used by the Dashboard API `vnbOverview` Phase 2 to populate the `redispatchEligible` KPI card (v0.20.2). No NAP enrichment — faster than `assets.list` with `redispatch=true`."}},"/api/assets/by-direktvermarkter":{"post":{"summary":"List installations of a Direktvermarkter (direct energy marketer)","tags":["Assets"],"operationId":"assets_byDirektvermarkter","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"Retrieves MaStR installations assigned to a given direct energy marketer (Direktvermarkter) using the direktvermarkterName or direktvermarkterMastrId filter. Step 2 of the Direktvermarkter pipeline. Supports filtering by type, commissioning year, capacity, and Bundesland.\n\n⚠️ **Data Availability Limitation**: The `DirektvermarkterMastrNummer` field is deliberately excluded from all public MaStR bulk exports (BNetzA policy — commercially sensitive data). As a result, the `direktvermarkterName` and `direktvermarkterMastrId` filter parameters are not populated in the local MongoDB and **will return 0 results** in practice. The best available public proxy for installations in Direktvermarktung is `fernsteuerbarkeitDv: true` combined with `minCapacity: 100` — available for Wind and Biomass only (field not present in Solar/Storage).","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"direktvermarkterName":{"type":"string","description":"Direktvermarkter company name (fuzzy match)","example":"Next Kraftwerke"},"direktvermarkterMastrId":{"type":"string","description":"Exact MaStR ID of the Direktvermarkter","example":"ABR123456789"},"installationType":{"type":"string","enum":["solar","wind","storage","biomass","hydro","combustion","all"],"default":"all","description":"Filter by installation type (default: all)"},"minCapacityKW":{"type":"number","description":"Minimum installed capacity in kW","example":100},"maxCapacityKW":{"type":"number","description":"Maximum installed capacity in kW","example":5000},"bundesland":{"type":"string","description":"Filter by federal state","example":"Bayern"},"limit":{"type":"integer","default":1000,"minimum":1,"maximum":10000,"description":"Maximum number of results (default: 1000)"},"offset":{"type":"integer","default":0,"description":"Pagination offset"},"format":{"type":"string","enum":["json","csv","xlsx"],"default":"json","description":"Output format"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"byName":{"summary":"All installations of Next Kraftwerke","value":{"direktvermarkterName":"Next Kraftwerke","limit":1000}},"byMastrId":{"summary":"Solar portfolio by exact Direktvermarkter MaStR ID","value":{"direktvermarkterMastrId":"ABR123456789","installationType":"solar","minCapacityKW":100}}}}}}}},"/api/assets/infer-grid-operators":{"get":{"summary":"Infer grid operator candidates from MaStR assets at a location","tags":["Assets"],"operationId":"assets_inferGridOperators","parameters":[{"name":"postalCode","in":"query","required":false,"schema":{"type":"string"}},{"name":"municipality","in":"query","required":false,"schema":{"type":"string"}},{"name":"state","in":"query","required":false,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":60,"minimum":1,"maximum":200}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"Queries MaStR installations for the given PLZ / municipality and aggregates the Netzbetreiber (grid operator) from those assets. ⚠️ NOT authoritative: derives candidates only — does not confirm the grid area boundary. A formal Netzanschlussanfrage is required for binding VNB attribution."}},"/api/znp/projects":{"post":{"summary":"Create a new ZNP project workspace","tags":["Zielnetzplanung (ZNP)"],"operationId":"znp_createProject","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Project created","content":{"application/json":{"schema":{"type":"object","properties":{"projectId":{"type":"string","example":"a1b2c3d4-..."},"name":{"type":"string"},"bbox":{"type":"object"},"createdAt":{"type":"string","format":"date-time"},"tenantId":{"type":"string","nullable":true},"graphStats":{"type":"object"}}}}}}},"description":"Allocates a new in-memory graphology graph for the given geographic bounding box. Returns a projectId (UUID) that must be passed to all subsequent layer-loading and analysis calls. The virtual aggregation substation SUB_1 is pre-seeded into the graph. Graph state is persisted to PouchDB (znp:meta: + znp:graph: documents) and hydrated on service start. Sessions survive server restarts as of v0.23.","requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["bbox"],"properties":{"bbox":{"type":"object","required":["south","west","north","east"],"example":{"south":49.47,"west":8.43,"north":49.52,"east":8.52},"properties":{"south":{"type":"number","example":49.47},"west":{"type":"number","example":8.43},"north":{"type":"number","example":49.52},"east":{"type":"number","example":8.52}}},"name":{"type":"string","example":"Ludwigshafen Nord Q3-2026"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"value":{"bbox":{"south":49.47,"west":8.43,"north":49.52,"east":8.52},"name":"Ludwigshafen Nord Q3-2026"}}}}}}},"get":{"summary":"List all active ZNP projects (in-memory)","tags":["Zielnetzplanung (ZNP)"],"operationId":"znp_listProjects","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"Returns all projects currently held in the in-memory activeGraphs Map. As of v0.23, graphs are hydrated from PouchDB on service start, so this list is populated even after a server restart."}},"/api/znp/projects/:projectId/layer0":{"post":{"summary":"Load Layer 0 — MaStR assets into a ZNP project graph","tags":["Zielnetzplanung (ZNP)"],"operationId":"znp_addLayer0","parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"Adds MaStR installation nodes and CONTRIBUTES_LOAD edges to the in-memory graph. All assets are wired to the virtual substation SUB_1 in Layer 0 because MaStR contains no network topology (physical wiring is resolved in Layer 1 / Layer 2). Duplicate mastrNummer entries are skipped (idempotent). Returns counts of added nodes and edges.","requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["assets"],"properties":{"assets":{"type":"array","example":[{"mastrNummer":"SEE900123456789","capacity":10.5,"assetType":"solar","lat":49.491,"lon":8.471},{"mastrNummer":"SEE900987654321","capacity":7,"assetType":"solar","lat":49.492,"lon":8.472}],"items":{"type":"object","required":["mastrNummer","capacity"],"properties":{"mastrNummer":{"type":"string","example":"SEE900123456789"},"capacity":{"type":"number","example":10.5,"description":"kW"},"assetType":{"type":"string","example":"solar"},"lat":{"type":"number","example":49.491},"lon":{"type":"number","example":8.471},"status":{"type":"string","example":"InBetrieb","nullable":true,"description":"MaStR Betriebsstatus (optional, unvalidated string — MaStR date formats vary)."},"commissioningDate":{"type":"string","example":"2024-06-15","nullable":true,"description":"Commissioning date string (unvalidated — MaStR date formats vary)."},"fernsteuerbarkeitDv":{"type":"boolean","example":true,"nullable":true,"description":"Optional controlability marker from MaStR exports (stored as normalized boolean)."},"fernsteuerbarkeitSonstige":{"type":"boolean","example":false,"nullable":true,"description":"Optional fallback controlability marker from MaStR exports."}}}},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"value":{"assets":[{"mastrNummer":"SEE900123456789","capacity":10.5,"assetType":"solar","lat":49.491,"lon":8.471},{"mastrNummer":"SEE900987654321","capacity":7,"assetType":"solar","lat":49.492,"lon":8.472}]}}}}}}}},"/api/znp/projects/:projectId/layer1":{"post":{"summary":"Load Layer 1 — OSM spatial buildings and clustering (async job)","tags":["Zielnetzplanung (ZNP)"],"operationId":"znp_addLayer1","parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","example":"a1b2c3d4-0000-0000-0000-000000000001"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"202":{"description":"Job accepted — poll statusUrl for progress logs and result.","content":{"application/json":{"schema":{"type":"object","properties":{"jobId":{"type":"string"},"statusUrl":{"type":"string"},"resultUrl":{"type":"string"}}}}}}},"description":"Fetches building footprints for the project bounding box from the Overpass API (2×2 tiling, rate-limited). Maps Layer 0 MaStR assets to building polygons (oeo_located_in edges) and detects spatial clusters. Computes a clustering-based g-factor multiplier (solar shading / EV simultaneity). REST callers receive HTTP 202 + jobId; poll GET /api/jobs/:jobId/status. Requires addLayer0 to have been called first.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"example":{}},"examples":{"default":{"value":{}}}}}}}},"/api/znp/projects/:projectId/layer2":{"post":{"summary":"Load Layer 2 — AI-extracted transformer peak load from PDF (async job)","tags":["Zielnetzplanung (ZNP)"],"operationId":"znp_addLayer2","parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","example":"a1b2c3d4-0000-0000-0000-000000000001"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"202":{"description":"Job accepted — poll statusUrl for AI extraction logs and result.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"jobId":{"type":"string"},"status":{"type":"string"},"message":{"type":"string"},"statusUrl":{"type":"string"},"resultUrl":{"type":"string"}}},"examples":{"accepted":{"value":{"success":true,"jobId":"6fd6a40e-4f18-4d78-aad0-0a7d4fdfec8d","status":"queued","message":"Job started. Poll /api/jobs/:jobId/status for progress.","statusUrl":"/api/jobs/6fd6a40e-4f18-4d78-aad0-0a7d4fdfec8d/status","resultUrl":"/api/jobs/6fd6a40e-4f18-4d78-aad0-0a7d4fdfec8d/result"}}}}}}},"description":"Accepts either the path of a PDF uploaded via `POST /api/datasources/uploads` or an inline Base64-encoded PDF (`fileContentBase64`). Parses the document with pdf-parse, then calls Gemini (structured JSON output) to extract the maximum simultaneous annual peak transformer load (Jahreshöchstlast), transformer ID, and nominal transformer capacity. The nominal capacity is converted to kW in the extractor using cos(phi)=0.95. Adds a Measurement node plus a calibration node and enables the Layer 2 short-circuit in calculateGFactor: the measured value replaces the theoretical Layer 1 estimate. REST callers receive HTTP 202 + jobId; poll GET /api/jobs/:jobId/status for Chain-of-Thought log messages.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"filePath":{"type":"string","example":"/opt/cernion-energy-tools/uploads/lastprofil_trafo.pdf"},"fileContentBase64":{"type":"string","example":"JVBERi0xLjQKJcfs..."},"fileName":{"type":"string","example":"lastprofil_trafo.pdf"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"oneOf":[{"required":["filePath"]},{"required":["fileContentBase64"]}]},"examples":{"byPath":{"value":{"filePath":"/opt/cernion-energy-tools/uploads/lastprofil_trafo.pdf"}},"byBase64":{"value":{"fileName":"lastprofil_trafo_2025.pdf","fileContentBase64":"data:application/pdf;base64,JVBERi0xLjQKJcfsj6IKMSAwIG9iago8PC9UeXBlL0NhdGFsb2c+PgplbmRvYmoK"}}}}}}}},"/api/znp/projects/:projectId/g-factor":{"get":{"summary":"Calculate simultaneity factor (G-Factor) for a ZNP project","tags":["Zielnetzplanung (ZNP)"],"operationId":"znp_calculateGFactor","parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","example":"a1b2c3d4-0000-0000-0000-000000000001"}},{"name":"target_layer","in":"query","required":false,"schema":{"type":"integer","default":0,"minimum":0,"maximum":2},"description":"Include all layers ≤ target_layer in the capacity sum."},{"name":"substationId","in":"query","required":false,"schema":{"type":"string","default":"SUB_1"},"description":"Target substation node key. Defaults to SUB_1."},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"G-Factor calculation result","content":{"application/json":{"schema":{"type":"object","properties":{"projectId":{"type":"string"},"substationId":{"type":"string"},"targetLayer":{"type":"integer"},"assetCount":{"type":"integer"},"totalCapacityKW":{"type":"number"},"simultaneityFactor":{"type":"number"},"adjustedCapacityKW":{"type":"number"}}}}}}},"description":"Traverses all CONTRIBUTES_LOAD edges with `layer ≤ targetLayer` inbound to the specified substation node, sums asset capacities, and applies the simultaneity factor (Gleichzeitigkeitsfaktor) from VDE-AR-N 4100.\n\n**Immutable Stacking:** The graph is never mutated — layer filtering happens at query time (Short-Circuiting). This means you can call calculateGFactor with `targetLayer=0` even after addLayer1 has been called, and the result will only reflect Layer 0 assets."}},"/api/znp/projects/:projectId/portfolio":{"get":{"summary":"Assess ZNP portfolio with hybrid provenance and transparent dimensions","tags":["Zielnetzplanung (ZNP)"],"operationId":"znp_assessPortfolio","parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","example":"a1b2c3d4-0000-0000-0000-000000000001"}},{"name":"kaufmaennischeFreigabeFnav","in":"query","required":false,"schema":{"type":"boolean","default":false},"description":"Explicit governance confirmation for fNAV (kaufmännische Freigabe). If false, assessment stays blocked until manual UI resolution."},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Portfolio assessment result","content":{"application/json":{"schema":{"type":"object","properties":{"projectId":{"type":"string"},"tenantId":{"type":"string","nullable":true},"decisionStatus":{"type":"string","enum":["blocked","ready"]},"portfolio":{"type":"object","properties":{"weg":{"type":"string","example":"hybrid_layered_v1"},"provenance":{"type":"array","items":{"type":"string"},"example":["mastr_layer_0","inhouse_layer_2","strategic_assumption"]},"provenanceFlags":{"type":"array","items":{"type":"object","properties":{"provenance":{"type":"string"},"source":{"type":"string"},"reliability":{"type":"number"}}}},"reliabilityScore":{"type":"number"}}},"dimensionScores":{"type":"object","properties":{"economic":{"type":"number"},"regulatory":{"type":"number"},"technical":{"type":"number"},"temporal":{"type":"number"}}},"overallScore":{"type":"number"},"governance":{"type":"object","properties":{"resolutionMode":{"type":"string","example":"manual_only"},"hardBlockers":{"type":"array","items":{"type":"object"}}}}}}}}}},"description":"Computes a deterministic portfolio assessment across ZNP Layer 0 (MaStR), Layer 2 (inhouse transformer PDF calibration), and Layer 2.5 (strategic assumptions). The result includes explicit `portfolio.weg` metadata and provenance flags to make confidence and source reliability transparent. If kaufmännische fNAV approval is missing, the response is a manual-only hard blocker."}},"/api/znp/projects/:projectId/morning-briefing":{"get":{"summary":"Build a read-only ZNP morning briefing for grid planners","tags":["Zielnetzplanung (ZNP)"],"operationId":"znp_morningBriefing","parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string"}},{"name":"thresholdMW","in":"query","required":false,"schema":{"type":"number","default":81}},{"name":"since","in":"query","required":false,"schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Morning briefing dashboard model"}},"description":"Returns an action-oriented morning summary for the Cernion ZNP Workspace. The briefing consolidates overnight planning changes, bottleneck signals against the supplied MW threshold, and recommended advisory next actions. It is read-only and does not mutate the ZNP graph or apply NOVA decisions."}},"/api/znp/projects/:projectId/production-readiness/status":{"get":{"summary":"Read-only ZNP production-readiness evidence gate","tags":["Zielnetzplanung (ZNP)"],"operationId":"znp_productionReadinessStatus","parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string"}},{"name":"layer1Evidence","in":"query","required":false,"schema":{"type":"string"}},{"name":"layer2Evidence","in":"query","required":false,"schema":{"type":"string"}},{"name":"gfactorValidation","in":"query","required":false,"schema":{"type":"string"}},{"name":"acceptanceReference","in":"query","required":false,"schema":{"type":"string"}},{"name":"novaHandoff","in":"query","required":false,"schema":{"type":"string"}},{"in":"query","name":"referenceDataset","schema":{"type":"string"}},{"in":"query","name":"measuredGfactor","schema":{"type":"number"}},{"in":"query","name":"modelGfactor","schema":{"type":"number"}},{"in":"query","name":"owner","schema":{"type":"string"}},{"in":"query","name":"nextReview","schema":{"type":"string"}},{"in":"query","name":"source","schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only production-readiness status"}},"description":"Classifies supplied ZNP Layer 1, Layer 2, G-Factor, NOVA handoff and acceptance evidence for a dossier-safe production-readiness review. This endpoint does not fetch external data, parse PDFs, create jobs, mutate projects, or apply NOVA decisions."}},"/api/znp/projects/:projectId/strategic-prompts":{"get":{"summary":"Generate strategic planning questions for a ZNP project (AI)","tags":["Zielnetzplanung (ZNP)"],"operationId":"znp_strategicPrompts","parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","example":"a1b2c3d4-0000-0000-0000-000000000001"}},{"name":"questionSeed","in":"query","required":false,"description":"SCQA Kernfrage as seed to orient generated planning questions","schema":{"type":"string","maxLength":500}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Strategic questions generated","content":{"application/json":{"schema":{"type":"object","properties":{"projectId":{"type":"string"},"questions":{"type":"array","items":{"type":"string"}},"graphSummary":{"type":"object"}}}}}},"503":{"description":"HTTP 503 LLM_NOT_CONFIGURED — GEMINI_API_KEY not set"}},"description":"Analyses the current graph topology (asset types, capacity, layers) and uses Google Gemini to generate 2-3 strategic questions a grid planner should answer about developments not visible in MaStR/OSM (e.g. data centres, §14a NAV, heat-pump obligations). Returns the questions array + the graph summary used as LLM context. Requires GEMINI_API_KEY — returns HTTP 503 if not configured."}},"/api/znp/projects/:projectId/correlate-disturbance":{"post":{"summary":"Correlate a disturbance signal with ZNP","tags":["ZNP"],"operationId":"znp_correlateDisturbance","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successfully correlated disturbance to NOVA option","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"projectId":{"type":"string"},"disturbanceId":{"type":"string"},"novaOption":{"type":"object"},"governanceAction":{"type":"string"}}}}}}},"description":"Maps a Phase 4 blindflug-radar disturbance signal into a NOVA option shape for investment decisioning.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["projectId","disturbanceId"],"properties":{"projectId":{"type":"string","example":"znp_prj_123"},"disturbanceId":{"type":"string","example":"SIG-123"},"pattern":{"type":"string","example":"CAPACITY_BOTTLENECK"},"severity":{"type":"string","example":"high"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"value":{"projectId":"znp_prj_123","disturbanceId":"SIG-123","pattern":"CAPACITY_BOTTLENECK","severity":"high"}}}}}}}},"/api/znp/projects/:projectId/assets":{"get":{"summary":"List MaStR assets in a ZNP project (paginated)","tags":["Zielnetzplanung (ZNP)"],"operationId":"znp_getProjectAssets","parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","example":"a1b2c3d4-0000-0000-0000-000000000001"}},{"name":"status","in":"query","required":false,"schema":{"type":"string","example":"InBetrieb"},"description":"Filter by asset status (exact string match)."},{"name":"assetType","in":"query","required":false,"schema":{"type":"string","example":"solar"},"description":"Filter by asset type (exact string match)."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"maximum":1000,"example":100},"description":"Maximum number of results to return (1–1000)."},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"example":0},"description":"Zero-based offset for pagination."},{"name":"sortByCapacity","in":"query","required":false,"schema":{"type":"string","enum":["asc","desc"],"default":"desc","example":"desc"},"description":"Sort direction by capacity (kW). Default: desc (highest capacity first)."},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Paginated asset list","content":{"application/json":{"schema":{"type":"object","properties":{"totalCount":{"type":"integer","example":42},"offset":{"type":"integer","example":0},"limit":{"type":"integer","example":100},"assets":{"type":"array","items":{"type":"object","properties":{"mastrNummer":{"type":"string","example":"SEE900123456789"},"capacity":{"type":"number","example":10.5},"assetType":{"type":"string","example":"solar"},"status":{"type":"string","example":"InBetrieb","nullable":true},"commissioningDate":{"type":"string","example":"2024-06-15","nullable":true},"lat":{"type":"number","example":49.491,"nullable":true},"lon":{"type":"number","example":8.471,"nullable":true}}}}}}}}}},"description":"Returns the Layer 0 MaStR asset nodes from the project graph. Supports filtering by status and assetType, sorting by capacity, and offset/limit pagination. Strategic assumption nodes (Layer 2.5) are excluded — use a dedicated assumptions endpoint for those."}},"/api/znp/projects/:projectId":{"get":{"summary":"Get ZNP project metadata and graph statistics","tags":["Zielnetzplanung (ZNP)"],"operationId":"znp_getProjectMeta","parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","example":"a1b2c3d4-0000-0000-0000-000000000001"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"Returns the project metadata (bbox, name, createdAt, loaded layers) and live graph statistics (node count, edge count) from the in-memory graph. As of v0.23, graphs are persisted and hydrated on restart — 404 should not occur unless the project was explicitly deleted from PouchDB."},"delete":{"summary":"Delete a ZNP project permanently","tags":["Zielnetzplanung (ZNP)"],"operationId":"znp_deleteProject","parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","example":"a1b2c3d4-0000-0000-0000-000000000001"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"Removes the project from in-memory activeGraphs and deletes all persisted data (znp:meta and znp:graph documents) from PouchDB. This is irreversible and intended for test cleanup and workspace management. Returns success confirmation.","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}}}}}}},"/api/cookbook":{"get":{"summary":"List cookbook recipes","tags":["Cookbook"],"operationId":"cookbook_list","parameters":[{"name":"domain","in":"query","required":false,"schema":{"type":"string","example":"grid-operations"},"description":"Filter by recipe domain (exact, case-insensitive)."},{"name":"tag","in":"query","required":false,"schema":{"type":"string","example":"mastr"},"description":"Filter by tag (case-insensitive, any-of match)."},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["valid","degraded","broken","deprecated"],"example":"valid"},"description":"Filter by runtime validation status."},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"Returns all cookbook recipes with runtime metadata (status, relatedRecipes, validation timestamps)."}},"/api/cookbook/:id":{"get":{"summary":"Get a single cookbook recipe","tags":["Cookbook"],"operationId":"cookbook_get","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","example":"vnb-assets-from-name"},"description":"Unique recipe identifier."},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"Returns one recipe by id including validation status and related recipes."}},"/api/cookbook/search":{"post":{"summary":"Semantic recipe lookup","tags":["Cookbook"],"operationId":"cookbook_search","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"Finds best-matching cookbook recipes for a free-text implementation problem using Gemini embeddings with keyword fallback.","requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["query"],"properties":{"query":{"type":"string","minLength":5,"example":"How do I look up a grid operator and list its MaStR assets?"},"limit":{"type":"integer","minimum":1,"maximum":20,"default":5},"includeBroken":{"type":"boolean","default":false},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"vnbLookup":{"summary":"Find recipes for grid operator asset lookup","value":{"query":"How do I find assets for a named grid operator?"}},"validationAgent":{"summary":"Find a validation agent workflow","value":{"query":"redispatch settlement audit risk assessment","includeBroken":true}}}}}}}},"/api/cookbook/validate":{"post":{"summary":"Force cookbook validity check","tags":["Cookbook"],"operationId":"cookbook_validate","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"Re-validates all recipes against the live action registry and refreshes runtime statuses.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"summary":"Trigger a forced re-validation","value":{}}}}}}}},"/api/cookbook/health":{"get":{"summary":"Cookbook service health","tags":["Cookbook"],"operationId":"cookbook_health","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"Returns recipe counts and latest validation timestamp."}},"/api/cookbook/services":{"get":{"summary":"Live service/action catalogue for recipe generator UI","tags":["Cookbook"],"operationId":"cookbook_serviceCatalogue","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"Returns all REST-exposed actions from the live Moleculer registry."}},"/api/datasources/connector-types":{"get":{"summary":"List available connector plugin types","tags":["DataSources"],"operationId":"datasource_connector_listPlugins","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"List of available connector plugins","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":true},"count":{"type":"integer","example":6},"data":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","example":"csv"},"description":{"type":"string","example":"Read rows from a CSV or TSV file"},"configSchema":{"type":"object"},"source":{"type":"string","example":"built-in"}}}}}}}}}},"description":"Returns all loaded connector plugins with their type identifier, description, and JSON Schema for connectorConfig validation. Used by the UI to dynamically render the connector configuration form."}},"/api/tenants/:id/quotas":{"get":{"summary":"Get current quota and usage snapshot for one tenant","tags":["Tenant Quotas"],"operationId":"tenant_quota_getQuotas","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","example":"stadtwerk-a"},"description":"Tenant identifier."},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Quota snapshot for the tenant."},"403":{"description":"Tenant scope violation or missing full-access authorization."}},"description":"Phase-1 read-only quota endpoint (v0.48.4). Returns configured rate-limit defaults, active quota windows, driver info, and recent quota events for the selected tenant."},"put":{"summary":"Update tenant quota and rate-limit configuration","tags":["Tenant Quotas"],"operationId":"tenant_quota_setQuotas","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","example":"stadtwerk-a"},"description":"Tenant identifier."},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Updated tenant quota snapshot."},"403":{"description":"Tenant scope violation or missing full-access authorization."},"422":{"description":"Invalid payload (unknown keys or non-numeric values)."}},"description":"Write/admin endpoint for tenant-specific quota and endpoint-class rate-limit overrides. Requires full-access token at gateway level and tenant-scope check in service.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"rateLimits":{"type":"object","properties":{"read":{"type":"integer","minimum":0,"example":600},"write":{"type":"integer","minimum":0,"example":60},"compute":{"type":"integer","minimum":0,"example":30}}},"quotas":{"type":"object","properties":{"llm_tokens_per_day":{"type":"integer","minimum":0,"example":250000},"llm_tokens_per_month":{"type":"integer","minimum":0,"example":5000000},"max_async_jobs_per_day":{"type":"integer","minimum":0,"example":250},"max_rag_chunks_per_month":{"type":"integer","minimum":0,"example":100000}}},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}}}}}}},"/api/tenants/:id/rate-limit-events":{"get":{"summary":"List recent rate-limit and quota events for one tenant","tags":["Tenant Quotas"],"operationId":"tenant_quota_listEvents","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","example":"stadtwerk-a"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"minimum":1,"maximum":200}},{"name":"type","in":"query","required":false,"schema":{"type":"string","enum":["quota.threshold.reached","quota.exhausted","rate_limit.exceeded"],"example":"quota.threshold.reached"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Recent tenant events."}},"description":"Returns the most recent tenant-scoped quota/rate events recorded by the new rate-quota foundation layer. Phase 1 exposes read-only visibility for operational review."}},"/api/vnb-monitor/:bdewCode/nbp-monitor":{"get":{"summary":"Get Netzbetreiberprüfungs-Monitor snapshot for a VNB","tags":["VNBMonitor","NBPMonitor"],"operationId":"nbp_monitor_snapshot","parameters":[{"name":"bdewCode","in":"path","required":true,"schema":{"type":"string","example":"10002954"},"description":"BDEW registration number of the grid operator"},{"name":"refresh","in":"query","schema":{"type":"boolean","default":false},"description":"Force cache bypass and re-fetch from MaStR"},{"name":"lang","in":"query","schema":{"type":"string","enum":["de","en"],"default":"de"},"description":"Language for labels and disclaimers"},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"NBP Monitor snapshot with KPI 1/2/3","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"Aggregates MaStR installations in status 2955 (NetzbetreiberPrüfung) into three KPIs: Volume (kWp by age class), Risk (€ billing uncertainty), Process (VNB vs. external)."}},"/api/datapoints":{"post":{"summary":"Create a metadata-only datapoint directly","tags":["Datapoints"],"operationId":"datapoint_create","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"Creates a managed datapoint without session promotion. Intended for derived calculations and agentic working-memory snapshots. Raw source data is not persisted.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["name","value"],"properties":{"name":{"type":"string","example":"fa-derived-20260504-a1b2c3d4"},"value":{"type":"object","description":"Arbitrary derived value payload to persist as metadata datapoint.","example":{"status":"ok","confidence":78,"summary":"CAPEX/OPEX Delta für RP5"}},"description":{"type":"string","default":""},"owner":{"type":"string","default":"finance-agent"},"tags":{"type":"array","items":{"type":"string"},"default":["finance","derived"]},"oeoTags":{"type":"array","items":{"type":"string"},"default":["ceo:CapitalExpenditure"]},"provenance":{"type":"string","default":"finance-agent"},"metadata":{"type":"object","default":{}},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"value":{"name":"fa-derived-20260504-a1b2c3d4","value":{"status":"hypothetical_scenario","confidence":63,"summary":"What-if Ergebnis für RP5"},"tags":["finance","a2mdm","derived"],"oeoTags":["ceo:CapitalExpenditure","ceo:RegulatoryPeriod"],"provenance":"finance-agent","metadata":{"mode":"rule_plus_hyde"}}}}}}}},"get":{"summary":"List all registered Datapoints","tags":["Datapoints"],"operationId":"datapoint_list","parameters":[{"name":"sourceType","in":"query","required":false,"schema":{"type":"string","example":"agent-session"}},{"name":"includeHealth","in":"query","required":false,"schema":{"type":"boolean","default":true}},{"name":"tags","in":"query","required":false,"schema":{"type":"string","example":"solar,stromdao-netze"},"description":"Comma-separated tag filter. Returns only datapoints that have ALL specified tags (case-insensitive AND match)."},{"name":"limit","in":"query","required":false,"schema":{"type":"number","default":50,"example":50}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string","example":"eyJvZmZzZXQiOjUwfQ=="}},{"name":"offset","in":"query","required":false,"schema":{"type":"number","minimum":0,"example":0}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/datapoints/promote":{"post":{"summary":"Promote an Agent Session to a named Datapoint","tags":["Datapoints"],"operationId":"datapoint_promote","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"Creates a managed, named datapoint from an existing agent session. The plan and parameters are extracted from the session and stored in PouchDB. Raw data is NOT stored.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["sessionId","name"],"properties":{"sessionId":{"type":"string","example":"9209aa45-93f7-471c-8883-76326c4083f1"},"name":{"type":"string","example":"pv-portfolio-stromdao-netze"},"description":{"type":"string","default":""},"owner":{"type":"string","default":""},"tags":{"type":"array","items":{"type":"string"},"default":[]},"fixedParams":{"type":"object","default":{}},"refresh":{"type":"object","default":{"strategy":"manual"},"example":{"strategy":"manual"}},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"promote":{"summary":"Promote a PV forecast session","value":{"sessionId":"9209aa45-93f7-471c-8883-76326c4083f1","name":"pv-portfolio-stromdao-netze","description":"PV generation forecast for STROMDAO Netze","tags":["solar","forecast","stromdao"],"fixedParams":{"query":"STROMDAO Netze","forecastDays":3},"refresh":{"strategy":"manual"}}}}}}}}},"/api/datapoints/health/overview":{"get":{"summary":"Health overview of all Datapoints","tags":["Datapoints"],"operationId":"datapoint_health","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/datapoints/oeo-context":{"get":{"summary":"JSON-LD @context mapping datapoint fields to OEO class IRIs","tags":["Datapoints"],"operationId":"datapoint_oeoContext","parameters":[{"name":"name","in":"query","schema":{"type":"string","example":"my-datapoint"},"description":"Optional datapoint name for field-level OEO mappings"},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"Returns a JSON-LD @context document that maps datapoint field names to Open Energy Ontology (OEO) class IRIs. Optionally scoped to a specific datapoint (by name) for field-level mappings."}},"/api/datapoints/snapshot":{"post":{"summary":"Create a Snapshot — seal a consistent set of Datapoints","tags":["Datapoints"],"operationId":"datapoint_createSnapshot","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"Refreshes all specified datapoints (sequentially) if their cached data is older than `maxAgeMinutes`, then seals the consistent state as a snapshot document in PouchDB. The snapshot records each datapoint`s `provenanceHash` and a combined `snapshotHash` (SHA-256 over sorted individual hashes). Accepts either `datapointNames` (array) or `tags` (comma-separated string). Raw data is NOT stored (KRITIS constraint).","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"datapointNames":{"type":"array","items":{"type":"string"},"example":["pv-portfolio-stromdao-netze","redispatch-anlagen-stromdao-netze"]},"tags":{"type":"string","example":"stromdao-netze,redispatch-pipeline","description":"Comma-separated tag filter. Mutually exclusive with datapointNames."},"maxAgeMinutes":{"type":"number","default":60,"description":"Maximum age of a datapoint before a refresh is triggered."},"name":{"type":"string","example":"stromdao-validierung-q1-2026"},"description":{"type":"string","default":""},"createdBy":{"type":"string","enum":["manual","agent","scheduler"],"default":"manual"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"byNames":{"summary":"Snapshot by datapoint names","value":{"datapointNames":["pv-portfolio-stromdao-netze","ewk-benchmark-stromdao"],"maxAgeMinutes":60,"name":"stromdao-validierung-q1-2026","description":"Consistency check STROMDAO Netze Q1 2026"}},"byTags":{"summary":"Snapshot by tag filter","value":{"tags":"stromdao-netze,redispatch-pipeline","maxAgeMinutes":30}}}}}}}},"/api/datapoints/snapshots":{"get":{"summary":"List all Snapshots","tags":["Datapoints"],"operationId":"datapoint_listSnapshots","parameters":[{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["complete","partial","failed"],"example":"complete"},"description":"Filter snapshots by status."},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"Returns all snapshot documents stored in PouchDB, optionally filtered by status. Snapshots are listed in PouchDB key order (by creation UUID)."}},"/api/datapoints/snapshot/:id":{"get":{"summary":"Get Snapshot details by ID","tags":["Datapoints"],"operationId":"datapoint_getSnapshot","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","example":"3f1a2b4c-8e9d-4c7a-b1f2-0a3e5d6c7b8a"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"Returns the full snapshot document including per-datapoint provenance hashes, refresh status, and the last validation result."},"delete":{"summary":"Delete a Snapshot","tags":["Datapoints"],"operationId":"datapoint_removeSnapshot","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","example":"3f1a2b4c-8e9d-4c7a-b1f2-0a3e5d6c7b8a"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}}}}}}},"/api/datapoints/snapshot/:id/validate":{"post":{"summary":"Validate a Snapshot — check provenance hash consistency","tags":["Datapoints"],"operationId":"datapoint_validateSnapshot","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","example":"3f1a2b4c-8e9d-4c7a-b1f2-0a3e5d6c7b8a"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"Compares each datapoint`s current `provenanceHash` against the hash recorded at snapshot creation. Returns `consistent: true` if all hashes match, or `consistent: false` with a `drift` array listing changed datapoints. The validation result is persisted back to the snapshot document.","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"validate":{"summary":"Trigger validation (no body required)","value":{}}}}}}}},"/api/datapoints/:name/oemetadata":{"get":{"summary":"OEMetadata v2.0 — FAIR Data metadata for a Datapoint (EU AI Act Art. 12)","tags":["Datapoints"],"operationId":"datapoint_oemetadata","parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string","example":"pv-portfolio-stromdao-netze"}},{"name":"validate","in":"query","required":false,"schema":{"type":"boolean","default":false},"description":"Run ajv JSON-Schema validation against the OEMetadata v2.0 schema and append a `_validation` report to the response."},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"Returns a fully OEMetadata v2.0 conformant metadata document. Includes a SHA-256 cryptographic provenance hash (EU AI Act Art. 12), OEO semantic class mappings, spatial/temporal coverage, source licensing, and a Cernion-specific extension for agent interventions and scheduling state. Set ?validate=true to include a JSON-Schema validation report against the OEMetadata v2.0 schema (requires prior `npm run sync:oemetadata`)."}},"/api/datapoints/:name/interventions":{"get":{"summary":"Agent intervention log for a Datapoint (Issue #32)","tags":["Datapoints"],"operationId":"datapoint_interventions","parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string","example":"pv-portfolio-stromdao-netze"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"minimum":1,"maximum":500,"example":50},"description":"Maximum number of intervention entries to return (newest first)."},{"name":"since","in":"query","required":false,"schema":{"type":"string","format":"date-time","example":"2026-03-01T00:00:00Z"},"description":"ISO-8601 timestamp. Only interventions at or after this timestamp are returned."},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Agent intervention log","content":{"application/json":{"example":{"name":"pv-portfolio-stromdao-netze","total":2,"interventions":[{"timestamp":"2026-03-29T12:00:00.000Z","action":"param_repair","reason":"Corrected gridOperatorId alias from bnr to bdewCode","confidence_score":0.95,"agent_id":"executePlan"}]}}}}},"description":"Returns the `agent_interventions` array for a Datapoint — a structured log of every automated correction the agent made during plan execution. Each entry contains `timestamp`, `action`, `reason`, `confidence_score`, and `agent_id`. Use `?since=<ISO-8601>` to retrieve only recent entries. Use `?limit=N` to cap the number of returned entries (default: 50, max: 500). Satisfies the Explainable AI (XAI) auditability requirement of Issue #32."}},"/api/datapoints/:name":{"get":{"summary":"Get Datapoint details by name","tags":["Datapoints"],"operationId":"datapoint_get","parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string","example":"pv-portfolio-stromdao-netze"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}},"put":{"summary":"Update Datapoint definition","tags":["Datapoints"],"operationId":"datapoint_update","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"description":{"type":"string"},"owner":{"type":"string"},"tags":{"type":"string"},"fixedParams":{"type":"string"},"refresh":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}},"delete":{"summary":"Delete a Datapoint","tags":["Datapoints"],"operationId":"datapoint_remove","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}}},"/api/datapoints/:name/refresh":{"post":{"summary":"Refresh a Datapoint (re-execute plan, update health)","tags":["Datapoints"],"operationId":"datapoint_refresh","parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string","example":"pv-portfolio-stromdao-netze"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"Re-executes the stored plan with fixedParams via agent.executePlan. Only metadata (lastRun, health) is persisted — raw data flows through RAM.","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","required":[],"properties":{"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"refresh":{"summary":"Trigger a refresh (no body required)","value":{}}}}}}}},"/api/datapoints/:name/data":{"get":{"summary":"Get live data from a Datapoint (re-executes plan)","tags":["Datapoints"],"operationId":"datapoint_data","parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string","example":"pv-portfolio-stromdao-netze"}},{"name":"format","in":"query","required":false,"schema":{"type":"string","enum":["json","csv"],"default":"json"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"Re-executes the stored plan with fixedParams (and optional query-param overrides). Pass format=csv to receive the last step result as a CSV download."}},"/api/vnb/rcs/simulate":{"post":{"summary":"eeg-clawback-calculator.simulate","tags":["eeg-clawback-calculator"],"operationId":"eeg_clawback_calculator_simulate","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"assetId":{"type":"string"},"timeframe":{"type":"string"},"options":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}}},"/api/vnb/rcs/calculate":{"post":{"summary":"eeg-clawback-calculator.calculate","tags":["eeg-clawback-calculator"],"operationId":"eeg_clawback_calculator_calculate","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"asset":{"type":"string"},"prices":{"type":"string"},"injection":{"type":"string"},"options":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}}},"/api/vnb/rcs/assess-readiness":{"post":{"summary":"eeg-clawback-calculator.assessReadiness","tags":["eeg-clawback-calculator"],"operationId":"eeg_clawback_calculator_assessReadiness","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"assetId":{"type":"string"},"timeframe":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}}},"/api/vnb/rcs/portfolio/simulate":{"post":{"summary":"eeg-clawback-calculator.simulatePortfolio","tags":["eeg-clawback-calculator"],"operationId":"eeg_clawback_calculator_simulatePortfolio","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"assetIds":{"type":"string"},"timeframe":{"type":"string"},"options":{"type":"string"},"executionMode":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}}},"/api/vnb/rcs/portfolio/assess-readiness":{"post":{"summary":"eeg-clawback-calculator.assessPortfolioReadiness","tags":["eeg-clawback-calculator"],"operationId":"eeg_clawback_calculator_assessPortfolioReadiness","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"assetIds":{"type":"string"},"timeframe":{"type":"string"},"executionMode":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}}},"/api/vnb/rcs/runs":{"post":{"summary":"rcs-simulation-run.saveRun","tags":["rcs-simulation-run"],"operationId":"rcs_simulation_run_saveRun","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"assetId":{"type":"string"},"timeframe":{"type":"string"},"summary":{"type":"string"},"assetName":{"type":"string"},"assetIds":{"type":"string"},"scope":{"type":"string"},"ruleSetId":{"type":"string"},"ruleSetVersion":{"type":"string"},"legalStatus":{"type":"string"},"blueprintId":{"type":"string"},"options":{"type":"string"},"ruleSetSnapshot":{"type":"string"},"assetSnapshot":{"type":"string"},"readinessSnapshot":{"type":"string"},"inputHash":{"type":"string"},"priceSeriesHash":{"type":"string"},"injectionSeriesHash":{"type":"string"},"priceSeries":{"type":"string"},"injectionSeries":{"type":"string"},"warnings":{"type":"string"},"jobId":{"type":"string"},"executionMode":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}},"get":{"summary":"rcs-simulation-run.listRuns","tags":["rcs-simulation-run"],"operationId":"rcs_simulation_run_listRuns","parameters":[{"$ref":"#/components/parameters/TokenQuery"},{"name":"assetId","in":"query","required":false,"schema":{"type":"string"}},{"name":"ruleSetId","in":"query","required":false,"schema":{"type":"string"}},{"name":"jobId","in":"query","required":false,"schema":{"type":"string"}},{"name":"executionMode","in":"query","required":false,"schema":{"type":"string"}},{"name":"status","in":"query","required":false,"schema":{"type":"string"}},{"name":"from","in":"query","required":false,"schema":{"type":"string"}},{"name":"to","in":"query","required":false,"schema":{"type":"string"}},{"name":"includeDeleted","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"limit","in":"query","required":false,"schema":{"type":"number"}},{"name":"offset","in":"query","required":false,"schema":{"type":"number"}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/vnb/rcs/runs/:runId":{"get":{"summary":"rcs-simulation-run.getRun","tags":["rcs-simulation-run"],"operationId":"rcs_simulation_run_getRun","parameters":[{"$ref":"#/components/parameters/TokenQuery"},{"name":"runId","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}},"delete":{"summary":"rcs-simulation-run.deleteRun","tags":["rcs-simulation-run"],"operationId":"rcs_simulation_run_deleteRun","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"runId":{"type":"string"},"deletedBy":{"type":"string"},"deleteReason":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}}},"/api/vnb/rcs/runs/:runId/assets":{"get":{"summary":"rcs-simulation-run.listRunAssets","tags":["rcs-simulation-run"],"operationId":"rcs_simulation_run_listRunAssets","parameters":[{"$ref":"#/components/parameters/TokenQuery"},{"name":"runId","in":"query","required":false,"schema":{"type":"string"}},{"name":"status","in":"query","required":false,"schema":{"type":"string"}},{"name":"readinessStatus","in":"query","required":false,"schema":{"type":"string"}},{"name":"technology","in":"query","required":false,"schema":{"type":"string"}},{"name":"q","in":"query","required":false,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"number"}},{"name":"offset","in":"query","required":false,"schema":{"type":"number"}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/vnb/rcs/runs/:runId/assets/:assetId":{"get":{"summary":"rcs-simulation-run.getRunAsset","tags":["rcs-simulation-run"],"operationId":"rcs_simulation_run_getRunAsset","parameters":[{"$ref":"#/components/parameters/TokenQuery"},{"name":"runId","in":"query","required":false,"schema":{"type":"string"}},{"name":"assetId","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/vnb/rcs/runs/:runId/errors":{"get":{"summary":"rcs-simulation-run.listRunErrors","tags":["rcs-simulation-run"],"operationId":"rcs_simulation_run_listRunErrors","parameters":[{"$ref":"#/components/parameters/TokenQuery"},{"name":"runId","in":"query","required":false,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"number"}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/vnb/rcs/rules":{"get":{"summary":"rcs-rule-catalog.listRuleSets","tags":["rcs-rule-catalog"],"operationId":"rcs_rule_catalog_listRuleSets","parameters":[{"$ref":"#/components/parameters/TokenQuery"},{"name":"status","in":"query","required":false,"schema":{"type":"string"}},{"name":"legalStatus","in":"query","required":false,"schema":{"type":"string"}},{"name":"calculationMode","in":"query","required":false,"schema":{"type":"string"}},{"name":"includeSuperseded","in":"query","required":false,"schema":{"type":"boolean"}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/vnb/rcs/rules/:ruleSetId":{"get":{"summary":"rcs-rule-catalog.getRuleSet","tags":["rcs-rule-catalog"],"operationId":"rcs_rule_catalog_getRuleSet","parameters":[{"$ref":"#/components/parameters/TokenQuery"},{"name":"ruleSetId","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/vnb/rcs/runs/:runId/assets/:assetId/drilldown":{"post":{"summary":"eeg-clawback-calculator.drilldownAsset","tags":["eeg-clawback-calculator"],"operationId":"eeg_clawback_calculator_drilldownAsset","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"runId":{"type":"string"},"assetId":{"type":"string"},"persistTrace":{"type":"boolean"},"executionMode":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}}},"/api/vnb/rcs/runs/:runId/assets/:assetId/trace":{"get":{"summary":"rcs-simulation-run.getTrace","tags":["rcs-simulation-run"],"operationId":"rcs_simulation_run_getTrace","parameters":[{"$ref":"#/components/parameters/TokenQuery"},{"name":"runId","in":"query","required":false,"schema":{"type":"string"}},{"name":"assetId","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/vnb/rcs/runs/:runId/readiness":{"get":{"summary":"rcs-simulation-run.getRunReadiness","tags":["rcs-simulation-run"],"operationId":"rcs_simulation_run_getRunReadiness","parameters":[{"$ref":"#/components/parameters/TokenQuery"},{"name":"runId","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/eog-calculator/validate-datapoints":{"post":{"summary":"Validate submitted EOG datapoints without persisting them","tags":["EOG Calculator"],"operationId":"eog_calculator_validateDatapoints","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["tenantId","vnbId","datapoints"],"properties":{"tenantId":{"type":"string","example":"tenant-a"},"vnbId":{"type":"string","example":"SNB100"},"datapoints":{"type":"array","items":{"type":"object"},"example":[{"key":"eog.base_cost_level","value":1000,"periodYear":2026,"sector":"strom","source":"tenant_uploaded","confidence":"confirmed"}]},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"value":{"tenantId":"tenant-a","vnbId":"SNB100","datapoints":[{"key":"eog.base_cost_level","value":1000,"periodYear":2026,"sector":"strom","source":"tenant_uploaded","confidence":"confirmed"}]}}}}}}}},"/api/eog-calculator/commit-datapoints":{"post":{"summary":"Commit EOG datapoints only after successful validation or explicit HITL confirmation","tags":["EOG Calculator"],"operationId":"eog_calculator_commitDatapoints","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["validationId"],"properties":{"validationId":{"type":"string","example":"validation-uuid"},"hitlConfirmation":{"type":"object","example":{"approved":true,"decision":"manual_confirm"}},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"value":{"validationId":"validation-uuid","hitlConfirmation":{"approved":true,"decision":"manual_confirm"}}}}}}}}},"/api/vdmi/tenants/:tenantId/matrices/:matrixId":{"patch":{"summary":"vdmi-human-override.override","tags":["VDMI Governance"],"operationId":"vdmi_human_override_override","parameters":[{"name":"tenantId","in":"path","required":true,"description":"Tenant ID"},{"name":"matrixId","in":"path","required":true,"description":"Matrix ID to override"},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Matrix override successful","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"tenantId":{"type":"string"},"status":{"type":"string"},"version":{"type":"number"},"auditEntry":{"type":"object"}}}}}},"403":{"description":"Insufficient permissions"},"422":{"description":"Validation error"}},"description":"Override LLM-inferred matrix roles with mandatory audit trail","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"overrides":{"type":"object","description":"Role assignments to override","properties":{"roles":{"type":"array","items":{"type":"object","properties":{"roleId":{"type":"string"},"assignments":{"type":"object"},"precedenceScore":{"type":"number"}}}}}},"rationale":{"type":"string","minLength":20,"description":"Mandatory justification (min 20 chars)"},"changeCategory":{"type":"string","enum":["organizational_change","data_correction","compliance","other"]},"urgency":{"type":"string","enum":["low","medium","high"]},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":["overrides","rationale","changeCategory"]}}}}}},"/api/vdmi/tenants/:tenantId/matrices/:matrixId/revert":{"post":{"summary":"vdmi-human-override.revert","tags":["VDMI Governance"],"operationId":"vdmi_human_override_revert","parameters":[{"name":"tenantId","in":"path","required":true},{"name":"matrixId","in":"path","required":true},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Matrix reverted successfully"},"409":{"description":"Concurrent modification conflict"}},"description":"Rollback matrix to previous version with audit trail","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"targetVersion":{"type":"number","description":"Target version to revert to"},"reason":{"type":"string","minLength":10,"description":"Reason for revert"},"notifyStakeholders":{"type":"boolean","description":"Send notifications"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":["targetVersion","reason"]}}}}}},"/api/vdmi/tenants/:tenantId/tasks/:taskId/negotiation-trace":{"get":{"summary":"vdmi-spectator.negotiationTrace","tags":["VDMI Governance"],"operationId":"vdmi_spectator_negotiationTrace","parameters":[{"name":"tenantId","in":"path","required":true},{"name":"taskId","in":"path","required":true},{"name":"phase","in":"query","schema":{"type":"string","enum":["all","proposal","consensus","conflict_resolution"]},"description":"Filter by negotiation phase"},{"name":"agentFilter","in":"query","schema":{"type":"string"},"description":"Comma-separated agent IDs"},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Complete negotiation trace","content":{"application/json":{"schema":{"type":"object","properties":{"taskId":{"type":"string"},"tenantId":{"type":"string"},"negotiationPhase":{"type":"string"},"totalRounds":{"type":"number"},"consensusReachedAt":{"type":"string","format":"date-time"},"trace":{"type":"array","items":{"type":"object"}},"consensusMatrix":{"type":"object"}}}}}},"403":{"description":"Access denied"}},"description":"View complete agent negotiation dialog with reasoning"}},"/api/vdmi/tenants/:tenantId/tasks/:taskId/dossier":{"get":{"summary":"vdmi-spectator.dossier","tags":["VDMI Governance"],"operationId":"vdmi_spectator_dossier","parameters":[{"name":"tenantId","in":"path","required":true},{"name":"taskId","in":"path","required":true},{"name":"format","in":"query","schema":{"type":"string","enum":["json","html","pdf"]},"description":"Output format"},{"name":"includeDelta","in":"query","schema":{"type":"boolean"},"description":"Include differences from previous version"},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Governance dossier document","content":{"application/json":{"schema":{"type":"object","properties":{"dossier":{"type":"object","properties":{"id":{"type":"string"},"taskId":{"type":"string"},"summary":{"type":"object"},"executive_summary":{"type":"string"},"governance_checks":{"type":"object"}}}}}}}}},"description":"Get formatted governance dossier for stakeholder review"}},"/api/vdmi/tenants/:tenantId/findings":{"get":{"summary":"vdmi-findings.list","tags":["VDMI Governance"],"operationId":"vdmi_findings_list","parameters":[{"name":"tenantId","path":true,"required":true},{"name":"status","query":true,"description":"Comma-separated statuses"},{"name":"severity","query":true,"description":"Critical, high, medium, low"},{"name":"limit","query":true,"description":"Result limit"},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"List of findings","content":{"application/json":{"schema":{"type":"object","properties":{"tenantId":{"type":"string"},"totalFindings":{"type":"number"},"findings":{"type":"array","items":{"type":"object"}}}}}}}},"description":"List all governance findings for tenant"}},"/api/vdmi/tenants/:tenantId/findings/:findingId/mitigate":{"post":{"summary":"vdmi-findings.mitigate","tags":["VDMI Governance"],"operationId":"vdmi_findings_mitigate","parameters":[{"name":"tenantId","in":"path","required":true},{"name":"findingId","in":"path","required":true},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"201":{"description":"Mitigation accepted"},"422":{"description":"Validation error"}},"description":"Submit mitigation plan for a finding","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"mitigationStrategy":{"type":"string","enum":["manual_evidence_injection","process_correction","policy_exception"]},"proposedActions":{"type":"array","items":{"type":"object"}},"riskAssessment":{"type":"object"},"approvalRequired":{"type":"boolean"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":["mitigationStrategy","proposedActions"]}}}}}},"/api/vdmi/tenants/:tenantId/findings/:findingId/resolve":{"post":{"summary":"vdmi-findings.resolve","tags":["VDMI Governance"],"operationId":"vdmi_findings_resolve","parameters":[{"name":"tenantId","in":"path","required":true},{"name":"findingId","in":"path","required":true},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Finding resolved"},"403":{"description":"Insufficient permissions"}},"description":"Resolve a finding with proof","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"resolutionType":{"type":"string","enum":["mitigated_with_evidence","accepted_risk","policy_exception"]},"justification":{"type":"string"},"evidenceProof":{"type":"object"},"applyChanges":{"type":"boolean"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":["resolutionType","justification"]}}}}}},"/api/vdmi/tenants/:tenantId/tasks/:taskId/evidence":{"post":{"summary":"vdmi-evidence.inject","tags":["VDMI Governance"],"operationId":"vdmi_evidence_inject","parameters":[{"name":"tenantId","path":true,"required":true},{"name":"taskId","path":true,"required":true},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"201":{"description":"Evidence injected successfully"},"409":{"description":"Task already approved"},"422":{"description":"Invalid evidence category"}},"description":"Inject manual evidence for dual-evidence requirement","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"evidenceType":{"type":"string","enum":["manual_confirmation","attestation","document"]},"category":{"type":"string","enum":["hr_confirmation","manager_attestation","legal_exception","legacy_system_mapping"]},"data":{"type":"object"},"affectedMatrix":{"type":"object"},"sourceQuality":{"type":"string","enum":["low","medium","high"]},"signatureRequired":{"type":"boolean"},"rationale":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":["evidenceType","category","data","rationale"]}}}}}},"/api/vdmi/tenants/:tenantId/evidence/:evidenceId/sign":{"post":{"summary":"vdmi-evidence.sign","tags":["vdmi-evidence"],"operationId":"vdmi_evidence_sign","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}}}}}}},"/api/jobs/:jobId/status":{"get":{"summary":"Poll async job status","tags":["Jobs"],"operationId":"job_status_status","parameters":[{"name":"jobId","in":"path","required":true,"schema":{"type":"string","example":"a3f8b2c1-..."},"description":"Job UUID returned by the 202 response"},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Job status record","content":{"application/json":{"schema":{"type":"object","properties":{"jobId":{"type":"string"},"service":{"type":"string","description":"Originating service name"},"action":{"type":"string","description":"Originating action name"},"status":{"type":"string","enum":["queued","running","recovery_pending","completed","error"]},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"completedAt":{"type":"string","format":"date-time","nullable":true},"error":{"type":"string","nullable":true},"location":{"type":"string","description":"URL of this status endpoint (for polling)"},"resultUrl":{"type":"string","nullable":true,"description":"Result URL — only set when status is \"completed\""}}},"examples":{"queued":{"summary":"Job queued","value":{"jobId":"a3f8b2c1-0000-0000-0000-000000000001","service":"grid-operations","action":"gridData","status":"queued","createdAt":"2026-03-19T10:00:00.000Z","updatedAt":"2026-03-19T10:00:00.000Z","completedAt":null,"error":null,"location":"/api/jobs/a3f8b2c1-0000-0000-0000-000000000001/status","resultUrl":null}},"completed":{"summary":"Job completed","value":{"jobId":"a3f8b2c1-0000-0000-0000-000000000001","service":"grid-operations","action":"gridData","status":"completed","createdAt":"2026-03-19T10:00:00.000Z","updatedAt":"2026-03-19T10:08:00.000Z","completedAt":"2026-03-19T10:08:00.000Z","error":null,"location":"/api/jobs/a3f8b2c1-0000-0000-0000-000000000001/status","resultUrl":"/api/jobs/a3f8b2c1-0000-0000-0000-000000000001/result"}}}}}},"404":{"description":"Job not found (unknown ID or TTL expired)","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"message":{"type":"string"}}}}}}},"description":"Poll the status of a background job started by a long-running endpoint (v0.9.8+).\n\n**Status values**:\n- **queued** — job is registered, worker starting soon\n- **running** — worker is executing (MCP polling in progress)\n- **completed** — result is available at `resultUrl`\n- **error** — worker failed; see `error` field\n\n**Polling strategy**: start polling 5 s after submission, then every 10–30 s.\nMost jobs complete within 8–12 minutes."}},"/api/jobs/:jobId/progress":{"get":{"summary":"Get job progress (JSON polling or SSE)","tags":["Jobs"],"operationId":"job_status_progress","parameters":[{"name":"jobId","in":"path","required":true,"schema":{"type":"string","example":"a3f8b2c1-..."}},{"name":"stream","in":"query","required":false,"schema":{"type":"boolean","default":false},"description":"Set true to receive text/event-stream output."},{"name":"lastEventId","in":"query","required":false,"schema":{"type":"string","example":"3"},"description":"Optional replay cursor when headers cannot be set by the client."},{"name":"Last-Event-ID","in":"header","required":false,"schema":{"type":"string","example":"3"},"description":"SSE replay cursor. Events with greater IDs are returned."},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Progress payload (JSON) or SSE stream (text/event-stream)"},"404":{"description":"Job not found (unknown ID or TTL expired)"}},"description":"Returns normalized job progress. Use query `stream=true` for text/event-stream output. SSE supports `Last-Event-ID` replay (or `lastEventId` query fallback)."}},"/api/jobs/:jobId/result":{"get":{"summary":"Retrieve async job result","tags":["Jobs"],"operationId":"job_status_result","parameters":[{"name":"jobId","in":"path","required":true,"schema":{"type":"string","example":"a3f8b2c1-..."},"description":"Job UUID returned by the 202 response"},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Job result payload (original MCP tool response)","content":{"application/json":{"schema":{"type":"object"}}}},"202":{"description":"Job not yet completed — poll status endpoint","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"status":{"type":"string"},"message":{"type":"string"},"location":{"type":"string"}}}}}},"404":{"description":"Job not found or result expired","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"message":{"type":"string"}}}}}}},"description":"Retrieve the full result payload of a completed async job.\n\nReturns **202** if the job is still running — poll `/status` first.\nReturns **404** if the job ID is unknown or the result has expired (24 h TTL)."}},"/api/jobs/:jobId/wake-up":{"post":{"summary":"Trigger idempotent wake-up for a recovery_pending async job","tags":["Jobs"],"operationId":"job_status_wakeUp","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":false,"content":{"application/json":{"examples":{"default":{"value":{"jobId":"a3f8b2c1-0000-0000-0000-000000000001","idempotencyKey":"ck:wakeup:tenant-1:monitor:123","reason":"manual"}}},"schema":{"type":"object","required":["jobId"],"properties":{"jobId":{"type":"string","example":"a3f8b2c1-0000-0000-0000-000000000001"},"idempotencyKey":{"type":"string","maxLength":256,"example":"ck:wakeup:tenant-1:monitor:123"},"reason":{"type":"string","maxLength":120,"example":"manual"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}}}}}}},"/api/jobs/alarms":{"get":{"summary":"List persistent async watchdog alarms","tags":["Jobs"],"operationId":"job_status_listAlarms","parameters":[{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["open","acknowledged","resolved"],"default":"open","example":"open"}},{"name":"jobId","in":"query","required":false,"schema":{"type":"string","example":"a3f8b2c1-0000-0000-0000-000000000001"}},{"name":"limit","in":"query","required":false,"schema":{"type":"number","default":100,"minimum":1,"maximum":1000}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/jobs/alarms/:alarmId/ack":{"post":{"summary":"Acknowledge persistent async watchdog alarm","tags":["Jobs"],"operationId":"job_status_acknowledgeAlarm","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":false,"content":{"application/json":{"examples":{"default":{"value":{"alarmId":"alarm_abc123","actor":"hitl-user","note":"Investigating this alert."}}},"schema":{"type":"object","required":["alarmId"],"properties":{"alarmId":{"type":"string","example":"alarm_abc123"},"actor":{"type":"string","maxLength":120,"example":"hitl-user"},"note":{"type":"string","maxLength":1000,"example":"Investigating this alert."},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}}}}}}},"/api/jobs/alarms/:alarmId/resolve":{"post":{"summary":"Resolve persistent async watchdog alarm","tags":["Jobs"],"operationId":"job_status_resolveAlarm","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":false,"content":{"application/json":{"examples":{"default":{"value":{"alarmId":"alarm_abc123","actor":"problem-solver-agent","note":"Recovery completed successfully."}}},"schema":{"type":"object","required":["alarmId"],"properties":{"alarmId":{"type":"string","example":"alarm_abc123"},"actor":{"type":"string","maxLength":120,"example":"problem-solver-agent"},"note":{"type":"string","maxLength":1000,"example":"Recovery completed successfully."},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}}}}}}},"/api/redispatch/audit":{"post":{"summary":"Run Redispatch Ex-Post settlement audit (7-step, deterministic)","tags":["Redispatch Ex-Post"],"operationId":"redispatch_expost_audit","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"RedispatchAuditReport with settlementReadiness, riskAssessment, and findings","content":{"application/json":{"example":{"success":true,"id":"a1b2c3d4-...","settlementReadiness":{"totalInstallations":59,"readyForSettlement":52,"readinessPercent":88.1,"blockedInstallations":7},"riskAssessment":{"riskLevel":"medium","estimatedLostCompensationEur":28500,"curtailmentGWh":4.8,"blockedFractionPercent":11.9},"summary":{"findingsCount":{"info":5,"warning":9,"error":4},"durationMs":12800}}}}},"202":{"description":"REST/Gateway call accepted as async job. Poll /api/jobs/:jobId/status and /api/jobs/:jobId/result.","content":{"application/json":{"example":{"success":true,"jobId":"f8d2d8d4-4f22-4a0a-bec7-a9f05ad6b9e6","status":"queued","statusUrl":"/api/jobs/f8d2d8d4-4f22-4a0a-bec7-a9f05ad6b9e6/status","resultUrl":"/api/jobs/f8d2d8d4-4f22-4a0a-bec7-a9f05ad6b9e6/result"}}}}},"description":"Executes a deterministic 7-step Redispatch 2.0 Ex-Post settlement audit for a VNB: VNB identity → portfolio inventory (≥100 kW) → master data validation → Netztransparenz curtailment correlation → settlement readiness → financial risk assessment → audit trail. Returns settlementReadiness (% of installations ready for A96 settlement) and riskAssessment (estimated lost compensation in €). No LLM involvement — identical inputs always produce identical finding codes. Steps 3–6 can be skipped via the skipSteps parameter; steps 1, 2, and 7 are mandatory.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"gridOperatorId":{"type":"string","description":"MaStR grid operator ID (SNB.../GNB...)","example":"SNB935578300972"},"gridOperatorBdew":{"type":"string","description":"13-digit BDEW market-partner code","example":"9907473000008"},"gridOperatorName":{"type":"string","description":"Grid operator name (fuzzy match)","example":"STROMDAO Netze"},"dateFrom":{"type":"string","format":"date","description":"Start of audit period (ISO date) for Netztransparenz correlation","example":"2026-01-01"},"dateTo":{"type":"string","format":"date","description":"End of audit period (ISO date) for Netztransparenz correlation","example":"2026-03-31"},"datapointTags":{"type":"array","items":{"type":"string"},"description":"Tags for Weg B datapoint fallback (portfolio data)","example":["stromdao-netze","redispatch-portfolio"]},"maxAgeMinutes":{"type":"integer","default":120,"description":"Datapoint freshness threshold in minutes (Weg B)"},"skipSteps":{"type":"array","items":{"type":"integer"},"description":"Steps to skip (valid: 3–6; steps 1, 2, 7 are mandatory)","example":[4]},"avgCompensationEurPerMWh":{"type":"number","default":50,"description":"Average Redispatch compensation rate in €/MWh for risk calculation"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"By MaStR ID, full quarter":{"value":{"gridOperatorId":"SNB935578300972","dateFrom":"2026-01-01","dateTo":"2026-03-31"}},"By BDEW, skip curtailment":{"value":{"gridOperatorBdew":"9907473000008","skipSteps":[4]}},"Weg B — use tagged datapoint":{"value":{"gridOperatorId":"SNB935578300972","datapointTags":["stromdao-netze","redispatch-portfolio"],"maxAgeMinutes":60,"dateFrom":"2026-01-01","dateTo":"2026-03-31"}}}}}}}},"/api/redispatch/audits":{"get":{"summary":"List past Redispatch Ex-Post audit reports","tags":["Redispatch Ex-Post"],"operationId":"redispatch_expost_list","parameters":[{"name":"gridOperatorId","in":"query","schema":{"type":"string","example":"SNB935578300972"},"description":"Filter by MaStR grid operator ID"},{"name":"limit","in":"query","schema":{"type":"integer","default":20,"maximum":100},"description":"Maximum number of results"},{"name":"cursor","in":"query","required":false,"schema":{"type":"string","example":"eyJvZmZzZXQiOjIwfQ=="}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"example":0}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"List of audit report summaries","content":{"application/json":{"example":{"count":2,"audits":[{"id":"...","gridOperator":{"name":"STROMDAO Netze"},"settlementReadiness":{"readinessPercent":88.1},"riskAssessment":{"riskLevel":"medium"},"createdAt":"2026-03-31T..."}]}}}}},"description":"Returns audit reports stored in PouchDB, newest first. Filter by gridOperatorId."}},"/api/redispatch/audits/:id":{"get":{"summary":"Get a specific Redispatch Ex-Post audit report by ID","tags":["Redispatch Ex-Post"],"operationId":"redispatch_expost_get","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","example":"a1b2c3d4-1234-5678-90ab-cdef12345678"},"description":"Audit report UUID"},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Full RedispatchAuditReport document"},"404":{"description":"Audit report not found"}},"description":"Returns the full RedispatchAuditReport document including all findings."}},"/api/netzfahrplan/generate":{"post":{"summary":"Generate Netzfahrplan / fNAV feasibility assessment","tags":["Netzfahrplan / fNAV"],"operationId":"grid_operations_netzfahrplanGenerate","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"fNAV feasibility assessment result","content":{"application/json":{"schema":{"type":"object","properties":{"capacityModel":{"type":"object","description":"Normalised capacity model"},"n1Check":{"type":"object","description":"N-1 compliance result"},"feasibility":{"type":"string","enum":["feasible","conditional","copper_needed"],"description":"Technical feasibility verdict"},"governanceStatus":{"type":"string","description":"Governance decision status"},"governanceBlockers":{"type":"array","items":{"type":"string"}},"contractGate":{"type":"object","description":"Explicit contract-gate assessment for grid-signal priority and control evidence"},"governanceArtifact":{"type":"object","nullable":true,"description":"Optional interface-placeholder / HITL artifact created for governance blockers"},"decisionChain":{"type":"array","items":{"type":"object"},"description":"Additive six-step A²MDM trace for the Phase-5 decision"},"proof":{"type":"object","description":"Compact proof/provenance payload for audit-friendly handoff"},"findings":{"type":"array","items":{"type":"object"}},"metadata":{"type":"object"}}}}}}},"description":"Deterministic fNAV feasibility assessment — evaluates whether a flexible Netzanschlussvertrag (§14a EnWG) is a viable alternative to conventional grid expansion.\n\n**Capacity model (Option B):**\n- firmCapacityKW: guaranteed, contractually fixed power\n- flexibleCapacityKW: legally curtailable portion under §14a\n- resultingEffectiveCapacityKW: firm + flexible × (1 − curtailmentFactor)\n\n**N-1 threshold (Option C — hybrid default + override):**\n- Domain defaults: HS=81 MVA, MS=20 MVA, NS=0.63 MVA (env-configurable)\n- tenant/project/scenario overrides are applied in priority order\n- Result always reports thresholdMVA, thresholdSource, and overrideApplied\n\n**Governance (Option B):**\n- Technical feasibility is reported deterministically\n- Final governanceStatus is `requires_governance_decision` until legalStatus=approved AND contractStatus=signed\n- Flexible profiles should explicitly document Netzsignal-Vorrang plus a control-evidence reference for the contract gate","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["requestedCapacityKW"],"properties":{"gridOperatorId":{"type":"string","description":"MaStR grid operator ID","example":"SNB935578300972"},"gridOperatorName":{"type":"string","description":"Grid operator name","example":"STROMDAO Netze"},"voltageLevel":{"type":"string","enum":["NS","MS","HS"],"default":"MS","description":"Voltage level of the connection point"},"requestedCapacityKW":{"type":"number","description":"Requested connection capacity in kW","example":5000},"firmCapacityKW":{"type":"number","description":"Guaranteed firm capacity in kW (defaults to requestedCapacityKW if omitted)","example":3000},"flexibleCapacityKW":{"type":"number","default":0,"description":"Curtailable flex capacity in kW under §14a","example":2000},"curtailmentWindow":{"type":"number","default":0,"description":"Max hours per day the VNB may curtail (0–24)","example":4},"operatingConstraint":{"type":"string","description":"Free-text operating constraint","example":"§14a max 2h/event, 30-min notice"},"signalPriorityPolicy":{"type":"string","description":"Optional contract-gate wording that explicitly documents grid-signal priority over schedule/market optimisation","example":"Netzsignal Vorrang vor Vermarktungs- und Fahrplanoptimierung"},"controlEvidenceRef":{"type":"string","description":"Optional reference to the control/remote-control evidence backing the contract gate","example":"SCADA-ATTACHMENT-42 / Fernwirknachweis 2026-05"},"contractStatus":{"type":"string","description":"Contract status","example":"negotiating"},"legalStatus":{"type":"string","description":"Legal/regulatory status","example":"pending"},"ownerContact":{"type":"string","description":"Responsible owner or contact (required for governance approval)","example":"netzplanung@stromdao.de"},"n1ThresholdOverride":{"type":"object","example":{"project":78},"description":"Override N-1 thresholds (MVA) at tenant/project/scenario level","properties":{"tenant":{"type":"number","example":85},"project":{"type":"number","example":78},"scenario":{"type":"number","example":70}}},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"fNAV hybrid MS":{"value":{"gridOperatorName":"STROMDAO Netze","voltageLevel":"MS","requestedCapacityKW":5000,"firmCapacityKW":3000,"flexibleCapacityKW":2000,"curtailmentWindow":4,"operatingConstraint":"§14a max 2h/event","signalPriorityPolicy":"Netzsignal Vorrang vor Vermarktungs- und Fahrplanoptimierung","controlEvidenceRef":"SCADA-ATTACHMENT-42 / Fernwirknachweis 2026-05","contractStatus":"negotiating","legalStatus":"pending","ownerContact":"netzplanung@stromdao.de"}},"static cap HS with override":{"value":{"gridOperatorId":"SNB935578300972","voltageLevel":"HS","requestedCapacityKW":75000,"firmCapacityKW":75000,"contractStatus":"signed","legalStatus":"approved","n1ThresholdOverride":{"project":78}}}}}}}}},"/api/copilot/ask-cernion-agent":{"post":{"summary":"Ask Cernion for compact evidence, guardrails and process context","tags":["Personal Agent"],"operationId":"askCernionAgent","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Compact Cernion answer for Copilot composition","content":{"application/json":{"schema":{"type":"object","required":["success","shortAnswer","groundingAnswer","evidence","processContext","openQuestions","recommendedNextSteps","allowedActions","forbiddenActions"],"properties":{"success":{"type":"boolean"},"sessionId":{"type":"string"},"question":{"type":"string"},"shortAnswer":{"type":"string"},"groundingAnswer":{"type":"string","description":"Prompt-ready Cernion grounding package for Copilot composition. Contains user question, answer, evidence, guardrails, risks, open questions and answer rules in one text field."},"consultingBrief":{"type":"string","description":"Optional backend-generated consulting brief for Copilot. It structures the evidence but is not a standalone source of facts."},"confidence":{"type":"string","enum":["high","medium","low"]},"evidence":{"type":"array","items":{"type":"object","properties":{"source":{"type":"string"},"value":{"type":"string"},"retrievalHint":{"type":"string","description":"Optional vector/retrieval text for topic orientation; not standalone answer evidence."}}}},"processContext":{"type":"array","items":{"type":"string"}},"evidenceBySource":{"type":"object","additionalProperties":true,"description":"Evidence grouped by source: entities, knowledge, datapoints, and object-store objects."},"guardrails":{"type":"array","items":{"type":"string"},"description":"Instructions Copilot must apply before composing the final answer."},"entities":{"type":"array","items":{"type":"string"}},"risks":{"type":"array","items":{"type":"string"}},"openQuestions":{"type":"array","items":{"type":"string"}},"recommendedNextSteps":{"type":"array","items":{"type":"string"}},"allowedActions":{"type":"array","items":{"type":"string"}},"forbiddenActions":{"type":"array","items":{"type":"string"}},"routing":{"type":"object","additionalProperties":true},"resolved":{"type":"object","description":"Blueprint/Capability resolution outcome (energychain/cernion-energy-tools#271). kind is \"blueprint\" when a read-only execution plan was compiled, \"none\" otherwise.","properties":{"kind":{"type":"string","enum":["blueprint","none"]},"id":{"type":"string"},"version":{"type":"string"},"source":{"type":"string"}}},"canonicalInputs":{"type":"object","additionalProperties":true,"description":"Normalized inputs used to compile the execution plan, if any."},"recommendedEndpoints":{"type":"array","description":"Read-only endpoint recommendations (energychain/cernion-energy-tools#271 architecture follow-up). Cernion recommends which approved read-only endpoint(s) are the evidence surface for this request and what each result set means fachlich — it does not execute them or synthesize a final answer; that is the responsibility of the consuming agent/orchestrator. May contain more than one complementary endpoint.","items":{"type":"object","properties":{"method":{"type":"string","example":"GET"},"path":{"type":"string","example":"/api/assets/solar"},"query":{"type":"object","additionalProperties":true},"resultSemantics":{"type":"object","description":"Fachliche Bedeutung des Result-Sets dieses Endpoints.","properties":{"kind":{"type":"string","example":"asset_list"},"description":{"type":"string"}}}}}},"execution":{"type":"object","nullable":true,"description":"Alias of recommendedEndpoints[0] for backward compatibility with #271 consumers that only read a single plan, or null when none is available.","properties":{"mode":{"type":"string","example":"read_only_rest_plan"},"method":{"type":"string","example":"GET"},"path":{"type":"string","example":"/api/assets/solar"},"query":{"type":"object","additionalProperties":true}}},"policy":{"type":"object","properties":{"readOnly":{"type":"boolean"},"sideEffects":{"type":"string"},"tenantScoped":{"type":"boolean"},"externalSideEffects":{"type":"boolean"}}},"noPlanReason":{"type":"string","description":"Present when resolved.kind is \"none\" — explains why no executable read-only plan was available."}}}}}}},"description":"Read-only Copilot action. Returns compact structured evidence and guardrails from Cernion entity search, Knowledge RAG, datapoints and object-store context. It does not run the heavy Personal Agent chat path and does not execute, confirm, sign, delete or modify process data.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["question"],"properties":{"question":{"type":"string","minLength":1,"maxLength":8000,"description":"User question to answer with Cernion evidence and process context.","example":"Welcher VNB ist in Wiesloch zuständig?"},"sessionId":{"type":"string","description":"Optional stable Copilot conversation/session identifier."},"context":{"type":"object","additionalProperties":true,"description":"Optional tenant, user, object, process or document context."},"inputs":{"type":"object","additionalProperties":true,"description":"Optional canonical structured input values (e.g. assetType, location, minCapacity, maxCapacity, commissioningYear, limit) for Blueprint read-only REST-plan compilation. Separate from `context`.","example":{"assetType":"solar","location":"69168","minCapacity":10,"maxCapacity":13,"commissioningYear":2025,"limit":100}},"domain":{"type":"string","enum":["auto","vnb","vdmi","znp","grid-connection","edm","finance","process"],"default":"auto","description":"Optional domain hint for routing."},"mode":{"type":"string","enum":["answer","evidence","process_check","prepare_intent"],"default":"answer","description":"Controls whether the answer should focus on evidence or process checks."},"maxEvidence":{"type":"integer","minimum":1,"maximum":12,"default":5,"description":"Maximum number of evidence items returned."},"includeFederatedKnowledge":{"type":"boolean","default":false,"description":"Opt-in only (default false, does not change the default evidence sources/output shape). When true, additionally queries `knowledge-rag.federatedSearch` (Marktkommunikation/regulatory collections) and includes it as an advisory `evidenceBySource.federatedKnowledge` entry."},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}}}}}}},"/api/copilot/answer-dossier":{"post":{"summary":"Generate a Cernion Answer Dossier for external renderer consumption","tags":["Personal Agent"],"operationId":"answerDossier","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Cernion Answer Dossier with structured metadata and Markdown content","content":{"application/json":{"schema":{"type":"object","required":["success","sessionId","dossierId","mode","answerMode","userContext","processStage","confidence","completionState","dossierMarkdown","rendererSystemHint","clarificationQuestions","finalDossierRequested","answerQuality"],"properties":{"success":{"type":"boolean"},"sessionId":{"type":"string"},"dossierId":{"type":"string"},"mode":{"type":"string","enum":["answer_dossier","answer_dossier_followup"]},"answerMode":{"type":"string","enum":["clarification_needed","management_brief","evidence_collection","process_check","prepare_intent","partial_async","final_answer"]},"userContext":{"type":"string","enum":["unknown","mayor","management","target_grid_planning","regulatory","technical_operator","process_action"]},"processStage":{"type":"string","enum":["initial","context_clarification","evidence_collection","synthesis","async_pending","intent_prepared","action_requested","completed"]},"confidence":{"type":"string","enum":["low","medium","high"]},"completionState":{"type":"string","enum":["completed","partial","async_pending"]},"dossierVersion":{"type":"integer","description":"Turn index within this session, starting at 1."},"parentDossierId":{"type":"string","nullable":true},"latestDossierId":{"type":"string"},"followUp":{"type":"object","nullable":true,"description":"Follow-up instructions for partial/async dossiers."},"priorConversationContext":{"type":"object","description":"Compact carry-forward context from previous Answer Dossier turns in the same session."},"knowledgeSpace":{"type":"object","description":"Authenticated tenant/session/conversation scope used to build the dossier. context.tenantId is audit context only and cannot override the authenticated tenant."},"timeBudget":{"type":"object"},"timeoutWarning":{"type":"string","nullable":true},"dossierMarkdown":{"type":"string"},"clarificationQuestions":{"type":"array","items":{"type":"string"},"description":"Focused clarification questions derived from the same evidence-gap signals as dossierMarkdown's Missing Evidence section. Empty when no clarification is needed or when finalDossierRequested is true."},"finalDossierRequested":{"type":"boolean","description":"Deterministic detection of whether the user asked for a final answer instead of another clarification turn."},"finalDossierMarkdown":{"type":"string","nullable":true,"description":"Renderer package variant that suppresses clarification-question instructions while still surfacing evidence gaps as caveats. Null unless finalDossierRequested is true."},"answerQuality":{"type":"object","description":"Evidence-first policy signals (#238) describing what the dossier instructions require, not a verified property of any rendered prose answer.","properties":{"usedRetrievedEvidence":{"type":"boolean","description":"Whether relevant tool/MCP evidence was retrieved for this turn."},"substantiveAnswerInstructed":{"type":"boolean","description":"Whether the dossier instructs an answer-first response (evidence-derived, final-mode, or flagged preliminary) rather than a defensive non-answer."},"defensiveNonAnswer":{"type":"boolean","description":"Complement of substantiveAnswerInstructed — true when the dossier falls back to asking for more before answering."}}},"dossierPlanning":{"type":"object","description":"Dossier-safe planning view of the Capability Broker recommendation. Planning only: no consequential actions are executed from this field."},"rendererSystemHint":{"type":"string"},"auditTrail":{"type":"object"}}}}}}},"description":"Produces a structured Markdown dossier containing domain reasoning, evidence, guardrails, and a final renderer instruction. External renderers (n8n, AnythingLLM) use only the dossierMarkdown to formulate prose answers — no domain knowledge required from the renderer. Maintains session state for multi-turn continuity.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["question"],"properties":{"question":{"type":"string","minLength":1,"maxLength":8000,"description":"User question or prompt."},"sessionId":{"type":"string","description":"Stable session identifier for multi-turn continuity. Generated and returned if omitted."},"domain":{"type":"string","enum":["auto","vnb","vdmi","znp","grid-connection","edm","finance","process","redispatch"],"default":"auto"},"mode":{"type":"string","enum":["answer_dossier","answer_dossier_followup"],"default":"answer_dossier","description":"answer_dossier_followup continues an existing session; include parentDossierId."},"maxEvidence":{"type":"integer","minimum":1,"maximum":12,"default":5},"timeBudgetMs":{"type":"integer","minimum":5000,"maximum":60000,"default":30000,"description":"Total time budget in milliseconds for dossier generation."},"parentDossierId":{"type":"string","description":"For follow-up mode: dossierId of the previous dossier in this session."},"context":{"type":"object","additionalProperties":true,"description":"Optional channel, surface, tenant, or user context."},"dossierContract":{"type":"string","enum":["rich","slim"],"default":"rich","description":"Default 'rich' preserves the existing full governance/policy dossier — no caller needs to change anything. 'slim' (#242) opts into a compact answer-payload contract (Question/Consulting Interpretation/Reasoning/Evidence/Answer Constraints/Possible Follow-Up/Renderer Instruction) for evidence-backed, non-process-risk dossiers; process-action or incomplete-evidence dossiers are always served as 'rich' regardless of this value. This is a backend contract only — existing callers (e.g. n8n flows) keep seeing 'rich' output until they explicitly set dossierContract: \"slim\"."},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}}}}}}},"/api/companies":{"get":{"summary":"List / search company entities","tags":["Companies"],"operationId":"company_list","parameters":[{"name":"query","in":"query","required":false,"schema":{"type":"string","example":"Stadtwerke Heidelberg","description":"Search by company name (case-insensitive)"}},{"name":"limit","in":"query","required":false,"schema":{"type":"number","default":10}},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["draft","active","archived","all"],"default":"active"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}},"post":{"summary":"Create a company entity (Stadtwerk/Konzernverbund)","tags":["Companies"],"operationId":"company_create","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["displayName"],"properties":{"displayName":{"type":"string","example":"Stadtwerke Heidelberg"},"legalName":{"type":"string","example":"Stadtwerke Heidelberg GmbH"},"members":{"type":"array","example":[],"items":{"type":"object","properties":{"bdewCode":{"type":"string","example":"9900277000000"},"role":{"type":"string","enum":["VNB","ÜNB","MSB","Lieferant","BKV","Direktvermarkter","other"]},"legalEntity":{"type":"string"},"mastrId":{"type":"string"}}}},"autoDiscover":{"type":"boolean","default":false},"autoConfirm":{"type":"boolean","default":false},"query":{"type":"string","description":"Search term for autoDiscover (e.g. company name)","example":"Heidelberg"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"manualCreate":{"summary":"Create company with explicit members","value":{"displayName":"Stadtwerke Heidelberg","legalName":"Stadtwerke Heidelberg GmbH & Co. KG","members":[{"bdewCode":"9900277000000","role":"VNB","legalEntity":"SW HD Netze GmbH"},{"bdewCode":"9910277000001","role":"Lieferant"}]}},"autoDiscover":{"summary":"Auto-discover via MCP then confirm","value":{"displayName":"Stadtwerke Heidelberg","autoDiscover":true,"autoConfirm":false,"query":"Heidelberg"}}}}}}}},"/api/companies/:id":{"get":{"summary":"Get company entity by ID","tags":["Companies"],"operationId":"company_get","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","example":"550e8400-e29b-41d4-a716-446655440000"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}},"put":{"summary":"Update company entity (name, members)","tags":["Companies"],"operationId":"company_update","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}}}}}},"delete":{"summary":"Archive (soft-delete) a company entity","tags":["Companies"],"operationId":"company_delete","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}}}}}}},"/api/companies/:id/confirm":{"put":{"summary":"Confirm draft company (transition draft → active)","tags":["Companies"],"operationId":"company_confirm","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}}}}}}},"/api/dashboard/vnb-overview":{"get":{"summary":"VNB overview — aggregated dashboard data for one grid operator","tags":["Dashboard API"],"operationId":"dashboard_api_vnbOverview","parameters":[{"name":"bdewCode","in":"query","required":true,"schema":{"type":"string","example":"9907473000008"},"description":"BDEW code of the grid operator"},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Aggregated VNB overview","content":{"application/json":{"schema":{"type":"object","properties":{"identity":{"type":"object","nullable":true,"description":"VNB identity from grid-operations.vnbLookupCodes","properties":{"name":{"type":"string","example":"STROMDAO Netze GmbH"},"mastrId":{"type":"string","example":"SNB935578300972"},"bdew":{"type":"string","example":"9907473000008"},"bnr":{"type":"string","nullable":true}}},"kpis":{"type":"object","nullable":true,"description":"Key performance indicators aggregated from VNB Monitor and Datapoint health"},"latestAgentResults":{"type":"object","description":"Most recent report summary for each agent pipeline (null if no report exists)","properties":{"mastrQuality":{"type":"object","nullable":true},"gridConnection":{"type":"object","nullable":true},"energySharing":{"type":"object","nullable":true},"redispatch":{"type":"object","nullable":true}}},"alerts":{"type":"array","description":"Active alerts from VNB Monitor snapshot"},"timestamp":{"type":"string","format":"date-time"},"_errors":{"type":"array","items":{"type":"string"},"description":"Internal services that failed — corresponding fields are null"}}}}}}},"description":"Returns VNB identity, KPIs (installations, capacity, EWK scores, MaStR quality), latest agent results (MaStR Quality, Grid Connection, Energy Sharing, Redispatch), active VNB Monitor alerts, and datapoint health — all in a single call.\n\nTwo-phase execution: Phase 1 runs grid-operations.vnbLookupCodes and vnb-monitor.snapshot sequentially (MCP-intensive, ≤10 concurrent sessions). Phase 2 fires datapoint.health and four agent list calls in parallel (PouchDB-only). gridOperatorId from Phase 1 is forwarded to Phase 2 list calls.\n\nIf any upstream service is unavailable, the affected fields are set to `null` and the service name is appended to `_errors`.\n\nCache TTL: 5 minutes (key: bdewCode). Stampede-safe: concurrent requests for the same bdewCode share a single in-flight fetch promise."}},"/api/dashboard/redispatch-metering-cockpit":{"get":{"summary":"Redispatch Metering Cockpit — operator-level decision readiness","tags":["Dashboard API"],"operationId":"dashboard_api_redispatchMeteringCockpit","parameters":[{"name":"gridOperatorId","in":"query","required":false,"schema":{"type":"string","example":"SNB935578300972"},"description":"MaStR ID of the grid operator (SNB.../GNB...)"},{"name":"bdewCode","in":"query","required":false,"schema":{"type":"string","example":"9907473000008"},"description":"BDEW code as fallback operator context. Used to resolve gridOperatorId when not provided."},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Cockpit payload with readiness signal and explicit blockers","content":{"application/json":{"schema":{"type":"object","properties":{"operator":{"type":"object","properties":{"gridOperatorId":{"type":"string","nullable":true},"bdewCode":{"type":"string","nullable":true},"name":{"type":"string","nullable":true}}},"decisionReadiness":{"type":"object","properties":{"signal":{"type":"string","enum":["green","yellow","red"]},"score":{"type":"number","nullable":true},"blocked":{"type":"boolean"}}},"evidence":{"type":"object"},"blockingEvidenceGaps":{"type":"array"},"staleData":{"type":"array"},"sourceReports":{"type":"object"},"timestamp":{"type":"string","format":"date-time"},"_errors":{"type":"array","items":{"type":"string"}}}}}}}},"description":"Read-only cockpit for Redispatch, metering, masterdata and governance readiness. Builds a traffic-light readiness signal from existing deterministic pipelines (redispatch-expost, energy-sharing-allocation, mastr-quality, vdmi, datapoint.health). Evidence gaps and blockers are returned explicitly."}},"/api/dashboard/load-profile-stream-monitor":{"get":{"summary":"Load profile movement monitor — strict anomaly-class buckets","tags":["Dashboard API"],"operationId":"dashboard_api_loadProfileStreamMonitor","parameters":[{"name":"meloId","in":"query","required":true,"schema":{"type":"string","example":"DE0012345678901234567890123456789"},"description":"MeLo identifier (Marktlokation) for the monitored stream."},{"name":"from","in":"query","required":true,"schema":{"type":"string","example":"2026-05-01T00:00:00.000Z"},"description":"Start timestamp (inclusive)."},{"name":"to","in":"query","required":true,"schema":{"type":"string","example":"2026-05-02T00:00:00.000Z"},"description":"End timestamp (exclusive)."},{"name":"obis","in":"query","required":false,"schema":{"type":"string","default":"1-0:1.8.0"},"description":"OBIS channel to evaluate."},{"name":"gridOperatorId","in":"query","required":false,"schema":{"type":"string","example":"SNB935578300972"},"description":"Optional VNB scope for governance findings."},{"name":"profileId","in":"query","required":false,"schema":{"type":"string","default":"H0"},"description":"Optional load profile identifier for the monitor request."},{"name":"annualConsumptionKwh","in":"query","required":false,"schema":{"type":"number","example":3500},"description":"Optional annual consumption in kWh used for the stream monitor context."},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Composite stream monitor payload with strict anomaly buckets","content":{"application/json":{"schema":{"type":"object","properties":{"streamStatus":{"type":"object"},"qualityFindings":{"type":"object"},"anomalySignals":{"type":"object"},"restrictionRefs":{"type":"array"},"forecastQuality":{"type":"object","nullable":true},"decisionNotes":{"type":"array","items":{"type":"string"}},"sourceActions":{"type":"object"},"timestamp":{"type":"string","format":"date-time"},"_errors":{"type":"array","items":{"type":"string"}}}}}}}},"description":"Read-only monitor for Lastgangdaten/Bewegungsstrom diagnostics using existing deterministic services only (edm.getTimeseriesSummary, edm-validation.validate, forecast-engine.evaluateQuality, vdmi.findings). Returns strict anomaly buckets (`dataQualityGap`, `realAnomaly`, `forecastProblem`, `processGovernanceBreak`) and allows partial findings with explicit `_errors`."}},"/api/dashboard/redispatch-call-quality-gate":{"get":{"summary":"Redispatch call data-quality gate — read-only evidence aggregator","tags":["Dashboard API"],"operationId":"dashboard_api_redispatchCallQualityGate","parameters":[{"name":"gridOperatorId","in":"query","required":false,"schema":{"type":"string"}},{"name":"meloId","in":"query","required":false,"schema":{"type":"string"}},{"name":"maloId","in":"query","required":false,"schema":{"type":"string"}},{"name":"assetId","in":"query","required":false,"schema":{"type":"string"}},{"name":"from","in":"query","required":false,"schema":{"type":"string"}},{"name":"to","in":"query","required":false,"schema":{"type":"string"}},{"name":"auditId","in":"query","required":false,"schema":{"type":"string"}},{"in":"query","name":"obis","schema":{"type":"string"}},{"in":"query","name":"profileId","schema":{"type":"string"}},{"in":"query","name":"annualConsumptionKwh","schema":{"type":"number"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only Redispatch call data-quality gate status","content":{"application/json":{"schema":{"type":"object","properties":{"found":{"type":"boolean"},"gateStatus":{"type":"string"},"callContext":{"type":"object"},"masterDataReadiness":{"type":"object"},"meteringReadiness":{"type":"object"},"forecastReadiness":{"type":"object"},"controlEvidenceReadiness":{"type":"object"},"settlementReadiness":{"type":"object"},"leadingProcessSignal":{"type":"object"},"openEvidence":{"type":"array"},"monitoringTasks":{"type":"array"},"sourceActions":{"type":"object"},"nextActions":{"type":"array"},"missingDataPoints":{"type":"array"},"timestamp":{"type":"string","format":"date-time"},"_errors":{"type":"array","items":{"type":"string"}}}}}}}},"description":"Read-only Redispatch-Abrufprozess gate that summarizes existing Redispatch ex-post, EDM/datapoint, forecast, VDMI and settlement-readiness evidence into a dossier-safe status. The action does not create settlement artifacts, A96 exports, HITL tasks or operational mutations."}},"/api/dashboard/evidence-grounding-confidence-audit":{"get":{"summary":"Evidence grounding confidence audit — read-only dossier-safe evidence status","tags":["Dashboard API"],"operationId":"dashboard_api_evidenceGroundingConfidenceAudit","parameters":[{"name":"requestId","in":"query","required":false,"schema":{"type":"string"}},{"name":"sessionId","in":"query","required":false,"schema":{"type":"string"}},{"name":"domain","in":"query","required":false,"schema":{"type":"string"}},{"name":"capabilityId","in":"query","required":false,"schema":{"type":"string"}},{"name":"sourceAction","in":"query","required":false,"schema":{"type":"string"}},{"name":"scopeId","in":"query","required":false,"schema":{"type":"string"}},{"name":"gridOperatorId","in":"query","required":false,"schema":{"type":"string"}},{"name":"datasourceId","in":"query","required":false,"schema":{"type":"string"}},{"name":"datapointId","in":"query","required":false,"schema":{"type":"string"}},{"name":"query","in":"query","required":false,"schema":{"type":"string"}},{"name":"networkOperatorConfirmed","in":"query","required":false,"schema":{"type":"boolean","default":false}},{"name":"includeFederatedKnowledge","in":"query","required":false,"schema":{"type":"boolean","default":false},"description":"Opt-in only (default false). When true, additionally probes knowledge-rag.federatedSearch health/availability alongside knowledge-rag.query."},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only evidence-grounding confidence audit","content":{"application/json":{"schema":{"type":"object","properties":{"auditId":{"type":"string"},"requestContext":{"type":"object"},"routingConfidence":{"type":"object"},"evidenceConfidence":{"type":"object"},"answerStatus":{"type":"string"},"sourceClassBreakdown":{"type":"object"},"claims":{"type":"array"},"assumptions":{"type":"array"},"toolFailures":{"type":"array"},"scopeLimitations":{"type":"array"},"missingEvidence":{"type":"array"},"requiresNetworkOperatorConfirmation":{"type":"boolean"},"positiveFollowUps":{"type":"array"},"sourceActions":{"type":"object"},"dossierEvidence":{"type":"object"},"timestamp":{"type":"string","format":"date-time"},"_errors":{"type":"array","items":{"type":"string"}}}}}}}},"description":"Read-only confidence audit for grounded Cernion answers. It keeps Capability Broker routing confidence separate from evidence confidence, exposes source classes, scope limitations, tool failures, missing evidence and positive follow-ups. It does not create HITL items, interface placeholders, RAG ingests, Personal-Agent sessions or external calls."}},"/api/dashboard/receipt-grounded-presentation-contract":{"get":{"summary":"Receipt-grounded presentation contract — read-only renderer grounding check","tags":["Dashboard API"],"operationId":"dashboard_api_receiptGroundedPresentationContract","parameters":[{"name":"preferredFormat","in":"query","required":false,"schema":{"type":"string"}},{"name":"selectedType","in":"query","required":false,"schema":{"type":"string"}},{"name":"sourceAction","in":"query","required":false,"schema":{"type":"string"}},{"name":"domainShape","in":"query","required":false,"schema":{"type":"string","enum":["plain","vdmi_matrix","kpi_fact","evidence_gap","decision_brief"]}},{"name":"evidenceGapId","in":"query","required":false,"schema":{"type":"string"}},{"name":"query","in":"query","required":false,"schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Receipt-grounded presentation contract decision","content":{"application/json":{"schema":{"type":"object","properties":{"contractId":{"type":"string"},"requestedType":{"type":"string","nullable":true},"selectedType":{"type":"string","nullable":true},"allowedTypes":{"type":"array","items":{"type":"string"}},"blockedReason":{"type":"string","nullable":true},"sourceActions":{"type":"array","items":{"type":"string"}},"evidenceGapIds":{"type":"array","items":{"type":"string"}},"positiveFollowUps":{"type":"array","items":{"type":"object"}},"dossierEvidence":{"type":"object"},"timestamp":{"type":"string","format":"date-time"},"_errors":{"type":"array","items":{"type":"string"}}}}}}}},"description":"Evaluates whether a requested presentation renderer is grounded by the supplied domain shape, executed source action and evidence gaps. This is a deterministic inspect endpoint only; it does not run Personal-Agent chat, execute tools, create HITL/interface-placeholder items, mutate data, ingest RAG or call external services."}},"/api/dashboard/market-communication-evidence-chain":{"get":{"summary":"Market communication evidence chain — read-only dossier-safe status","tags":["Dashboard API"],"operationId":"dashboard_api_marketCommunicationEvidenceChainStatus","parameters":[{"name":"maloId","in":"query","required":false,"schema":{"type":"string"}},{"name":"meloId","in":"query","required":false,"schema":{"type":"string"}},{"name":"contractAccountId","in":"query","required":false,"schema":{"type":"string"}},{"name":"caseId","in":"query","required":false,"schema":{"type":"string"}},{"name":"includeHints","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"portalHint","in":"query","required":false,"schema":{"type":"string"}},{"name":"providerView","in":"query","required":false,"schema":{"type":"string"}},{"name":"customerStatement","in":"query","required":false,"schema":{"type":"string"}},{"name":"utilmdMasterdataPath","in":"query","required":false,"schema":{"type":"string"}},{"name":"meterValueBatchId","in":"query","required":false,"schema":{"type":"string"}},{"name":"consumptionRetrievalStatus","in":"query","required":false,"schema":{"type":"string"}},{"name":"dataQualityStatus","in":"query","required":false,"schema":{"type":"string"}},{"name":"nextBillingStep","in":"query","required":false,"schema":{"type":"string"}},{"name":"includeMakoKnowledge","in":"query","required":false,"schema":{"type":"boolean","default":false}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only market-communication evidence-chain status","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string"},"officialEvidence":{"type":"array"},"hintsOnly":{"type":"array"},"missingEvidence":{"type":"array"},"positiveFollowUps":{"type":"array"},"dossierFacts":{"type":"array"},"dossierEvidence":{"type":"object"},"safety":{"type":"string"},"makoKnowledgeContext":{"type":"object","description":"Optional, advisory Willi-Mako structure context; only present when includeMakoKnowledge=true. Never binding; degrades to available:false."},"timestamp":{"type":"string","format":"date-time"},"_errors":{"type":"array","items":{"type":"string"}}}}}}}},"description":"Classifies market-communication evidence for dynamic tariff, iMSys, consumption-data and billing-readiness cases. Portal screenshots, customer statements and provider views are hints only; official MaLo/MeLo, UTILMD/master-data path, meter values, consumption retrieval, data-quality status and next billing step remain separate required evidence. The endpoint is read-only and does not mutate MaKo, EDM, billing, settlement, VDMI or HITL state. When `includeMakoKnowledge=true`, an optional, advisory `makoKnowledgeContext` (Willi-Mako structural hints via `willi-mako.resolveStructure`) is attached; it never changes the default response shape, is never binding, and degrades to `available:false` if unavailable."}},"/api/dashboard/e2e-controllability-governance":{"get":{"summary":"E2E controllability governance — read-only dossier-safe matrix","tags":["Dashboard API"],"operationId":"dashboard_api_e2eControllabilityGovernanceStatus","parameters":[{"name":"caseId","in":"query","required":false,"schema":{"type":"string"}},{"name":"connectionIntake","in":"query","required":false,"schema":{"type":"string"}},{"name":"meteringConcept","in":"query","required":false,"schema":{"type":"string"}},{"name":"assetControlCapability","in":"query","required":false,"schema":{"type":"string"}},{"name":"gridOperationsDecision","in":"query","required":false,"schema":{"type":"string"}},{"name":"marketCommunicationHandover","in":"query","required":false,"schema":{"type":"string"}},{"name":"billingImpactCheck","in":"query","required":false,"schema":{"type":"string"}},{"name":"owner","in":"query","required":false,"schema":{"type":"string"}},{"name":"deadline","in":"query","required":false,"schema":{"type":"string"}},{"name":"openMeasure","in":"query","required":false,"schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only E2E controllability governance matrix","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string"},"processSteps":{"type":"array"},"evidenceMatrix":{"type":"array"},"decisionBoundaries":{"type":"array"},"owners":{"type":"array"},"deadlines":{"type":"array"},"openMeasures":{"type":"array"},"gaps":{"type":"array"},"positiveFollowUps":{"type":"array"},"dossierEvidence":{"type":"object"},"safety":{"type":"string"},"timestamp":{"type":"string","format":"date-time"},"_errors":{"type":"array","items":{"type":"string"}}}}}}}},"description":"Builds a deterministic governance/evidence matrix for E2E Steuerbarkeitscheck handover readiness across connection intake, metering, asset control, grid operations, market communication and billing-impact boundaries. The endpoint is read-only and does not mutate VDMI, HITL, MaKo, billing, settlement, tariff or device-control state."}},"/api/dashboard/controllability-asset-handover":{"get":{"summary":"Controllability asset handover — read-only dossier-safe status","tags":["Dashboard API"],"operationId":"dashboard_api_controllabilityAssetHandoverStatus","parameters":[{"name":"caseId","in":"query","required":false,"schema":{"type":"string"}},{"name":"assetId","in":"query","required":false,"schema":{"type":"string"}},{"name":"mastrId","in":"query","required":false,"schema":{"type":"string"}},{"name":"napId","in":"query","required":false,"schema":{"type":"string"}},{"name":"meloId","in":"query","required":false,"schema":{"type":"string"}},{"name":"technologyType","in":"query","required":false,"schema":{"type":"string"}},{"name":"capacityKW","in":"query","required":false,"schema":{"type":"number"}},{"name":"controllabilityScope","in":"query","required":false,"schema":{"type":"string"}},{"name":"technicalStatus","in":"query","required":false,"schema":{"type":"string"}},{"name":"feedbackCapability","in":"query","required":false,"schema":{"type":"string"}},{"name":"dataSourceRefs","in":"query","required":false,"schema":{"oneOf":[{"type":"array","items":{"type":"string"}},{"type":"string"}]}},{"name":"sourceSnapshotId","in":"query","required":false,"schema":{"type":"string"}},{"name":"checkStatus","in":"query","required":false,"schema":{"type":"string"}},{"name":"nonExecutionReason","in":"query","required":false,"schema":{"type":"string"}},{"name":"evidenceStatus","in":"query","required":false,"schema":{"type":"string"}},{"name":"lineOwnerRole","in":"query","required":false,"schema":{"type":"string"}},{"name":"handoverDecision","in":"query","required":false,"schema":{"type":"string"}},{"name":"nextReportingCycle","in":"query","required":false,"schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only controllability asset line handover status","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string"},"asset":{"type":"object"},"evidenceItems":{"type":"array"},"missingEvidence":{"type":"array"},"positiveFollowUps":{"type":"array"},"handoverDecision":{"type":"string"},"lineOwnerRole":{"type":"string"},"nextReportingCycle":{"type":"string"},"blockingFindings":{"type":"array"},"sourceActions":{"type":"object"},"dossierEvidence":{"type":"object"},"safety":{"type":"string"},"timestamp":{"type":"string","format":"date-time"},"_errors":{"type":"array","items":{"type":"string"}}}}}}}},"description":"Builds a deterministic asset line-handover evidence view for Steuerbarkeitscheck cases. It covers asset identity, NAP/MeLo mapping, technical status, feedback capability, source snapshot, check result, non-execution reason, line owner, next reporting cycle and handover decision. The endpoint is read-only and does not mutate Asset-MDM, VDMI, HITL, MaKo, billing, settlement, tariff or device-control state."}},"/api/dashboard/controllability-data-alignment":{"get":{"summary":"Controllability data alignment — read-only dossier-safe status","tags":["Dashboard API"],"operationId":"dashboard_api_controllabilityDataAlignmentStatus","parameters":[{"name":"checklistId","in":"query","required":false,"schema":{"type":"string"}},{"name":"assetId","in":"query","required":false,"schema":{"type":"string"}},{"name":"mastrId","in":"query","required":false,"schema":{"type":"string"}},{"name":"assetMatch","in":"query","required":false,"schema":{"type":"string"}},{"name":"mastrMatch","in":"query","required":false,"schema":{"type":"string"}},{"name":"internalAssetMatch","in":"query","required":false,"schema":{"type":"string"}},{"name":"controlTechStatus","in":"query","required":false,"schema":{"type":"string"}},{"name":"thresholdClass","in":"query","required":false,"schema":{"type":"string"}},{"name":"testability","in":"query","required":false,"schema":{"type":"string"}},{"name":"exceptionReason","in":"query","required":false,"schema":{"type":"string"}},{"name":"priorYearComparison","in":"query","required":false,"schema":{"type":"string"}},{"name":"owner","in":"query","required":false,"schema":{"type":"string"}},{"name":"dueDate","in":"query","required":false,"schema":{"type":"string"}},{"name":"exportReadiness","in":"query","required":false,"schema":{"type":"string"}},{"name":"evidenceStatus","in":"query","required":false,"schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only controllability data alignment status","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string"},"checklist":{"type":"object"},"alignmentRows":{"type":"array"},"missingEvidence":{"type":"array"},"positiveFollowUps":{"type":"array"},"safeNextGate":{"type":"string"},"sourceActions":{"type":"object"},"dossierEvidence":{"type":"object"},"safety":{"type":"string"},"timestamp":{"type":"string","format":"date-time"},"_errors":{"type":"array","items":{"type":"string"}}}}}}}},"description":"Builds a deterministic evidence/status view for recurring Steuerbarkeitscheck checklist reconciliation. It compares supplied checklist, asset/MaStR/internal, control-tech, threshold, testability, exception, prior-year, owner/deadline and export-readiness facts. The endpoint is read-only and does not import files, mutate Asset-MDM, call MaStR/CLS/SMGW, create HITL items, execute tests, or affect MaKo, billing, settlement, tariffs or device control."}},"/api/dashboard/coordination-meaning-preservation-profile":{"get":{"summary":"Coordination meaning preservation — read-only dossier-safe profile","tags":["Dashboard API"],"operationId":"dashboard_api_coordinationMeaningPreservationProfile","parameters":[{"name":"caseId","in":"query","required":false,"schema":{"type":"string"}},{"name":"sourceDomain","in":"query","required":false,"schema":{"type":"string"}},{"name":"targetDomain","in":"query","required":false,"schema":{"type":"string"}},{"name":"regulatoryReference","in":"query","required":false,"schema":{"type":"string"}},{"name":"commercialEffect","in":"query","required":false,"schema":{"type":"string"}},{"name":"networkConstraint","in":"query","required":false,"schema":{"type":"string"}},{"name":"evidenceProof","in":"query","required":false,"schema":{"type":"string"}},{"name":"owner","in":"query","required":false,"schema":{"type":"string"}},{"name":"deadline","in":"query","required":false,"schema":{"type":"string"}},{"name":"nextDecision","in":"query","required":false,"schema":{"type":"string"}},{"name":"operationalRisk","in":"query","required":false,"schema":{"type":"string"}},{"name":"handoverContext","in":"query","required":false,"schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only coordination meaning preservation profile","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string"},"coordinationLossClassification":{"type":"string"},"preservedDimensions":{"type":"array"},"missingDimensions":{"type":"array"},"weakDimensions":{"type":"array"},"positiveFollowUps":{"type":"array"},"sourceActions":{"type":"object"},"dossierEvidence":{"type":"object"},"safety":{"type":"string"},"timestamp":{"type":"string","format":"date-time"},"_errors":{"type":"array","items":{"type":"string"}}}}}}}},"description":"Builds a deterministic profile for preserving meaning at cross-domain handovers. It reports preserved and missing dimensions such as regulatory reference, commercial effect, network constraint, evidence proof, owner, deadline, next decision and operational risk. The endpoint is read-only and does not mutate Fachsysteme, HITL, billing, settlement, MaKo, tariff, device-control, Budibase or external connector state."}},"/api/dashboard/a2mdm-decision-object":{"get":{"summary":"A2MDM decision object - read-only meaning preservation projection","tags":["Dashboard API"],"operationId":"dashboard_api_a2mdmDecisionObjectStatus","parameters":[{"name":"caseId","in":"query","required":false,"schema":{"type":"string"}},{"name":"subject","in":"query","required":false,"schema":{"type":"string"}},{"name":"businessIntent","in":"query","required":false,"schema":{"type":"string"}},{"name":"technicalConstraint","in":"query","required":false,"schema":{"type":"string"}},{"name":"regulatoryReference","in":"query","required":false,"schema":{"type":"string"}},{"name":"evidenceSource","in":"query","required":false,"schema":{"type":"string"}},{"name":"ownerRole","in":"query","required":false,"schema":{"type":"string"}},{"name":"riskLevel","in":"query","required":false,"schema":{"type":"string"}},{"name":"decisionThreshold","in":"query","required":false,"schema":{"type":"string"}},{"name":"nextGate","in":"query","required":false,"schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only A2MDM decision-object context","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string"},"capabilityKey":{"type":"string"},"decisionObjectId":{"type":"string"},"decisionRows":{"type":"array"},"missingInputs":{"type":"array"},"positiveFollowUps":{"type":"array"},"noCallGuards":{"type":"array"},"sourceActions":{"type":"object"},"dossierEvidence":{"type":"object"},"safety":{"type":"string"},"timestamp":{"type":"string","format":"date-time"},"_errors":{"type":"array","items":{"type":"string"}}}}}}}},"description":"Builds a deterministic, dossier-safe A2MDM decision-object projection for a synthetic Stadtwerk Mauer handover case. The endpoint preserves scalar decision context across system boundaries and exposes missing-input follow-ups. It is read-only and does not create A2MDM persistence, workflow, HITL, Budibase, Landing Registry, MaKo, billing, settlement, tariff, device-control, SMGW/CLS or external connector actions."}},"/api/dashboard/gremiencoach-workbook-readiness":{"get":{"summary":"Gremiencoach workbook readiness - read-only private-prep status","tags":["Dashboard API"],"operationId":"dashboard_api_gremiencoachWorkbookReadinessStatus","parameters":[{"name":"tenantId","in":"query","required":false,"schema":{"type":"string"}},{"name":"workbookId","in":"query","required":false,"schema":{"type":"string"}},{"name":"committeeContext","in":"query","required":false,"schema":{"type":"string"}},{"name":"processHint","in":"query","required":false,"schema":{"type":"string"}},{"name":"evidenceProfile","in":"query","required":false,"schema":{"type":"string"}},{"name":"sourceRegister","in":"query","required":false,"schema":{"type":"string"}},{"name":"processRole","in":"query","required":false,"schema":{"type":"string"}},{"name":"regulatoryReference","in":"query","required":false,"schema":{"type":"string"}},{"name":"artifactClassification","in":"query","required":false,"schema":{"type":"string"}},{"name":"releaseBoundary","in":"query","required":false,"schema":{"type":"string"}},{"name":"includeSyntheticRows","in":"query","required":false,"schema":{"type":"boolean"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only Gremiencoach workbook readiness status","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string"},"capabilityKey":{"type":"string"},"safety":{"type":"string"},"claimRows":{"type":"array"},"evidenceGapRows":{"type":"array"},"processContextRows":{"type":"array"},"draftArtifactRows":{"type":"array"},"guardrailRows":{"type":"array"},"positiveFollowUpRows":{"type":"array"},"sourceActions":{"type":"object"},"dossierEvidence":{"type":"object"},"timestamp":{"type":"string","format":"date-time"},"_errors":{"type":"array","items":{"type":"string"}}}}}}}},"description":"Builds a deterministic, anonymized readiness contract for VNB committee workbook preparation. The endpoint returns scalar rows for evidence-backed candidate claims, evidence gaps, VDMI/process context, draft artifact intents, guardrails and positive follow-ups. It is read-only and does not upload, parse, retain, embed or train on private Office/PDF/Excel/protocol/mail content; does not create Office files; does not call M365/SharePoint/Graph, mail/calendar/tasks or external connectors; and does not publish, approve, settle, bill, control devices, create HITL/workflows or hardcode Personal Agent behavior."}},"/api/dashboard/decision-readiness-matrix":{"get":{"summary":"Decision-readiness matrix -- read-only VNB OPL/budget evidence","tags":["Dashboard API"],"operationId":"dashboard_api_decisionReadinessMatrixStatus","parameters":[{"name":"caseId","in":"query","required":false,"schema":{"type":"string"}},{"name":"measureId","in":"query","required":false,"schema":{"type":"string"}},{"name":"measureName","in":"query","required":false,"schema":{"type":"string"}},{"name":"category","in":"query","required":false,"schema":{"type":"string"}},{"name":"budgetStatus","in":"query","required":false,"schema":{"type":"string"}},{"name":"financingOption","in":"query","required":false,"schema":{"type":"string"}},{"name":"riskIfNotImplemented","in":"query","required":false,"schema":{"type":"string"}},{"name":"evidenceSource","in":"query","required":false,"schema":{"type":"string"}},{"name":"owner","in":"query","required":false,"schema":{"type":"string"}},{"name":"committeeWindow","in":"query","required":false,"schema":{"type":"string"}},{"name":"nextDecisionPoint","in":"query","required":false,"schema":{"type":"string"}},{"name":"blockers","in":"query","required":false,"schema":{"type":"string"}},{"name":"openEvidence","in":"query","required":false,"schema":{"type":"string"}},{"name":"includeSyntheticRows","in":"query","required":false,"schema":{"type":"boolean"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only decision-readiness matrix evidence view","content":{"application/json":{"schema":{"type":"object","properties":{"capabilityKey":{"type":"string"},"safety":{"type":"string"},"status":{"type":"string"},"rows":{"type":"array"},"readinessCounts":{"type":"object"},"missingEvidence":{"type":"array"},"positiveFollowUps":{"type":"array"},"decisionBoundaries":{"type":"array"},"sourceActions":{"type":"object"},"dossierEvidence":{"type":"object"},"timestamp":{"type":"string","format":"date-time"},"_errors":{"type":"array","items":{"type":"string"}}}}}}}},"description":"Classifies caller-supplied VNB OPL, budget and measure facts into a read-only decision-readiness matrix. The endpoint reports row readiness, budget/financing risk, evidence gaps, owner and committee-window context, positive follow-ups and explicit side-effect guards. It does not approve budgets, choose financing, create procurement/project records, write SAP/ERP, create HITL/workflow/webhooks, mutate billing/settlement/tariff/MaKo/device-control state, call external connectors or add Personal-Agent shortcuts."}},"/api/dashboard/cross-system-variance-matrix":{"get":{"summary":"Cross-system variance matrix -- read-only VNB evidence view","tags":["Dashboard API"],"operationId":"dashboard_api_crossSystemVarianceMatrixStatus","parameters":[{"name":"caseId","in":"query","required":false,"schema":{"type":"string"}},{"name":"varianceId","in":"query","required":false,"schema":{"type":"string"}},{"name":"sourceSystem","in":"query","required":false,"schema":{"type":"string"}},{"name":"targetSystem","in":"query","required":false,"schema":{"type":"string"}},{"name":"domain","in":"query","required":false,"schema":{"type":"string"}},{"name":"affectedObject","in":"query","required":false,"schema":{"type":"string"}},{"name":"amountEur","in":"query","required":false,"schema":{"type":"number"}},{"name":"revenueImpact","in":"query","required":false,"schema":{"type":"string"}},{"name":"assetScope","in":"query","required":false,"schema":{"type":"string"}},{"name":"owner","in":"query","required":false,"schema":{"type":"string"}},{"name":"deadline","in":"query","required":false,"schema":{"type":"string"}},{"name":"evidence","in":"query","required":false,"schema":{"type":"string"}},{"name":"threshold","in":"query","required":false,"schema":{"type":"string"}},{"name":"resolutionStatus","in":"query","required":false,"schema":{"type":"string"}},{"name":"openEvidence","in":"query","required":false,"schema":{"type":"string"}},{"name":"includeSyntheticRows","in":"query","required":false,"schema":{"type":"boolean"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only cross-system variance evidence matrix","content":{"application/json":{"schema":{"type":"object","properties":{"capabilityKey":{"type":"string"},"safety":{"type":"string"},"status":{"type":"string"},"rows":{"type":"array"},"varianceCounts":{"type":"object"},"missingEvidence":{"type":"array"},"positiveFollowUps":{"type":"array"},"decisionBoundaries":{"type":"array"},"sourceActions":{"type":"object"},"dossierEvidence":{"type":"object"},"timestamp":{"type":"string","format":"date-time"},"_errors":{"type":"array","items":{"type":"string"}}}}}}}},"description":"Classifies caller-supplied VNB revenue, budget and asset-data variances into a read-only evidence matrix. The endpoint reports row state, source-system lineage, missing evidence, owner/deadline/threshold hints, positive follow-ups and explicit no-call guards. It does not connect to ERP/SAP/GIS/MDM, reconcile systems, persist records, approve revenue, book finance, mutate master data, create HITL/workflow/webhooks, call external connectors or add Personal-Agent shortcuts."}},"/api/dashboard/regulatory-signal-process-translator":{"get":{"summary":"Regulatory signal process translator -- read-only governance evidence view","tags":["Dashboard API"],"operationId":"dashboard_api_regulatorySignalProcessTranslatorStatus","parameters":[{"name":"signalId","in":"query","required":false,"schema":{"type":"string"}},{"name":"sourceName","in":"query","required":false,"schema":{"type":"string"}},{"name":"publishedAt","in":"query","required":false,"schema":{"type":"string"}},{"name":"signalText","in":"query","required":false,"schema":{"type":"string"}},{"name":"summary","in":"query","required":false,"schema":{"type":"string"}},{"name":"affectedDomain","in":"query","required":false,"schema":{"type":"string"}},{"name":"processHint","in":"query","required":false,"schema":{"type":"string"}},{"name":"deadlineHint","in":"query","required":false,"schema":{"type":"string"}},{"name":"ownerHint","in":"query","required":false,"schema":{"type":"string"}},{"name":"evidenceHint","in":"query","required":false,"schema":{"type":"string"}},{"name":"testCaseHint","in":"query","required":false,"schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only operational translation of supplied regulatory signal facts","content":{"application/json":{"schema":{"type":"object","properties":{"capabilityKey":{"type":"string"},"safety":{"type":"string"},"status":{"type":"string"},"signalSummary":{"type":"object"},"affectedProcesses":{"type":"array"},"dataRequirements":{"type":"array"},"evidenceRequirements":{"type":"array"},"testCaseHints":{"type":"array"},"decisionGates":{"type":"array"},"missingEvidence":{"type":"array"},"positiveFollowUps":{"type":"array"},"decisionBoundaries":{"type":"array"},"sourceActions":{"type":"object"},"dossierEvidence":{"type":"object"},"timestamp":{"type":"string","format":"date-time"},"_errors":{"type":"array","items":{"type":"string"}}}}}}}},"description":"Translates caller-supplied regulatory signal facts into operational VNB/EVU process, data, evidence, test-case and decision-gate hints. The endpoint does not provide legal advice, determine compliance truth, crawl sources, create workflow/HITL tasks, write SAP/ERP/GIS/MDM/Budibase data, mutate MaKo/billing/settlement/tariff/device-control state, call external connectors or add Personal-Agent shortcuts."}},"/api/dashboard/cost-review-committee-status":{"get":{"summary":"Cost review committee status - read-only dossier-safe evidence board","tags":["Dashboard API"],"operationId":"dashboard_api_costReviewCommitteeStatus","parameters":[{"name":"reviewId","in":"query","required":false,"schema":{"type":"string"}},{"name":"caseId","in":"query","required":false,"schema":{"type":"string"}},{"name":"owner","in":"query","required":false,"schema":{"type":"string"}},{"name":"reviewStatus","in":"query","required":false,"schema":{"type":"string"}},{"name":"dataOrigin","in":"query","required":false,"schema":{"type":"string"}},{"name":"assetRelevance","in":"query","required":false,"schema":{"type":"string"}},{"name":"revenueRelevance","in":"query","required":false,"schema":{"type":"string"}},{"name":"decisionReadiness","in":"query","required":false,"schema":{"type":"string"}},{"name":"escalationThreshold","in":"query","required":false,"schema":{"type":"string"}},{"name":"nextCommitteeGate","in":"query","required":false,"schema":{"type":"string"}},{"name":"dueDate","in":"query","required":false,"schema":{"type":"string"}},{"name":"amountClass","in":"query","required":false,"schema":{"type":"string"}},{"name":"rationale","in":"query","required":false,"schema":{"type":"string"}},{"name":"evidenceRefs","in":"query","required":false,"schema":{"oneOf":[{"type":"array","items":{"type":"string"}},{"type":"string"}]}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only cost review evidence board","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string"},"safety":{"type":"string"},"evidenceItems":{"type":"array"},"missingEvidence":{"type":"array"},"positiveFollowUps":{"type":"array"},"owner":{"type":"string"},"reviewStatus":{"type":"string"},"dataOrigin":{"type":"string"},"assetRelevance":{"type":"string"},"revenueRelevance":{"type":"string"},"decisionReadiness":{"type":"string"},"escalationThreshold":{"type":"string"},"nextCommitteeGate":{"type":"string"},"sourceActions":{"type":"object"},"dossierEvidence":{"type":"object"},"timestamp":{"type":"string","format":"date-time"},"_errors":{"type":"array","items":{"type":"string"}}}}}}}},"description":"Builds a deterministic evidence and committee-readiness view for cost reviews. The endpoint is read-only and does not write ERP/SAP/PSP/accounting records, approve budgets, execute committee decisions, create HITL/workflow items, send messages or call external connectors."}},"/api/dashboard/redispatch-participation-readiness-status":{"get":{"summary":"Redispatch participation readiness status -- read-only Workbench projection","tags":["Dashboard API"],"operationId":"dashboard_api_redispatchParticipationReadinessStatus","parameters":[{"in":"query","name":"tenantId","schema":{"type":"string"}},{"in":"query","name":"syntheticRedispatchAssetPortfolio","schema":{"type":"string"}},{"in":"query","name":"installationGridLocationEvidence","schema":{"type":"string"}},{"in":"query","name":"remoteControlCommunicationTestEvidence","schema":{"type":"string"}},{"in":"query","name":"forecastDispatchTestProof","schema":{"type":"string"}},{"in":"query","name":"readinessReviewDecision","schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only Redispatch participation readiness status"}},"description":"Builds deterministic redispatch readiness evidence from supplied facts."}},"/api/dashboard/mastr-sync-gap-status":{"get":{"summary":"MaStR Sync-Gap alerting status -- read-only Workbench projection","tags":["Dashboard API"],"operationId":"dashboard_api_mastrSyncGapStatus","parameters":[{"in":"query","name":"tenantId","schema":{"type":"string"}},{"in":"query","name":"mastrFreshnessEvidence","schema":{"type":"string"}},{"in":"query","name":"redispatchStammdatenComparison","schema":{"type":"string"}},{"in":"query","name":"syncGapAlertFeed","schema":{"type":"string"}},{"in":"query","name":"reconciliationApprovalDecision","schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only MaStR Sync-Gap alerting status"}},"description":"Builds deterministic MaStR sync gap alerting evidence from supplied facts."}},"/api/dashboard/decommissioned-asset-reconciliation-status":{"get":{"summary":"Decommissioned Asset Reconciliation status -- read-only Workbench projection","tags":["Dashboard API"],"operationId":"dashboard_api_decommissionedAssetReconciliationStatus","parameters":[{"in":"query","name":"tenantId","schema":{"type":"string"}},{"in":"query","name":"gisDecommissionedAssetsEvidence","schema":{"type":"string"}},{"in":"query","name":"sapAnlagenspiegelEvidence","schema":{"type":"string"}},{"in":"query","name":"reconciliationDiscrepancyFeed","schema":{"type":"string"}},{"in":"query","name":"reconciliationApprovalDecision","schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only Decommissioned Asset Reconciliation status"}},"description":"Builds deterministic Decommissioned Asset Reconciliation evidence from supplied facts."}},"/api/dashboard/energy-sharing-collective-approval-status":{"get":{"summary":"Energy Sharing Collective Approval status -- read-only Workbench projection","tags":["Dashboard API"],"operationId":"dashboard_api_energySharingCollectiveApprovalStatus","parameters":[{"in":"query","name":"tenantId","schema":{"type":"string"}},{"in":"query","name":"syntheticCollectiveBoundaryEvidence","schema":{"type":"string"}},{"in":"query","name":"operatorParticipantBoundaryEvidence","schema":{"type":"string"}},{"in":"query","name":"meteringConceptEvidence","schema":{"type":"string"}},{"in":"query","name":"contractConsentMarketRoleEvidence","schema":{"type":"string"}},{"in":"query","name":"allocationBillingSettlementGapEvidence","schema":{"type":"string"}},{"in":"query","name":"approvalReadinessDecision","schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only Energy Sharing Collective Approval status"}},"description":"Builds deterministic Energy Sharing Collective Approval evidence from supplied facts."}},"/api/dashboard/steering-artifact-acceptance-gate":{"get":{"summary":"Steering artifact acceptance gate — read-only dossier-safe status","tags":["Dashboard API"],"operationId":"dashboard_api_steeringArtifactAcceptanceGateStatus","parameters":[{"name":"artifactType","in":"query","required":false,"schema":{"type":"string"}},{"name":"artifactName","in":"query","required":false,"schema":{"type":"string"}},{"name":"targetRole","in":"query","required":false,"schema":{"type":"string"}},{"name":"useCase","in":"query","required":false,"schema":{"type":"string"}},{"name":"itemCount","in":"query","required":false,"schema":{"type":"number"}},{"name":"maintenanceMinutesPerWeek","in":"query","required":false,"schema":{"type":"number"}},{"name":"updateCadence","in":"query","required":false,"schema":{"type":"string"}},{"name":"owner","in":"query","required":false,"schema":{"type":"string"}},{"name":"deputyOwner","in":"query","required":false,"schema":{"type":"string"}},{"name":"usageEvidence","in":"query","required":false,"schema":{"type":"string"}},{"name":"escalationCriterion","in":"query","required":false,"schema":{"type":"string"}},{"name":"rolloutDecision","in":"query","required":false,"schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only steering artifact acceptance and maintenance gate status","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string"},"artifact":{"type":"object"},"scalarRows":{"type":"array"},"missingEvidence":{"type":"array"},"operationalRisks":{"type":"array"},"positiveFollowUps":{"type":"array"},"sourceActions":{"type":"object"},"dossierEvidence":{"type":"object"},"safety":{"type":"string"},"timestamp":{"type":"string","format":"date-time"},"_errors":{"type":"array","items":{"type":"string"}}}}}}}},"description":"Builds a deterministic advisory acceptance and maintenance gate for proposed Cernion steering artifacts. It covers target role, use case, bounded item/card count, expected maintenance effort, update cadence, owner/deputy, usage evidence, escalation/retirement criterion and rollout decision. The endpoint is read-only and does not persist artifacts, write Budibase data, create workflows/HITL items, call external connectors or mutate billing, settlement, MaKo, tariff or device-control state."}},"/api/dashboard/communication-break-process-risk":{"get":{"summary":"Communication-break process-risk gate - read-only dossier-safe status","tags":["Dashboard API"],"operationId":"dashboard_api_communicationBreakProcessRiskStatus","parameters":[{"name":"processDomain","in":"query","required":false,"schema":{"type":"string"}},{"name":"affectedDecision","in":"query","required":false,"schema":{"type":"string"}},{"name":"presentationStatus","in":"query","required":false,"schema":{"type":"string"}},{"name":"protocolStatus","in":"query","required":false,"schema":{"type":"string"}},{"name":"questionResponseWindow","in":"query","required":false,"schema":{"type":"string"}},{"name":"informationDuty","in":"query","required":false,"schema":{"type":"string"}},{"name":"fachlicheBegleitung","in":"query","required":false,"schema":{"type":"string"}},{"name":"owner","in":"query","required":false,"schema":{"type":"string"}},{"name":"deputy","in":"query","required":false,"schema":{"type":"string"}},{"name":"blockedDecision","in":"query","required":false,"schema":{"type":"string"}},{"name":"nextEvidencePoint","in":"query","required":false,"schema":{"type":"string"}},{"name":"dueDate","in":"query","required":false,"schema":{"type":"string"}},{"name":"escalationCriterion","in":"query","required":false,"schema":{"type":"string"}},{"name":"proofLabel","in":"query","required":false,"schema":{"type":"string"}},{"name":"proofLink","in":"query","required":false,"schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only communication-break process-risk status","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string"},"riskLevel":{"type":"string"},"process":{"type":"object"},"scalarRows":{"type":"array"},"missingEvidence":{"type":"array"},"positiveFollowUps":{"type":"array"},"sourceActions":{"type":"object"},"dossierEvidence":{"type":"object"},"safety":{"type":"string"},"timestamp":{"type":"string","format":"date-time"},"_errors":{"type":"array","items":{"type":"string"}}}}}}}},"description":"Builds a deterministic advisory process-risk gate for communication breaks around handover or management decisions. It covers process/domain, affected or blocked decision, presentation and protocol evidence, question-response window, information duty, fachliche Begleitung, owner/deputy, next evidence point, due date and escalation criterion. The endpoint is read-only and does not score people, ingest email/calendar or chat data, create workflows/HITL items, write Budibase data, call external connectors or mutate MaKo, billing, settlement, tariff or device-control state."}},"/api/dashboard/no-regret-measure-proof-gate":{"get":{"summary":"No-Regret measure proof gate - read-only dossier-safe status","tags":["Dashboard API"],"operationId":"dashboard_api_noRegretMeasureProofGateStatus","parameters":[{"name":"measureName","in":"query","required":false,"schema":{"type":"string"}},{"name":"measureType","in":"query","required":false,"schema":{"type":"string"}},{"name":"targetDomain","in":"query","required":false,"schema":{"type":"string"}},{"name":"scenarioCoverage","in":"query","required":false,"schema":{"type":"string"}},{"name":"budgetAnchor","in":"query","required":false,"schema":{"type":"string"}},{"name":"costRange","in":"query","required":false,"schema":{"type":"string"}},{"name":"expectedBenefitRange","in":"query","required":false,"schema":{"type":"string"}},{"name":"regulatoryFit","in":"query","required":false,"schema":{"type":"string"}},{"name":"decisionOwner","in":"query","required":false,"schema":{"type":"string"}},{"name":"objectionWindow","in":"query","required":false,"schema":{"type":"string"}},{"name":"evidenceSource","in":"query","required":false,"schema":{"type":"string"}},{"name":"nextManagementGate","in":"query","required":false,"schema":{"type":"string"}},{"name":"dueDate","in":"query","required":false,"schema":{"type":"string"}},{"name":"proofLabel","in":"query","required":false,"schema":{"type":"string"}},{"name":"proofLink","in":"query","required":false,"schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only No-Regret measure proof-gate status","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string"},"riskLevel":{"type":"string"},"measure":{"type":"object"},"scalarRows":{"type":"array"},"missingEvidence":{"type":"array"},"positiveFollowUps":{"type":"array"},"sourceActions":{"type":"object"},"dossierEvidence":{"type":"object"},"safety":{"type":"string"},"timestamp":{"type":"string","format":"date-time"},"_errors":{"type":"array","items":{"type":"string"}}}}}}}},"description":"Builds a deterministic advisory proof gate for No-Regret measure claims. It covers measure identity, target domain, scenario coverage, budget anchor, cost and benefit ranges, regulatory fit, decision owner, objection window, evidence source, next management gate and due date. The endpoint is read-only and does not approve investment, reserve budget, book finance, create workflows/HITL items, call external connectors or mutate billing, settlement, tariff or device-control state."}},"/api/dashboard/anschlusskapazitaet-evidence-queue":{"get":{"summary":"Anschlusskapazitaet evidence queue - read-only dossier-safe status","tags":["Dashboard API"],"operationId":"dashboard_api_anschlusskapazitaetEvidenceQueueStatus","parameters":[{"name":"connectionRequestId","in":"query","required":false,"schema":{"type":"string"}},{"name":"netzverknuepfungspunktHint","in":"query","required":false,"schema":{"type":"string"}},{"name":"capacityAssumptionKw","in":"query","required":false,"schema":{"type":"number"}},{"name":"gridRestrictionHint","in":"query","required":false,"schema":{"type":"string"}},{"name":"futureDemandContext","in":"query","required":false,"schema":{"type":"string"}},{"name":"legalQuestionMarker","in":"query","required":false,"schema":{"type":"string"}},{"name":"fnavOptionMarker","in":"query","required":false,"schema":{"type":"string"}},{"name":"evidenceStatus","in":"query","required":false,"schema":{"type":"string"}},{"name":"owner","in":"query","required":false,"schema":{"type":"string"}},{"name":"dueDate","in":"query","required":false,"schema":{"type":"string"}},{"name":"nextGate","in":"query","required":false,"schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only connection-capacity evidence queue","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string"},"evidenceQueue":{"type":"object"},"evidenceItems":{"type":"array"},"missingEvidence":{"type":"array"},"positiveFollowUps":{"type":"array"},"nextGate":{"type":"string"},"sourceActions":{"type":"object"},"dossierEvidence":{"type":"object"},"safety":{"type":"string"},"timestamp":{"type":"string","format":"date-time"},"_errors":{"type":"array","items":{"type":"string"}}}}}}}},"description":"Builds a deterministic evidence queue for VNB connection-capacity cases. The endpoint is read-only and does not reserve capacity, approve or reject grid-connection requests, decide fNAV/legal questions, create HITL tasks, or mutate billing, tariff, MaKo, settlement or external connector state."}},"/api/dashboard/connection-deadline-evidence-queue":{"get":{"summary":"Connection deadline evidence queue - read-only dossier-safe status","tags":["Dashboard API"],"operationId":"dashboard_api_connectionDeadlineEvidenceQueueStatus","parameters":[{"name":"caseId","in":"query","required":false,"schema":{"type":"string"}},{"name":"connectionType","in":"query","required":false,"schema":{"type":"string"}},{"name":"deadlineDate","in":"query","required":false,"schema":{"type":"string"}},{"name":"responsibleVnb","in":"query","required":false,"schema":{"type":"string"}},{"name":"technicalPlausibility","in":"query","required":false,"schema":{"type":"string"}},{"name":"owner","in":"query","required":false,"schema":{"type":"string"}},{"name":"nextGate","in":"query","required":false,"schema":{"type":"string"}},{"name":"missingEvidence","in":"query","required":false,"schema":{"type":"array","items":{"type":"string"}}},{"name":"clarificationPoints","in":"query","required":false,"schema":{"type":"array","items":{"type":"string"}}},{"name":"communicationContext","in":"query","required":false,"schema":{"type":"string"}},{"name":"asOf","in":"query","required":false,"schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only connection-deadline evidence queue","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string"},"deadlineRisk":{"type":"string"},"evidenceItems":{"type":"array"},"missingEvidence":{"type":"array"},"clarificationPoints":{"type":"array"},"positiveFollowUps":{"type":"array"},"communicationNoteDraft":{"type":"object"},"sourceActions":{"type":"object"},"dossierEvidence":{"type":"object"},"safety":{"type":"string"}}}}}}},"description":"Builds a deterministic evidence queue for deadline-critical VNB connection cases. The endpoint is read-only and does not send communication, approve/reject/condition a connection, reserve capacity, create workflow/HITL tasks, calculate legally binding deadlines, or mutate CRM, customer portal, billing, settlement, MaKo, tariff or device-control state."}},"/api/dashboard/layer0-audit-drilldown":{"get":{"summary":"Layer-0 audit drilldown note - read-only dossier-safe validation note","tags":["Dashboard API"],"operationId":"dashboard_api_layer0AuditDrilldownNoteStatus","parameters":[{"name":"kpiId","in":"query","required":false,"schema":{"type":"string"}},{"name":"topic","in":"query","required":false,"schema":{"type":"string"}},{"name":"dataSource","in":"query","required":false,"schema":{"type":"string"}},{"name":"peerDeviation","in":"query","required":false,"schema":{"type":"string"}},{"name":"processHint","in":"query","required":false,"schema":{"type":"string"}},{"name":"periodHint","in":"query","required":false,"schema":{"type":"string"}},{"name":"owner","in":"query","required":false,"schema":{"type":"string"}},{"name":"next90DayFocus","in":"query","required":false,"schema":{"type":"string"}},{"name":"benchmarkPeerGroup","in":"query","required":false,"schema":{"type":"string"}},{"name":"observedValue","in":"query","required":false,"schema":{"type":"string"}},{"name":"expectedValue","in":"query","required":false,"schema":{"type":"string"}},{"name":"unit","in":"query","required":false,"schema":{"type":"string"}},{"name":"evidenceStatus","in":"query","required":false,"schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only Layer-0 audit drilldown validation note","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string"},"auditNote":{"type":"object"},"checkFields":{"type":"array"},"missingEvidence":{"type":"array"},"positiveFollowUps":{"type":"array"},"sourceActions":{"type":"object"},"dossierEvidence":{"type":"object"},"safety":{"type":"string"},"timestamp":{"type":"string","format":"date-time"},"_errors":{"type":"array","items":{"type":"string"}}}}}}}},"description":"Turns an anomalous Layer-0 KPI into a deterministic validation note with data source, peer deviation, hypothesis, misinterpretation risk, ten check fields, owner, next 90-day step, evidence gaps and positive follow-ups. The endpoint is read-only and does not create persistent audit queues, external benchmark calls, reports, HITL tasks, legal/regulatory final judgments or production mutations."}},"/api/dashboard/legal-clarification-operating-model":{"get":{"summary":"Legal clarification operating model - read-only dossier-safe status","tags":["Dashboard API"],"operationId":"dashboard_api_legalClarificationOperatingModelStatus","parameters":[{"name":"caseId","in":"query","required":false,"schema":{"type":"string"}},{"name":"clarificationPoint","in":"query","required":false,"schema":{"type":"string"}},{"name":"affectedDecision","in":"query","required":false,"schema":{"type":"string"}},{"name":"legalStatus","in":"query","required":false,"schema":{"type":"string"}},{"name":"contractStatus","in":"query","required":false,"schema":{"type":"string"}},{"name":"owner","in":"query","required":false,"schema":{"type":"string"}},{"name":"ownerContact","in":"query","required":false,"schema":{"type":"string"}},{"name":"noRegretDataNeeds","in":"query","required":false,"schema":{"oneOf":[{"type":"array","items":{"type":"string"}},{"type":"string"}]}},{"name":"availableEvidence","in":"query","required":false,"schema":{"oneOf":[{"type":"array","items":{"type":"string"}},{"type":"string"}]}},{"name":"scenarioOptions","in":"query","required":false,"schema":{"oneOf":[{"type":"array","items":{"type":"string"}},{"type":"string"}]}},{"name":"redLines","in":"query","required":false,"schema":{"oneOf":[{"type":"array","items":{"type":"string"}},{"type":"string"}]}},{"name":"implementationStatus","in":"query","required":false,"schema":{"type":"string"}},{"name":"decisionReadiness","in":"query","required":false,"schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only legal clarification operating-model status","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string"},"legalStatus":{"type":"string"},"decisionReadiness":{"type":"string"},"preparationModel":{"type":"object"},"missingEvidence":{"type":"array"},"positiveFollowUps":{"type":"array"},"sourceActions":{"type":"object"},"dossierEvidence":{"type":"object"},"safety":{"type":"string"},"timestamp":{"type":"string","format":"date-time"},"_errors":{"type":"array","items":{"type":"string"}}}}}}}},"description":"Builds a deterministic operating-model evidence view for VNB cases where a legal clarification is pending. The endpoint is read-only and does not approve, release, dispatch, bill, settle, mutate tariffs, trigger MaKo, create HITL work or interpret law."}},"/api/dashboard/dr-readiness-evidence":{"get":{"summary":"DR readiness evidence gate - read-only dossier-safe status","tags":["Dashboard API"],"operationId":"dashboard_api_drReadinessEvidenceStatus","parameters":[{"name":"tenantScope","in":"query","required":false,"schema":{"type":"string"}},{"name":"storeInventoryStatus","in":"query","required":false,"schema":{"type":"string"}},{"name":"snapshotManifestStatus","in":"query","required":false,"schema":{"type":"string"}},{"name":"restoreDrillStatus","in":"query","required":false,"schema":{"type":"string"}},{"name":"rtoTarget","in":"query","required":false,"schema":{"type":"string"}},{"name":"rpoTarget","in":"query","required":false,"schema":{"type":"string"}},{"name":"owner","in":"query","required":false,"schema":{"type":"string"}},{"name":"lastDrillDate","in":"query","required":false,"schema":{"type":"string"}},{"name":"nextDrillDue","in":"query","required":false,"schema":{"type":"string"}},{"name":"perTenantRestoreStatus","in":"query","required":false,"schema":{"type":"string"}},{"name":"notes","in":"query","required":false,"schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only DR readiness evidence status","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string"},"readinessLevel":{"type":"string"},"readinessScore":{"type":"number"},"evidenceItems":{"type":"array"},"missingEvidence":{"type":"array"},"riskFlags":{"type":"array"},"positiveFollowUps":{"type":"array"},"sourceActions":{"type":"object"},"dossierEvidence":{"type":"object"},"safety":{"type":"string"},"timestamp":{"type":"string","format":"date-time"},"_errors":{"type":"array","items":{"type":"string"}}}}}}}},"description":"Builds deterministic disaster-recovery readiness evidence for backup, restore-drill, RTO/RPO and tenant-scope cutover checks. The endpoint is read-only and does not execute backup, restore, scheduler, replication, external connector, webhook, key handling, tenant-data mutation or Personal Agent actions."}},"/api/dashboard/special-grid-usage-impact-map":{"get":{"summary":"Special-grid-usage impact map - read-only dossier-safe status","tags":["Dashboard API"],"operationId":"dashboard_api_specialGridUsageImpactMapStatus","parameters":[{"name":"caseId","in":"query","required":false,"schema":{"type":"string"}},{"name":"caseType","in":"query","required":false,"schema":{"type":"string"}},{"name":"customerId","in":"query","required":false,"schema":{"type":"string"}},{"name":"applicationStatus","in":"query","required":false,"schema":{"type":"string"}},{"name":"formStatus","in":"query","required":false,"schema":{"type":"string"}},{"name":"deadlineStatus","in":"query","required":false,"schema":{"type":"string"}},{"name":"quantityBasis","in":"query","required":false,"schema":{"type":"string"}},{"name":"calculationLogicRef","in":"query","required":false,"schema":{"type":"string"}},{"name":"billingImpact","in":"query","required":false,"schema":{"type":"string"}},{"name":"eogImpact","in":"query","required":false,"schema":{"type":"string"}},{"name":"tariffImpact","in":"query","required":false,"schema":{"type":"string"}},{"name":"communicationStatus","in":"query","required":false,"schema":{"type":"string"}},{"name":"ownerRole","in":"query","required":false,"schema":{"type":"string"}},{"name":"regulatoryUncertainty","in":"query","required":false,"schema":{"type":"string"}},{"name":"sourceDatapoints","in":"query","required":false,"schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only special-grid-usage impact map status","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string"},"readinessLevel":{"type":"string"},"readinessScore":{"type":"number"},"caseSummary":{"type":"object"},"missingEvidence":{"type":"array"},"positiveFollowUps":{"type":"array"},"sourceActions":{"type":"object"},"dossierEvidence":{"type":"object"},"safety":{"type":"string"},"timestamp":{"type":"string","format":"date-time"},"_errors":{"type":"array","items":{"type":"string"}}}}}}}},"description":"Builds a deterministic impact map for Par. 19 StromNEV, self-consumption and special-grid-usage cases. The endpoint is read-only and does not execute legal interpretation, calculation, billing, settlement, tariff, customer communication, HITL, external connector or Personal Agent actions."}},"/api/dashboard/liquidity-planning-governance":{"get":{"summary":"Liquidity planning governance - read-only dossier-safe status","tags":["Dashboard API"],"operationId":"dashboard_api_liquidityPlanningGovernanceStatus","parameters":[{"name":"planningRunId","in":"query","required":false,"schema":{"type":"string"}},{"name":"planningHorizon","in":"query","required":false,"schema":{"type":"string"}},{"name":"sourceRegister","in":"query","required":false,"schema":{"type":"string"}},{"name":"dictionaryVersion","in":"query","required":false,"schema":{"type":"string"}},{"name":"vatLogicRef","in":"query","required":false,"schema":{"type":"string"}},{"name":"cashPoolSettlementRef","in":"query","required":false,"schema":{"type":"string"}},{"name":"ownerRaci","in":"query","required":false,"schema":{"type":"string"}},{"name":"correctionWorkflow","in":"query","required":false,"schema":{"type":"string"}},{"name":"approvalStatus","in":"query","required":false,"schema":{"type":"string"}},{"in":"query","name":"sapAccountSources","schema":{"type":"string"}},{"in":"query","name":"controllingSourceIds","schema":{"type":"string"}},{"in":"query","name":"loanTmsSourceIds","schema":{"type":"string"}},{"in":"query","name":"scenarioAssumptions","schema":{"type":"string"}},{"in":"query","name":"validationRules","schema":{"type":"string"}},{"in":"query","name":"plausibilityChecks","schema":{"type":"string"}},{"in":"query","name":"sourceHealth","schema":{"type":"string"}},{"in":"query","name":"liquidityRiskFlags","schema":{"type":"string"}},{"in":"query","name":"interestRiskFlags","schema":{"type":"string"}},{"in":"query","name":"investmentLinkRefs","schema":{"type":"string"}},{"in":"query","name":"sourceDatapoints","schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only liquidity planning governance status","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string"},"readinessLevel":{"type":"string"},"readinessScore":{"type":"number"},"sourceCoverage":{"type":"object"},"evidenceItems":{"type":"array"},"missingEvidence":{"type":"array"},"riskFlags":{"type":"array"},"positiveFollowUps":{"type":"array"},"sourceActions":{"type":"object"},"dossierEvidence":{"type":"object"},"safety":{"type":"string"},"timestamp":{"type":"string","format":"date-time"},"_errors":{"type":"array","items":{"type":"string"}}}}}}}},"description":"Builds deterministic governance evidence for liquidity, interest, SAP account, TMS loan, VAT logic and cash-pool planning contexts. The endpoint is read-only and does not calculate Treasury/cashflow/VAT values, approve finance workflows, send payments, mutate billing/settlement/tariffs/contracts/EOG, call connectors, create HITL items or execute Personal Agent actions."}},"/api/dashboard/energy-sharing-simulation-gate":{"get":{"summary":"Energy-Sharing simulation gate - read-only dossier-safe status","tags":["Dashboard API"],"operationId":"dashboard_api_energySharingSimulationGateStatus","parameters":[{"name":"communityId","in":"query","required":false,"schema":{"type":"string"}},{"name":"gridOperatorId","in":"query","required":false,"schema":{"type":"string"}},{"name":"participantCount","in":"query","required":false,"schema":{"type":"string"}},{"name":"participantEvidenceRef","in":"query","required":false,"schema":{"type":"string"}},{"name":"maloStatus","in":"query","required":false,"schema":{"type":"string"}},{"name":"meteringReadiness","in":"query","required":false,"schema":{"type":"string"}},{"name":"marketRoleReadiness","in":"query","required":false,"schema":{"type":"string"}},{"name":"dataBasis","in":"query","required":false,"schema":{"type":"string"}},{"name":"a96EvidenceRef","in":"query","required":false,"schema":{"type":"string"}},{"name":"settlementEvidenceRef","in":"query","required":false,"schema":{"type":"string"}},{"name":"contractEvidenceRef","in":"query","required":false,"schema":{"type":"string"}},{"name":"economicsAssumptionRef","in":"query","required":false,"schema":{"type":"string"}},{"name":"generationMaloCount","in":"query","required":false,"schema":{"type":"string"}},{"name":"consumptionMaloCount","in":"query","required":false,"schema":{"type":"string"}},{"name":"maloInventoryEvidenceRef","in":"query","required":false,"schema":{"type":"string"}},{"name":"supplierOrDirectMarketerEvidenceRef","in":"query","required":false,"schema":{"type":"string"}},{"name":"meteringConceptEvidenceRef","in":"query","required":false,"schema":{"type":"string"}},{"name":"imsysStatus","in":"query","required":false,"schema":{"type":"string"}},{"name":"fifteenMinuteValuesReadiness","in":"query","required":false,"schema":{"type":"string"}},{"name":"dataBasisFreshnessRef","in":"query","required":false,"schema":{"type":"string"}},{"name":"residualSupplyContractEvidenceRef","in":"query","required":false,"schema":{"type":"string"}},{"name":"participationStartDate","in":"query","required":false,"schema":{"type":"string"}},{"name":"participationEndDate","in":"query","required":false,"schema":{"type":"string"}},{"name":"eligibilityEvidenceRef","in":"query","required":false,"schema":{"type":"string"}},{"name":"exceptionRateEvidenceRef","in":"query","required":false,"schema":{"type":"string"}},{"name":"economicsThresholdRef","in":"query","required":false,"schema":{"type":"string"}},{"name":"owner","in":"query","required":false,"schema":{"type":"string"}},{"name":"escalationContact","in":"query","required":false,"schema":{"type":"string"}},{"name":"sourceArtifacts","in":"query","required":false,"schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only Energy-Sharing simulation gate status","content":{"application/json":{"schema":{"type":"object","properties":{"gateStatus":{"type":"string"},"simulationStage":{"type":"string"},"readinessScore":{"type":"number"},"missingEvidence":{"type":"array"},"positiveFollowUps":{"type":"array"},"sourceActions":{"type":"object"},"dossierEvidence":{"type":"object"},"safety":{"type":"string"},"timestamp":{"type":"string","format":"date-time"},"_errors":{"type":"array","items":{"type":"string"}}}}}}}},"description":"Classifies Energy-Sharing candidates as learning pilot, simulation-ready, billing-near-ready or blocked by missing evidence. The endpoint is read-only and does not run allocation, settlement/A96 export, MaKo dispatch, billing, tariff mutation, HITL, external connector, customer communication or Personal Agent execution."}},"/api/dashboard/energy-sharing-42c-cutover-readiness":{"get":{"summary":"§42c cutover readiness - read-only dossier-safe status","tags":["Dashboard API"],"operationId":"dashboard_api_energySharing42cCutoverReadinessStatus","parameters":[{"name":"cutoverId","in":"query","required":false,"schema":{"type":"string"}},{"name":"pilotTenantId","in":"query","required":false,"schema":{"type":"string"}},{"name":"balanceGroupId","in":"query","required":false,"schema":{"type":"string"}},{"name":"a96DefaultsStatus","in":"query","required":false,"schema":{"type":"string"}},{"name":"specFreezeStatus","in":"query","required":false,"schema":{"type":"string"}},{"name":"pilotTenantStatus","in":"query","required":false,"schema":{"type":"string"}},{"name":"settlementHardeningStatus","in":"query","required":false,"schema":{"type":"string"}},{"name":"allocationLoadTestStatus","in":"query","required":false,"schema":{"type":"string"}},{"name":"runbookStatus","in":"query","required":false,"schema":{"type":"string"}},{"name":"complianceSignoffStatus","in":"query","required":false,"schema":{"type":"string"}},{"name":"rollbackPlanStatus","in":"query","required":false,"schema":{"type":"string"}},{"name":"owner","in":"query","required":false,"schema":{"type":"string"}},{"name":"targetDate","in":"query","required":false,"schema":{"type":"string"}},{"name":"evidenceRefs","in":"query","required":false,"schema":{"oneOf":[{"type":"array","items":{"type":"string"}},{"type":"string"}]}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only §42c cutover readiness status","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string"},"riskLevel":{"type":"string"},"readinessScore":{"type":"number"},"subTracks":{"type":"array"},"missingEvidence":{"type":"array"},"positiveFollowUps":{"type":"array"},"sourceActions":{"type":"object"},"dossierEvidence":{"type":"object"},"safety":{"type":"string"},"timestamp":{"type":"string","format":"date-time"},"_errors":{"type":"array","items":{"type":"string"}}}}}}}},"description":"Evaluates supplied §42c cutover evidence across sub-tracks A-G and returns a dossier-safe readiness gate. The endpoint is read-only and does not provision tenants, migrate data, release A96 exports, execute allocation/settlement, create HITL tasks, run rollback/restore, call external connectors, handle secrets or mutate Personal Agent behavior."}},"/api/dashboard/evu-api-migration-diagnostics":{"get":{"summary":"EVU API migration diagnostics - read-only dossier-safe status","tags":["Dashboard API"],"operationId":"dashboard_api_evuApiMigrationDiagnosticsStatus","parameters":[{"name":"businessProcess","in":"query","required":false,"schema":{"type":"string"}},{"name":"endpoint","in":"query","required":false,"schema":{"type":"string"}},{"name":"method","in":"query","required":false,"schema":{"type":"string"}},{"name":"authScope","in":"query","required":false,"schema":{"type":"string"}},{"name":"dataContext","in":"query","required":false,"schema":{"type":"string"}},{"name":"requestShape","in":"query","required":false,"schema":{"type":"string"}},{"name":"validationError","in":"query","required":false,"schema":{"type":"string"}},{"name":"responseCode","in":"query","required":false,"schema":{"type":"string"}},{"name":"completionCriterion","in":"query","required":false,"schema":{"type":"string"}},{"name":"owner","in":"query","required":false,"schema":{"type":"string"}},{"name":"nextStep","in":"query","required":false,"schema":{"type":"string"}},{"name":"ticketRef","in":"query","required":false,"schema":{"type":"string"}},{"name":"systemRef","in":"query","required":false,"schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only EVU API migration diagnostic status","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string"},"safety":{"type":"string"},"evidenceCompleteness":{"type":"number"},"missingEvidence":{"type":"array"},"diagnosticFindings":{"type":"array"},"riskHints":{"type":"array"},"next90DayStep":{"type":"string"},"positiveFollowUps":{"type":"array"},"sourceActions":{"type":"object"},"dossierEvidence":{"type":"object"},"timestamp":{"type":"string","format":"date-time"},"_errors":{"type":"array","items":{"type":"string"}}}}}}}},"description":"Evaluates supplied EVU/VNB API migration observations as a read-only diagnostic matrix. The endpoint does not call live endpoints, run OAuth flows, handle secrets, execute JSON Patch, close third-party processes, create HITL tasks, or trigger MaKo/Billing/Settlement/Tariff actions."}},"/api/dashboard/nova-decision-lifecycle-readiness":{"get":{"summary":"NOVA decision lifecycle readiness - read-only dossier-safe status","tags":["Dashboard API"],"operationId":"dashboard_api_novaDecisionLifecycleReadinessStatus","parameters":[{"name":"caseId","in":"query","required":false,"schema":{"type":"string"}},{"name":"decisionKind","in":"query","required":false,"schema":{"type":"string"}},{"name":"lifecycleModel","in":"query","required":false,"schema":{"type":"string"}},{"name":"sourceCatalogue","in":"query","required":false,"schema":{"type":"string"}},{"name":"auditTrail","in":"query","required":false,"schema":{"type":"string"}},{"name":"tenantIsolationEvidence","in":"query","required":false,"schema":{"type":"string"}},{"name":"hitlPolicyEvidence","in":"query","required":false,"schema":{"type":"string"}},{"name":"replayEvidence","in":"query","required":false,"schema":{"type":"string"}},{"name":"expiryEvidence","in":"query","required":false,"schema":{"type":"string"}},{"name":"owner","in":"query","required":false,"schema":{"type":"string"}},{"name":"deadline","in":"query","required":false,"schema":{"type":"string"}},{"name":"openMeasure","in":"query","required":false,"schema":{"type":"string"}},{"name":"evidenceRefs","in":"query","required":false,"schema":{"oneOf":[{"type":"array","items":{"type":"string"}},{"type":"string"}]}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only NOVA decision lifecycle readiness status","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string"},"riskLevel":{"type":"string"},"readinessScore":{"type":"number"},"missingEvidence":{"type":"array"},"positiveFollowUps":{"type":"array"},"sourceActions":{"type":"object"},"dossierEvidence":{"type":"object"},"safety":{"type":"string"},"timestamp":{"type":"string","format":"date-time"},"_errors":{"type":"array","items":{"type":"string"}}}}}}}},"description":"Evaluates supplied NOVA decision-lifecycle evidence and returns a dossier-safe readiness gate. The endpoint is read-only and does not create decisions, transition lifecycle state, create HITL items, emit webhooks/SSE events, replay triggers, apply asset overrides, mutate MaStR/Redispatch/thresholds, call external connectors, handle secrets or mutate Personal Agent behavior."}},"/api/dashboard/stadtwerk-mauer-sandbox-runtime":{"get":{"summary":"Stadtwerk Mauer sandbox runtime -- read-only dossier-safe status","tags":["Dashboard API"],"operationId":"dashboard_api_stadtwerkMauerSandboxRuntimeStatus","parameters":[{"name":"tenantId","in":"query","required":false,"schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only Stadtwerk Mauer sandbox runtime status","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string"},"tenantId":{"type":"string"},"eventCount":{"type":"number"},"artifactCount":{"type":"number"},"derivedStateInventory":{"type":"object"},"resetDeleteReadiness":{"type":"object"},"lastResetResult":{"type":"object","nullable":true},"missingLifecycleEvidence":{"type":"array"},"positiveFollowUps":{"type":"array"},"sourceActions":{"type":"object"},"dossierEvidence":{"type":"object"},"safety":{"type":"string"},"timestamp":{"type":"string","format":"date-time"},"_errors":{"type":"array","items":{"type":"string"}}}}}}}},"description":"Reports deterministic Stadtwerk Mauer sandbox runtime state, reset/delete readiness, derived artifact counts and source-action guards. The endpoint is read-only; sandbox ingest/reset mutation actions are separate and not used for dossier hydration."}},"/api/dashboard/stadtwerk-mauer-external-interface-stubs":{"get":{"summary":"Stadtwerk Mauer external-interface stubs -- read-only status","tags":["Dashboard API"],"operationId":"dashboard_api_stadtwerkMauerExternalInterfaceStubsStatus","parameters":[{"name":"tenantId","in":"query","required":false,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"number"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only Stadtwerk Mauer external-interface stub status","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string"},"tenantId":{"type":"string"},"transcriptCount":{"type":"number"},"artifactCount":{"type":"number"},"familyCounts":{"type":"object"},"variantCounts":{"type":"object"},"recentTranscripts":{"type":"array"},"missingEvidence":{"type":"array"},"positiveFollowUps":{"type":"array"},"resetBoundary":{"type":"object"},"sourceActions":{"type":"object"},"dossierEvidence":{"type":"object"},"safety":{"type":"string"},"timestamp":{"type":"string","format":"date-time"},"_errors":{"type":"array","items":{"type":"string"}}}}}}}},"description":"Reports deterministic sandbox stub transcripts, response variants, missing evidence, reset boundary and no-call guards. The endpoint is read-only; stub calls are separate sandbox-only non-consequential mutations."}},"/api/dashboard/stadtwerk-mauer-e2e-process-demo":{"get":{"summary":"Stadtwerk Mauer E2E process demo -- read-only status","tags":["Dashboard API"],"operationId":"dashboard_api_stadtwerkMauerE2eProcessDemoStatus","parameters":[{"name":"tenantId","in":"query","required":false,"schema":{"type":"string"}},{"name":"caseId","in":"query","required":false,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"number"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only Stadtwerk Mauer E2E process demo status","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string"},"tenantId":{"type":"string"},"demoPath":{"type":"string"},"caseId":{"type":"string","nullable":true},"traceCount":{"type":"number"},"artifactCount":{"type":"number"},"recentTraces":{"type":"array"},"rolesAndCapabilities":{"type":"array"},"evidenceQuality":{"type":"string"},"missingEvidence":{"type":"array"},"positiveFollowUps":{"type":"array"},"resetBoundary":{"type":"object"},"sourceActions":{"type":"object"},"dossierEvidence":{"type":"object"},"safety":{"type":"string"},"timestamp":{"type":"string","format":"date-time"},"_errors":{"type":"array","items":{"type":"string"}}}}}}}},"description":"Reports deterministic Stadtwerk Mauer E2E demo traces, VDMI role/capability routing, stub transcript evidence, missing evidence, reset boundary and no-call guards. The endpoint is read-only; demo runs are separate sandbox-only non-consequential mutations."}},"/api/dashboard/stadtwerk-mauer-mastr-data-overlay":{"get":{"summary":"Stadtwerk Mauer blended MaStR data overlay -- read-only status","tags":["Dashboard API"],"operationId":"dashboard_api_stadtwerkMauerMastrDataOverlayStatus","parameters":[{"name":"tenantId","in":"query","required":false,"schema":{"type":"string"}},{"name":"postalCode","in":"query","required":false,"schema":{"type":"string"}},{"name":"municipality","in":"query","required":false,"schema":{"type":"string"}},{"name":"caseId","in":"query","required":false,"schema":{"type":"string"}},{"name":"revalidationMode","in":"query","required":false,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only Stadtwerk Mauer blended MaStR data overlay status","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string"},"tenantId":{"type":"string"},"municipality":{"type":"string"},"postalCode":{"type":"string"},"assetCount":{"type":"number"},"totalCapacityKw":{"type":"number"},"originalGridOperators":{"type":"array"},"operatorOverlay":{"type":"object"},"sampleAssets":{"type":"array"},"publicContextRows":{"type":"array"},"overlayAssetRows":{"type":"array"},"revalidationRows":{"type":"array"},"affectedCaseRows":{"type":"array"},"nextGateRows":{"type":"array"},"safeActionRows":{"type":"array"},"boundaryRows":{"type":"array"},"evidenceQuality":{"type":"string"},"missingEvidence":{"type":"array"},"positiveFollowUps":{"type":"array"},"resetBoundary":{"type":"object"},"sourceActions":{"type":"object"},"dossierEvidence":{"type":"object"},"safety":{"type":"string"},"timestamp":{"type":"string","format":"date-time"},"_errors":{"type":"array","items":{"type":"string"}}}}}}}},"description":"Reports the real MaStR baseline for Mauer and the virtual Stadtwerk Mauer operator overlay. Original MaStR facts and real-world operator provenance remain visible; no MaStR records, MaKo, device-control or external connectors are mutated."}},"/api/dashboard/stadtwerk-mauer-case-detail":{"get":{"summary":"Stadtwerk Mauer case detail -- read-only Workbench projection","tags":["Dashboard API"],"operationId":"dashboard_api_stadtwerkMauerCaseDetailStatus","parameters":[{"name":"tenantId","in":"query","required":false,"schema":{"type":"string"}},{"name":"caseId","in":"query","required":false,"schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only Stadtwerk Mauer case detail projection"}},"description":"Returns a deterministic Budibase-renderable detail model for a selectable synthetic Stadtwerk Mauer PV missing-NAP demo case. The endpoint summarizes Blueprint seed, role-workbench hints, E2E trace/artifact status and operations-runbook links without executing Budibase, Rundeck, MaKo, billing, settlement, device-control or external actions."}},"/api/dashboard/stadtwerk-mauer-case-annotations":{"post":{"summary":"Stadtwerk Mauer case annotation -- sandbox command","tags":["Dashboard API"],"operationId":"dashboard_api_stadtwerkMauerCaseAnnotationCommand","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Structured sandbox annotation command result"}},"description":"Records a bounded audited sandbox annotation/status for the selected synthetic Stadtwerk Mauer case. This is not a generic editor and does not write Budibase tables, mutate public context, trigger runbooks, MaKo, billing, settlement or device-control.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"tenantId":{"type":"string"},"caseId":{"type":"string"},"commandType":{"type":"string"},"status":{"type":"string"},"note":{"type":"string"},"reason":{"type":"string"},"actorLabel":{"type":"string"},"sourceLabel":{"type":"string"},"idempotencyKey":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}}},"/api/dashboard/stadtwerk-mauer-workbench-hub":{"get":{"summary":"Stadtwerk Mauer Workbench Hub -- read-only launcher projection","tags":["Dashboard API"],"operationId":"dashboard_api_stadtwerkMauerWorkbenchHubStatus","parameters":[{"name":"tenantId","in":"query","required":false,"schema":{"type":"string"}},{"name":"caseId","in":"query","required":false,"schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only Stadtwerk Mauer Workbench Hub projection"}},"description":"Returns a deterministic Budibase-renderable hub model for the Stadtwerk Mauer Workbench. The endpoint exposes target readiness, route metadata, data-class separation, next gates and no-call guards without executing Budibase writes, Rundeck jobs, MaKo, billing, settlement, device-control or external actions."}},"/api/dashboard/stadtwerk-mauer-administrator-inventory":{"get":{"summary":"Stadtwerk Mauer Administrator inventory -- read-only catalog projection","tags":["Dashboard API"],"operationId":"dashboard_api_stadtwerkMauerAdministratorInventoryStatus","parameters":[{"name":"tenantId","in":"query","required":false,"schema":{"type":"string"}},{"name":"caseId","in":"query","required":false,"schema":{"type":"string"}},{"name":"includeRuntime","in":"query","required":false,"schema":{"type":"boolean"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only Stadtwerk Mauer Administrator inventory projection"}},"description":"Returns a deterministic Budibase-renderable Administrator inventory for the Stadtwerk Mauer Workbench. The endpoint separates public context, synthetic seed, sandbox runtime, generated Workbench items and runbook read/verify surfaces without provisioning, reset, Budibase writes, MaKo, billing, settlement, device-control or external actions."}},"/api/dashboard/stadtwerk-mauer-tenant-databrowser":{"get":{"summary":"Stadtwerk Mauer Tenant Databrowser -- read-only bounded inspection rows","tags":["Dashboard API"],"operationId":"dashboard_api_stadtwerkMauerTenantDatabrowserStatus","parameters":[{"name":"tenantId","in":"query","required":false,"schema":{"type":"string"}},{"name":"caseId","in":"query","required":false,"schema":{"type":"string"}},{"name":"categoryId","in":"query","required":false,"schema":{"type":"string"}},{"name":"itemId","in":"query","required":false,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":50}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only bounded Stadtwerk Mauer Tenant Databrowser projection"}},"description":"Returns bounded scalar category, item, trace and detail rows for the Stadtwerk Mauer Administrator Workbench. The endpoint is read-only, sandbox-scoped and does not export, replay traces, mutate public context, write Budibase tables or execute runbooks."}},"/api/dashboard/stadtwerk-mauer-case-actions":{"get":{"summary":"Stadtwerk Mauer case actions -- read-only/verify-only action contract","tags":["Dashboard API"],"operationId":"dashboard_api_stadtwerkMauerCaseActionsStatus","parameters":[{"name":"tenantId","in":"query","required":false,"schema":{"type":"string"}},{"name":"caseId","in":"query","required":false,"schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only Stadtwerk Mauer selected-case action contract"}},"description":"Returns deterministic Budibase-renderable selected-case action and process-panel metadata for the Stadtwerk Mauer Workbench. The endpoint exposes refresh, Blueprint verify, evidence validation, runbook boundary and last-result rows without executing Budibase writes, setup/reset/provisioning, Rundeck jobs, MaKo, billing, settlement, device-control, HITL or external connector actions."}},"/api/dashboard/stadtwerk-mauer-role-workbench-catalog":{"get":{"summary":"Stadtwerk Mauer role Workbench catalog -- read-only open-target contract","tags":["Dashboard API"],"operationId":"dashboard_api_stadtwerkMauerRoleWorkbenchCatalogStatus","parameters":[{"name":"tenantId","in":"query","required":false,"schema":{"type":"string"}},{"name":"caseId","in":"query","required":false,"schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only Stadtwerk Mauer role Workbench catalog projection"}},"description":"Returns deterministic Budibase-renderable role Workbench target metadata for the Stadtwerk Mauer Workbench Hub. The endpoint exposes scalar role/open-target rows for Administrator, Zielnetzplanung, Vertrieb, Key Account and VDMI governance views without implementing role calculations, Budibase writes, authorization changes, MaKo, billing, settlement, device-control, HITL or external connector actions."}},"/api/dashboard/stadtwerk-mauer-grid-planning-role-queue":{"get":{"summary":"Stadtwerk Mauer grid-planning role queue -- read-only evidence handover","tags":["Dashboard API"],"operationId":"dashboard_api_stadtwerkMauerGridPlanningRoleQueueStatus","parameters":[{"name":"tenantId","in":"query","required":false,"schema":{"type":"string"}},{"name":"caseId","in":"query","required":false,"schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only Stadtwerk Mauer grid-planning role queue projection"}},"description":"Returns deterministic Budibase-renderable Zielnetzplanung queue and evidence handover rows for the Stadtwerk Mauer Workbench. The endpoint exposes scalar generated role queue facts for the synthetic PV missing-NAP case without role assignment writes, Budibase writes, grid-capacity calculations, MaKo, billing, settlement, device-control, HITL or external connector actions."}},"/api/dashboard/stadtwerk-mauer-grid-planning-selected-item-detail":{"get":{"summary":"Stadtwerk Mauer grid-planning selected item detail -- read-only next-gate context","tags":["Dashboard API"],"operationId":"dashboard_api_stadtwerkMauerGridPlanningSelectedItemDetailStatus","parameters":[{"name":"tenantId","in":"query","required":false,"schema":{"type":"string"}},{"name":"caseId","in":"query","required":false,"schema":{"type":"string"}},{"name":"queueItemId","in":"query","required":false,"schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only Stadtwerk Mauer selected grid-planning item detail projection"}},"description":"Returns scalar Budibase-renderable detail, context, evidence gap, next-gate and safe follow-up rows for one generated Zielnetzplanung role-queue item. The endpoint is advisory/read-only and does not approve grid capacity, mutate public context, write Budibase tables, run planning engines, call external connectors or execute operational actions."}},"/api/dashboard/stadtwerk-mauer-sales-workbench-briefing":{"get":{"summary":"Stadtwerk Mauer sales Workbench briefing -- read-only evidence-backed claims","tags":["Dashboard API"],"operationId":"dashboard_api_stadtwerkMauerSalesWorkbenchBriefingStatus","parameters":[{"name":"tenantId","in":"query","required":false,"schema":{"type":"string"}},{"name":"caseId","in":"query","required":false,"schema":{"type":"string"}},{"name":"audience","in":"query","required":false,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":25}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only Stadtwerk Mauer sales Workbench briefing projection"}},"description":"Returns deterministic Budibase-renderable Vertrieb and Key Account briefing rows for the Stadtwerk Mauer Workbench. Claims are explicitly evidence-backed, assumption-backed or not-yet-claimable and the endpoint does not create CRM/customer data, Budibase writes, MaKo, billing, settlement, tariff, device-control, HITL or external connector actions."}},"/api/dashboard/stadtwerk-mauer-workbench-landing":{"get":{"summary":"Stadtwerk Mauer Workbench landing -- presenter readiness projection","tags":["Dashboard API"],"operationId":"dashboard_api_stadtwerkMauerWorkbenchLandingStatus","parameters":[{"name":"tenantId","in":"query","required":false,"schema":{"type":"string"}},{"name":"caseId","in":"query","required":false,"schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only Stadtwerk Mauer Workbench landing projection"}},"description":"Returns deterministic Budibase-renderable landing/status rows for the Stadtwerk Mauer Workbench first screen. The endpoint exposes demo readiness, available sections, safe presenter actions and guard gaps without Budibase writes, setup/reset, provisioning, MaKo, billing, settlement, device-control, HITL or external actions."}},"/api/dashboard/stadtwerk-mauer-workbench-selected-target":{"get":{"summary":"Stadtwerk Mauer Workbench selected target -- read-only focus projection","tags":["Dashboard API"],"operationId":"dashboard_api_stadtwerkMauerWorkbenchSelectedTargetStatus","parameters":[{"name":"tenantId","in":"query","required":false,"schema":{"type":"string"}},{"name":"caseId","in":"query","required":false,"schema":{"type":"string"}},{"name":"targetId","in":"query","required":false,"schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only Stadtwerk Mauer selected Workbench target projection"}},"description":"Returns deterministic Budibase-renderable selected/focused target rows for the Stadtwerk Mauer Workbench Hub. The endpoint maps Hub/role targets to scalar focus/helper rows without role-specific calculations, permission changes, Budibase writes, setup/reset, Rundeck execution, MaKo, billing, settlement, device-control, HITL or external connector actions."}},"/api/dashboard/stadtwerk-mauer-blueprint-pack-verify":{"get":{"summary":"Stadtwerk Mauer Blueprint Pack verify -- read-only Workbench projection","tags":["Dashboard API"],"operationId":"dashboard_api_stadtwerkMauerBlueprintPackVerifyStatus","parameters":[{"name":"tenantId","in":"query","required":false,"schema":{"type":"string"}},{"name":"seedId","in":"query","required":false,"schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only Stadtwerk Mauer Blueprint Pack verify projection"}},"description":"Returns scalar-friendly Blueprint-Pack verification evidence for the Stadtwerk Mauer Budibase Workbench. The endpoint reuses the static Blueprint seed validation contract and exposes no setup/reset/provisioning, direct Rundeck execution, Budibase writes, public-context mutation, MaKo, billing, settlement, tariff, device-control, external connector, secret/key or Personal-Agent action."}},"/api/dashboard/stadtwerk-mauer-transfer-readiness":{"get":{"summary":"Stadtwerk Mauer transfer readiness -- read-only Workbench projection","tags":["Dashboard API"],"operationId":"dashboard_api_stadtwerkMauerTransferReadinessStatus","parameters":[{"name":"tenantId","in":"query","required":false,"schema":{"type":"string"}},{"name":"seedId","in":"query","required":false,"schema":{"type":"string"}},{"name":"caseId","in":"query","required":false,"schema":{"type":"string"}},{"name":"includeBlockedBoundaries","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"includeSafeNextSteps","in":"query","required":false,"schema":{"type":"boolean"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only Stadtwerk Mauer transfer-readiness projection"}},"description":"Returns scalar Budibase-safe transfer-readiness rows for the Stadtwerk Mauer Blueprint Pack. The endpoint labels public context, synthetic seed data, sandbox runtime artifacts, tenant parameters, reusable Workbench elements and blocked production boundaries without setup/reset/provisioning, direct Rundeck execution, Budibase writes, public-context mutation, MaKo, billing, settlement, tariff, device-control, external connector, secret/key or Personal-Agent action."}},"/api/dashboard/stadtwerk-mauer-landing-registry-draft":{"get":{"summary":"Stadtwerk Mauer Landing-Registry draft -- read-only sync proof","tags":["Dashboard API"],"operationId":"dashboard_api_stadtwerkMauerLandingRegistryDraftStatus","parameters":[{"name":"tenantId","in":"query","required":false,"schema":{"type":"string"}},{"name":"seedId","in":"query","required":false,"schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only Landing-Registry draft sync proof"}},"description":"Returns a deterministic Landing-Registry draft projection for the Stadtwerk Mauer Blueprint-Pack demo seed. The draft is derived from the canonical Blueprint-Pack demoProcessMatrix and keeps productive cernion.de publication pending. The endpoint performs no Landing-Registry write, Budibase write, deploy, publication, external connector, MaKo, billing, settlement, tariff, device-control, HITL, secret/key or Personal-Agent action."}},"/api/dashboard/energy-sidecar-route-registry":{"get":{"summary":"Energy Sidecar Route Registry -- read-only advisory evidence","tags":["Dashboard API"],"operationId":"dashboard_api_energySidecarRouteRegistryStatus","parameters":[{"name":"intent","in":"query","required":false,"schema":{"type":"string"}},{"name":"domain","in":"query","required":false,"schema":{"type":"string"}},{"name":"requiredInput","in":"query","required":false,"schema":{"type":"string"}},{"name":"tenantId","in":"query","required":false,"schema":{"type":"string"}},{"name":"includeFallbacks","in":"query","required":false,"schema":{"type":"boolean"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only route-registry evidence"}},"description":"Returns deterministic dossier-safe route-registry rows for Fach-Sidecar routing/audit questions. The endpoint recommends existing read-only Cernion actions/endpoints, source registry boundaries, required inputs, fallback routes and no-call guards. It is advisory/read-only and never executes the recommended downstream endpoint, calls external connectors, creates HITL/workflows, sends webhooks/mail, mutates public context, or performs MaKo/billing/settlement/tariff/device-control actions."}},"/api/dashboard/interconnection-release-file":{"get":{"summary":"Koppelpunkt Freigabeakte -- read-only evidence/gate status","tags":["Dashboard API"],"operationId":"dashboard_api_interconnectionReleaseFileStatus","parameters":[{"name":"caseId","in":"query","required":false,"schema":{"type":"string"}},{"name":"koppelpunktId","in":"query","required":false,"schema":{"type":"string"}},{"name":"marketPartnerId","in":"query","required":false,"schema":{"type":"string"}},{"name":"timeseriesId","in":"query","required":false,"schema":{"type":"string"}},{"name":"mappingVersion","in":"query","required":false,"schema":{"type":"string"}},{"name":"sourceSystem","in":"query","required":false,"schema":{"type":"string"}},{"name":"evidenceStatus","in":"query","required":false,"schema":{"type":"string"}},{"name":"approvalStatus","in":"query","required":false,"schema":{"type":"string"}},{"name":"owner","in":"query","required":false,"schema":{"type":"string"}},{"name":"reviewerRole","in":"query","required":false,"schema":{"type":"string"}},{"name":"affectedProcess","in":"query","required":false,"schema":{"type":"string"}},{"name":"nextChangeGate","in":"query","required":false,"schema":{"type":"string"}},{"name":"tenantId","in":"query","required":false,"schema":{"type":"string"}},{"name":"includeFallbacks","in":"query","required":false,"schema":{"type":"boolean"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only interconnection release-file evidence"}},"description":"Returns deterministic dossier-safe Freigabeakte rows for Koppelpunkt, Marktpartner and Zeitreihen mapping decisions. The endpoint reports release status, evidence source/version, owner, downstream process impacts, missing evidence, positive follow-ups and no-call guards. It is advisory/read-only and never writes mappings, executes Freigabe workflows, creates HITL tickets, sends mail/webhooks, calls external connectors, mutates Budibase tables, or performs MaKo/billing/settlement/tariff/device-control actions."}},"/api/dashboard/fnav-fast-track-contract-gate":{"get":{"summary":"fNAV fast-track contract gate -- read-only decision readiness","tags":["Dashboard API"],"operationId":"dashboard_api_fnavFastTrackContractGateStatus","parameters":[{"name":"gateId","in":"query","required":false,"schema":{"type":"string"}},{"name":"gridOperatorId","in":"query","required":false,"schema":{"type":"string"}},{"name":"requestType","in":"query","required":false,"schema":{"type":"string"}},{"name":"assetOrLoadType","in":"query","required":false,"schema":{"type":"string"}},{"name":"netzsignalPriorityPolicy","in":"query","required":false,"schema":{"type":"string"}},{"name":"controlEvidenceRef","in":"query","required":false,"schema":{"type":"string"}},{"name":"contractStatus","in":"query","required":false,"schema":{"type":"string"}},{"name":"legalStatus","in":"query","required":false,"schema":{"type":"string"}},{"name":"ownerContact","in":"query","required":false,"schema":{"type":"string"}},{"in":"query","name":"requestedCapacityKW","schema":{"type":"number"}},{"in":"query","name":"firmCapacityKW","schema":{"type":"number"}},{"in":"query","name":"flexibleCapacityKW","schema":{"type":"number"}},{"in":"query","name":"curtailmentWindow","schema":{"type":"string"}},{"in":"query","name":"voltageLevel","schema":{"type":"string"}},{"in":"query","name":"scheduleObligation","schema":{"type":"string"}},{"in":"query","name":"meteringRequirements","schema":{"type":"string"}},{"in":"query","name":"marketingBoundaries","schema":{"type":"string"}},{"in":"query","name":"commercialImpact","schema":{"type":"string"}},{"in":"query","name":"breakCriteria","schema":{"type":"string"}},{"in":"query","name":"escalationOwner","schema":{"type":"string"}},{"in":"query","name":"vdmiProcessId","schema":{"type":"string"}},{"in":"query","name":"sourceRef","schema":{"type":"string"}},{"in":"query","name":"connectionRequestRef","schema":{"type":"string"}},{"in":"query","name":"gridConnectionPoint","schema":{"type":"string"}},{"in":"query","name":"capacityOfferRef","schema":{"type":"string"}},{"in":"query","name":"capacityOfferVersion","schema":{"type":"string"}},{"in":"query","name":"capacityOfferDate","schema":{"type":"string"}},{"in":"query","name":"restrictionProfileRef","schema":{"type":"string"}},{"in":"query","name":"restrictionProfileVersion","schema":{"type":"string"}},{"in":"query","name":"contractRef","schema":{"type":"string"}},{"in":"query","name":"contractVersion","schema":{"type":"string"}},{"in":"query","name":"contractReviewStatus","schema":{"type":"string"}},{"in":"query","name":"operatingEventRef","schema":{"type":"string"}},{"in":"query","name":"operatingEventType","schema":{"type":"string"}},{"in":"query","name":"operatingEventTimestamp","schema":{"type":"string"}},{"in":"query","name":"curtailmentMeasurementEvidenceRef","schema":{"type":"string"}},{"in":"query","name":"redispatchRelevanceRef","schema":{"type":"string"}},{"in":"query","name":"redispatchStatusRef","schema":{"type":"string"}},{"in":"query","name":"compensationStatusRef","schema":{"type":"string"}},{"in":"query","name":"evidenceOwner","schema":{"type":"string"}},{"in":"query","name":"nextReviewGate","schema":{"type":"string"}},{"in":"query","name":"evidenceSourceTimestamp","schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only fNAV fast-track contract-gate status","content":{"application/json":{"schema":{"type":"object","properties":{"capabilityKey":{"type":"string"},"gateId":{"type":"string"},"decisionReadiness":{"type":"string"},"status":{"type":"string"},"requestSummary":{"type":"object"},"technicalGate":{"type":"object"},"commercialGate":{"type":"object"},"contractGate":{"type":"object"},"evidenceStatus":{"type":"object"},"governanceBlockers":{"type":"array"},"missingEvidence":{"type":"array"},"positiveFollowUps":{"type":"array"},"sourceActions":{"type":"object"},"dossierEvidence":{"type":"object"},"lifecycleEvidence":{"type":"object"},"safety":{"type":"string"},"timestamp":{"type":"string","format":"date-time"}}}}}}},"description":"Projects fNAV fast-track request, network-signal, metering/control, commercial, contract, legal and owner evidence into a dossier-safe gate status. The endpoint is read-only and never creates contracts, HITL items, MaKo, billing, settlement, tariff, control, SMGW/CLS or external actions. It additionally projects caller-supplied FCA/fNAV lifecycle evidence (connection request, capacity offer, restriction profile, contract, at most one operating-event snapshot, curtailment/measurement evidence, and Redispatch/compensation evidence markers) as review-only, non-consequential display fields."}},"/api/dashboard/cross-channel-vnb-signal-queue":{"get":{"summary":"Cross-channel VNB signal queue -- read-only evidence projection","tags":["Dashboard API"],"operationId":"dashboard_api_crossChannelVnbSignalQueueStatus","parameters":[{"name":"signalId","in":"query","required":false,"schema":{"type":"string"}},{"name":"channel","in":"query","required":false,"schema":{"type":"string"}},{"name":"sourceSystem","in":"query","required":false,"schema":{"type":"string"}},{"name":"sourceRef","in":"query","required":false,"schema":{"type":"string"}},{"name":"affectedProcess","in":"query","required":false,"schema":{"type":"string"}},{"name":"riskType","in":"query","required":false,"schema":{"type":"string"}},{"name":"ownerRole","in":"query","required":false,"schema":{"type":"string"}},{"name":"dueAt","in":"query","required":false,"schema":{"type":"string"}},{"name":"evidenceStatus","in":"query","required":false,"schema":{"type":"string"}},{"name":"nextDatapoint","in":"query","required":false,"schema":{"type":"string"}},{"in":"query","name":"receivedAt","schema":{"type":"string"}},{"in":"query","name":"processType","schema":{"type":"string"}},{"in":"query","name":"riskSeverity","schema":{"type":"string"}},{"in":"query","name":"ownerPersonaId","schema":{"type":"string"}},{"in":"query","name":"evidenceRefs","schema":{"type":"string"}},{"in":"query","name":"dedupeKey","schema":{"type":"string"}},{"in":"query","name":"status","schema":{"type":"string"}},{"in":"query","name":"signals","schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only cross-channel VNB signal queue evidence","content":{"application/json":{"schema":{"type":"object","properties":{"capabilityKey":{"type":"string"},"queueStatus":{"type":"string"},"signalCount":{"type":"number"},"normalizedSignals":{"type":"array"},"byProcess":{"type":"object"},"byRiskType":{"type":"object"},"missingEvidence":{"type":"array"},"positiveFollowUps":{"type":"array"},"sourceActions":{"type":"object"},"dossierEvidence":{"type":"object"},"safety":{"type":"string"},"timestamp":{"type":"string","format":"date-time"}}}}}}},"description":"Normalizes caller-supplied signal references and summaries into a dossier-safe VNB queue evidence view. The endpoint is read-only and never ingests mail/chat/portal content, stores raw private content, persists a queue, creates HITL/inbox/notification/VDMI items, or dispatches operational actions."}},"/api/dashboard/cross-domain-special-topics-queue":{"get":{"summary":"Cross-domain special topics queue -- read-only management projection","tags":["Dashboard API"],"operationId":"dashboard_api_crossDomainSpecialTopicsQueueStatus","parameters":[{"name":"caseId","in":"query","required":false,"schema":{"type":"string"}},{"name":"topic","in":"query","required":false,"schema":{"type":"string"}},{"name":"topics","in":"query","required":false,"schema":{"type":"string"}},{"name":"domainLane","in":"query","required":false,"schema":{"type":"string"}},{"name":"ownerRole","in":"query","required":false,"schema":{"type":"string"}},{"name":"dueAt","in":"query","required":false,"schema":{"type":"string"}},{"name":"regulatoryReference","in":"query","required":false,"schema":{"type":"string"}},{"name":"dataGap","in":"query","required":false,"schema":{"type":"string"}},{"name":"assetRevenueImpact","in":"query","required":false,"schema":{"type":"string"}},{"name":"escalationThreshold","in":"query","required":false,"schema":{"type":"string"}},{"name":"nextGovernanceGate","in":"query","required":false,"schema":{"type":"string"}},{"name":"decisionStatus","in":"query","required":false,"schema":{"type":"string"}},{"name":"evidenceRefs","in":"query","required":false,"schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only cross-domain special topics queue"}},"description":"Normalizes supplied Anschluss-, Flexibilitaets-, Energy-Sharing-, Mess-/Steuerdaten-, Kapazitaets-, Asset- and revenue-impact topics into a dossier-safe management queue. The endpoint is read-only and never creates tasks, workflows, tickets, e-mails, connector calls, bookings, executions, billing/settlement/tariff/device-control effects, or Personal-Agent shortcuts."}},"/api/dashboard/asset-valuation-transformation-gate":{"get":{"summary":"Asset valuation transformation gate -- read-only evidence projection","tags":["Dashboard API"],"operationId":"dashboard_api_assetValuationTransformationGateStatus","parameters":[{"name":"assetId","in":"query","required":false,"schema":{"type":"string"}},{"name":"assetGroupId","in":"query","required":false,"schema":{"type":"string"}},{"name":"assetType","in":"query","required":false,"schema":{"type":"string"}},{"name":"gridOperatorId","in":"query","required":false,"schema":{"type":"string"}},{"name":"bookValueStatus","in":"query","required":false,"schema":{"type":"string"}},{"name":"assetConditionStatus","in":"query","required":false,"schema":{"type":"string"}},{"name":"transformationOption","in":"query","required":false,"schema":{"type":"string"}},{"name":"contractRisk","in":"query","required":false,"schema":{"type":"string"}},{"name":"regulatoryUncertainty","in":"query","required":false,"schema":{"type":"string"}},{"name":"dataQualityStatus","in":"query","required":false,"schema":{"type":"string"}},{"name":"decisionOwner","in":"query","required":false,"schema":{"type":"string"}},{"name":"nextDecision","in":"query","required":false,"schema":{"type":"string"}},{"in":"query","name":"gateId","schema":{"type":"string"}},{"in":"query","name":"bookValueSource","schema":{"type":"string"}},{"in":"query","name":"assetConditionSource","schema":{"type":"string"}},{"in":"query","name":"transformationOptionBasis","schema":{"type":"string"}},{"in":"query","name":"contractRiskBasis","schema":{"type":"string"}},{"in":"query","name":"regulatoryUncertaintyBasis","schema":{"type":"string"}},{"in":"query","name":"sourceDatapoints","schema":{"type":"string"}},{"in":"query","name":"sourceRefs","schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only asset valuation transformation gate evidence","content":{"application/json":{"schema":{"type":"object","properties":{"capabilityKey":{"type":"string"},"decisionReadiness":{"type":"string"},"assetScope":{"type":"object"},"bookValueStatus":{"type":"object"},"assetConditionStatus":{"type":"object"},"transformationOption":{"type":"object"},"contractRisk":{"type":"object"},"regulatoryUncertainty":{"type":"object"},"dataQualityStatus":{"type":"object"},"missingEvidence":{"type":"array"},"positiveFollowUps":{"type":"array"},"sourceActions":{"type":"object"},"dossierEvidence":{"type":"object"},"safety":{"type":"string"},"timestamp":{"type":"string","format":"date-time"}}}}}}},"description":"Returns a deterministic dossier-safe management gate view over book value, asset condition, transformation option, contract/regulatory risk and data quality. The endpoint is read-only and never mutates asset records, creates valuation/accounting records, approves investments, creates HITL items, or executes decommissioning/repurposing."}},"/api/dashboard/gas-capacity-booking-review-gate":{"get":{"summary":"Gas capacity booking review gate -- read-only evidence projection","tags":["Dashboard API"],"operationId":"dashboard_api_gasCapacityBookingReviewGateStatus","parameters":[{"name":"reviewId","in":"query","required":false,"schema":{"type":"string"}},{"name":"bookingYear","in":"query","required":false,"schema":{"type":"string"}},{"name":"networkArea","in":"query","required":false,"schema":{"type":"string"}},{"name":"capacityAssumption","in":"query","required":false,"schema":{"type":"string"}},{"name":"coldYearEvidence","in":"query","required":false,"schema":{"type":"string"}},{"name":"rlmReboundEvidence","in":"query","required":false,"schema":{"type":"string"}},{"name":"congestionHistoryEvidence","in":"query","required":false,"schema":{"type":"string"}},{"name":"vdmiOwner","in":"query","required":false,"schema":{"type":"string"}},{"name":"decisionFrameRef","in":"query","required":false,"schema":{"type":"string"}},{"name":"commercialSignoff","in":"query","required":false,"schema":{"type":"string"}},{"in":"query","name":"capacityAssumptionSource","schema":{"type":"string"}},{"in":"query","name":"riskScenarios","schema":{"type":"string"}},{"in":"query","name":"sourceRefs","schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only gas capacity booking review gate evidence","content":{"application/json":{"schema":{"type":"object","properties":{"capabilityKey":{"type":"string"},"status":{"type":"string"},"readinessScore":{"type":"number"},"reviewScope":{"type":"object"},"capacityAssumptionSummary":{"type":"object"},"scenarioEvidenceStatus":{"type":"object"},"vdmiReview":{"type":"object"},"commercialSignoff":{"type":"object"},"riskScenarios":{"type":"array"},"missingEvidence":{"type":"array"},"positiveFollowUps":{"type":"array"},"sourceActions":{"type":"object"},"dossierEvidence":{"type":"object"},"safety":{"type":"string"},"timestamp":{"type":"string","format":"date-time"}}}}}}},"description":"Returns a deterministic dossier-safe review gate over gas capacity assumptions, cold-year/RLM/congestion evidence, VDMI ownership and commercial sign-off. The endpoint is read-only and never submits bookings, mutates VDMI/HITL workflows, dispatches notifications, creates booking persistence, or calls external systems."}},"/api/dashboard/gas-network-decision-chain":{"get":{"summary":"Gas network decision chain -- read-only evidence projection","tags":["Dashboard API"],"operationId":"dashboard_api_gasNetworkDecisionChainStatus","parameters":[{"name":"chainId","in":"query","required":false,"schema":{"type":"string"}},{"name":"gridOperatorId","in":"query","required":false,"schema":{"type":"string"}},{"name":"reconciliationId","in":"query","required":false,"schema":{"type":"string"}},{"name":"segmentId","in":"query","required":false,"schema":{"type":"string"}},{"name":"capacityAssumption","in":"query","required":false,"schema":{"type":"string"}},{"name":"decommissioningPath","in":"query","required":false,"schema":{"type":"string"}},{"name":"regulatoryImpactRef","in":"query","required":false,"schema":{"type":"string"}},{"name":"assetRef","in":"query","required":false,"schema":{"type":"string"}},{"name":"bookValueRef","in":"query","required":false,"schema":{"type":"string"}},{"name":"photoYear","in":"query","required":false,"schema":{"type":"string"}},{"name":"decisionDeadline","in":"query","required":false,"schema":{"type":"string"}},{"name":"owner","in":"query","required":false,"schema":{"type":"string"}},{"name":"blockedFollowUpDecision","in":"query","required":false,"schema":{"type":"string"}},{"name":"nextEvidenceStep","in":"query","required":false,"schema":{"type":"string"}},{"in":"query","name":"capacityEvidenceRef","schema":{"type":"string"}},{"in":"query","name":"decommissioningEvidenceRef","schema":{"type":"string"}},{"in":"query","name":"eogRef","schema":{"type":"string"}},{"in":"query","name":"kanuRef","schema":{"type":"string"}},{"in":"query","name":"ownerRole","schema":{"type":"string"}},{"in":"query","name":"gateStatus","schema":{"type":"string"}},{"in":"query","name":"sourceRefs","schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only gas network decision-chain evidence","content":{"application/json":{"schema":{"type":"object","properties":{"capabilityKey":{"type":"string"},"status":{"type":"string"},"readinessScore":{"type":"number"},"chainScope":{"type":"object"},"capacityAssumptionStatus":{"type":"object"},"decommissioningPathStatus":{"type":"object"},"regulatoryImpactStatus":{"type":"object"},"assetBookValueStatus":{"type":"object"},"photoYearWindow":{"type":"object"},"owner":{"type":"object"},"blockedFollowUpDecision":{"type":"string"},"nextEvidenceStep":{"type":"string"},"missingEvidence":{"type":"array"},"positiveFollowUps":{"type":"array"},"sourceActions":{"type":"object"},"dossierEvidence":{"type":"object"},"safety":{"type":"string"},"timestamp":{"type":"string","format":"date-time"}}}}}}},"description":"Returns a deterministic dossier-safe decision-chain view over gas capacity assumptions, decommissioning path, KANU/EOG references, asset/book-value references, Fotojahr window and blocked follow-up decisions. The endpoint is read-only and never executes capacity booking, stilllegung, investment approval, Asset-MDM overrides, HITL, notifications, billing, settlement, tariff, MaKo, contract, device-control or external connector actions."}},"/api/dashboard/water-pricing-net-investment-alignment":{"get":{"summary":"Water pricing / net-investment alignment -- read-only evidence gate","tags":["Dashboard API"],"operationId":"dashboard_api_waterPricingNetInvestmentAlignmentStatus","parameters":[{"name":"caseId","in":"query","required":false,"schema":{"type":"string"}},{"name":"projectId","in":"query","required":false,"schema":{"type":"string"}},{"name":"waterPriceReference","in":"query","required":false,"schema":{"type":"string"}},{"name":"calculationReference","in":"query","required":false,"schema":{"type":"string"}},{"name":"netInvestmentReference","in":"query","required":false,"schema":{"type":"string"}},{"name":"assetAccountingReference","in":"query","required":false,"schema":{"type":"string"}},{"name":"pachtnetzReference","in":"query","required":false,"schema":{"type":"string"}},{"name":"regulatoryImpactReference","in":"query","required":false,"schema":{"type":"string"}},{"name":"governanceOwner","in":"query","required":false,"schema":{"type":"string"}},{"name":"reviewPeriod","in":"query","required":false,"schema":{"type":"string"}},{"name":"targetCommitteeDate","in":"query","required":false,"schema":{"type":"string"}},{"name":"alignmentDecision","in":"query","required":false,"schema":{"type":"string"}},{"in":"query","name":"tenantId","schema":{"type":"string"}},{"in":"query","name":"infrastructureMeasureReference","schema":{"type":"string"}},{"in":"query","name":"leaseOrConcessionReference","schema":{"type":"string"}},{"in":"query","name":"tariffLogicReference","schema":{"type":"string"}},{"in":"query","name":"committeeOwner","schema":{"type":"string"}},{"in":"query","name":"sourceRefs","schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only water pricing / net-investment alignment evidence","content":{"application/json":{"schema":{"type":"object","properties":{"capabilityKey":{"type":"string"},"status":{"type":"string"},"readinessScore":{"type":"number"},"alignmentScope":{"type":"object"},"pricingEvidence":{"type":"object"},"investmentEvidence":{"type":"object"},"assetAccountingEvidence":{"type":"object"},"leaseConditionEvidence":{"type":"object"},"regulatoryBoundaryEvidence":{"type":"object"},"owner":{"type":"object"},"reviewWindow":{"type":"object"},"alignmentDecision":{"type":"string"},"missingEvidence":{"type":"array"},"positiveFollowUps":{"type":"array"},"sourceActions":{"type":"object"},"dossierEvidence":{"type":"object"},"safety":{"type":"string"},"timestamp":{"type":"string","format":"date-time"}}}}}}},"description":"Returns a deterministic dossier-safe alignment view over water-price assumptions, net-investment references, asset-accounting evidence, Pachtnetz/concession references, regulatory-impact evidence, owner, review period and committee decision state. The endpoint is read-only and never calculates an official water price, claims regulatory approval, mutates accounting, billing, settlement, tariff, MaKo, contract or payment data, creates HITL/notifications, or calls external connectors."}},"/api/dashboard/areal-network-integration-offer-gate":{"get":{"summary":"Areal network-integration offer gate -- read-only evidence gate","tags":["Dashboard API"],"operationId":"dashboard_api_arealNetworkIntegrationOfferGateStatus","parameters":[{"name":"caseId","in":"query","required":false,"schema":{"type":"string"}},{"name":"projectId","in":"query","required":false,"schema":{"type":"string"}},{"name":"siteReference","in":"query","required":false,"schema":{"type":"string"}},{"name":"areaReference","in":"query","required":false,"schema":{"type":"string"}},{"name":"requestedConnectionCapacity","in":"query","required":false,"schema":{"type":"string"}},{"name":"requestedCapacityKw","in":"query","required":false,"schema":{"type":"number"}},{"name":"gridCapacityEvidence","in":"query","required":false,"schema":{"type":"string"}},{"name":"targetGridPath","in":"query","required":false,"schema":{"type":"string"}},{"name":"investmentReference","in":"query","required":false,"schema":{"type":"string"}},{"name":"regulatoryImpactBoundary","in":"query","required":false,"schema":{"type":"string"}},{"name":"commercialOfferAssumptions","in":"query","required":false,"schema":{"type":"string"}},{"name":"owner","in":"query","required":false,"schema":{"type":"string"}},{"name":"nextDecisionDate","in":"query","required":false,"schema":{"type":"string"}},{"name":"offerDecisionStatus","in":"query","required":false,"schema":{"type":"string"}},{"in":"query","name":"tenantId","schema":{"type":"string"}},{"in":"query","name":"capacityEvidenceReference","schema":{"type":"string"}},{"in":"query","name":"zielnetzPath","schema":{"type":"string"}},{"in":"query","name":"capexReference","schema":{"type":"string"}},{"in":"query","name":"regulatoryImpactReference","schema":{"type":"string"}},{"in":"query","name":"offerAssumptionReference","schema":{"type":"string"}},{"in":"query","name":"gateOwner","schema":{"type":"string"}},{"in":"query","name":"sourceRefs","schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only Areal network-integration offer evidence","content":{"application/json":{"schema":{"type":"object","properties":{"capabilityKey":{"type":"string"},"status":{"type":"string"},"readinessScore":{"type":"number"},"decisionScope":{"type":"object"},"capacityEvidence":{"type":"object"},"targetGridEvidence":{"type":"object"},"investmentEvidence":{"type":"object"},"regulatoryBoundaryEvidence":{"type":"object"},"commercialAssumptionEvidence":{"type":"object"},"owner":{"type":"object"},"decisionWindow":{"type":"object"},"missingEvidence":{"type":"array"},"positiveFollowUps":{"type":"array"},"sourceActions":{"type":"object"},"dossierEvidence":{"type":"object"},"safety":{"type":"string"},"timestamp":{"type":"string","format":"date-time"}}}}}}},"description":"Returns a deterministic dossier-safe decision card over site/area, requested connection capacity, grid-capacity evidence, target-grid path, investment/CAPEX evidence, regulatory boundary, commercial offer assumptions, owner, decision date and offer decision state. The endpoint is read-only and never calculates a binding offer, reserves grid capacity, approves investments, creates contracts, mutates Asset-MDM, billing, settlement, tariff, MaKo or device-control systems, creates HITL/notifications, or calls external connectors."}},"/api/dashboard/transformation-financing-scenario-view":{"get":{"summary":"Transformation financing scenario view -- read-only evidence gate","tags":["Dashboard API"],"operationId":"dashboard_api_transformationFinancingScenarioViewStatus","parameters":[{"name":"scenarioId","in":"query","required":false,"schema":{"type":"string"}},{"name":"gridOperatorId","in":"query","required":false,"schema":{"type":"string"}},{"name":"planningHorizon","in":"query","required":false,"schema":{"type":"string"}},{"name":"scenarioType","in":"query","required":false,"schema":{"type":"string"}},{"name":"cashflowSource","in":"query","required":false,"schema":{"type":"string"}},{"name":"rollbackCostBasis","in":"query","required":false,"schema":{"type":"string"}},{"name":"municipalBurdenAssumption","in":"query","required":false,"schema":{"type":"string"}},{"name":"eogImpact","in":"query","required":false,"schema":{"type":"string"}},{"name":"liquidityImpact","in":"query","required":false,"schema":{"type":"string"}},{"name":"stressThreshold","in":"query","required":false,"schema":{"type":"string"}},{"name":"committeeDecisionGate","in":"query","required":false,"schema":{"type":"string"}},{"name":"sourceDatapoints","in":"query","required":false,"schema":{"type":"string"}},{"in":"query","name":"cashflowSourceRef","schema":{"type":"string"}},{"in":"query","name":"marginCompensationAssumption","schema":{"type":"string"}},{"in":"query","name":"capitalReallocationOption","schema":{"type":"string"}},{"in":"query","name":"gasDecommissioningPath","schema":{"type":"string"}},{"in":"query","name":"heatInvestmentMeasure","schema":{"type":"string"}},{"in":"query","name":"h2OptionMeasure","schema":{"type":"string"}},{"in":"query","name":"publicTransportShareholderBurden","schema":{"type":"string"}},{"in":"query","name":"operationalInvestmentNeed","schema":{"type":"string"}},{"in":"query","name":"regulatoryImpactAssumption","schema":{"type":"string"}},{"in":"query","name":"vdmiProcessId","schema":{"type":"string"}},{"in":"query","name":"owner","schema":{"type":"string"}},{"in":"query","name":"sourceActions","schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only transformation financing scenario evidence view","content":{"application/json":{"schema":{"type":"object","properties":{"capabilityKey":{"type":"string"},"status":{"type":"string"},"readinessScore":{"type":"number"},"scenarioSummary":{"type":"object"},"evidenceGroups":{"type":"object"},"missingEvidence":{"type":"array"},"positiveFollowUps":{"type":"array"},"nextActions":{"type":"array"},"sourceDatapoints":{"type":"array"},"sourceActions":{"type":"object"},"dossierEvidence":{"type":"object"},"safety":{"type":"string"},"timestamp":{"type":"string","format":"date-time"}}}}}}},"description":"Returns a deterministic dossier-safe view over transformation financing scenario identity, cashflow, margin, capital reallocation, gas decommissioning, rollback/removal cost, heat/H2 investment, municipal burden, operational investment, EOG/regulatory, liquidity/stress and committee-gate evidence. The endpoint is read-only and never creates finance/accounting records, executes treasury transfers, mutates gas assets, prepares billing/settlement/tariff/MaKo output, creates HITL/VDMI tasks, or calls external connectors."}},"/api/dashboard/investment-budget-cap-exception-governance":{"get":{"summary":"Investment budget cap exception governance -- read-only evidence queue","tags":["Dashboard API"],"operationId":"dashboard_api_investmentBudgetCapExceptionGovernanceStatus","parameters":[{"in":"query","name":"measureId","schema":{"type":"string"}},{"in":"query","name":"measureName","schema":{"type":"string"}},{"in":"query","name":"scope","schema":{"type":"string"}},{"in":"query","name":"budgetCapEur","schema":{"type":"string"}},{"in":"query","name":"requiredBudgetEur","schema":{"type":"string"}},{"in":"query","name":"noRegretCriterion","schema":{"type":"string"}},{"in":"query","name":"technicalJustification","schema":{"type":"string"}},{"in":"query","name":"regulatoryContext","schema":{"type":"string"}},{"in":"query","name":"kpiReference","schema":{"type":"string"}},{"in":"query","name":"division","schema":{"type":"string"}},{"in":"query","name":"assetRef","schema":{"type":"string"}},{"in":"query","name":"dataQuality","schema":{"type":"string"}},{"in":"query","name":"evidenceRefs","schema":{"type":"string"}},{"in":"query","name":"riskIfDeferred","schema":{"type":"string"}},{"in":"query","name":"owner","schema":{"type":"string"}},{"in":"query","name":"deadline","schema":{"type":"string"}},{"in":"query","name":"nextDecisionGate","schema":{"type":"string"}},{"in":"query","name":"exceptionJustification","schema":{"type":"string"}},{"in":"query","name":"sourceDatapoints","schema":{"type":"string"}},{"in":"query","name":"sourceActions","schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only budget-cap exception governance evidence"}},"description":"Builds deterministic dossier-safe evidence for investment measures above a budget cap or missing an exception justification. The endpoint is read-only and never approves budgets, creates committee decisions, writes SAP/ERP/PSP records, creates HITL/workflow tasks, sends communications, calls external connectors, or mutates billing/settlement/MaKo/tariff/device-control data."}},"/api/dashboard/investment-owner-deadline-budget-gate":{"get":{"summary":"Investment Owner-Frist-Budget Gate -- read-only evidence gate","tags":["Dashboard API"],"operationId":"dashboard_api_investmentOwnerDeadlineBudgetGateStatus","parameters":[{"in":"query","name":"measureId","schema":{"type":"string"}},{"in":"query","name":"measureTitle","schema":{"type":"string"}},{"in":"query","name":"owner","schema":{"type":"string"}},{"in":"query","name":"deadline","schema":{"type":"string"}},{"in":"query","name":"budgetEffect","schema":{"type":"string"}},{"in":"query","name":"requiredEvidence","schema":{"type":"string"}},{"in":"query","name":"approvalStatus","schema":{"type":"string"}},{"in":"query","name":"blockedFollowUpDecision","schema":{"type":"string"}},{"in":"query","name":"nextEscalationStep","schema":{"type":"string"}},{"in":"query","name":"sourceDatapoints","schema":{"type":"string"}},{"in":"query","name":"sourceActions","schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only investment owner/deadline/budget gate evidence"}},"description":"Returns a deterministic dossier-safe view over investment measure owner, deadline, budget effect, required evidence, approval status, blocked follow-up decision and next escalation step. The endpoint is read-only and never approves budgets, creates finance/accounting records, mutates investment workflows, prepares billing/settlement/tariff/MaKo output, creates HITL tasks, or calls external connectors."}},"/api/dashboard/direct-marketer-risk-gate":{"get":{"summary":"Direktvermarkter Risk Gate -- read-only dossier-safe status","tags":["Dashboard API"],"operationId":"dashboard_api_directMarketerRiskGateStatus","parameters":[{"in":"query","name":"caseId","schema":{"type":"string"}},{"in":"query","name":"projectId","schema":{"type":"string"}},{"in":"query","name":"communityModel","schema":{"type":"string"}},{"in":"query","name":"directMarketer","schema":{"type":"string"}},{"in":"query","name":"forecastQuality","schema":{"type":"string"}},{"in":"query","name":"forecastDeviationPct","schema":{"type":"string"}},{"in":"query","name":"allocationRules","schema":{"type":"string"}},{"in":"query","name":"balancingGroupImpact","schema":{"type":"string"}},{"in":"query","name":"scheduleImpact","schema":{"type":"string"}},{"in":"query","name":"billingStatus","schema":{"type":"string"}},{"in":"query","name":"settlementStatus","schema":{"type":"string"}},{"in":"query","name":"roleOwner","schema":{"type":"string"}},{"in":"query","name":"deadline","schema":{"type":"string"}},{"in":"query","name":"evidenceStatus","schema":{"type":"string"}},{"in":"query","name":"sourceEvidence","schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only Direktvermarkter risk-gate evidence"}},"description":"Returns deterministic dossier-safe risk/readiness evidence for a Direktvermarkter handover package across forecast quality, allocation rules, balancing-group/schedule impact, billing/settlement status, roles, deadlines and open evidence. The endpoint is read-only and never submits schedules, approves offers/contracts, transfers balancing groups, mutates billing/settlement/tariff/customer data, creates HITL/workflow tasks, sends customer communication, calls webhooks, or contacts external Direktvermarkter systems."}},"/api/dashboard/no-regret-measure-definition-gate":{"get":{"summary":"No-Regret measure definition gate -- read-only evidence gate","tags":["Dashboard API"],"operationId":"dashboard_api_noRegretMeasureDefinitionGateStatus","parameters":[{"in":"query","name":"measureId","schema":{"type":"string"}},{"in":"query","name":"programmeId","schema":{"type":"string"}},{"in":"query","name":"measureName","schema":{"type":"string"}},{"in":"query","name":"scenarioAssumption","schema":{"type":"string"}},{"in":"query","name":"transformationEffect","schema":{"type":"string"}},{"in":"query","name":"budgetEffect","schema":{"type":"string"}},{"in":"query","name":"fundingOwner","schema":{"type":"string"}},{"in":"query","name":"regulatoryFit","schema":{"type":"string"}},{"in":"query","name":"constraintHint","schema":{"type":"string"}},{"in":"query","name":"prioritisationRule","schema":{"type":"string"}},{"in":"query","name":"nominationRight","schema":{"type":"string"}},{"in":"query","name":"dataQualityStatus","schema":{"type":"string"}},{"in":"query","name":"sourceSnapshot","schema":{"type":"string"}},{"in":"query","name":"communicationRule","schema":{"type":"string"}},{"in":"query","name":"stakeholderGroup","schema":{"type":"string"}},{"in":"query","name":"nextReviewGate","schema":{"type":"string"}},{"in":"query","name":"dueDate","schema":{"type":"string"}},{"in":"query","name":"owner","schema":{"type":"string"}},{"in":"query","name":"sourceDatapoints","schema":{"type":"string"}},{"in":"query","name":"sourceActions","schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only No-Regret measure definition evidence"}},"description":"Returns a deterministic dossier-safe view over No-Regret measure definition evidence: scenario/effect, budget/funding owner, regulatory fit, prioritisation/nomination rule, data quality, communication rule, and next review gate. The endpoint is read-only and never approves measures or budgets, mutates programmes, creates HITL tasks, runs MaKo/A96/billing/settlement/tariff/device-control effects, or calls external connectors."}},"/api/dashboard/gas-grid-transformation-asset-cockpit":{"get":{"summary":"Gas grid transformation asset cockpit -- read-only evidence gate","tags":["Dashboard API"],"operationId":"dashboard_api_gasGridTransformationAssetCockpitStatus","parameters":[{"name":"gridOperatorId","in":"query","required":false,"schema":{"type":"string"}},{"name":"transformationProgramId","in":"query","required":false,"schema":{"type":"string"}},{"name":"workPackageId","in":"query","required":false,"schema":{"type":"string"}},{"name":"assetSegmentRef","in":"query","required":false,"schema":{"type":"string"}},{"name":"targetOption","in":"query","required":false,"schema":{"type":"string"}},{"name":"technicalReuseStatus","in":"query","required":false,"schema":{"type":"string"}},{"name":"decommissioningCostEur","in":"query","required":false,"schema":{"type":"string"}},{"name":"rollbackOrRemovalRisk","in":"query","required":false,"schema":{"type":"string"}},{"name":"cashflowImpact","in":"query","required":false,"schema":{"type":"string"}},{"name":"totexImpact","in":"query","required":false,"schema":{"type":"string"}},{"name":"regulatoryRecognitionStatus","in":"query","required":false,"schema":{"type":"string"}},{"name":"heatNetworkDependency","in":"query","required":false,"schema":{"type":"string"}},{"name":"powerGridDependency","in":"query","required":false,"schema":{"type":"string"}},{"name":"customerTransitionDependency","in":"query","required":false,"schema":{"type":"string"}},{"name":"decisionGate","in":"query","required":false,"schema":{"type":"string"}},{"name":"ownerRole","in":"query","required":false,"schema":{"type":"string"}},{"name":"sourceDatapoints","in":"query","required":false,"schema":{"type":"string"}},{"in":"query","name":"vdmiProcessId","schema":{"type":"string"}},{"in":"query","name":"investmentPlanId","schema":{"type":"string"}},{"in":"query","name":"financeAnalysisId","schema":{"type":"string"}},{"in":"query","name":"sourceActions","schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only gas grid transformation asset evidence view","content":{"application/json":{"schema":{"type":"object","properties":{"capabilityKey":{"type":"string"},"status":{"type":"string"},"readinessScore":{"type":"number"},"programSummary":{"type":"object"},"evidenceGroups":{"type":"object"},"missingEvidence":{"type":"array"},"positiveFollowUps":{"type":"array"},"nextActions":{"type":"array"},"sourceDatapoints":{"type":"array"},"sourceActions":{"type":"object"},"dossierEvidence":{"type":"object"},"safety":{"type":"string"},"timestamp":{"type":"string","format":"date-time"}}}}}}},"description":"Returns a deterministic dossier-safe view over gas transformation program/work-package identity, asset segment, H2/decommissioning/repurpose option, technical reuse, rollback/removal cost, financial and dependency evidence, decision gate, owner role, missing evidence and explicit non-actions. The endpoint is read-only and never mutates gas assets, approves finance/investment decisions, creates HITL/VDMI tasks, runs MaKo/billing/settlement/tariff flows, or calls external connectors."}},"/api/dashboard/vnb-special-topic-workstate":{"get":{"summary":"VNB special-topic leading work state -- read-only evidence card","tags":["Dashboard API"],"operationId":"dashboard_api_vnbSpecialTopicWorkstateStatus","parameters":[{"name":"topicId","in":"query","required":false,"schema":{"type":"string"}},{"name":"topicName","in":"query","required":false,"schema":{"type":"string"}},{"name":"domain","in":"query","required":false,"schema":{"type":"string"}},{"name":"leadingSource","in":"query","required":false,"schema":{"type":"string"}},{"name":"leadingSourceTimestamp","in":"query","required":false,"schema":{"type":"string"}},{"name":"leadingSourceVersion","in":"query","required":false,"schema":{"type":"string"}},{"name":"owner","in":"query","required":false,"schema":{"type":"string"}},{"name":"accountableRole","in":"query","required":false,"schema":{"type":"string"}},{"name":"allowedSideSources","in":"query","required":false,"schema":{"type":"string"}},{"name":"sideSourceFreshness","in":"query","required":false,"schema":{"type":"string"}},{"name":"allowSideSourceOverride","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"freshnessThresholdDays","in":"query","required":false,"schema":{"type":"number"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only VNB special-topic work-state evidence card","content":{"application/json":{"schema":{"type":"object","properties":{"capabilityKey":{"type":"string"},"safety":{"type":"string"},"status":{"type":"string"},"topic":{"type":"object"},"sourceFreshness":{"type":"object"},"allowedSideSources":{"type":"array"},"staleMarkers":{"type":"array"},"missingEvidence":{"type":"array"},"positiveFollowUps":{"type":"array"},"sourceActions":{"type":"object"},"dossierEvidence":{"type":"object"},"timestamp":{"type":"string","format":"date-time"},"_errors":{"type":"array"}}}}}}},"description":"Returns a deterministic dossier-safe evidence card for the leading work state of VNB special topics. It surfaces leading source, source timestamp/version, owner/accountable role, allowed side sources, stale markers, missing evidence, readiness status and positive follow-ups. The endpoint is read-only and does not call SharePoint/Teams/Outlook, create tasks, send mail, execute workflows, mutate Cernion data, run HITL, edit Budibase or use Personal-Agent shortcuts."}},"/api/dashboard/monitoring-non-escalation":{"get":{"summary":"Monitoring non-escalation evidence -- read-only status card","tags":["Dashboard API"],"operationId":"dashboard_api_monitoringNonEscalationStatus","parameters":[{"name":"signalId","in":"query","required":false,"schema":{"type":"string"}},{"name":"domain","in":"query","required":false,"schema":{"type":"string"}},{"name":"assetContext","in":"query","required":false,"schema":{"type":"string"}},{"name":"sourceName","in":"query","required":false,"schema":{"type":"string"}},{"name":"sourceCheckedAt","in":"query","required":false,"schema":{"type":"string"}},{"name":"novelty","in":"query","required":false,"schema":{"type":"string"}},{"name":"blockingFinding","in":"query","required":false,"schema":{"type":"string"}},{"name":"nextCheckAt","in":"query","required":false,"schema":{"type":"string"}},{"name":"owner","in":"query","required":false,"schema":{"type":"string"}},{"name":"rationale","in":"query","required":false,"schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only monitoring non-escalation evidence card","content":{"application/json":{"schema":{"type":"object","properties":{"capabilityKey":{"type":"string"},"safety":{"type":"string"},"status":{"type":"string"},"signal":{"type":"object"},"checkedSource":{"type":"object"},"absentBlocker":{"type":"object"},"missingEvidence":{"type":"array"},"positiveFollowUps":{"type":"array"},"sourceActions":{"type":"object"},"dossierEvidence":{"type":"object"},"timestamp":{"type":"string","format":"date-time"},"_errors":{"type":"array"}}}}}}},"description":"Returns deterministic dossier-safe evidence for a justified non-escalation in recurring VNB monitoring. The endpoint surfaces checked source, novelty, absent blocker, next check, owner, rationale, missing evidence and positive follow-ups. It is read-only and does not schedule monitoring, escalate, create HITL tickets, send mail/webhooks, call external connectors, mutate Cernion data, edit Budibase or use Personal-Agent shortcuts."}},"/api/dashboard/leadership-delta-cockpit":{"get":{"summary":"Leadership delta cockpit -- read-only management evidence aggregation","tags":["Dashboard API"],"operationId":"dashboard_api_leadershipDeltaCockpitStatus","parameters":[{"name":"gridOperatorId","in":"query","required":false,"schema":{"type":"string"}},{"name":"bdewCode","in":"query","required":false,"schema":{"type":"string"}},{"name":"topic","in":"query","required":false,"schema":{"type":"string"}},{"name":"domain","in":"query","required":false,"schema":{"type":"string"}},{"name":"ownerRole","in":"query","required":false,"schema":{"type":"string"}},{"name":"dueAt","in":"query","required":false,"schema":{"type":"string"}},{"name":"evidenceStatus","in":"query","required":false,"schema":{"type":"string"}},{"name":"blockedDecision","in":"query","required":false,"schema":{"type":"string"}},{"name":"escalationState","in":"query","required":false,"schema":{"type":"string"}},{"name":"nextLever","in":"query","required":false,"schema":{"type":"string"}},{"name":"newSignals","in":"query","required":false,"schema":{"type":"string"}},{"in":"query","name":"topicId","schema":{"type":"string"}},{"in":"query","name":"role","schema":{"type":"string"}},{"in":"query","name":"status","schema":{"type":"string"}},{"in":"query","name":"dueBefore","schema":{"type":"string"}},{"in":"query","name":"knownBaseline","schema":{"type":"string"}},{"in":"query","name":"linkedEntities","schema":{"type":"string"}},{"in":"query","name":"sourceSignals","schema":{"type":"string"}},{"in":"query","name":"includeDegradedSample","schema":{"type":"boolean"}},{"in":"query","name":"limit","schema":{"type":"number"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only leadership delta cockpit evidence view","content":{"application/json":{"schema":{"type":"object","properties":{"capabilityKey":{"type":"string"},"safety":{"type":"string"},"status":{"type":"string"},"topicCount":{"type":"number"},"statusDistribution":{"type":"object"},"topics":{"type":"array"},"missingEvidence":{"type":"array"},"positiveFollowUps":{"type":"array"},"sourceActions":{"type":"object"},"dossierEvidence":{"type":"object"},"_errors":{"type":"array"},"timestamp":{"type":"string","format":"date-time"}}}}}}},"description":"Returns a deterministic read-only status/evidence view for recurring leadership topics. The endpoint surfaces delta summary, owner/deadline, evidence status, blocked decisions, escalation state, next lever, linked entities, source signals, positive follow-ups and degraded-source errors. It does not create HITL/NOVA/VDMI tasks, approvals, escalations, MS365 syncs, external calls, billing/settlement/tariff/MaKo actions, or Personal-Agent shortcuts."}},"/api/dashboard/netzsignal-delta-gating":{"get":{"summary":"Netzsignal Delta-Gating — read-only evidence classification","tags":["Dashboard API"],"operationId":"dashboard_api_netzsignalDeltaGatingStatus","parameters":[{"name":"signalId","in":"query","required":false,"schema":{"type":"string"}},{"name":"caseId","in":"query","required":false,"schema":{"type":"string"}},{"name":"domain","in":"query","required":false,"schema":{"type":"string"}},{"name":"signalType","in":"query","required":false,"schema":{"type":"string"}},{"name":"knownContextRef","in":"query","required":false,"schema":{"type":"string"}},{"name":"freshnessProof","in":"query","required":false,"schema":{"type":"string"}},{"name":"decisionTopic","in":"query","required":false,"schema":{"type":"string"}},{"name":"owner","in":"query","required":false,"schema":{"type":"string"}},{"name":"dueDate","in":"query","required":false,"schema":{"type":"string"}},{"name":"materiality","in":"query","required":false,"schema":{"type":"string"}},{"name":"newFact","in":"query","required":false,"schema":{"type":"string"}},{"name":"blockedDecision","in":"query","required":false,"schema":{"type":"string"}},{"name":"nextEvidencePoint","in":"query","required":false,"schema":{"type":"string"}},{"name":"regulatoryReference","in":"query","required":false,"schema":{"type":"string"}},{"name":"assetReference","in":"query","required":false,"schema":{"type":"string"}},{"name":"revenueImpactHint","in":"query","required":false,"schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only Netzsignal delta-gating status","content":{"application/json":{"schema":{"type":"object","properties":{"capabilityKey":{"type":"string"},"classification":{"type":"string"},"escalationRecommendation":{"type":"string"},"missingEvidence":{"type":"array"},"positiveFollowUps":{"type":"array"},"sourceActions":{"type":"object"},"dossierEvidence":{"type":"object"},"timestamp":{"type":"string","format":"date-time"}}}}}}},"description":"Classifies caller-supplied operational signal metadata into known context, freshness-only, decision-delta, new-blocker or insufficient-evidence states. The endpoint is read-only and does not ingest Outlook, Teams, monitoring, ticket, HITL, MaKo, billing, settlement, tariff, device-control, Budibase or external connector data."}},"/api/dashboard/vnb-delta-signal-classifier/classify":{"post":{"summary":"VNB delta signal classifier -- read-only advisory evidence","tags":["Dashboard API"],"operationId":"dashboard_api_vnbDeltaSignalClassifierStatus","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only VNB delta signal classification","content":{"application/json":{"schema":{"type":"object","properties":{"capabilityKey":{"type":"string"},"safety":{"type":"string"},"status":{"type":"string"},"classifications":{"type":"array"},"missingEvidence":{"type":"array"},"positiveFollowUps":{"type":"array"},"sourceActions":{"type":"object"},"dossierEvidence":{"type":"object"},"timestamp":{"type":"string","format":"date-time"}}}}}}},"description":"Classifies caller-supplied synthetic or sanitized VNB/EVU leadership signals into deterministic dossier-safe rows for novelty, decision relevance, process, owner, deadline, blocked decision, next evidence point, confidence and missing evidence. It does not read mail, Teams, calendars, task systems or private inboxes; does not persist message bodies; and does not create tickets, notifications, HITL tasks, billing, settlement, MaKo, tariff or device-control side effects.","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}}}}}}},"/api/dashboard/evidence-freshness-guard":{"get":{"summary":"Evidence freshness guard -- read-only VNB signal metadata classification","tags":["Dashboard API"],"operationId":"dashboard_api_evidenceFreshnessGuardStatus","parameters":[{"name":"signalId","in":"query","required":false,"schema":{"type":"string"}},{"name":"sourceKind","in":"query","required":false,"schema":{"type":"string"}},{"name":"sourceTimestamp","in":"query","required":false,"schema":{"type":"string"}},{"name":"receivedTimestamp","in":"query","required":false,"schema":{"type":"string"}},{"name":"lastSeenTimestamp","in":"query","required":false,"schema":{"type":"string"}},{"name":"processArea","in":"query","required":false,"schema":{"type":"string"}},{"name":"owner","in":"query","required":false,"schema":{"type":"string"}},{"name":"dueDate","in":"query","required":false,"schema":{"type":"string"}},{"name":"knownSnapshotId","in":"query","required":false,"schema":{"type":"string"}},{"name":"knownSnapshotHash","in":"query","required":false,"schema":{"type":"string"}},{"name":"currentSnapshotId","in":"query","required":false,"schema":{"type":"string"}},{"name":"currentSnapshotHash","in":"query","required":false,"schema":{"type":"string"}},{"name":"severityHint","in":"query","required":false,"schema":{"type":"string"}},{"name":"blockedDecision","in":"query","required":false,"schema":{"type":"string"}},{"name":"escalationThresholdDays","in":"query","required":false,"schema":{"type":"number"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only evidence freshness classification","content":{"application/json":{"schema":{"type":"object","properties":{"capabilityKey":{"type":"string"},"safety":{"type":"string"},"freshnessState":{"type":"string"},"deltaState":{"type":"string"},"escalationRecommended":{"type":"boolean"},"evidenceGaps":{"type":"array"},"positiveFollowUps":{"type":"array"},"sourceActions":{"type":"object"},"dossierEvidence":{"type":"object"},"timestamp":{"type":"string","format":"date-time"}}}}}}},"description":"Classifies caller-supplied operational signal metadata into dossier-safe freshness and delta states. The endpoint returns staleness, known-anchor, new-delta, escalation recommendation, non-escalation reason, evidence gaps and positive follow-ups. It does not ingest email, Teams, calendar, monitoring or task data; does not create ACF cards, HITL tasks, tickets, workflow actions, billing/settlement/tariff/MaKo/device-control side effects; and does not add Personal-Agent shortcuts."}},"/api/dashboard/live-update-stream-contract":{"get":{"summary":"Live update stream contract -- read-only readiness evidence","tags":["Dashboard API"],"operationId":"dashboard_api_liveUpdateStreamContractStatus","parameters":[{"name":"domains","in":"query","required":false,"schema":{"type":"string"}},{"name":"channels","in":"query","required":false,"schema":{"type":"string"}},{"name":"sourceService","in":"query","required":false,"schema":{"type":"string"}},{"name":"sourceAction","in":"query","required":false,"schema":{"type":"string"}},{"name":"uiSurface","in":"query","required":false,"schema":{"type":"string"}},{"name":"authBoundary","in":"query","required":false,"schema":{"type":"string"}},{"name":"requiresResume","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"fallbackPollingPath","in":"query","required":false,"schema":{"type":"string"}},{"name":"heartbeatSeconds","in":"query","required":false,"schema":{"type":"number"}},{"name":"ownerRole","in":"query","required":false,"schema":{"type":"string"}},{"in":"query","name":"availability","schema":{"type":"string"}},{"in":"query","name":"includeUnsupportedSample","schema":{"type":"boolean"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only live-update contract readiness view","content":{"application/json":{"schema":{"type":"object","properties":{"capabilityKey":{"type":"string"},"safety":{"type":"string"},"status":{"type":"string"},"channelCount":{"type":"number"},"channels":{"type":"array"},"missingEvidence":{"type":"array"},"positiveFollowUps":{"type":"array"},"sourceActions":{"type":"object"},"dossierEvidence":{"type":"object"},"_errors":{"type":"array"},"timestamp":{"type":"string","format":"date-time"}}}}}}},"description":"Returns a deterministic read-only contract/readiness view for proposed UI live-update channels. The endpoint describes stream kind, tenant/auth boundary, source service/action, current availability, fallback polling path, heartbeat/resume expectation, owner, blockers, gaps and side-effect guards. It does not open SSE/WebSocket connections, subscribe to channels, emit events, create auth modes, call external connectors, mutate domain state or add Personal-Agent shortcuts."}},"/api/dashboard/smgw-connector-readiness":{"get":{"summary":"SMGW connector readiness -- read-only evidence/status gate","tags":["Dashboard API"],"operationId":"dashboard_api_smgwConnectorReadinessStatus","parameters":[{"name":"integrationScope","in":"query","required":false,"schema":{"type":"string"}},{"name":"gatewayClass","in":"query","required":false,"schema":{"type":"string"}},{"name":"adapterClass","in":"query","required":false,"schema":{"type":"string"}},{"name":"controlDomainIntent","in":"query","required":false,"schema":{"type":"string"}},{"name":"nes2ModuleEvidence","in":"query","required":false,"schema":{"type":"string"}},{"name":"eebusEvidence","in":"query","required":false,"schema":{"type":"string"}},{"name":"tafEvidence","in":"query","required":false,"schema":{"type":"string"}},{"name":"auditPrerequisites","in":"query","required":false,"schema":{"type":"string"}},{"name":"authBoundary","in":"query","required":false,"schema":{"type":"string"}},{"name":"tenantBoundary","in":"query","required":false,"schema":{"type":"string"}},{"name":"ownerRole","in":"query","required":false,"schema":{"type":"string"}},{"name":"fallbackReason","in":"query","required":false,"schema":{"type":"string"}},{"in":"query","name":"blocker","schema":{"type":"string"}},{"in":"query","name":"evidenceHints","schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only SMGW connector readiness evidence view","content":{"application/json":{"schema":{"type":"object","properties":{"capabilityKey":{"type":"string"},"safety":{"type":"string"},"status":{"type":"string"},"readinessScore":{"type":"number"},"connectorReadiness":{"type":"object"},"missingEvidence":{"type":"array"},"blockers":{"type":"array"},"positiveFollowUps":{"type":"array"},"sourceActions":{"type":"object"},"dossierEvidence":{"type":"object"},"_errors":{"type":"array"},"timestamp":{"type":"string","format":"date-time"}}}}}}},"description":"Returns a deterministic read-only readiness/evidence view for a planned §14a SMGW / NES2 / EEBUS connector path. The endpoint reports integration scope, tenant/auth boundary, adapter class, control-domain intent, NES2 and EEBUS/TAF evidence, compliance/audit prerequisites, blockers, missing evidence, positive follow-ups and explicit side-effect guards. It does not pair gateways, register devices, dispatch TAF-7, publish MQTT, bridge EEBUS, create HITL work, call external adapters, manage secrets, mutate tariffs/billing, or add Personal-Agent shortcuts."}},"/api/dashboard/municipal-energy-value-analysis":{"get":{"summary":"Municipal energy value Lagebild -- read-only dashboard aggregation","tags":["Dashboard API"],"operationId":"dashboard_api_municipalEnergyValueAnalysisStatus","parameters":[{"name":"municipality","in":"query","required":false,"schema":{"type":"string"}},{"name":"ags","in":"query","required":false,"schema":{"type":"string"}},{"name":"year","in":"query","required":false,"schema":{"type":"integer"}},{"name":"scenario","in":"query","required":false,"schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only municipal energy value Lagebild","content":{"application/json":{"schema":{"type":"object","properties":{"capabilityKey":{"type":"string"},"status":{"type":"string"},"municipality":{"type":"string"},"ags":{"type":"string"},"year":{"type":"number"},"scenario":{"type":"string"},"analysisRunId":{"type":"string"},"valueRows":{"type":"array"},"riskRows":{"type":"array"},"budgetImpactRows":{"type":"array"},"assumptionRows":{"type":"array"},"sourceRows":{"type":"array"},"missingEvidence":{"type":"array"},"positiveFollowUps":{"type":"array"},"noCallGuards":{"type":"array"},"_errors":{"type":"array"},"timestamp":{"type":"string","format":"date-time"}}}}}}},"description":"Returns a deterministic, Budibase-renderable municipal electricity-economy Lagebild for a given German municipality (identified by municipality name or AGS). Includes scalar valueRows (generation/value by technology), riskRows (EWK/digitalization, iMSys/SMGW rollout readiness, capacity constraints), budgetImpactRows (Konzessionsabgabe layers as scenario assumptions), assumptionRows, and sourceRows. Missing data is surfaced in missingEvidence and sourceRows, not as errors. The endpoint is generic for German municipalities; Mauer serves as the first demonstrable fixture/regression case. It does not perform billing, settlement, tariff calculation, concession-fee settlement, device control, MaKo dispatch, tenant provisioning, reset, Budibase table writes, or unrestricted data exports."}},"/api/dashboard/model-viability-evidence-gate":{"get":{"summary":"Model Viability Evidence Gate — read-only single-candidate evidence view","tags":["Dashboard API"],"operationId":"dashboard_api_modelViabilityEvidenceGateStatus","parameters":[{"name":"candidateId","in":"query","required":false,"schema":{"type":"string"}},{"name":"candidateName","in":"query","required":false,"schema":{"type":"string"}},{"name":"modelType","in":"query","required":false,"schema":{"type":"string"}},{"name":"scope","in":"query","required":false,"schema":{"type":"string"}},{"name":"evidenceSnapshotRef","in":"query","required":false,"schema":{"type":"string"}},{"name":"processCostBand","in":"query","required":false,"schema":{"type":"string"}},{"name":"processCostReference","in":"query","required":false,"schema":{"type":"string"}},{"name":"exceptionCaseRateBand","in":"query","required":false,"schema":{"type":"string"}},{"name":"exceptionCaseOwner","in":"query","required":false,"schema":{"type":"string"}},{"name":"liquidityImpactBand","in":"query","required":false,"schema":{"type":"string"}},{"name":"liquidityImpactReference","in":"query","required":false,"schema":{"type":"string"}},{"name":"dataMaturityMetering","in":"query","required":false,"schema":{"type":"string"}},{"name":"dataMaturityRoles","in":"query","required":false,"schema":{"type":"string"}},{"name":"dataMaturityTimeSeries","in":"query","required":false,"schema":{"type":"string"}},{"name":"dataMaturitySourceFreshness","in":"query","required":false,"schema":{"type":"string"}},{"name":"governanceEffortBand","in":"query","required":false,"schema":{"type":"string"}},{"name":"governanceDecisionOwner","in":"query","required":false,"schema":{"type":"string"}},{"name":"nextReviewGate","in":"query","required":false,"schema":{"type":"string"}},{"name":"assumptionOnlyDimensions","in":"query","required":false,"schema":{"oneOf":[{"type":"array","items":{"type":"string"}},{"type":"string"}]}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only single-candidate model viability evidence view","content":{"application/json":{"schema":{"type":"object","properties":{"capabilityKey":{"type":"string"},"safety":{"type":"string"},"status":{"type":"string"},"readinessScore":{"type":"number"},"candidateContext":{"type":"object"},"rows":{"type":"array"},"missingEvidence":{"type":"array"},"positiveFollowUps":{"type":"array"},"decisionBoundaries":{"type":"array"},"sourceActions":{"type":"object"},"dossierEvidence":{"type":"object"},"timestamp":{"type":"string","format":"date-time"},"_errors":{"type":"array","items":{"type":"string"}}}}}}}},"description":"Builds a deterministic, dossier-safe evidence view for one supplied operating-model candidate. Normalizes process-cost, exception-case, liquidity-impact, data-maturity and governance-effort evidence into comparable dimension rows with provided/assumption_only/missing status. Read-only: does not rank models, compute economics, or issue a legal, regulatory, tariff, contract, allocation, onboarding, billing, settlement, MaKo/A96, finance, procurement, workflow, HITL, connector, market-communication, device-control or Personal-Agent action."}},"/api/stadtwerk-mauer/external-interface-stubs/call":{"post":{"summary":"stadtwerk-mauer-external-interface-stubs.callStub","tags":["stadtwerk-mauer-external-interface-stubs"],"operationId":"stadtwerk_mauer_external_interface_stubs_callStub","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"tenantId":{"type":"string"},"stubFamily":{"type":"string"},"caseId":{"type":"string"},"responseVariant":{"type":"string"},"request":{"type":"string"},"deadlineAt":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}}},"/api/stadtwerk-mauer/external-interface-stubs/status":{"get":{"summary":"stadtwerk-mauer-external-interface-stubs.getStatus","tags":["stadtwerk-mauer-external-interface-stubs"],"operationId":"stadtwerk_mauer_external_interface_stubs_getStatus","parameters":[{"$ref":"#/components/parameters/TokenQuery"},{"name":"tenantId","in":"query","required":false,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"number"}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/stadtwerk-mauer/e2e-process-demo/run":{"post":{"summary":"stadtwerk-mauer-e2e-process-demo.runDemo","tags":["stadtwerk-mauer-e2e-process-demo"],"operationId":"stadtwerk_mauer_e2e_process_demo_runDemo","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"tenantId":{"type":"string"},"caseId":{"type":"string"},"demoPath":{"type":"string"},"electricianRegistrationRef":{"type":"string"},"customerConsentStatus":{"type":"string"},"contactRef":{"type":"string"},"messageTemplate":{"type":"string"},"pvPlantKw":{"type":"number"},"napReference":{"type":"string"},"maloId":{"type":"string"},"meloId":{"type":"string"},"meterId":{"type":"string"},"resetBeforeRun":{"type":"boolean"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}}},"/api/stadtwerk-mauer/e2e-process-demo/status":{"get":{"summary":"stadtwerk-mauer-e2e-process-demo.getStatus","tags":["stadtwerk-mauer-e2e-process-demo"],"operationId":"stadtwerk_mauer_e2e_process_demo_getStatus","parameters":[{"$ref":"#/components/parameters/TokenQuery"},{"name":"tenantId","in":"query","required":false,"schema":{"type":"string"}},{"name":"caseId","in":"query","required":false,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"number"}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/stadtwerk-mauer/mastr-data-overlay/status":{"get":{"summary":"stadtwerk-mauer-mastr-data-overlay.getStatus","tags":["stadtwerk-mauer-mastr-data-overlay"],"operationId":"stadtwerk_mauer_mastr_data_overlay_getStatus","parameters":[{"$ref":"#/components/parameters/TokenQuery"},{"name":"tenantId","in":"query","required":false,"schema":{"type":"string"}},{"name":"postalCode","in":"query","required":false,"schema":{"type":"string"}},{"name":"municipality","in":"query","required":false,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/dashboard/regulatory-change-readiness":{"get":{"summary":"Regulatory change readiness — read-only dossier-safe gate","tags":["Dashboard API"],"operationId":"dashboard_api_regulatoryChangeReadinessStatus","parameters":[{"name":"changeId","in":"query","required":false,"schema":{"type":"string"}},{"name":"effectiveDate","in":"query","required":false,"schema":{"type":"string"}},{"name":"mechanismType","in":"query","required":false,"schema":{"type":"string"}},{"name":"affectedSystems","in":"query","required":false,"schema":{"oneOf":[{"type":"array","items":{"type":"string"}},{"type":"string"}]}},{"name":"dictionaryVersion","in":"query","required":false,"schema":{"type":"string"}},{"name":"sourceDatapoints","in":"query","required":false,"schema":{"oneOf":[{"type":"array","items":{"type":"string"}},{"type":"string"}]}},{"name":"intervalCoverage","in":"query","required":false,"schema":{"type":"string"}},{"name":"masterDataStatus","in":"query","required":false,"schema":{"type":"string"}},{"name":"substituteValuePolicy","in":"query","required":false,"schema":{"type":"string"}},{"name":"makoCases","in":"query","required":false,"schema":{"oneOf":[{"type":"array","items":{"type":"string"}},{"type":"string"}]}},{"name":"operatorDeclarationStatus","in":"query","required":false,"schema":{"type":"string"}},{"name":"billingRuleReference","in":"query","required":false,"schema":{"type":"string"}},{"name":"auditTrailStatus","in":"query","required":false,"schema":{"type":"string"}},{"name":"testCasePackStatus","in":"query","required":false,"schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only regulatory change readiness status","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string"},"readinessScore":{"type":"number"},"evidenceItems":{"type":"array"},"missingEvidence":{"type":"array"},"generatedTestCaseRequirements":{"type":"array"},"positiveFollowUps":{"type":"array"},"blockingFindings":{"type":"array"},"sourceActions":{"type":"object"},"dossierEvidence":{"type":"object"},"safety":{"type":"string"},"timestamp":{"type":"string","format":"date-time"},"_errors":{"type":"array","items":{"type":"string"}}}}}}}},"description":"Builds a deterministic readiness/evidence contract for upcoming regulatory billing, EEG or refinancing mechanisms. The endpoint separates dictionary, datapoint, interval, master-data, substitute-value, MaKo, operator-declaration, billing-rule, audit and test-case evidence. It is read-only and does not run settlement, billing, MaKo dispatch, HITL, external connectors or legal interpretation."}},"/api/dashboard/investment-two-track-control":{"get":{"summary":"Investment two-track control — read-only dossier-safe status","tags":["Dashboard API"],"operationId":"dashboard_api_investmentTwoTrackControlStatus","parameters":[{"name":"submissionId","in":"query","required":false,"schema":{"type":"string"}},{"name":"gridOperatorId","in":"query","required":false,"schema":{"type":"string"}},{"name":"deadline","in":"query","required":false,"schema":{"type":"string"}},{"name":"submissionFormat","in":"query","required":false,"schema":{"type":"string"}},{"name":"tacticalOwner","in":"query","required":false,"schema":{"type":"string"}},{"name":"targetOwner","in":"query","required":false,"schema":{"type":"string"}},{"name":"financeReviewStatus","in":"query","required":false,"schema":{"type":"string"}},{"name":"boardReadiness","in":"query","required":false,"schema":{"type":"string"}},{"name":"dataQualityStatus","in":"query","required":false,"schema":{"type":"string"}},{"name":"approvalModel","in":"query","required":false,"schema":{"type":"string"}},{"name":"handoverStatus","in":"query","required":false,"schema":{"type":"string"}},{"name":"budgetEnvelopeEur","in":"query","required":false,"schema":{"type":"number"}},{"name":"measureCount","in":"query","required":false,"schema":{"type":"integer","minimum":0}},{"name":"sourceDatapoints","in":"query","required":false,"schema":{"oneOf":[{"type":"array","items":{"type":"string"}},{"type":"string"}]}},{"name":"blockedDecisions","in":"query","required":false,"schema":{"oneOf":[{"type":"array","items":{"type":"string"}},{"type":"string"}]}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only investment two-track control status","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string"},"readinessScore":{"type":"number"},"tacticalTrack":{"type":"object"},"targetTrack":{"type":"object"},"missingEvidence":{"type":"array"},"positiveFollowUps":{"type":"array"},"blockedDecisions":{"type":"array"},"sourceActions":{"type":"object"},"dossierEvidence":{"type":"object"},"safety":{"type":"string"},"timestamp":{"type":"string","format":"date-time"},"_errors":{"type":"array","items":{"type":"string"}}}}}}}},"description":"Builds a deterministic evidence/readiness view that separates tactical investment submission readiness from the target-process readiness track for Asset Management / ISO 55001 work. The endpoint is read-only and does not mutate Investment Planning, Finance, SAP/PSP, settlement, billing, MaKo, HITL, VDMI, external connector or Personal-Agent state."}},"/api/dashboard/sap-budget-psp-gate":{"get":{"summary":"SAP Budget PSP Gate — read-only dossier-safe status","tags":["Dashboard API"],"operationId":"dashboard_api_sapBudgetPspGateStatus","parameters":[{"name":"measureId","in":"query","required":false,"schema":{"type":"string"}},{"name":"measureName","in":"query","required":false,"schema":{"type":"string"}},{"name":"migrationWave","in":"query","required":false,"schema":{"type":"string"}},{"name":"sapSystemRef","in":"query","required":false,"schema":{"type":"string"}},{"name":"pspElementId","in":"query","required":false,"schema":{"type":"string"}},{"name":"legacyInternalOrderId","in":"query","required":false,"schema":{"type":"string"}},{"name":"assetBenefit","in":"query","required":false,"schema":{"type":"string"}},{"name":"ownerRole","in":"query","required":false,"schema":{"type":"string"}},{"name":"approvalStatus","in":"query","required":false,"schema":{"type":"string"}},{"name":"financeGate","in":"query","required":false,"schema":{"type":"string"}},{"name":"dataQualityStatus","in":"query","required":false,"schema":{"type":"string"}},{"name":"sourceSnapshotId","in":"query","required":false,"schema":{"type":"string"}},{"name":"availableBudgetEur","in":"query","required":false,"schema":{"type":"number"}},{"name":"plannedValueEur","in":"query","required":false,"schema":{"type":"number"}},{"name":"committedValueEur","in":"query","required":false,"schema":{"type":"number"}},{"name":"pspCarryOverEur","in":"query","required":false,"schema":{"type":"number"}},{"name":"budgetOverhangEur","in":"query","required":false,"schema":{"type":"number"}},{"name":"priorityScore","in":"query","required":false,"schema":{"type":"number"}},{"name":"blockedDecisions","in":"query","required":false,"schema":{"oneOf":[{"type":"array","items":{"type":"string"}},{"type":"string"}]}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only SAP/PSP budget-gate status","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string"},"readinessScore":{"type":"number"},"measureContext":{"type":"object"},"budgetEvidence":{"type":"object"},"gateEvidence":{"type":"object"},"missingEvidence":{"type":"array"},"positiveFollowUps":{"type":"array"},"blockedDecisions":{"type":"array"},"sourceActions":{"type":"object"},"dossierEvidence":{"type":"object"},"safety":{"type":"string"},"timestamp":{"type":"string","format":"date-time"},"_errors":{"type":"array","items":{"type":"string"}}}}}}}},"description":"Builds a deterministic SAP/PSP budget-gate evidence view for one investment measure. The endpoint is read-only and does not mutate SAP/PSP, Finance, investment workflow, billing, settlement, MaKo, HITL, VDMI, external connector or Personal-Agent state."}},"/api/dashboard/energy-tax-information-package":{"get":{"summary":"Energy Tax Information Package — read-only dossier-safe status","tags":["Dashboard API"],"operationId":"dashboard_api_energyTaxInformationPackageStatus","parameters":[{"name":"packageId","in":"query","required":false,"schema":{"type":"string"}},{"name":"dataSourceId","in":"query","required":false,"schema":{"type":"string"}},{"name":"dictionaryVersion","in":"query","required":false,"schema":{"type":"string"}},{"name":"period","in":"query","required":false,"schema":{"type":"string"}},{"name":"periodStart","in":"query","required":false,"schema":{"type":"string"}},{"name":"periodEnd","in":"query","required":false,"schema":{"type":"string"}},{"name":"aggregationLogic","in":"query","required":false,"schema":{"type":"string"}},{"name":"validationStatus","in":"query","required":false,"schema":{"type":"string"}},{"name":"responsibleOwner","in":"query","required":false,"schema":{"type":"string"}},{"name":"contactRole","in":"query","required":false,"schema":{"type":"string"}},{"name":"sla","in":"query","required":false,"schema":{"type":"string"}},{"name":"auditReference","in":"query","required":false,"schema":{"type":"string"}},{"name":"handoverDecision","in":"query","required":false,"schema":{"type":"string"}},{"name":"evidenceStatus","in":"query","required":false,"schema":{"type":"string"}},{"name":"dataQualityStatus","in":"query","required":false,"schema":{"type":"string"}},{"name":"sourceRefs","in":"query","required":false,"schema":{"oneOf":[{"type":"array","items":{"type":"string"}},{"type":"string"}]}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only energy-tax information-package status","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string"},"readinessScore":{"type":"number"},"packageContext":{"type":"object"},"missingEvidence":{"type":"array"},"positiveFollowUps":{"type":"array"},"sourceEvidence":{"type":"object"},"sourceActions":{"type":"object"},"dossierEvidence":{"type":"object"},"safety":{"type":"string"},"timestamp":{"type":"string","format":"date-time"},"_errors":{"type":"array","items":{"type":"string"}}}}}}}},"description":"Builds a deterministic evidence view for an Energiesteuer/Finance information package. The endpoint is read-only and does not calculate tax, approve packages, copy raw data, or mutate Finance, billing, settlement, MaKo, SAP, HITL, external connector or Personal-Agent state."}},"/api/dashboard/investment-risk-translation":{"get":{"summary":"Investment Risk Translation — read-only dossier-safe status","tags":["Dashboard API"],"operationId":"dashboard_api_investmentRiskTranslationStatus","parameters":[{"name":"sourceRef","in":"query","required":false,"schema":{"type":"string"}},{"name":"sourceType","in":"query","required":false,"schema":{"type":"string"}},{"name":"period","in":"query","required":false,"schema":{"type":"string"}},{"name":"division","in":"query","required":false,"schema":{"type":"string"}},{"name":"classification","in":"query","required":false,"schema":{"type":"string"}},{"name":"financialImpact","in":"query","required":false,"schema":{"oneOf":[{"type":"number"},{"type":"string"}]}},{"name":"assetImpact","in":"query","required":false,"schema":{"type":"string"}},{"name":"ownerRole","in":"query","required":false,"schema":{"type":"string"}},{"name":"decisionReadiness","in":"query","required":false,"schema":{"type":"string"}},{"name":"blockedDecisionId","in":"query","required":false,"schema":{"type":"string"}},{"name":"nextAction","in":"query","required":false,"schema":{"type":"string"}},{"name":"sourceSnapshot","in":"query","required":false,"schema":{"type":"string"}},{"name":"evidenceRefs","in":"query","required":false,"schema":{"oneOf":[{"type":"array","items":{"type":"string"}},{"type":"string"}]}},{"in":"query","name":"forbiddenAssumptions","schema":{"type":"string"}},{"in":"query","name":"budgetRef","schema":{"type":"string"}},{"in":"query","name":"riskRef","schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only investment-risk translation status","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string"},"readinessScore":{"type":"number"},"translationContext":{"type":"object"},"handoverContext":{"type":"object"},"missingEvidence":{"type":"array"},"positiveFollowUps":{"type":"array"},"sourceActions":{"type":"object"},"dossierEvidence":{"type":"object"},"safety":{"type":"string"},"timestamp":{"type":"string","format":"date-time"},"_errors":{"type":"array","items":{"type":"string"}}}}}}}},"description":"Builds a deterministic evidence view for investment/risk translation material. The endpoint is read-only and does not create VDMI, HITL, Finance, Investment Planning, SAP/PSP, external connector or Personal-Agent side effects."}},"/api/dashboard/budget-waterfall-governance":{"get":{"summary":"Budget Waterfall Governance — read-only dossier-safe gate","tags":["Dashboard API"],"operationId":"dashboard_api_budgetWaterfallGovernanceStatus","parameters":[{"name":"waterfallId","in":"query","required":false,"schema":{"type":"string"}},{"name":"sourceId","in":"query","required":false,"schema":{"type":"string"}},{"name":"period","in":"query","required":false,"schema":{"type":"string"}},{"name":"division","in":"query","required":false,"schema":{"type":"string"}},{"name":"baselineRef","in":"query","required":false,"schema":{"type":"string"}},{"name":"forecastCutoff","in":"query","required":false,"schema":{"type":"string"}},{"name":"carryoverLogic","in":"query","required":false,"schema":{"type":"string"}},{"name":"signConvention","in":"query","required":false,"schema":{"type":"string"}},{"name":"ownerRole","in":"query","required":false,"schema":{"type":"string"}},{"name":"approvalStatus","in":"query","required":false,"schema":{"type":"string"}},{"name":"followUpDecision","in":"query","required":false,"schema":{"type":"string"}},{"name":"sourceSnapshotRef","in":"query","required":false,"schema":{"type":"string"}},{"name":"evidenceRef","in":"query","required":false,"schema":{"oneOf":[{"type":"array","items":{"type":"string"}},{"type":"string"}]}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only budget-waterfall governance status","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string"},"readinessScore":{"type":"number"},"waterfallContext":{"type":"object"},"governanceEvidence":{"type":"object"},"missingEvidence":{"type":"array"},"positiveFollowUps":{"type":"array"},"sourceActions":{"type":"object"},"dossierEvidence":{"type":"object"},"safety":{"type":"string"},"timestamp":{"type":"string","format":"date-time"},"_errors":{"type":"array","items":{"type":"string"}}}}}}}},"description":"Builds a deterministic evidence view for budget-waterfall governance. The endpoint is read-only and does not create Finance, SAP/PSP, Investment Planning, settlement, billing, MaKo, HITL, external connector or Personal-Agent side effects."}},"/api/dashboard/gas-decommissioning-roadmap":{"get":{"summary":"Gas Decommissioning Roadmap — read-only dossier-safe status","tags":["Dashboard API"],"operationId":"dashboard_api_gasDecommissioningRoadmapStatus","parameters":[{"name":"roadmapId","in":"query","required":false,"schema":{"type":"string"}},{"name":"currentPhase","in":"query","required":false,"schema":{"type":"string"}},{"name":"owner","in":"query","required":false,"schema":{"type":"string"}},{"name":"assetRiskEvidence","in":"query","required":false,"schema":{"type":"string"}},{"name":"dependencyMap","in":"query","required":false,"schema":{"type":"string"}},{"name":"investmentImpactRef","in":"query","required":false,"schema":{"type":"string"}},{"name":"committeeGateDate","in":"query","required":false,"schema":{"type":"string"}},{"name":"executionHandoverOwner","in":"query","required":false,"schema":{"type":"string"}},{"name":"nextDecisionGate","in":"query","required":false,"schema":{"type":"string"}},{"name":"blocker","in":"query","required":false,"schema":{"oneOf":[{"type":"array","items":{"type":"string"}},{"type":"string"}]}},{"name":"sourceSnapshotRef","in":"query","required":false,"schema":{"type":"string"}},{"name":"evidenceRef","in":"query","required":false,"schema":{"oneOf":[{"type":"array","items":{"type":"string"}},{"type":"string"}]}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only gas decommissioning roadmap status","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string"},"readinessScore":{"type":"number"},"roadmapContext":{"type":"object"},"phaseEvidence":{"type":"object"},"dependencies":{"type":"object"},"blockers":{"type":"array"},"missingEvidence":{"type":"array"},"positiveFollowUps":{"type":"array"},"sourceActions":{"type":"object"},"dossierEvidence":{"type":"object"},"safety":{"type":"string"},"timestamp":{"type":"string","format":"date-time"},"_errors":{"type":"array","items":{"type":"string"}}}}}}}},"description":"Builds a deterministic evidence view for gas-network decommissioning roadmap readiness. The endpoint is read-only and does not create gas-transformation, finance, SAP, investment, HITL, external connector or Personal-Agent side effects."}},"/api/dashboard/jour-fixe-decision-closure":{"get":{"summary":"Jour-Fixe Decision Closure — read-only dossier-safe status","tags":["Dashboard API"],"operationId":"dashboard_api_jourFixeDecisionClosureStatus","parameters":[{"name":"topicId","in":"query","required":false,"schema":{"type":"string"}},{"name":"topicTitle","in":"query","required":false,"schema":{"type":"string"}},{"name":"jourFixeId","in":"query","required":false,"schema":{"type":"string"}},{"name":"owner","in":"query","required":false,"schema":{"type":"string"}},{"name":"kpi","in":"query","required":false,"schema":{"type":"string"}},{"name":"decisionCriterion","in":"query","required":false,"schema":{"type":"string"}},{"name":"nextGate","in":"query","required":false,"schema":{"type":"string"}},{"name":"closureStatus","in":"query","required":false,"schema":{"type":"string"}},{"name":"closureProof","in":"query","required":false,"schema":{"type":"string"}},{"name":"blockedFollowUpAction","in":"query","required":false,"schema":{"type":"string"}},{"name":"sourceSnapshotRef","in":"query","required":false,"schema":{"type":"string"}},{"name":"evidenceRef","in":"query","required":false,"schema":{"oneOf":[{"type":"array","items":{"type":"string"}},{"type":"string"}]}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only Jour-fixe decision closure status","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string"},"readinessScore":{"type":"number"},"topic":{"type":"object"},"closureEvidence":{"type":"object"},"missingEvidence":{"type":"array"},"positiveFollowUps":{"type":"array"},"sourceActions":{"type":"object"},"dossierEvidence":{"type":"object"},"safety":{"type":"string"},"timestamp":{"type":"string","format":"date-time"},"_errors":{"type":"array","items":{"type":"string"}}}}}}}},"description":"Builds a deterministic evidence view for Jour-fixe topic closure. The endpoint is read-only and does not create meeting, VDMI, NOVA, HITL, external connector or Personal-Agent side effects."}},"/api/dashboard/off-balancing-metering-pruefmatrix":{"get":{"summary":"Off-Balancing Metering Pruefmatrix — read-only dossier-safe gate","tags":["Dashboard API"],"operationId":"dashboard_api_offBalancingMeteringPruefmatrixStatus","parameters":[{"name":"matrixId","in":"query","required":false,"schema":{"type":"string"}},{"name":"meteringScope","in":"query","required":false,"schema":{"type":"string"}},{"name":"financingModel","in":"query","required":false,"schema":{"type":"string"}},{"name":"decisionOwner","in":"query","required":false,"schema":{"type":"string"}},{"name":"committeeGate","in":"query","required":false,"schema":{"type":"string"}},{"name":"capexOpexBaseline","in":"query","required":false,"schema":{"type":"string"}},{"name":"eogEffectEvidence","in":"query","required":false,"schema":{"type":"string"}},{"name":"regulatoryEffectEvidence","in":"query","required":false,"schema":{"type":"string"}},{"name":"costRecognitionAssumption","in":"query","required":false,"schema":{"type":"string"}},{"name":"financierConditions","in":"query","required":false,"schema":{"type":"string"}},{"name":"dataQualityStatus","in":"query","required":false,"schema":{"type":"string"}},{"name":"interfaceRiskStatus","in":"query","required":false,"schema":{"type":"string"}},{"name":"gridInvestmentSpaceProof","in":"query","required":false,"schema":{"type":"string"}},{"name":"sourceSnapshotRef","in":"query","required":false,"schema":{"type":"string"}},{"name":"evidenceRef","in":"query","required":false,"schema":{"oneOf":[{"type":"array","items":{"type":"string"}},{"type":"string"}]}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only off-balancing metering pruefmatrix status","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string"},"readinessScore":{"type":"number"},"matrixContext":{"type":"object"},"financingEvidence":{"type":"object"},"gridInvestmentVerdict":{"type":"object"},"missingEvidence":{"type":"array"},"positiveFollowUps":{"type":"array"},"sourceActions":{"type":"object"},"dossierEvidence":{"type":"object"},"safety":{"type":"string"},"timestamp":{"type":"string","format":"date-time"},"_errors":{"type":"array","items":{"type":"string"}}}}}}}},"description":"Builds a deterministic evidence view for off-balancing metering option readiness. The endpoint is read-only and does not create finance, SAP, investment, settlement, billing, MaKo, HITL, external connector or Personal-Agent side effects."}},"/api/dashboard/automation-requirements-decision-value":{"get":{"summary":"Automation Requirements Decision Value — read-only dossier-safe gate","tags":["Dashboard API"],"operationId":"dashboard_api_automationRequirementsDecisionValueStatus","parameters":[{"name":"requirementId","in":"query","required":false,"schema":{"type":"string"}},{"name":"requestTitle","in":"query","required":false,"schema":{"type":"string"}},{"name":"requestType","in":"query","required":false,"schema":{"type":"string"}},{"name":"processArea","in":"query","required":false,"schema":{"type":"string"}},{"name":"decisionOwner","in":"query","required":false,"schema":{"type":"string"}},{"name":"targetGate","in":"query","required":false,"schema":{"type":"string"}},{"name":"sourceSystem","in":"query","required":false,"schema":{"type":"string"}},{"name":"movingDataFlow","in":"query","required":false,"schema":{"type":"string"}},{"name":"manualEffort","in":"query","required":false,"schema":{"type":"string"}},{"name":"controlPoint","in":"query","required":false,"schema":{"type":"string"}},{"name":"decisionValue","in":"query","required":false,"schema":{"type":"string"}},{"name":"followUpProcess","in":"query","required":false,"schema":{"type":"string"}},{"name":"dataQuality","in":"query","required":false,"schema":{"type":"string"}},{"name":"rollbackOrStopCriterion","in":"query","required":false,"schema":{"type":"string"}},{"name":"sourceSnapshotRef","in":"query","required":false,"schema":{"type":"string"}},{"name":"evidenceRef","in":"query","required":false,"schema":{"oneOf":[{"type":"array","items":{"type":"string"}},{"type":"string"}]}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only automation requirements decision-value status","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string"},"readinessScore":{"type":"number"},"requirementContext":{"type":"object"},"decisionEvidence":{"type":"object"},"missingEvidence":{"type":"array"},"positiveFollowUps":{"type":"array"},"sourceActions":{"type":"object"},"dossierEvidence":{"type":"object"},"safety":{"type":"string"},"timestamp":{"type":"string","format":"date-time"},"_errors":{"type":"array","items":{"type":"string"}}}}}}}},"description":"Builds a deterministic evidence view for automation, dashboard, PowerBI or workflow wishes. The endpoint is read-only and does not create Office/BI workflows, tickets, HITL items, VDMI mutations, external connectors or production side effects."}},"/api/dashboard/smart-meter-off-balancing-purpose-lock":{"get":{"summary":"Smart Meter Off-Balancing Purpose Lock — read-only dossier-safe gate","tags":["Dashboard API"],"operationId":"dashboard_api_smartMeterOffBalancingPurposeLockStatus","parameters":[{"in":"query","name":"caseId","schema":{"type":"string"}},{"in":"query","name":"gridOperatorId","schema":{"type":"string"}},{"in":"query","name":"assetScope","schema":{"type":"string"}},{"in":"query","name":"financingModel","schema":{"type":"string"}},{"in":"query","name":"offBalanceVolumeEur","schema":{"type":"string"}},{"in":"query","name":"freedLiquidityEur","schema":{"type":"string"}},{"in":"query","name":"financierCostEur","schema":{"type":"string"}},{"in":"query","name":"capexOpexTotexEffect","schema":{"type":"string"}},{"in":"query","name":"regulatoryRecognitionStatus","schema":{"type":"string"}},{"in":"query","name":"purposeLockedMeasures","schema":{"type":"string"}},{"in":"query","name":"controlRoomInvestments","schema":{"type":"string"}},{"in":"query","name":"processInvestments","schema":{"type":"string"}},{"in":"query","name":"gridInfrastructureInvestments","schema":{"type":"string"}},{"in":"query","name":"budgetDilutionRisk","schema":{"type":"string"}},{"in":"query","name":"financeReviewStatus","schema":{"type":"string"}},{"in":"query","name":"sourceSnapshotRef","schema":{"type":"string"}},{"in":"query","name":"evidenceRef","schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only smart-meter off-balancing purpose-lock status"}},"description":"Builds a deterministic evidence view for smart-meter off-balancing purpose-lock readiness. The endpoint is read-only and does not create finance, SAP, investment, billing, settlement, MaKo, HITL, external connector or Personal-Agent side effects."}},"/api/dashboard/imsys-schedule-value-chain-readiness":{"get":{"summary":"iMSys schedule value-chain readiness — read-only dossier-safe gate","tags":["Dashboard API"],"operationId":"dashboard_api_imsysScheduleValueChainReadinessStatus","parameters":[{"in":"query","name":"caseId","schema":{"type":"string"}},{"in":"query","name":"gridOperatorId","schema":{"type":"string"}},{"in":"query","name":"meteringScope","schema":{"type":"string"}},{"in":"query","name":"sourceDatapoints","schema":{"type":"string"}},{"in":"query","name":"dataQualityStatus","schema":{"type":"string"}},{"in":"query","name":"forecastWindow","schema":{"type":"string"}},{"in":"query","name":"congestionSignal","schema":{"type":"string"}},{"in":"query","name":"assetScope","schema":{"type":"string"}},{"in":"query","name":"controllabilityStatus","schema":{"type":"string"}},{"in":"query","name":"flexibilityOptions","schema":{"type":"string"}},{"in":"query","name":"netzfahrplanAssessmentRef","schema":{"type":"string"}},{"in":"query","name":"operationalDecision","schema":{"type":"string"}},{"in":"query","name":"controlReadiness","schema":{"type":"string"}},{"in":"query","name":"lineOwnerRole","schema":{"type":"string"}},{"in":"query","name":"sourceSnapshotRef","schema":{"type":"string"}},{"in":"query","name":"evidenceRef","schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only iMSys schedule value-chain readiness status"}},"description":"Builds a deterministic evidence view for iMSys/CLS schedule value-chain readiness. The endpoint is read-only and does not execute device control, grid operations, HITL, MaKo, billing, settlement, external connector or Personal-Agent actions."}},"/api/dashboard/cls-digital-twin-compliance-gate":{"get":{"summary":"CLS Digital Twin Compliance Gate — read-only dossier-safe status","tags":["Dashboard API"],"operationId":"dashboard_api_clsDigitalTwinComplianceGateStatus","parameters":[{"in":"query","name":"procurementId","schema":{"type":"string"}},{"in":"query","name":"vendorId","schema":{"type":"string"}},{"in":"query","name":"systemPurpose","schema":{"type":"string"}},{"in":"query","name":"digitalTwinScope","schema":{"type":"string"}},{"in":"query","name":"clsInterfaceScope","schema":{"type":"string"}},{"in":"query","name":"dataFlowMap","schema":{"type":"string"}},{"in":"query","name":"personalDataCategories","schema":{"type":"string"}},{"in":"query","name":"rolesAccessRights","schema":{"type":"string"}},{"in":"query","name":"rbacRefs","schema":{"type":"string"}},{"in":"query","name":"avvStatus","schema":{"type":"string"}},{"in":"query","name":"ndaStatus","schema":{"type":"string"}},{"in":"query","name":"worksCouncilStatus","schema":{"type":"string"}},{"in":"query","name":"dsfaStatus","schema":{"type":"string"}},{"in":"query","name":"billingModuleImpact","schema":{"type":"string"}},{"in":"query","name":"regulatoryEvidenceStatus","schema":{"type":"string"}},{"in":"query","name":"securityEvidenceRefs","schema":{"type":"string"}},{"in":"query","name":"approvalStatus","schema":{"type":"string"}},{"in":"query","name":"sourceEvidenceRefs","schema":{"type":"string"}},{"in":"query","name":"sourceSnapshot","schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only CLS digital-twin compliance gate status"}},"description":"Builds a deterministic evidence view for CLS/digital-twin procurement readiness. The endpoint is read-only and does not create procurement, legal, DSFA, RBAC, HITL, billing, settlement, MaKo, CLS, SMGW, device-control, external connector or Personal-Agent side effects."}},"/api/dashboard/legacy-control-technology-transition":{"get":{"summary":"Legacy control technology transition — read-only dossier-safe gate","tags":["Dashboard API"],"operationId":"dashboard_api_legacyControlTechnologyTransitionStatus","parameters":[{"in":"query","name":"assetGroupId","schema":{"type":"string"}},{"in":"query","name":"assetId","schema":{"type":"string"}},{"in":"query","name":"gridOperatorId","schema":{"type":"string"}},{"in":"query","name":"powerClass","schema":{"type":"string"}},{"in":"query","name":"controlTechnology","schema":{"type":"string"}},{"in":"query","name":"feedbackCapability","schema":{"type":"string"}},{"in":"query","name":"switchingRisk","schema":{"type":"string"}},{"in":"query","name":"testFeasibility","schema":{"type":"string"}},{"in":"query","name":"testStatus","schema":{"type":"string"}},{"in":"query","name":"nonExecutionReason","schema":{"type":"string"}},{"in":"query","name":"targetTechnology","schema":{"type":"string"}},{"in":"query","name":"migrationRoadmap","schema":{"type":"string"}},{"in":"query","name":"owner","schema":{"type":"string"}},{"in":"query","name":"nextAction","schema":{"type":"string"}},{"in":"query","name":"sourceEvidenceRefs","schema":{"type":"string"}},{"in":"query","name":"sourceSnapshot","schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only legacy control technology transition status"}},"description":"Builds a deterministic evidence view for Rundsteuertechnik/Gruppensignal transition readiness. The endpoint is read-only and does not execute grid control, CLS, SMGW, device-control, HITL, settlement, MaKo, external connector or Personal-Agent side effects."}},"/api/dashboard/controllability-submission-cockpit":{"get":{"summary":"Controllability submission cockpit — read-only dossier-safe gate","tags":["Dashboard API"],"operationId":"dashboard_api_controllabilitySubmissionCockpitStatus","parameters":[{"in":"query","name":"submissionId","schema":{"type":"string"}},{"in":"query","name":"submissionDeadline","schema":{"type":"string"}},{"in":"query","name":"coordinator","schema":{"type":"string"}},{"in":"query","name":"sourceList","schema":{"type":"string"}},{"in":"query","name":"dataReconciliationStatus","schema":{"type":"string"}},{"in":"query","name":"reasonCatalog","schema":{"type":"string"}},{"in":"query","name":"assetGroupStatuses","schema":{"type":"string"}},{"in":"query","name":"openMeasures","schema":{"type":"string"}},{"in":"query","name":"handoverDecision","schema":{"type":"string"}},{"in":"query","name":"handoverOwner","schema":{"type":"string"}},{"in":"query","name":"nextCycleTasks","schema":{"type":"string"}},{"in":"query","name":"deadlineRisks","schema":{"type":"string"}},{"in":"query","name":"sourceEvidenceRefs","schema":{"type":"string"}},{"in":"query","name":"sourceSnapshot","schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only controllability submission cockpit status"}},"description":"Builds a deterministic evidence view for Steuerbarkeitscheck submission readiness and handover. The endpoint is read-only and does not create HITL items, submit filings, execute grid, CLS, SMGW or device control, mutate MaKo, billing, settlement or tariff processes, call external connectors, or use Personal-Agent shortcuts."}},"/api/dashboard/crisis-decision-routine":{"get":{"summary":"Crisis decision routine — read-only dossier-safe management gate","tags":["Dashboard API"],"operationId":"dashboard_api_crisisDecisionRoutineStatus","parameters":[{"in":"query","name":"caseId","schema":{"type":"string"}},{"in":"query","name":"topic","schema":{"type":"string"}},{"in":"query","name":"serviceImpact","schema":{"type":"string"}},{"in":"query","name":"populationImpact","schema":{"type":"string"}},{"in":"query","name":"requiredMeasures","schema":{"type":"string"}},{"in":"query","name":"financeImpact","schema":{"type":"string"}},{"in":"query","name":"knowledgeState","schema":{"type":"string"}},{"in":"query","name":"trainingNeed","schema":{"type":"string"}},{"in":"query","name":"operatingModelNeed","schema":{"type":"string"}},{"in":"query","name":"owner","schema":{"type":"string"}},{"in":"query","name":"nextGate","schema":{"type":"string"}},{"in":"query","name":"blockedFollowUp","schema":{"type":"string"}},{"in":"query","name":"decisionDeadline","schema":{"type":"string"}},{"in":"query","name":"sourceEvidenceRefs","schema":{"type":"string"}},{"in":"query","name":"sourceSnapshot","schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only crisis decision routine status"}},"description":"Builds deterministic management-readiness evidence for crisis/ad-hoc topics. The endpoint is read-only and does not create HITL, NOVA or VDMI items, mutate finance or operations data, call external connectors, close decisions, dispatch operational actions, or use Personal-Agent shortcuts."}},"/api/dashboard/investment-committee-steering-cards":{"get":{"summary":"Investment committee steering cards — read-only dossier-safe status","tags":["Dashboard API"],"operationId":"dashboard_api_investmentCommitteeSteeringCardsStatus","parameters":[{"in":"query","name":"investmentItemId","schema":{"type":"string"}},{"in":"query","name":"projectId","schema":{"type":"string"}},{"in":"query","name":"assetId","schema":{"type":"string"}},{"in":"query","name":"reviewStatus","schema":{"type":"string"}},{"in":"query","name":"evidenceStatus","schema":{"type":"string"}},{"in":"query","name":"committeeWindow","schema":{"type":"string"}},{"in":"query","name":"owner","schema":{"type":"string"}},{"in":"query","name":"blockedFollowUpAction","schema":{"type":"string"}},{"in":"query","name":"capexEur","schema":{"type":"string"}},{"in":"query","name":"riskFlag","schema":{"type":"string"}},{"in":"query","name":"sourceRef","schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only investment committee steering card status"}},"description":"Builds deterministic investment committee steering-card evidence. The endpoint is read-only and does not create HITL, VDMI or investment-plan records, mutate finance data, release budgets, call external connectors, trigger billing/settlement/tariff/payment effects, or use Personal-Agent shortcuts."}},"/api/dashboard/investment-data-review-queue":{"get":{"summary":"Investment data review queue — read-only dossier-safe status","tags":["Dashboard API"],"operationId":"dashboard_api_investmentDataReviewQueueStatus","parameters":[{"in":"query","name":"sourceId","schema":{"type":"string"}},{"in":"query","name":"dataPackageId","schema":{"type":"string"}},{"in":"query","name":"assetRef","schema":{"type":"string"}},{"in":"query","name":"projectRef","schema":{"type":"string"}},{"in":"query","name":"qualityStatus","schema":{"type":"string"}},{"in":"query","name":"division","schema":{"type":"string"}},{"in":"query","name":"bottleneckRef","schema":{"type":"string"}},{"in":"query","name":"owner","schema":{"type":"string"}},{"in":"query","name":"committeeWindow","schema":{"type":"string"}},{"in":"query","name":"blockedDecision","schema":{"type":"string"}},{"in":"query","name":"reviewStatus","schema":{"type":"string"}},{"in":"query","name":"sourceRef","schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only investment data review queue status"}},"description":"Builds deterministic Investdaten-Pruefqueue evidence. The endpoint is read-only and does not create HITL tickets, VDMI records, investment plans, finance records, budget releases, settlement/billing/tariff effects, external connector calls, or Personal-Agent shortcuts."}},"/api/dashboard/flex-strategic-demand-intake":{"get":{"summary":"Strategic Flex demand intake — read-only dossier-safe status","tags":["Dashboard API"],"operationId":"dashboard_api_flexStrategicDemandIntakeStatus","parameters":[{"in":"query","name":"demandId","schema":{"type":"string"}},{"in":"query","name":"caseId","schema":{"type":"string"}},{"in":"query","name":"topic","schema":{"type":"string"}},{"in":"query","name":"demandTopic","schema":{"type":"string"}},{"in":"query","name":"affectedProcess","schema":{"type":"string"}},{"in":"query","name":"riskOfInaction","schema":{"type":"string"}},{"in":"query","name":"commercialQuestion","schema":{"type":"string"}},{"in":"query","name":"resourceConflict","schema":{"type":"string"}},{"in":"query","name":"stopDoingOption","schema":{"type":"string"}},{"in":"query","name":"owner","schema":{"type":"string"}},{"in":"query","name":"nextDecisionGate","schema":{"type":"string"}},{"in":"query","name":"blockedFollowUp","schema":{"type":"string"}},{"in":"query","name":"sourceRef","schema":{"type":"string"}},{"in":"query","name":"flexContext","schema":{"type":"string"}},{"in":"query","name":"znpContext","schema":{"type":"string"}},{"in":"query","name":"novaContext","schema":{"type":"string"}},{"in":"query","name":"financeContext","schema":{"type":"string"}},{"in":"query","name":"vdmiContext","schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only strategic Flex demand intake status"}},"description":"Builds deterministic strategic Flex/Fahrplanmanagement demand-intake evidence. The endpoint is read-only and does not create VDMI cards, HITL tickets, NOVA decisions, finance records, tariff/billing/settlement/device-control effects, external connector calls, or Personal-Agent shortcuts."}},"/api/dashboard/gas-infrastructure-risk-governance":{"get":{"summary":"Gas infrastructure risk governance — read-only dossier-safe status","tags":["Dashboard API"],"operationId":"dashboard_api_gasInfrastructureRiskGovernanceStatus","parameters":[{"in":"query","name":"caseId","schema":{"type":"string"}},{"in":"query","name":"technicalFact","schema":{"type":"string"}},{"in":"query","name":"impactArea","schema":{"type":"string"}},{"in":"query","name":"probability","schema":{"type":"string"}},{"in":"query","name":"criticality","schema":{"type":"string"}},{"in":"query","name":"existingMitigation","schema":{"type":"string"}},{"in":"query","name":"threshold","schema":{"type":"string"}},{"in":"query","name":"riskRegisterDecision","schema":{"type":"string"}},{"in":"query","name":"owner","schema":{"type":"string"}},{"in":"query","name":"nextDecisionWindow","schema":{"type":"string"}},{"in":"query","name":"blockedFollowUp","schema":{"type":"string"}},{"in":"query","name":"sourceRef","schema":{"type":"string"}},{"in":"query","name":"vdmiContext","schema":{"type":"string"}},{"in":"query","name":"hitlContext","schema":{"type":"string"}},{"in":"query","name":"interfacePlaceholderContext","schema":{"type":"string"}},{"in":"query","name":"assetContext","schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only gas infrastructure risk governance status"}},"description":"Builds deterministic gas-infrastructure risk governance evidence. The endpoint is read-only and does not create risk-register entries, HITL tickets, VDMI records, Asset-MDM changes, monitoring/mitigation decisions, operations actions, external connector calls, or Personal-Agent shortcuts."}},"/api/dashboard/metering-rollout-process-indicator":{"get":{"summary":"Metering rollout process indicator — read-only dossier-safe status","tags":["Dashboard API"],"operationId":"dashboard_api_meteringRolloutProcessIndicatorStatus","parameters":[{"in":"query","name":"indicatorId","schema":{"type":"string"}},{"in":"query","name":"division","schema":{"type":"string"}},{"in":"query","name":"sourceType","schema":{"type":"string"}},{"in":"query","name":"targetCount","schema":{"type":"string"}},{"in":"query","name":"actualCount","schema":{"type":"string"}},{"in":"query","name":"backlogCount","schema":{"type":"string"}},{"in":"query","name":"dataQualityStatus","schema":{"type":"string"}},{"in":"query","name":"contractorLoad","schema":{"type":"string"}},{"in":"query","name":"capexImpactEur","schema":{"type":"string"}},{"in":"query","name":"opexImpactEur","schema":{"type":"string"}},{"in":"query","name":"owner","schema":{"type":"string"}},{"in":"query","name":"nextControlStep","schema":{"type":"string"}},{"in":"query","name":"blockedFollowUp","schema":{"type":"string"}},{"in":"query","name":"sourceRef","schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only metering rollout process-indicator status"}},"description":"Builds deterministic metering/rollout process evidence from supplied KPI facts. The endpoint is read-only and does not refresh datasources, import EDM data, create HITL tasks, mutate finance/CAPEX state, billing, tariff, settlement, device control, external connectors, or Personal-Agent shortcuts."}},"/api/dashboard/heat-transformation-line-asset-model":{"get":{"summary":"Heat transformation line-asset model — read-only dossier-safe status","tags":["Dashboard API"],"operationId":"dashboard_api_heatTransformationLineAssetModelStatus","parameters":[{"in":"query","name":"lineAssetId","schema":{"type":"string"}},{"in":"query","name":"geometryRef","schema":{"type":"string"}},{"in":"query","name":"connectedPointAssetIds","schema":{"type":"string"}},{"in":"query","name":"division","schema":{"type":"string"}},{"in":"query","name":"networkCalculationRef","schema":{"type":"string"}},{"in":"query","name":"dataQualityStatus","schema":{"type":"string"}},{"in":"query","name":"transformationStatus","schema":{"type":"string"}},{"in":"query","name":"futureOption","schema":{"type":"string"}},{"in":"query","name":"investmentNeed","schema":{"type":"string"}},{"in":"query","name":"owner","schema":{"type":"string"}},{"in":"query","name":"nextDecision","schema":{"type":"string"}},{"in":"query","name":"sourceRef","schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only heat transformation line-asset model status"}},"description":"Builds deterministic line-asset evidence from supplied facts. The endpoint is read-only and does not create ZNP projects, point/line assets, datapoints, VDMI dossiers, finance plans, HITL tasks, or trigger device control or external connectors."}},"/api/dashboard/ki-floorwalker-governance":{"get":{"summary":"KI Floorwalker governance — read-only dossier-safe status","tags":["Dashboard API"],"operationId":"dashboard_api_kiFloorwalkerGovernanceStatus","parameters":[{"in":"query","name":"useCaseId","schema":{"type":"string"}},{"in":"query","name":"processOwner","schema":{"type":"string"}},{"in":"query","name":"useCasePriority","schema":{"type":"string"}},{"in":"query","name":"allowedDataspaces","schema":{"type":"string"}},{"in":"query","name":"promptStandards","schema":{"type":"string"}},{"in":"query","name":"processBoundaries","schema":{"type":"string"}},{"in":"query","name":"rolesAndResponsibilities","schema":{"type":"string"}},{"in":"query","name":"guidedApplication","schema":{"type":"string"}},{"in":"query","name":"riskAndApprovalStatus","schema":{"type":"string"}},{"in":"query","name":"proofOfBenefit","schema":{"type":"string"}},{"in":"query","name":"sourceRef","schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only KI Floorwalker governance status"}},"description":"Builds deterministic AI governance evidence from supplied facts. The endpoint is read-only and does not run AI/LLM models, prompt databases, or write to HITL/VDMI."}},"/api/dashboard/investment-waterfall-governance":{"get":{"summary":"Investment waterfall governance — read-only dossier-safe status","tags":["Dashboard API"],"operationId":"dashboard_api_investmentWaterfallGovernanceStatus","parameters":[{"in":"query","name":"investmentItemId","schema":{"type":"string"}},{"in":"query","name":"targetProcess","schema":{"type":"string"}},{"in":"query","name":"budgetAmount","schema":{"type":"string"}},{"in":"query","name":"bottleneckRef","schema":{"type":"string"}},{"in":"query","name":"committeeWindow","schema":{"type":"string"}},{"in":"query","name":"evidenceReadiness","schema":{"type":"string"}},{"in":"query","name":"owner","schema":{"type":"string"}},{"in":"query","name":"nextAction","schema":{"type":"string"}},{"in":"query","name":"mandateStatus","schema":{"type":"string"}},{"in":"query","name":"riskIfDelayed","schema":{"type":"string"}},{"in":"query","name":"sourceRef","schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only investment waterfall governance status"}},"description":"Builds deterministic investment waterfall governance evidence from supplied facts. The endpoint is read-only and does not run budget writes or write to HITL/VDMI."}},"/api/dashboard/capacity-contract-risk-asset-cockpit":{"get":{"summary":"Capacity & Contract Risk Asset Cockpit — read-only dossier-safe status","tags":["Dashboard API"],"operationId":"dashboard_api_capacityContractRiskAssetCockpitStatus","parameters":[{"in":"query","name":"gridOperatorId","required":true,"schema":{"type":"string"}},{"in":"query","name":"utilization","schema":{"type":"number"}},{"in":"query","name":"bottleneck","schema":{"type":"string"}},{"in":"query","name":"firmCapacityKW","schema":{"type":"number"}},{"in":"query","name":"flexibleCapacityKW","schema":{"type":"number"}},{"in":"query","name":"contractStatus","schema":{"type":"string"}},{"in":"query","name":"legalStatus","schema":{"type":"string"}},{"in":"query","name":"altvereinbarung","schema":{"type":"boolean"}},{"in":"query","name":"capex","schema":{"type":"number"}},{"in":"query","name":"opex","schema":{"type":"number"}},{"in":"query","name":"priority","schema":{"type":"string"}},{"in":"query","name":"owner","schema":{"type":"string"}},{"in":"query","name":"nextAction","schema":{"type":"string"}},{"in":"query","name":"forecast","schema":{"type":"boolean"}},{"in":"query","name":"date","schema":{"type":"string"}},{"in":"query","name":"sourceRef","schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only capacity and contract risk status"}},"description":"Builds deterministic risk and decision status from supplied capacity and contract facts. The endpoint is read-only and does not run budget writes or write to ZNP, assets, HITL, or VDMI."}},"/api/dashboard/imsys-taf2-compliance":{"get":{"summary":"iMSys TAF2 compliance status — read-only dossier-safe status","tags":["Dashboard API"],"operationId":"dashboard_api_imsysTaf2ComplianceStatus","parameters":[{"in":"query","name":"meteringPointId","required":true,"schema":{"type":"string"}},{"in":"query","name":"taf2Obligation","schema":{"type":"boolean"}},{"in":"query","name":"targetDeadline","schema":{"type":"string"}},{"in":"query","name":"tariffModel","schema":{"type":"string"}},{"in":"query","name":"implementationStatus","schema":{"type":"string"}},{"in":"query","name":"measuredValueAccess","schema":{"type":"string"}},{"in":"query","name":"owner","schema":{"type":"string"}},{"in":"query","name":"nextAction","schema":{"type":"string"}},{"in":"query","name":"forecast","schema":{"type":"boolean"}},{"in":"query","name":"date","schema":{"type":"string"}},{"in":"query","name":"sourceRef","schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only iMSys TAF2 compliance status"}},"description":"Builds deterministic compliance evidence from supplied facts. The endpoint is read-only and does not run budget writes or write to HITL/VDMI."}},"/api/dashboard/schedule-management-governance-roadmap":{"get":{"summary":"Fahrplanmanagement Governance Roadmap — read-only dossier-safe status","tags":["Dashboard API"],"operationId":"dashboard_api_scheduleManagementGovernanceRoadmapStatus","parameters":[{"in":"query","name":"meteringPointId","schema":{"type":"string"}},{"in":"query","name":"targetState","schema":{"type":"string"}},{"in":"query","name":"capabilityMaturity","schema":{"type":"string"}},{"in":"query","name":"dataObjects","schema":{"type":"string"}},{"in":"query","name":"systemIntegrations","schema":{"type":"string"}},{"in":"query","name":"roleOwnership","schema":{"type":"string"}},{"in":"query","name":"redispatchBoundary","schema":{"type":"string"}},{"in":"query","name":"fnavReadiness","schema":{"type":"string"}},{"in":"query","name":"capacityManagementGaps","schema":{"type":"string"}},{"in":"query","name":"roadmapItems","schema":{"type":"string"}},{"in":"query","name":"decisionMeetings","schema":{"type":"string"}},{"in":"query","name":"owner","schema":{"type":"string"}},{"in":"query","name":"nextAction","schema":{"type":"string"}},{"in":"query","name":"forecast","schema":{"type":"boolean"}},{"in":"query","name":"date","schema":{"type":"string"}},{"in":"query","name":"sourceRef","schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only schedule management status and roadmap evidence"}},"description":"Builds deterministic roadmap and status from supplied facts. The endpoint is read-only and does not run dispatch/writes or write to ZNP, assets, HITL, or VDMI."}},"/api/dashboard/gas-transformation-dependency-map":{"get":{"summary":"Gas- und Waermetransformation Abhaengigkeitslandkarte — read-only dossier-safe status","tags":["Dashboard API"],"operationId":"dashboard_api_gasTransformationDependencyMapStatus","parameters":[{"in":"query","name":"projectId","schema":{"type":"string"}},{"in":"query","name":"division","schema":{"type":"string"}},{"in":"query","name":"nodes","schema":{"type":"string"}},{"in":"query","name":"dependencies","schema":{"type":"string"}},{"in":"query","name":"dataQualityGaps","schema":{"type":"string"}},{"in":"query","name":"investmentPaths","schema":{"type":"string"}},{"in":"query","name":"decommissionRepurposePaths","schema":{"type":"string"}},{"in":"query","name":"customerGroups","schema":{"type":"string"}},{"in":"query","name":"owner","schema":{"type":"string"}},{"in":"query","name":"nextAction","schema":{"type":"string"}},{"in":"query","name":"forecast","schema":{"type":"boolean"}},{"in":"query","name":"date","schema":{"type":"string"}},{"in":"query","name":"sourceRef","schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only gas and heat transformation status and dependency map evidence"}},"description":"Builds deterministic dependency map and status from supplied facts. The endpoint is read-only and does not run writes to ZNP, assets, HITL, or VDMI."}},"/api/dashboard/gas-transformation-dataroom":{"get":{"summary":"Gasnetz-Transformationsdatenraum -- read-only status snapshot","tags":["Dashboard API"],"operationId":"dashboard_api_gasTransformationDataroomStatus","parameters":[{"in":"query","name":"roomId","schema":{"type":"string"}},{"in":"query","name":"mandateId","schema":{"type":"string"}},{"in":"query","name":"profile","schema":{"type":"string"}},{"in":"query","name":"transformationPath","schema":{"type":"string"}},{"in":"query","name":"scenarioReference","schema":{"type":"string"}},{"in":"query","name":"evidenceStatus","schema":{"type":"string"}},{"in":"query","name":"decisionStatus","schema":{"type":"string"}},{"in":"query","name":"roadmapStatus","schema":{"type":"string"}},{"in":"query","name":"reviewDate","schema":{"type":"string"}},{"in":"query","name":"owner","schema":{"type":"string"}},{"in":"query","name":"reviewer","schema":{"type":"string"}},{"in":"query","name":"lifecycleStatus","schema":{"type":"string"}},{"in":"query","name":"sourceRefs","schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only Gasnetz-Transformationsdatenraum status evidence"}},"description":"Returns a deterministic dossier-safe status and evidence snapshot for a Gasnetz-Transformationsdatenraum. The endpoint is read-only and does not write Object-Store documents, ingest Knowledge-RAG sources, mutate ACL/export/archive state, create review snapshots, decide EOG/KANU/GasNEV matters, approve investments, create HITL/workflow items, call external connectors, or add Personal-Agent shortcuts."}},"/api/dashboard/grid-connection-transformation-gate":{"get":{"summary":"Netzanschlusspunkt Transformations Gate — read-only dossier-safe status","tags":["Dashboard API"],"operationId":"dashboard_api_gridConnectionTransformationGateStatus","parameters":[{"in":"query","name":"meteringPointId","schema":{"type":"string"}},{"in":"query","name":"division","schema":{"type":"string"}},{"in":"query","name":"transformationOption","schema":{"type":"string"}},{"in":"query","name":"dataQualityStatus","schema":{"type":"string"}},{"in":"query","name":"investmentPath","schema":{"type":"string"}},{"in":"query","name":"decommissionPath","schema":{"type":"string"}},{"in":"query","name":"owner","schema":{"type":"string"}},{"in":"query","name":"nextAction","schema":{"type":"string"}},{"in":"query","name":"sourceRef","schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only grid connection transformation status evidence"}},"description":"Builds deterministic gate status and evidence from supplied facts. The endpoint is read-only and does not run writes to ZNP, assets, HITL, or VDMI."}},"/api/dashboard/heat-asset-tariff-steering":{"get":{"summary":"District Heating Asset & Tariff Steering Gate — read-only dossier-safe status","tags":["Dashboard API"],"operationId":"dashboard_api_heatAssetTariffSteeringStatus","parameters":[{"in":"query","name":"heatPortfolioId","schema":{"type":"string"}},{"in":"query","name":"division","schema":{"type":"string"}},{"in":"query","name":"technicalMeasures","schema":{"type":"string"}},{"in":"query","name":"tariffImpactStatus","schema":{"type":"string"}},{"in":"query","name":"regulatoryUncertainty","schema":{"type":"string"}},{"in":"query","name":"fundingStatus","schema":{"type":"string"}},{"in":"query","name":"customerImpact","schema":{"type":"string"}},{"in":"query","name":"investmentPriority","schema":{"type":"string"}},{"in":"query","name":"owner","schema":{"type":"string"}},{"in":"query","name":"nextDecisionGate","schema":{"type":"string"}},{"in":"query","name":"blockedFollowUpAction","schema":{"type":"string"}},{"in":"query","name":"sourceRef","schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only district heating asset and tariff status evidence"}},"description":"Builds deterministic gate status and evidence from supplied facts. The endpoint is read-only and does not run writes to ZNP, assets, HITL, or VDMI."}},"/api/dashboard/tech-commercial-offer-cockpit":{"get":{"summary":"Technical & Commercial Offer Cockpit — read-only dossier-safe status","tags":["Dashboard API"],"operationId":"dashboard_api_techCommercialOfferCockpitStatus","parameters":[{"in":"query","name":"connectionRequestId","schema":{"type":"string"}},{"in":"query","name":"gridOperatorId","schema":{"type":"string"}},{"in":"query","name":"znpAlignment","schema":{"type":"string"}},{"in":"query","name":"gridNode","schema":{"type":"string"}},{"in":"query","name":"technicalRestriction","schema":{"type":"string"}},{"in":"query","name":"requestedCapacityKW","schema":{"type":"string"}},{"in":"query","name":"technicalStatus","schema":{"type":"string"}},{"in":"query","name":"capacityUtilization","schema":{"type":"string"}},{"in":"query","name":"fnavContractLogic","schema":{"type":"string"}},{"in":"query","name":"commercialAssumptions","schema":{"type":"string"}},{"in":"query","name":"legalAgreementStatus","schema":{"type":"string"}},{"in":"query","name":"legalBoundaries","schema":{"type":"string"}},{"in":"query","name":"sourceRef","schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only technical and commercial offer status evidence"}},"description":"Builds deterministic gate status and evidence from supplied facts. The endpoint is read-only and does not run writes or actual offer generation."}},"/api/dashboard/zaehlpark-finanzierung-szenario-cockpit":{"get":{"summary":"Zaehlpark Finanzierung Szenario Cockpit -- read-only dossier-safe status","tags":["Dashboard API"],"operationId":"dashboard_api_zaehlparkFinanzierungSzenarioCockpitStatus","parameters":[{"in":"query","name":"gridOperatorId","schema":{"type":"string"}},{"in":"query","name":"scenarioId","schema":{"type":"string"}},{"in":"query","name":"assetScope","schema":{"type":"string"}},{"in":"query","name":"meteringScope","schema":{"type":"string"}},{"in":"query","name":"period","schema":{"type":"string"}},{"in":"query","name":"investmentVolume","schema":{"type":"string"}},{"in":"query","name":"imsysCount","schema":{"type":"string"}},{"in":"query","name":"financingModel","schema":{"type":"string"}},{"in":"query","name":"opexAnnual","schema":{"type":"string"}},{"in":"query","name":"regulatoryRelevance","schema":{"type":"string"}},{"in":"query","name":"sourceRef","schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only metering rollout financing scenario evidence"}},"description":"Builds deterministic rollout and financing scenario status from supplied facts. The endpoint is read-only and does not run external financing, billing, settlement, or mutation paths."}},"/api/dashboard/process-sensitization-readiness-map":{"get":{"summary":"Process Sensitization Readiness Map -- read-only dossier-safe status","tags":["Dashboard API"],"operationId":"dashboard_api_processSensitizationReadinessMapStatus","parameters":[{"in":"query","name":"processType","schema":{"type":"string"}},{"in":"query","name":"topic","schema":{"type":"string"}},{"in":"query","name":"roleDecision","schema":{"type":"string"}},{"in":"query","name":"roleDecisionStatus","schema":{"type":"string"}},{"in":"query","name":"evidenceStatus","schema":{"type":"string"}},{"in":"query","name":"dataQualityStatus","schema":{"type":"string"}},{"in":"query","name":"systemBreakStatus","schema":{"type":"string"}},{"in":"query","name":"redLineStatus","schema":{"type":"string"}},{"in":"query","name":"missingEvidence","schema":{"type":"string"}},{"in":"query","name":"roleDecisionGaps","schema":{"type":"string"}},{"in":"query","name":"dataQualityGaps","schema":{"type":"string"}},{"in":"query","name":"systemBreaks","schema":{"type":"string"}},{"in":"query","name":"nonNegotiableConstraints","schema":{"type":"string"}},{"in":"query","name":"owner","schema":{"type":"string"}},{"in":"query","name":"dueDate","schema":{"type":"string"}},{"in":"query","name":"gridOperatorId","schema":{"type":"string"}},{"in":"query","name":"taskId","schema":{"type":"string"}},{"in":"query","name":"matrixId","schema":{"type":"string"}},{"in":"query","name":"assetId","schema":{"type":"string"}},{"in":"query","name":"sourceRef","schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only process sensitization readiness evidence"}},"description":"Builds deterministic readiness evidence from supplied process facts. The endpoint is read-only and does not create trainings, HITL tasks, VDMI changes, or external calls."}},"/api/dashboard/netzprozess-readiness-gate":{"get":{"summary":"Netzprozess Readiness Gate -- read-only dossier-safe status","tags":["Dashboard API"],"operationId":"dashboard_api_netzprozessReadinessGateStatus","parameters":[{"in":"query","name":"processType","schema":{"type":"string"}},{"in":"query","name":"processId","schema":{"type":"string"}},{"in":"query","name":"processRefType","schema":{"type":"string"}},{"in":"query","name":"processRefId","schema":{"type":"string"}},{"in":"query","name":"portalAccess","schema":{"type":"string"}},{"in":"query","name":"sftpRoute","schema":{"type":"string"}},{"in":"query","name":"rolePermission","schema":{"type":"string"}},{"in":"query","name":"itSecurityUpdate","schema":{"type":"string"}},{"in":"query","name":"training","schema":{"type":"string"}},{"in":"query","name":"dataPath","schema":{"type":"string"}},{"in":"query","name":"blockedDecision","schema":{"type":"string"}},{"in":"query","name":"owner","schema":{"type":"string"}},{"in":"query","name":"dueAt","schema":{"type":"string"}},{"in":"query","name":"nextDecision","schema":{"type":"string"}},{"in":"query","name":"missingEvidence","schema":{"type":"string"}},{"in":"query","name":"customSignals","schema":{"type":"string"}},{"in":"query","name":"sourceRef","schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only Netzprozess readiness evidence"}},"description":"Builds deterministic readiness evidence from supplied administrative process facts. The endpoint is read-only and does not create HITL tasks, mutate VDMI/workflow state, or call external systems."}},"/api/dashboard/grossspeicher-anschluss-readiness-gate":{"get":{"summary":"Grossspeicher Anschluss Readiness Gate -- read-only dossier-safe status","tags":["Dashboard API"],"operationId":"dashboard_api_grossspeicherAnschlussReadinessGateStatus","parameters":[{"in":"query","name":"gridOperatorId","schema":{"type":"string"}},{"in":"query","name":"projectId","schema":{"type":"string"}},{"in":"query","name":"storageAssetId","schema":{"type":"string"}},{"in":"query","name":"location","schema":{"type":"string"}},{"in":"query","name":"requestedCapacityKW","schema":{"type":"string"}},{"in":"query","name":"storageCapacityKWh","schema":{"type":"string"}},{"in":"query","name":"voltageLevel","schema":{"type":"string"}},{"in":"query","name":"assetContextStatus","schema":{"type":"string"}},{"in":"query","name":"napMastrNummer","schema":{"type":"string"}},{"in":"query","name":"napEvidenceStatus","schema":{"type":"string"}},{"in":"query","name":"connectionRequestStatus","schema":{"type":"string"}},{"in":"query","name":"formalRequestEvidence","schema":{"type":"string"}},{"in":"query","name":"networkSignalPriority","schema":{"type":"string"}},{"in":"query","name":"gridSignalStatus","schema":{"type":"string"}},{"in":"query","name":"fnavProfile","schema":{"type":"string"}},{"in":"query","name":"contractBoundaryStatus","schema":{"type":"string"}},{"in":"query","name":"scheduleRequirement","schema":{"type":"string"}},{"in":"query","name":"storageDispatchAssumption","schema":{"type":"string"}},{"in":"query","name":"scheduleEvidenceStatus","schema":{"type":"string"}},{"in":"query","name":"controllabilityStatus","schema":{"type":"string"}},{"in":"query","name":"controlRoomHandoverStatus","schema":{"type":"string"}},{"in":"query","name":"owner","schema":{"type":"string"}},{"in":"query","name":"nextDecision","schema":{"type":"string"}},{"in":"query","name":"source","schema":{"type":"string"}},{"in":"query","name":"missingEvidence","schema":{"type":"string"}},{"in":"query","name":"evidenceGaps","schema":{"type":"string"}},{"in":"query","name":"sourceRef","schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only Grossspeicher Anschluss readiness evidence"}},"description":"Builds deterministic Grossspeicher/Flex Anschluss readiness evidence from supplied facts. The endpoint is read-only and does not mutate Anschluss, fNAV, ZNP, VDMI/HITL, dispatch, or device-control state."}},"/api/dashboard/role-permission-access-readiness-gate":{"get":{"summary":"Role-Permission / AccessManager Readiness Gate -- read-only dossier-safe status","tags":["Dashboard API"],"operationId":"dashboard_api_rolePermissionAccessReadinessGateStatus","parameters":[{"in":"query","name":"roleId","schema":{"type":"string"}},{"in":"query","name":"roleName","schema":{"type":"string"}},{"in":"query","name":"processType","schema":{"type":"string"}},{"in":"query","name":"gridOperatorId","schema":{"type":"string"}},{"in":"query","name":"accessManagerRef","schema":{"type":"string"}},{"in":"query","name":"tenantScope","schema":{"type":"string"}},{"in":"query","name":"portalAccess","schema":{"type":"string"}},{"in":"query","name":"sftpRoute","schema":{"type":"string"}},{"in":"query","name":"rolePermission","schema":{"type":"string"}},{"in":"query","name":"securityClearance","schema":{"type":"string"}},{"in":"query","name":"trainingProof","schema":{"type":"string"}},{"in":"query","name":"reapprovalStatus","schema":{"type":"string"}},{"in":"query","name":"sourcePath","schema":{"type":"string"}},{"in":"query","name":"owner","schema":{"type":"string"}},{"in":"query","name":"dueDate","schema":{"type":"string"}},{"in":"query","name":"blockedAccess","schema":{"type":"string"}},{"in":"query","name":"caseId","schema":{"type":"string"}},{"in":"query","name":"source","schema":{"type":"string"}},{"in":"query","name":"missingEvidence","schema":{"type":"string"}},{"in":"query","name":"evidenceGaps","schema":{"type":"string"}},{"in":"query","name":"sourceRef","schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only Role-Permission / AccessManager readiness evidence"}},"description":"Builds deterministic role/access readiness evidence from supplied facts. The endpoint is read-only and does not call AccessManager, mutate IAM/RBAC state, store credentials, create workflows, or call external systems."}},"/api/dashboard/owner-deadline-evidence-gate":{"get":{"summary":"Owner-Frist-Evidenz Gate -- read-only dossier-safe status","tags":["Dashboard API"],"operationId":"dashboard_api_ownerDeadlineEvidenceGateStatus","parameters":[{"in":"query","name":"signalId","schema":{"type":"string"}},{"in":"query","name":"sourceType","schema":{"type":"string"}},{"in":"query","name":"sourceRef","schema":{"type":"string"}},{"in":"query","name":"processType","schema":{"type":"string"}},{"in":"query","name":"riskLevel","schema":{"type":"string"}},{"in":"query","name":"ownerRole","schema":{"type":"string"}},{"in":"query","name":"ownerContact","schema":{"type":"string"}},{"in":"query","name":"dueAt","schema":{"type":"string"}},{"in":"query","name":"evidenceRef","schema":{"type":"string"}},{"in":"query","name":"evidenceStatus","schema":{"type":"string"}},{"in":"query","name":"blockedDecision","schema":{"type":"string"}},{"in":"query","name":"linkedEntity","schema":{"type":"string"}},{"in":"query","name":"blockedByMissingEvidence","schema":{"type":"string"}},{"in":"query","name":"overdue","schema":{"type":"string"}},{"in":"query","name":"signalContextStatus","schema":{"type":"string"}},{"in":"query","name":"missingEvidence","schema":{"type":"string"}},{"in":"query","name":"evidenceGaps","schema":{"type":"string"}},{"in":"query","name":"caseId","schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only Owner-Frist-Evidenz readiness evidence"}},"description":"Builds deterministic owner/deadline/evidence readiness from supplied VNB signal facts. The endpoint is read-only and does not ingest mail/Teams/Loop, mutate workflows, send notifications, create tasks, or call external systems."}},"/api/dashboard/automation-risk-gate":{"get":{"summary":"Automation Risk Gate -- read-only dossier-safe status","tags":["Dashboard API"],"operationId":"dashboard_api_automationRiskGateStatus","parameters":[{"in":"query","name":"processId","schema":{"type":"string"}},{"in":"query","name":"processName","schema":{"type":"string"}},{"in":"query","name":"processClass","schema":{"type":"string"}},{"in":"query","name":"runFrequency","schema":{"type":"string"}},{"in":"query","name":"massRunVolume","schema":{"type":"string"}},{"in":"query","name":"affectedDomains","schema":{"type":"string"}},{"in":"query","name":"customerCommunicationImpact","schema":{"type":"string"}},{"in":"query","name":"billingImpact","schema":{"type":"string"}},{"in":"query","name":"marketCommunicationImpact","schema":{"type":"string"}},{"in":"query","name":"massDataImpact","schema":{"type":"string"}},{"in":"query","name":"testCaseCoverage","schema":{"type":"string"}},{"in":"query","name":"edgeCaseCatalog","schema":{"type":"string"}},{"in":"query","name":"acceptanceMethod","schema":{"type":"string"}},{"in":"query","name":"monitoringSignals","schema":{"type":"string"}},{"in":"query","name":"stopCriteria","schema":{"type":"string"}},{"in":"query","name":"rollbackPath","schema":{"type":"string"}},{"in":"query","name":"processOwner","schema":{"type":"string"}},{"in":"query","name":"operationsOwner","schema":{"type":"string"}},{"in":"query","name":"blockedDecision","schema":{"type":"string"}},{"in":"query","name":"missingEvidence","schema":{"type":"string"}},{"in":"query","name":"riskLevel","schema":{"type":"string"}},{"in":"query","name":"source","schema":{"type":"string"}},{"in":"query","name":"sourceRef","schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only automation-risk readiness evidence"}},"description":"Builds deterministic RPA / automation risk readiness from supplied process facts. The endpoint is read-only and does not run bots, trigger mass-runs, mutate workflows, create approvals, or call external systems."}},"/api/dashboard/redispatch-project-controlling-kpi-cockpit":{"get":{"summary":"Redispatch project-controlling KPI cockpit -- read-only evidence gate","tags":["Dashboard API"],"operationId":"dashboard_api_redispatchProjectControllingKpiCockpitStatus","parameters":[{"in":"query","name":"cockpitId","schema":{"type":"string"}},{"in":"query","name":"gridOperatorId","schema":{"type":"string"}},{"in":"query","name":"period","schema":{"type":"string"}},{"in":"query","name":"redispatchAuditId","schema":{"type":"string"}},{"in":"query","name":"settlementRef","schema":{"type":"string"}},{"in":"query","name":"vdmiProcessId","schema":{"type":"string"}},{"in":"query","name":"taskId","schema":{"type":"string"}},{"in":"query","name":"taskStatus","schema":{"type":"string"}},{"in":"query","name":"taskOwner","schema":{"type":"string"}},{"in":"query","name":"dueDate","schema":{"type":"string"}},{"in":"query","name":"blockedDecision","schema":{"type":"string"}},{"in":"query","name":"decisionBlocker","schema":{"type":"string"}},{"in":"query","name":"hasRedispatchAudit","schema":{"type":"string"}},{"in":"query","name":"hasAssetEvidence","schema":{"type":"string"}},{"in":"query","name":"hasMastrEvidence","schema":{"type":"string"}},{"in":"query","name":"hasLoadProfileEvidence","schema":{"type":"string"}},{"in":"query","name":"hasSettlementReadiness","schema":{"type":"string"}},{"in":"query","name":"hasKpiReference","schema":{"type":"string"}},{"in":"query","name":"datasourceHealth","schema":{"type":"string"}},{"in":"query","name":"sourceFreshness","schema":{"type":"string"}},{"in":"query","name":"qualityStatus","schema":{"type":"string"}},{"in":"query","name":"staleSources","schema":{"type":"string"}},{"in":"query","name":"tasks","schema":{"type":"string"}},{"in":"query","name":"kpiSignals","schema":{"type":"string"}},{"in":"query","name":"sourceHealth","schema":{"type":"string"}},{"in":"query","name":"affectedAssets","schema":{"type":"string"}},{"in":"query","name":"missingEvidence","schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only Redispatch project-controlling KPI evidence"}},"description":"Builds deterministic Redispatch project-controlling and KPI readiness from supplied facts and references. The endpoint is read-only and does not execute Redispatch orders, settlement, billing, task/workflow/HITL/VDMI mutation, datasource ingestion, asset mutation, or external calls."}},"/api/dashboard/stadtwerk-mauer-vdmi-profile":{"get":{"summary":"Stadtwerk Mauer VDMI profile -- read-only dossier-safe status","tags":["Dashboard API"],"operationId":"dashboard_api_stadtwerkMauerVdmiProfileStatus","parameters":[{"in":"query","name":"tenantId","schema":{"type":"string"}},{"in":"query","name":"includeRoles","schema":{"type":"string"}},{"in":"query","name":"includeEvidenceGaps","schema":{"type":"string"}},{"in":"query","name":"demoQuestion","schema":{"type":"string"}},{"in":"query","name":"focusSparte","schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only Stadtwerk Mauer VDMI/profile evidence"}},"description":"Returns the deterministic Stadtwerk Mauer MVP profile, sparten, VDMI roles, evidence gaps, and side-effect guards. The endpoint is read-only and does not create tenants, Eve agents, workflows, NOVA/VDMI/HITL objects, or external calls."}},"/api/dashboard/stadtwerk-mauer-capability-projection":{"get":{"summary":"Stadtwerk Mauer capability projection -- read-only role/VDMI view","tags":["Dashboard API"],"operationId":"dashboard_api_stadtwerkMauerCapabilityProjectionStatus","parameters":[{"in":"query","name":"tenantId","schema":{"type":"string"}},{"in":"query","name":"roles","schema":{"type":"string"}},{"in":"query","name":"includeConsequential","schema":{"type":"string"}},{"in":"query","name":"includeDescriptorSources","schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only Stadtwerk Mauer role/capability projection"}},"description":"Returns a deterministic role-scoped capability projection for Stadtwerk Mauer based on existing VDMI profile, catalog, hydration, and generated descriptor sources. The endpoint is read-only and does not create Eve agents, workflows, tasks, NOVA/VDMI/HITL objects, tenants, tokens, or external calls."}},"/api/dashboard/stadtwerk-mauer-event-replay-preview":{"get":{"summary":"Stadtwerk Mauer event replay preview -- read-only synthetic event catalog","tags":["Dashboard API"],"operationId":"dashboard_api_stadtwerkMauerEventReplayPreviewStatus","parameters":[{"in":"query","name":"tenantId","schema":{"type":"string"}},{"in":"query","name":"seed","schema":{"type":"string"}},{"in":"query","name":"count","schema":{"type":"string"}},{"in":"query","name":"eventType","schema":{"type":"string"}},{"in":"query","name":"sparte","schema":{"type":"string"}},{"in":"query","name":"marketRole","schema":{"type":"string"}},{"in":"query","name":"sourceActor","schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Read-only deterministic Stadtwerk Mauer event replay preview"}},"description":"Returns deterministic synthetic Stadtwerk Mauer event templates and replay envelopes. The endpoint is read-only and does not schedule, persist, inject, publish, execute, or externally send events."}},"/api/dashboard/market-snapshot":{"get":{"summary":"Market snapshot — current spot prices, CO₂ intensity, renewable forecast","tags":["Dashboard API"],"operationId":"dashboard_api_marketSnapshot","parameters":[{"name":"location","in":"query","required":false,"schema":{"type":"string","default":"Deutschland","example":"Heidelberg"},"description":"Location for CO₂ intensity lookup (default: Deutschland)"},{"name":"region","in":"query","required":false,"schema":{"type":"string","example":"Bayern"},"description":"Region for ENTSO-E wind/solar generation forecast. When omitted, renewableForecast24h is null and the ENTSO-E call is skipped."},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Current market snapshot","content":{"application/json":{"schema":{"type":"object","properties":{"spotPrice":{"type":"object","nullable":true,"properties":{"current":{"type":"number","description":"€/MWh","example":45.2},"avgToday":{"type":"number","description":"€/MWh"},"minToday":{"type":"number","description":"€/MWh"},"maxToday":{"type":"number","description":"€/MWh"},"trend":{"type":"string","enum":["rising","falling","stable"]},"source":{"type":"string","example":"netztransparenz"}}},"co2":{"type":"object","nullable":true,"properties":{"current":{"type":"number","description":"gCO2eq/kWh","example":380},"avgToday":{"type":"number"},"signal":{"type":"string","enum":["green","yellow","red"]},"location":{"type":"string","example":"Deutschland"}}},"renewableForecast24h":{"type":"object","nullable":true,"properties":{"solarPeakMW":{"type":"number","example":32500},"windPeakMW":{"type":"number","example":18200},"combinedPeakAt":{"type":"string","format":"date-time"}}},"timestamp":{"type":"string","format":"date-time"},"_errors":{"type":"array","items":{"type":"string"}}}}}}}},"description":"Aggregates current day-ahead spot prices, CO₂ intensity (with forecast), and wind/solar generation forecast for the next 24 hours into a single response.\n\nFixed upstream parameters: `market: day-ahead`, today's date, `forecastType: both`.\n\nOptional overrides:\n- `?location=Heidelberg` overrides the CO₂ intensity location (default: Deutschland)\n- `?region=Bayern` enables the ENTSO-E wind/solar forecast (region-specific); omit to skip — `renewableForecast24h` will be null when no region is given\n\nCache TTL: 15 minutes (key: location + region)."}},"/api/dashboard/quality-summary":{"get":{"summary":"Quality summary — recent reports from all agent pipelines","tags":["Dashboard API"],"operationId":"dashboard_api_qualitySummary","parameters":[{"name":"gridOperatorId","in":"query","required":false,"schema":{"type":"string","example":"SNB935578300972"},"description":"MaStR ID of the grid operator (SNB.../GNB...)"},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Quality summary across all agent pipelines","content":{"application/json":{"schema":{"type":"object","properties":{"agents":{"type":"array","description":"One entry per agent type","items":{"type":"object","properties":{"type":{"type":"string","example":"mastr-quality"},"label":{"type":"string","example":"MaStR Datenqualität"},"lastRun":{"type":"string","format":"date-time","nullable":true},"keyMetric":{"type":"object","nullable":true},"findingsCount":{"type":"object","nullable":true,"description":"Finding counts from latest report (null for agents without findings pattern)","properties":{"info":{"type":"integer","example":12},"warning":{"type":"integer","example":18},"error":{"type":"integer","example":5}}},"recentReports":{"type":"array"}}}},"businessKpis":{"type":"object","nullable":true,"description":"VDMI business KPIs for governance and process-standardisation impact","properties":{"vdmi_shadow_path_resolution_rate":{"type":"number","nullable":true,"description":"Resolved share (%) of VD_SHADOW_* and VD_SILO_* findings in the observed data"},"vdmi_n1_escalation_reduction_rate":{"type":"number","nullable":true,"description":"Reduction (%) of escalation-like VD_GOV_* findings comparing current vs previous 30-day window"},"vdmi_fnav_time_to_decision_gain_days":{"type":"number","nullable":true,"description":"Median decision-time gain in days for fNAV process matrices (previous window minus current window)"}}},"timestamp":{"type":"string","format":"date-time"},"_errors":{"type":"array","items":{"type":"string"}}}}}}}},"description":"Returns the five most recent reports from each of the five agent pipelines (MaStR Quality, Grid Connection, Energy Sharing, Redispatch Ex-Post, Energy Sharing Allocation), structured as an agent-type array with last-run timestamp, key metric, and report list.\n\nOptionally filtered by `gridOperatorId` (MaStR SNB/GNB ID). If omitted, returns the five most recent reports regardless of operator.\n\nCache TTL: 5 minutes (key: gridOperatorId)."}},"/api/dashboard/observability-mini":{"get":{"summary":"Observability mini dashboard — compact production feedback cards","tags":["Dashboard API"],"operationId":"dashboard_api_observabilityMini","parameters":[{"name":"sinceMinutes","in":"query","required":false,"schema":{"type":"integer","default":60,"minimum":1,"maximum":1440},"description":"Rolling observation window in minutes."},{"name":"slowActionThresholdMs","in":"query","required":false,"schema":{"type":"integer","default":1000,"minimum":1,"maximum":600000},"description":"Threshold used to classify actions as slow."},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Compact observability widget payload","content":{"application/json":{"schema":{"type":"object","properties":{"cards":{"type":"object"},"recentErrors":{"type":"array"},"slowestActions":{"type":"array"},"timestamp":{"type":"string","format":"date-time"},"_errors":{"type":"array","items":{"type":"string"}}}}}}}},"description":"Returns a compact operational payload from observability.summary with health, incidents, and performance cards plus recent errors and slowest actions. Optimized for dashboard widgets and agentic monitoring loops. Cache TTL: 60 seconds."}},"/api/dashboard/finding-codes":{"get":{"summary":"Finding codes reference — all 92 codes with metadata","tags":["Dashboard API"],"operationId":"dashboard_api_findingCodes","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Finding codes reference","content":{"application/json":{"schema":{"type":"object","properties":{"codes":{"type":"object","description":"Map of code → metadata","additionalProperties":{"type":"object","properties":{"severity":{"type":"string","enum":["info","warning","error"]},"agent":{"type":"string","example":"mastr-quality"},"step":{"type":"integer","example":4},"description":{"type":"string","description":"English description"},"descriptionDe":{"type":"string","description":"German description"}}}},"agents":{"type":"object","description":"Agent catalogue with version and step count"},"totalCodes":{"type":"integer","example":92}}}}}}},"description":"Returns the complete finding-code reference for all agent pipelines (Grid Connection v0.14, Energy Sharing v0.15, MaStR Quality v0.17, Redispatch Ex-Post v0.18). Each code entry contains: severity, agent, step, description (EN), descriptionDe (DE). Intended for UI tooltips, filter chips, and colour coding.\n\nCache TTL: 24 hours (static data — changes only on service restart)."}},"/api/znp/projects/:projectId/assumptions":{"post":{"summary":"Ingest a natural-language planning assumption into the graph (AI)","tags":["Zielnetzplanung (ZNP)"],"operationId":"znp_addAssumption","parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Assumption node inserted","content":{"application/json":{"schema":{"type":"object","properties":{"projectId":{"type":"string"},"assumptionId":{"type":"string"},"nodeKey":{"type":"string"},"extracted":{"type":"object"},"hasFlexibleNav":{"type":"boolean"},"graphStats":{"type":"object"}}}}}},"422":{"description":"HTTP 422 ASSUMPTION_EXTRACTION_FAILED — LLM could not extract valid capacity"},"503":{"description":"HTTP 503 LLM_NOT_CONFIGURED — GEMINI_API_KEY not set"}},"description":"Uses Gemini (structured JSON schema) to extract asset type, capacity (kW), status, and §14a flex-NAV flag from free-text German input. Inserts a StrategicAssumption node at layer=2.5 and a CONTRIBUTES_LOAD edge to SUB_1. In calculateGFactor, nodes with hasFlexibleNav=true are throttled to a realistic emergency minimum (legally curtailable under §14a EnWG — g=0.45). On success, backend emits `znp.project.updated` with payload { type: \"assumption-confirmed\", data: { id: \"<assumptionId>\", text: \"<originalText>\" } } for NovaFeedStore/SSE consumers. Requires GEMINI_API_KEY — returns HTTP 503 if not configured.","requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["text"],"properties":{"text":{"type":"string","example":"Wir planen einen 5 MW Speicher mit flexiblem NAV am Brückweg."},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"flexNav":{"value":{"text":"Wir planen einen 5 MW Speicher mit flexiblem NAV am Brückweg."}},"datacenter":{"value":{"text":"Ein neues Rechenzentrum mit 3000 kW Anschlussleistung ist im Gewerbegebiet Nord geplant."}}}}}}}},"/api/znp/projects/:projectId/nova/pending-decisions":{"get":{"summary":"List pending NOVA decisions (dynamic)","tags":["NOVA"],"operationId":"nova_pendingDecisions","parameters":[{"in":"query","name":"projectId","required":true,"schema":{"type":"string","example":"a1b2c3d4-0000-0000-0000-000000000001"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"Analyses the project graph and returns dynamic NOVA decisions using O/V heuristics (Q(U) optimization and rONT reinforcement)."}},"/api/znp/projects/:projectId/nova/apply/:id":{"post":{"summary":"Apply NOVA decision","tags":["NOVA"],"operationId":"nova_apply","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"Applies a dynamic NOVA decision to the in-memory ZNP graph, persists the update, and emits znp.project.updated for SSE consumers.","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","required":["projectId","id"],"properties":{"projectId":{"type":"string","example":"a1b2c3d4-0000-0000-0000-000000000001"},"id":{"type":"string","example":"dec_a1b2c3d4_SUB_1_QU"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"value":{"projectId":"a1b2c3d4-0000-0000-0000-000000000001","id":"dec_a1b2c3d4_SUB_1_QU"}}}}}}}},"/api/znp/projects/:projectId/nova/decisions":{"get":{"summary":"List NOVA decisions","tags":["NOVA"],"operationId":"nova_listDecisions","parameters":[{"in":"query","name":"projectId","required":true,"schema":{"type":"string","example":"a1b2c3d4-0000-0000-0000-000000000001"}},{"in":"query","name":"status","required":false,"schema":{"type":"string","example":"pending_approval"}},{"in":"query","name":"kind","required":false,"schema":{"type":"string","example":"threshold_update"}},{"in":"query","name":"limit","required":false,"schema":{"type":"integer","default":50}},{"in":"query","name":"cursor","required":false,"schema":{"type":"string","example":"eyJwaXZvdCI6Ii4uLiJ9"}},{"in":"query","name":"offset","required":false,"schema":{"type":"integer","default":0}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/znp/projects/:projectId/nova/decisions/stats":{"get":{"summary":"NOVA decision status counts","tags":["NOVA"],"operationId":"nova_decisionStats","parameters":[{"in":"query","name":"projectId","required":true,"schema":{"type":"string","example":"a1b2c3d4-0000-0000-0000-000000000001"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/znp/projects/:projectId/nova/decisions/:id":{"get":{"summary":"Get NOVA decision by id","tags":["NOVA"],"operationId":"nova_getDecision","parameters":[{"in":"query","name":"projectId","required":true,"schema":{"type":"string","example":"a1b2c3d4-0000-0000-0000-000000000001"}},{"in":"path","name":"id","required":true,"schema":{"type":"string","example":"dec_a1b2c3d4_SUB_1_QU"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/znp/projects/:projectId/nova/decisions/:id/approve":{"post":{"summary":"Approve NOVA decision","tags":["NOVA"],"operationId":"nova_approveDecision","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","required":["projectId","id"],"properties":{"projectId":{"type":"string","example":"a1b2c3d4-0000-0000-0000-000000000001"},"id":{"type":"string","example":"dec_a1b2c3d4_SUB_1_QU"},"comment":{"type":"string","example":"Approved via HITL"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"value":{"projectId":"a1b2c3d4-0000-0000-0000-000000000001","id":"dec_a1b2c3d4_SUB_1_QU","comment":"Approved via HITL"}}}}}}}},"/api/znp/projects/:projectId/nova/decisions/:id/reject":{"post":{"summary":"Reject NOVA decision","tags":["NOVA"],"operationId":"nova_rejectDecision","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","required":["projectId","id"],"properties":{"projectId":{"type":"string","example":"a1b2c3d4-0000-0000-0000-000000000001"},"id":{"type":"string","example":"dec_a1b2c3d4_SUB_1_QU"},"reason":{"type":"string","example":"Insufficient evidence"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"value":{"projectId":"a1b2c3d4-0000-0000-0000-000000000001","id":"dec_a1b2c3d4_SUB_1_QU","reason":"Insufficient evidence"}}}}}}}},"/api/znp/projects/:projectId/nova/decisions/:id/replay-trigger":{"post":{"summary":"Replay NOVA decision trigger source (async)","tags":["NOVA"],"operationId":"nova_replayTrigger","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"202":{"description":"Replay accepted as async job"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","required":["projectId","id"],"properties":{"projectId":{"type":"string","example":"a1b2c3d4-0000-0000-0000-000000000001"},"id":{"type":"string","example":"dec_a1b2c3d4_SUB_1_QU"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"value":{"projectId":"a1b2c3d4-0000-0000-0000-000000000001","id":"dec_a1b2c3d4_SUB_1_QU"}}}}}}}},"/api/admin/backup/snapshot":{"post":{"summary":"Create a full backup snapshot (all data stores)","tags":["Backup & Restore"],"operationId":"backup_orchestrator_snapshot","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Snapshot created with provenance hash","content":{"application/json":{"example":{"success":true,"snapshotId":"snap-abc123","label":"pre-cutover-hoeheinoed","provenanceHash":"sha256:...","createdAt":"2026-06-30T12:00:00.000Z","summary":{"energySharingDocs":42,"allocationDocs":12,"datapointDocs":5,"jobFiles":8,"tokensFile":true}}}}}},"description":"Creates a full-state snapshot of energy-sharing, allocation, datapoints, jobs, and token data. Returns a snapshotId with provenance hash for audit trail (EU AI Act Art. 12). Sub-Track G v0.47.0 — Rollback-Plan mit Full-Restore-Orchestrierung.","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"label":{"type":"string","description":"Human-readable label for this snapshot","example":"pre-cutover-hoeheinoed-2026-06-30"},"tenantId":{"type":"string","description":"Optional: scope snapshot to a specific tenant (exports only tenant docs)","example":"hoeheinoed"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"summary":"Pre-cutover snapshot","value":{"label":"pre-cutover-hoeheinoed-2026-06-30","tenantId":"hoeheinoed"}}}}}}}},"/api/admin/backup/restore":{"post":{"summary":"Restore all data stores from a backup snapshot","tags":["Backup & Restore"],"operationId":"backup_orchestrator_restore","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Restore completed with counts of restored/skipped docs"},"400":{"description":"confirm=false or snapshot not found"}},"description":"Restores energy-sharing, allocation, datapoints, jobs, and token data from a snapshot. DESTRUCTIVE — requires confirm=true. Missing docs are restored; existing docs are skipped (additive). Sub-Track G v0.47.0 — Rollback-Plan mit Full-Restore-Orchestrierung.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["snapshotId"],"properties":{"snapshotId":{"type":"string","example":"snap-abc123"},"confirm":{"type":"boolean","default":false,"description":"Must be true to execute restore (safety gate)"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"summary":"Restore from snapshot with confirmation","value":{"snapshotId":"snap-abc123","confirm":true}}}}}}}},"/api/admin/backup/snapshots":{"get":{"summary":"List available backup snapshots","tags":["Backup & Restore"],"operationId":"backup_orchestrator_list","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"List of snapshot manifests","content":{"application/json":{"example":{"success":true,"snapshots":[{"snapshotId":"snap-abc123","label":"pre-cutover","createdAt":"2026-06-30T12:00:00.000Z","provenanceHash":"sha256:..."}],"count":1}}}}}}},"/api/admin/backup/snapshots/:snapshotId":{"get":{"summary":"Get backup snapshot manifest by ID","tags":["Backup & Restore"],"operationId":"backup_orchestrator_get","parameters":[{"name":"snapshotId","in":"path","required":true,"schema":{"type":"string","example":"snap-abc123"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Snapshot manifest"},"404":{"description":"Snapshot not found"}}},"delete":{"summary":"Delete a backup snapshot","tags":["Backup & Restore"],"operationId":"backup_orchestrator_delete","parameters":[{"name":"snapshotId","in":"path","required":true,"schema":{"type":"string","example":"snap-abc123"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Snapshot deleted"},"404":{"description":"Snapshot not found"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}}}}}}},"/api/objects/:namespace/query":{"post":{"summary":"Query documents in a namespace (Mango selector)","tags":["Object Store"],"operationId":"object_store_query","parameters":[{"name":"namespace","in":"path","required":true,"schema":{"type":"string","example":"znp_projects"},"description":"Namespace to search within."},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Query results","content":{"application/json":{"schema":{"type":"object","properties":{"docs":{"type":"array","items":{"type":"object","properties":{"namespace":{"type":"string","example":"znp_projects"},"key":{"type":"string","example":"a1b2c3d4"},"payload":{"type":"object"},"createdAt":{"type":"string","example":"2026-04-06T12:00:00.000Z"},"updatedAt":{"type":"string","example":"2026-04-06T12:00:00.000Z"}}}},"totalDocs":{"type":"integer","example":3}}}}}}},"description":"Searches for documents within a namespace using PouchDB Mango query syntax. The `ns` namespace guard is injected automatically into every selector — callers cannot escape their namespace. Use dotted paths to filter on payload fields: `{ \"payload.status\": \"active\" }`.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"selector":{"type":"object","example":{"payload.status":"active"},"description":"Mango selector for payload fields (namespace guard injected automatically)."},"limit":{"type":"integer","default":50,"maximum":1000,"example":50,"description":"Maximum results to return (1–1000)."},"skip":{"type":"integer","default":0,"example":0,"description":"Number of documents to skip (for pagination)."},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"value":{"selector":{"payload.status":"active"},"limit":10}}}}}}}},"/api/objects/:namespace/:key":{"get":{"summary":"Get a document from the Object Store","tags":["Object Store"],"operationId":"object_store_get","parameters":[{"name":"namespace","in":"path","required":true,"schema":{"type":"string","example":"znp_projects"},"description":"Logical namespace (lowercase letter start, underscores allowed, 1–64 chars)."},{"name":"key","in":"path","required":true,"schema":{"type":"string","example":"a1b2c3d4"},"description":"Unique document key within the namespace (1–256 non-whitespace chars)."},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Document found","content":{"application/json":{"schema":{"type":"object","properties":{"namespace":{"type":"string","example":"znp_projects"},"key":{"type":"string","example":"a1b2c3d4"},"payload":{"type":"object","example":{"name":"My Project"}},"_rev":{"type":"string","example":"2-4f8a63d0f9c94d97a0b5b6f8cdef1234","description":"Current PouchDB document revision for CAS updates."},"createdAt":{"type":"string","example":"2026-04-06T12:00:00.000Z"},"updatedAt":{"type":"string","example":"2026-04-06T12:00:00.000Z"}}}}}}},"description":"Retrieves a single document by namespace and key. Returns the stored JSON payload together with namespace, key, createdAt, and updatedAt."},"put":{"summary":"Create or update a document in the Object Store (upsert)","tags":["Object Store"],"operationId":"object_store_put","parameters":[{"name":"namespace","in":"path","required":true,"schema":{"type":"string","example":"znp_projects"}},{"name":"key","in":"path","required":true,"schema":{"type":"string","example":"a1b2c3d4"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Document created or updated","content":{"application/json":{"schema":{"type":"object","properties":{"namespace":{"type":"string","example":"znp_projects"},"key":{"type":"string","example":"a1b2c3d4"},"payload":{"type":"object","example":{"name":"My Project"}},"_rev":{"type":"string","example":"2-4f8a63d0f9c94d97a0b5b6f8cdef1234","description":"Current PouchDB document revision after upsert."},"createdAt":{"type":"string","example":"2026-04-06T12:00:00.000Z"},"updatedAt":{"type":"string","example":"2026-04-06T12:00:00.000Z"}}}}}}},"description":"Upserts a document identified by namespace + key. On update the payload is fully replaced and updatedAt is refreshed; createdAt is preserved. Optional CAS: callers may pass _rev. On revision mismatch, the action returns HTTP 409 OBJECT_OCC_CONFLICT.","requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["payload"],"properties":{"payload":{"type":"object","description":"Arbitrary JSON payload to store.","example":{"name":"My Project","status":"active"}},"_rev":{"type":"string","nullable":true,"description":"Optional PouchDB revision for CAS updates. Use null for create-if-not-exists CAS semantics.","example":"2-4f8a63d0f9c94d97a0b5b6f8cdef1234"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"value":{"payload":{"name":"My Project","status":"active"}}}}}}}},"delete":{"summary":"Delete a document from the Object Store","tags":["Object Store"],"operationId":"object_store_delete","parameters":[{"name":"namespace","in":"path","required":true,"schema":{"type":"string","example":"znp_projects"}},{"name":"key","in":"path","required":true,"schema":{"type":"string","example":"a1b2c3d4"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Document deleted","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":true},"namespace":{"type":"string","example":"znp_projects"},"key":{"type":"string","example":"a1b2c3d4"}}}}}}},"description":"Permanently removes a document. Returns 404 OBJECT_NOT_FOUND if the document does not exist.","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}}}}}}},"/api/_agent/capabilities":{"get":{"summary":"List capability-broker catalog entries","tags":["Agent Manifest"],"operationId":"agent_manifest_listCapabilities","parameters":[{"name":"domain","in":"query","required":false,"schema":{"type":"string","example":"redispatch"},"description":"Filter by canonical manifest domain (see llm.txt RESOLUTION PROTOCOL)."},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"Resolves capability ids referenced in the llm.txt cluster manifest to their full routing metadata."}},"/api/_agent/capabilities/:name":{"get":{"summary":"Get a single capability-broker catalog entry","tags":["Agent Manifest"],"operationId":"agent_manifest_getCapability","parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string","example":"redispatch_asset_register"},"description":"Capability id (CURATED_CAPABILITIES[].capability)."},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"Returns one capability by id including preferredActions, requiredInputs, and risksAndNotes."}},"/api/_agent/operations":{"get":{"summary":"List deduplicated OpenAPI operations, optionally filtered by manifest domain","tags":["Agent Manifest"],"operationId":"agent_manifest_listOperations","parameters":[{"name":"domain","in":"query","required":false,"schema":{"type":"string","example":"redispatch"},"description":"Canonical manifest domain (see llm.txt RESOLUTION PROTOCOL). Omit to list all domains."},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"Resolves a domain cluster from the llm.txt manifest to its operation slice. Operations sharing an operationId across multiple paths are merged into one canonical entry with an aliases list."}},"/api/agent-personas":{"get":{"summary":"List actor personas","tags":["Actor Personas"],"operationId":"agent_persona_list","parameters":[{"name":"X-Tenant-Id","in":"header","required":false,"description":"Tenant scope for the actor persona registry. The API gateway injects the resolved tenant into action params as tenantId.","schema":{"type":"string"}},{"name":"tenantId","in":"query","required":false,"description":"Optional tenant fallback when the X-Tenant-Id header is not provided.","schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","required":["success","tenantId","count","items"],"properties":{"success":{"type":"boolean","example":true},"tenantId":{"type":"string","example":"tenant-a"},"count":{"type":"integer","example":1},"items":{"type":"array","items":{"type":"object","required":["tenantId","id","personaName","personaType","assignedRoles","communicationChannels","status","createdAt","updatedAt"],"properties":{"tenantId":{"type":"string","example":"tenant-a"},"id":{"type":"string","example":"thorsten-human"},"personaName":{"type":"string","example":"Thorsten Zoerner"},"personaType":{"type":"string","enum":["human","specialized-agent"],"example":"human"},"openclawUserId":{"type":"string","example":"openclaw-123","nullable":true},"assignedRoles":{"type":"array","items":{"type":"string"},"example":["billing@stadtwerk","management"]},"communicationChannels":{"type":"array","items":{"type":"object","required":["type","address"],"properties":{"type":{"type":"string","enum":["email","telegram","signal","openclaw-chat"],"example":"email"},"address":{"type":"string","example":"thorsten@example.com"}}}},"defaultPersonalAgentSessionId":{"type":"string","example":"pa_12345678","nullable":true},"status":{"type":"string","enum":["active","inactive","on-leave"],"example":"active"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"roleIds":{"type":"array","items":{"type":"string"},"nullable":true,"example":["grid_planner"]},"contextAffinities":{"type":"object","nullable":true,"example":{"workflowTypes":["grid_connection_validation"],"domainIntents":["grid_planning"]}},"handoffTargets":{"type":"array","items":{"type":"string"},"nullable":true,"example":["governance-reviewer-agent"]},"resolutionPolicy":{"type":"object","nullable":true,"example":{"mode":"auto","priority":1}}}}}}}}}}},"description":"Lists all actor personas for the resolved tenant scope."},"post":{"summary":"Create an actor persona","tags":["Actor Personas"],"operationId":"agent_persona_create","parameters":[{"name":"X-Tenant-Id","in":"header","required":false,"description":"Tenant scope for the actor persona registry. The API gateway injects the resolved tenant into action params as tenantId.","schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","required":["success","item"],"properties":{"success":{"type":"boolean","example":true},"item":{"type":"object","required":["tenantId","id","personaName","personaType","assignedRoles","communicationChannels","status","createdAt","updatedAt"],"properties":{"tenantId":{"type":"string","example":"tenant-a"},"id":{"type":"string","example":"thorsten-human"},"personaName":{"type":"string","example":"Thorsten Zoerner"},"personaType":{"type":"string","enum":["human","specialized-agent"],"example":"human"},"openclawUserId":{"type":"string","example":"openclaw-123","nullable":true},"assignedRoles":{"type":"array","items":{"type":"string"},"example":["billing@stadtwerk","management"]},"communicationChannels":{"type":"array","items":{"type":"object","required":["type","address"],"properties":{"type":{"type":"string","enum":["email","telegram","signal","openclaw-chat"],"example":"email"},"address":{"type":"string","example":"thorsten@example.com"}}}},"defaultPersonalAgentSessionId":{"type":"string","example":"pa_12345678","nullable":true},"status":{"type":"string","enum":["active","inactive","on-leave"],"example":"active"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"roleIds":{"type":"array","items":{"type":"string"},"nullable":true,"example":["grid_planner"]},"contextAffinities":{"type":"object","nullable":true,"example":{"workflowTypes":["grid_connection_validation"],"domainIntents":["grid_planning"]}},"handoffTargets":{"type":"array","items":{"type":"string"},"nullable":true,"example":["governance-reviewer-agent"]},"resolutionPolicy":{"type":"object","nullable":true,"example":{"mode":"auto","priority":1}}}}}}}}}},"description":"Creates a tenant-scoped actor persona for HITL routing, notification delivery, and persona inbox resolution.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["id","personaName","personaType"],"properties":{"id":{"type":"string","example":"thorsten-human"},"personaName":{"type":"string","example":"Thorsten Zoerner"},"personaType":{"type":"string","enum":["human","specialized-agent"],"example":"human"},"openclawUserId":{"type":"string","example":"openclaw-123","nullable":true},"assignedRoles":{"type":"array","items":{"type":"string"},"example":["billing@stadtwerk"]},"communicationChannels":{"type":"array","items":{"type":"object","required":["type","address"],"properties":{"type":{"type":"string","enum":["email","telegram","signal","openclaw-chat"],"example":"email"},"address":{"type":"string","example":"thorsten@example.com"}}}},"defaultPersonalAgentSessionId":{"type":"string","example":"pa_12345678","nullable":true},"status":{"type":"string","enum":["active","inactive","on-leave"],"example":"active"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}}}}}}},"/api/agent-personas/by-role/:role":{"get":{"summary":"List actor personas by role","tags":["Actor Personas"],"operationId":"agent_persona_listByRole","parameters":[{"name":"X-Tenant-Id","in":"header","required":false,"description":"Tenant scope for the actor persona registry. The API gateway injects the resolved tenant into action params as tenantId.","schema":{"type":"string"}},{"name":"tenantId","in":"query","required":false,"description":"Optional tenant fallback when the X-Tenant-Id header is not provided.","schema":{"type":"string"}},{"name":"role","in":"path","required":true,"description":"Assigned role to resolve within the tenant persona registry.","schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","required":["success","tenantId","role","count","items"],"properties":{"success":{"type":"boolean","example":true},"tenantId":{"type":"string","example":"tenant-a"},"count":{"type":"integer","example":1},"items":{"type":"array","items":{"type":"object","required":["tenantId","id","personaName","personaType","assignedRoles","communicationChannels","status","createdAt","updatedAt"],"properties":{"tenantId":{"type":"string","example":"tenant-a"},"id":{"type":"string","example":"thorsten-human"},"personaName":{"type":"string","example":"Thorsten Zoerner"},"personaType":{"type":"string","enum":["human","specialized-agent"],"example":"human"},"openclawUserId":{"type":"string","example":"openclaw-123","nullable":true},"assignedRoles":{"type":"array","items":{"type":"string"},"example":["billing@stadtwerk","management"]},"communicationChannels":{"type":"array","items":{"type":"object","required":["type","address"],"properties":{"type":{"type":"string","enum":["email","telegram","signal","openclaw-chat"],"example":"email"},"address":{"type":"string","example":"thorsten@example.com"}}}},"defaultPersonalAgentSessionId":{"type":"string","example":"pa_12345678","nullable":true},"status":{"type":"string","enum":["active","inactive","on-leave"],"example":"active"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"roleIds":{"type":"array","items":{"type":"string"},"nullable":true,"example":["grid_planner"]},"contextAffinities":{"type":"object","nullable":true,"example":{"workflowTypes":["grid_connection_validation"],"domainIntents":["grid_planning"]}},"handoffTargets":{"type":"array","items":{"type":"string"},"nullable":true,"example":["governance-reviewer-agent"]},"resolutionPolicy":{"type":"object","nullable":true,"example":{"mode":"auto","priority":1}}}}},"role":{"type":"string","example":"billing@stadtwerk"}}}}}}},"description":"Lists all active actor personas matching one role inside the resolved tenant scope."}},"/api/agent-personas/resolve-by-role/:role":{"get":{"summary":"Resolve actor personas by role","tags":["Actor Personas"],"operationId":"agent_persona_resolveByRole","parameters":[{"name":"X-Tenant-Id","in":"header","required":false,"description":"Tenant scope for the actor persona registry. The API gateway injects the resolved tenant into action params as tenantId.","schema":{"type":"string"}},{"name":"tenantId","in":"query","required":false,"description":"Optional tenant fallback when the X-Tenant-Id header is not provided.","schema":{"type":"string"}},{"name":"role","in":"path","required":true,"description":"Assigned role to resolve within the tenant persona registry.","schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","required":["success","tenantId","role","count","items"],"properties":{"success":{"type":"boolean","example":true},"tenantId":{"type":"string","example":"tenant-a"},"count":{"type":"integer","example":1},"items":{"type":"array","items":{"type":"object","required":["tenantId","id","personaName","personaType","assignedRoles","communicationChannels","status","createdAt","updatedAt"],"properties":{"tenantId":{"type":"string","example":"tenant-a"},"id":{"type":"string","example":"thorsten-human"},"personaName":{"type":"string","example":"Thorsten Zoerner"},"personaType":{"type":"string","enum":["human","specialized-agent"],"example":"human"},"openclawUserId":{"type":"string","example":"openclaw-123","nullable":true},"assignedRoles":{"type":"array","items":{"type":"string"},"example":["billing@stadtwerk","management"]},"communicationChannels":{"type":"array","items":{"type":"object","required":["type","address"],"properties":{"type":{"type":"string","enum":["email","telegram","signal","openclaw-chat"],"example":"email"},"address":{"type":"string","example":"thorsten@example.com"}}}},"defaultPersonalAgentSessionId":{"type":"string","example":"pa_12345678","nullable":true},"status":{"type":"string","enum":["active","inactive","on-leave"],"example":"active"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"roleIds":{"type":"array","items":{"type":"string"},"nullable":true,"example":["grid_planner"]},"contextAffinities":{"type":"object","nullable":true,"example":{"workflowTypes":["grid_connection_validation"],"domainIntents":["grid_planning"]}},"handoffTargets":{"type":"array","items":{"type":"string"},"nullable":true,"example":["governance-reviewer-agent"]},"resolutionPolicy":{"type":"object","nullable":true,"example":{"mode":"auto","priority":1}}}}},"role":{"type":"string","example":"billing@stadtwerk"}}}}}}},"description":"Returns active actor personas for one role in deterministic name/id order for the resolved tenant scope."}},"/api/agent-personas/seed-operational-defaults":{"post":{"summary":"Seed EVU operational default personas","tags":["Actor Personas"],"operationId":"agent_persona_seedOperationalDefaults","parameters":[{"name":"X-Tenant-Id","in":"header","required":false,"description":"Tenant scope for the actor persona registry. The API gateway injects the resolved tenant into action params as tenantId.","schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Seed result","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":true},"tenantId":{"type":"string","example":"tenant-heidelberg"},"created":{"type":"array","items":{"type":"string"},"example":["customer-service","edm"]},"skipped":{"type":"array","items":{"type":"string"},"example":["billing"]}}}}}}},"description":"Idempotently creates default specialized-agent personas for the given EVU operational roles (customer-service, edm, billing, …). Existing personas are skipped unless overwrite:true is set. Returns lists of created and skipped role keys.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"roles":{"type":"array","items":{"type":"string"},"description":"Subset of EVU role keys to seed. Omit to seed all 16 roles.","example":["customer-service","edm","billing"]},"overwrite":{"type":"boolean","default":false,"description":"Replace existing personas from catalog defaults when true."},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}}}}}}},"/api/agent-personas/:id":{"get":{"summary":"Get an actor persona","tags":["Actor Personas"],"operationId":"agent_persona_get","parameters":[{"name":"X-Tenant-Id","in":"header","required":false,"description":"Tenant scope for the actor persona registry. The API gateway injects the resolved tenant into action params as tenantId.","schema":{"type":"string"}},{"name":"tenantId","in":"query","required":false,"description":"Optional tenant fallback when the X-Tenant-Id header is not provided.","schema":{"type":"string"}},{"name":"id","in":"path","required":true,"description":"Persona identifier within the tenant.","schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","required":["success","item"],"properties":{"success":{"type":"boolean","example":true},"item":{"type":"object","required":["tenantId","id","personaName","personaType","assignedRoles","communicationChannels","status","createdAt","updatedAt"],"properties":{"tenantId":{"type":"string","example":"tenant-a"},"id":{"type":"string","example":"thorsten-human"},"personaName":{"type":"string","example":"Thorsten Zoerner"},"personaType":{"type":"string","enum":["human","specialized-agent"],"example":"human"},"openclawUserId":{"type":"string","example":"openclaw-123","nullable":true},"assignedRoles":{"type":"array","items":{"type":"string"},"example":["billing@stadtwerk","management"]},"communicationChannels":{"type":"array","items":{"type":"object","required":["type","address"],"properties":{"type":{"type":"string","enum":["email","telegram","signal","openclaw-chat"],"example":"email"},"address":{"type":"string","example":"thorsten@example.com"}}}},"defaultPersonalAgentSessionId":{"type":"string","example":"pa_12345678","nullable":true},"status":{"type":"string","enum":["active","inactive","on-leave"],"example":"active"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"roleIds":{"type":"array","items":{"type":"string"},"nullable":true,"example":["grid_planner"]},"contextAffinities":{"type":"object","nullable":true,"example":{"workflowTypes":["grid_connection_validation"],"domainIntents":["grid_planning"]}},"handoffTargets":{"type":"array","items":{"type":"string"},"nullable":true,"example":["governance-reviewer-agent"]},"resolutionPolicy":{"type":"object","nullable":true,"example":{"mode":"auto","priority":1}}}}}}}}}},"description":"Returns one actor persona by id within the resolved tenant scope."},"put":{"summary":"Update an actor persona","tags":["Actor Personas"],"operationId":"agent_persona_update","parameters":[{"name":"X-Tenant-Id","in":"header","required":false,"description":"Tenant scope for the actor persona registry. The API gateway injects the resolved tenant into action params as tenantId.","schema":{"type":"string"}},{"name":"tenantId","in":"query","required":false,"description":"Optional tenant fallback when the X-Tenant-Id header is not provided.","schema":{"type":"string"}},{"name":"id","in":"path","required":true,"description":"Persona identifier within the tenant.","schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","required":["success","item"],"properties":{"success":{"type":"boolean","example":true},"item":{"type":"object","required":["tenantId","id","personaName","personaType","assignedRoles","communicationChannels","status","createdAt","updatedAt"],"properties":{"tenantId":{"type":"string","example":"tenant-a"},"id":{"type":"string","example":"thorsten-human"},"personaName":{"type":"string","example":"Thorsten Zoerner"},"personaType":{"type":"string","enum":["human","specialized-agent"],"example":"human"},"openclawUserId":{"type":"string","example":"openclaw-123","nullable":true},"assignedRoles":{"type":"array","items":{"type":"string"},"example":["billing@stadtwerk","management"]},"communicationChannels":{"type":"array","items":{"type":"object","required":["type","address"],"properties":{"type":{"type":"string","enum":["email","telegram","signal","openclaw-chat"],"example":"email"},"address":{"type":"string","example":"thorsten@example.com"}}}},"defaultPersonalAgentSessionId":{"type":"string","example":"pa_12345678","nullable":true},"status":{"type":"string","enum":["active","inactive","on-leave"],"example":"active"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"roleIds":{"type":"array","items":{"type":"string"},"nullable":true,"example":["grid_planner"]},"contextAffinities":{"type":"object","nullable":true,"example":{"workflowTypes":["grid_connection_validation"],"domainIntents":["grid_planning"]}},"handoffTargets":{"type":"array","items":{"type":"string"},"nullable":true,"example":["governance-reviewer-agent"]},"resolutionPolicy":{"type":"object","nullable":true,"example":{"mode":"auto","priority":1}}}}}}}}}},"description":"Updates one actor persona within the resolved tenant scope.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"personaName":{"type":"string","example":"Thorsten Z."},"personaType":{"type":"string","enum":["human","specialized-agent"],"example":"human"},"openclawUserId":{"type":"string","example":"openclaw-123","nullable":true},"assignedRoles":{"type":"array","items":{"type":"string"},"example":["billing@stadtwerk"]},"communicationChannels":{"type":"array","items":{"type":"object","required":["type","address"],"properties":{"type":{"type":"string","enum":["email","telegram","signal","openclaw-chat"],"example":"email"},"address":{"type":"string","example":"thorsten@example.com"}}}},"defaultPersonalAgentSessionId":{"type":"string","example":"pa_12345678","nullable":true},"status":{"type":"string","enum":["active","inactive","on-leave"],"example":"active"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}}}}}},"delete":{"summary":"Deactivate an actor persona","tags":["Actor Personas"],"operationId":"agent_persona_remove","parameters":[{"name":"X-Tenant-Id","in":"header","required":false,"description":"Tenant scope for the actor persona registry. The API gateway injects the resolved tenant into action params as tenantId.","schema":{"type":"string"}},{"name":"tenantId","in":"query","required":false,"description":"Optional tenant fallback when the X-Tenant-Id header is not provided.","schema":{"type":"string"}},{"name":"id","in":"path","required":true,"description":"Persona identifier within the tenant.","schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","required":["success","item"],"properties":{"success":{"type":"boolean","example":true},"item":{"type":"object","required":["tenantId","id","personaName","personaType","assignedRoles","communicationChannels","status","createdAt","updatedAt"],"properties":{"tenantId":{"type":"string","example":"tenant-a"},"id":{"type":"string","example":"thorsten-human"},"personaName":{"type":"string","example":"Thorsten Zoerner"},"personaType":{"type":"string","enum":["human","specialized-agent"],"example":"human"},"openclawUserId":{"type":"string","example":"openclaw-123","nullable":true},"assignedRoles":{"type":"array","items":{"type":"string"},"example":["billing@stadtwerk","management"]},"communicationChannels":{"type":"array","items":{"type":"object","required":["type","address"],"properties":{"type":{"type":"string","enum":["email","telegram","signal","openclaw-chat"],"example":"email"},"address":{"type":"string","example":"thorsten@example.com"}}}},"defaultPersonalAgentSessionId":{"type":"string","example":"pa_12345678","nullable":true},"status":{"type":"string","enum":["active","inactive","on-leave"],"example":"active"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"roleIds":{"type":"array","items":{"type":"string"},"nullable":true,"example":["grid_planner"]},"contextAffinities":{"type":"object","nullable":true,"example":{"workflowTypes":["grid_connection_validation"],"domainIntents":["grid_planning"]}},"handoffTargets":{"type":"array","items":{"type":"string"},"nullable":true,"example":["governance-reviewer-agent"]},"resolutionPolicy":{"type":"object","nullable":true,"example":{"mode":"auto","priority":1}}}}}}}}}},"description":"Soft-deactivates an actor persona within the resolved tenant scope while preserving the record for auditability.","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}}}}}}},"/api/mscons/parse":{"post":{"summary":"Parse MSCONS EDIFACT message (no import, read-only)","tags":["EDM (Energiedatenmanagement)"],"operationId":"mscons_import_parse","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Parsed MSCONS result"}},"description":"Parses a MSCONS EDIFACT message and returns structured data without importing into EDM. Use for preview/validation.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"type":"string","example":"UNH+1+MSCONS:D:04B:UN:2.3e'..."},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"value":{"data":"UNH+1+MSCONS:D:04B:UN:2.3e'BGM+7+DOC1+9'..."}}}}}}}},"/api/mscons/import":{"post":{"summary":"Import MSCONS EDIFACT message into EDM","tags":["EDM (Energiedatenmanagement)"],"operationId":"mscons_import_import","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"MSCONS import result"}},"description":"Parses MSCONS, creates MeLos if needed, imports timeseries into EDM SQLite. Fully offline — no external dependencies (KRITIS-compliant).","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"type":"string","example":"UNH+1+MSCONS:D:04B:UN:2.3e'..."},"autoCreateMelo":{"type":"boolean","default":true},"overwriteExisting":{"type":"boolean","default":false},"validateOnImport":{"type":"boolean","default":true},"gridOperatorMastrId":{"type":"string","example":"SNB961471621746"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"value":{"data":"UNH+1+MSCONS:D:04B:UN:2.3e'BGM+7+DOC1+9'...","autoCreateMelo":true,"overwriteExisting":false,"validateOnImport":true,"gridOperatorMastrId":"SNB961471621746"}}}}}}}},"/api/mscons/imports":{"get":{"summary":"List imported MSCONS MeLos","tags":["EDM (Energiedatenmanagement)"],"operationId":"mscons_import_listImports","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"List of imported MeLos"}}}},"/api/edm/messkonzepte/evaluate-all":{"post":{"summary":"edm-messkonzept.evaluate-all","tags":["edm-messkonzept"],"operationId":"edm_messkonzept_evaluate_all","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}}}}}}},"/api/edm/messkonzepte/:id/evaluate":{"post":{"summary":"Evaluate a measurement concept","tags":["EDM Messkonzept"],"operationId":"edm_messkonzept_evaluate","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Result"},"404":{"description":"Not found"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["id","from","to"],"properties":{"id":{"type":"string","example":"mk-sum-001"},"from":{"type":"string","example":"2026-04-20T00:00:00.000Z"},"to":{"type":"string","example":"2026-04-20T12:00:00.000Z"},"writeOutput":{"type":"boolean","default":true},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"value":{"id":"mk-sum-001","from":"2026-04-20T00:00:00.000Z","to":"2026-04-20T12:00:00.000Z","writeOutput":true}}}}}}}},"/api/edm/messkonzepte":{"post":{"summary":"Create a measurement concept","tags":["EDM Messkonzept"],"operationId":"edm_messkonzept_create","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Created"},"409":{"description":"Exists"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["id","name","type"],"properties":{"id":{"type":"string","example":"mk-sum-001"},"name":{"type":"string","example":"Total Production"},"type":{"type":"string","example":"SUM"},"formula":{"type":"string","example":"v0 + v1"},"inputs":{"type":"array","items":{"type":"object"},"example":[{"ref":"v0","meloId":"melo-solar","obis":"1-0:1.8.0"}]},"outputMeloId":{"type":"string","example":"melo-sum-out"},"outputObis":{"type":"string","example":"1-0:1.8.0"},"schedule":{"type":"string","example":"on_input_change"},"validSince":{"type":"string","example":"2026-04-01T00:00:00.000Z"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"value":{"id":"mk-sum-001","name":"Total Production","type":"SUM","formula":"v0 + v1","inputs":[{"ref":"v0","meloId":"melo-solar","obis":"1-0:1.8.0"},{"ref":"v1","meloId":"melo-wind","obis":"1-0:1.8.0"}],"outputMeloId":"melo-sum-out","outputObis":"1-0:1.8.0","schedule":"on_input_change"}}}}}}},"get":{"summary":"List all measurement concepts","tags":["EDM Messkonzept"],"operationId":"edm_messkonzept_list","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"List"}}}},"/api/edm/messkonzepte/:id":{"get":{"summary":"Get a measurement concept","tags":["EDM Messkonzept"],"operationId":"edm_messkonzept_get","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","example":"mk-sum-001"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Found"},"404":{"description":"Not found"}}},"delete":{"summary":"Delete a measurement concept","tags":["EDM Messkonzept"],"operationId":"edm_messkonzept_delete","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Deleted"},"404":{"description":"Not found"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}}},"/api/edm/validate":{"post":{"summary":"Validate timeseries data and optionally auto-fix gaps","tags":["EDM (Energiedatenmanagement)"],"operationId":"edm_validation_validate","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"Runs validation rules against a timeseries range. Returns findings per rule with severity. If autoFix=true, generates replacement values for gaps and writes them to EDM.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["meloId","from","to"],"properties":{"meloId":{"type":"string","example":"DE0012345678901234567890123456789"},"obis":{"type":"string","default":"1-0:1.8.0"},"from":{"type":"string","example":"2026-04-01T00:00:00.000Z"},"to":{"type":"string","example":"2026-04-01T23:59:59.000Z"},"rules":{"type":"array","items":{"type":"string"},"example":["GAP_DETECTION"]},"capacityKw":{"type":"number","example":10},"autoFix":{"type":"boolean","default":false},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"value":{"meloId":"DE0012345678901234567890123456789","obis":"1-0:2.8.0","from":"2026-04-01T00:00:00.000Z","to":"2026-04-01T23:59:59.000Z","rules":["BANDWIDTH_CHECK","GAP_DETECTION"],"capacityKw":10,"autoFix":false}}}}}}}},"/api/edm/validate/rules":{"get":{"summary":"List available EDM validation rules","tags":["EDM (Energiedatenmanagement)"],"operationId":"edm_validation_listRules","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/edm/validate/:meloId/report":{"get":{"summary":"Get validation report for a timeseries range","tags":["EDM (Energiedatenmanagement)"],"operationId":"edm_validation_getReport","parameters":[{"name":"meloId","in":"path","required":true,"schema":{"type":"string","example":"DE0012345678901234567890123456789"}},{"name":"obis","in":"query","required":false,"schema":{"type":"string","default":"1-0:1.8.0"}},{"name":"from","in":"query","required":true,"schema":{"type":"string","example":"2026-04-01T00:00:00.000Z"}},{"name":"to","in":"query","required":true,"schema":{"type":"string","example":"2026-04-01T23:59:59.000Z"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/edm/validate/:meloId/fill-gaps":{"post":{"summary":"Fill gaps in timeseries with replacement values","tags":["EDM (Energiedatenmanagement)"],"operationId":"edm_validation_fillGaps","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["meloId","from","to"],"properties":{"meloId":{"type":"string","example":"DE0012345678901234567890123456789"},"obis":{"type":"string","default":"1-0:1.8.0"},"from":{"type":"string","example":"2026-04-01T00:00:00.000Z"},"to":{"type":"string","example":"2026-04-01T23:59:59.000Z"},"method":{"type":"string","enum":["interpolate","previous_day","slp","auto"],"default":"auto"},"slpProfileId":{"type":"string","default":"H0"},"annualConsumptionKwh":{"type":"number","example":3500},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"value":{"meloId":"DE0012345678901234567890123456789","obis":"1-0:2.8.0","from":"2026-04-01T00:00:00.000Z","to":"2026-04-01T23:59:59.000Z","method":"auto","slpProfileId":"H0","annualConsumptionKwh":3500}}}}}}}},"/api/edm/virtual/populate-slp":{"post":{"summary":"Populate one virtual/dummy MeLo from SLP profile","tags":["EDM (Energiedatenmanagement)"],"operationId":"edm_virtual_populateBySlp","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Virtual timeseries imported"},"404":{"description":"MeLo not found"},"422":{"description":"MeLo type not supported"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["meloId","date"],"properties":{"meloId":{"type":"string","example":"VIRTUAL_1"},"date":{"type":"string","example":"2026-05-01"},"profileId":{"type":"string","example":"H0","default":"H0"},"annualConsumptionKwh":{"type":"number","example":3200,"default":3500},"obis":{"type":"string","example":"1-0:1.8.0","default":"1-0:1.8.0"},"overwriteExisting":{"type":"boolean","default":true},"quality":{"type":"string","example":"synthetic","default":"synthetic"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"value":{"meloId":"VIRTUAL_1","date":"2026-05-01","profileId":"H0","annualConsumptionKwh":3200,"overwriteExisting":true}}}}}}}},"/api/edm/virtual/auto-populate/day":{"post":{"summary":"Auto-populate virtual meter data for one day","tags":["EDM (Energiedatenmanagement)"],"operationId":"edm_virtual_autoPopulateDay","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Auto-population summary"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["date"],"properties":{"date":{"type":"string","example":"2026-05-01"},"profileId":{"type":"string","example":"H0","default":"H0"},"annualConsumptionKwh":{"type":"number","example":3200,"default":3500},"typeFilter":{"type":"string","enum":["virtual","dummy","all"],"default":"virtual"},"includeCalc":{"type":"boolean","default":true},"includeSlp":{"type":"boolean","default":true},"overwriteExisting":{"type":"boolean","default":false},"limit":{"type":"integer","default":100},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"value":{"date":"2026-05-01","profileId":"H0","annualConsumptionKwh":3200,"typeFilter":"virtual","includeCalc":true,"includeSlp":true,"overwriteExisting":false,"limit":100}}}}}}}},"/api/forecast/load":{"post":{"summary":"Generate load forecast for a day","tags":["Forecast (Prognostik)"],"operationId":"forecast_engine_forecastLoad","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"Generates a 96-point (15-min) load forecast based on SLP profiles with optional historical correction and temperature adjustment. KRITIS-compliant: no external dependencies.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["date"],"properties":{"meloId":{"type":"string","example":"DE0012345678901234567890123456789"},"profileId":{"type":"string","default":"H0"},"date":{"type":"string","example":"2026-04-20"},"annualConsumptionKwh":{"type":"number","default":3500},"temperatureCelsius":{"type":"number","example":12},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"value":{"profileId":"H0","date":"2026-04-20","annualConsumptionKwh":3500,"temperatureCelsius":12}}}}}}}},"/api/forecast/generation":{"post":{"summary":"Generate generation forecast (solar/wind)","tags":["Forecast (Prognostik)"],"operationId":"forecast_engine_forecastGeneration","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"Wraps mastr_generation_forecast MCP tool with KRITIS-safe fallback. If MCP unavailable, uses installed capacity × typical capacity factor as estimate.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["date"],"properties":{"gridOperatorMastrId":{"type":"string","example":"SNB935578300972"},"postleitzahl":{"type":"string","example":"66989"},"installationType":{"type":"string","enum":["solar","wind","all"],"default":"solar"},"date":{"type":"string","example":"2026-04-20"},"forecastDays":{"type":"number","default":1},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"value":{"postleitzahl":"66989","installationType":"solar","date":"2026-04-20","forecastDays":1}}}}}}}},"/api/forecast/residual":{"post":{"summary":"Calculate residual load (consumption minus generation)","tags":["Forecast (Prognostik)"],"operationId":"forecast_engine_forecastResidual","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["date"],"properties":{"loadForecast":{"type":"object","example":{}},"generationForecast":{"type":"object","example":{}},"meloId":{"type":"string","example":"DE0012345678901234567890123456789"},"profileId":{"type":"string","example":"H0"},"annualConsumptionKwh":{"type":"number","example":3500},"postleitzahl":{"type":"string","example":"66989"},"date":{"type":"string","example":"2026-04-20"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"value":{"profileId":"H0","annualConsumptionKwh":3500,"postleitzahl":"66989","date":"2026-04-20"}}}}}}}},"/api/forecast/schedule/day-ahead":{"post":{"summary":"Create Day-Ahead schedule with optional storage optimization","tags":["Forecast (Prognostik)"],"operationId":"forecast_engine_createSchedule","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["date"],"properties":{"bilanzkreisId":{"type":"string","example":"bk_es_test"},"meloId":{"type":"string","example":"DE0012345678901234567890123456789"},"profileId":{"type":"string","example":"H0"},"annualConsumptionKwh":{"type":"number","example":3500},"postleitzahl":{"type":"string","example":"66989"},"date":{"type":"string","example":"2026-04-20"},"storageConfig":{"type":"object","example":{"capacityKwh":10,"maxChargePowerKw":5,"maxDischargePowerKw":5,"efficiency":0.92,"currentSocPercent":50}},"includeMarketPrices":{"type":"boolean","default":false},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"value":{"date":"2026-04-20","profileId":"H0","annualConsumptionKwh":3500,"postleitzahl":"66989"}}}}}}}},"/api/forecast/schedules":{"get":{"summary":"List stored schedules","tags":["Forecast (Prognostik)"],"operationId":"forecast_engine_listSchedules","parameters":[{"name":"bilanzkreisId","in":"query","required":false,"schema":{"type":"string","example":"bk_es_test"}},{"name":"date","in":"query","required":false,"schema":{"type":"string","example":"2026-04-20"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/forecast/storage-dispatch":{"post":{"summary":"Optimize battery storage dispatch","tags":["Forecast (Prognostik)"],"operationId":"forecast_engine_storageDispatch","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["date","storageConfig"],"properties":{"residualLoad":{"type":"array","items":{"type":"object"},"example":[]},"meloId":{"type":"string","example":"DE0012345678901234567890123456789"},"profileId":{"type":"string","example":"H0"},"annualConsumptionKwh":{"type":"number","example":3500},"postleitzahl":{"type":"string","example":"66989"},"date":{"type":"string","example":"2026-04-20"},"storageConfig":{"type":"object","example":{"capacityKwh":10,"maxChargePowerKw":5,"maxDischargePowerKw":5,"efficiency":0.92,"currentSocPercent":50}},"marketPrices":{"type":"array","items":{"type":"object"},"example":[]},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"value":{"date":"2026-04-20","profileId":"H0","annualConsumptionKwh":3500,"postleitzahl":"66989","storageConfig":{"capacityKwh":10,"maxChargePowerKw":5,"maxDischargePowerKw":5,"efficiency":0.92,"currentSocPercent":50}}}}}}}}},"/api/forecast/schedule/:scheduleId":{"get":{"summary":"Get stored day-ahead schedule","tags":["Forecast (Prognostik)"],"operationId":"forecast_engine_getSchedule","parameters":[{"name":"scheduleId","in":"path","required":true,"schema":{"type":"string","example":"schedule_2026-04-20_ab12cd34"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/forecast/quality":{"post":{"summary":"Evaluate forecast quality (RMSE/MAE/MAPE)","tags":["Forecast (Prognostik)"],"operationId":"forecast_engine_evaluateQuality","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"Compares SLP-based forecast against actual EDM timeseries data. Returns quality metrics and rating.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["meloId","from","to"],"properties":{"meloId":{"type":"string","example":"DE0012345678901234567890123456789"},"obis":{"type":"string","default":"1-0:1.8.0"},"from":{"type":"string","example":"2026-04-13T00:00:00Z"},"to":{"type":"string","example":"2026-04-14T00:00:00Z"},"profileId":{"type":"string","default":"H0"},"annualConsumptionKwh":{"type":"number","default":3500},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}},"examples":{"default":{"value":{"meloId":"DE0012345678901234567890123456789","from":"2026-04-13T00:00:00Z","to":"2026-04-14T00:00:00Z","profileId":"H0","annualConsumptionKwh":3500}}}}}}}},"/api/file-ingest-schemas":{"post":{"summary":"Create a CSV/file schema definition","tags":["File Ingest Monitor"],"operationId":"file_ingest_monitor_createSchema","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"delimiter":{"type":"string"},"encoding":{"type":"string"},"requiredColumns":{"type":"string"},"optionalColumns":{"type":"string"},"headerRowIndex":{"type":"number"},"dateLocale":{"type":"string"},"decimalLocale":{"type":"string"},"version":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}},"get":{"summary":"List file ingest schemas","tags":["File Ingest Monitor"],"operationId":"file_ingest_monitor_listSchemas","parameters":[{"in":"query","name":"limit","schema":{"type":"number"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/file-ingest-schemas/:schemaId":{"get":{"summary":"Get schema by ID","tags":["File Ingest Monitor"],"operationId":"file_ingest_monitor_getSchema","parameters":[{"in":"path","name":"schemaId","required":true,"schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/file-ingest-monitors":{"post":{"summary":"Register a file ingest monitor","tags":["File Ingest Monitor"],"operationId":"file_ingest_monitor_createMonitor","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"watchPath":{"type":"string"},"schemaId":{"type":"string"},"schemaVersion":{"type":"string"},"stalenessWindowMinutes":{"type":"number"},"direction":{"type":"string"},"sourcePriority":{"type":"number"},"errorFolderPath":{"type":"string"},"flowId":{"type":"string"},"ownerRef":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}},"get":{"summary":"List file ingest monitors","tags":["File Ingest Monitor"],"operationId":"file_ingest_monitor_listMonitors","parameters":[{"in":"query","name":"limit","schema":{"type":"number"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/file-ingest-monitors/:id":{"get":{"summary":"Get monitor by ID","tags":["File Ingest Monitor"],"operationId":"file_ingest_monitor_getMonitor","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}},"delete":{"summary":"Delete monitor by ID","tags":["File Ingest Monitor"],"operationId":"file_ingest_monitor_deleteMonitor","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}}},"/api/file-ingest-monitors/:id/scan":{"post":{"summary":"Run a scan on the monitored path","tags":["File Ingest Monitor"],"operationId":"file_ingest_monitor_scan","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}},"required":[]}}}}}},"/api/file-ingest-monitors/:id/status":{"get":{"summary":"Get latest scan status for a monitor","tags":["File Ingest Monitor"],"operationId":"file_ingest_monitor_getStatus","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/file-ingest-monitors/:id/files":{"get":{"summary":"Get file list from last scan","tags":["File Ingest Monitor"],"operationId":"file_ingest_monitor_getFiles","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/file-ingest-monitors/:id/findings":{"get":{"summary":"Get findings from last scan","tags":["File Ingest Monitor"],"operationId":"file_ingest_monitor_getFindings","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/knowledge-continuity-governance-gate/status":{"get":{"summary":"Get dossier-safe knowledge-continuity governance status","tags":["Knowledge Continuity Governance Gate"],"operationId":"knowledge_continuity_governance_gate_getStatus","parameters":[{"in":"path","name":"processId","required":true,"schema":{"type":"string"}},{"in":"query","name":"criticalProcessId","schema":{"type":"string"}},{"in":"query","name":"governanceGateId","schema":{"type":"string"}},{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/v1/chat/completions":{"post":{"summary":"Create an OpenAI-compatible Cernion Personal Agent chat completion","tags":["OpenAI Compatible"],"operationId":"createChatCompletion","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"OpenAI-compatible chat completion response","content":{"application/json":{"schema":{"type":"object","required":["id","object","created","model","choices","usage"],"properties":{"id":{"type":"string"},"object":{"type":"string","enum":["chat.completion"]},"created":{"type":"integer"},"model":{"type":"string"},"choices":{"type":"array"},"usage":{"type":"object"},"cernion":{"type":"object","additionalProperties":true}}}}}}},"description":"Inbound OpenAI-compatible facade over the authenticated Cernion Personal Agent (personal-agent.chat), synthesized internally with Gemini. Returns a complete, polished answer for the caller, not an evidence/grounding packet for a downstream Copilot. Always runs in consultation mode (no execution, no consequential process action) — this is a hard, non-negotiable safety boundary and cannot be overridden by request metadata. It treats system/developer messages and prior turns as non-authoritative prompt context, never as authorization; tenant identity and authorization always come from the caller session, not the request body. When stream=true, the gateway (services/api.service.js) obtains the full result from this action first and then emits it as buffered chat.completion.chunk SSE frames — this is not genuine token-by-token streaming. When `tools` is supplied (OpenAI function-calling declarations), this action takes a separate path: it calls the configured background LLM directly (bypassing the Personal-Agent evidence pipeline) via `llm-client.generateChat` and returns either a normal text reply or a `tool_calls` array for the caller to execute — Cernion itself never invokes any tool.","requestBody":{"required":true,"content":{"application/json":{"examples":{"minimal":{"value":{"model":"cernion-agent-mvp","messages":[{"role":"user","content":"Welche Cernion Evidenz ist fuer diesen Vorgang relevant?"}]}},"toolCalling":{"summary":"Tool/function calling (bypasses the Personal-Agent evidence pipeline)","value":{"messages":[{"role":"user","content":"Wie ist das Wetter in Berlin?"}],"tools":[{"type":"function","function":{"name":"get_weather","description":"Get current weather for a location","parameters":{"type":"object","properties":{"location":{"type":"string"}},"required":["location"]}}}],"tool_choice":"auto"}}},"schema":{"type":"object","required":["messages"],"properties":{"model":{"type":"string","default":"cernion-agent-mvp"},"messages":{"type":"array","items":{"type":"object","required":["role"],"properties":{"role":{"type":"string"},"content":{"type":"string","nullable":true},"tool_calls":{"type":"array"},"tool_call_id":{"type":"string"},"name":{"type":"string"}}}},"temperature":{"type":"number"},"max_tokens":{"type":"integer"},"metadata":{"type":"object","additionalProperties":true},"stream":{"type":"boolean","default":false},"tools":{"type":"array","description":"OpenAI-shaped function-calling tool declarations.","items":{"type":"object","required":["type","function"],"properties":{"type":{"type":"string","enum":["function"]},"function":{"type":"object","required":["name"],"properties":{"name":{"type":"string"},"description":{"type":"string"},"parameters":{"type":"object","additionalProperties":true}}}}}},"tool_choice":{"description":"\"auto\" | \"none\" | \"required\" | {type:\"function\",function:{name}}","oneOf":[{"type":"string","enum":["auto","none","required"]},{"type":"object","additionalProperties":true}]},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}}}}}}},"/v1/images/generations":{"post":{"summary":"Create an OpenAI-compatible image generation via the configured background model","tags":["OpenAI Compatible"],"operationId":"createImageGeneration","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"OpenAI-compatible image generation response","content":{"application/json":{"schema":{"type":"object","required":["created","data"],"properties":{"created":{"type":"integer"},"data":{"type":"array","items":{"type":"object","properties":{"b64_json":{"type":"string"}}}},"cernion":{"type":"object","additionalProperties":true}}}}}}},"description":"Inbound OpenAI-compatible facade over the configured Cernion LLM provider (default Gemini). Forwards the prompt to the background image-generation model and returns base64-encoded image data in the standard OpenAI images.generations response shape. Only `response_format: \"b64_json\"` is supported — no public URL/object storage is provisioned by this facade.","requestBody":{"required":true,"content":{"application/json":{"examples":{"minimal":{"value":{"prompt":"Infografik: jaehrlicher Anstieg der PV-Einspeisung 2020-2026, Balkendiagramm"}}},"schema":{"type":"object","required":["prompt"],"properties":{"prompt":{"type":"string"},"model":{"type":"string","default":"cernion-image-mvp"},"n":{"type":"integer","minimum":1,"maximum":4,"default":1},"size":{"type":"string","example":"1024x1024"},"response_format":{"type":"string","enum":["b64_json","url"],"default":"b64_json"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}}}}}}},"/v1/embeddings":{"post":{"summary":"Create OpenAI-compatible text embeddings via the configured background model","tags":["OpenAI Compatible"],"operationId":"createEmbedding","parameters":[{"$ref":"#/components/parameters/TokenQuery"}],"responses":{"200":{"description":"OpenAI-compatible embeddings response","content":{"application/json":{"schema":{"type":"object","required":["object","data","model"],"properties":{"object":{"type":"string","enum":["list"]},"data":{"type":"array","items":{"type":"object","properties":{"object":{"type":"string","enum":["embedding"]},"index":{"type":"integer"},"embedding":{"type":"array","items":{"type":"number"}}}}},"model":{"type":"string"},"usage":{"type":"object"},"cernion":{"type":"object","additionalProperties":true}}}}}}},"description":"Inbound OpenAI-compatible facade over the configured Cernion LLM provider (default Gemini). Forwards one or more input strings to the background embedding model and returns vectors in the standard OpenAI embeddings response shape. Only `encoding_format: \"float\"` is supported.","requestBody":{"required":true,"content":{"application/json":{"examples":{"single":{"value":{"input":"Marktkommunikation Evidenzkette"}},"batch":{"value":{"input":["APERAK Frist","UTILMD Strukturwechsel"]}}},"schema":{"type":"object","required":["input"],"properties":{"input":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"string"},"maxItems":100}]},"model":{"type":"string","default":"cernion-embedding-mvp"},"encoding_format":{"type":"string","enum":["float","base64"],"default":"float"},"token":{"type":"string","description":"Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided."}}}}}}}}},"components":{"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"X-API-Key"},"BearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Optional Cernion MCP token. If not provided, falls back to CERNION_TOKEN from environment. Request token at https://cernion.de/ or by email: dev@stromdao.com."}},"parameters":{"TokenQuery":{"name":"token","in":"query","required":false,"schema":{"type":"string"},"description":"Optional Cernion MCP token as URL query parameter. If provided, it overrides CERNION_TOKEN for this request. Prefer Authorization Bearer header in production to reduce token exposure in URLs/logs."}},"schemas":{"PaginationCursor":{"type":"string","description":"Opaque cursor token for keyset pagination.","example":"eyJwaXZvdCI6eyJjcmVhdGVkQXQiOiIyMDI2LTA1LTA1VDA5OjAwOjAwLjAwMFoiLCJpZCI6ImFiYy0xMjMifSwiZGlyZWN0aW9uIjoibmV4dCIsImhhc2giOiIuLi4ifQ"},"PageInfo":{"type":"object","properties":{"nextCursor":{"oneOf":[{"$ref":"#/components/schemas/PaginationCursor"},{"type":"null"}]},"prevCursor":{"oneOf":[{"$ref":"#/components/schemas/PaginationCursor"},{"type":"null"}]},"hasMore":{"type":"boolean"},"totalCountApprox":{"oneOf":[{"type":"integer"},{"type":"null"}]}},"required":["hasMore"]},"DbMixinList":{"type":"object","properties":{"rows":{"type":"array","items":{"type":"object"}},"totalCount":{"type":"number"}}},"DbMixinFindList":{"type":"array","items":{"type":"object"}},"Item":{"type":"object"}},"responses":{"ServerError":{"description":"Server errors: 500, 501, 400, 404 and etc...","content":{"application/json":{"schema":{"type":"object","example":{"name":"MoleculerClientError","message":"Server error message","code":500}}}}},"UnauthorizedError":{"description":"Need auth","content":{"application/json":{"schema":{"type":"object","example":{"name":"MoleculerClientError","message":"Unauth error message","code":401}}}}},"ValidationError":{"description":"Fields invalid","content":{"application/json":{"schema":{"type":"object","example":{"name":"MoleculerClientError","message":"Error message","code":422,"data":[{"name":"fieldName","message":"Field invalid"},{"name":"arrayField[0].fieldName","message":"Whats wrong"},{"name":"object.fieldName","message":"Whats wrong"}]}}}}},"ReturnedData":{"description":"","content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/DbMixinList"},{"$ref":"#/components/schemas/DbMixinFindList"},{"$ref":"#/components/schemas/Item"}]}}}},"FileNotExist":{"description":"File not exist","content":{"application/json":{"schema":{"type":"object","example":{"name":"MoleculerClientError","message":"File missing in the request","code":400}}}}},"FileTooBig":{"description":"File too big","content":{"application/json":{"schema":{"type":"object","example":{"name":"PayloadTooLarge","message":"Payload too large","code":413,"type":"PAYLOAD_TOO_LARGE","data":{"fieldname":"file","filename":"4b2005c0b8.png","encoding":"7bit","mimetype":"image/png"}}}}}}}},"tags":[{"name":"Energy","description":"Energy market operations"},{"name":"Example","description":"Example service endpoints"},{"name":"DataSources","description":"Inhouse datasource registry, cache, and discovery"},{"name":"VNBMonitor","description":"VNB (grid operator) KPI monitoring and alerts"},{"name":"NBPMonitor","description":"Netzbetreiberprüfungs-Monitor (MaStR status 2955 queue KPIs)"},{"name":"IntegrationHub","description":"Token management and integration helpers"},{"name":"Authentication","description":"OIDC/SAML session bootstrap and verification"},{"name":"Tenant Quotas","description":"Tenant quota snapshots, events, and admin overrides"},{"name":"Jobs","description":"Async job status and result polling (v0.9.8+)"},{"name":"Datapoints","description":"Managed data source points with lifecycle tracking and health monitoring (v0.11)"},{"name":"OSM Geo (OpenStreetMap)","description":"Layer 2 Geo-Architecture: physical grid infrastructure from OpenStreetMap via the Overpass API. Complements authoritative VNBDigital data (Layer 1) with visible substations, transformers, and lines. Data: © OpenStreetMap contributors, ODbL 1.0 — https://opendatacommons.org/licenses/odbl/"},{"name":"OEP (Open Energy Platform)","description":"Read-only access to Open Energy Platform research and scenario datasets. No authentication required for public tables. Supports schema/table discovery, column metadata, row queries, and full-text search. API: https://openenergyplatform.org/api/v0"},{"name":"Knowledge RAG","description":"HyDE-aware RAG access with tenant-local ingestion and vector indexing. Supports semantic search, scroll/fetch/collection info, collection lifecycle, datasource/audit ingestion, and reindex/cutover."},{"name":"Finance Agent","description":"Deterministic finance/regulatory analysis for VNBs (v0.40). Performs query planning, ontology-aware RAG retrieval, L1/L2 evidence arbitration, and guarded synthesis with audit trail."},{"name":"Personal Agent","description":"Interactive personal chat orchestration (v0.52). Builds deterministic L0-L4 context stacks with strict token budgeting. Layer 4 is transient and never persisted."},{"name":"OpenAI Compatible","description":"Inbound OpenAI-compatible facade for authenticated Cernion advisory completions."},{"name":"Actor Personas","description":"Tenant-scoped actor persona registry for HITL routing, notification ownership, and persona-aware inbox delivery."},{"name":"Grid Connection Validation","description":"Deterministic 6-step Netzanschluss validation pipeline (v0.14). Produces structured findings and a Go/No-Go decision sealed with a PouchDB snapshot for audit integrity. No LLM involvement — identical inputs always produce identical finding codes."},{"name":"Energy Sharing Validation","description":"Deterministic 6-step Energy Sharing community validation pipeline (v0.15). Validates generator MaStR records, Direktvermarkter status (§ 21 Abs. 2 EEG), share allocations, and § 42c EnWG eligibility. Interims-Prozess for VNBs ahead of § 20b EnWG central platform. No LLM involvement — identical inputs always produce identical finding codes."},{"name":"Energy Sharing Allocation","description":"Deterministic 6-step Energy Sharing allocation engine (v0.16). Computes per-consumer 15-min allocation time-series (§ 12 StromNZV) for § 42c EnWG communities. Stufe A: synthetic forecast via mastr_generation_forecast. Stufe B: real iMSys metering data via inhouse CSV upload. KRITIS-compliant: time-series computed in RAM, only metadata persisted. Interimsprozess operative deadline: 01.06.2026 (§ 20b EnWG)."},{"name":"MaStR Data Quality","description":"Deterministic 8-step MaStR portfolio quality audit (v0.17). Audits the entire VNB portfolio in MaStR: VNB identity → full inventory → status anomalies → capacity anomalies → connection point integrity → duplicate detection → geo spot check → audit trail. Returns a qualityScore (0–100) across 5 weighted dimensions. No LLM involvement. Steps 3–7 independently skippable via skipSteps parameter."},{"name":"Redispatch Ex-Post","description":"Deterministic 7-step Redispatch 2.0 Ex-Post settlement audit (v0.18). Cross-references MaStR portfolio (≥100 kW) with Netztransparenz curtailment data: VNB identity → portfolio inventory → master data validation → curtailment correlation → settlement readiness → financial risk assessment → audit trail. Returns settlementReadiness (% of installations ready for A96 settlement) and riskAssessment (estimated lost compensation in €). No LLM involvement. Regulatory basis: §§ 13, 13a EnWG, NABEG, StromNZV, Redispatch 2.0 (BDEW/BNetzA). Steps 3–6 independently skippable via skipSteps parameter."},{"name":"Dashboard API","description":"UI-optimised aggregate endpoints (v0.19). Each endpoint consolidates 4–7 internal service calls into a single response, reducing the roundtrips required for an Enterprise UI dashboard page to one. Read-only — no side-effects, no own PouchDB. Endpoints: vnb-overview (VNB identity + KPIs + latest agent results), market-snapshot (spot prices + CO₂ + renewable forecast), quality-summary (recent reports from all agent pipelines), observability-mini (compact health/incidents/performance cards), finding-codes (complete 100-code reference with metadata for UI tooltips)."},{"name":"Observability","description":"Read-only production feedback endpoints (v0.40.7) for captured service log output, action performance metrics, compact operational summaries, and an agent-ready debugging prompt. Data is retained locally in PouchDB with redaction-safe storage."},{"name":"Companies","description":"Company entity management (v0.20.3). Groups multiple BDEW market-partner codes that belong to the same economic unit (Konzernverbund / Stadtwerk). Supports autoDiscover (cernion_market_partners query → draft → confirm flow) and manual member management. enrichResults enriches market-partner search results with companyId + marketRole."},{"name":"Zielnetzplanung (ZNP)","description":"Stateful workspace API for target grid planning (v0.20.4). Each project is an in-memory graphology graph for a geographic bounding box. Data Layers are loaded iteratively: Layer 0 (MaStR assets), Layer 1 (OSM buildings — stub), Layer 2 (transformer loads — stub). All assets in Layer 0 connect to a virtual substation SUB_1 (MaStR has no topology). Graph state is persisted in PouchDB (meta + graph split docs) and hydrated on service start. Project metadata (bbox, layer counts) is persisted alongside graph topology."},{"name":"Object Store","description":"Generic namespaced document store backed by PouchDB (v0.20.5). Provides CRUD and Mango-query operations for frontend persistence (ZNP workspaces, user settings, etc.) without backend schema changes. Documents are keyed as namespace:key; namespace isolation enforced in all queries."},{"name":"Cookbook","description":"Reusable API workflow recipes (v0.20.5). Code-managed community cookbook with semantic lookup, runtime relation graph, and periodic validity checks against live microservice actions."},{"name":"Agent Receipts","description":"Runtime-managed receipt documents (v0.54.0 foundation). PouchDB-backed CRUD, validation, lifecycle status transitions, and auditable soft-delete."},{"name":"CYA Agent","description":"Stakeholder-perspective argumentation engine with regulatory grounding (v0.26). Generates data-backed, profile-aware narratives from Cernion microservice data + OEO regulatory context."},{"name":"EDM (Energiedatenmanagement)","description":"Meter data management with SQLite-backed timeseries storage, MeLo registry, and measurement concepts (v0.28). KRITIS-compliant embedded storage with quarterly partitioning."},{"name":"SLP (Standardlastprofile)","description":"Standard load profiles (BDEW H0/G0/L0) and custom profiles for load estimation, settlement, and forecast baseline."},{"name":"Settlement (Abrechnung)","description":"Redispatch compensation (§13a/14 EnWG), EEG revenue calculation, and A96 settlement export. Based on EDM timeseries, generation forecasts, and ENTSO-E market prices with KRITIS fallbacks."},{"name":"Forecast (Prognostik)","description":"Load forecasting (SLP-based with historical correction), generation forecasting (MCP with KRITIS fallback), residual load calculation, Day-Ahead scheduling, storage dispatch optimization, and forecast quality evaluation (RMSE/MAE/MAPE)."},{"name":"Flex (§14a Flexibilitätsmanagement)","description":"Controllable consumption device management (§14a EnWG). SVE registry, dimming planning with grid capacity analysis, MQTT-based execution, Entlastungsnachweis, and tariff reduction."},{"name":"MaStR Monitor","description":"MaStR installation change monitoring with field-level delta detection and email notifications (v0.27). Watches track changes to MaStR installations based on saved queries with configurable schedules."},{"name":"HITL","description":"Human-in-the-loop approval workflow with tenant-scoped review items, intervention trail, and lifecycle events."},{"name":"Investment Planning","description":"Deterministic investment planning and budget steering (v0.51.2) with hybrid Soll baselines, Redispatch Ex-Post Ist comparison, mandate alignment checks, and >1M EUR HITL triggers."},{"name":"Blindflug Radar","description":"Deterministic disturbance-to-investment signal correlation (v0.51.3) using Redispatch, MaStR monitor deltas, and quality findings with confidence-threshold auto-proposals."},{"name":"Netzfahrplan / fNAV","description":"Deterministic fNAV feasibility assessment (v0.51.5): capacity model (firm + flexible + curtailment), N-1 check with hybrid threshold (domain default + tenant/project/scenario override), technical feasibility verdict, governance gate (Option B: requires_governance_decision until legal + contract prerequisites met), and TOTEX-based economics with eog-calculator integration."},{"name":"Webhooks","description":"Outbound webhook subscriptions with signed delivery, retry backoff, replay, and dead-letter tracking."},{"name":"Interface Placeholder","description":"Explicit gap markers for unresolved interfaces, evidence, and ownership"}]}