{
  "openapi": "3.1.0",
  "info": {
    "title": "SEF externe API",
    "version": "1",
    "description": "Externe toegang tot Suggestum Energeticum Flandrense. Zie docs/api/extern-api.md."
  },
  "paths": {
    "/api/v1/status": {
      "get": {
        "summary": "Status",
        "description": "Grove status voor de publieke statuspagina: geen fouttekst, geen host.\n\nVereiste scope: `publiek`.",
        "operationId": "get_status",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "title": "Response Status V1 Status Get"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/api/v1/nieuws": {
      "get": {
        "summary": "Nieuws Lijst",
        "description": "Goedgekeurd energienieuws, nieuwste eerst (ADR-0032). Enkel titel,\nbron, datum, samenvatting uit de feed en de link naar het artikel.\n`rubriek` filtert (onbekend -> 422); `rubrieken` geeft de labels.\n\nVereiste scope: `publiek`.",
        "operationId": "get_nieuws",
        "parameters": [
          {
            "name": "limiet",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100,
              "minimum": 1,
              "default": 30,
              "title": "Limiet"
            }
          },
          {
            "name": "rubriek",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Rubriek"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "title": "Response Nieuws Lijst V1 Nieuws Get"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/api/v1/tariefsignalen": {
      "get": {
        "summary": "Tariefsignalen Voor",
        "description": "Tariefsignalen bij één resultaat (ADR-0033): `geldt` = een aangekondigde\nwijziging die ingaat vóór `tot` van dat resultaat en toen nog niet\nverwerkt was; `komend` = open en pas na de periode (voor wie een contract\nvoor de toekomst kiest). Enkel weergave: bewaarde runs veranderen niet.\n\nVereiste scope: `publiek`.",
        "operationId": "get_tariefsignalen",
        "parameters": [
          {
            "name": "energie",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Energie"
            }
          },
          {
            "name": "tot",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "format": "date",
              "title": "Tot"
            }
          },
          {
            "name": "afgerond_op",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "format": "date-time",
              "title": "Afgerond Op"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "title": "Response Tariefsignalen Voor V1 Tariefsignalen Get"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/api/v1/prijzen/indexen": {
      "get": {
        "summary": "Prijzen Indexen",
        "description": "Alle marktindexreeksen met gerealiseerde maandwaarden, meest gebruikte eerst.\n\nVereiste scope: `publiek`.",
        "operationId": "get_prijzen_indexen",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "title": "Response Prijzen Indexen V1 Prijzen Indexen Get"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/api/v1/prijzen/index": {
      "get": {
        "summary": "Prijzen Index",
        "description": "Maandwaarden (€/MWh, gerealiseerd) van één reeks. Onbekende reeks -> 404.\nZonder `richting` geldt de enige richting van de reeks; heeft ze er twee -> 422.\n\nVereiste scope: `publiek`.",
        "operationId": "get_prijzen_index",
        "parameters": [
          {
            "name": "naam",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Naam"
            }
          },
          {
            "name": "energie",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Energie"
            }
          },
          {
            "name": "richting",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "",
              "title": "Richting"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "title": "Response Prijzen Index V1 Prijzen Index Get"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/api/v1/prijzen/verloop": {
      "get": {
        "summary": "Prijzen Verloop",
        "description": "Gemiddelde zuivere energieprijs per maand (c€/kWh, excl. btw) van het\nwoningaanbod in het VREG-werkboek, per prijstype (vast, variabel,\ndynamisch), met het kiesbare product met de laagste en de hoogste\nkWh-prijs (zonder vaste vergoeding: niet per se het goedkoopste contract).\n\nVereiste scope: `publiek`.",
        "operationId": "get_prijzen_verloop",
        "parameters": [
          {
            "name": "energie",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Energie"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "title": "Response Prijzen Verloop V1 Prijzen Verloop Get"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/api/v1/leveranciers/overzicht": {
      "get": {
        "summary": "Leveranciers Overzicht",
        "description": "Bewaarde rangschikking van de laatste nachtelijke run op het\nstandaardprofiel; `periode`: lopend_jaar (standaard), 12m (laatste 12\nvolle maanden) of projectie (komende 12 maanden op de VREG-prijscurve).\n\nVereiste scope: `publiek`.",
        "operationId": "get_leveranciers_overzicht",
        "parameters": [
          {
            "name": "energie",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Energie"
            }
          },
          {
            "name": "periode",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "lopend_jaar",
              "title": "Periode"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "title": "Response Leveranciers Overzicht V1 Leveranciers Overzicht Get"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/api/v1/netbeheerders/vergelijking": {
      "get": {
        "summary": "Netbeheerders Vergelijking",
        "description": "Jaarlijkse meerkost per netbeheerder t.o.v. de goedkoopste, per\nenergie en segment, op vtest.be's standaardverbruik; met `postcode`\nook de netbeheerders van de gemeenten met die postcode.\n\nVereiste scope: `publiek`.",
        "operationId": "get_netbeheerders_vergelijking",
        "parameters": [
          {
            "name": "postcode",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "",
              "title": "Postcode"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "title": "Response Netbeheerders Vergelijking V1 Netbeheerders Vergelijking Get"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/api/v1/mij/aansluitingen": {
      "get": {
        "summary": "Mijn Aansluitingen",
        "description": "Aansluitingen van de gebruiker, met EAN-masker en meetbereik.\n\nVereiste scope: `dossier:lezen`.",
        "operationId": "get_mij_aansluitingen",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "title": "Response Mijn Aansluitingen V1 Mij Aansluitingen Get"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/api/v1/mij/verbruik": {
      "get": {
        "summary": "Mijn Verbruik",
        "description": "Afname en injectie per maand of dag, lokale tijd, half-open [van, tot).\n`piek_kw`: hoogste kwartierafname van de periode in kW (capaciteitstarief),\nnull zonder kwartierdata.\n\nBegrensd: maand hoogstens 5 jaar, dag hoogstens 366 dagen. Zonder van/tot:\nde laatste 24 maanden (maand) of 31 dagen (dag) tot vandaag.\n\nVereiste scope: `dossier:lezen`.",
        "operationId": "get_mij_verbruik",
        "parameters": [
          {
            "name": "aansluiting",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "title": "Aansluiting"
            }
          },
          {
            "name": "resolutie",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "maand",
              "title": "Resolutie"
            }
          },
          {
            "name": "van",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "date"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Van"
            }
          },
          {
            "name": "tot",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "date"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Tot"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "title": "Response Mijn Verbruik V1 Mij Verbruik Get"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/api/v1/mij/contractperiodes": {
      "get": {
        "summary": "Mijn Contractperiodes",
        "description": "Alle contractperiodes, met de prijs van elke afgesloten periode\nwaarvan het contract en de tarieven gekend zijn (anders de reden).\n\nVereiste scope: `dossier:lezen`.",
        "operationId": "get_mij_contractperiodes",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "title": "Response Mijn Contractperiodes V1 Mij Contractperiodes Get"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/api/v1/mij/prijs": {
      "get": {
        "summary": "Mijn Kwh Prijs",
        "description": "All-in prijs per kWh (EUR incl. btw) van het huidige\nelektriciteitscontract, nu (ADR-0054 §8). Voor een Home Assistant-\nprijssensor: `afname_nu`/`injectie_nu` volgen de dag/nachtzone, of bij\neen dynamisch contract (of injectie op de spotprijs) het kwartier;\n`kwartieren` geeft dan de prijs per kwartier van vandaag en, vanaf 13\nuur, morgen. Licht (geen kwartierrekening, geen simulatieslot); geen run.\n\nVereiste scope: `dossier:lezen`.",
        "operationId": "get_mij_prijs",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "title": "Response Mijn Kwh Prijs V1 Mij Prijs Get"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/api/v1/mij/simulatie-opties": {
      "get": {
        "summary": "Simulatie Opties",
        "description": "Keuzes voor het simulatieformulier: batterijmodellen (Marstek-lijn\nmet gekende specificaties), het standaardpaneel en de elektrische wagens.\n\nVereiste scope: `dossier:lezen`.",
        "operationId": "get_mij_simulatie-opties",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "title": "Response Simulatie Opties V1 Mij Simulatie Opties Get"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/api/v1/mij/simulaties": {
      "get": {
        "summary": "Mijn Simulaties",
        "description": "Bewaarde simulaties van de gebruiker, nieuwste eerst (ADR-0044).\nStandaard enkel de actieve (niet-gearchiveerde); `soort` = simulaties\nmet die bouwsteen; `vastgepind` = enkel (niet) vastgepinde;\n`volgorde=vastgepind` zet de vastgepinde vooraan (verder nieuwste eerst).\n`kosten` per simulatie: de laatste kostenopdracht in het kort, met de\nbesparing als ze klaar is. `aantal`\ntelt alle treffers (voor paginering met `vanaf`/`limiet`), `per_soort`\nde treffers per bouwsteen binnen hetzelfde archief, `gearchiveerd` en\n`totaal` het hele dossier.\n\nVereiste scope: `dossier:lezen`.",
        "operationId": "get_mij_simulaties",
        "parameters": [
          {
            "name": "archief",
            "in": "query",
            "required": false,
            "schema": {
              "enum": [
                "nee",
                "ja",
                "alle"
              ],
              "type": "string",
              "default": "nee",
              "title": "Archief"
            }
          },
          {
            "name": "soort",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "enum": [
                    "STORE",
                    "GENERATE",
                    "ADD",
                    "CONVERT"
                  ],
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Soort"
            }
          },
          {
            "name": "vastgepind",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Vastgepind"
            }
          },
          {
            "name": "volgorde",
            "in": "query",
            "required": false,
            "schema": {
              "enum": [
                "recent",
                "vastgepind"
              ],
              "type": "string",
              "default": "recent",
              "title": "Volgorde"
            }
          },
          {
            "name": "limiet",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100,
              "minimum": 1,
              "default": 50,
              "title": "Limiet"
            }
          },
          {
            "name": "vanaf",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 10000,
              "minimum": 0,
              "default": 0,
              "title": "Vanaf"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "title": "Response Mijn Simulaties V1 Mij Simulaties Get"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      },
      "post": {
        "summary": "Start Simulatie",
        "description": "Simuleert batterij, extra panelen, een elektrische wagen en/of een\nwarmtepomp op het laatste jaar van de eigen meting en bewaart het (ADR-020).\n\nSynchroon (~5 s, ADR-023: bewuste afwijking van REQ-SIM-006). Eén\nsimulatie tegelijk voor de hele server; een tweede krijgt 429.\n\nVereiste scope: `dossier:uitvoeren`.",
        "operationId": "post_mij_simulaties",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SimulatieInvoer"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "title": "Response Start Simulatie V1 Mij Simulaties Post"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/api/v1/mij/simulaties/{run_id}": {
      "get": {
        "summary": "Mijn Simulatie",
        "description": "Eén eigen simulatie met haar samenvatting (null bij simulaties van vóór\n0027) en haar laatste kostenopdracht in het kort (`kosten`, null zonder; ADR-0044).\n\nVereiste scope: `dossier:lezen`.",
        "operationId": "get_mij_simulaties_run_id",
        "parameters": [
          {
            "name": "run_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Run Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "title": "Response Mijn Simulatie V1 Mij Simulaties  Run Id  Get"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/api/v1/mij/vergelijkingen": {
      "get": {
        "summary": "Mijn Vergelijkingen",
        "description": "De laatste contractvergelijkingen van de gebruiker, nieuwste eerst.\n\nVereiste scope: `dossier:lezen`.",
        "operationId": "get_mij_vergelijkingen",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "title": "Response Mijn Vergelijkingen V1 Mij Vergelijkingen Get"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      },
      "post": {
        "summary": "Start Vergelijking",
        "description": "Zet een contractvergelijking op de eigen meetdata in de wachtrij.\n\nAsynchroon (ADR-023): geeft meteen het opdracht-ID; de pagina vraagt\nde status op. Idempotent: loopt er al een opdracht voor deze\ngebruiker, dan komt die terug (`nieuw: false`).\n\nVereiste scope: `dossier:uitvoeren`.",
        "operationId": "post_mij_vergelijkingen",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/VergelijkingInvoer"
              }
            }
          }
        },
        "responses": {
          "202": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "title": "Response Start Vergelijking V1 Mij Vergelijkingen Post"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/api/v1/mij/vergelijkingen/{opdracht_id}": {
      "get": {
        "summary": "Mijn Vergelijking",
        "description": "Status van één eigen vergelijking; als ze klaar is ook de rangschikking.\n\nVereiste scope: `dossier:lezen`.",
        "operationId": "get_mij_vergelijkingen_opdracht_id",
        "parameters": [
          {
            "name": "opdracht_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Opdracht Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "title": "Response Mijn Vergelijking V1 Mij Vergelijkingen  Opdracht Id  Get"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/api/v1/mij/aansluitingen/{aansluiting_id}/meetwaarden": {
      "post": {
        "summary": "P1 Meetwaarden",
        "description": "Kwartierwaarden uit een P1-poort (Home Assistant) op een bestaande\nelektriciteitsaansluiting (ADR-0054). Alles of niets: één ongeldige\nrij weigert de hele aanvraag (422). Een waarde uit een Fluvius-export\nblijft staan (`fluvius_behouden`). Geen herberekening: de tussenstand\nververst bij het bekijken en 's nachts. Andermans aansluiting -> 404,\neen andere meter -> 409, een klantdossier van een installateur -> 403\n(geen continue stroom zonder toestemming van de klant zelf).\n\nVereiste scope: `dossier:schrijven`.",
        "operationId": "post_mij_aansluitingen_aansluiting_id_meetwaarden",
        "parameters": [
          {
            "name": "aansluiting_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "title": "Aansluiting Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/P1Invoer"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "title": "Response P1 Meetwaarden V1 Mij Aansluitingen  Aansluiting Id  Meetwaarden Post"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    }
  },
  "components": {
    "schemas": {
      "HTTPValidationError": {
        "properties": {
          "detail": {
            "items": {
              "$ref": "#/components/schemas/ValidationError"
            },
            "type": "array",
            "title": "Detail"
          }
        },
        "type": "object",
        "title": "HTTPValidationError"
      },
      "P1Invoer": {
        "properties": {
          "meter": {
            "type": "string",
            "pattern": "^[0-9A-Za-z]{4,64}$",
            "title": "Meter"
          },
          "metingen": {
            "items": {
              "$ref": "#/components/schemas/P1Meting"
            },
            "type": "array",
            "maxItems": 1000,
            "minItems": 1,
            "title": "Metingen"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "meter",
          "metingen"
        ],
        "title": "P1Invoer",
        "description": "Kwartierwaarden voor één aansluiting. `meter`: serienummer uit het\nP1-telegram (0-0:96.1.1); enkel een HMAC wordt bewaard."
      },
      "P1Meting": {
        "properties": {
          "tijdstip": {
            "type": "string",
            "format": "date-time",
            "title": "Tijdstip"
          },
          "register": {
            "type": "string",
            "pattern": "^(dag|nacht|enkelvoudig)$",
            "title": "Register"
          },
          "richting": {
            "type": "string",
            "pattern": "^(afname|injectie)$",
            "title": "Richting"
          },
          "kwh": {
            "type": "string",
            "pattern": "^\\d{1,2}(\\.\\d{1,6})?$",
            "title": "Kwh"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "tijdstip",
          "register",
          "richting",
          "kwh"
        ],
        "title": "P1Meting",
        "description": "Eén kwartierwaarde uit een P1-poort (ADR-0054): begin van het kwartier\nmet tijdzone, register zoals de Fluvius-export, kWh als decimale string."
      },
      "SimulatieInvoer": {
        "properties": {
          "ev_model": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 80,
                "minLength": 1
              },
              {
                "type": "null"
              }
            ],
            "title": "Ev Model"
          },
          "ev_km_per_rijdag": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Ev Km Per Rijdag"
          },
          "ev_rijdagen": {
            "anyOf": [
              {
                "items": {
                  "type": "integer"
                },
                "type": "array",
                "maxItems": 7,
                "minItems": 1
              },
              {
                "type": "null"
              }
            ],
            "title": "Ev Rijdagen"
          },
          "ev_vertrek": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^([01]\\d|2[0-3]):(00|15|30|45)$"
              },
              {
                "type": "null"
              }
            ],
            "title": "Ev Vertrek"
          },
          "ev_aankomst": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^([01]\\d|2[0-3]):(00|15|30|45)$"
              },
              {
                "type": "null"
              }
            ],
            "title": "Ev Aankomst"
          },
          "ev_laadvermogen_w": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Ev Laadvermogen W"
          },
          "ev_strategie": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Ev Strategie"
          },
          "ev_piekgrens_kw": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Ev Piekgrens Kw"
          },
          "ev_piekgrens_meeschuivend": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Ev Piekgrens Meeschuivend"
          },
          "ev_laadrendement_pct": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Ev Laadrendement Pct"
          },
          "wp_model": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 80,
                "minLength": 1
              },
              {
                "type": "null"
              }
            ],
            "title": "Wp Model"
          },
          "wp_aandeel_pct": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Wp Aandeel Pct"
          },
          "wp_warmtevraag_kwh": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Wp Warmtevraag Kwh"
          },
          "wp_warm_water_op_gas": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Wp Warm Water Op Gas"
          },
          "bijverwarming": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Bijverwarming"
          },
          "ketelrendement_pct": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Ketelrendement Pct"
          },
          "t_bron_c": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "T Bron C"
          },
          "t_afgifte_c": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "T Afgifte C"
          },
          "batterij_model": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Batterij Model"
          },
          "batterij_aantal": {
            "anyOf": [
              {
                "type": "integer",
                "maximum": 3.0,
                "minimum": 1.0
              },
              {
                "type": "null"
              }
            ],
            "title": "Batterij Aantal"
          },
          "pv_panelen": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Pv Panelen"
          },
          "omvormer_kw": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Omvormer Kw"
          },
          "vermogen_w": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Vermogen W"
          },
          "min_soc_pct": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Min Soc Pct"
          },
          "max_soc_pct": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Max Soc Pct"
          },
          "start_soc_pct": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Start Soc Pct"
          },
          "start_soh_pct": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Start Soh Pct"
          },
          "grens_soc_pct": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Grens Soc Pct"
          },
          "piekgrens_kw": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Piekgrens Kw"
          },
          "piekreserve_pct": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Piekreserve Pct"
          },
          "net_laden_tot_pct": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Net Laden Tot Pct"
          },
          "laadvenster": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Laadvenster"
          },
          "pv_profiel": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Pv Profiel"
          },
          "rte_ac_dc_pct": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Rte Ac Dc Pct"
          },
          "rte_dc_ac_pct": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Rte Dc Ac Pct"
          },
          "rte_storage_pct": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Rte Storage Pct"
          },
          "standby_w": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Standby W"
          },
          "max_cycli": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Max Cycli"
          },
          "eol_pct": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Eol Pct"
          },
          "laadvenster_extra": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Laadvenster Extra"
          },
          "net_laden_seizoen": {
            "anyOf": [
              {
                "additionalProperties": {
                  "type": "number"
                },
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Net Laden Seizoen"
          },
          "van": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ],
            "title": "Van"
          },
          "tot": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ],
            "title": "Tot"
          },
          "volledig": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Volledig"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "title": "SimulatieInvoer",
        "description": "Simulator (website-plan fase 5): een batterijmodel, extra panelen, een\nelektrische wagen en/of een warmtepomp (beginnerstand), plus de gevorderde instellingen met\ndezelfde namen als `SimulatieVraag`. Weggelaten = de standaardwaarde van de CLI."
      },
      "ValidationError": {
        "properties": {
          "loc": {
            "items": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "integer"
                }
              ]
            },
            "type": "array",
            "title": "Location"
          },
          "msg": {
            "type": "string",
            "title": "Message"
          },
          "type": {
            "type": "string",
            "title": "Error Type"
          },
          "input": {
            "title": "Input"
          },
          "ctx": {
            "type": "object",
            "title": "Context"
          }
        },
        "type": "object",
        "required": [
          "loc",
          "msg",
          "type"
        ],
        "title": "ValidationError"
      },
      "VergelijkingInvoer": {
        "properties": {
          "energie": {
            "type": "string",
            "title": "Energie"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "energie"
        ],
        "title": "VergelijkingInvoer"
      }
    },
    "securitySchemes": {
      "bearerAuth": {
        "type": "http",
        "scheme": "bearer"
      }
    }
  }
}
