Cernion Energy Sharing Validation API

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.

Operations 3

POST /api/energy-sharing/validate Validate an Energy Sharing community application (§ 42c EnWG) #
GET /api/energy-sharing/validations List past Energy Sharing validation reports #
GET /api/energy-sharing/validations/:id Get a specific Energy Sharing validation report by ID #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/cernion-de:cernion-de-energy-sharing-validation-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

cernion-de-energy-sharing-validation-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Cernion Energy Tools Energy Sharing Validation API
  version: 0.99.22
  description: 'MicroService Agent System for Energy Markets - REST API with AI integration.


    CERNION_TOKEN: request at https://cernion.de/ or by email: dev@stromdao.com.


    For 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
tags:
- 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.
paths:
  /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.
components:
  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.
  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.'